workflow 5.0.0-beta.5 → 5.0.0-beta.51

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.
Files changed (256) hide show
  1. package/README.md +68 -23
  2. package/dist/api-workflow.d.ts +1 -1
  3. package/dist/api-workflow.d.ts.map +1 -1
  4. package/dist/api-workflow.js +1 -1
  5. package/dist/api.d.ts +3 -3
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/api.js +5 -7
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +6 -1
  11. package/dist/internal/builtins.d.ts +20 -3
  12. package/dist/internal/builtins.d.ts.map +1 -1
  13. package/dist/internal/builtins.js +68 -4
  14. package/dist/internal/errors.d.ts +1 -1
  15. package/dist/internal/errors.d.ts.map +1 -1
  16. package/dist/internal/errors.js +2 -2
  17. package/dist/nest-builder.d.ts +2 -0
  18. package/dist/nest-builder.d.ts.map +1 -0
  19. package/dist/nest-builder.js +2 -0
  20. package/dist/nest-vercel-builder.d.ts +2 -0
  21. package/dist/nest-vercel-builder.d.ts.map +1 -0
  22. package/dist/nest-vercel-builder.js +2 -0
  23. package/dist/observability.d.ts +1 -1
  24. package/dist/observability.js +2 -2
  25. package/dist/runtime.d.ts +2 -1
  26. package/dist/runtime.d.ts.map +1 -1
  27. package/dist/runtime.js +4 -1
  28. package/docs/ai/chat-session-modeling.mdx +176 -422
  29. package/docs/ai/defining-tools.mdx +6 -7
  30. package/docs/ai/human-in-the-loop.mdx +11 -11
  31. package/docs/ai/index.mdx +71 -75
  32. package/docs/ai/message-queueing.mdx +71 -110
  33. package/docs/ai/meta.json +1 -0
  34. package/docs/ai/resumable-streams.mdx +40 -28
  35. package/docs/ai/sleep-and-delays.mdx +10 -10
  36. package/docs/ai/streaming-updates-from-tools.mdx +6 -6
  37. package/docs/api-reference/index.mdx +25 -1
  38. package/docs/api-reference/meta.json +8 -0
  39. package/docs/api-reference/vitest/index.mdx +9 -15
  40. package/docs/api-reference/workflow/create-hook.mdx +89 -10
  41. package/docs/api-reference/workflow/create-webhook.mdx +16 -15
  42. package/docs/api-reference/workflow/define-hook.mdx +35 -33
  43. package/docs/api-reference/workflow/fatal-error.mdx +30 -8
  44. package/docs/api-reference/workflow/fetch.mdx +14 -10
  45. package/docs/api-reference/workflow/get-step-metadata.mdx +2 -2
  46. package/docs/api-reference/workflow/get-workflow-metadata.mdx +3 -3
  47. package/docs/api-reference/workflow/get-writable.mdx +7 -7
  48. package/docs/api-reference/workflow/index.mdx +4 -1
  49. package/docs/api-reference/workflow/retryable-error.mdx +1 -1
  50. package/docs/api-reference/workflow/set-attributes.mdx +61 -0
  51. package/docs/api-reference/workflow/sleep.mdx +4 -4
  52. package/docs/api-reference/workflow-ai/durable-agent.mdx +63 -101
  53. package/docs/api-reference/workflow-ai/index.mdx +5 -5
  54. package/docs/api-reference/workflow-ai/workflow-chat-transport.mdx +67 -24
  55. package/docs/api-reference/workflow-api/get-hook-by-token.mdx +26 -12
  56. package/docs/api-reference/workflow-api/get-run.mdx +43 -8
  57. package/docs/api-reference/workflow-api/index.mdx +6 -10
  58. package/docs/api-reference/workflow-api/resume-hook.mdx +73 -12
  59. package/docs/api-reference/workflow-api/resume-webhook.mdx +11 -9
  60. package/docs/api-reference/workflow-api/start.mdx +60 -13
  61. package/docs/api-reference/workflow-astro/index.mdx +18 -0
  62. package/docs/api-reference/workflow-astro/meta.json +4 -0
  63. package/docs/api-reference/workflow-astro/workflow.mdx +45 -0
  64. package/docs/api-reference/workflow-errors/entity-conflict-error.mdx +4 -4
  65. package/docs/api-reference/workflow-errors/hook-conflict-error.mdx +60 -0
  66. package/docs/api-reference/workflow-errors/hook-not-found-error.mdx +8 -8
  67. package/docs/api-reference/workflow-errors/index.mdx +88 -0
  68. package/docs/api-reference/workflow-errors/meta.json +6 -0
  69. package/docs/api-reference/workflow-errors/precondition-failed-error.mdx +68 -0
  70. package/docs/api-reference/workflow-errors/run-expired-error.mdx +2 -2
  71. package/docs/api-reference/workflow-errors/run-not-supported-error.mdx +58 -0
  72. package/docs/api-reference/workflow-errors/step-not-registered-error.mdx +5 -5
  73. package/docs/api-reference/workflow-errors/throttle-error.mdx +2 -2
  74. package/docs/api-reference/workflow-errors/too-early-error.mdx +2 -2
  75. package/docs/api-reference/workflow-errors/workflow-error.mdx +52 -0
  76. package/docs/api-reference/workflow-errors/workflow-not-registered-error.mdx +5 -6
  77. package/docs/api-reference/workflow-errors/workflow-run-cancelled-error.mdx +6 -6
  78. package/docs/api-reference/workflow-errors/workflow-run-failed-error.mdx +5 -5
  79. package/docs/api-reference/workflow-errors/workflow-run-not-completed-error.mdx +58 -0
  80. package/docs/api-reference/workflow-errors/workflow-run-not-found-error.mdx +4 -4
  81. package/docs/api-reference/workflow-errors/workflow-runtime-error.mdx +58 -0
  82. package/docs/api-reference/workflow-errors/workflow-world-error.mdx +8 -8
  83. package/docs/api-reference/workflow-globals.mdx +14 -10
  84. package/docs/api-reference/workflow-nest/configure-workflow-controller.mdx +33 -0
  85. package/docs/api-reference/workflow-nest/index.mdx +31 -0
  86. package/docs/api-reference/workflow-nest/meta.json +9 -0
  87. package/docs/api-reference/workflow-nest/nest-local-builder.mdx +64 -0
  88. package/docs/api-reference/workflow-nest/workflow-controller.mdx +40 -0
  89. package/docs/api-reference/workflow-nest/workflow-module.mdx +74 -0
  90. package/docs/api-reference/workflow-next/with-workflow.mdx +39 -17
  91. package/docs/api-reference/workflow-nitro/index.mdx +60 -0
  92. package/docs/api-reference/workflow-nuxt/index.mdx +48 -0
  93. package/docs/api-reference/workflow-observability/hydrate-data.mdx +35 -0
  94. package/docs/api-reference/workflow-observability/hydrate-resource-io.mdx +62 -0
  95. package/docs/api-reference/workflow-observability/index.mdx +62 -0
  96. package/docs/api-reference/workflow-observability/meta.json +11 -0
  97. package/docs/api-reference/workflow-observability/observability-revivers.mdx +50 -0
  98. package/docs/api-reference/workflow-observability/parse-class-name.mdx +41 -0
  99. package/docs/api-reference/workflow-observability/parse-step-name.mdx +40 -0
  100. package/docs/api-reference/workflow-observability/parse-workflow-name.mdx +55 -0
  101. package/docs/api-reference/workflow-runtime/create-world.mdx +39 -0
  102. package/docs/api-reference/workflow-runtime/get-world-handlers.mdx +44 -0
  103. package/docs/api-reference/{workflow-api → workflow-runtime}/get-world.mdx +11 -14
  104. package/docs/api-reference/workflow-runtime/health-check.mdx +50 -0
  105. package/docs/api-reference/workflow-runtime/index.mdx +41 -0
  106. package/docs/api-reference/workflow-runtime/meta.json +12 -0
  107. package/docs/api-reference/workflow-runtime/set-world.mdx +51 -0
  108. package/docs/api-reference/workflow-runtime/workflow-entrypoint.mdx +43 -0
  109. package/docs/api-reference/workflow-runtime/world/analytics.mdx +315 -0
  110. package/docs/api-reference/workflow-runtime/world/index.mdx +60 -0
  111. package/docs/api-reference/workflow-runtime/world/meta.json +4 -0
  112. package/docs/api-reference/workflow-runtime/world/queue.mdx +88 -0
  113. package/docs/api-reference/{workflow-api → workflow-runtime}/world/storage.mdx +98 -34
  114. package/docs/api-reference/{workflow-api → workflow-runtime}/world/streams.mdx +8 -8
  115. package/docs/api-reference/workflow-serde/index.mdx +1 -2
  116. package/docs/api-reference/workflow-serde/workflow-deserialize.mdx +3 -4
  117. package/docs/api-reference/workflow-serde/workflow-serialize.mdx +8 -8
  118. package/docs/api-reference/workflow-sveltekit/index.mdx +18 -0
  119. package/docs/api-reference/workflow-sveltekit/meta.json +4 -0
  120. package/docs/api-reference/workflow-sveltekit/workflow-plugin.mdx +42 -0
  121. package/docs/api-reference/workflow-vite/index.mdx +18 -0
  122. package/docs/api-reference/workflow-vite/meta.json +4 -0
  123. package/docs/api-reference/workflow-vite/workflow.mdx +48 -0
  124. package/docs/changelog/attributes-mvp.mdx +380 -0
  125. package/docs/changelog/batched-event-writes.mdx +79 -0
  126. package/docs/changelog/eager-processing.mdx +110 -436
  127. package/docs/changelog/index.mdx +4 -2
  128. package/docs/changelog/lazy-event-creation.md +127 -0
  129. package/docs/changelog/lazy-hook-resume.mdx +78 -0
  130. package/docs/changelog/meta.json +11 -1
  131. package/docs/changelog/resilient-resume.mdx +32 -0
  132. package/docs/changelog/resilient-start.mdx +33 -285
  133. package/docs/changelog/step-message-ownership.mdx +360 -0
  134. package/docs/changelog/turbo-mode.md +87 -0
  135. package/docs/comparisons/index.mdx +66 -0
  136. package/docs/comparisons/meta.json +11 -0
  137. package/docs/comparisons/workflow-sdk-vs-aws-agentcore.mdx +55 -0
  138. package/docs/comparisons/workflow-sdk-vs-aws-step-functions.mdx +111 -0
  139. package/docs/comparisons/workflow-sdk-vs-cloudflare-workflows.mdx +71 -0
  140. package/docs/comparisons/workflow-sdk-vs-inngest.mdx +102 -0
  141. package/docs/comparisons/workflow-sdk-vs-temporal.mdx +123 -0
  142. package/docs/comparisons/workflow-sdk-vs-trigger-dev.mdx +104 -0
  143. package/docs/configuration/build-and-diagnostics.mdx +70 -0
  144. package/docs/configuration/cli-and-web-ui.mdx +241 -0
  145. package/docs/configuration/framework-options.mdx +165 -0
  146. package/docs/configuration/index.mdx +32 -0
  147. package/docs/configuration/meta.json +12 -0
  148. package/docs/configuration/runtime-tuning.mdx +381 -0
  149. package/docs/configuration/worlds.mdx +313 -0
  150. package/docs/cookbook/advanced/child-workflows.mdx +211 -264
  151. package/docs/cookbook/advanced/meta.json +6 -1
  152. package/docs/cookbook/advanced/publishing-libraries.mdx +65 -56
  153. package/docs/cookbook/advanced/serializable-steps.mdx +48 -68
  154. package/docs/cookbook/advanced/upgrading-workflows.mdx +199 -0
  155. package/docs/cookbook/agent-patterns/agent-cancellation.mdx +78 -60
  156. package/docs/cookbook/agent-patterns/durable-agent.mdx +23 -131
  157. package/docs/cookbook/agent-patterns/human-in-the-loop.mdx +180 -195
  158. package/docs/cookbook/common-patterns/batching.mdx +18 -14
  159. package/docs/cookbook/common-patterns/idempotency.mdx +41 -53
  160. package/docs/cookbook/common-patterns/rate-limiting.mdx +8 -4
  161. package/docs/cookbook/common-patterns/saga.mdx +23 -19
  162. package/docs/cookbook/common-patterns/scheduling.mdx +34 -22
  163. package/docs/cookbook/common-patterns/sequential-and-parallel.mdx +29 -25
  164. package/docs/cookbook/common-patterns/timeouts.mdx +26 -21
  165. package/docs/cookbook/common-patterns/webhooks.mdx +10 -6
  166. package/docs/cookbook/common-patterns/workflow-composition.mdx +30 -27
  167. package/docs/cookbook/index.mdx +22 -21
  168. package/docs/cookbook/integrations/ai-sdk.mdx +86 -48
  169. package/docs/cookbook/integrations/chat-sdk.mdx +50 -33
  170. package/docs/cookbook/integrations/sandbox.mdx +62 -45
  171. package/docs/deploying.mdx +95 -0
  172. package/docs/errors/abort-signal-timeout-in-workflow.mdx +16 -12
  173. package/docs/errors/corrupted-event-log.mdx +39 -18
  174. package/docs/errors/deployment-mismatch.mdx +71 -0
  175. package/docs/errors/fetch-in-workflow.mdx +15 -14
  176. package/docs/errors/hook-conflict.mdx +69 -13
  177. package/docs/errors/index.mdx +2 -36
  178. package/docs/errors/node-js-module-in-workflow.mdx +9 -5
  179. package/docs/errors/replay-divergence.mdx +27 -0
  180. package/docs/errors/run-expired.mdx +85 -0
  181. package/docs/errors/runtime-decryption-failed.mdx +77 -0
  182. package/docs/errors/serialization-failed.mdx +44 -12
  183. package/docs/errors/start-invalid-workflow-function.mdx +9 -5
  184. package/docs/errors/step-executed-multiple-times.mdx +23 -0
  185. package/docs/errors/step-not-registered.mdx +6 -6
  186. package/docs/errors/timeout-in-workflow.mdx +12 -8
  187. package/docs/errors/webhook-invalid-respond-with-value.mdx +18 -18
  188. package/docs/errors/webhook-response-not-sent.mdx +20 -16
  189. package/docs/errors/workflow-not-registered.mdx +5 -5
  190. package/docs/foundations/cancellation.mdx +31 -32
  191. package/docs/foundations/errors-and-retries.mdx +42 -11
  192. package/docs/foundations/hooks.mdx +64 -35
  193. package/docs/foundations/idempotency.mdx +244 -12
  194. package/docs/foundations/index.mdx +1 -23
  195. package/docs/foundations/meta.json +2 -1
  196. package/docs/foundations/serialization.mdx +21 -22
  197. package/docs/foundations/starting-workflows.mdx +106 -30
  198. package/docs/foundations/streaming.mdx +108 -60
  199. package/docs/foundations/versioning.mdx +263 -0
  200. package/docs/foundations/workflows-and-steps.mdx +9 -9
  201. package/docs/getting-started/astro.mdx +22 -18
  202. package/docs/getting-started/express.mdx +15 -11
  203. package/docs/getting-started/fastify.mdx +15 -11
  204. package/docs/getting-started/hono.mdx +15 -11
  205. package/docs/getting-started/index.mdx +10 -3
  206. package/docs/getting-started/meta.json +3 -1
  207. package/docs/getting-started/nestjs.mdx +87 -20
  208. package/docs/getting-started/next.mdx +22 -16
  209. package/docs/getting-started/nitro.mdx +22 -18
  210. package/docs/getting-started/nuxt.mdx +15 -11
  211. package/docs/getting-started/python.mdx +190 -41
  212. package/docs/getting-started/react-router/index.mdx +33 -0
  213. package/docs/getting-started/react-router/meta.json +5 -0
  214. package/docs/getting-started/react-router/v7.mdx +237 -0
  215. package/docs/getting-started/react-router/v8.mdx +232 -0
  216. package/docs/getting-started/sveltekit.mdx +20 -16
  217. package/docs/getting-started/tanstack-start.mdx +17 -13
  218. package/docs/getting-started/vite.mdx +15 -11
  219. package/docs/how-it-works/cancellation.mdx +63 -63
  220. package/docs/how-it-works/code-transform.mdx +83 -67
  221. package/docs/how-it-works/encryption.mdx +30 -26
  222. package/docs/how-it-works/event-sourcing.mdx +125 -34
  223. package/docs/how-it-works/framework-integrations.mdx +96 -337
  224. package/docs/how-it-works/understanding-directives.mdx +22 -22
  225. package/docs/internal/index.mdx +6 -4
  226. package/docs/internal/meta.json +6 -1
  227. package/docs/internal/nitro-native-build.mdx +38 -0
  228. package/docs/internal/nitro-web-ui.mdx +24 -0
  229. package/docs/internal/serializable-abort-controller.mdx +7 -7
  230. package/docs/meta.json +3 -2
  231. package/docs/observability/attributes.mdx +134 -0
  232. package/docs/observability/index.mdx +32 -10
  233. package/docs/observability/meta.json +1 -1
  234. package/docs/observability/retention.mdx +95 -0
  235. package/docs/observability/tracing.mdx +124 -0
  236. package/docs/testing/index.mdx +36 -36
  237. package/docs/testing/server-based.mdx +10 -10
  238. package/docs/whats-new.mdx +186 -0
  239. package/package.json +17 -14
  240. package/docs/api-reference/workflow-api/world/index.mdx +0 -58
  241. package/docs/api-reference/workflow-api/world/meta.json +0 -4
  242. package/docs/api-reference/workflow-api/world/observability.mdx +0 -164
  243. package/docs/api-reference/workflow-api/world/queue.mdx +0 -86
  244. package/docs/deploying/building-a-world.mdx +0 -251
  245. package/docs/deploying/index.mdx +0 -95
  246. package/docs/deploying/meta.json +0 -4
  247. package/docs/deploying/world/local-world.mdx +0 -84
  248. package/docs/deploying/world/meta.json +0 -4
  249. package/docs/deploying/world/postgres-world.mdx +0 -224
  250. package/docs/deploying/world/vercel-world.mdx +0 -179
  251. package/docs/migration-guides/index.mdx +0 -34
  252. package/docs/migration-guides/meta.json +0 -9
  253. package/docs/migration-guides/migrating-from-aws-step-functions.mdx +0 -363
  254. package/docs/migration-guides/migrating-from-inngest.mdx +0 -314
  255. package/docs/migration-guides/migrating-from-temporal.mdx +0 -318
  256. package/docs/migration-guides/migrating-from-trigger-dev.mdx +0 -337
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: parseStepName
3
+ description: Parse a machine-readable step name into display-friendly components.
4
+ type: reference
5
+ summary: Use parseStepName to extract a display-friendly short name from a step's machine-readable identifier.
6
+ related:
7
+ - /docs/api-reference/workflow-observability/parse-workflow-name
8
+ - /docs/api-reference/workflow-observability/parse-class-name
9
+ ---
10
+
11
+ Step names are stored as machine-readable identifiers like `step//./src/workflows/order//processPayment`. This function parses them into components suitable for display in a user interface.
12
+
13
+ ```typescript lineNumbers
14
+ import { parseStepName } from "workflow/observability"; // [!code highlight]
15
+
16
+ const parsed = parseStepName("step//./src/workflows/order//processPayment"); // [!code highlight]
17
+ // parsed?.shortName → "processPayment"
18
+ // parsed?.moduleSpecifier → "./src/workflows/order"
19
+ // parsed?.functionName → "processPayment"
20
+ ```
21
+
22
+ ## API signature
23
+
24
+ ### Parameters
25
+
26
+ | Parameter | Type | Description |
27
+ |-----------|------|-------------|
28
+ | `name` | `string` | The machine-readable step name (e.g. from `step.stepName`) |
29
+
30
+ ### Returns
31
+
32
+ `{ shortName: string; moduleSpecifier: string; functionName: string } | null`
33
+
34
+ | Property | Description |
35
+ |----------|-------------|
36
+ | `shortName` | The display name: the last segment of the function name. For nested steps like `processOrder/chargeCard`, this is `"chargeCard"`. |
37
+ | `moduleSpecifier` | The module the step is defined in: a relative path (`./src/workflows/order`) or a package specifier (`@myorg/tasks@2.0.0`). |
38
+ | `functionName` | The full function name including nesting (e.g. `processOrder/chargeCard`). |
39
+
40
+ Returns `null` when the input is not a valid step name.
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: parseWorkflowName
3
+ description: Parse a machine-readable workflow name into display-friendly components.
4
+ type: reference
5
+ summary: Use parseWorkflowName to extract a display-friendly short name from a run's workflowName identifier.
6
+ related:
7
+ - /docs/api-reference/workflow-observability/parse-step-name
8
+ - /docs/api-reference/workflow-observability/parse-class-name
9
+ ---
10
+
11
+ Workflow names are stored as machine-readable identifiers like `workflow//./src/workflows/order//processOrder`. This function parses them into components suitable for display in a user interface, for example when listing runs from the [World SDK](/docs/api-reference/workflow-runtime/world/storage), where `run.workflowName` holds the machine-readable form.
12
+
13
+ ```typescript lineNumbers
14
+ import { parseWorkflowName } from "workflow/observability"; // [!code highlight]
15
+
16
+ const parsed = parseWorkflowName("workflow//./src/workflows/order//processOrder"); // [!code highlight]
17
+ // parsed?.shortName → "processOrder"
18
+ // parsed?.moduleSpecifier → "./src/workflows/order"
19
+ // parsed?.functionName → "processOrder"
20
+ ```
21
+
22
+ ## API signature
23
+
24
+ ### Parameters
25
+
26
+ | Parameter | Type | Description |
27
+ |-----------|------|-------------|
28
+ | `name` | `string` | The machine-readable workflow name (e.g. from `run.workflowName`) |
29
+
30
+ ### Returns
31
+
32
+ `{ shortName: string; moduleSpecifier: string; functionName: string } | null`
33
+
34
+ | Property | Description |
35
+ |----------|-------------|
36
+ | `shortName` | The display name. For default exports, falls back to the module's short name (e.g. `"order"` for `./src/workflows/order`). |
37
+ | `moduleSpecifier` | The module the workflow is defined in: a relative path (`./src/workflows/order`) or a package specifier (`@myorg/flows@1.0.0`). |
38
+ | `functionName` | The full exported function name. |
39
+
40
+ Returns `null` when the input is not a valid workflow name.
41
+
42
+ ## Example: list runs with display names
43
+
44
+ ```typescript lineNumbers
45
+ import { getWorld } from "workflow/runtime";
46
+ import { parseWorkflowName } from "workflow/observability"; // [!code highlight]
47
+
48
+ const world = await getWorld();
49
+ const runs = await world.runs.list({ resolveData: "none" });
50
+
51
+ for (const run of runs.data) {
52
+ const parsed = parseWorkflowName(run.workflowName); // [!code highlight]
53
+ console.log(`${parsed?.shortName ?? run.workflowName}: ${run.status}`);
54
+ }
55
+ ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: createWorld
3
+ description: Create a new World instance from environment configuration.
4
+ type: reference
5
+ summary: Use createWorld to construct a fresh instance of the build-injected World, bypassing the cached instance.
6
+ prerequisites:
7
+ - /docs/api-reference/workflow-runtime/get-world
8
+ related:
9
+ - /docs/api-reference/workflow-runtime/set-world
10
+ ---
11
+
12
+ Creates a new [World](/docs/api-reference/workflow-runtime/world) instance by invoking the World factory that was statically injected into the bundle at build time. The `WORKFLOW_TARGET_WORLD` environment variable selects the implementation, such as the local development World or the Vercel production World, when the app is built. Changing the variable at runtime has no effect.
13
+
14
+ Unlike [`getWorld()`](/docs/api-reference/workflow-runtime/get-world), which caches a singleton instance, `createWorld()` constructs a fresh instance on every call. Application code should almost always use `getWorld()`. `createWorld()` is for infrastructure code that manages World lifecycles itself.
15
+
16
+ ```typescript lineNumbers
17
+ import { createWorld } from "workflow/runtime";
18
+
19
+ const world = await createWorld(); // [!code highlight]
20
+ ```
21
+
22
+ ## API signature
23
+
24
+ ### Parameters
25
+
26
+ This function does not accept any parameters. Configuration comes from the World that was injected at build time (World implementations typically read their own settings from environment variables when constructed).
27
+
28
+ ### Returns
29
+
30
+ Returns a `Promise<World>` with a newly constructed World instance.
31
+
32
+ <Callout type="info">
33
+ Tooling that needs to construct a World with explicit (non-environment) configuration should instantiate the specific World implementation directly and register it with [`setWorld()`](/docs/api-reference/workflow-runtime/set-world).
34
+ </Callout>
35
+
36
+ ## Related functions
37
+
38
+ - [`getWorld()`](/docs/api-reference/workflow-runtime/get-world): Resolve the cached World instance (preferred in application code).
39
+ - [`setWorld()`](/docs/api-reference/workflow-runtime/set-world): Override the cached World instance.
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: getWorldHandlers
3
+ description: Build-time-safe access to the World's queue handlers without binding to runtime environment variables.
4
+ type: reference
5
+ summary: Use getWorldHandlers at build time to access queue handler creation without caching an environment-bound World.
6
+ prerequisites:
7
+ - /docs/api-reference/workflow-runtime/get-world
8
+ ---
9
+
10
+ Returns a restricted view of the [World](/docs/api-reference/workflow-runtime/world) exposing only the members that are safe to use at build time: `createQueueHandler` and `specVersion`. Framework adapters use it while generating workflow route handlers, before the deployment's runtime environment variables exist.
11
+
12
+ Unlike [`getWorld()`](/docs/api-reference/workflow-runtime/get-world), this function does not cache a fully configured World instance: caching at build time would lock in incomplete environment configuration.
13
+
14
+ ```typescript lineNumbers
15
+ import { getWorldHandlers } from "workflow/runtime";
16
+
17
+ const handlers = await getWorldHandlers(); // [!code highlight]
18
+ console.log(handlers.specVersion);
19
+ ```
20
+
21
+ ## API signature
22
+
23
+ ### Parameters
24
+
25
+ This function does not accept any parameters.
26
+
27
+ ### Returns
28
+
29
+ Returns a `Promise<WorldHandlers>`, where:
30
+
31
+ ```typescript
32
+ import type { World } from "@workflow/world";
33
+
34
+ type WorldHandlers = Pick<World, "createQueueHandler" | "specVersion">;
35
+ ```
36
+
37
+ <Callout type="warn">
38
+ This is SDK infrastructure used by framework adapters at build time. Runtime routes and application code should use [`getWorld()`](/docs/api-reference/workflow-runtime/get-world) instead.
39
+ </Callout>
40
+
41
+ ## Related functions
42
+
43
+ - [`getWorld()`](/docs/api-reference/workflow-runtime/get-world): Resolve the full World instance at runtime.
44
+ - [`workflowEntrypoint()`](/docs/api-reference/workflow-runtime/workflow-entrypoint): Create the runtime route handler that shares the full World instance.
@@ -17,7 +17,7 @@ import { getWorld } from "workflow/runtime";
17
17
  const world = await getWorld(); // [!code highlight]
18
18
  ```
19
19
 
20
- ## API Signature
20
+ ## API signature
21
21
 
22
22
  ### Parameters
23
23
 
@@ -36,24 +36,21 @@ showSections={["returns"]}
36
36
 
37
37
  ## World SDK
38
38
 
39
- The World object provides access to several entity interfaces. See the [World SDK](/docs/api-reference/workflow-api/world) reference for complete documentation:
39
+ The World object provides access to several entity interfaces. See the [World SDK](/docs/api-reference/workflow-runtime/world) reference for complete documentation:
40
40
 
41
41
  <Cards>
42
- <Card href="/docs/api-reference/workflow-api/world/storage" title="Storage">
42
+ <Card href="/docs/api-reference/workflow-runtime/world/storage" title="Storage">
43
43
  Query runs, steps, hooks, and the underlying event log.
44
44
  </Card>
45
- <Card href="/docs/api-reference/workflow-api/world/streams" title="Streams">
45
+ <Card href="/docs/api-reference/workflow-runtime/world/streams" title="Streams">
46
46
  Read, write, and manage data streams.
47
47
  </Card>
48
- <Card href="/docs/api-reference/workflow-api/world/queue" title="Queue">
48
+ <Card href="/docs/api-reference/workflow-runtime/world/queue" title="Queue">
49
49
  Low-level queue dispatch (internal SDK infrastructure).
50
50
  </Card>
51
- <Card href="/docs/api-reference/workflow-api/world/observability" title="Observability">
52
- Hydrate step I/O, parse display names, decrypt data.
53
- </Card>
54
51
  </Cards>
55
52
 
56
- ## Data Hydration
53
+ ## Data hydration
57
54
 
58
55
  Step and run data is serialized using the [devalue](https://github.com/Rich-Harris/devalue) format. Use `workflow/observability` to hydrate it for display:
59
56
 
@@ -64,15 +61,15 @@ const step = await world.steps.get(runId, stepId);
64
61
  const hydrated = hydrateResourceIO(step, observabilityRevivers); // [!code highlight]
65
62
  ```
66
63
 
67
- See [Observability Utilities](/docs/api-reference/workflow-api/world/observability) for the full hydration, parsing, and encryption API.
64
+ See [`workflow/observability`](/docs/api-reference/workflow-observability) for the full hydration and parsing API.
68
65
 
69
- ### List Workflow Runs (Display Names)
66
+ ### List workflow runs (display names)
70
67
 
71
68
  List workflow runs and derive human-readable names from the `workflowName` field:
72
69
 
73
70
  ```typescript lineNumbers
74
71
  import { getWorld } from "workflow/runtime";
75
- import { parseWorkflowName } from "@workflow/utils/parse-name"; // [!code highlight]
72
+ import { parseWorkflowName } from "workflow/observability"; // [!code highlight]
76
73
 
77
74
  export async function GET(req: Request) {
78
75
  const url = new URL(req.url);
@@ -113,11 +110,11 @@ export async function GET(req: Request) {
113
110
 
114
111
  <Callout type="info">
115
112
  The `workflowName` field contains a machine-readable identifier like `workflow//./src/workflows/order//processOrder`.
116
- Use `parseWorkflowName()` from `@workflow/utils/parse-name` to extract the `shortName` (e.g., `"processOrder"`)
113
+ Use [`parseWorkflowName()`](/docs/api-reference/workflow-observability/parse-workflow-name) to extract the `shortName` (e.g., `"processOrder"`)
117
114
  and `moduleSpecifier` for display in your UI.
118
115
  </Callout>
119
116
 
120
- ## Related Functions
117
+ ## Related functions
121
118
 
122
119
  - [`getRun()`](/docs/api-reference/workflow-api/get-run) - Higher-level API for working with individual runs by ID.
123
120
  - [`start()`](/docs/api-reference/workflow-api/start) - Start a new workflow run.
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: healthCheck
3
+ description: Verify a deployment's workflow infrastructure by sending a message through the queue pipeline.
4
+ type: reference
5
+ summary: Use healthCheck to verify the workflow endpoint of a deployment processes queue messages end-to-end.
6
+ prerequisites:
7
+ - /docs/api-reference/workflow-runtime/get-world
8
+ ---
9
+
10
+ Performs an end-to-end health check of a deployment's workflow infrastructure by sending a message through the queue pipeline and verifying it is processed by the workflow endpoint. Because it goes through the queue rather than direct HTTP, it works even when the deployment is behind Deployment Protection on Vercel.
11
+
12
+ ```typescript lineNumbers
13
+ import { getWorld, healthCheck } from "workflow/runtime";
14
+
15
+ const world = await getWorld();
16
+ const result = await healthCheck(world); // [!code highlight]
17
+
18
+ if (!result.healthy) {
19
+ console.error("Workflow infrastructure unhealthy:", result.error);
20
+ }
21
+ ```
22
+
23
+ ## API signature
24
+
25
+ ### Parameters
26
+
27
+ | Parameter | Type | Description |
28
+ |-----------|------|-------------|
29
+ | `world` | `World` | The World instance to send the health check through |
30
+ | `options` | `HealthCheckOptions` | Optional configuration |
31
+
32
+ Where `HealthCheckOptions` is:
33
+
34
+ | Option | Type | Description |
35
+ |--------|------|-------------|
36
+ | `timeout` | `number` | Milliseconds to wait for the health check response. Default: `30000`. |
37
+ | `deploymentId` | `string` | Deployment to target. Falls back to `process.env.VERCEL_DEPLOYMENT_ID`. |
38
+ | `namespace` | `string` | Queue namespace of the target deployment. Falls back to `WORKFLOW_QUEUE_NAMESPACE`. |
39
+
40
+ ### Returns
41
+
42
+ Returns a `Promise<HealthCheckResult>`:
43
+
44
+ | Property | Type | Description |
45
+ |----------|------|-------------|
46
+ | `healthy` | `boolean` | Whether the combined workflow endpoint processed the health check message |
47
+ | `error` | `string \| undefined` | Error message when the check failed |
48
+ | `latencyMs` | `number \| undefined` | Round-trip latency when the check succeeded |
49
+ | `specVersion` | `number \| undefined` | Workflow spec version of the responding deployment |
50
+ | `workflowCoreVersion` | `string \| undefined` | `@workflow/core` version of the responding deployment |
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: "workflow/runtime"
3
+ description: Runtime functions for accessing the World instance and wiring up workflow infrastructure.
4
+ type: overview
5
+ summary: Explore runtime functions for resolving the World instance and configuring workflow infrastructure.
6
+ ---
7
+
8
+ The `workflow/runtime` package provides low-level access to the workflow runtime. Use it to resolve the [World](/docs/api-reference/workflow-runtime/world) instance that backs storage, queuing, and streaming or to wire up workflow infrastructure in custom server environments.
9
+
10
+ ## Functions
11
+
12
+ <Cards>
13
+ <Card href="/docs/api-reference/workflow-runtime/get-world" title="getWorld()">
14
+ Async: resolve the World instance for storage, queuing, and streaming backends.
15
+ </Card>
16
+ <Card href="/docs/api-reference/workflow-runtime/world" title="World SDK">
17
+ Low-level API for inspecting runs, steps, events, hooks, streams, and queues, plus metadata-only analytics with attribute search.
18
+ </Card>
19
+ </Cards>
20
+
21
+ ## Infrastructure functions
22
+
23
+ These functions are primarily used by framework adapters and custom world setups, and are rarely needed in application code:
24
+
25
+ <Cards>
26
+ <Card href="/docs/api-reference/workflow-runtime/create-world" title="createWorld()">
27
+ Create a World instance from environment configuration.
28
+ </Card>
29
+ <Card href="/docs/api-reference/workflow-runtime/set-world" title="setWorld()">
30
+ Override the cached World instance with a custom World.
31
+ </Card>
32
+ <Card href="/docs/api-reference/workflow-runtime/get-world-handlers" title="getWorldHandlers()">
33
+ Build-time-safe access to the World's queue handlers.
34
+ </Card>
35
+ <Card href="/docs/api-reference/workflow-runtime/workflow-entrypoint" title="workflowEntrypoint()">
36
+ Create the HTTP route handler that executes workflow runs.
37
+ </Card>
38
+ <Card href="/docs/api-reference/workflow-runtime/health-check" title="healthCheck()">
39
+ Check the health of a deployment's workflow infrastructure.
40
+ </Card>
41
+ </Cards>
@@ -0,0 +1,12 @@
1
+ {
2
+ "title": "workflow/runtime",
3
+ "pages": [
4
+ "get-world",
5
+ "world",
6
+ "create-world",
7
+ "set-world",
8
+ "get-world-handlers",
9
+ "workflow-entrypoint",
10
+ "health-check"
11
+ ]
12
+ }
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: setWorld
3
+ description: Override or reset the cached World instance used by the workflow runtime.
4
+ type: reference
5
+ summary: Use setWorld to inject a custom World instance or reset the cache to the build-injected World.
6
+ prerequisites:
7
+ - /docs/api-reference/workflow-runtime/get-world
8
+ related:
9
+ - /docs/api-reference/workflow-runtime/create-world
10
+ ---
11
+
12
+ Overrides the cached [World](/docs/api-reference/workflow-runtime/world) instance that [`getWorld()`](/docs/api-reference/workflow-runtime/get-world) returns. Use it to inject a World constructed with explicit configuration, or pass `undefined` to clear the cache so the next `getWorld()` call reconstructs the World that was statically injected into the bundle at build time.
13
+
14
+ ```typescript lineNumbers
15
+ import { setWorld, getWorld } from "workflow/runtime";
16
+ import type { World } from "@workflow/world";
17
+ declare const customWorld: World; // @setup
18
+
19
+ setWorld(customWorld); // [!code highlight]
20
+ const world = await getWorld(); // resolves customWorld
21
+ ```
22
+
23
+ ## API signature
24
+
25
+ ### Parameters
26
+
27
+ | Parameter | Type | Description |
28
+ |-----------|------|-------------|
29
+ | `world` | `World \| undefined` | The World instance to use, or `undefined` to reset the cache so the next access reconstructs the build-injected World |
30
+
31
+ ### Returns
32
+
33
+ This function does not return a value.
34
+
35
+ ## Example: inject a specific World
36
+
37
+ The build selects the target World via `WORKFLOW_TARGET_WORLD` and statically injects it into the bundle. Changing the environment variable at runtime has no effect. To use a different World at runtime, construct it explicitly with the World package's `createWorld()` factory and inject it:
38
+
39
+ ```typescript lineNumbers
40
+ import { setWorld } from "workflow/runtime";
41
+ import { createWorld } from "@workflow/world-local";
42
+
43
+ setWorld(createWorld({ dataDir: "/tmp/workflow-test" })); // [!code highlight]
44
+ ```
45
+
46
+ Calling `setWorld(undefined)` afterwards restores the build-injected World on the next `getWorld()` call.
47
+
48
+ ## Related functions
49
+
50
+ - [`getWorld()`](/docs/api-reference/workflow-runtime/get-world): Resolve the cached World instance.
51
+ - [`createWorld()`](/docs/api-reference/workflow-runtime/create-world): Construct a fresh instance of the build-injected World.
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: workflowEntrypoint
3
+ description: Create the HTTP route handler that executes workflow runs from a workflow bundle.
4
+ type: reference
5
+ summary: Use workflowEntrypoint to wire a compiled workflow bundle into an HTTP route in custom server environments.
6
+ prerequisites:
7
+ - /docs/how-it-works/code-transform
8
+ related:
9
+ - /docs/api-reference/workflow-runtime/health-check
10
+ ---
11
+
12
+ Creates the HTTP route handler that executes workflow runs. The handler receives queue messages, replays the workflow from its event log, executes steps inline where possible, and suspends when the workflow waits on sleeps or hooks.
13
+
14
+ Framework adapters (Next.js, Nitro, SvelteKit, etc.) call this for you and mount the result at `/.well-known/workflow/v1/flow`. You only need it when wiring workflow support into a custom server environment.
15
+
16
+ ```typescript lineNumbers
17
+ import { workflowEntrypoint } from "workflow/runtime";
18
+ declare const workflowBundleCode: string; // @setup
19
+
20
+ const handler = workflowEntrypoint(workflowBundleCode); // [!code highlight]
21
+
22
+ // Mount on your server, e.g. a fetch-style route:
23
+ export const POST = (req: Request) => handler(req);
24
+ ```
25
+
26
+ ## API signature
27
+
28
+ ### Parameters
29
+
30
+ | Parameter | Type | Description |
31
+ |-----------|------|-------------|
32
+ | `workflowCode` | `string` | The compiled workflow bundle code containing all workflow functions |
33
+ | `options` | `{ namespace?: string }` | Optional. `namespace` scopes the queue topics this handler consumes. |
34
+
35
+ ### Returns
36
+
37
+ Returns a fetch-style request handler: `(req: Request) => Promise<Response>`.
38
+
39
+ ## Related functions
40
+
41
+ - [`getWorld()`](/docs/api-reference/workflow-runtime/get-world): Resolve the runtime World instance this handler shares with workflow execution.
42
+ - [`getWorldHandlers()`](/docs/api-reference/workflow-runtime/get-world-handlers): Access build-time-safe World handlers for framework tooling.
43
+ - [`healthCheck()`](/docs/api-reference/workflow-runtime/health-check): Verify the entrypoint processes queue messages end-to-end.