@workflow/core 4.0.1-beta.4 → 4.0.1-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.
Files changed (147) hide show
  1. package/LICENSE.md +201 -21
  2. package/dist/builtins.js +1 -1
  3. package/dist/class-serialization.d.ts +26 -0
  4. package/dist/class-serialization.d.ts.map +1 -0
  5. package/dist/class-serialization.js +66 -0
  6. package/dist/create-hook.js +1 -1
  7. package/dist/define-hook.d.ts +40 -25
  8. package/dist/define-hook.d.ts.map +1 -1
  9. package/dist/define-hook.js +22 -27
  10. package/dist/events-consumer.js +1 -1
  11. package/dist/flushable-stream.d.ts +82 -0
  12. package/dist/flushable-stream.d.ts.map +1 -0
  13. package/dist/flushable-stream.js +214 -0
  14. package/dist/global.d.ts +12 -2
  15. package/dist/global.d.ts.map +1 -1
  16. package/dist/global.js +32 -8
  17. package/dist/index.d.ts +3 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -2
  20. package/dist/logger.js +1 -1
  21. package/dist/observability.d.ts +60 -0
  22. package/dist/observability.d.ts.map +1 -1
  23. package/dist/observability.js +175 -19
  24. package/dist/parse-name.d.ts +12 -0
  25. package/dist/parse-name.d.ts.map +1 -1
  26. package/dist/parse-name.js +28 -3
  27. package/dist/private.d.ts +10 -1
  28. package/dist/private.d.ts.map +1 -1
  29. package/dist/private.js +6 -1
  30. package/dist/runtime/helpers.d.ts +64 -0
  31. package/dist/runtime/helpers.d.ts.map +1 -0
  32. package/dist/runtime/helpers.js +243 -0
  33. package/dist/runtime/resume-hook.d.ts +16 -11
  34. package/dist/runtime/resume-hook.d.ts.map +1 -1
  35. package/dist/runtime/resume-hook.js +76 -64
  36. package/dist/runtime/start.d.ts +10 -0
  37. package/dist/runtime/start.d.ts.map +1 -1
  38. package/dist/runtime/start.js +56 -45
  39. package/dist/runtime/step-handler.d.ts +7 -0
  40. package/dist/runtime/step-handler.d.ts.map +1 -0
  41. package/dist/runtime/step-handler.js +353 -0
  42. package/dist/runtime/suspension-handler.d.ts +20 -0
  43. package/dist/runtime/suspension-handler.d.ts.map +1 -0
  44. package/dist/runtime/suspension-handler.js +179 -0
  45. package/dist/runtime/world.d.ts.map +1 -1
  46. package/dist/runtime/world.js +22 -21
  47. package/dist/runtime.d.ts +3 -7
  48. package/dist/runtime.d.ts.map +1 -1
  49. package/dist/runtime.js +76 -334
  50. package/dist/schemas.d.ts +1 -15
  51. package/dist/schemas.d.ts.map +1 -1
  52. package/dist/schemas.js +2 -15
  53. package/dist/serialization.d.ts +74 -10
  54. package/dist/serialization.d.ts.map +1 -1
  55. package/dist/serialization.js +295 -56
  56. package/dist/sleep.d.ts +33 -0
  57. package/dist/sleep.d.ts.map +1 -0
  58. package/dist/sleep.js +10 -0
  59. package/dist/source-map.d.ts +10 -0
  60. package/dist/source-map.d.ts.map +1 -0
  61. package/dist/source-map.js +56 -0
  62. package/dist/step/context-storage.d.ts +2 -0
  63. package/dist/step/context-storage.d.ts.map +1 -1
  64. package/dist/step/context-storage.js +1 -1
  65. package/dist/step/get-closure-vars.d.ts +9 -0
  66. package/dist/step/get-closure-vars.d.ts.map +1 -0
  67. package/dist/step/get-closure-vars.js +16 -0
  68. package/dist/step/get-step-metadata.js +1 -1
  69. package/dist/step/get-workflow-metadata.js +1 -1
  70. package/dist/step/writable-stream.d.ts +14 -0
  71. package/dist/step/writable-stream.d.ts.map +1 -0
  72. package/dist/step/writable-stream.js +30 -0
  73. package/dist/step.d.ts +1 -1
  74. package/dist/step.d.ts.map +1 -1
  75. package/dist/step.js +51 -11
  76. package/dist/symbols.d.ts +7 -0
  77. package/dist/symbols.d.ts.map +1 -1
  78. package/dist/symbols.js +8 -1
  79. package/dist/telemetry/semantic-conventions.d.ts +66 -38
  80. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  81. package/dist/telemetry/semantic-conventions.js +16 -3
  82. package/dist/telemetry.d.ts +8 -4
  83. package/dist/telemetry.d.ts.map +1 -1
  84. package/dist/telemetry.js +39 -6
  85. package/dist/types.d.ts +0 -7
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/types.js +1 -26
  88. package/dist/util.d.ts +9 -27
  89. package/dist/util.d.ts.map +1 -1
  90. package/dist/util.js +37 -44
  91. package/dist/vm/index.js +2 -2
  92. package/dist/vm/uuid.js +1 -1
  93. package/dist/workflow/create-hook.js +1 -1
  94. package/dist/workflow/define-hook.d.ts +3 -3
  95. package/dist/workflow/define-hook.d.ts.map +1 -1
  96. package/dist/workflow/define-hook.js +1 -1
  97. package/dist/workflow/get-workflow-metadata.js +1 -1
  98. package/dist/workflow/hook.d.ts.map +1 -1
  99. package/dist/workflow/hook.js +6 -9
  100. package/dist/workflow/index.d.ts +1 -0
  101. package/dist/workflow/index.d.ts.map +1 -1
  102. package/dist/workflow/index.js +2 -1
  103. package/dist/workflow/sleep.d.ts +4 -0
  104. package/dist/workflow/sleep.d.ts.map +1 -0
  105. package/dist/workflow/sleep.js +54 -0
  106. package/dist/workflow/writable-stream.js +1 -1
  107. package/dist/workflow.d.ts.map +1 -1
  108. package/dist/workflow.js +60 -9
  109. package/dist/writable-stream.d.ts +5 -4
  110. package/dist/writable-stream.d.ts.map +1 -1
  111. package/dist/writable-stream.js +7 -6
  112. package/package.json +23 -18
  113. package/dist/builtins.js.map +0 -1
  114. package/dist/create-hook.js.map +0 -1
  115. package/dist/define-hook.js.map +0 -1
  116. package/dist/events-consumer.js.map +0 -1
  117. package/dist/global.js.map +0 -1
  118. package/dist/index.js.map +0 -1
  119. package/dist/logger.js.map +0 -1
  120. package/dist/observability.js.map +0 -1
  121. package/dist/parse-name.js.map +0 -1
  122. package/dist/private.js.map +0 -1
  123. package/dist/runtime/resume-hook.js.map +0 -1
  124. package/dist/runtime/start.js.map +0 -1
  125. package/dist/runtime/world.js.map +0 -1
  126. package/dist/runtime.js.map +0 -1
  127. package/dist/schemas.js.map +0 -1
  128. package/dist/serialization.js.map +0 -1
  129. package/dist/step/context-storage.js.map +0 -1
  130. package/dist/step/get-step-metadata.js.map +0 -1
  131. package/dist/step/get-workflow-metadata.js.map +0 -1
  132. package/dist/step.js.map +0 -1
  133. package/dist/symbols.js.map +0 -1
  134. package/dist/telemetry/semantic-conventions.js.map +0 -1
  135. package/dist/telemetry.js.map +0 -1
  136. package/dist/types.js.map +0 -1
  137. package/dist/util.js.map +0 -1
  138. package/dist/vm/index.js.map +0 -1
  139. package/dist/vm/uuid.js.map +0 -1
  140. package/dist/workflow/create-hook.js.map +0 -1
  141. package/dist/workflow/define-hook.js.map +0 -1
  142. package/dist/workflow/get-workflow-metadata.js.map +0 -1
  143. package/dist/workflow/hook.js.map +0 -1
  144. package/dist/workflow/index.js.map +0 -1
  145. package/dist/workflow/writable-stream.js.map +0 -1
  146. package/dist/workflow.js.map +0 -1
  147. package/dist/writable-stream.js.map +0 -1
@@ -0,0 +1,179 @@
1
+ import { WorkflowAPIError } from '@workflow/errors';
2
+ import { dehydrateStepArguments } from '../serialization.js';
3
+ import * as Attribute from '../telemetry/semantic-conventions.js';
4
+ import { serializeTraceCarrier } from '../telemetry.js';
5
+ import { queueMessage } from './helpers.js';
6
+ /**
7
+ * Processes a single hook by creating it in the database and event log.
8
+ */
9
+ async function processHook({ queueItem, world, runId, global, }) {
10
+ try {
11
+ // Create hook in database
12
+ const hookMetadata = typeof queueItem.metadata === 'undefined'
13
+ ? undefined
14
+ : dehydrateStepArguments(queueItem.metadata, global);
15
+ await world.hooks.create(runId, {
16
+ hookId: queueItem.correlationId,
17
+ token: queueItem.token,
18
+ metadata: hookMetadata,
19
+ });
20
+ // Create hook_created event in event log
21
+ await world.events.create(runId, {
22
+ eventType: 'hook_created',
23
+ correlationId: queueItem.correlationId,
24
+ });
25
+ }
26
+ catch (err) {
27
+ if (WorkflowAPIError.is(err)) {
28
+ if (err.status === 409) {
29
+ // Hook already exists (duplicate hook_id constraint), so we can skip it
30
+ console.warn(`Hook with correlation ID "${queueItem.correlationId}" already exists, skipping: ${err.message}`);
31
+ return;
32
+ }
33
+ else if (err.status === 410) {
34
+ // Workflow has already completed, so no-op
35
+ console.warn(`Workflow run "${runId}" has already completed, skipping hook "${queueItem.correlationId}": ${err.message}`);
36
+ return;
37
+ }
38
+ }
39
+ throw err;
40
+ }
41
+ }
42
+ /**
43
+ * Processes a single step by creating it in the database and queueing execution.
44
+ *
45
+ * IMPORTANT: The queue write MUST always happen, even if the step already exists.
46
+ * This handles the case where:
47
+ * 1. Step is written to workflow database
48
+ * 2. Process crashes, times out, or fails before queue write completes
49
+ * 3. Upstream retry occurs
50
+ * 4. Step already exists in database (409 conflict)
51
+ *
52
+ * If we skipped the queue write on 409, the step would sit "pending" forever
53
+ * with 0 attempts. The queue write uses an idempotency key (correlation ID),
54
+ * so duplicate queue writes are safely deduplicated by the queue service.
55
+ */
56
+ async function processStep({ queueItem, world, runId, workflowName, workflowStartedAt, global, }) {
57
+ const dehydratedInput = dehydrateStepArguments({
58
+ args: queueItem.args,
59
+ closureVars: queueItem.closureVars,
60
+ thisVal: queueItem.thisVal,
61
+ }, global);
62
+ // The stepId to use for the queue message. This will be the correlation ID
63
+ // regardless of whether we created a new step or the step already existed.
64
+ const stepId = queueItem.correlationId;
65
+ try {
66
+ await world.steps.create(runId, {
67
+ stepId: queueItem.correlationId,
68
+ stepName: queueItem.stepName,
69
+ input: dehydratedInput,
70
+ });
71
+ }
72
+ catch (err) {
73
+ if (WorkflowAPIError.is(err) && err.status === 409) {
74
+ // Step already exists - this is expected on retries. We still need to
75
+ // proceed with the queue write below to ensure the step gets executed.
76
+ // See function comment above for details on why this is critical.
77
+ console.warn(`Step "${queueItem.stepName}" with correlation ID "${queueItem.correlationId}" already exists, proceeding with queue write`);
78
+ }
79
+ else {
80
+ throw err;
81
+ }
82
+ }
83
+ // Always write to queue, even if step already existed. The idempotency key
84
+ // ensures duplicate queue writes are safely deduplicated by the queue service.
85
+ await queueMessage(world, `__wkf_step_${queueItem.stepName}`, {
86
+ workflowName,
87
+ workflowRunId: runId,
88
+ workflowStartedAt,
89
+ stepId,
90
+ traceCarrier: await serializeTraceCarrier(),
91
+ requestedAt: new Date(),
92
+ }, {
93
+ idempotencyKey: queueItem.correlationId,
94
+ });
95
+ }
96
+ /**
97
+ * Processes a single wait by creating the event and calculating timeout.
98
+ * @returns The timeout in seconds, or null if the wait already exists.
99
+ */
100
+ async function processWait({ queueItem, world, runId, }) {
101
+ try {
102
+ // Only create wait_created event if it hasn't been created yet
103
+ if (!queueItem.hasCreatedEvent) {
104
+ await world.events.create(runId, {
105
+ eventType: 'wait_created',
106
+ correlationId: queueItem.correlationId,
107
+ eventData: {
108
+ resumeAt: queueItem.resumeAt,
109
+ },
110
+ });
111
+ }
112
+ // Calculate how long to wait before resuming
113
+ const now = Date.now();
114
+ const resumeAtMs = queueItem.resumeAt.getTime();
115
+ const delayMs = Math.max(1000, resumeAtMs - now);
116
+ return Math.ceil(delayMs / 1000);
117
+ }
118
+ catch (err) {
119
+ if (WorkflowAPIError.is(err) && err.status === 409) {
120
+ // Wait already exists, so we can skip it
121
+ console.warn(`Wait with correlation ID "${queueItem.correlationId}" already exists, skipping: ${err.message}`);
122
+ return null;
123
+ }
124
+ throw err;
125
+ }
126
+ }
127
+ /**
128
+ * Handles a workflow suspension by processing all pending operations (hooks, steps, waits).
129
+ * Hooks are processed first to prevent race conditions, then steps and waits in parallel.
130
+ */
131
+ export async function handleSuspension({ suspension, world, runId, workflowName, workflowStartedAt, span, }) {
132
+ // Separate queue items by type for parallel processing
133
+ const stepItems = suspension.steps.filter((item) => item.type === 'step');
134
+ const hookItems = suspension.steps.filter((item) => item.type === 'hook');
135
+ const waitItems = suspension.steps.filter((item) => item.type === 'wait');
136
+ // Process all hooks first to prevent race conditions
137
+ await Promise.all(hookItems.map((queueItem) => processHook({
138
+ queueItem,
139
+ world,
140
+ runId,
141
+ global: suspension.globalThis,
142
+ })));
143
+ // Then process steps and waits in parallel
144
+ const [, waitTimeouts] = await Promise.all([
145
+ Promise.all(stepItems.map((queueItem) => processStep({
146
+ queueItem,
147
+ world,
148
+ runId,
149
+ workflowName,
150
+ workflowStartedAt,
151
+ global: suspension.globalThis,
152
+ }))),
153
+ Promise.all(waitItems.map((queueItem) => processWait({
154
+ queueItem,
155
+ world,
156
+ runId,
157
+ }))),
158
+ ]);
159
+ // Find minimum timeout from waits
160
+ const minTimeoutSeconds = waitTimeouts.reduce((min, timeout) => {
161
+ if (timeout === null)
162
+ return min;
163
+ if (min === null)
164
+ return timeout;
165
+ return Math.min(min, timeout);
166
+ }, null);
167
+ span?.setAttributes({
168
+ ...Attribute.WorkflowRunStatus('workflow_suspended'),
169
+ ...Attribute.WorkflowStepsCreated(stepItems.length),
170
+ ...Attribute.WorkflowHooksCreated(hookItems.length),
171
+ ...Attribute.WorkflowWaitsCreated(waitItems.length),
172
+ });
173
+ // If we encountered any waits, return the minimum timeout
174
+ if (minTimeoutSeconds !== null) {
175
+ return { timeoutSeconds: minTimeoutSeconds };
176
+ }
177
+ return {};
178
+ }
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VzcGVuc2lvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvc3VzcGVuc2lvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBU3BELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sS0FBSyxTQUFTLE1BQU0sc0NBQXNDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQXNCNUM7O0dBRUc7QUFDSCxLQUFLLFVBQVUsV0FBVyxDQUFDLEVBQ3pCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sR0FDWTtJQUNsQixJQUFJLENBQUM7UUFDSCwwQkFBMEI7UUFDMUIsTUFBTSxZQUFZLEdBQ2hCLE9BQU8sU0FBUyxDQUFDLFFBQVEsS0FBSyxXQUFXO1lBQ3ZDLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekQsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDOUIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQy9CLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztZQUN0QixRQUFRLEVBQUUsWUFBWTtTQUN2QixDQUFDLENBQUM7UUFFSCx5Q0FBeUM7UUFDekMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDL0IsU0FBUyxFQUFFLGNBQWM7WUFDekIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEdB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
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/runtime/world.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAiB7C;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAO,KAkC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,QAAO,IAAI,CAAC,KAAK,EAAE,oBAAoB,CASnE,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,KAM3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,GAAG,SAAS,KAAG,IAGnD,CAAC"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/runtime/world.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAsB7C;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAO,KAkC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,QAAO,IAAI,CAAC,KAAK,EAAE,oBAAoB,CASnE,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,KAM3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,GAAG,SAAS,KAAG,IAGnD,CAAC"}
@@ -1,15 +1,16 @@
1
1
  import { createRequire } from 'node:module';
2
- import Path from 'node:path';
3
- import { createEmbeddedWorld } from '@workflow/world-local';
2
+ import { join } from 'node:path';
3
+ import { createLocalWorld } from '@workflow/world-local';
4
4
  import { createVercelWorld } from '@workflow/world-vercel';
5
- const require = createRequire(Path.join(process.cwd(), 'index.js'));
6
- let worldCache;
7
- let stubbedWorldCache;
5
+ const require = createRequire(join(process.cwd(), 'index.js'));
6
+ const WorldCache = Symbol.for('@workflow/world//cache');
7
+ const StubbedWorldCache = Symbol.for('@workflow/world//stubbedCache');
8
+ const globalSymbols = globalThis;
8
9
  function defaultWorld() {
9
10
  if (process.env.VERCEL_DEPLOYMENT_ID) {
10
11
  return 'vercel';
11
12
  }
12
- return 'embedded';
13
+ return 'local';
13
14
  }
14
15
  /**
15
16
  * Create a new world instance based on environment variables.
@@ -20,7 +21,8 @@ export const createWorld = () => {
20
21
  const targetWorld = process.env.WORKFLOW_TARGET_WORLD || defaultWorld();
21
22
  if (targetWorld === 'vercel') {
22
23
  return createVercelWorld({
23
- baseUrl: process.env.WORKFLOW_VERCEL_PROXY_URL,
24
+ baseUrl: process.env.WORKFLOW_VERCEL_BACKEND_URL,
25
+ skipProxy: process.env.WORKFLOW_VERCEL_SKIP_PROXY === 'true',
24
26
  token: process.env.WORKFLOW_VERCEL_AUTH_TOKEN,
25
27
  projectConfig: {
26
28
  environment: process.env.WORKFLOW_VERCEL_ENV,
@@ -29,10 +31,9 @@ export const createWorld = () => {
29
31
  },
30
32
  });
31
33
  }
32
- if (targetWorld === 'embedded') {
33
- return createEmbeddedWorld({
34
- dataDir: process.env.WORKFLOW_EMBEDDED_DATA_DIR,
35
- port: process.env.PORT ? Number(process.env.PORT) : undefined,
34
+ if (targetWorld === 'local') {
35
+ return createLocalWorld({
36
+ dataDir: process.env.WORKFLOW_LOCAL_DATA_DIR,
36
37
  });
37
38
  }
38
39
  const mod = require(targetWorld);
@@ -57,28 +58,28 @@ export const createWorld = () => {
57
58
  * be able to re-combine getWorld and getWorldHandlers into one singleton.
58
59
  */
59
60
  export const getWorldHandlers = () => {
60
- if (stubbedWorldCache) {
61
- return stubbedWorldCache;
61
+ if (globalSymbols[StubbedWorldCache]) {
62
+ return globalSymbols[StubbedWorldCache];
62
63
  }
63
64
  const _world = createWorld();
64
- stubbedWorldCache = _world;
65
+ globalSymbols[StubbedWorldCache] = _world;
65
66
  return {
66
67
  createQueueHandler: _world.createQueueHandler,
67
68
  };
68
69
  };
69
70
  export const getWorld = () => {
70
- if (worldCache) {
71
- return worldCache;
71
+ if (globalSymbols[WorldCache]) {
72
+ return globalSymbols[WorldCache];
72
73
  }
73
- worldCache = createWorld();
74
- return worldCache;
74
+ globalSymbols[WorldCache] = createWorld();
75
+ return globalSymbols[WorldCache];
75
76
  };
76
77
  /**
77
78
  * Reset the cached world instance. This should be called when environment
78
79
  * variables change and you need to reinitialize the world with new config.
79
80
  */
80
81
  export const setWorld = (world) => {
81
- worldCache = world;
82
- stubbedWorldCache = world;
82
+ globalSymbols[WorldCache] = world;
83
+ globalSymbols[StubbedWorldCache] = world;
83
84
  };
84
- //# sourceMappingURL=world.js.map
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS93b3JsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUUvRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFdEUsTUFBTSxhQUFhLEdBR2YsVUFBVSxDQUFDO0FBRWYsU0FBUyxZQUFZO0lBQ25CLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFVLEVBQUU7SUFDckMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV4RSxJQUFJLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM3QixPQUFPLGlCQUFpQixDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQjtZQUNoRCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsS0FBSyxNQUFNO1lBQzVELEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQjtZQUM3QyxhQUFhLEVBQUU7Z0JBQ2IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO2dCQUM1QyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUI7Z0JBQzlDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQjthQUN6QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUM1QixPQUFPLGdCQUFnQixDQUFDO1lBQ3RCLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QjtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDOUIsT0FBTyxHQUFHLEVBQVcsQ0FBQztJQUN4QixDQUFDO1NBQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDN0MsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFXLENBQUM7SUFDaEMsQ0FBQztTQUFNLElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2pELE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBVyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLGdDQUFnQyxXQUFXLHlGQUF5RixDQUNySSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFzQyxFQUFFO0lBQ3RFLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNyQyxPQUFPLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQztJQUM3QixhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUMsT0FBTztRQUNMLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7S0FDOUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFVLEVBQUU7SUFDbEMsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQzFDLE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQXdCLEVBQVEsRUFBRTtJQUN6RCxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMzQyxDQUFDLENBQUMifQ==
package/dist/runtime.d.ts CHANGED
@@ -1,8 +1,10 @@
1
- import type { Event, WorkflowRun, WorkflowRunStatus } from '@workflow/world';
1
+ import { type Event, type WorkflowRun, type WorkflowRunStatus } from '@workflow/world';
2
2
  export type { Event, WorkflowRun };
3
3
  export { WorkflowSuspension } from './global.js';
4
+ export { type HealthCheckEndpoint, type HealthCheckOptions, type HealthCheckResult, healthCheck, } from './runtime/helpers.js';
4
5
  export { getHookByToken, resumeHook, resumeWebhook, } from './runtime/resume-hook.js';
5
6
  export { type StartOptions, start } from './runtime/start.js';
7
+ export { stepEntrypoint } from './runtime/step-handler.js';
6
8
  export { createWorld, getWorld, getWorldHandlers, setWorld, } from './runtime/world.js';
7
9
  /**
8
10
  * Options for configuring a workflow's readable stream.
@@ -111,11 +113,5 @@ export declare function getRun<TResult>(runId: string): Run<TResult>;
111
113
  * @returns A function that can be used as a Vercel API route.
112
114
  */
113
115
  export declare function workflowEntrypoint(workflowCode: string): (req: Request) => Promise<Response>;
114
- /**
115
- * A single route that handles any step execution request and routes to the
116
- * appropriate step function. We may eventually want to create different bundles
117
- * for each step, this is temporary.
118
- */
119
- export declare const stepEntrypoint: (req: Request) => Promise<Response>;
120
116
  export declare function runStep(): void;
121
117
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AA8BzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,GAAG,CAAC,OAAO;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,EAAE,MAAM;IAKzB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEvC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAElC;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAElC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAEzC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAE3C;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EACjB,OAAO,GAAE,6BAAkC,GAC1C,cAAc,CAAC,CAAC,CAAC;IASpB;;;;OAIG;YACW,eAAe;CA8B9B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3D;AA8BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,uCA8MtD;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,qCAuQxB,CAAC;AAIJ,wBAAgB,OAAO,SAAK"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AA4BzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,GAAG,CAAC,OAAO;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,EAAE,MAAM;IAKzB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAEvC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAElC;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAElC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAEzC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAE3C;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EACjB,OAAO,GAAE,6BAAkC,GAC1C,cAAc,CAAC,CAAC,CAAC;IASpB;;;;OAIG;YACW,eAAe;CA2B9B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GACnB,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAiMrC;AAID,wBAAgB,OAAO,SAAK"}