@workflow/world-vercel 4.0.1-beta.0

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 (47) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +8 -0
  3. package/dist/auth.d.ts +6 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +26 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/backend.d.ts +4 -0
  8. package/dist/backend.d.ts.map +1 -0
  9. package/dist/backend.js +21 -0
  10. package/dist/backend.js.map +1 -0
  11. package/dist/events.d.ts +5 -0
  12. package/dist/events.d.ts.map +1 -0
  13. package/dist/events.js +76 -0
  14. package/dist/events.js.map +1 -0
  15. package/dist/hooks.d.ts +8 -0
  16. package/dist/hooks.d.ts.map +1 -0
  17. package/dist/hooks.js +87 -0
  18. package/dist/hooks.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +16 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/queue.d.ts +3 -0
  24. package/dist/queue.d.ts.map +1 -0
  25. package/dist/queue.js +41 -0
  26. package/dist/queue.js.map +1 -0
  27. package/dist/runs.d.ts +14 -0
  28. package/dist/runs.d.ts.map +1 -0
  29. package/dist/runs.js +194 -0
  30. package/dist/runs.js.map +1 -0
  31. package/dist/steps.d.ts +7 -0
  32. package/dist/steps.d.ts.map +1 -0
  33. package/dist/steps.js +94 -0
  34. package/dist/steps.js.map +1 -0
  35. package/dist/storage.d.ts +4 -0
  36. package/dist/storage.d.ts.map +1 -0
  37. package/dist/storage.js +41 -0
  38. package/dist/storage.js.map +1 -0
  39. package/dist/streamer.d.ts +4 -0
  40. package/dist/streamer.d.ts.map +1 -0
  41. package/dist/streamer.js +37 -0
  42. package/dist/streamer.js.map +1 -0
  43. package/dist/utils.d.ts +25 -0
  44. package/dist/utils.d.ts.map +1 -0
  45. package/dist/utils.js +68 -0
  46. package/dist/utils.js.map +1 -0
  47. package/package.json +36 -0
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2025 Vercel, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,8 @@
1
+ # @workflow/world-vercel
2
+
3
+ Production workflow backend for Vercel platform deployments.
4
+
5
+ Integrates with Vercel's infrastructure for storage, queuing, and authentication. Handles workflow persistence and scaling in production environments.
6
+
7
+ Used by default for deployments on Vercel. Authentication and API endpoints are configured automatically in Vercel deployments.
8
+
package/dist/auth.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { type AuthInfo, type AuthProvider, type HealthCheckResponse } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ export declare function getAuthInfo(config?: APIConfig): Promise<AuthInfo>;
4
+ export declare function checkHealth(config?: APIConfig): Promise<HealthCheckResponse>;
5
+ export declare function createAuth(config?: APIConfig): AuthProvider;
6
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,wBAAsB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAOvE;AAED,wBAAsB,WAAW,CAC/B,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,CAK3D"}
package/dist/auth.js ADDED
@@ -0,0 +1,26 @@
1
+ import { AuthInfoSchema, HealthCheckResponseSchema, } from '@workflow/world';
2
+ import { makeRequest } from './utils.js';
3
+ // Functions
4
+ export async function getAuthInfo(config) {
5
+ return makeRequest({
6
+ endpoint: '/v1',
7
+ options: { method: 'GET' },
8
+ config,
9
+ schema: AuthInfoSchema,
10
+ });
11
+ }
12
+ export async function checkHealth(config) {
13
+ return makeRequest({
14
+ endpoint: '/v1/health',
15
+ options: { method: 'GET' },
16
+ config,
17
+ schema: HealthCheckResponseSchema,
18
+ });
19
+ }
20
+ export function createAuth(config) {
21
+ return {
22
+ checkHealth: () => checkHealth(config),
23
+ getAuthInfo: () => getAuthInfo(config),
24
+ };
25
+ }
26
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAGd,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,YAAY;AACZ,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAkB;IAClD,OAAO,WAAW,CAAC;QACjB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1B,MAAM;QACN,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAkB;IAElB,OAAO,WAAW,CAAC;QACjB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1B,MAAM;QACN,MAAM,EAAE,yBAAyB;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;QACtC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;KACvC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AuthProvider, Storage, Streamer } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ export declare function createVercel(config?: APIConfig): Streamer & Storage & AuthProvider;
4
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,YAAY,CAC1B,MAAM,CAAC,EAAE,SAAS,GACjB,QAAQ,GAAG,OAAO,GAAG,YAAY,CAoBnC"}
@@ -0,0 +1,21 @@
1
+ import { createStorage } from './storage.js';
2
+ import { createStreamer } from './streamer.js';
3
+ export function createVercel(config) {
4
+ const storage = createStorage(config);
5
+ const streamer = createStreamer(config);
6
+ return {
7
+ // Streamer interface
8
+ writeToStream: streamer.writeToStream,
9
+ closeStream: streamer.closeStream,
10
+ readFromStream: streamer.readFromStream,
11
+ // AuthProvider interface
12
+ getAuthInfo: storage.getAuthInfo,
13
+ checkHealth: storage.checkHealth,
14
+ // Storage interface with namespaced methods
15
+ runs: storage.runs,
16
+ steps: storage.steps,
17
+ events: storage.events,
18
+ hooks: storage.hooks,
19
+ };
20
+ }
21
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,YAAY,CAC1B,MAAkB;IAElB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO;QACL,qBAAqB;QACrB,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;QAEvC,yBAAyB;QACzB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAEhC,4CAA4C;QAC5C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type CreateEventParams, type CreateEventRequest, type Event, type ListEventsByCorrelationIdParams, type ListEventsParams, type PaginatedResponse } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
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>;
5
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +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"}
package/dist/events.js ADDED
@@ -0,0 +1,76 @@
1
+ import { EventSchema, EventTypeSchema, PaginatedResponseSchema, } from '@workflow/world';
2
+ import z from 'zod';
3
+ import { DEFAULT_RESOLVE_DATA_OPTION, dateToStringReplacer, makeRequest, } from './utils.js';
4
+ // Helper to filter event data based on resolveData setting
5
+ function filterEventData(event, resolveData) {
6
+ if (resolveData === 'none') {
7
+ const { eventData: _eventData, ...rest } = event;
8
+ return rest;
9
+ }
10
+ return event;
11
+ }
12
+ // Would usually "EventSchema.omit({ eventData: true })" but that doesn't work
13
+ // on zod unions. Re-creating the schema manually.
14
+ const EventWithRefsSchema = z.object({
15
+ eventId: z.string(),
16
+ runId: z.string(),
17
+ eventType: EventTypeSchema,
18
+ correlationId: z.string().optional(),
19
+ eventDataRef: z.any().optional(),
20
+ createdAt: z.coerce.date(),
21
+ });
22
+ // Functions
23
+ export async function getWorkflowRunEvents(params, config) {
24
+ const searchParams = new URLSearchParams();
25
+ const { pagination, resolveData = DEFAULT_RESOLVE_DATA_OPTION } = params;
26
+ let runId;
27
+ let correlationId;
28
+ if ('runId' in params) {
29
+ runId = params.runId;
30
+ }
31
+ else {
32
+ correlationId = params.correlationId;
33
+ }
34
+ if (!runId && !correlationId) {
35
+ throw new Error('Either runId or correlationId must be provided');
36
+ }
37
+ if (pagination?.limit)
38
+ searchParams.set('limit', pagination.limit.toString());
39
+ if (pagination?.cursor)
40
+ searchParams.set('cursor', pagination.cursor);
41
+ if (pagination?.sortOrder)
42
+ searchParams.set('sortOrder', pagination.sortOrder);
43
+ if (correlationId)
44
+ searchParams.set('correlationId', correlationId);
45
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
46
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
47
+ const queryString = searchParams.toString();
48
+ const query = queryString ? `?${queryString}` : '';
49
+ const endpoint = correlationId
50
+ ? `/v1/events${query}`
51
+ : `/v1/runs/${runId}/events${query}`;
52
+ const response = (await makeRequest({
53
+ endpoint,
54
+ options: { method: 'GET' },
55
+ config,
56
+ schema: PaginatedResponseSchema(remoteRefBehavior === 'lazy' ? EventWithRefsSchema : EventSchema),
57
+ }));
58
+ return {
59
+ ...response,
60
+ data: response.data.map((event) => filterEventData(event, resolveData)),
61
+ };
62
+ }
63
+ export async function createWorkflowRunEvent(id, data, params, config) {
64
+ 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
+ },
71
+ config,
72
+ schema: EventSchema,
73
+ });
74
+ return filterEventData(event, resolveData);
75
+ }
76
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CreateHookRequest, GetHookParams, Hook, ListHooksParams, PaginatedResponse } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ export declare function listHooks(params: ListHooksParams, config?: APIConfig): Promise<PaginatedResponse<Hook>>;
4
+ export declare function getHook(hookId: string, params?: GetHookParams, config?: APIConfig): Promise<Hook>;
5
+ export declare function createHook(runId: string, data: CreateHookRequest, config?: APIConfig): Promise<Hook>;
6
+ export declare function getHookByToken(token: string, config?: APIConfig): Promise<Hook>;
7
+ export declare function disposeHook(hookId: string, config?: APIConfig): Promise<Hook>;
8
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +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"}
package/dist/hooks.js ADDED
@@ -0,0 +1,87 @@
1
+ import { HookSchema, PaginatedResponseSchema } from '@workflow/world';
2
+ import z from 'zod';
3
+ import { DEFAULT_RESOLVE_DATA_OPTION, dateToStringReplacer, makeRequest, } from './utils.js';
4
+ // Helper to filter hook data based on resolveData setting
5
+ function filterHookData(hook, resolveData) {
6
+ if (resolveData === 'none') {
7
+ const { metadataRef: _metadataRef, ...rest } = hook;
8
+ return rest;
9
+ }
10
+ return hook;
11
+ }
12
+ const HookWithRefsSchema = HookSchema.omit({
13
+ metadata: true,
14
+ }).extend({
15
+ metadataRef: z.any().optional(),
16
+ });
17
+ export async function listHooks(params, config) {
18
+ const { runId, pagination, resolveData = DEFAULT_RESOLVE_DATA_OPTION, } = params;
19
+ const searchParams = new URLSearchParams();
20
+ if (pagination?.limit)
21
+ searchParams.set('limit', pagination.limit.toString());
22
+ if (pagination?.cursor)
23
+ searchParams.set('cursor', pagination.cursor);
24
+ if (pagination?.sortOrder)
25
+ searchParams.set('sortOrder', pagination.sortOrder);
26
+ // Map resolveData to internal RemoteRefBehavior
27
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
28
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
29
+ if (runId)
30
+ searchParams.set('runId', runId);
31
+ const queryString = searchParams.toString();
32
+ const endpoint = `/v1/hooks${queryString ? `?${queryString}` : ''}`;
33
+ const response = (await makeRequest({
34
+ endpoint,
35
+ options: { method: 'GET' },
36
+ config,
37
+ schema: PaginatedResponseSchema(remoteRefBehavior === 'lazy' ? HookWithRefsSchema : HookSchema),
38
+ }));
39
+ return {
40
+ ...response,
41
+ data: response.data.map((hook) => filterHookData(hook, resolveData)),
42
+ };
43
+ }
44
+ export async function getHook(hookId, params, config) {
45
+ const resolveData = params?.resolveData || 'all';
46
+ const endpoint = `/v1/hooks/${hookId}`;
47
+ const hook = await makeRequest({
48
+ endpoint,
49
+ options: { method: 'GET' },
50
+ config,
51
+ schema: HookSchema,
52
+ });
53
+ return filterHookData(hook, resolveData);
54
+ }
55
+ export async function createHook(runId, data, config) {
56
+ return makeRequest({
57
+ endpoint: `/v1/hooks/create`,
58
+ options: {
59
+ method: 'POST',
60
+ body: JSON.stringify({
61
+ runId,
62
+ ...data,
63
+ }, dateToStringReplacer),
64
+ },
65
+ config,
66
+ schema: HookSchema,
67
+ });
68
+ }
69
+ export async function getHookByToken(token, config) {
70
+ return makeRequest({
71
+ endpoint: `/v1/hooks/by-token?token=${encodeURIComponent(token)}`,
72
+ options: {
73
+ method: 'GET',
74
+ },
75
+ config,
76
+ schema: HookSchema,
77
+ });
78
+ }
79
+ export async function disposeHook(hookId, config) {
80
+ return makeRequest({
81
+ endpoint: `/v1/hooks/${hookId}`,
82
+ options: { method: 'DELETE' },
83
+ config,
84
+ schema: HookSchema,
85
+ });
86
+ }
87
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { World } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ export { createQueue } from './queue.js';
4
+ export { createStorage } from './storage.js';
5
+ export { createStreamer } from './streamer.js';
6
+ export type { APIConfig } from './utils.js';
7
+ export declare function createVercelWorld(config?: APIConfig): World;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,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,CAO3D"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ import { createAuth } from './auth.js';
2
+ import { createQueue } from './queue.js';
3
+ import { createStorage } from './storage.js';
4
+ import { createStreamer } from './streamer.js';
5
+ export { createQueue } from './queue.js';
6
+ export { createStorage } from './storage.js';
7
+ export { createStreamer } from './streamer.js';
8
+ export function createVercelWorld(config) {
9
+ return {
10
+ ...createQueue(),
11
+ ...createStorage(config),
12
+ ...createAuth(config),
13
+ ...createStreamer(config),
14
+ };
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,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,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,OAAO;QACL,GAAG,WAAW,EAAE;QAChB,GAAG,aAAa,CAAC,MAAM,CAAC;QACxB,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,GAAG,cAAc,CAAC,MAAM,CAAC;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Queue } from '@workflow/world';
2
+ export declare function createQueue(): Queue;
3
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,KAAK,EAGX,MAAM,iBAAiB,CAAC;AAQzB,wBAAgB,WAAW,IAAI,KAAK,CAmCnC"}
package/dist/queue.js ADDED
@@ -0,0 +1,41 @@
1
+ import { handleCallback, send } from '@vercel/queue';
2
+ import { MessageId, QueuePayloadSchema, ValidQueueName, } from '@workflow/world';
3
+ import * as z from 'zod';
4
+ const MessageWrapper = z.object({
5
+ payload: QueuePayloadSchema,
6
+ queueName: ValidQueueName,
7
+ });
8
+ export function createQueue() {
9
+ const queue = async (queueName, x, opts) => {
10
+ const encoded = MessageWrapper.encode({
11
+ payload: x,
12
+ queueName,
13
+ });
14
+ const sanitizedQueueName = queueName.replace(/[^A-Za-z0-9-_]/g, '-');
15
+ const { messageId } = await send(sanitizedQueueName, encoded, opts);
16
+ return { messageId: MessageId.parse(messageId) };
17
+ };
18
+ const createQueueHandler = (prefix, handler) => {
19
+ return handleCallback({
20
+ [`${prefix}*`]: {
21
+ default: (body, meta) => {
22
+ const { payload, queueName } = MessageWrapper.parse(body);
23
+ return handler(payload, {
24
+ queueName,
25
+ messageId: MessageId.parse(meta.messageId),
26
+ attempt: meta.deliveryCount,
27
+ });
28
+ },
29
+ },
30
+ });
31
+ };
32
+ const getDeploymentId = async () => {
33
+ const deploymentId = process.env.VERCEL_DEPLOYMENT_ID;
34
+ if (!deploymentId) {
35
+ throw new Error('VERCEL_DEPLOYMENT_ID environment variable is not set');
36
+ }
37
+ return deploymentId;
38
+ };
39
+ return { queue, createQueueHandler, getDeploymentId };
40
+ }
41
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,SAAS,EAET,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAmB,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,CAAC;YACV,SAAS;SACV,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAgC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC1E,OAAO,cAAc,CAAC;YACpB,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;gBACd,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBACtB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC1D,OAAO,OAAO,CAAC,OAAO,EAAE;wBACtB,SAAS;wBACT,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC1C,OAAO,EAAE,IAAI,CAAC,aAAa;qBAC5B,CAAC,CAAC;gBACL,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 ADDED
@@ -0,0 +1,14 @@
1
+ import { type CancelWorkflowRunParams, type CreateWorkflowRunRequest, type GetWorkflowRunParams, type ListWorkflowRunsParams, type PaginatedResponse, type PauseWorkflowRunParams, type ResumeWorkflowRunParams, type UpdateWorkflowRunRequest, type WorkflowRun } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ /**
4
+ * This query technically works but should be used sparingly till the backend
5
+ * uses CH to resolve this instead of scanning a dynamo table.
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>;
14
+ //# sourceMappingURL=runs.d.ts.map
@@ -0,0 +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;AAkC5C;;;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,CAUtB;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,CAiBtB;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"}
package/dist/runs.js ADDED
@@ -0,0 +1,194 @@
1
+ import { WorkflowAPIError, WorkflowRunNotFoundError } from '@workflow/errors';
2
+ import { PaginatedResponseSchema, WorkflowRunSchema, } from '@workflow/world';
3
+ import { z } from 'zod';
4
+ import { DEFAULT_RESOLVE_DATA_OPTION, dateToStringReplacer, makeRequest, } from './utils.js';
5
+ // Local schema for lazy mode with refs instead of data
6
+ const WorkflowRunWithRefsSchema = WorkflowRunSchema.omit({
7
+ input: true,
8
+ output: true,
9
+ }).extend({
10
+ // We discard the results of the refs, so we don't care about the type here
11
+ inputRef: z.any().optional(),
12
+ outputRef: z.any().optional(),
13
+ input: z.array(z.any()).optional(),
14
+ output: z.any().optional(),
15
+ });
16
+ // Helper to filter run data based on resolveData setting
17
+ function filterRunData(run, resolveData) {
18
+ if (resolveData === 'none') {
19
+ const { inputRef: _inputRef, outputRef: _outputRef, ...rest } = run;
20
+ return {
21
+ ...rest,
22
+ input: [],
23
+ output: undefined,
24
+ };
25
+ }
26
+ return run;
27
+ }
28
+ // Functions
29
+ /**
30
+ * This query technically works but should be used sparingly till the backend
31
+ * uses CH to resolve this instead of scanning a dynamo table.
32
+ */
33
+ export async function listWorkflowRuns(params = {}, config) {
34
+ const { workflowName, status, pagination, resolveData = DEFAULT_RESOLVE_DATA_OPTION, } = params;
35
+ const searchParams = new URLSearchParams();
36
+ if (workflowName)
37
+ searchParams.set('workflowName', workflowName);
38
+ if (status)
39
+ searchParams.set('status', status);
40
+ if (pagination?.limit)
41
+ searchParams.set('limit', pagination.limit.toString());
42
+ if (pagination?.cursor)
43
+ searchParams.set('cursor', pagination.cursor);
44
+ if (pagination?.sortOrder)
45
+ searchParams.set('sortOrder', pagination.sortOrder);
46
+ // Map resolveData to internal RemoteRefBehavior
47
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
48
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
49
+ const queryString = searchParams.toString();
50
+ const endpoint = `/v1/runs${queryString ? `?${queryString}` : ''}`;
51
+ const response = (await makeRequest({
52
+ endpoint,
53
+ options: { method: 'GET' },
54
+ config,
55
+ schema: PaginatedResponseSchema(remoteRefBehavior === 'lazy'
56
+ ? WorkflowRunWithRefsSchema
57
+ : WorkflowRunSchema),
58
+ }));
59
+ return {
60
+ ...response,
61
+ data: response.data.map((run) => filterRunData(run, resolveData)),
62
+ };
63
+ }
64
+ export async function createWorkflowRun(data, config) {
65
+ return makeRequest({
66
+ endpoint: '/v1/runs/create',
67
+ options: {
68
+ method: 'POST',
69
+ body: JSON.stringify(data, dateToStringReplacer),
70
+ },
71
+ config,
72
+ schema: WorkflowRunSchema,
73
+ });
74
+ }
75
+ export async function getWorkflowRun(id, params, config) {
76
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
77
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
78
+ const searchParams = new URLSearchParams();
79
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
80
+ const queryString = searchParams.toString();
81
+ const endpoint = `/v1/runs/${id}${queryString ? `?${queryString}` : ''}`;
82
+ try {
83
+ const run = await makeRequest({
84
+ endpoint,
85
+ options: { method: 'GET' },
86
+ config,
87
+ schema: (remoteRefBehavior === 'lazy'
88
+ ? WorkflowRunWithRefsSchema
89
+ : WorkflowRunSchema),
90
+ });
91
+ return filterRunData(run, resolveData);
92
+ }
93
+ catch (error) {
94
+ if (error instanceof WorkflowAPIError && error.status === 404) {
95
+ throw new WorkflowRunNotFoundError(id);
96
+ }
97
+ throw error;
98
+ }
99
+ }
100
+ export async function updateWorkflowRun(id, data, config) {
101
+ try {
102
+ return makeRequest({
103
+ endpoint: `/v1/runs/${id}`,
104
+ options: {
105
+ method: 'PUT',
106
+ body: JSON.stringify(data, dateToStringReplacer),
107
+ },
108
+ config,
109
+ schema: WorkflowRunSchema,
110
+ });
111
+ }
112
+ catch (error) {
113
+ if (error instanceof WorkflowAPIError && error.status === 404) {
114
+ throw new WorkflowRunNotFoundError(id);
115
+ }
116
+ throw error;
117
+ }
118
+ }
119
+ export async function cancelWorkflowRun(id, params, config) {
120
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
121
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
122
+ const searchParams = new URLSearchParams();
123
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
124
+ const queryString = searchParams.toString();
125
+ const endpoint = `/v1/runs/${id}/cancel${queryString ? `?${queryString}` : ''}`;
126
+ try {
127
+ const run = await makeRequest({
128
+ endpoint,
129
+ options: { method: 'PUT' },
130
+ config,
131
+ schema: (remoteRefBehavior === 'lazy'
132
+ ? WorkflowRunWithRefsSchema
133
+ : WorkflowRunSchema),
134
+ });
135
+ return filterRunData(run, resolveData);
136
+ }
137
+ catch (error) {
138
+ if (error instanceof WorkflowAPIError && error.status === 404) {
139
+ throw new WorkflowRunNotFoundError(id);
140
+ }
141
+ throw error;
142
+ }
143
+ }
144
+ export async function pauseWorkflowRun(id, params, config) {
145
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
146
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
147
+ const searchParams = new URLSearchParams();
148
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
149
+ const queryString = searchParams.toString();
150
+ const endpoint = `/v1/runs/${id}/pause${queryString ? `?${queryString}` : ''}`;
151
+ try {
152
+ const run = await makeRequest({
153
+ endpoint,
154
+ options: { method: 'PUT' },
155
+ config,
156
+ schema: (remoteRefBehavior === 'lazy'
157
+ ? WorkflowRunWithRefsSchema
158
+ : WorkflowRunSchema),
159
+ });
160
+ return filterRunData(run, resolveData);
161
+ }
162
+ catch (error) {
163
+ if (error instanceof WorkflowAPIError && error.status === 404) {
164
+ throw new WorkflowRunNotFoundError(id);
165
+ }
166
+ throw error;
167
+ }
168
+ }
169
+ export async function resumeWorkflowRun(id, params, config) {
170
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
171
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
172
+ const searchParams = new URLSearchParams();
173
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
174
+ const queryString = searchParams.toString();
175
+ const endpoint = `/v1/runs/${id}/resume${queryString ? `?${queryString}` : ''}`;
176
+ try {
177
+ const run = await makeRequest({
178
+ endpoint,
179
+ options: { method: 'PUT' },
180
+ config,
181
+ schema: (remoteRefBehavior === 'lazy'
182
+ ? WorkflowRunWithRefsSchema
183
+ : WorkflowRunSchema),
184
+ });
185
+ return filterRunData(run, resolveData);
186
+ }
187
+ catch (error) {
188
+ if (error instanceof WorkflowAPIError && error.status === 404) {
189
+ throw new WorkflowRunNotFoundError(id);
190
+ }
191
+ throw error;
192
+ }
193
+ }
194
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type CreateStepRequest, type GetStepParams, type ListWorkflowRunStepsParams, type PaginatedResponse, type Step, type UpdateStepRequest } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ export declare function listWorkflowRunSteps(params: ListWorkflowRunStepsParams, config?: APIConfig): Promise<PaginatedResponse<Step>>;
4
+ export declare function createStep(runId: string, data: CreateStepRequest, config?: APIConfig): Promise<Step>;
5
+ export declare function updateStep(runId: string, stepId: string, data: UpdateStepRequest, config?: APIConfig): Promise<Step>;
6
+ export declare function getStep(runId: string | undefined, stepId: string, params?: GetStepParams, config?: APIConfig): Promise<Step>;
7
+ //# sourceMappingURL=steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EAEtB,KAAK,IAAI,EAET,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiC5C,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAkClC;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
package/dist/steps.js ADDED
@@ -0,0 +1,94 @@
1
+ import { PaginatedResponseSchema, StepSchema, } from '@workflow/world';
2
+ import { z } from 'zod';
3
+ import { DEFAULT_RESOLVE_DATA_OPTION, dateToStringReplacer, makeRequest, } from './utils.js';
4
+ // Local schema for lazy mode with refs instead of data
5
+ const StepWithRefsSchema = StepSchema.omit({
6
+ input: true,
7
+ output: true,
8
+ }).extend({
9
+ // We discard the results of the refs, so we don't care about the type here
10
+ inputRef: z.any().optional(),
11
+ outputRef: z.any().optional(),
12
+ input: z.array(z.any()).optional(),
13
+ output: z.any().optional(),
14
+ });
15
+ // Helper to filter step data based on resolveData setting
16
+ function filterStepData(step, resolveData) {
17
+ if (resolveData === 'none') {
18
+ const { inputRef: _inputRef, outputRef: _outputRef, ...rest } = step;
19
+ return {
20
+ ...rest,
21
+ input: [],
22
+ output: undefined,
23
+ };
24
+ }
25
+ return step;
26
+ }
27
+ // Functions
28
+ export async function listWorkflowRunSteps(params, config) {
29
+ const { runId, pagination, resolveData = DEFAULT_RESOLVE_DATA_OPTION, } = params;
30
+ const searchParams = new URLSearchParams();
31
+ if (pagination?.cursor)
32
+ searchParams.set('cursor', pagination.cursor);
33
+ if (pagination?.limit)
34
+ searchParams.set('limit', pagination.limit.toString());
35
+ if (pagination?.sortOrder)
36
+ searchParams.set('sortOrder', pagination.sortOrder);
37
+ // Map resolveData to internal RemoteRefBehavior
38
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
39
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
40
+ const queryString = searchParams.toString();
41
+ const endpoint = `/v1/runs/${runId}/steps${queryString ? `?${queryString}` : ''}`;
42
+ const response = (await makeRequest({
43
+ endpoint,
44
+ options: { method: 'GET' },
45
+ config,
46
+ schema: PaginatedResponseSchema(remoteRefBehavior === 'lazy' ? StepWithRefsSchema : StepSchema),
47
+ }));
48
+ return {
49
+ ...response,
50
+ data: response.data.map((step) => filterStepData(step, resolveData)),
51
+ };
52
+ }
53
+ export async function createStep(runId, data, config) {
54
+ return makeRequest({
55
+ endpoint: `/v1/runs/${runId}/steps`,
56
+ options: {
57
+ method: 'POST',
58
+ body: JSON.stringify(data, dateToStringReplacer),
59
+ },
60
+ config,
61
+ schema: StepSchema,
62
+ });
63
+ }
64
+ export async function updateStep(runId, stepId, data, config) {
65
+ return makeRequest({
66
+ endpoint: `/v1/runs/${runId}/steps/${stepId}`,
67
+ options: {
68
+ method: 'PUT',
69
+ body: JSON.stringify(data, dateToStringReplacer),
70
+ },
71
+ config,
72
+ schema: StepSchema,
73
+ });
74
+ }
75
+ export async function getStep(runId, stepId, params, config) {
76
+ const resolveData = params?.resolveData ?? DEFAULT_RESOLVE_DATA_OPTION;
77
+ const remoteRefBehavior = resolveData === 'none' ? 'lazy' : 'resolve';
78
+ const searchParams = new URLSearchParams();
79
+ searchParams.set('remoteRefBehavior', remoteRefBehavior);
80
+ const queryString = searchParams.toString();
81
+ const endpoint = runId
82
+ ? `/v1/runs/${runId}/steps/${stepId}${queryString ? `?${queryString}` : ''}`
83
+ : `/v1/steps/${stepId}${queryString ? `?${queryString}` : ''}`;
84
+ const step = await makeRequest({
85
+ endpoint,
86
+ options: { method: 'GET' },
87
+ config,
88
+ schema: (remoteRefBehavior === 'lazy'
89
+ ? StepWithRefsSchema
90
+ : StepSchema),
91
+ });
92
+ return filterStepData(step, resolveData);
93
+ }
94
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AuthProvider, Storage } from '@workflow/world';
2
+ import type { APIConfig } from './utils.js';
3
+ export declare function createStorage(config?: APIConfig): Storage & AuthProvider;
4
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAyB7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAoCxE"}
@@ -0,0 +1,41 @@
1
+ import { checkHealth, getAuthInfo } from './auth.js';
2
+ import { createWorkflowRunEvent, getWorkflowRunEvents } from './events.js';
3
+ import { createHook, disposeHook, getHook, getHookByToken, listHooks, } from './hooks.js';
4
+ import { cancelWorkflowRun, createWorkflowRun, getWorkflowRun, listWorkflowRuns, pauseWorkflowRun, resumeWorkflowRun, updateWorkflowRun, } from './runs.js';
5
+ import { createStep, getStep, listWorkflowRunSteps, updateStep, } from './steps.js';
6
+ export function createStorage(config) {
7
+ return {
8
+ // AuthProvider interface
9
+ getAuthInfo: () => getAuthInfo(config),
10
+ checkHealth: () => checkHealth(config),
11
+ // Storage interface with namespaced methods
12
+ runs: {
13
+ create: (data) => createWorkflowRun(data, config),
14
+ get: (id, params) => getWorkflowRun(id, params, config),
15
+ update: (id, data) => updateWorkflowRun(id, data, config),
16
+ list: (params) => listWorkflowRuns(params, config),
17
+ cancel: (id, params) => cancelWorkflowRun(id, params, config),
18
+ pause: (id, params) => pauseWorkflowRun(id, params, config),
19
+ resume: (id, params) => resumeWorkflowRun(id, params, config),
20
+ },
21
+ steps: {
22
+ create: (runId, data) => createStep(runId, data, config),
23
+ get: (runId, stepId, params) => getStep(runId, stepId, params, config),
24
+ update: (runId, stepId, data) => updateStep(runId, stepId, data, config),
25
+ list: (params) => listWorkflowRunSteps(params, config),
26
+ },
27
+ events: {
28
+ create: (runId, data, params) => createWorkflowRunEvent(runId, data, params, config),
29
+ list: (params) => getWorkflowRunEvents(params, config),
30
+ listByCorrelationId: (params) => getWorkflowRunEvents(params, config),
31
+ },
32
+ hooks: {
33
+ create: (runId, data) => createHook(runId, data, config),
34
+ get: (hookId, params) => getHook(hookId, params, config),
35
+ getByToken: (token) => getHookByToken(token, config),
36
+ list: (params) => listHooks(params, config),
37
+ dispose: (hookId) => disposeHook(hookId, config),
38
+ },
39
+ };
40
+ }
41
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Streamer } from '@workflow/world';
2
+ import { type APIConfig } from './utils.js';
3
+ export declare function createStreamer(config?: APIConfig): Streamer;
4
+ //# sourceMappingURL=streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,YAAY,CAAC;AAM5E,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAgC3D"}
@@ -0,0 +1,37 @@
1
+ import { getHttpConfig } from './utils.js';
2
+ function getStreamUrl(name, httpConfig) {
3
+ return new URL(`${httpConfig.baseUrl}/v1/stream/${encodeURIComponent(name)}`);
4
+ }
5
+ export function createStreamer(config) {
6
+ return {
7
+ async writeToStream(name, chunk) {
8
+ const httpConfig = await getHttpConfig(config);
9
+ await fetch(getStreamUrl(name, httpConfig), {
10
+ method: 'PUT',
11
+ body: chunk,
12
+ headers: httpConfig.headers,
13
+ duplex: 'half',
14
+ });
15
+ },
16
+ async closeStream(name) {
17
+ const httpConfig = await getHttpConfig(config);
18
+ httpConfig.headers.set('X-Stream-Done', 'true');
19
+ await fetch(getStreamUrl(name, httpConfig), {
20
+ method: 'PUT',
21
+ headers: httpConfig.headers,
22
+ });
23
+ },
24
+ async readFromStream(name, startIndex) {
25
+ const httpConfig = await getHttpConfig(config);
26
+ const url = getStreamUrl(name, httpConfig);
27
+ if (typeof startIndex === 'number') {
28
+ url.searchParams.set('startIndex', String(startIndex));
29
+ }
30
+ const res = await fetch(url, { headers: httpConfig.headers });
31
+ if (!res.ok)
32
+ throw new Error(`Failed to fetch stream: ${res.status}`);
33
+ return res.body;
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=streamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamer.js","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE5E,SAAS,YAAY,CAAC,IAAY,EAAE,UAAsB;IACxD,OAAO,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,cAAc,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK;YAC7B,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;gBAC1C,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAI;YACpB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;gBAC1C,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU;YACnC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC3C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,OAAO,GAAG,CAAC,IAAkC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type z } from 'zod';
2
+ export interface APIConfig {
3
+ baseUrl?: string;
4
+ token?: string;
5
+ headers?: RequestInit['headers'];
6
+ projectConfig?: {
7
+ projectId?: string;
8
+ teamId?: string;
9
+ environment?: string;
10
+ };
11
+ }
12
+ export declare const DEFAULT_RESOLVE_DATA_OPTION = "all";
13
+ export declare function dateToStringReplacer(_key: string, value: unknown): unknown;
14
+ export interface HttpConfig {
15
+ baseUrl: string;
16
+ headers: Headers;
17
+ }
18
+ export declare function getHttpConfig(config?: APIConfig): Promise<HttpConfig>;
19
+ export declare function makeRequest<T>({ endpoint, options, config, schema, }: {
20
+ endpoint: string;
21
+ options?: RequestInit;
22
+ config?: APIConfig;
23
+ schema: z.ZodSchema<T>;
24
+ }): Promise<T>;
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAK1E;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC3E;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,EACnC,QAAQ,EACR,OAAY,EACZ,MAAW,EACX,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACxB,GAAG,OAAO,CAAC,CAAC,CAAC,CA0Cb"}
package/dist/utils.js ADDED
@@ -0,0 +1,68 @@
1
+ import { getVercelOidcToken } from '@vercel/oidc';
2
+ import { WorkflowAPIError } from '@workflow/errors';
3
+ import { ZodError } from 'zod';
4
+ export const DEFAULT_RESOLVE_DATA_OPTION = 'all';
5
+ export function dateToStringReplacer(_key, value) {
6
+ if (value instanceof Date) {
7
+ return value.toISOString();
8
+ }
9
+ return value;
10
+ }
11
+ export async function getHttpConfig(config) {
12
+ const projectConfig = config?.projectConfig;
13
+ const headers = new Headers(config?.headers);
14
+ if (projectConfig) {
15
+ headers.set('x-vercel-environment', projectConfig.environment || 'production');
16
+ if (projectConfig.projectId) {
17
+ headers.set('x-vercel-project-id', projectConfig.projectId);
18
+ }
19
+ if (projectConfig.teamId) {
20
+ headers.set('x-vercel-team-id', projectConfig.teamId);
21
+ }
22
+ }
23
+ const token = config?.token ?? (await getVercelOidcToken());
24
+ if (token) {
25
+ headers.set('Authorization', `Bearer ${token}`);
26
+ }
27
+ let baseUrl = config?.baseUrl;
28
+ if (!baseUrl) {
29
+ // If projectConfig is provided (only necessary outside of vercel deployments),
30
+ // we default the baseUrl to the API proxy
31
+ const shouldUseProxy = projectConfig?.projectId && projectConfig?.teamId;
32
+ baseUrl = shouldUseProxy
33
+ ? `https://api.vercel.com/v1/workflow`
34
+ : 'https://vercel-workflow.com/api';
35
+ }
36
+ return { baseUrl, headers };
37
+ }
38
+ export async function makeRequest({ endpoint, options = {}, config = {}, schema, }) {
39
+ const { baseUrl, headers } = await getHttpConfig(config);
40
+ headers.set('Content-Type', 'application/json');
41
+ const url = `${baseUrl}${endpoint}`;
42
+ const response = await fetch(url, {
43
+ ...options,
44
+ headers,
45
+ });
46
+ if (!response.ok) {
47
+ const errorData = (await response.json().catch(() => ({})));
48
+ if (process.env.DEBUG === '1') {
49
+ const stringifiedHeaders = Array.from(headers.entries())
50
+ .map(([key, value]) => `-H "${key}: ${value}"`)
51
+ .join(' ');
52
+ console.error(`Failed to fetch, reproduce with:\ncurl -X ${options.method} ${stringifiedHeaders} "${url}"`);
53
+ }
54
+ throw new WorkflowAPIError(errorData.message ||
55
+ `${options.method ?? 'GET'} ${endpoint} -> HTTP ${response.status}: ${response.statusText}`, { url, status: response.status, code: errorData.code });
56
+ }
57
+ try {
58
+ const text = await response.text();
59
+ return schema.parse(JSON.parse(text));
60
+ }
61
+ catch (error) {
62
+ if (error instanceof ZodError) {
63
+ throw new WorkflowAPIError(`Failed to parse server response for ${options.method ?? 'GET'} ${endpoint}: ${error.message}`, { url, cause: error });
64
+ }
65
+ throw new WorkflowAPIError(`Failed to parse server response for ${options.method ?? 'GET'} ${endpoint}`, { url, cause: error });
66
+ }
67
+ }
68
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@workflow/world-vercel",
3
+ "version": "4.0.1-beta.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "dependencies": {
19
+ "@vercel/oidc": "^3.0.3",
20
+ "@vercel/queue": "0.0.0-alpha.24",
21
+ "zod": "4.1.11",
22
+ "@workflow/world": "4.0.1-beta.0",
23
+ "@workflow/errors": "4.0.1-beta.0"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "24.6.2",
27
+ "@workflow/tsconfig": "4.0.1-beta.0"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "dev": "tsc --watch",
32
+ "clean": "tsc --build --clean",
33
+ "test": "echo 'No tests yet'",
34
+ "typecheck": "tsc --noEmit"
35
+ }
36
+ }