workflow 5.0.0-beta.4 → 5.0.0-beta.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -20
- package/dist/api-workflow.d.ts +1 -1
- package/dist/api-workflow.d.ts.map +1 -1
- package/dist/api-workflow.js +1 -1
- package/dist/api.d.ts +5 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +12 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/internal/builtins.d.ts +17 -0
- package/dist/internal/builtins.d.ts.map +1 -1
- package/dist/internal/builtins.js +65 -1
- package/dist/internal/errors.d.ts +1 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +2 -2
- package/dist/nest-builder.d.ts +2 -0
- package/dist/nest-builder.d.ts.map +1 -0
- package/dist/nest-builder.js +2 -0
- package/dist/nest-vercel-builder.d.ts +2 -0
- package/dist/nest-vercel-builder.d.ts.map +1 -0
- package/dist/nest-vercel-builder.js +2 -0
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +2 -2
- package/dist/runtime.d.ts +2 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +5 -2
- package/docs/ai/chat-session-modeling.mdx +7 -3
- package/docs/ai/defining-tools.mdx +2 -2
- package/docs/ai/index.mdx +30 -25
- package/docs/ai/message-queueing.mdx +10 -10
- package/docs/ai/resumable-streams.mdx +9 -1
- package/docs/api-reference/index.mdx +24 -0
- package/docs/api-reference/meta.json +8 -0
- package/docs/api-reference/vitest/index.mdx +28 -7
- package/docs/api-reference/workflow/create-hook.mdx +79 -0
- package/docs/api-reference/workflow/create-webhook.mdx +1 -0
- package/docs/api-reference/workflow/define-hook.mdx +26 -24
- package/docs/api-reference/workflow/fatal-error.mdx +29 -7
- package/docs/api-reference/workflow/fetch.mdx +8 -4
- package/docs/api-reference/workflow/index.mdx +3 -0
- package/docs/api-reference/workflow/set-attributes.mdx +61 -0
- package/docs/api-reference/workflow/sleep.mdx +1 -1
- package/docs/api-reference/workflow-ai/durable-agent.mdx +7 -45
- package/docs/api-reference/workflow-ai/index.mdx +2 -2
- package/docs/api-reference/workflow-ai/workflow-chat-transport.mdx +44 -1
- package/docs/api-reference/workflow-api/get-hook-by-token.mdx +9 -0
- package/docs/api-reference/workflow-api/get-run.mdx +25 -0
- package/docs/api-reference/workflow-api/index.mdx +6 -8
- package/docs/api-reference/workflow-api/resume-hook.mdx +60 -1
- package/docs/api-reference/workflow-api/resume-webhook.mdx +6 -4
- package/docs/api-reference/workflow-api/start.mdx +39 -6
- package/docs/api-reference/workflow-astro/index.mdx +18 -0
- package/docs/api-reference/workflow-astro/meta.json +4 -0
- package/docs/api-reference/workflow-astro/workflow.mdx +45 -0
- package/docs/api-reference/workflow-errors/hook-conflict-error.mdx +60 -0
- package/docs/api-reference/workflow-errors/index.mdx +88 -0
- package/docs/api-reference/workflow-errors/meta.json +6 -0
- package/docs/api-reference/workflow-errors/precondition-failed-error.mdx +68 -0
- package/docs/api-reference/workflow-errors/run-not-supported-error.mdx +58 -0
- package/docs/api-reference/workflow-errors/workflow-error.mdx +52 -0
- package/docs/api-reference/workflow-errors/workflow-run-failed-error.mdx +16 -6
- package/docs/api-reference/workflow-errors/workflow-run-not-completed-error.mdx +58 -0
- package/docs/api-reference/workflow-errors/workflow-runtime-error.mdx +58 -0
- package/docs/api-reference/workflow-globals.mdx +4 -1
- package/docs/api-reference/workflow-nest/configure-workflow-controller.mdx +33 -0
- package/docs/api-reference/workflow-nest/index.mdx +31 -0
- package/docs/api-reference/workflow-nest/meta.json +9 -0
- package/docs/api-reference/workflow-nest/nest-local-builder.mdx +64 -0
- package/docs/api-reference/workflow-nest/workflow-controller.mdx +40 -0
- package/docs/api-reference/workflow-nest/workflow-module.mdx +74 -0
- package/docs/api-reference/workflow-next/with-workflow.mdx +56 -2
- package/docs/api-reference/workflow-nitro/index.mdx +60 -0
- package/docs/api-reference/workflow-nuxt/index.mdx +48 -0
- package/docs/api-reference/workflow-observability/hydrate-data.mdx +35 -0
- package/docs/api-reference/workflow-observability/hydrate-resource-io.mdx +62 -0
- package/docs/api-reference/workflow-observability/index.mdx +64 -0
- package/docs/api-reference/workflow-observability/meta.json +11 -0
- package/docs/api-reference/workflow-observability/observability-revivers.mdx +50 -0
- package/docs/api-reference/workflow-observability/parse-class-name.mdx +41 -0
- package/docs/api-reference/workflow-observability/parse-step-name.mdx +40 -0
- package/docs/api-reference/workflow-observability/parse-workflow-name.mdx +55 -0
- package/docs/api-reference/workflow-runtime/create-world.mdx +39 -0
- package/docs/api-reference/workflow-runtime/get-world-handlers.mdx +44 -0
- package/docs/api-reference/{workflow-api → workflow-runtime}/get-world.mdx +7 -10
- package/docs/api-reference/workflow-runtime/health-check.mdx +50 -0
- package/docs/api-reference/workflow-runtime/index.mdx +43 -0
- package/docs/api-reference/workflow-runtime/meta.json +12 -0
- package/docs/api-reference/workflow-runtime/set-world.mdx +49 -0
- package/docs/api-reference/workflow-runtime/workflow-entrypoint.mdx +42 -0
- package/docs/api-reference/workflow-runtime/world/analytics.mdx +138 -0
- package/docs/api-reference/{workflow-api → workflow-runtime}/world/index.mdx +10 -10
- package/docs/api-reference/workflow-runtime/world/meta.json +4 -0
- package/docs/api-reference/{workflow-api → workflow-runtime}/world/queue.mdx +8 -6
- package/docs/api-reference/{workflow-api → workflow-runtime}/world/storage.mdx +18 -5
- package/docs/api-reference/{workflow-api → workflow-runtime}/world/streams.mdx +2 -2
- package/docs/api-reference/workflow-serde/index.mdx +0 -1
- package/docs/api-reference/workflow-serde/workflow-deserialize.mdx +1 -2
- package/docs/api-reference/workflow-serde/workflow-serialize.mdx +2 -2
- package/docs/api-reference/workflow-sveltekit/index.mdx +18 -0
- package/docs/api-reference/workflow-sveltekit/meta.json +4 -0
- package/docs/api-reference/workflow-sveltekit/workflow-plugin.mdx +42 -0
- package/docs/api-reference/workflow-vite/index.mdx +18 -0
- package/docs/api-reference/workflow-vite/meta.json +4 -0
- package/docs/api-reference/workflow-vite/workflow.mdx +48 -0
- package/docs/changelog/attributes-mvp.mdx +380 -0
- package/docs/changelog/eager-processing.mdx +269 -0
- package/docs/changelog/index.mdx +3 -1
- package/docs/changelog/lazy-event-creation.md +127 -0
- package/docs/changelog/meta.json +9 -1
- package/docs/changelog/resilient-resume.mdx +22 -0
- package/docs/changelog/resilient-start.mdx +31 -283
- package/docs/changelog/step-message-ownership.mdx +360 -0
- package/docs/changelog/turbo-mode.md +87 -0
- package/docs/comparisons/index.mdx +66 -0
- package/docs/comparisons/meta.json +11 -0
- package/docs/comparisons/workflow-sdk-vs-aws-agentcore.mdx +55 -0
- package/docs/comparisons/workflow-sdk-vs-aws-step-functions.mdx +111 -0
- package/docs/comparisons/workflow-sdk-vs-cloudflare-workflows.mdx +71 -0
- package/docs/comparisons/workflow-sdk-vs-inngest.mdx +102 -0
- package/docs/comparisons/workflow-sdk-vs-temporal.mdx +123 -0
- package/docs/comparisons/workflow-sdk-vs-trigger-dev.mdx +103 -0
- package/docs/configuration/build-and-diagnostics.mdx +70 -0
- package/docs/configuration/cli-and-web-ui.mdx +182 -0
- package/docs/configuration/framework-options.mdx +165 -0
- package/docs/configuration/index.mdx +32 -0
- package/docs/configuration/meta.json +12 -0
- package/docs/configuration/runtime-tuning.mdx +276 -0
- package/docs/configuration/worlds.mdx +275 -0
- package/docs/cookbook/advanced/child-workflows.mdx +203 -256
- package/docs/cookbook/advanced/meta.json +1 -1
- package/docs/cookbook/advanced/publishing-libraries.mdx +33 -24
- package/docs/cookbook/advanced/serializable-steps.mdx +12 -4
- package/docs/cookbook/advanced/upgrading-workflows.mdx +199 -0
- package/docs/cookbook/agent-patterns/agent-cancellation.mdx +34 -75
- package/docs/cookbook/agent-patterns/durable-agent.mdx +14 -142
- package/docs/cookbook/agent-patterns/human-in-the-loop.mdx +11 -3
- package/docs/cookbook/common-patterns/batching.mdx +4 -0
- package/docs/cookbook/common-patterns/idempotency.mdx +40 -52
- package/docs/cookbook/common-patterns/rate-limiting.mdx +5 -1
- package/docs/cookbook/common-patterns/saga.mdx +6 -2
- package/docs/cookbook/common-patterns/scheduling.mdx +12 -0
- package/docs/cookbook/common-patterns/sequential-and-parallel.mdx +4 -0
- package/docs/cookbook/common-patterns/timeouts.mdx +6 -1
- package/docs/cookbook/common-patterns/webhooks.mdx +4 -0
- package/docs/cookbook/common-patterns/workflow-composition.mdx +19 -16
- package/docs/cookbook/index.mdx +3 -3
- package/docs/cookbook/integrations/ai-sdk.mdx +64 -28
- package/docs/cookbook/integrations/chat-sdk.mdx +17 -0
- package/docs/cookbook/integrations/sandbox.mdx +17 -0
- package/docs/{deploying/index.mdx → deploying.mdx} +7 -7
- package/docs/errors/abort-signal-timeout-in-workflow.mdx +84 -0
- package/docs/errors/corrupted-event-log.mdx +5 -5
- package/docs/errors/deployment-mismatch.mdx +71 -0
- package/docs/errors/fetch-in-workflow.mdx +4 -0
- package/docs/errors/hook-conflict.mdx +60 -4
- package/docs/errors/index.mdx +1 -35
- package/docs/errors/node-js-module-in-workflow.mdx +4 -0
- package/docs/errors/replay-divergence.mdx +27 -0
- package/docs/errors/runtime-decryption-failed.mdx +77 -0
- package/docs/errors/serialization-failed.mdx +4 -0
- package/docs/errors/start-invalid-workflow-function.mdx +4 -0
- package/docs/errors/step-executed-multiple-times.mdx +23 -0
- package/docs/errors/step-not-registered.mdx +1 -1
- package/docs/errors/timeout-in-workflow.mdx +4 -0
- package/docs/errors/webhook-response-not-sent.mdx +4 -0
- package/docs/foundations/cancellation.mdx +459 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/hooks.mdx +29 -0
- package/docs/foundations/idempotency.mdx +243 -11
- package/docs/foundations/index.mdx +1 -23
- package/docs/foundations/meta.json +3 -1
- package/docs/foundations/serialization.mdx +77 -41
- package/docs/foundations/starting-workflows.mdx +79 -2
- package/docs/foundations/streaming.mdx +14 -23
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/getting-started/astro.mdx +12 -2
- package/docs/getting-started/express.mdx +6 -2
- package/docs/getting-started/fastify.mdx +6 -2
- package/docs/getting-started/hono.mdx +6 -2
- package/docs/getting-started/index.mdx +16 -10
- package/docs/getting-started/meta.json +4 -1
- package/docs/getting-started/nestjs.mdx +77 -3
- package/docs/getting-started/next.mdx +12 -6
- package/docs/getting-started/nitro.mdx +28 -2
- package/docs/getting-started/nuxt.mdx +6 -2
- package/docs/getting-started/python.mdx +24 -18
- package/docs/getting-started/react-router/index.mdx +33 -0
- package/docs/getting-started/react-router/meta.json +5 -0
- package/docs/getting-started/react-router/v7.mdx +237 -0
- package/docs/getting-started/react-router/v8.mdx +232 -0
- package/docs/getting-started/sveltekit.mdx +12 -2
- package/docs/getting-started/tanstack-start.mdx +245 -0
- package/docs/getting-started/vite.mdx +6 -2
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +21 -17
- package/docs/how-it-works/encryption.mdx +5 -5
- package/docs/how-it-works/event-sourcing.mdx +6 -6
- package/docs/how-it-works/framework-integrations.mdx +96 -337
- package/docs/how-it-works/meta.json +2 -1
- package/docs/internal/index.mdx +21 -0
- package/docs/internal/meta.json +10 -0
- package/docs/internal/nitro-native-build.mdx +38 -0
- package/docs/internal/nitro-web-ui.mdx +24 -0
- package/docs/internal/serializable-abort-controller.mdx +148 -0
- package/docs/meta.json +2 -2
- package/docs/observability/attributes.mdx +112 -0
- package/docs/observability/index.mdx +20 -1
- package/docs/observability/meta.json +1 -1
- package/docs/observability/tracing.mdx +124 -0
- package/docs/testing/index.mdx +2 -2
- package/package.json +17 -13
- package/docs/api-reference/workflow-api/world/meta.json +0 -4
- package/docs/api-reference/workflow-api/world/observability.mdx +0 -164
- package/docs/cookbook/advanced/distributed-abort-controller.mdx +0 -318
- package/docs/deploying/building-a-world.mdx +0 -251
- package/docs/deploying/meta.json +0 -4
- package/docs/deploying/world/local-world.mdx +0 -84
- package/docs/deploying/world/meta.json +0 -4
- package/docs/deploying/world/postgres-world.mdx +0 -222
- package/docs/deploying/world/vercel-world.mdx +0 -179
- package/docs/migration-guides/index.mdx +0 -34
- package/docs/migration-guides/meta.json +0 -9
- package/docs/migration-guides/migrating-from-aws-step-functions.mdx +0 -363
- package/docs/migration-guides/migrating-from-inngest.mdx +0 -314
- package/docs/migration-guides/migrating-from-temporal.mdx +0 -318
- package/docs/migration-guides/migrating-from-trigger-dev.mdx +0 -337
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Worlds
|
|
3
|
+
description: Configure the Workflow backend that stores runs and delivers queue messages.
|
|
4
|
+
type: reference
|
|
5
|
+
summary: Select and configure Local, Postgres, Vercel, or custom Worlds.
|
|
6
|
+
related:
|
|
7
|
+
- /worlds/local
|
|
8
|
+
- /worlds/postgres
|
|
9
|
+
- /worlds/vercel
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
A [World](/docs/deploying) stores workflow state and delivers queue messages.
|
|
13
|
+
|
|
14
|
+
## Selecting a World
|
|
15
|
+
|
|
16
|
+
### `WORKFLOW_TARGET_WORLD`
|
|
17
|
+
|
|
18
|
+
- Surface: environment variable
|
|
19
|
+
- Default: `local` outside Vercel; automatic Vercel World inside Vercel deployments
|
|
20
|
+
- Selects a non-default World module.
|
|
21
|
+
|
|
22
|
+
Outside Vercel, Workflow defaults to the Local World. On Vercel, leave `WORKFLOW_TARGET_WORLD` unset for the normal case; Workflow detects the Vercel deployment and selects the Vercel World automatically.
|
|
23
|
+
|
|
24
|
+
The World is selected when your app **runs**, from the environment of the process serving it, so changing `WORKFLOW_TARGET_WORLD` takes effect on the next start without a rebuild. Detection keys off `VERCEL_DEPLOYMENT_ID`, which Vercel sets in every deployed function and nothing else sets: with it, the Vercel World; without it, the Local World.
|
|
25
|
+
|
|
26
|
+
Broader signals are deliberately ignored. `vercel env pull` writes `VERCEL=1` into `.env.local`, so a dev server or a production server started on your own machine sees it while running against a writable filesystem — where the Local World is the right choice. Set `WORKFLOW_TARGET_WORLD=vercel` explicitly if you want such a process to talk to the Vercel World; starting a run then fails with an error naming the missing `VERCEL_DEPLOYMENT_ID`.
|
|
27
|
+
|
|
28
|
+
A deployment that pins `WORKFLOW_TARGET_WORLD=local` warns at startup and fails on its first write, because a Vercel deployment's filesystem is read-only.
|
|
29
|
+
|
|
30
|
+
Set `WORKFLOW_TARGET_WORLD` only when you want to use a custom or self-hosted World:
|
|
31
|
+
|
|
32
|
+
- `local` - alias for `@workflow/world-local`.
|
|
33
|
+
- `@workflow/world-postgres` - Postgres World package.
|
|
34
|
+
- `./my-world.ts` - local module exporting a World, `createWorld()`, or a default factory.
|
|
35
|
+
- Any package specifier - custom World package.
|
|
36
|
+
|
|
37
|
+
The `vercel` alias exists for manual selection and tooling, but deployed Vercel apps do not need to set it.
|
|
38
|
+
|
|
39
|
+
Export a configured World from a module when you need factory options instead of pure environment configuration:
|
|
40
|
+
|
|
41
|
+
```typescript title="my-world.ts" lineNumbers
|
|
42
|
+
import { createWorld } from "@workflow/world-postgres";
|
|
43
|
+
|
|
44
|
+
export default createWorld({
|
|
45
|
+
connectionString: process.env.DATABASE_URL!,
|
|
46
|
+
jobPrefix: "myapp_",
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```bash title=".env"
|
|
51
|
+
WORKFLOW_TARGET_WORLD="./my-world.ts"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Local World
|
|
55
|
+
|
|
56
|
+
The Local World is the default outside Vercel and is intended for development.
|
|
57
|
+
|
|
58
|
+
### `dataDir`
|
|
59
|
+
|
|
60
|
+
- Environment variable: `WORKFLOW_LOCAL_DATA_DIR`
|
|
61
|
+
- Default: `.workflow-data`
|
|
62
|
+
- Directory where runs, steps, events, hooks, streams, and the local manifest are written.
|
|
63
|
+
|
|
64
|
+
### `baseUrl`
|
|
65
|
+
|
|
66
|
+
- Environment variable: `WORKFLOW_LOCAL_BASE_URL`
|
|
67
|
+
- Default: inferred from the app port
|
|
68
|
+
- Full base URL used when queue messages call back into the app.
|
|
69
|
+
- Overrides `port` and `PORT`.
|
|
70
|
+
|
|
71
|
+
### `port`
|
|
72
|
+
|
|
73
|
+
- Environment variable: `PORT`
|
|
74
|
+
- Default: auto-detected
|
|
75
|
+
- Local app port used to build the callback URL when `baseUrl` is unset.
|
|
76
|
+
|
|
77
|
+
### `WORKFLOW_LOCAL_QUEUE_CONCURRENCY`
|
|
78
|
+
|
|
79
|
+
- Factory option: none
|
|
80
|
+
- Default: `1000`
|
|
81
|
+
- Maximum number of concurrent local queue message handlers.
|
|
82
|
+
|
|
83
|
+
### `WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY`
|
|
84
|
+
|
|
85
|
+
- Factory option: none
|
|
86
|
+
- Default: unlimited
|
|
87
|
+
- Maximum seconds a local queue message stays hidden before the handler rechecks the run.
|
|
88
|
+
|
|
89
|
+
### `WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`
|
|
90
|
+
|
|
91
|
+
- Factory option: none
|
|
92
|
+
- Default: `30000`
|
|
93
|
+
- Maximum milliseconds to wait for a local queue handler to begin responding before the durable message is redelivered. Set to `0` to disable.
|
|
94
|
+
|
|
95
|
+
### `WORKFLOW_LOCAL_BODY_TIMEOUT_MS`
|
|
96
|
+
|
|
97
|
+
- Factory option: none
|
|
98
|
+
- Default: `30000`
|
|
99
|
+
- Maximum gap in milliseconds between response body chunks from a local queue handler before the durable message is redelivered. Set to `0` to disable.
|
|
100
|
+
|
|
101
|
+
### `recoverActiveRuns`
|
|
102
|
+
|
|
103
|
+
- Environment variable: `WORKFLOW_LOCAL_RECOVER_ACTIVE_RUNS`
|
|
104
|
+
- Default: `true`
|
|
105
|
+
- Re-enqueues pending and running local runs when the World starts. Set the environment variable to `0` or `false` to skip recovery; the factory option wins when both are set.
|
|
106
|
+
|
|
107
|
+
### `WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS`
|
|
108
|
+
|
|
109
|
+
- Factory option: none
|
|
110
|
+
- Default: `30`
|
|
111
|
+
- Maximum [`experimental_minRetention`](/docs/api-reference/workflow/create-hook#keep-a-token-unavailable-after-the-run-ends) accepted by the Local World, in days.
|
|
112
|
+
- Set this to the same limit as your production World so oversized values fail during local development.
|
|
113
|
+
|
|
114
|
+
### `tag`
|
|
115
|
+
|
|
116
|
+
- Environment variable: none
|
|
117
|
+
- Default: unset
|
|
118
|
+
- Scopes local storage files to a tag, mainly for test isolation.
|
|
119
|
+
|
|
120
|
+
### `streamFlushIntervalMs`
|
|
121
|
+
|
|
122
|
+
- Environment variable fallback: `WORKFLOW_STREAM_FLUSH_INTERVAL_MS`
|
|
123
|
+
- Default: `0` (dispatch the leading chunk of an idle stream immediately)
|
|
124
|
+
- Group-commit window for the leading chunk of an idle stream; a positive value trades first-chunk latency for larger groups. The `WORKFLOW_STREAM_FLUSH_INTERVAL_MS` environment variable, when set, overrides this option; otherwise the World option governs, including the very first chunk.
|
|
125
|
+
|
|
126
|
+
## Postgres World
|
|
127
|
+
|
|
128
|
+
The Postgres World is a self-hosted durable backend for long-running server processes.
|
|
129
|
+
|
|
130
|
+
### `connectionString`
|
|
131
|
+
|
|
132
|
+
- Environment variable: `WORKFLOW_POSTGRES_URL`, then `DATABASE_URL`
|
|
133
|
+
- Default: `postgres://world:world@localhost:5432/world`
|
|
134
|
+
- PostgreSQL connection string used by the runtime World.
|
|
135
|
+
- The `bootstrap` migration command uses the same precedence.
|
|
136
|
+
|
|
137
|
+
### `pool`
|
|
138
|
+
|
|
139
|
+
- Environment variable: none
|
|
140
|
+
- Default: new `pg.Pool`
|
|
141
|
+
- Existing `pg.Pool` to use instead of constructing one from `connectionString`.
|
|
142
|
+
|
|
143
|
+
### `jobPrefix`
|
|
144
|
+
|
|
145
|
+
- Environment variable: `WORKFLOW_POSTGRES_JOB_PREFIX`
|
|
146
|
+
- Default: `workflow_`
|
|
147
|
+
- Prefix for Graphile Worker job names.
|
|
148
|
+
|
|
149
|
+
### `queueConcurrency`
|
|
150
|
+
|
|
151
|
+
- Environment variable: `WORKFLOW_POSTGRES_WORKER_CONCURRENCY`
|
|
152
|
+
- Default: `50`
|
|
153
|
+
- Number of concurrent workers polling for jobs.
|
|
154
|
+
- Also bounds concurrent parent-to-child workflow return-value polls.
|
|
155
|
+
|
|
156
|
+
### `applicationManagedShutdown`
|
|
157
|
+
|
|
158
|
+
- Environment variable: `WORKFLOW_POSTGRES_APPLICATION_MANAGED_SHUTDOWN` (`1` enables)
|
|
159
|
+
- Default: `false`
|
|
160
|
+
- Whether the application coordinates shutdown instead of Graphile Worker responding automatically.
|
|
161
|
+
- Set to `true` only when the application awaits `world.close()` before closing its workflow HTTP server and caller-owned pool.
|
|
162
|
+
- Prevents Graphile Worker's default handler from terminating the process before the application's remaining cleanup finishes.
|
|
163
|
+
|
|
164
|
+
### `maxPoolSize`
|
|
165
|
+
|
|
166
|
+
- Environment variable: `WORKFLOW_POSTGRES_MAX_POOL_SIZE`
|
|
167
|
+
- Default: `pg` default
|
|
168
|
+
- Maximum size of the internal `pg.Pool` when the World creates the pool.
|
|
169
|
+
|
|
170
|
+
### `WORKFLOW_POSTGRES_HOOK_RETENTION_LIMIT_DAYS`
|
|
171
|
+
|
|
172
|
+
- Factory option: none
|
|
173
|
+
- Default: `30`
|
|
174
|
+
- Maximum [`experimental_minRetention`](/docs/api-reference/workflow/create-hook#keep-a-token-unavailable-after-the-run-ends) accepted by the Postgres World, in days.
|
|
175
|
+
- Set this to the same limit as your production World so oversized values fail during development.
|
|
176
|
+
|
|
177
|
+
### `namespace`
|
|
178
|
+
|
|
179
|
+
- Environment variable fallback: `WORKFLOW_QUEUE_NAMESPACE`
|
|
180
|
+
- Default: none
|
|
181
|
+
- Queue topic namespace. For example, `custom` changes `__wkf_*` topics to `__custom_wkf_*`.
|
|
182
|
+
|
|
183
|
+
### `streamFlushIntervalMs`
|
|
184
|
+
|
|
185
|
+
- Environment variable fallback: `WORKFLOW_STREAM_FLUSH_INTERVAL_MS`
|
|
186
|
+
- Default: `0` (dispatch the leading chunk of an idle stream immediately)
|
|
187
|
+
- Group-commit window for the leading chunk of an idle stream; a positive value trades first-chunk latency for larger groups. The `WORKFLOW_STREAM_FLUSH_INTERVAL_MS` environment variable, when set, overrides this option; otherwise the World option governs, including the very first chunk.
|
|
188
|
+
|
|
189
|
+
## Vercel World
|
|
190
|
+
|
|
191
|
+
The Vercel World is configured automatically inside Vercel deployments. The platform provides the deployment ID, project ID, request authentication, queue integration, storage, and encryption material.
|
|
192
|
+
|
|
193
|
+
Most applications should not set `WORKFLOW_VERCEL_*` variables on Vercel. They configure tooling that talks to a Vercel Workflow project from outside a deployment, such as the `workflow` CLI, the web UI, CI, or tests. The runtime warns if these variables are set in a deployed Vercel function because they do not control runtime configuration there.
|
|
194
|
+
|
|
195
|
+
Platform-provided values such as `VERCEL_DEPLOYMENT_ID`, `VERCEL_PROJECT_ID`, and `VERCEL_DEPLOYMENT_KEY` are read by the runtime inside Vercel deployments. Do not set them yourself.
|
|
196
|
+
|
|
197
|
+
### `token`
|
|
198
|
+
|
|
199
|
+
- Environment variable: `WORKFLOW_VERCEL_AUTH_TOKEN`, then `VERCEL_TOKEN`, then Vercel CLI login
|
|
200
|
+
- CLI flag: `--authToken`
|
|
201
|
+
- Default: inferred when possible
|
|
202
|
+
- Vercel API token for external tooling. Keep it secret.
|
|
203
|
+
|
|
204
|
+
### `projectConfig.environment`
|
|
205
|
+
|
|
206
|
+
- Environment variable: `WORKFLOW_VERCEL_ENV`
|
|
207
|
+
- CLI flag: `--env` or `-e`
|
|
208
|
+
- Default: `production`
|
|
209
|
+
- Vercel environment targeted by tooling. Accepts `production` or `preview`.
|
|
210
|
+
|
|
211
|
+
### `projectConfig.projectId`
|
|
212
|
+
|
|
213
|
+
- Environment variable: `WORKFLOW_VERCEL_PROJECT`
|
|
214
|
+
- CLI flag: `--project`
|
|
215
|
+
- Default: inferred from `.vercel/project.json` when possible
|
|
216
|
+
- Vercel project ID.
|
|
217
|
+
|
|
218
|
+
### `projectConfig.teamId`
|
|
219
|
+
|
|
220
|
+
- Environment variable: `WORKFLOW_VERCEL_TEAM`
|
|
221
|
+
- CLI flag: `--team`
|
|
222
|
+
- Default: inferred from `.vercel/project.json` when possible
|
|
223
|
+
- Vercel team ID.
|
|
224
|
+
|
|
225
|
+
### `WORKFLOW_VERCEL_PROJECT_NAME`
|
|
226
|
+
|
|
227
|
+
- Factory option: none
|
|
228
|
+
- CLI flag: none
|
|
229
|
+
- Default: inferred when possible
|
|
230
|
+
- Project slug used for dashboard links.
|
|
231
|
+
|
|
232
|
+
### `WORKFLOW_VERCEL_BACKEND_URL`
|
|
233
|
+
|
|
234
|
+
- Factory option: none
|
|
235
|
+
- CLI flag: none
|
|
236
|
+
- Default: `https://api.vercel.com/v1/workflow`
|
|
237
|
+
- Workflow API proxy URL for external tooling.
|
|
238
|
+
|
|
239
|
+
### `WORKFLOW_SEQUENTIAL_REPLAYS`
|
|
240
|
+
|
|
241
|
+
- Default: disabled
|
|
242
|
+
- Set `1` to serialize orchestrator (flow) invocations per run: each run's replays get their own queue topic and the flow trigger is generated with `maxConcurrency: 1`. Inline step executions get per-step topics and keep full parallelism.
|
|
243
|
+
- Read at **both build time and runtime** — set it as a project-level environment variable so the generated trigger and the runtime queue routing agree.
|
|
244
|
+
- Routing each run through a dedicated `maxConcurrency: 1` topic might lead to higher queue performance overhead. See [Vercel World](/worlds/vercel#workflow_sequential_replays) for details.
|
|
245
|
+
|
|
246
|
+
### `VERCEL_WORKFLOW_SERVER_URL`
|
|
247
|
+
|
|
248
|
+
- Factory option: none
|
|
249
|
+
- CLI flag: none
|
|
250
|
+
- Default: unset
|
|
251
|
+
- Direct workflow-server URL override for testing or custom infrastructure. Normal deployments do not need it.
|
|
252
|
+
|
|
253
|
+
### `VERCEL_QUEUE_MAX_DELAY_SECONDS`
|
|
254
|
+
|
|
255
|
+
- Factory option: none
|
|
256
|
+
- CLI flag: none
|
|
257
|
+
- Default: `82800` (23 hours)
|
|
258
|
+
- Maximum delay for one Vercel Queues continuation message when implementing `sleep()`.
|
|
259
|
+
- Longer sleeps schedule another continuation when the first one fires.
|
|
260
|
+
|
|
261
|
+
`VERCEL_QUEUE_MAX_DELAY_SECONDS` defaults to 23 hours because Vercel Queues message delays are capped by the message TTL, and the default TTL is 24 hours. Workflow stays inside that default and chains continuation messages for longer sleeps.
|
|
262
|
+
|
|
263
|
+
### `WORKFLOW_REQUEST_TIMEOUT_MS`
|
|
264
|
+
|
|
265
|
+
- Factory option: none
|
|
266
|
+
- CLI flag: none
|
|
267
|
+
- Default: `60000`
|
|
268
|
+
- Per-request timeout for Vercel World HTTP calls to workflow-server.
|
|
269
|
+
|
|
270
|
+
### `WORKFLOW_MAX_CHUNKS_PER_REQUEST`
|
|
271
|
+
|
|
272
|
+
- Factory option: none
|
|
273
|
+
- CLI flag: none
|
|
274
|
+
- Default: `1000`
|
|
275
|
+
- Maximum stream chunks written in one Vercel World request. Larger batches are split.
|