@workflow/world-vercel 4.1.0-beta.34 → 4.1.0-beta.35
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/encryption.d.ts +7 -3
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +13 -5
- package/dist/encryption.js.map +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +148 -8
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +17 -13
- package/dist/queue.js.map +1 -1
- package/dist/refs.d.ts +51 -0
- package/dist/refs.d.ts.map +1 -0
- package/dist/refs.js +131 -0
- package/dist/refs.js.map +1 -0
- package/dist/runs.d.ts.map +1 -1
- package/dist/runs.js +3 -2
- package/dist/runs.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
package/dist/encryption.d.ts
CHANGED
|
@@ -37,12 +37,15 @@ export declare function deriveRunKey(deploymentKey: Uint8Array, projectId: strin
|
|
|
37
37
|
* @param projectId - The project ID for HKDF context isolation
|
|
38
38
|
* @param runId - The workflow run ID for per-run key derivation
|
|
39
39
|
* @param options.token - Auth token (from config). Falls back to OIDC or VERCEL_TOKEN.
|
|
40
|
-
* @returns Derived 32-byte per-run AES-256 key
|
|
40
|
+
* @returns Derived 32-byte per-run AES-256 key, or `undefined` when the
|
|
41
|
+
* deployment has no key (encryption disabled for that run)
|
|
41
42
|
*/
|
|
42
43
|
export declare function fetchRunKey(deploymentId: string, projectId: string, runId: string, options?: {
|
|
43
44
|
/** Auth token (from config). Falls back to OIDC or VERCEL_TOKEN. */
|
|
44
45
|
token?: string;
|
|
45
|
-
|
|
46
|
+
/** Team ID for team-scoped API requests. */
|
|
47
|
+
teamId?: string;
|
|
48
|
+
}): Promise<Uint8Array | undefined>;
|
|
46
49
|
/**
|
|
47
50
|
* Create the `getEncryptionKeyForRun` implementation for a Vercel World.
|
|
48
51
|
*
|
|
@@ -51,8 +54,9 @@ export declare function fetchRunKey(deploymentId: string, projectId: string, run
|
|
|
51
54
|
* - Fetching it from the Vercel API when the run belongs to a different deployment
|
|
52
55
|
*
|
|
53
56
|
* @param projectId - Vercel project ID for HKDF context isolation
|
|
57
|
+
* @param teamId - Optional team ID for team-scoped API requests
|
|
54
58
|
* @param token - Optional auth token from config
|
|
55
59
|
* @returns The `getEncryptionKeyForRun` function, or `undefined` if no projectId
|
|
56
60
|
*/
|
|
57
|
-
export declare function createGetEncryptionKeyForRun(projectId: string | undefined, token?: string): World['getEncryptionKeyForRun'];
|
|
61
|
+
export declare function createGetEncryptionKeyForRun(projectId: string | undefined, teamId?: string, token?: string): World['getEncryptionKeyForRun'];
|
|
58
62
|
//# sourceMappingURL=encryption.d.ts.map
|
package/dist/encryption.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../src/encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAK1D;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAmCrB;AAED
|
|
1
|
+
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../src/encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAK1D;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAmCrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAyCjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,KAAK,CAAC,wBAAwB,CAAC,CAyCjC"}
|
package/dist/encryption.js
CHANGED
|
@@ -60,7 +60,8 @@ export async function deriveRunKey(deploymentKey, projectId, runId) {
|
|
|
60
60
|
* @param projectId - The project ID for HKDF context isolation
|
|
61
61
|
* @param runId - The workflow run ID for per-run key derivation
|
|
62
62
|
* @param options.token - Auth token (from config). Falls back to OIDC or VERCEL_TOKEN.
|
|
63
|
-
* @returns Derived 32-byte per-run AES-256 key
|
|
63
|
+
* @returns Derived 32-byte per-run AES-256 key, or `undefined` when the
|
|
64
|
+
* deployment has no key (encryption disabled for that run)
|
|
64
65
|
*/
|
|
65
66
|
export async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
66
67
|
// Authenticate via provided token (CLI/config), OIDC token (runtime),
|
|
@@ -71,6 +72,9 @@ export async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
71
72
|
throw new Error('Cannot fetch run key: no OIDC token or VERCEL_TOKEN available');
|
|
72
73
|
}
|
|
73
74
|
const params = new URLSearchParams({ projectId, runId });
|
|
75
|
+
if (options?.teamId) {
|
|
76
|
+
params.set('teamId', options.teamId);
|
|
77
|
+
}
|
|
74
78
|
const response = await fetch(`https://api.vercel.com/v1/workflow/run-key/${deploymentId}?${params}`, {
|
|
75
79
|
headers: {
|
|
76
80
|
Authorization: `Bearer ${token}`,
|
|
@@ -80,9 +84,12 @@ export async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
80
84
|
throw new Error(`Failed to fetch run key for ${runId} (deployment ${deploymentId}): HTTP ${response.status}`);
|
|
81
85
|
}
|
|
82
86
|
const data = await response.json();
|
|
83
|
-
const result = z.object({ key: z.string() }).safeParse(data);
|
|
87
|
+
const result = z.object({ key: z.string().nullable() }).safeParse(data);
|
|
84
88
|
if (!result.success) {
|
|
85
|
-
throw new Error(
|
|
89
|
+
throw new Error(`Invalid response from Vercel API: expected { key: string | null }. Zod error: ${result.error.message}`);
|
|
90
|
+
}
|
|
91
|
+
if (result.data.key === null) {
|
|
92
|
+
return undefined;
|
|
86
93
|
}
|
|
87
94
|
return Buffer.from(result.data.key, 'base64');
|
|
88
95
|
}
|
|
@@ -94,10 +101,11 @@ export async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
94
101
|
* - Fetching it from the Vercel API when the run belongs to a different deployment
|
|
95
102
|
*
|
|
96
103
|
* @param projectId - Vercel project ID for HKDF context isolation
|
|
104
|
+
* @param teamId - Optional team ID for team-scoped API requests
|
|
97
105
|
* @param token - Optional auth token from config
|
|
98
106
|
* @returns The `getEncryptionKeyForRun` function, or `undefined` if no projectId
|
|
99
107
|
*/
|
|
100
|
-
export function createGetEncryptionKeyForRun(projectId, token) {
|
|
108
|
+
export function createGetEncryptionKeyForRun(projectId, teamId, token) {
|
|
101
109
|
if (!projectId)
|
|
102
110
|
return undefined;
|
|
103
111
|
const currentDeploymentId = process.env.VERCEL_DEPLOYMENT_ID;
|
|
@@ -131,7 +139,7 @@ export function createGetEncryptionKeyForRun(projectId, token) {
|
|
|
131
139
|
// raw deployment key never leaves the API boundary.
|
|
132
140
|
// Covers cross-deployment resumeHook() (OIDC auth) and o11y
|
|
133
141
|
// tooling reading data from other deployments (VERCEL_TOKEN).
|
|
134
|
-
return fetchRunKey(deploymentId, projectId, runId, { token });
|
|
142
|
+
return fetchRunKey(deploymentId, projectId, runId, { token, teamId });
|
|
135
143
|
};
|
|
136
144
|
}
|
|
137
145
|
//# sourceMappingURL=encryption.js.map
|
package/dist/encryption.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../src/encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,gCAAgC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAyB,EACzB,SAAiB,EACjB,KAAa;IAEb,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,2CAA2C,SAAS,2BAA2B,aAAa,CAAC,MAAM,QAAQ,CAC5G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,CAC9C,KAAK,EACL,aAAa,EACb,MAAM,EACN,KAAK,EACL,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;IAE/D,sEAAsE;IACtE,6EAA6E;IAC7E,4DAA4D;IAC5D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,UAAU,CACnD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI;KACL,EACD,OAAO,EACP,SAAS,GAAG,CAAC,CAAC,OAAO;KACtB,CAAC;IAEF,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../src/encryption.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAWzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAsM5C,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,GAAG,+BAA+B,EAC1D,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAyEnC;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,CA6CtB"}
|
package/dist/events.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { EventSchema, EventTypeSchema, HookSchema, PaginatedResponseSchema, WorkflowRunSchema, } from '@workflow/world';
|
|
2
2
|
import z from 'zod';
|
|
3
|
+
import { isRefDescriptor, resolveRefDescriptors, } from './refs.js';
|
|
3
4
|
import { cancelWorkflowRunV1, createWorkflowRunV1 } from './runs.js';
|
|
4
5
|
import { deserializeStep, StepWireSchema } from './steps.js';
|
|
6
|
+
import { trace } from './telemetry.js';
|
|
5
7
|
import { DEFAULT_RESOLVE_DATA_OPTION, makeRequest } from './utils.js';
|
|
6
|
-
// Helper to filter event data based on resolveData setting
|
|
8
|
+
// Helper to filter event data based on resolveData setting.
|
|
9
|
+
// Strips both eventData and eventDataRef since the server always returns
|
|
10
|
+
// lazy refs now, and callers with resolveData='none' should not see either.
|
|
7
11
|
function filterEventData(event, resolveData) {
|
|
8
12
|
if (resolveData === 'none') {
|
|
9
|
-
const { eventData: _eventData, ...rest } = event;
|
|
13
|
+
const { eventData: _eventData, eventDataRef: _eventDataRef, ...rest } = event;
|
|
10
14
|
return rest;
|
|
11
15
|
}
|
|
12
16
|
return event;
|
|
@@ -19,18 +23,34 @@ const EventResultWireSchema = z.object({
|
|
|
19
23
|
step: StepWireSchema.optional(),
|
|
20
24
|
hook: HookSchema.optional(),
|
|
21
25
|
});
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
// specVersion
|
|
26
|
+
// Schema for events returned with `remoteRefBehavior=lazy`.
|
|
27
|
+
// Includes both `eventDataRef` (legacy, specVersion=1) and `eventData`
|
|
28
|
+
// (v2, specVersion=2 — may contain nested RefDescriptor values).
|
|
29
|
+
// specVersion defaults to 1 (legacy) when parsing responses from storage.
|
|
25
30
|
const EventWithRefsSchema = z.object({
|
|
26
31
|
eventId: z.string(),
|
|
27
32
|
runId: z.string(),
|
|
28
33
|
eventType: EventTypeSchema,
|
|
29
34
|
correlationId: z.string().optional(),
|
|
30
35
|
eventDataRef: z.any().optional(),
|
|
36
|
+
eventData: z.any().optional(),
|
|
31
37
|
createdAt: z.coerce.date(),
|
|
32
38
|
specVersion: z.number().default(1),
|
|
33
39
|
});
|
|
40
|
+
/**
|
|
41
|
+
* Maps event types to the field name within `eventData` that may contain
|
|
42
|
+
* a ref descriptor. Mirrors the server-side `resolveEventDataRefs()` mapping.
|
|
43
|
+
*/
|
|
44
|
+
const eventDataRefFieldMap = {
|
|
45
|
+
run_created: 'input',
|
|
46
|
+
run_completed: 'output',
|
|
47
|
+
run_failed: 'error',
|
|
48
|
+
step_created: 'input',
|
|
49
|
+
step_completed: 'result',
|
|
50
|
+
step_failed: 'error',
|
|
51
|
+
step_retrying: 'error',
|
|
52
|
+
hook_created: 'metadata',
|
|
53
|
+
};
|
|
34
54
|
// Events where the client uses the response entity data need 'resolve' (default).
|
|
35
55
|
// Events where the client discards the response can use 'lazy' to skip expensive
|
|
36
56
|
// S3 ref resolution on the server, saving ~200-460ms per event.
|
|
@@ -39,6 +59,101 @@ const eventsNeedingResolve = new Set([
|
|
|
39
59
|
'run_started', // client reads result.run (checks startedAt, status)
|
|
40
60
|
'step_started', // client reads result.step (checks attempt, state)
|
|
41
61
|
]);
|
|
62
|
+
function collectPendingRefs(events) {
|
|
63
|
+
const pending = [];
|
|
64
|
+
for (let i = 0; i < events.length; i++) {
|
|
65
|
+
const event = events[i];
|
|
66
|
+
// Legacy events (specVersion=1): eventDataRef is a RefDescriptor
|
|
67
|
+
if (event.eventDataRef && isRefDescriptor(event.eventDataRef)) {
|
|
68
|
+
pending.push({
|
|
69
|
+
eventIndex: i,
|
|
70
|
+
refType: 'entity',
|
|
71
|
+
descriptor: event.eventDataRef,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// V2 events: eventData may contain a nested RefDescriptor
|
|
75
|
+
if (event.eventData && typeof event.eventData === 'object') {
|
|
76
|
+
const fieldName = eventDataRefFieldMap[event.eventType];
|
|
77
|
+
if (fieldName) {
|
|
78
|
+
const fieldValue = event.eventData[fieldName];
|
|
79
|
+
if (isRefDescriptor(fieldValue)) {
|
|
80
|
+
pending.push({
|
|
81
|
+
eventIndex: i,
|
|
82
|
+
refType: 'nested',
|
|
83
|
+
fieldName,
|
|
84
|
+
descriptor: fieldValue,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return pending;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Hydrate lazy-loaded events by resolving all ref descriptors client-side.
|
|
94
|
+
* For entity-level refs (eventDataRef), the resolved value becomes eventData.
|
|
95
|
+
* For nested refs (eventData[field]), the resolved value replaces the descriptor.
|
|
96
|
+
*
|
|
97
|
+
* Events are shallow-cloned before mutation to avoid corrupting any upstream
|
|
98
|
+
* caches (SWR, React cache, etc.) that might hold references to the originals.
|
|
99
|
+
*/
|
|
100
|
+
async function hydrateEventRefs(events, config) {
|
|
101
|
+
const pending = collectPendingRefs(events);
|
|
102
|
+
if (pending.length === 0)
|
|
103
|
+
return events;
|
|
104
|
+
return trace('world.refs.hydrate', async (span) => {
|
|
105
|
+
span?.setAttribute('workflow.refs.hydrated_count', pending.length);
|
|
106
|
+
// Deduplicate descriptors by _ref key to avoid redundant resolutions.
|
|
107
|
+
// Multiple events may reference the same ref (e.g., shared input).
|
|
108
|
+
const uniqueRefs = new Map();
|
|
109
|
+
for (const p of pending) {
|
|
110
|
+
if (!uniqueRefs.has(p.descriptor._ref)) {
|
|
111
|
+
const eventRunId = events[p.eventIndex].runId;
|
|
112
|
+
uniqueRefs.set(p.descriptor._ref, {
|
|
113
|
+
descriptor: p.descriptor,
|
|
114
|
+
runId: eventRunId,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const deduped = Array.from(uniqueRefs.values());
|
|
119
|
+
// Resolve unique descriptors in parallel with bounded concurrency
|
|
120
|
+
const dedupedResults = await resolveRefDescriptors(deduped, config).catch((err) => {
|
|
121
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
122
|
+
throw new Error(`Failed to hydrate ${pending.length} ref(s) across ${events.length} event(s): ${msg}`);
|
|
123
|
+
});
|
|
124
|
+
// Build a map from ref key → resolved value for fast lookup
|
|
125
|
+
const resolvedMap = new Map();
|
|
126
|
+
const dedupedKeys = Array.from(uniqueRefs.keys());
|
|
127
|
+
for (let i = 0; i < dedupedKeys.length; i++) {
|
|
128
|
+
resolvedMap.set(dedupedKeys[i], dedupedResults[i]);
|
|
129
|
+
}
|
|
130
|
+
// Shallow-clone events that need modification, then apply resolved values
|
|
131
|
+
const result = [...events];
|
|
132
|
+
for (let i = 0; i < pending.length; i++) {
|
|
133
|
+
const { eventIndex, refType, fieldName, descriptor } = pending[i];
|
|
134
|
+
const resolved = resolvedMap.get(descriptor._ref);
|
|
135
|
+
// Shallow-clone the event (and eventData if nested) before mutating
|
|
136
|
+
if (result[eventIndex] === events[eventIndex]) {
|
|
137
|
+
result[eventIndex] = { ...events[eventIndex] };
|
|
138
|
+
}
|
|
139
|
+
const event = result[eventIndex];
|
|
140
|
+
if (refType === 'entity') {
|
|
141
|
+
// Legacy: eventDataRef → eventData, remove the ref field
|
|
142
|
+
event.eventData = resolved;
|
|
143
|
+
delete event.eventDataRef;
|
|
144
|
+
}
|
|
145
|
+
else if (refType === 'nested' && fieldName) {
|
|
146
|
+
// Shallow-clone eventData before mutating if not yet cloned
|
|
147
|
+
if (event.eventData === events[eventIndex].eventData) {
|
|
148
|
+
event.eventData = { ...event.eventData };
|
|
149
|
+
}
|
|
150
|
+
// V2: replace the nested ref descriptor with resolved value
|
|
151
|
+
event.eventData[fieldName] = resolved;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
42
157
|
// Functions
|
|
43
158
|
export async function getWorkflowRunEvents(params, config) {
|
|
44
159
|
const searchParams = new URLSearchParams();
|
|
@@ -62,8 +177,10 @@ export async function getWorkflowRunEvents(params, config) {
|
|
|
62
177
|
searchParams.set('sortOrder', pagination.sortOrder);
|
|
63
178
|
if (correlationId)
|
|
64
179
|
searchParams.set('correlationId', correlationId);
|
|
65
|
-
|
|
66
|
-
|
|
180
|
+
// Always send 'lazy' to the server to avoid memory pressure from resolving
|
|
181
|
+
// all refs in memory. When resolveData is 'all', we hydrate refs client-side
|
|
182
|
+
// via individual ref resolution requests.
|
|
183
|
+
searchParams.set('remoteRefBehavior', 'lazy');
|
|
67
184
|
const queryString = searchParams.toString();
|
|
68
185
|
const query = queryString ? `?${queryString}` : '';
|
|
69
186
|
const endpoint = correlationId
|
|
@@ -73,8 +190,31 @@ export async function getWorkflowRunEvents(params, config) {
|
|
|
73
190
|
endpoint,
|
|
74
191
|
options: { method: 'GET' },
|
|
75
192
|
config,
|
|
76
|
-
schema: PaginatedResponseSchema(
|
|
193
|
+
schema: PaginatedResponseSchema(EventWithRefsSchema),
|
|
77
194
|
}));
|
|
195
|
+
if (resolveData === 'all') {
|
|
196
|
+
// Hydrate refs client-side: resolve all ref descriptors in parallel
|
|
197
|
+
const hydratedEvents = await hydrateEventRefs(response.data, config);
|
|
198
|
+
// Re-parse hydrated events through EventSchema to apply type coercions
|
|
199
|
+
// (e.g., z.coerce.date() for resumeAt) that EventWithRefsSchema skips.
|
|
200
|
+
// Use safeParse to gracefully handle any events that don't match a known
|
|
201
|
+
// type — pass them through as-is rather than failing the entire request.
|
|
202
|
+
let coercionFailures = 0;
|
|
203
|
+
const validatedEvents = hydratedEvents.map((event) => {
|
|
204
|
+
const result = EventSchema.safeParse(event);
|
|
205
|
+
if (!result.success)
|
|
206
|
+
coercionFailures++;
|
|
207
|
+
return result.success ? result.data : event;
|
|
208
|
+
});
|
|
209
|
+
if (coercionFailures > 0) {
|
|
210
|
+
console.warn(`[world-vercel] EventSchema coercion failed for ${coercionFailures}/${hydratedEvents.length} events`);
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
...response,
|
|
214
|
+
data: validatedEvents,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
// resolveData === 'none': strip eventData and eventDataRef
|
|
78
218
|
return {
|
|
79
219
|
...response,
|
|
80
220
|
data: response.data.map((event) => filterEventData(event, resolveData)),
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,WAAW,EACX,eAAe,EACf,UAAU,EAIV,uBAAuB,EAEvB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAK7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAK7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAgB3D"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ export function createVercelWorld(config) {
|
|
|
14
14
|
...createQueue(config),
|
|
15
15
|
...createStorage(config),
|
|
16
16
|
...createStreamer(config),
|
|
17
|
-
getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, config?.token),
|
|
17
|
+
getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, config?.projectConfig?.teamId, config?.token),
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,8CAA8C;IAC9C,qFAAqF;IACrF,MAAM,SAAS,GACb,MAAM,EAAE,aAAa,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAEpE,OAAO;QACL,GAAG,WAAW,CAAC,MAAM,CAAC;QACtB,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,sBAAsB,EAAE,4BAA4B,CAClD,SAAS,EACT,MAAM,EAAE,KAAK,CACd;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EACL,4BAA4B,EAC5B,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,8CAA8C;IAC9C,qFAAqF;IACrF,MAAM,SAAS,GACb,MAAM,EAAE,aAAa,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAEpE,OAAO;QACL,GAAG,WAAW,CAAC,MAAM,CAAC;QACtB,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,sBAAsB,EAAE,4BAA4B,CAClD,SAAS,EACT,MAAM,EAAE,aAAa,EAAE,MAAM,EAC7B,MAAM,EAAE,KAAK,CACd;KACF,CAAC;AACJ,CAAC"}
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"
|
|
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;AAoEpE,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAgIrD"}
|
package/dist/queue.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { QueueClient, DuplicateMessageError } from '@vercel/queue';
|
|
2
|
-
import { handleCallback } from '@vercel/queue/web';
|
|
3
2
|
import { MessageId, QueuePayloadSchema, ValidQueueName, } from '@workflow/world';
|
|
4
3
|
import * as z from 'zod';
|
|
5
4
|
import { getHeaders, getHttpUrl } from './utils.js';
|
|
@@ -58,13 +57,15 @@ function getHeadersFromPayload(payload) {
|
|
|
58
57
|
export function createQueue(config) {
|
|
59
58
|
const { baseUrl, usingProxy } = getHttpUrl(config);
|
|
60
59
|
const headers = getHeaders(config, { usingProxy });
|
|
60
|
+
const region = 'iad1';
|
|
61
61
|
const clientOptions = {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
region,
|
|
63
|
+
...(usingProxy && {
|
|
64
|
+
// final path will be /queues-proxy/api/v3/topic/...
|
|
65
|
+
// and the proxy will strip the /queues-proxy prefix before forwarding to VQS
|
|
66
|
+
resolveBaseUrl: () => new URL(`${baseUrl}/queues-proxy`),
|
|
67
|
+
token: config?.token,
|
|
68
|
+
}),
|
|
68
69
|
headers: Object.fromEntries(headers.entries()),
|
|
69
70
|
};
|
|
70
71
|
const queue = async (queueName, payload, opts) => {
|
|
@@ -96,9 +97,7 @@ export function createQueue(config) {
|
|
|
96
97
|
});
|
|
97
98
|
const sanitizedQueueName = queueName.replace(/[^A-Za-z0-9-_]/g, '-');
|
|
98
99
|
try {
|
|
99
|
-
const { messageId } = await client.
|
|
100
|
-
queueName: sanitizedQueueName,
|
|
101
|
-
payload: encoded,
|
|
100
|
+
const { messageId } = await client.send(sanitizedQueueName, encoded, {
|
|
102
101
|
idempotencyKey: opts?.idempotencyKey,
|
|
103
102
|
delaySeconds: opts?.delaySeconds,
|
|
104
103
|
headers: {
|
|
@@ -106,7 +105,11 @@ export function createQueue(config) {
|
|
|
106
105
|
...opts?.headers,
|
|
107
106
|
},
|
|
108
107
|
});
|
|
109
|
-
return {
|
|
108
|
+
return {
|
|
109
|
+
// messageId may be null when VQS fails over to a different region —
|
|
110
|
+
// the event is ingested but the responding region cannot return an ID.
|
|
111
|
+
messageId: messageId ? MessageId.parse(messageId) : null,
|
|
112
|
+
};
|
|
110
113
|
}
|
|
111
114
|
catch (error) {
|
|
112
115
|
// Silently handle idempotency key conflicts - the message was already queued.
|
|
@@ -122,7 +125,8 @@ export function createQueue(config) {
|
|
|
122
125
|
}
|
|
123
126
|
};
|
|
124
127
|
const createQueueHandler = (_prefix, handler) => {
|
|
125
|
-
|
|
128
|
+
const client = new QueueClient(clientOptions);
|
|
129
|
+
return client.handleCallback(async (message, metadata) => {
|
|
126
130
|
if (!message || !metadata) {
|
|
127
131
|
return;
|
|
128
132
|
}
|
|
@@ -142,7 +146,7 @@ export function createQueue(config) {
|
|
|
142
146
|
// we may get a duplicate invocation but won't lose the scheduled wakeup.
|
|
143
147
|
await queue(queueName, payload, { deploymentId, delaySeconds });
|
|
144
148
|
}
|
|
145
|
-
}
|
|
149
|
+
});
|
|
146
150
|
};
|
|
147
151
|
const getDeploymentId = async () => {
|
|
148
152
|
const deploymentId = process.env.VERCEL_DEPLOYMENT_ID;
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/refs.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type APIConfig } from './utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* A ref descriptor as returned by workflow-server when `remoteRefBehavior=lazy`.
|
|
4
|
+
* Matches the server-side `RefDescriptor` type in `lib/data/remote-ref.ts`.
|
|
5
|
+
*/
|
|
6
|
+
export interface RefDescriptor {
|
|
7
|
+
_type: 'RemoteRef';
|
|
8
|
+
_ref: string;
|
|
9
|
+
/** Base64-encoded inline payload. Present only for dbrf: (inline) refs. */
|
|
10
|
+
_data?: string;
|
|
11
|
+
/** Content type of the inline payload. Present only for dbrf: refs. */
|
|
12
|
+
_ct?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks if a value is a RefDescriptor object.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isRefDescriptor(value: unknown): value is RefDescriptor;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a single ref descriptor.
|
|
20
|
+
*
|
|
21
|
+
* For inline refs (dbrf: prefix), the data is decoded locally from the
|
|
22
|
+
* descriptor's `_data` field — no network request is needed.
|
|
23
|
+
*
|
|
24
|
+
* For S3 refs (s3rf:) and Redis refs (kvrf:), a request is made to the
|
|
25
|
+
* `GET /v2/runs/:runId/refs` endpoint on workflow-server which returns
|
|
26
|
+
* raw CBOR or binary bytes.
|
|
27
|
+
*
|
|
28
|
+
* @param descriptor - The ref descriptor to resolve
|
|
29
|
+
* @param runId - The runId that owns this ref (used in the URL path)
|
|
30
|
+
* @param config - API configuration
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveRefDescriptor(descriptor: RefDescriptor, runId: string, config?: APIConfig): Promise<unknown>;
|
|
33
|
+
/**
|
|
34
|
+
* A ref descriptor paired with the runId that owns it, for resolution.
|
|
35
|
+
*/
|
|
36
|
+
export interface RefWithRunId {
|
|
37
|
+
descriptor: RefDescriptor;
|
|
38
|
+
runId: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve multiple ref descriptors in parallel with bounded concurrency.
|
|
42
|
+
*
|
|
43
|
+
* If any ref in a batch fails, the batch rejects and remaining batches
|
|
44
|
+
* are aborted to avoid cascading failures.
|
|
45
|
+
*
|
|
46
|
+
* @param refs - Array of ref descriptors with their owning runIds
|
|
47
|
+
* @param config - API configuration
|
|
48
|
+
* @returns Array of resolved values in the same order as input
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveRefDescriptors(refs: RefWithRunId[], config?: APIConfig): Promise<unknown[]>;
|
|
51
|
+
//# sourceMappingURL=refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAStE;AAQD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,OAAO,CAAC,CA2ElB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,YAAY,EAAE,EACpB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,OAAO,EAAE,CAAC,CAsCpB"}
|
package/dist/refs.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { WorkflowAPIError } from '@workflow/errors';
|
|
2
|
+
import { decode } from 'cbor-x';
|
|
3
|
+
import { ErrorType, getSpanKind, HttpRequestMethod, HttpResponseStatusCode, PeerService, trace, UrlFull, } from './telemetry.js';
|
|
4
|
+
import { getHttpConfig } from './utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Checks if a value is a RefDescriptor object.
|
|
7
|
+
*/
|
|
8
|
+
export function isRefDescriptor(value) {
|
|
9
|
+
return (typeof value === 'object' &&
|
|
10
|
+
value !== null &&
|
|
11
|
+
'_type' in value &&
|
|
12
|
+
'_ref' in value &&
|
|
13
|
+
typeof value._ref === 'string' &&
|
|
14
|
+
value._type === 'RemoteRef');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Maximum number of concurrent ref resolution requests.
|
|
18
|
+
* Limits peak concurrency to avoid overwhelming the server.
|
|
19
|
+
*/
|
|
20
|
+
const REF_RESOLVE_CONCURRENCY = 10;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a single ref descriptor.
|
|
23
|
+
*
|
|
24
|
+
* For inline refs (dbrf: prefix), the data is decoded locally from the
|
|
25
|
+
* descriptor's `_data` field — no network request is needed.
|
|
26
|
+
*
|
|
27
|
+
* For S3 refs (s3rf:) and Redis refs (kvrf:), a request is made to the
|
|
28
|
+
* `GET /v2/runs/:runId/refs` endpoint on workflow-server which returns
|
|
29
|
+
* raw CBOR or binary bytes.
|
|
30
|
+
*
|
|
31
|
+
* @param descriptor - The ref descriptor to resolve
|
|
32
|
+
* @param runId - The runId that owns this ref (used in the URL path)
|
|
33
|
+
* @param config - API configuration
|
|
34
|
+
*/
|
|
35
|
+
export async function resolveRefDescriptor(descriptor, runId, config) {
|
|
36
|
+
const ref = descriptor._ref;
|
|
37
|
+
// Inline refs (dbrf:) carry their data in the descriptor — decode locally
|
|
38
|
+
if (ref.startsWith('dbrf:')) {
|
|
39
|
+
if (!descriptor._data) {
|
|
40
|
+
throw new Error(`Inline ref descriptor missing _data field: ${ref}`);
|
|
41
|
+
}
|
|
42
|
+
const contentType = descriptor._ct ?? 'application/cbor';
|
|
43
|
+
const binaryData = Buffer.from(descriptor._data, 'base64');
|
|
44
|
+
if (contentType === 'application/octet-stream') {
|
|
45
|
+
// Buffer is a Uint8Array subclass — return directly to avoid a copy.
|
|
46
|
+
return binaryData;
|
|
47
|
+
}
|
|
48
|
+
// CBOR-encoded data — decode it. Buffer is accepted by cbor-x directly.
|
|
49
|
+
return decode(binaryData);
|
|
50
|
+
}
|
|
51
|
+
// Remote refs (s3rf:, kvrf:) — fetch raw bytes from the server.
|
|
52
|
+
// The server returns the raw stored bytes directly (not wrapped in a
|
|
53
|
+
// JSON/CBOR envelope). The Content-Type may be 'application/cbor' (for
|
|
54
|
+
// CBOR-encoded data) or 'application/octet-stream' (for raw binary like
|
|
55
|
+
// Uint8Array). We handle both content types directly rather than going
|
|
56
|
+
// through makeRequest, which only handles JSON/CBOR API responses.
|
|
57
|
+
const { baseUrl, headers } = await getHttpConfig(config);
|
|
58
|
+
const endpoint = `/v2/runs/${encodeURIComponent(runId)}/refs?ref=${encodeURIComponent(ref)}`;
|
|
59
|
+
const url = `${baseUrl}${endpoint}`;
|
|
60
|
+
// Set headers that makeRequest normally adds: Accept for content
|
|
61
|
+
// negotiation and X-Request-Time to bypass RSC request memoization.
|
|
62
|
+
headers.set('Accept', 'application/cbor, application/octet-stream');
|
|
63
|
+
headers.set('X-Request-Time', Date.now().toString());
|
|
64
|
+
return trace('http GET', { kind: await getSpanKind('CLIENT') }, async (span) => {
|
|
65
|
+
span?.setAttributes({
|
|
66
|
+
...HttpRequestMethod('GET'),
|
|
67
|
+
...UrlFull(url),
|
|
68
|
+
...PeerService('workflow-server'),
|
|
69
|
+
});
|
|
70
|
+
const response = await fetch(new Request(url, { method: 'GET', headers }));
|
|
71
|
+
span?.setAttributes({
|
|
72
|
+
...HttpResponseStatusCode(response.status),
|
|
73
|
+
});
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
const error = new WorkflowAPIError(`Failed to resolve ref: HTTP ${response.status} ${response.statusText}`, { url, status: response.status });
|
|
76
|
+
span?.setAttributes({
|
|
77
|
+
...ErrorType(`HTTP ${response.status}`),
|
|
78
|
+
});
|
|
79
|
+
span?.recordException?.(error);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
const contentType = response.headers.get('Content-Type') || '';
|
|
83
|
+
const buffer = await response.arrayBuffer();
|
|
84
|
+
if (contentType.includes('application/octet-stream')) {
|
|
85
|
+
// Raw binary data (e.g., Uint8Array stored by the workflow)
|
|
86
|
+
return new Uint8Array(buffer);
|
|
87
|
+
}
|
|
88
|
+
// CBOR-encoded data (the common case for structured values)
|
|
89
|
+
return decode(new Uint8Array(buffer));
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolve multiple ref descriptors in parallel with bounded concurrency.
|
|
94
|
+
*
|
|
95
|
+
* If any ref in a batch fails, the batch rejects and remaining batches
|
|
96
|
+
* are aborted to avoid cascading failures.
|
|
97
|
+
*
|
|
98
|
+
* @param refs - Array of ref descriptors with their owning runIds
|
|
99
|
+
* @param config - API configuration
|
|
100
|
+
* @returns Array of resolved values in the same order as input
|
|
101
|
+
*/
|
|
102
|
+
export async function resolveRefDescriptors(refs, config) {
|
|
103
|
+
if (refs.length === 0)
|
|
104
|
+
return [];
|
|
105
|
+
return trace('world.refs.resolve', async (span) => {
|
|
106
|
+
const inlineCount = refs.filter((r) => r.descriptor._ref.startsWith('dbrf:')).length;
|
|
107
|
+
const remoteCount = refs.length - inlineCount;
|
|
108
|
+
span?.setAttributes({
|
|
109
|
+
'workflow.refs.total_count': refs.length,
|
|
110
|
+
'workflow.refs.inline_count': inlineCount,
|
|
111
|
+
'workflow.refs.remote_count': remoteCount,
|
|
112
|
+
});
|
|
113
|
+
// Simple case: if under concurrency limit, resolve all at once
|
|
114
|
+
if (refs.length <= REF_RESOLVE_CONCURRENCY) {
|
|
115
|
+
return Promise.all(refs.map((r) => resolveRefDescriptor(r.descriptor, r.runId, config)));
|
|
116
|
+
}
|
|
117
|
+
// Batch with bounded concurrency. If any ref in a batch fails,
|
|
118
|
+
// the batch rejects and remaining batches are aborted to avoid
|
|
119
|
+
// cascading failures.
|
|
120
|
+
const results = new Array(refs.length);
|
|
121
|
+
for (let i = 0; i < refs.length; i += REF_RESOLVE_CONCURRENCY) {
|
|
122
|
+
const batch = refs.slice(i, i + REF_RESOLVE_CONCURRENCY);
|
|
123
|
+
const batchResults = await Promise.all(batch.map((r) => resolveRefDescriptor(r.descriptor, r.runId, config)));
|
|
124
|
+
for (let j = 0; j < batchResults.length; j++) {
|
|
125
|
+
results[i + j] = batchResults[j];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return results;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=refs.js.map
|
package/dist/refs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"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"}
|
package/dist/runs.d.ts.map
CHANGED
|
@@ -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,EAGtB,KAAK,WAAW,EAEhB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
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;AAsE5C;;;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"}
|
package/dist/runs.js
CHANGED
|
@@ -16,6 +16,9 @@ const WorkflowRunWireBaseSchema = WorkflowRunBaseSchema.omit({
|
|
|
16
16
|
}).extend({
|
|
17
17
|
// Backend returns error as either a JSON string or structured object
|
|
18
18
|
error: z.union([z.string(), StructuredErrorSchema]).optional(),
|
|
19
|
+
// Not part of the World interface, but passed through for direct consumers and debugging
|
|
20
|
+
blobStorageBytes: z.number().optional(),
|
|
21
|
+
streamStorageBytes: z.number().optional(),
|
|
19
22
|
});
|
|
20
23
|
// Wire schema for resolved data (full input/output)
|
|
21
24
|
const WorkflowRunWireSchema = WorkflowRunWireBaseSchema;
|
|
@@ -31,8 +34,6 @@ const WorkflowRunWireWithRefsSchema = WorkflowRunWireBaseSchema.omit({
|
|
|
31
34
|
// Accept both Uint8Array (v2 format) and any (legacy v1 JSON format)
|
|
32
35
|
input: z.union([z.instanceof(Uint8Array), z.any()]).optional(),
|
|
33
36
|
output: z.union([z.instanceof(Uint8Array), z.any()]).optional(),
|
|
34
|
-
blobStorageBytes: z.number().optional(),
|
|
35
|
-
streamStorageBytes: z.number().optional(),
|
|
36
37
|
});
|
|
37
38
|
// Implementation
|
|
38
39
|
function filterRunData(run, resolveData) {
|
package/dist/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAML,uBAAuB,EACvB,qBAAqB,EAErB,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAC3D,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC,MAAM,CAAC;IACR,qEAAqE;IACrE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAML,uBAAuB,EACvB,qBAAqB,EAErB,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,IAAI,CAAC;IAC3D,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC,MAAM,CAAC;IACR,qEAAqE;IACrE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9D,yFAAyF;IACzF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH,oDAAoD;AACpD,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAExD,sDAAsD;AACtD,8DAA8D;AAC9D,MAAM,6BAA6B,GAAG,yBAAyB,CAAC,IAAI,CAAC;IACnE,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;CACb,CAAC,CAAC,MAAM,CAAC;IACR,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7B,qEAAqE;IACrE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC;AAUH,iBAAiB;AACjB,SAAS,aAAa,CACpB,GAAQ,EACR,WAA2B;IAE3B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QACpE,MAAM,YAAY,GAAG,gBAAgB,CAAc,IAAI,CAAC,CAAC;QACzD,OAAO;YACL,GAAG,YAAY;YACf,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SACQ,CAAC;IAC9B,CAAC;IACD,OAAO,gBAAgB,CAAc,GAAG,CAAC,CAAC;AAC5C,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiC,EAAE,EACnC,MAAkB;IAElB,MAAM,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,WAAW,GAAG,2BAA2B,GAC1C,GAAG,MAAM,CAAC;IAEX,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAE3C,IAAI,YAAY;QAAE,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACjE,IAAI,MAAM;QAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,UAAU,EAAE,KAAK;QAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,IAAI,UAAU,EAAE,MAAM;QAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,UAAU,EAAE,SAAS;QACvB,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtD,gDAAgD;IAChD,MAAM,iBAAiB,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEnE,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CAAC;QAClC,QAAQ;QACR,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1B,MAAM;QACN,MAAM,EAAE,uBAAuB,CAC7B,iBAAiB,KAAK,MAAM;YAC1B,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,qBAAqB,CAC1B;KACF,CAAC,CAAmC,CAAC;IAEtC,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA8B,EAC9B,MAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;QAC5B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,qBAAqB;KAC9B,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAc,GAAG,CAAC,CAAC;AAC5C,CAAC;AAiBD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAU,EACV,MAA6B,EAC7B,MAAkB;IAElB,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;IACvE,MAAM,iBAAiB,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEzE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;YAC5B,QAAQ;YACR,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC1B,MAAM;YACN,MAAM,EAAE,CAAC,iBAAiB,KAAK,MAAM;gBACnC,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,qBAAqB,CAAQ;SAClC,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC9D,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAiBD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAU,EACV,MAAgC,EAChC,MAAkB;IAElB,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,2BAA2B,CAAC;IACvE,MAAM,iBAAiB,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,YAAY,EAAE,UAAU,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEhF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;YAC5B,QAAQ;YACR,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC1B,MAAM;YACN,MAAM,EAAE,CAAC,iBAAiB,KAAK,MAAM;gBACnC,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,qBAAqB,CAAQ;SAClC,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC9D,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "4.1.0-beta.
|
|
1
|
+
export declare const version = "4.1.0-beta.35";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/world-vercel",
|
|
3
|
-
"version": "4.1.0-beta.
|
|
3
|
+
"version": "4.1.0-beta.35",
|
|
4
4
|
"description": "Vercel platform World implementation for Workflow DevKit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@vercel/oidc": "3.0.5",
|
|
27
|
-
"@vercel/queue": "0.0.
|
|
27
|
+
"@vercel/queue": "0.0.2",
|
|
28
28
|
"cbor-x": "1.6.0",
|
|
29
29
|
"zod": "4.1.11",
|
|
30
30
|
"@workflow/errors": "4.1.0-beta.16",
|
|
31
|
-
"@workflow/world": "4.1.0-beta.
|
|
31
|
+
"@workflow/world": "4.1.0-beta.7"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@opentelemetry/api": "1"
|