Skip to main content

Trigger.dev server adapter API Documentation

Package: @alt-stack/workers-trigger

The Trigger.dev server adapter turns a WorkerRouter into task definitions. It re-exports every @alt-stack/workers-core value and type; Workers core API is therefore also part of this package's public surface.

createWorker​

function createWorker<TCustomContext extends object>(
router: WorkerRouter<TCustomContext>,
options?: CreateWorkerOptions<TCustomContext>,
): WorkerResult

The function is synchronous. It iterates over registered procedures, creates one Trigger.dev definition per job name, and returns them in tasks.

import { createWorker } from "@alt-stack/workers-trigger";
import { jobs } from "./jobs.js";

export const { tasks } = createWorker(jobs, {
createContext: () => ({ db }),
onError: (error, ctx) => console.error(ctx.jobName, error),
telemetry: { enabled: true, serviceName: "email-workers" },
});

export const sendWelcomeEmail = tasks["send-welcome-email"];

Procedure mapping​

ProcedureTrigger.dev definition
task with payload schemaschemaTask({ id, schema, run })
task without payload schematask({ id, run })
queuesame task/schemaTask choice; procedure.queue is not forwarded
cronschedules.task({ id, cron: pattern, run })

Cron defaults to "0 * * * *" only if a malformed registered cron procedure lacks its config. CronConfig.timezone is not forwarded. Scheduled tasks pass Trigger.dev's scheduled payload to the procedure validation path; avoid attaching an unrelated custom payload schema to a cron procedure.

Execution order​

For each run, the adapter:

  1. optionally creates an OpenTelemetry consumer span;
  2. builds TriggerContext from the Trigger.dev context;
  3. validates the payload;
  4. calls and awaits createContext;
  5. runs ordinary middleware in order;
  6. calls the procedure handler;
  7. parses the entire handler return with the output schema, if configured; and
  8. records success or catches, records, calls onError, and rethrows a failure.

A returned Altstack Err is not inspected and therefore follows the success path. Throw when Trigger.dev must treat a run as failed. Result-based middleware created by createMiddlewareWithErrors is not interpreted by the current adapter.

CreateWorkerOptions<TCustomContext>​

PropertyTypeBehavior
createContext(baseCtx: TriggerContext) => TCustomContext | Promise<TCustomContext>builds per-run application context after input validation
onError(error: Error, ctx: TriggerContext) => void | Promise<void>awaited before the original error is rethrown
telemetryboolean | WorkerTelemetryConfigenables core tracing; metrics are not exposed by this adapter

onError does not run when its own enclosing task definition cannot be constructed. An error thrown by onError replaces the original throw.

TriggerContext​

Extends BaseWorkerContext:

PropertySource
jobIdctx.run.id
jobNamerouter job name
attemptctx.attempt.number
spanoptional core-created OpenTelemetry span
triggerfull Trigger.dev SDK v3 Context

WorkerResult​

interface WorkerResult {
tasks: Record<string, unknown>;
}

The keys are exact registered job names. Values are intentionally typed as unknown; export selected entries for Trigger.dev discovery. There is no adapter disconnect method.

Complete adapter-specific exports​

createWorker, TriggerContext, CreateWorkerOptions, and WorkerResult, plus every re-export described in Workers core API.