@temporal-contract/worker 1.0.0 → 2.1.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.
@@ -1,9 +1,8 @@
1
- import { _ as WorkerInferOutput, a as ChildWorkflowNotFoundError, c as SignalInputValidationError, d as WorkflowCancelledError, f as WorkflowInputValidationError, g as WorkerInferInput, h as ClientInferOutput, i as ChildWorkflowError, l as UpdateInputValidationError, m as ClientInferInput, n as ActivityInputValidationError, o as QueryInputValidationError, p as WorkflowOutputValidationError, r as ActivityOutputValidationError, s as QueryOutputValidationError, u as UpdateOutputValidationError } from "./errors-CG1y7SHO.cjs";
2
- import { ActivityDefinition, ContractDefinition, QueryDefinition, SignalDefinition, UpdateDefinition, WorkflowDefinition } from "@temporal-contract/contract";
1
+ import { _ as ClientInferOutput, a as ChildWorkflowError, c as QueryOutputValidationError, d as UpdateOutputValidationError, f as WorkflowCancelledError, g as ClientInferInput, h as WorkflowScopeError, i as ChildWorkflowCancelledError, l as SignalInputValidationError, m as WorkflowOutputValidationError, n as ActivityInputValidationError, o as ChildWorkflowNotFoundError, p as WorkflowInputValidationError, r as ActivityOutputValidationError, s as QueryInputValidationError, u as UpdateInputValidationError, v as WorkerInferInput, y as WorkerInferOutput } from "./errors-DTq5OTwH.cjs";
2
+ import { ActivityDefinition, AnyWorkflowDefinition, ContractDefinition, QueryDefinition, QueryNamesOf, SignalDefinition, SignalNamesOf, UpdateDefinition, UpdateNamesOf } from "@temporal-contract/contract";
3
+ import { ResultAsync } from "neverthrow";
3
4
  import { StandardSchemaV1 } from "@standard-schema/spec";
4
- import { Future, Result } from "@temporal-contract/boxed";
5
5
  import { ActivityOptions, ChildWorkflowOptions, ContinueAsNewOptions, WorkflowInfo } from "@temporalio/workflow";
6
-
7
6
  //#region src/handlers.d.ts
8
7
  /**
9
8
  * Signal handler implementation
@@ -35,6 +34,51 @@ type UpdateHandlerImplementation<TUpdate extends UpdateDefinition> = (args: Work
35
34
  */
36
35
  type TypedContinueAsNewOptions = Omit<ContinueAsNewOptions, "workflowType" | "taskQueue">;
37
36
  //#endregion
37
+ //#region src/child-workflow.d.ts
38
+ /**
39
+ * Options for starting a child workflow. `taskQueue` and `args` come from
40
+ * the contract; everything else is forwarded to Temporal's
41
+ * `startChild` / `executeChild`.
42
+ */
43
+ type TypedChildWorkflowOptions<TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string> = Omit<ChildWorkflowOptions, "taskQueue" | "args"> & {
44
+ args: ClientInferInput<TChildContract["workflows"][TChildWorkflowName]>;
45
+ };
46
+ /**
47
+ * Typed handle for a child workflow with neverthrow `ResultAsync` pattern.
48
+ */
49
+ type TypedChildWorkflowHandle<TWorkflow extends AnyWorkflowDefinition> = {
50
+ /**
51
+ * Get child workflow result with `ResultAsync` pattern.
52
+ */
53
+ result: () => ResultAsync<ClientInferOutput<TWorkflow>, ChildWorkflowError | ChildWorkflowCancelledError>;
54
+ /**
55
+ * Child workflow ID.
56
+ */
57
+ workflowId: string;
58
+ };
59
+ //#endregion
60
+ //#region src/activities-proxy.d.ts
61
+ /**
62
+ * Activity function signature from workflow execution perspective.
63
+ *
64
+ * Workflows call activities with validated input (z.input parsed) and receive validated output (z.output).
65
+ */
66
+ type WorkflowInferActivity<TActivity extends ActivityDefinition> = (args: ClientInferInput<TActivity>) => Promise<ClientInferOutput<TActivity>>;
67
+ /**
68
+ * All global activities from a contract (workflow execution perspective).
69
+ */
70
+ type WorkflowInferActivities<TContract extends ContractDefinition> = TContract["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof TContract["activities"]]: WorkflowInferActivity<TContract["activities"][K]> } : {};
71
+ /**
72
+ * Workflow-specific activities (workflow execution perspective).
73
+ */
74
+ type WorkflowInferWorkflowActivities<T extends AnyWorkflowDefinition> = T["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof T["activities"]]: WorkflowInferActivity<T["activities"][K]> } : {};
75
+ /**
76
+ * All activities available in a workflow context (workflow execution perspective).
77
+ *
78
+ * Combines workflow-specific activities with global contract activities.
79
+ */
80
+ type WorkflowInferWorkflowContextActivities<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = WorkflowInferWorkflowActivities<TContract["workflows"][TWorkflowName]> & WorkflowInferActivities<TContract>;
81
+ //#endregion
38
82
  //#region src/workflow.d.ts
39
83
  /**
40
84
  * Create a typed workflow implementation with automatic validation
@@ -109,7 +153,7 @@ type TypedContinueAsNewOptions = Omit<ContinueAsNewOptions, "workflowType" | "ta
109
153
  * });
110
154
  * ```
111
155
  */
112
- declare function declareWorkflow<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]>({
156
+ declare function declareWorkflow<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string>({
113
157
  workflowName,
114
158
  contract,
115
159
  implementation,
@@ -120,11 +164,11 @@ declare function declareWorkflow<TContract extends ContractDefinition, TWorkflow
120
164
  * Union of all activity names available to a workflow — the workflow-local
121
165
  * activities plus the contract's global activities.
122
166
  */
123
- type ActivityNamesFor<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = (TContract["workflows"][TWorkflowName]["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["workflows"][TWorkflowName]["activities"] & string : never) | (TContract["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["activities"] & string : never);
167
+ type ActivityNamesFor<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = (TContract["workflows"][TWorkflowName]["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["workflows"][TWorkflowName]["activities"] & string : never) | (TContract["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["activities"] & string : never);
124
168
  /**
125
169
  * Options for declaring a workflow implementation
126
170
  */
127
- type DeclareWorkflowOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = {
171
+ type DeclareWorkflowOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = {
128
172
  workflowName: TWorkflowName;
129
173
  contract: TContract;
130
174
  implementation: WorkflowImplementation<TContract, TWorkflowName>;
@@ -178,7 +222,7 @@ type DeclareWorkflowOptions<TContract extends ContractDefinition, TWorkflowName
178
222
  * Receives a workflow context (with typed activities and utilities) and validated input arguments.
179
223
  * Returns the workflow output which will be validated against the contract schema.
180
224
  */
181
- type WorkflowImplementation<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = (context: WorkflowContext<TContract, TWorkflowName>, args: WorkerInferInput<TContract["workflows"][TWorkflowName]>) => Promise<WorkerInferOutput<TContract["workflows"][TWorkflowName]>>;
225
+ type WorkflowImplementation<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = (context: WorkflowContext<TContract, TWorkflowName>, args: WorkerInferInput<TContract["workflows"][TWorkflowName]>) => Promise<WorkerInferOutput<TContract["workflows"][TWorkflowName]>>;
182
226
  /**
183
227
  * Workflow execution context providing typed activities, workflow info, and interaction handlers
184
228
  *
@@ -188,8 +232,8 @@ type WorkflowImplementation<TContract extends ContractDefinition, TWorkflowName
188
232
  * - Signal, query, and update handler registration
189
233
  * - Child workflow execution capabilities
190
234
  */
191
- type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = {
192
- activities: WorkflowInferWorkflowContextActivities<TContract, TWorkflowName>;
235
+ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = {
236
+ activities: Readonly<WorkflowInferWorkflowContextActivities<TContract, TWorkflowName>>;
193
237
  info: WorkflowInfo;
194
238
  /**
195
239
  * Define a signal handler within the workflow implementation
@@ -208,7 +252,7 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
208
252
  * }
209
253
  * ```
210
254
  */
211
- defineSignal: <K extends keyof TContract["workflows"][TWorkflowName]["signals"]>(signalName: K, handler: SignalHandlerImplementation<TContract["workflows"][TWorkflowName]["signals"][K] extends SignalDefinition ? TContract["workflows"][TWorkflowName]["signals"][K] : never>) => void;
255
+ defineSignal: <K extends SignalNamesOf<TContract["workflows"][TWorkflowName]>>(signalName: K, handler: SignalHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["signals"]> extends Record<string, SignalDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["signals"]>[K] extends SignalDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["signals"]>[K] : never : never>) => void;
212
256
  /**
213
257
  * Define a query handler within the workflow implementation
214
258
  * Allows the query handler to access workflow state
@@ -226,7 +270,7 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
226
270
  * }
227
271
  * ```
228
272
  */
229
- defineQuery: <K extends keyof TContract["workflows"][TWorkflowName]["queries"]>(queryName: K, handler: QueryHandlerImplementation<TContract["workflows"][TWorkflowName]["queries"][K] extends QueryDefinition ? TContract["workflows"][TWorkflowName]["queries"][K] : never>) => void;
273
+ defineQuery: <K extends QueryNamesOf<TContract["workflows"][TWorkflowName]>>(queryName: K, handler: QueryHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["queries"]> extends Record<string, QueryDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["queries"]>[K] extends QueryDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["queries"]>[K] : never : never>) => void;
230
274
  /**
231
275
  * Define an update handler within the workflow implementation
232
276
  * Allows the update handler to access and modify workflow state
@@ -245,9 +289,9 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
245
289
  * }
246
290
  * ```
247
291
  */
248
- defineUpdate: <K extends keyof TContract["workflows"][TWorkflowName]["updates"]>(updateName: K, handler: UpdateHandlerImplementation<TContract["workflows"][TWorkflowName]["updates"][K] extends UpdateDefinition ? TContract["workflows"][TWorkflowName]["updates"][K] : never>) => void;
292
+ defineUpdate: <K extends UpdateNamesOf<TContract["workflows"][TWorkflowName]>>(updateName: K, handler: UpdateHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["updates"]> extends Record<string, UpdateDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["updates"]>[K] extends UpdateDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["updates"]>[K] : never : never>) => void;
249
293
  /**
250
- * Start a child workflow and return a typed handle with Future/Result pattern
294
+ * Start a child workflow and return a typed handle with ResultAsync pattern
251
295
  *
252
296
  * Supports both same-contract and cross-contract child workflows:
253
297
  * - Same contract: Pass workflowName from current contract
@@ -267,18 +311,18 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
267
311
  * args: { message: 'Hello' }
268
312
  * });
269
313
  *
270
- * childResult.match({
271
- * Ok: async (handle) => {
314
+ * childResult.match(
315
+ * async (handle) => {
272
316
  * const result = await handle.result();
273
317
  * // ... handle result
274
318
  * },
275
- * Error: (error) => console.error('Failed to start:', error),
276
- * });
319
+ * (error) => console.error('Failed to start:', error),
320
+ * );
277
321
  * ```
278
322
  */
279
- startChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"]>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => Future<Result<TypedChildWorkflowHandle<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError>>;
323
+ startChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => ResultAsync<TypedChildWorkflowHandle<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError | ChildWorkflowCancelledError | ChildWorkflowNotFoundError>;
280
324
  /**
281
- * Execute a child workflow (start and wait for result) with Future/Result pattern
325
+ * Execute a child workflow (start and wait for result) with ResultAsync pattern
282
326
  *
283
327
  * Supports both same-contract and cross-contract child workflows:
284
328
  * - Same contract: Pass workflowName from current contract
@@ -298,22 +342,25 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
298
342
  * args: { message: 'Hello' }
299
343
  * });
300
344
  *
301
- * result.match({
302
- * Ok: (output) => console.log('Payment processed:', output),
303
- * Error: (error) => console.error('Processing failed:', error),
304
- * });
345
+ * result.match(
346
+ * (output) => console.log('Payment processed:', output),
347
+ * (error) => console.error('Processing failed:', error),
348
+ * );
305
349
  * ```
306
350
  */
307
- executeChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"]>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => Future<Result<ClientInferOutput<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError>>;
351
+ executeChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => ResultAsync<ClientInferOutput<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError | ChildWorkflowCancelledError | ChildWorkflowNotFoundError>;
308
352
  /**
309
353
  * Run `fn` inside a cancellable Temporal scope. If the workflow (or an
310
354
  * ancestor scope) is cancelled while `fn` is in flight, the resulting
311
- * Future resolves to `Result.Error(WorkflowCancelledError)` instead of
355
+ * ResultAsync resolves to `err(WorkflowCancelledError)` instead of
312
356
  * rejecting — letting callers handle cancellation explicitly, typically
313
357
  * to perform a graceful exit from the current step.
314
358
  *
315
- * Non-cancellation errors thrown by `fn` propagate as Future rejections
316
- * unchanged, preserving their identity for upstream `try/catch` blocks.
359
+ * Non-cancellation errors thrown by `fn` resolve to
360
+ * `err(WorkflowScopeError)` (with the original error preserved on
361
+ * `cause`). Both failure modes ride neverthrow's railway, so
362
+ * `result.match(...)` is exhaustive — nothing escapes as an unhandled
363
+ * rejection.
317
364
  *
318
365
  * @example
319
366
  * ```ts
@@ -322,30 +369,35 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
322
369
  * return context.activities.processStep(args);
323
370
  * });
324
371
  *
325
- * if (result.isError()) {
326
- * // workflow was cancelled — perform cleanup that must not be cancelled:
327
- * await context.nonCancellableScope(async () => {
328
- * await context.activities.releaseResources(args);
329
- * });
330
- * return { status: "cancelled" };
372
+ * if (result.isErr()) {
373
+ * if (result.error instanceof WorkflowCancelledError) {
374
+ * // workflow was cancelled — perform cleanup that must not be cancelled:
375
+ * await context.nonCancellableScope(async () => {
376
+ * await context.activities.releaseResources(args);
377
+ * });
378
+ * return { status: "cancelled" };
379
+ * }
380
+ * // result.error instanceof WorkflowScopeError — domain failure
381
+ * return { status: "failed" };
331
382
  * }
332
383
  *
333
384
  * return { status: "ok" };
334
385
  * }
335
386
  * ```
336
387
  */
337
- cancellableScope: <T>(fn: () => T | Promise<T>) => Future<Result<T, WorkflowCancelledError>>;
388
+ cancellableScope: <T>(fn: () => T | Promise<T>) => ResultAsync<T, WorkflowCancelledError | WorkflowScopeError>;
338
389
  /**
339
390
  * Run `fn` inside a non-cancellable Temporal scope. Cancellation requests
340
391
  * from outside the scope are ignored for its duration — the idiomatic way
341
392
  * to perform cleanup work that must not be interrupted.
342
393
  *
343
- * Returns the same `Future<Result<...>>` shape as
394
+ * Returns the same `ResultAsync<...>` shape as
344
395
  * {@link WorkflowContext.cancellableScope} for symmetry; the
345
- * `Result.Error` branch only triggers when cancellation is raised from
346
- * *inside* the scope, which is rare.
396
+ * `err(WorkflowCancelledError)` branch only triggers when cancellation is
397
+ * raised from *inside* the scope, which is rare. Non-cancellation errors
398
+ * surface as `err(WorkflowScopeError)`.
347
399
  */
348
- nonCancellableScope: <T>(fn: () => T | Promise<T>) => Future<Result<T, WorkflowCancelledError>>;
400
+ nonCancellableScope: <T>(fn: () => T | Promise<T>) => ResultAsync<T, WorkflowCancelledError | WorkflowScopeError>;
349
401
  /**
350
402
  * Continue this workflow execution as a new run, optionally with a different
351
403
  * workflow type from another contract.
@@ -375,48 +427,9 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
375
427
  */
376
428
  continueAsNew: {
377
429
  /** Same-workflow continuation — args typed against this workflow's input. */(args: ClientInferInput<TContract["workflows"][TWorkflowName]>, options?: TypedContinueAsNewOptions): Promise<never>; /** Cross-contract continuation — args typed against the destination workflow. */
378
- <TOtherContract extends ContractDefinition, TOtherWorkflowName extends keyof TOtherContract["workflows"]>(contract: TOtherContract, workflowName: TOtherWorkflowName, args: ClientInferInput<TOtherContract["workflows"][TOtherWorkflowName]>, options?: TypedContinueAsNewOptions): Promise<never>;
430
+ <TOtherContract extends ContractDefinition, TOtherWorkflowName extends keyof TOtherContract["workflows"] & string>(contract: TOtherContract, workflowName: TOtherWorkflowName, args: ClientInferInput<TOtherContract["workflows"][TOtherWorkflowName]>, options?: TypedContinueAsNewOptions): Promise<never>;
379
431
  };
380
- };
381
- /**
382
- * Options for starting a child workflow
383
- */
384
- type TypedChildWorkflowOptions<TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"]> = Omit<ChildWorkflowOptions, "taskQueue" | "args"> & {
385
- args: ClientInferInput<TChildContract["workflows"][TChildWorkflowName]>;
386
- };
387
- /**
388
- * Typed handle for a child workflow with Future/Result pattern
389
- */
390
- type TypedChildWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
391
- /**
392
- * Get child workflow result with Result pattern
393
- */
394
- result: () => Future<Result<ClientInferOutput<TWorkflow>, ChildWorkflowError>>;
395
- /**
396
- * Child workflow ID
397
- */
398
- workflowId: string;
399
- };
400
- /**
401
- * Activity function signature from workflow execution perspective
402
- *
403
- * Workflows call activities with validated input (z.input parsed) and receive validated output (z.output)
404
- */
405
- type WorkflowInferActivity<TActivity extends ActivityDefinition> = (args: ClientInferInput<TActivity>) => Promise<ClientInferOutput<TActivity>>;
406
- /**
407
- * All global activities from a contract (workflow execution perspective)
408
- */
409
- type WorkflowInferActivities<TContract extends ContractDefinition> = TContract["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof TContract["activities"]]: WorkflowInferActivity<TContract["activities"][K]> } : {};
410
- /**
411
- * Workflow-specific activities (workflow execution perspective)
412
- */
413
- type WorkflowInferWorkflowActivities<T extends WorkflowDefinition> = T["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof T["activities"]]: WorkflowInferActivity<T["activities"][K]> } : {};
414
- /**
415
- * All activities available in a workflow context (workflow execution perspective)
416
- *
417
- * Combines workflow-specific activities with global contract activities
418
- */
419
- type WorkflowInferWorkflowContextActivities<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = WorkflowInferWorkflowActivities<TContract["workflows"][TWorkflowName]> & WorkflowInferActivities<TContract>; //# sourceMappingURL=workflow.d.ts.map
432
+ }; //# sourceMappingURL=workflow.d.ts.map
420
433
  //#endregion
421
- export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError, declareWorkflow };
434
+ export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowCancelledError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError, WorkflowScopeError, declareWorkflow };
422
435
  //# sourceMappingURL=workflow.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.cts","names":[],"sources":["../src/handlers.ts","../src/internal.ts","../src/workflow.ts"],"mappings":"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"}
1
+ {"version":3,"file":"workflow.d.cts","names":[],"sources":["../src/handlers.ts","../src/internal.ts","../src/child-workflow.ts","../src/activities-proxy.ts","../src/workflow.ts"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { _ as WorkerInferOutput, a as ChildWorkflowNotFoundError, c as SignalInputValidationError, d as WorkflowCancelledError, f as WorkflowInputValidationError, g as WorkerInferInput, h as ClientInferOutput, i as ChildWorkflowError, l as UpdateInputValidationError, m as ClientInferInput, n as ActivityInputValidationError, o as QueryInputValidationError, p as WorkflowOutputValidationError, r as ActivityOutputValidationError, s as QueryOutputValidationError, u as UpdateOutputValidationError } from "./errors-DZhaNhwr.mjs";
1
+ import { _ as ClientInferOutput, a as ChildWorkflowError, c as QueryOutputValidationError, d as UpdateOutputValidationError, f as WorkflowCancelledError, g as ClientInferInput, h as WorkflowScopeError, i as ChildWorkflowCancelledError, l as SignalInputValidationError, m as WorkflowOutputValidationError, n as ActivityInputValidationError, o as ChildWorkflowNotFoundError, p as WorkflowInputValidationError, r as ActivityOutputValidationError, s as QueryInputValidationError, u as UpdateInputValidationError, v as WorkerInferInput, y as WorkerInferOutput } from "./errors-DbPMxULo.mjs";
2
+ import { ActivityDefinition, AnyWorkflowDefinition, ContractDefinition, QueryDefinition, QueryNamesOf, SignalDefinition, SignalNamesOf, UpdateDefinition, UpdateNamesOf } from "@temporal-contract/contract";
2
3
  import { ActivityOptions, ChildWorkflowOptions, ContinueAsNewOptions, WorkflowInfo } from "@temporalio/workflow";
3
- import { Future, Result } from "@temporal-contract/boxed";
4
- import { ActivityDefinition, ContractDefinition, QueryDefinition, SignalDefinition, UpdateDefinition, WorkflowDefinition } from "@temporal-contract/contract";
4
+ import { ResultAsync } from "neverthrow";
5
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
6
6
 
7
7
  //#region src/handlers.d.ts
@@ -35,6 +35,51 @@ type UpdateHandlerImplementation<TUpdate extends UpdateDefinition> = (args: Work
35
35
  */
36
36
  type TypedContinueAsNewOptions = Omit<ContinueAsNewOptions, "workflowType" | "taskQueue">;
37
37
  //#endregion
38
+ //#region src/child-workflow.d.ts
39
+ /**
40
+ * Options for starting a child workflow. `taskQueue` and `args` come from
41
+ * the contract; everything else is forwarded to Temporal's
42
+ * `startChild` / `executeChild`.
43
+ */
44
+ type TypedChildWorkflowOptions<TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string> = Omit<ChildWorkflowOptions, "taskQueue" | "args"> & {
45
+ args: ClientInferInput<TChildContract["workflows"][TChildWorkflowName]>;
46
+ };
47
+ /**
48
+ * Typed handle for a child workflow with neverthrow `ResultAsync` pattern.
49
+ */
50
+ type TypedChildWorkflowHandle<TWorkflow extends AnyWorkflowDefinition> = {
51
+ /**
52
+ * Get child workflow result with `ResultAsync` pattern.
53
+ */
54
+ result: () => ResultAsync<ClientInferOutput<TWorkflow>, ChildWorkflowError | ChildWorkflowCancelledError>;
55
+ /**
56
+ * Child workflow ID.
57
+ */
58
+ workflowId: string;
59
+ };
60
+ //#endregion
61
+ //#region src/activities-proxy.d.ts
62
+ /**
63
+ * Activity function signature from workflow execution perspective.
64
+ *
65
+ * Workflows call activities with validated input (z.input parsed) and receive validated output (z.output).
66
+ */
67
+ type WorkflowInferActivity<TActivity extends ActivityDefinition> = (args: ClientInferInput<TActivity>) => Promise<ClientInferOutput<TActivity>>;
68
+ /**
69
+ * All global activities from a contract (workflow execution perspective).
70
+ */
71
+ type WorkflowInferActivities<TContract extends ContractDefinition> = TContract["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof TContract["activities"]]: WorkflowInferActivity<TContract["activities"][K]> } : {};
72
+ /**
73
+ * Workflow-specific activities (workflow execution perspective).
74
+ */
75
+ type WorkflowInferWorkflowActivities<T extends AnyWorkflowDefinition> = T["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof T["activities"]]: WorkflowInferActivity<T["activities"][K]> } : {};
76
+ /**
77
+ * All activities available in a workflow context (workflow execution perspective).
78
+ *
79
+ * Combines workflow-specific activities with global contract activities.
80
+ */
81
+ type WorkflowInferWorkflowContextActivities<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = WorkflowInferWorkflowActivities<TContract["workflows"][TWorkflowName]> & WorkflowInferActivities<TContract>;
82
+ //#endregion
38
83
  //#region src/workflow.d.ts
39
84
  /**
40
85
  * Create a typed workflow implementation with automatic validation
@@ -109,7 +154,7 @@ type TypedContinueAsNewOptions = Omit<ContinueAsNewOptions, "workflowType" | "ta
109
154
  * });
110
155
  * ```
111
156
  */
112
- declare function declareWorkflow<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]>({
157
+ declare function declareWorkflow<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string>({
113
158
  workflowName,
114
159
  contract,
115
160
  implementation,
@@ -120,11 +165,11 @@ declare function declareWorkflow<TContract extends ContractDefinition, TWorkflow
120
165
  * Union of all activity names available to a workflow — the workflow-local
121
166
  * activities plus the contract's global activities.
122
167
  */
123
- type ActivityNamesFor<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = (TContract["workflows"][TWorkflowName]["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["workflows"][TWorkflowName]["activities"] & string : never) | (TContract["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["activities"] & string : never);
168
+ type ActivityNamesFor<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = (TContract["workflows"][TWorkflowName]["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["workflows"][TWorkflowName]["activities"] & string : never) | (TContract["activities"] extends Record<string, ActivityDefinition> ? keyof TContract["activities"] & string : never);
124
169
  /**
125
170
  * Options for declaring a workflow implementation
126
171
  */
127
- type DeclareWorkflowOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = {
172
+ type DeclareWorkflowOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = {
128
173
  workflowName: TWorkflowName;
129
174
  contract: TContract;
130
175
  implementation: WorkflowImplementation<TContract, TWorkflowName>;
@@ -178,7 +223,7 @@ type DeclareWorkflowOptions<TContract extends ContractDefinition, TWorkflowName
178
223
  * Receives a workflow context (with typed activities and utilities) and validated input arguments.
179
224
  * Returns the workflow output which will be validated against the contract schema.
180
225
  */
181
- type WorkflowImplementation<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = (context: WorkflowContext<TContract, TWorkflowName>, args: WorkerInferInput<TContract["workflows"][TWorkflowName]>) => Promise<WorkerInferOutput<TContract["workflows"][TWorkflowName]>>;
226
+ type WorkflowImplementation<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = (context: WorkflowContext<TContract, TWorkflowName>, args: WorkerInferInput<TContract["workflows"][TWorkflowName]>) => Promise<WorkerInferOutput<TContract["workflows"][TWorkflowName]>>;
182
227
  /**
183
228
  * Workflow execution context providing typed activities, workflow info, and interaction handlers
184
229
  *
@@ -188,8 +233,8 @@ type WorkflowImplementation<TContract extends ContractDefinition, TWorkflowName
188
233
  * - Signal, query, and update handler registration
189
234
  * - Child workflow execution capabilities
190
235
  */
191
- type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = {
192
- activities: WorkflowInferWorkflowContextActivities<TContract, TWorkflowName>;
236
+ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"] & string> = {
237
+ activities: Readonly<WorkflowInferWorkflowContextActivities<TContract, TWorkflowName>>;
193
238
  info: WorkflowInfo;
194
239
  /**
195
240
  * Define a signal handler within the workflow implementation
@@ -208,7 +253,7 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
208
253
  * }
209
254
  * ```
210
255
  */
211
- defineSignal: <K extends keyof TContract["workflows"][TWorkflowName]["signals"]>(signalName: K, handler: SignalHandlerImplementation<TContract["workflows"][TWorkflowName]["signals"][K] extends SignalDefinition ? TContract["workflows"][TWorkflowName]["signals"][K] : never>) => void;
256
+ defineSignal: <K extends SignalNamesOf<TContract["workflows"][TWorkflowName]>>(signalName: K, handler: SignalHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["signals"]> extends Record<string, SignalDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["signals"]>[K] extends SignalDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["signals"]>[K] : never : never>) => void;
212
257
  /**
213
258
  * Define a query handler within the workflow implementation
214
259
  * Allows the query handler to access workflow state
@@ -226,7 +271,7 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
226
271
  * }
227
272
  * ```
228
273
  */
229
- defineQuery: <K extends keyof TContract["workflows"][TWorkflowName]["queries"]>(queryName: K, handler: QueryHandlerImplementation<TContract["workflows"][TWorkflowName]["queries"][K] extends QueryDefinition ? TContract["workflows"][TWorkflowName]["queries"][K] : never>) => void;
274
+ defineQuery: <K extends QueryNamesOf<TContract["workflows"][TWorkflowName]>>(queryName: K, handler: QueryHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["queries"]> extends Record<string, QueryDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["queries"]>[K] extends QueryDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["queries"]>[K] : never : never>) => void;
230
275
  /**
231
276
  * Define an update handler within the workflow implementation
232
277
  * Allows the update handler to access and modify workflow state
@@ -245,9 +290,9 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
245
290
  * }
246
291
  * ```
247
292
  */
248
- defineUpdate: <K extends keyof TContract["workflows"][TWorkflowName]["updates"]>(updateName: K, handler: UpdateHandlerImplementation<TContract["workflows"][TWorkflowName]["updates"][K] extends UpdateDefinition ? TContract["workflows"][TWorkflowName]["updates"][K] : never>) => void;
293
+ defineUpdate: <K extends UpdateNamesOf<TContract["workflows"][TWorkflowName]>>(updateName: K, handler: UpdateHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["updates"]> extends Record<string, UpdateDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["updates"]>[K] extends UpdateDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["updates"]>[K] : never : never>) => void;
249
294
  /**
250
- * Start a child workflow and return a typed handle with Future/Result pattern
295
+ * Start a child workflow and return a typed handle with ResultAsync pattern
251
296
  *
252
297
  * Supports both same-contract and cross-contract child workflows:
253
298
  * - Same contract: Pass workflowName from current contract
@@ -267,18 +312,18 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
267
312
  * args: { message: 'Hello' }
268
313
  * });
269
314
  *
270
- * childResult.match({
271
- * Ok: async (handle) => {
315
+ * childResult.match(
316
+ * async (handle) => {
272
317
  * const result = await handle.result();
273
318
  * // ... handle result
274
319
  * },
275
- * Error: (error) => console.error('Failed to start:', error),
276
- * });
320
+ * (error) => console.error('Failed to start:', error),
321
+ * );
277
322
  * ```
278
323
  */
279
- startChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"]>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => Future<Result<TypedChildWorkflowHandle<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError>>;
324
+ startChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => ResultAsync<TypedChildWorkflowHandle<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError | ChildWorkflowCancelledError | ChildWorkflowNotFoundError>;
280
325
  /**
281
- * Execute a child workflow (start and wait for result) with Future/Result pattern
326
+ * Execute a child workflow (start and wait for result) with ResultAsync pattern
282
327
  *
283
328
  * Supports both same-contract and cross-contract child workflows:
284
329
  * - Same contract: Pass workflowName from current contract
@@ -298,22 +343,25 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
298
343
  * args: { message: 'Hello' }
299
344
  * });
300
345
  *
301
- * result.match({
302
- * Ok: (output) => console.log('Payment processed:', output),
303
- * Error: (error) => console.error('Processing failed:', error),
304
- * });
346
+ * result.match(
347
+ * (output) => console.log('Payment processed:', output),
348
+ * (error) => console.error('Processing failed:', error),
349
+ * );
305
350
  * ```
306
351
  */
307
- executeChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"]>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => Future<Result<ClientInferOutput<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError>>;
352
+ executeChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => ResultAsync<ClientInferOutput<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError | ChildWorkflowCancelledError | ChildWorkflowNotFoundError>;
308
353
  /**
309
354
  * Run `fn` inside a cancellable Temporal scope. If the workflow (or an
310
355
  * ancestor scope) is cancelled while `fn` is in flight, the resulting
311
- * Future resolves to `Result.Error(WorkflowCancelledError)` instead of
356
+ * ResultAsync resolves to `err(WorkflowCancelledError)` instead of
312
357
  * rejecting — letting callers handle cancellation explicitly, typically
313
358
  * to perform a graceful exit from the current step.
314
359
  *
315
- * Non-cancellation errors thrown by `fn` propagate as Future rejections
316
- * unchanged, preserving their identity for upstream `try/catch` blocks.
360
+ * Non-cancellation errors thrown by `fn` resolve to
361
+ * `err(WorkflowScopeError)` (with the original error preserved on
362
+ * `cause`). Both failure modes ride neverthrow's railway, so
363
+ * `result.match(...)` is exhaustive — nothing escapes as an unhandled
364
+ * rejection.
317
365
  *
318
366
  * @example
319
367
  * ```ts
@@ -322,30 +370,35 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
322
370
  * return context.activities.processStep(args);
323
371
  * });
324
372
  *
325
- * if (result.isError()) {
326
- * // workflow was cancelled — perform cleanup that must not be cancelled:
327
- * await context.nonCancellableScope(async () => {
328
- * await context.activities.releaseResources(args);
329
- * });
330
- * return { status: "cancelled" };
373
+ * if (result.isErr()) {
374
+ * if (result.error instanceof WorkflowCancelledError) {
375
+ * // workflow was cancelled — perform cleanup that must not be cancelled:
376
+ * await context.nonCancellableScope(async () => {
377
+ * await context.activities.releaseResources(args);
378
+ * });
379
+ * return { status: "cancelled" };
380
+ * }
381
+ * // result.error instanceof WorkflowScopeError — domain failure
382
+ * return { status: "failed" };
331
383
  * }
332
384
  *
333
385
  * return { status: "ok" };
334
386
  * }
335
387
  * ```
336
388
  */
337
- cancellableScope: <T>(fn: () => T | Promise<T>) => Future<Result<T, WorkflowCancelledError>>;
389
+ cancellableScope: <T>(fn: () => T | Promise<T>) => ResultAsync<T, WorkflowCancelledError | WorkflowScopeError>;
338
390
  /**
339
391
  * Run `fn` inside a non-cancellable Temporal scope. Cancellation requests
340
392
  * from outside the scope are ignored for its duration — the idiomatic way
341
393
  * to perform cleanup work that must not be interrupted.
342
394
  *
343
- * Returns the same `Future<Result<...>>` shape as
395
+ * Returns the same `ResultAsync<...>` shape as
344
396
  * {@link WorkflowContext.cancellableScope} for symmetry; the
345
- * `Result.Error` branch only triggers when cancellation is raised from
346
- * *inside* the scope, which is rare.
397
+ * `err(WorkflowCancelledError)` branch only triggers when cancellation is
398
+ * raised from *inside* the scope, which is rare. Non-cancellation errors
399
+ * surface as `err(WorkflowScopeError)`.
347
400
  */
348
- nonCancellableScope: <T>(fn: () => T | Promise<T>) => Future<Result<T, WorkflowCancelledError>>;
401
+ nonCancellableScope: <T>(fn: () => T | Promise<T>) => ResultAsync<T, WorkflowCancelledError | WorkflowScopeError>;
349
402
  /**
350
403
  * Continue this workflow execution as a new run, optionally with a different
351
404
  * workflow type from another contract.
@@ -375,48 +428,9 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
375
428
  */
376
429
  continueAsNew: {
377
430
  /** Same-workflow continuation — args typed against this workflow's input. */(args: ClientInferInput<TContract["workflows"][TWorkflowName]>, options?: TypedContinueAsNewOptions): Promise<never>; /** Cross-contract continuation — args typed against the destination workflow. */
378
- <TOtherContract extends ContractDefinition, TOtherWorkflowName extends keyof TOtherContract["workflows"]>(contract: TOtherContract, workflowName: TOtherWorkflowName, args: ClientInferInput<TOtherContract["workflows"][TOtherWorkflowName]>, options?: TypedContinueAsNewOptions): Promise<never>;
431
+ <TOtherContract extends ContractDefinition, TOtherWorkflowName extends keyof TOtherContract["workflows"] & string>(contract: TOtherContract, workflowName: TOtherWorkflowName, args: ClientInferInput<TOtherContract["workflows"][TOtherWorkflowName]>, options?: TypedContinueAsNewOptions): Promise<never>;
379
432
  };
380
- };
381
- /**
382
- * Options for starting a child workflow
383
- */
384
- type TypedChildWorkflowOptions<TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"]> = Omit<ChildWorkflowOptions, "taskQueue" | "args"> & {
385
- args: ClientInferInput<TChildContract["workflows"][TChildWorkflowName]>;
386
- };
387
- /**
388
- * Typed handle for a child workflow with Future/Result pattern
389
- */
390
- type TypedChildWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
391
- /**
392
- * Get child workflow result with Result pattern
393
- */
394
- result: () => Future<Result<ClientInferOutput<TWorkflow>, ChildWorkflowError>>;
395
- /**
396
- * Child workflow ID
397
- */
398
- workflowId: string;
399
- };
400
- /**
401
- * Activity function signature from workflow execution perspective
402
- *
403
- * Workflows call activities with validated input (z.input parsed) and receive validated output (z.output)
404
- */
405
- type WorkflowInferActivity<TActivity extends ActivityDefinition> = (args: ClientInferInput<TActivity>) => Promise<ClientInferOutput<TActivity>>;
406
- /**
407
- * All global activities from a contract (workflow execution perspective)
408
- */
409
- type WorkflowInferActivities<TContract extends ContractDefinition> = TContract["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof TContract["activities"]]: WorkflowInferActivity<TContract["activities"][K]> } : {};
410
- /**
411
- * Workflow-specific activities (workflow execution perspective)
412
- */
413
- type WorkflowInferWorkflowActivities<T extends WorkflowDefinition> = T["activities"] extends Record<string, ActivityDefinition> ? { [K in keyof T["activities"]]: WorkflowInferActivity<T["activities"][K]> } : {};
414
- /**
415
- * All activities available in a workflow context (workflow execution perspective)
416
- *
417
- * Combines workflow-specific activities with global contract activities
418
- */
419
- type WorkflowInferWorkflowContextActivities<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = WorkflowInferWorkflowActivities<TContract["workflows"][TWorkflowName]> & WorkflowInferActivities<TContract>; //# sourceMappingURL=workflow.d.ts.map
433
+ }; //# sourceMappingURL=workflow.d.ts.map
420
434
  //#endregion
421
- export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError, declareWorkflow };
435
+ export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowCancelledError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError, WorkflowScopeError, declareWorkflow };
422
436
  //# sourceMappingURL=workflow.d.mts.map