@workflow/world-vercel 4.0.1-beta.8 → 4.1.0-beta.29

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/dist/events.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type CreateEventParams, type CreateEventRequest, type Event, type ListEventsByCorrelationIdParams, type ListEventsParams, type PaginatedResponse } from '@workflow/world';
1
+ import { type AnyEventRequest, type CreateEventParams, type Event, type EventResult, type ListEventsByCorrelationIdParams, type ListEventsParams, type PaginatedResponse } from '@workflow/world';
2
2
  import type { APIConfig } from './utils.js';
3
3
  export declare function getWorkflowRunEvents(params: ListEventsParams | ListEventsByCorrelationIdParams, config?: APIConfig): Promise<PaginatedResponse<Event>>;
4
- export declare function createWorkflowRunEvent(id: string, data: CreateEventRequest, params?: CreateEventParams, config?: APIConfig): Promise<Event>;
4
+ export declare function createWorkflowRunEvent(id: string | null, data: AnyEventRequest, params?: CreateEventParams, config?: APIConfig): Promise<EventResult>;
5
5
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,KAAK,EAGV,KAAK,+BAA+B,EACpC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA4B5C,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,GAAG,+BAA+B,EAC1D,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CA6CnC;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,KAAK,CAAC,CAchB"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,KAAK,EACV,KAAK,WAAW,EAIhB,KAAK,+BAA+B,EACpC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAIvB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmC5C,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,GAAG,+BAA+B,EAC1D,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CA6CnC;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,MAAM,GAAG,IAAI,EACjB,IAAI,EAAE,eAAe,EACrB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAyCtB"}
package/dist/events.js CHANGED
@@ -1,6 +1,8 @@
1
- import { EventSchema, EventTypeSchema, PaginatedResponseSchema, } from '@workflow/world';
1
+ import { EventSchema, EventTypeSchema, HookSchema, PaginatedResponseSchema, WorkflowRunSchema, } from '@workflow/world';
2
2
  import z from 'zod';
3
- import { DEFAULT_RESOLVE_DATA_OPTION, dateToStringReplacer, makeRequest, } from './utils.js';
3
+ import { cancelWorkflowRunV1, createWorkflowRunV1 } from './runs.js';
4
+ import { deserializeStep, StepWireSchema } from './steps.js';
5
+ import { DEFAULT_RESOLVE_DATA_OPTION, makeRequest } from './utils.js';
4
6
  // Helper to filter event data based on resolveData setting
5
7
  function filterEventData(event, resolveData) {
6
8
  if (resolveData === 'none') {
@@ -9,8 +11,17 @@ function filterEventData(event, resolveData) {
9
11
  }
10
12
  return event;
11
13
  }
14
+ // Schema for EventResult wire format returned by events.create
15
+ // Uses wire format schemas for step to handle field name mapping
16
+ const EventResultWireSchema = z.object({
17
+ event: EventSchema,
18
+ run: WorkflowRunSchema.optional(),
19
+ step: StepWireSchema.optional(),
20
+ hook: HookSchema.optional(),
21
+ });
12
22
  // Would usually "EventSchema.omit({ eventData: true })" but that doesn't work
13
23
  // on zod unions. Re-creating the schema manually.
24
+ // specVersion defaults to 1 (legacy) when parsing responses from storage
14
25
  const EventWithRefsSchema = z.object({
15
26
  eventId: z.string(),
16
27
  runId: z.string(),
@@ -18,6 +29,7 @@ const EventWithRefsSchema = z.object({
18
29
  correlationId: z.string().optional(),
19
30
  eventDataRef: z.any().optional(),
20
31
  createdAt: z.coerce.date(),
32
+ specVersion: z.number().default(1),
21
33
  });
22
34
  // Functions
23
35
  export async function getWorkflowRunEvents(params, config) {
@@ -47,8 +59,8 @@ export async function getWorkflowRunEvents(params, config) {
47
59
  const queryString = searchParams.toString();
48
60
  const query = queryString ? `?${queryString}` : '';
49
61
  const endpoint = correlationId
50
- ? `/v1/events${query}`
51
- : `/v1/runs/${runId}/events${query}`;
62
+ ? `/v2/events${query}`
63
+ : `/v2/runs/${runId}/events${query}`;
52
64
  const response = (await makeRequest({
53
65
  endpoint,
54
66
  options: { method: 'GET' },
@@ -62,15 +74,40 @@ export async function getWorkflowRunEvents(params, config) {
62
74
  }
63
75
  export async function createWorkflowRunEvent(id, data, params, config) {
64
76
  const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
65
- const event = await makeRequest({
66
- endpoint: `/v1/runs/${id}/events`,
67
- options: {
68
- method: 'POST',
69
- body: JSON.stringify(data, dateToStringReplacer),
70
- },
77
+ const v1Compat = params?.v1Compat ?? false;
78
+ if (v1Compat) {
79
+ if (data.eventType === 'run_cancelled' && id) {
80
+ const run = await cancelWorkflowRunV1(id, params, config);
81
+ return { run: run };
82
+ }
83
+ else if (data.eventType === 'run_created') {
84
+ const run = await createWorkflowRunV1(data.eventData, config);
85
+ return { run };
86
+ }
87
+ const wireResult = await makeRequest({
88
+ endpoint: `/v1/runs/${id}/events`,
89
+ options: { method: 'POST' },
90
+ data,
91
+ config,
92
+ schema: EventSchema,
93
+ });
94
+ return { event: wireResult };
95
+ }
96
+ // For run_created events, runId is null - use "null" string in the URL path
97
+ const runIdPath = id === null ? 'null' : id;
98
+ const wireResult = await makeRequest({
99
+ endpoint: `/v2/runs/${runIdPath}/events`,
100
+ options: { method: 'POST' },
101
+ data,
71
102
  config,
72
- schema: EventSchema,
103
+ schema: EventResultWireSchema,
73
104
  });
74
- return filterEventData(event, resolveData);
105
+ // Transform wire format to interface format
106
+ return {
107
+ event: filterEventData(wireResult.event, resolveData),
108
+ run: wireResult.run,
109
+ step: wireResult.step ? deserializeStep(wireResult.step) : undefined,
110
+ hook: wireResult.hook,
111
+ };
75
112
  }
76
113
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,eAAe,EACf,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqB5C,wBAAsB,SAAS,CAC7B,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAoClC;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,IAAI,EACJ,eAAe,EACf,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiB5C,wBAAsB,SAAS,CAC7B,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAoClC;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf"}
package/dist/hooks.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { HookSchema, PaginatedResponseSchema } from '@workflow/world';
2
2
  import z from 'zod';
3
- import { DEFAULT_RESOLVE_DATA_OPTION, dateToStringReplacer, makeRequest, } from './utils.js';
3
+ import { DEFAULT_RESOLVE_DATA_OPTION, makeRequest } from './utils.js';
4
4
  // Helper to filter hook data based on resolveData setting
5
5
  function filterHookData(hook, resolveData) {
6
6
  if (resolveData === 'none') {
@@ -29,7 +29,7 @@ export async function listHooks(params, config) {
29
29
  if (runId)
30
30
  searchParams.set('runId', runId);
31
31
  const queryString = searchParams.toString();
32
- const endpoint = `/v1/hooks${queryString ? `?${queryString}` : ''}`;
32
+ const endpoint = `/v2/hooks${queryString ? `?${queryString}` : ''}`;
33
33
  const response = (await makeRequest({
34
34
  endpoint,
35
35
  options: { method: 'GET' },
@@ -43,7 +43,7 @@ export async function listHooks(params, config) {
43
43
  }
44
44
  export async function getHook(hookId, params, config) {
45
45
  const resolveData = params?.resolveData || 'all';
46
- const endpoint = `/v1/hooks/${hookId}`;
46
+ const endpoint = `/v2/hooks/${hookId}`;
47
47
  const hook = await makeRequest({
48
48
  endpoint,
49
49
  options: { method: 'GET' },
@@ -54,21 +54,16 @@ export async function getHook(hookId, params, config) {
54
54
  }
55
55
  export async function createHook(runId, data, config) {
56
56
  return makeRequest({
57
- endpoint: `/v1/hooks/create`,
58
- options: {
59
- method: 'POST',
60
- body: JSON.stringify({
61
- runId,
62
- ...data,
63
- }, dateToStringReplacer),
64
- },
57
+ endpoint: `/v2/hooks/create`,
58
+ options: { method: 'POST' },
59
+ data: { runId, ...data },
65
60
  config,
66
61
  schema: HookSchema,
67
62
  });
68
63
  }
69
64
  export async function getHookByToken(token, config) {
70
65
  return makeRequest({
71
- endpoint: `/v1/hooks/by-token?token=${encodeURIComponent(token)}`,
66
+ endpoint: `/v2/hooks/by-token?token=${encodeURIComponent(token)}`,
72
67
  options: {
73
68
  method: 'GET',
74
69
  },
@@ -78,7 +73,7 @@ export async function getHookByToken(token, config) {
78
73
  }
79
74
  export async function disposeHook(hookId, config) {
80
75
  return makeRequest({
81
- endpoint: `/v1/hooks/${hookId}`,
76
+ endpoint: `/v2/hooks/${hookId}`,
82
77
  options: { method: 'DELETE' },
83
78
  config,
84
79
  schema: HookSchema,
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,KAAK,EAGX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,SAAS,EAA0B,MAAM,YAAY,CAAC;AASpE,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAkErD"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,KAAK,EAKX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,SAAS,EAA0B,MAAM,YAAY,CAAC;AA8CpE,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAoIrD"}
package/dist/queue.js CHANGED
@@ -1,58 +1,133 @@
1
- import { handleCallback, send } from '@vercel/queue';
1
+ import { Client, DuplicateMessageError } from '@vercel/queue';
2
2
  import { MessageId, QueuePayloadSchema, ValidQueueName, } from '@workflow/world';
3
3
  import * as z from 'zod';
4
4
  import { getHeaders, getHttpUrl } from './utils.js';
5
5
  const MessageWrapper = z.object({
6
6
  payload: QueuePayloadSchema,
7
7
  queueName: ValidQueueName,
8
+ /**
9
+ * The deployment ID to use when re-enqueueing the message.
10
+ * This ensures the message is processed by the same deployment.
11
+ */
12
+ deploymentId: z.string().optional(),
8
13
  });
9
- const VERCEL_QUEUE_MAX_VISIBILITY = 82800; // 23 hours in seconds
14
+ /**
15
+ * Sleep Implementation via Message Delays
16
+ *
17
+ * VQS v3 supports `delaySeconds` which delays the initial delivery of a message.
18
+ * We use this for implementing sleep() by creating a new message with the delay,
19
+ * rather than using visibility timeouts on the same message.
20
+ *
21
+ * Benefits of this approach:
22
+ * - Fresh 24-hour lifetime with each message (no message age tracking needed)
23
+ * - Messages fire at the scheduled time (no short-circuit + recheck pattern)
24
+ * - Simpler conceptual model: messages are triggers with delivery schedules
25
+ *
26
+ * For sleeps > 24 hours (max delay), we use chaining:
27
+ * 1. Schedule message with max delay (~23h, leaving buffer)
28
+ * 2. When it fires, workflow checks if sleep is complete
29
+ * 3. If not, another delayed message is queued for remaining time
30
+ * 4. Process repeats until the full sleep duration has elapsed
31
+ *
32
+ * The workflow runtime handles this via event sourcing - the `wait_created` event
33
+ * stores the `resumeAt` timestamp, and on each invocation the runtime checks
34
+ * if `now >= resumeAt`. If not, it returns another `timeoutSeconds`.
35
+ *
36
+ * These constants can be overridden via environment variables for testing.
37
+ */
38
+ const MAX_DELAY_SECONDS = Number(process.env.VERCEL_QUEUE_MAX_DELAY_SECONDS || 82800 // 23 hours - leave 1h buffer before 24h retention limit
39
+ );
10
40
  export function createQueue(config) {
11
41
  const { baseUrl, usingProxy } = getHttpUrl(config);
12
- const headers = getHeaders(config);
13
- if (usingProxy) {
14
- // If we're using a proxy for the Workflow API, we should also go
15
- // through the proxy for the queues API.
16
- process.env.VERCEL_QUEUE_BASE_URL = `${baseUrl}`;
17
- process.env.VERCEL_QUEUE_BASE_PATH = '/queues/v2/messages';
18
- if (config?.token) {
19
- process.env.VERCEL_QUEUE_TOKEN = config.token;
42
+ const headers = getHeaders(config, { usingProxy });
43
+ const baseClientOptions = {
44
+ baseUrl: usingProxy ? baseUrl : undefined,
45
+ // The proxy will strip `/queues` from the path, and add `/api` in front,
46
+ // so this ends up being `/api/v3/topic` when arriving at the queue server,
47
+ // which is the same as the default basePath in VQS client.
48
+ basePath: usingProxy ? '/queues/v3/topic' : undefined,
49
+ token: usingProxy ? config?.token : undefined,
50
+ headers: Object.fromEntries(headers.entries()),
51
+ };
52
+ const queue = async (queueName, payload, opts) => {
53
+ // Check if we have a deployment ID either from options or environment
54
+ const deploymentId = opts?.deploymentId ?? process.env.VERCEL_DEPLOYMENT_ID;
55
+ if (!deploymentId) {
56
+ throw new Error('No deploymentId provided and VERCEL_DEPLOYMENT_ID environment variable is not set. ' +
57
+ 'Queue messages require a deployment ID to route correctly. ' +
58
+ 'Either set VERCEL_DEPLOYMENT_ID or provide deploymentId in options.');
20
59
  }
21
- if (headers) {
22
- headers.forEach((value, key) => {
23
- const sanitizedKey = key.replaceAll('-', '__');
24
- process.env[`VERCEL_QUEUE_HEADER_${sanitizedKey}`] = value;
25
- });
60
+ const sendMessageClient = new Client({
61
+ ...baseClientOptions,
62
+ deploymentId,
63
+ });
64
+ // zod v3 doesn't have the `encode` method. We only support zod v4 officially,
65
+ // but codebases that pin zod v3 are still common.
66
+ const hasEncoder = typeof MessageWrapper.encode === 'function';
67
+ if (!hasEncoder) {
68
+ console.warn('Using zod v3 compatibility mode for queue() calls - this may not work as expected');
26
69
  }
27
- }
28
- const queue = async (queueName, x, opts) => {
29
- const encoded = MessageWrapper.encode({
30
- payload: x,
70
+ const encoder = hasEncoder
71
+ ? MessageWrapper.encode
72
+ : (data) => data;
73
+ const encoded = encoder({
74
+ payload,
31
75
  queueName,
76
+ // Store deploymentId in the message so it can be preserved when re-enqueueing
77
+ deploymentId: opts?.deploymentId,
32
78
  });
33
79
  const sanitizedQueueName = queueName.replace(/[^A-Za-z0-9-_]/g, '-');
34
- const { messageId } = await send(sanitizedQueueName, encoded, opts);
35
- return { messageId: MessageId.parse(messageId) };
80
+ try {
81
+ const { messageId } = await sendMessageClient.send(sanitizedQueueName, encoded, {
82
+ idempotencyKey: opts?.idempotencyKey,
83
+ delaySeconds: opts?.delaySeconds,
84
+ });
85
+ return { messageId: MessageId.parse(messageId) };
86
+ }
87
+ catch (error) {
88
+ // Silently handle idempotency key conflicts - the message was already queued
89
+ // This matches the behavior of world-local and world-postgres
90
+ if (error instanceof DuplicateMessageError) {
91
+ // Return a placeholder messageId since the original is not available from the error.
92
+ // Callers using idempotency keys shouldn't depend on the returned messageId.
93
+ // TODO: VQS should return the message ID of the existing message, or we should
94
+ // stop expecting any world to include this
95
+ return {
96
+ messageId: MessageId.parse(`msg_duplicate_${error.idempotencyKey ?? opts?.idempotencyKey ?? 'unknown'}`),
97
+ };
98
+ }
99
+ throw error;
100
+ }
36
101
  };
102
+ const handleCallbackClient = new Client({
103
+ ...baseClientOptions,
104
+ });
37
105
  const createQueueHandler = (prefix, handler) => {
38
- return handleCallback({
106
+ return handleCallbackClient.handleCallback({
39
107
  [`${prefix}*`]: {
40
108
  default: async (body, meta) => {
41
- const { payload, queueName } = MessageWrapper.parse(body);
109
+ const { payload, queueName, deploymentId } = MessageWrapper.parse(body);
42
110
  const result = await handler(payload, {
43
111
  queueName,
44
112
  messageId: MessageId.parse(meta.messageId),
45
113
  attempt: meta.deliveryCount,
46
114
  });
47
115
  if (typeof result?.timeoutSeconds === 'number') {
48
- // For Vercel Queue, enforce the max visibility limit:
49
- // - When a step function throws a `RetryableError`, the retryAfter timestamp is updated and stored on the Step document
50
- const adjustedTimeoutSeconds = Math.min(result.timeoutSeconds, VERCEL_QUEUE_MAX_VISIBILITY);
51
- if (adjustedTimeoutSeconds !== result.timeoutSeconds) {
52
- result.timeoutSeconds = adjustedTimeoutSeconds;
53
- }
116
+ // Use delaySeconds approach: send new message with delay, then delete current
117
+ // Clamp to max delay (23h) - for longer sleeps, the workflow will chain
118
+ // multiple delayed messages until the full sleep duration has elapsed
119
+ const delaySeconds = Math.min(result.timeoutSeconds, MAX_DELAY_SECONDS);
120
+ // Send new message with delay BEFORE acknowledging current message
121
+ // This ensures crash safety: if process dies after send but before ack,
122
+ // we may get a duplicate invocation but won't lose the scheduled wakeup
123
+ await queue(queueName, payload, {
124
+ deploymentId,
125
+ delaySeconds,
126
+ });
127
+ // Acknowledge current message by returning undefined
128
+ return undefined;
54
129
  }
55
- return result;
130
+ return undefined;
56
131
  },
57
132
  },
58
133
  });
package/dist/queue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,SAAS,EAIT,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAkB,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,cAAc;IACzB;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,iBAAiB,GAAG,MAAM,CAC9B,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,KAAK,CAAC,wDAAwD;CAC7G,CAAC;AAQF,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAEnD,MAAM,iBAAiB,GAAG;QACxB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACzC,yEAAyE;QACzE,2EAA2E;QAC3E,2DAA2D;QAC3D,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;QACrD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS;QAC7C,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KAC/C,CAAC;IAEF,MAAM,KAAK,GAAkB,KAAK,EAChC,SAAS,EACT,OAAO,EACP,IAA+C,EAC/C,EAAE;QACF,sEAAsE;QACtE,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,qFAAqF;gBACnF,6DAA6D;gBAC7D,qEAAqE,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC;YACnC,GAAG,iBAAiB;YACpB,YAAY;SACb,CAAC,CAAC;QAEH,8EAA8E;QAC9E,kDAAkD;QAClD,MAAM,UAAU,GAAG,OAAO,cAAc,CAAC,MAAM,KAAK,UAAU,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACV,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,cAAc,CAAC,MAAM;YACvB,CAAC,CAAC,CAAC,IAAoC,EAAE,EAAE,CAAC,IAAI,CAAC;QAEnD,MAAM,OAAO,GAAG,OAAO,CAAC;YACtB,OAAO;YACP,SAAS;YACT,8EAA8E;YAC9E,YAAY,EAAE,IAAI,EAAE,YAAY;SACjC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAChD,kBAAkB,EAClB,OAAO,EACP;gBACE,cAAc,EAAE,IAAI,EAAE,cAAc;gBACpC,YAAY,EAAE,IAAI,EAAE,YAAY;aACjC,CACF,CAAC;YACF,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6EAA6E;YAC7E,8DAA8D;YAC9D,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC3C,qFAAqF;gBACrF,6EAA6E;gBAC7E,+EAA+E;gBAC/E,2CAA2C;gBAC3C,OAAO;oBACL,SAAS,EAAE,SAAS,CAAC,KAAK,CACxB,iBAAiB,KAAK,CAAC,cAAc,IAAI,IAAI,EAAE,cAAc,IAAI,SAAS,EAAE,CAC7E;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC;QACtC,GAAG,iBAAiB;KACrB,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAgC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC1E,OAAO,oBAAoB,CAAC,cAAc,CAAC;YACzC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;gBACd,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;oBAC5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GACxC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;wBACpC,SAAS;wBACT,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC1C,OAAO,EAAE,IAAI,CAAC,aAAa;qBAC5B,CAAC,CAAC;oBAEH,IAAI,OAAO,MAAM,EAAE,cAAc,KAAK,QAAQ,EAAE,CAAC;wBAC/C,8EAA8E;wBAC9E,wEAAwE;wBACxE,sEAAsE;wBACtE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,MAAM,CAAC,cAAc,EACrB,iBAAiB,CAClB,CAAC;wBAEF,mEAAmE;wBACnE,wEAAwE;wBACxE,wEAAwE;wBACxE,MAAM,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE;4BAC9B,YAAY;4BACZ,YAAY;yBACb,CAAC,CAAC;wBAEH,qDAAqD;wBACrD,OAAO,SAAS,CAAC;oBACnB,CAAC;oBAED,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAA6B,KAAK,IAAI,EAAE;QAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC;AACxD,CAAC"}
package/dist/runs.d.ts CHANGED
@@ -1,14 +1,29 @@
1
- import { type CancelWorkflowRunParams, type CreateWorkflowRunRequest, type GetWorkflowRunParams, type ListWorkflowRunsParams, type PaginatedResponse, type PauseWorkflowRunParams, type ResumeWorkflowRunParams, type UpdateWorkflowRunRequest, type WorkflowRun } from '@workflow/world';
1
+ import { type CancelWorkflowRunParams, type CreateWorkflowRunRequest, type GetWorkflowRunParams, type ListWorkflowRunsParams, type PaginatedResponse, type WorkflowRun, type WorkflowRunWithoutData } from '@workflow/world';
2
2
  import type { APIConfig } from './utils.js';
3
3
  /**
4
4
  * This query technically works but should be used sparingly till the backend
5
5
  * uses CH to resolve this instead of scanning a dynamo table.
6
6
  */
7
- export declare function listWorkflowRuns(params?: ListWorkflowRunsParams, config?: APIConfig): Promise<PaginatedResponse<WorkflowRun>>;
8
- export declare function createWorkflowRun(data: CreateWorkflowRunRequest, config?: APIConfig): Promise<WorkflowRun>;
9
- export declare function getWorkflowRun(id: string, params?: GetWorkflowRunParams, config?: APIConfig): Promise<WorkflowRun>;
10
- export declare function updateWorkflowRun(id: string, data: UpdateWorkflowRunRequest, config?: APIConfig): Promise<WorkflowRun>;
11
- export declare function cancelWorkflowRun(id: string, params?: CancelWorkflowRunParams, config?: APIConfig): Promise<WorkflowRun>;
12
- export declare function pauseWorkflowRun(id: string, params?: PauseWorkflowRunParams, config?: APIConfig): Promise<WorkflowRun>;
13
- export declare function resumeWorkflowRun(id: string, params?: ResumeWorkflowRunParams, config?: APIConfig): Promise<WorkflowRun>;
7
+ export declare function listWorkflowRuns(params: ListWorkflowRunsParams & {
8
+ resolveData: 'none';
9
+ }, config?: APIConfig): Promise<PaginatedResponse<WorkflowRunWithoutData>>;
10
+ export declare function listWorkflowRuns(params?: ListWorkflowRunsParams & {
11
+ resolveData?: 'all';
12
+ }, config?: APIConfig): Promise<PaginatedResponse<WorkflowRun>>;
13
+ export declare function listWorkflowRuns(params?: ListWorkflowRunsParams, config?: APIConfig): Promise<PaginatedResponse<WorkflowRun | WorkflowRunWithoutData>>;
14
+ export declare function createWorkflowRunV1(data: CreateWorkflowRunRequest, config?: APIConfig): Promise<WorkflowRun>;
15
+ export declare function getWorkflowRun(id: string, params: GetWorkflowRunParams & {
16
+ resolveData: 'none';
17
+ }, config?: APIConfig): Promise<WorkflowRunWithoutData>;
18
+ export declare function getWorkflowRun(id: string, params?: GetWorkflowRunParams & {
19
+ resolveData?: 'all';
20
+ }, config?: APIConfig): Promise<WorkflowRun>;
21
+ export declare function getWorkflowRun(id: string, params?: GetWorkflowRunParams, config?: APIConfig): Promise<WorkflowRun | WorkflowRunWithoutData>;
22
+ export declare function cancelWorkflowRunV1(id: string, params: CancelWorkflowRunParams & {
23
+ resolveData: 'none';
24
+ }, config?: APIConfig): Promise<WorkflowRunWithoutData>;
25
+ export declare function cancelWorkflowRunV1(id: string, params?: CancelWorkflowRunParams & {
26
+ resolveData?: 'all';
27
+ }, config?: APIConfig): Promise<WorkflowRun>;
28
+ export declare function cancelWorkflowRunV1(id: string, params?: CancelWorkflowRunParams, config?: APIConfig): Promise<WorkflowRun | WorkflowRunWithoutData>;
14
29
  //# sourceMappingURL=runs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAEtB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuD5C;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,GAAE,sBAA2B,EACnC,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAuCzC;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,EAC9B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,wBAAwB,EAC9B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA2BtB"}
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAGtB,KAAK,WAAW,EAEhB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqE5C;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,sBAAsB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EACxD,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACtD,wBAAsB,gBAAgB,CACpC,MAAM,CAAC,EAAE,sBAAsB,GAAG;IAAE,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,EACzD,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3C,wBAAsB,gBAAgB,CACpC,MAAM,CAAC,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,WAAW,GAAG,sBAAsB,CAAC,CAAC,CAAC;AA6CpE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,wBAAwB,EAC9B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAStB;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,oBAAoB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EACtD,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACnC,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,oBAAoB,GAAG;IAAE,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,EACvD,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAAC;AACxB,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,GAAG,sBAAsB,CAAC,CAAC;AAkCjD,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,uBAAuB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EACzD,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACnC,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,uBAAuB,GAAG;IAAE,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,EAC1D,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAAC;AACxB,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,GAAG,sBAAsB,CAAC,CAAC"}