@voyantjs/workflows 0.6.7 → 0.6.9

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 (61) hide show
  1. package/dist/auth/index.d.ts +26 -0
  2. package/dist/auth/index.d.ts.map +1 -0
  3. package/dist/auth/index.js +137 -0
  4. package/dist/conditions.d.ts +29 -0
  5. package/dist/conditions.d.ts.map +1 -0
  6. package/dist/conditions.js +5 -0
  7. package/dist/handler/index.d.ts +104 -0
  8. package/dist/handler/index.d.ts.map +1 -0
  9. package/dist/handler/index.js +238 -0
  10. package/dist/index.d.ts +6 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +10 -0
  13. package/dist/protocol/index.d.ts +187 -0
  14. package/dist/protocol/index.d.ts.map +1 -0
  15. package/dist/protocol/index.js +7 -0
  16. package/dist/rate-limit/index.d.ts +40 -0
  17. package/dist/rate-limit/index.d.ts.map +1 -0
  18. package/dist/rate-limit/index.js +139 -0
  19. package/dist/runtime/ctx.d.ts +102 -0
  20. package/dist/runtime/ctx.d.ts.map +1 -0
  21. package/dist/runtime/ctx.js +607 -0
  22. package/dist/runtime/determinism.d.ts +19 -0
  23. package/dist/runtime/determinism.d.ts.map +1 -0
  24. package/dist/runtime/determinism.js +61 -0
  25. package/dist/runtime/errors.d.ts +21 -0
  26. package/dist/runtime/errors.d.ts.map +1 -0
  27. package/dist/runtime/errors.js +45 -0
  28. package/dist/runtime/executor.d.ts +159 -0
  29. package/dist/runtime/executor.d.ts.map +1 -0
  30. package/dist/runtime/executor.js +225 -0
  31. package/dist/runtime/journal.d.ts +55 -0
  32. package/dist/runtime/journal.d.ts.map +1 -0
  33. package/dist/runtime/journal.js +28 -0
  34. package/dist/testing/index.d.ts +117 -0
  35. package/dist/testing/index.d.ts.map +1 -0
  36. package/dist/testing/index.js +595 -0
  37. package/dist/trigger.d.ts +122 -0
  38. package/dist/trigger.d.ts.map +1 -0
  39. package/dist/trigger.js +23 -0
  40. package/dist/types.d.ts +63 -0
  41. package/dist/types.d.ts.map +1 -0
  42. package/dist/types.js +3 -0
  43. package/dist/workflow.d.ts +212 -0
  44. package/dist/workflow.d.ts.map +1 -0
  45. package/dist/workflow.js +46 -0
  46. package/package.json +30 -30
  47. package/src/auth/index.ts +46 -52
  48. package/src/conditions.ts +13 -13
  49. package/src/handler/index.ts +110 -106
  50. package/src/index.ts +7 -7
  51. package/src/protocol/index.ts +137 -71
  52. package/src/rate-limit/index.ts +77 -78
  53. package/src/runtime/ctx.ts +354 -342
  54. package/src/runtime/determinism.ts +27 -27
  55. package/src/runtime/errors.ts +17 -17
  56. package/src/runtime/executor.ts +179 -172
  57. package/src/runtime/journal.ts +25 -25
  58. package/src/testing/index.ts +268 -202
  59. package/src/trigger.ts +64 -71
  60. package/src/types.ts +16 -18
  61. package/src/workflow.ts +154 -152
@@ -0,0 +1,122 @@
1
+ import type { Duration, EnvironmentName, RunStatus } from "./types.js";
2
+ import type { EnvironmentContext, WorkflowHandle } from "./workflow.js";
3
+ export interface WorkflowsClient {
4
+ trigger<TIn, TOut>(workflow: WorkflowHandle<TIn, TOut> | string, input: TIn, opts?: TriggerOptions): Promise<Run<TOut>>;
5
+ signal(runId: string, name: string, payload: unknown, opts?: {
6
+ nonce?: string;
7
+ }): Promise<void>;
8
+ completeToken(tokenId: string, payload: unknown): Promise<void>;
9
+ cancel(runId: string, opts?: {
10
+ compensate?: boolean;
11
+ reason?: string;
12
+ }): Promise<void>;
13
+ retry(runId: string, opts: {
14
+ mode: "re-trigger" | "resume";
15
+ }): Promise<Run>;
16
+ replay(runId: string, opts?: {
17
+ fromStepId?: string;
18
+ input?: unknown;
19
+ }): Promise<Run>;
20
+ get(runId: string): Promise<RunDetail>;
21
+ list(opts?: ListRunsOptions): Promise<{
22
+ runs: RunSummary[];
23
+ nextCursor?: string;
24
+ }>;
25
+ mintAccessToken(opts: MintAccessTokenOptions): Promise<PublicAccessToken>;
26
+ }
27
+ export interface TriggerOptions {
28
+ idempotencyKey?: string;
29
+ delay?: Duration | Date;
30
+ debounce?: {
31
+ key: string;
32
+ delay: Duration;
33
+ mode?: "leading" | "trailing";
34
+ };
35
+ ttl?: Duration;
36
+ tags?: string[];
37
+ priority?: number;
38
+ concurrencyKey?: string;
39
+ lockToVersion?: string;
40
+ environment?: EnvironmentName;
41
+ issuePublicAccessToken?: boolean;
42
+ }
43
+ export interface Run<TOut = unknown> {
44
+ id: string;
45
+ workflowId: string;
46
+ status: RunStatus;
47
+ startedAt: number;
48
+ accessToken?: string;
49
+ /** Phantom; used only for TypeScript inference. */
50
+ readonly __output?: TOut;
51
+ }
52
+ export interface RunSummary {
53
+ id: string;
54
+ workflowId: string;
55
+ status: RunStatus;
56
+ startedAt: number;
57
+ completedAt?: number;
58
+ tags: string[];
59
+ environment: EnvironmentName;
60
+ }
61
+ export interface RunDetail<TOut = unknown> extends RunSummary {
62
+ version: string;
63
+ input: unknown;
64
+ output?: TOut;
65
+ error?: unknown;
66
+ durationMs?: number;
67
+ }
68
+ export interface ListRunsOptions {
69
+ workflowId?: string;
70
+ status?: RunStatus | RunStatus[];
71
+ environment?: EnvironmentName;
72
+ tag?: string;
73
+ since?: Date | number;
74
+ until?: Date | number;
75
+ cursor?: string;
76
+ limit?: number;
77
+ }
78
+ export interface MintAccessTokenOptions {
79
+ target: {
80
+ kind: "run";
81
+ runId: string;
82
+ } | {
83
+ kind: "workflow";
84
+ workflowId: string;
85
+ } | {
86
+ kind: "tag";
87
+ tag: string;
88
+ };
89
+ scope: ("read" | "trigger" | "cancel")[];
90
+ ttl?: Duration;
91
+ }
92
+ export interface PublicAccessToken {
93
+ token: string;
94
+ exp: number;
95
+ }
96
+ /**
97
+ * Top-level server SDK client. Resolves against the configured
98
+ * Voyant Cloud API key and account. The runtime implementation is
99
+ * installed by the cloud client package; imported alone, every
100
+ * method throws with guidance.
101
+ */
102
+ export declare const workflows: WorkflowsClient;
103
+ export interface EventFilterHandle {
104
+ readonly id: string;
105
+ readonly event: string;
106
+ }
107
+ export interface EventFilterDeclaration<T> {
108
+ target: WorkflowHandle<T, unknown>;
109
+ match?: (payload: T, ctx: {
110
+ environment: EnvironmentContext;
111
+ project: {
112
+ id: string;
113
+ };
114
+ }) => boolean;
115
+ scope?: string;
116
+ input?: (payload: T) => unknown;
117
+ }
118
+ export interface TriggerApi {
119
+ on<T = unknown>(event: string, filter: EventFilterDeclaration<T>): EventFilterHandle;
120
+ }
121
+ export declare const trigger: TriggerApi;
122
+ //# sourceMappingURL=trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../src/trigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ // Triggering workflows from server code, plus event filter declarations.
2
+ // Authoritative contract in docs/sdk-surface.md §6.
3
+ /**
4
+ * Top-level server SDK client. Resolves against the configured
5
+ * Voyant Cloud API key and account. The runtime implementation is
6
+ * installed by the cloud client package; imported alone, every
7
+ * method throws with guidance.
8
+ */
9
+ export const workflows = new Proxy({}, {
10
+ get(_, method) {
11
+ return () => {
12
+ throw new Error(`@voyantjs/workflows: workflows.${method}() requires the Voyant Cloud client. ` +
13
+ `Install + configure it via @voyantjs/client, or see docs/sdk-surface.md §6.`);
14
+ };
15
+ },
16
+ });
17
+ export const trigger = {
18
+ on(_event, _filter) {
19
+ throw new Error("@voyantjs/workflows: trigger.on() must be collected by `voyant workflows build` and " +
20
+ "registered with the orchestrator at deploy time; it has no runtime behavior when " +
21
+ "called directly. See docs/sdk-surface.md §6.2.");
22
+ },
23
+ };
@@ -0,0 +1,63 @@
1
+ export type Duration = number | `${number}${"ms" | "s" | "m" | "h" | "d" | "w"}`;
2
+ /**
3
+ * Cloudflare Container instance types — the set Voyant Cloud honors
4
+ * for `runtime: "node"` steps. Match the sizes published at
5
+ * https://developers.cloudflare.com/containers/ (as of
6
+ * compat-date 2026-04-01).
7
+ *
8
+ * | name | vCPU | memory | disk |
9
+ * | ----------- | ----- | ------- | ----- |
10
+ * | lite | 1/16 | 256 MiB | 2 GB |
11
+ * | basic | 1/4 | 1 GiB | 4 GB |
12
+ * | standard-1 | 1/2 | 4 GiB | 8 GB |
13
+ * | standard-2 | 1 | 6 GiB | 12 GB |
14
+ * | standard-3 | 2 | 8 GiB | 16 GB |
15
+ * | standard-4 | 4 | 12 GiB | 20 GB |
16
+ *
17
+ * The open `(string & {})` escape hatch accepts CF custom instance
18
+ * types (up to 4 vCPU / 12 GiB / 20 GB, min 3 GiB RAM per vCPU) —
19
+ * rendered as `"custom-<vcpu>-<ramGiB>"` by convention.
20
+ */
21
+ export type MachineType = "lite" | "basic" | "standard-1" | "standard-2" | "standard-3" | "standard-4" | (string & {});
22
+ export type EnvironmentName = "production" | "preview" | "development";
23
+ export type RunStatus = "pending" | "running" | "waiting" | "completed" | "failed" | "cancelled" | "cancelled_by_dev_reload" | "cancelled_by_version_sunset" | "compensated" | "compensation_failed" | "timed_out";
24
+ export type ExecutionStatus = "CREATED" | "QUEUED" | "EXECUTING" | "EXECUTING_WITH_WAITPOINTS" | "SUSPENDED" | "PENDING_CANCEL" | "FINISHED";
25
+ export type WaitpointKind = "DATETIME" | "EVENT" | "SIGNAL" | "RUN" | "MANUAL";
26
+ export interface RetryPolicy {
27
+ max?: number;
28
+ backoff?: "exponential" | "linear" | "fixed";
29
+ initial?: Duration;
30
+ maxDelay?: Duration;
31
+ }
32
+ export interface RateLimitSpec {
33
+ key: string | ((input: unknown, ctx: {
34
+ run: {
35
+ id: string;
36
+ };
37
+ project: {
38
+ id: string;
39
+ };
40
+ }) => string);
41
+ limit: number | ((input: unknown) => number);
42
+ units?: number | ((input: unknown) => number);
43
+ window: Duration;
44
+ onLimit?: "queue" | "fail";
45
+ }
46
+ export type RunTrigger = {
47
+ kind: "api";
48
+ actor?: string;
49
+ accessTokenId?: string;
50
+ } | {
51
+ kind: "schedule";
52
+ scheduleId: string;
53
+ } | {
54
+ kind: "event";
55
+ eventId: string;
56
+ eventType: string;
57
+ filterId: string;
58
+ } | {
59
+ kind: "parent";
60
+ parentRunId: string;
61
+ parentStepId: string;
62
+ };
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;AAEhF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,aAAa,CAAA;AAEtE,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,yBAAyB,GACzB,6BAA6B,GAC7B,aAAa,GACb,qBAAqB,GACrB,WAAW,CAAA;AAEf,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,QAAQ,GACR,WAAW,GACX,2BAA2B,GAC3B,WAAW,GACX,gBAAgB,GAChB,UAAU,CAAA;AAEd,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9E,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAA;IAC5C,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,KAAK,MAAM,CAAC,CAAA;IACjG,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,CAAA;IAC7C,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // Core type aliases used across the SDK.
2
+ // Authoritative definitions in docs/sdk-surface.md §0 and §2.
3
+ export {};
@@ -0,0 +1,212 @@
1
+ import type { Condition } from "./conditions.js";
2
+ import type { Duration, EnvironmentName, MachineType, RateLimitSpec, RetryPolicy, RunStatus, RunTrigger } from "./types.js";
3
+ export interface WorkflowHandle<TInput = unknown, TOutput = unknown> {
4
+ readonly id: string;
5
+ /** Phantom; used only for TypeScript inference of `workflows.trigger(...)`. */
6
+ readonly __input?: TInput;
7
+ readonly __output?: TOutput;
8
+ }
9
+ export interface WorkflowConfig<TInput, TOutput> {
10
+ id: string;
11
+ input?: unknown;
12
+ output?: unknown;
13
+ description?: string;
14
+ schedule?: ScheduleDeclaration | ScheduleDeclaration[];
15
+ concurrency?: ConcurrencyPolicy<TInput>;
16
+ retry?: RetryPolicy;
17
+ timeout?: Duration;
18
+ defaultRuntime?: "edge" | "node";
19
+ tags?: string[];
20
+ run: (input: TInput, ctx: WorkflowContext<TInput>) => Promise<TOutput>;
21
+ }
22
+ /**
23
+ * Internal registered form of a workflow. The executor takes this
24
+ * plus a request and drives the body.
25
+ */
26
+ export interface WorkflowDefinition<TInput = unknown, TOutput = unknown> extends WorkflowHandle<TInput, TOutput> {
27
+ readonly config: WorkflowConfig<TInput, TOutput>;
28
+ }
29
+ export type ScheduleDeclaration = ({
30
+ cron: string;
31
+ } | {
32
+ every: Duration;
33
+ } | {
34
+ at: string | Date;
35
+ }) & {
36
+ timezone?: string;
37
+ input?: unknown | (() => unknown | Promise<unknown>);
38
+ enabled?: boolean;
39
+ overlap?: "skip" | "queue" | "allow";
40
+ environments?: EnvironmentName[];
41
+ name?: string;
42
+ };
43
+ export interface ConcurrencyPolicy<TInput> {
44
+ key?: string | ((input: TInput) => string);
45
+ limit?: number;
46
+ strategy?: "queue" | "cancel-in-progress" | "cancel-newest" | "round-robin";
47
+ }
48
+ /** Declare a workflow. See docs/sdk-surface.md §2.1. */
49
+ export declare function workflow<TInput = unknown, TOutput = unknown>(config: WorkflowConfig<TInput, TOutput>): WorkflowDefinition<TInput, TOutput>;
50
+ /** Internal: look up a registered workflow by id. */
51
+ export declare function getWorkflow(id: string): WorkflowDefinition | undefined;
52
+ /**
53
+ * Internal: enumerate every registered workflow. Used by the CLI to list
54
+ * workflows discovered from a loaded entry file. Not part of the stable
55
+ * public API — implementation detail of the SDK/CLI pair.
56
+ */
57
+ export declare function __listRegisteredWorkflows(): WorkflowDefinition[];
58
+ /**
59
+ * Internal: clear the workflow registry. Called by the CLI between
60
+ * builds / hot-reloads to drop stale workflows before re-importing
61
+ * the tenant bundle, and by test suites in beforeEach to isolate
62
+ * runs. Not part of the stable public API.
63
+ */
64
+ export declare function __resetRegistry(): void;
65
+ export interface RunContext {
66
+ id: string;
67
+ number: number;
68
+ attempt: number;
69
+ triggeredBy: RunTrigger;
70
+ tags: readonly string[];
71
+ startedAt: number;
72
+ }
73
+ export interface EnvironmentContext {
74
+ name: EnvironmentName;
75
+ git?: {
76
+ commit: string;
77
+ branch: string;
78
+ pr?: {
79
+ number: number;
80
+ url: string;
81
+ };
82
+ };
83
+ }
84
+ export interface WorkflowContext<_TInput = unknown> {
85
+ readonly run: RunContext;
86
+ readonly workflow: {
87
+ id: string;
88
+ version: string;
89
+ };
90
+ readonly environment: EnvironmentContext;
91
+ readonly project: {
92
+ id: string;
93
+ slug: string;
94
+ };
95
+ readonly organization: {
96
+ id: string;
97
+ slug: string;
98
+ };
99
+ readonly invocationCount: number;
100
+ readonly signal: AbortSignal;
101
+ step: StepApi;
102
+ sleep: (duration: Duration) => Promise<void>;
103
+ waitForEvent: WaitForEventApi;
104
+ waitForSignal: WaitForSignalApi;
105
+ waitForToken: WaitForTokenApi;
106
+ invoke: InvokeApi;
107
+ parallel: ParallelApi;
108
+ stream: StreamApi;
109
+ group: GroupApi;
110
+ compensate: () => Promise<never>;
111
+ metadata: MetadataApi;
112
+ now: () => number;
113
+ random: () => number;
114
+ randomUUID: () => string;
115
+ setRetry: (policy: RetryPolicy) => void;
116
+ }
117
+ export interface StepApi {
118
+ <T>(id: string, fn: StepFn<T>): Promise<T>;
119
+ <T>(id: string, opts: StepOptions<T>, fn: StepFn<T>): Promise<T>;
120
+ }
121
+ export type StepFn<T> = (stepCtx: StepContext) => Promise<T>;
122
+ export interface StepContext {
123
+ signal: AbortSignal;
124
+ attempt: number;
125
+ log: (level: "info" | "warn" | "error", msg: string, data?: object) => void;
126
+ }
127
+ export interface StepOptions<T = unknown> {
128
+ runtime?: "edge" | "node";
129
+ machine?: MachineType;
130
+ timeout?: Duration;
131
+ retry?: RetryPolicy | {
132
+ max: 0;
133
+ };
134
+ idempotencyKey?: string;
135
+ compensate?: (output: T) => Promise<void>;
136
+ rateLimit?: RateLimitSpec;
137
+ waitFor?: Condition;
138
+ cancelIf?: Condition;
139
+ skipIf?: Condition;
140
+ }
141
+ export interface Waitable<T> extends PromiseLike<T | null> {
142
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
143
+ close(): void;
144
+ }
145
+ export type WaitForEventApi = <T = unknown>(eventType: string, opts?: WaitForEventOptions<T>) => Waitable<T>;
146
+ export interface WaitForEventOptions<T> {
147
+ match?: Partial<T> | ((payload: T) => boolean);
148
+ timeout?: Duration;
149
+ lookback?: Duration;
150
+ bufferSize?: number;
151
+ onTimeout?: "null" | "throw";
152
+ }
153
+ export type WaitForSignalApi = <T = unknown>(name: string, opts?: WaitForSignalOptions<T>) => Waitable<T>;
154
+ export interface WaitForSignalOptions<T> extends WaitForEventOptions<T> {
155
+ }
156
+ export type WaitForTokenApi = <T = unknown>(opts?: WaitForTokenOptions<T>) => Promise<TokenWait<T>>;
157
+ export interface WaitForTokenOptions<_T> {
158
+ tokenId?: string;
159
+ timeout?: Duration;
160
+ onTimeout?: "null" | "throw";
161
+ schema?: unknown;
162
+ }
163
+ export interface TokenWait<T> {
164
+ tokenId: string;
165
+ url: string;
166
+ wait: () => Promise<T | null>;
167
+ }
168
+ export type InvokeApi = <TIn, TOut>(workflow: WorkflowHandle<TIn, TOut>, input: TIn, opts?: InvokeOptions) => Promise<TOut>;
169
+ export interface InvokeOptions {
170
+ idempotencyKey?: string;
171
+ tags?: string[];
172
+ lockToVersion?: string;
173
+ /**
174
+ * Fire-and-forget child run. The child is still triggered and
175
+ * persisted, but the parent does not wait for its output or error.
176
+ * The awaited result resolves to `undefined`; callers should not use
177
+ * detached invokes for control flow.
178
+ */
179
+ detach?: boolean;
180
+ }
181
+ export type ParallelApi = <T, R>(items: readonly T[], fn: (item: T, index: number) => Promise<R>, opts?: ParallelOptions) => Promise<R[]>;
182
+ export interface ParallelOptions {
183
+ concurrency?: number;
184
+ settle?: boolean;
185
+ }
186
+ export interface StreamApi {
187
+ text(streamId: string, source: AsyncIterable<string>): Promise<void>;
188
+ json<T>(streamId: string, source: AsyncIterable<T>): Promise<void>;
189
+ bytes(streamId: string, source: AsyncIterable<Uint8Array>): Promise<void>;
190
+ <T>(streamId: string, fn: () => AsyncGenerator<T>): Promise<void>;
191
+ }
192
+ export type GroupApi = <T>(name: string, fn: (scope: GroupScope) => Promise<T>) => Promise<T>;
193
+ export interface GroupScope {
194
+ step: StepApi;
195
+ compensate: () => Promise<never>;
196
+ }
197
+ export type MetadataValue = string | number | boolean | null | MetadataValue[] | {
198
+ [key: string]: MetadataValue;
199
+ };
200
+ export interface MetadataMutatorSubset {
201
+ set(key: string, value: MetadataValue): void;
202
+ increment(key: string, by?: number): void;
203
+ append<T>(key: string, value: T): void;
204
+ remove(key: string): void;
205
+ }
206
+ export interface MetadataApi extends MetadataMutatorSubset {
207
+ flush(): Promise<void>;
208
+ parent?: MetadataMutatorSubset;
209
+ root?: MetadataMutatorSubset;
210
+ }
211
+ export type { RunStatus };
212
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ // Workflow declaration and the `ctx` object.
2
+ // Authoritative contract in docs/sdk-surface.md §2–§3.
3
+ /**
4
+ * Process-local registry. Backed by globalThis so bundles that inline
5
+ * their own copy of @voyantjs/workflows still share the registry with
6
+ * the loader's copy (voyant build relies on this to extract the
7
+ * manifest from a user bundle at load-time). Module-local `const`
8
+ * would create a private map per bundle copy.
9
+ */
10
+ const REGISTRY_KEY = "__voyantWorkflowRegistry";
11
+ const globalRef = globalThis;
12
+ const REGISTRY = globalRef[REGISTRY_KEY] ?? new Map();
13
+ globalRef[REGISTRY_KEY] = REGISTRY;
14
+ /** Declare a workflow. See docs/sdk-surface.md §2.1. */
15
+ export function workflow(config) {
16
+ if (REGISTRY.has(config.id)) {
17
+ throw new Error(`workflow id "${config.id}" is already registered`);
18
+ }
19
+ const def = {
20
+ id: config.id,
21
+ config,
22
+ };
23
+ REGISTRY.set(config.id, def);
24
+ return def;
25
+ }
26
+ /** Internal: look up a registered workflow by id. */
27
+ export function getWorkflow(id) {
28
+ return REGISTRY.get(id);
29
+ }
30
+ /**
31
+ * Internal: enumerate every registered workflow. Used by the CLI to list
32
+ * workflows discovered from a loaded entry file. Not part of the stable
33
+ * public API — implementation detail of the SDK/CLI pair.
34
+ */
35
+ export function __listRegisteredWorkflows() {
36
+ return [...REGISTRY.values()];
37
+ }
38
+ /**
39
+ * Internal: clear the workflow registry. Called by the CLI between
40
+ * builds / hot-reloads to drop stale workflows before re-importing
41
+ * the tenant bundle, and by test suites in beforeEach to isolate
42
+ * runs. Not part of the stable public API.
43
+ */
44
+ export function __resetRegistry() {
45
+ REGISTRY.clear();
46
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@voyantjs/workflows",
3
- "version": "0.6.7",
4
- "description": "Authoring SDK for Voyant Workflows \u2014 durable, step-based orchestrations for Voyant Cloud.",
3
+ "version": "0.6.9",
4
+ "description": "Authoring SDK for Voyant Workflows durable, step-based orchestrations for Voyant Cloud.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -12,32 +12,32 @@
12
12
  "type": "module",
13
13
  "exports": {
14
14
  ".": {
15
- "types": "./src/index.ts",
16
- "import": "./src/index.ts"
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
17
  },
18
18
  "./testing": {
19
- "types": "./src/testing/index.ts",
20
- "import": "./src/testing/index.ts"
19
+ "types": "./dist/testing/index.d.ts",
20
+ "import": "./dist/testing/index.js"
21
21
  },
22
22
  "./protocol": {
23
- "types": "./src/protocol/index.ts",
24
- "import": "./src/protocol/index.ts"
23
+ "types": "./dist/protocol/index.d.ts",
24
+ "import": "./dist/protocol/index.js"
25
25
  },
26
26
  "./handler": {
27
- "types": "./src/handler/index.ts",
28
- "import": "./src/handler/index.ts"
27
+ "types": "./dist/handler/index.d.ts",
28
+ "import": "./dist/handler/index.js"
29
29
  },
30
30
  "./auth": {
31
- "types": "./src/auth/index.ts",
32
- "import": "./src/auth/index.ts"
31
+ "types": "./dist/auth/index.d.ts",
32
+ "import": "./dist/auth/index.js"
33
33
  },
34
34
  "./rate-limit": {
35
- "types": "./src/rate-limit/index.ts",
36
- "import": "./src/rate-limit/index.ts"
35
+ "types": "./dist/rate-limit/index.d.ts",
36
+ "import": "./dist/rate-limit/index.js"
37
37
  }
38
38
  },
39
- "main": "./src/index.ts",
40
- "types": "./src/index.ts",
39
+ "main": "./dist/index.js",
40
+ "types": "./dist/index.d.ts",
41
41
  "files": [
42
42
  "dist",
43
43
  "src",
@@ -45,24 +45,15 @@
45
45
  "!**/*.spec.*",
46
46
  "NOTICE"
47
47
  ],
48
- "scripts": {
49
- "build": "tsc -p tsconfig.json",
50
- "build:examples": "tsc -p tsconfig.examples.json",
51
- "spike": "pnpm build && pnpm build:examples && node examples-dist/drive.js",
52
- "check-types": "tsc --noEmit",
53
- "dev": "tsc -w -p tsconfig.json",
54
- "test": "vitest run",
55
- "test:watch": "vitest"
56
- },
57
48
  "dependencies": {
58
- "@voyantjs/workflows-errors": "workspace:*",
59
- "zod": "^3.23.8"
49
+ "zod": "^3.23.8",
50
+ "@voyantjs/workflows-errors": "0.6.9"
60
51
  },
61
52
  "devDependencies": {
62
53
  "@types/node": "^20.12.0",
63
- "@voyantjs/voyant-typescript-config": "workspace:*",
64
54
  "typescript": "^5.9.2",
65
- "vitest": "^3.2.0"
55
+ "vitest": "^3.2.0",
56
+ "@voyantjs/voyant-typescript-config": "0.1.0"
66
57
  },
67
58
  "peerDependencies": {
68
59
  "zod": "^3.23.0 || ^4.0.0"
@@ -74,5 +65,14 @@
74
65
  },
75
66
  "publishConfig": {
76
67
  "access": "public"
68
+ },
69
+ "scripts": {
70
+ "build": "tsc -p tsconfig.json",
71
+ "build:examples": "tsc -p tsconfig.examples.json",
72
+ "spike": "pnpm build && pnpm build:examples && node examples-dist/drive.js",
73
+ "check-types": "tsc --noEmit",
74
+ "dev": "tsc -w -p tsconfig.json",
75
+ "test": "vitest run",
76
+ "test:watch": "vitest"
77
77
  }
78
- }
78
+ }