ai-workflows 2.1.3 → 2.3.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +8 -1
- package/README.md +2 -0
- package/dist/barrier.d.ts +6 -0
- package/dist/barrier.d.ts.map +1 -1
- package/dist/barrier.js +45 -7
- package/dist/barrier.js.map +1 -1
- package/dist/cascade-context.d.ts.map +1 -1
- package/dist/cascade-context.js +25 -25
- package/dist/cascade-context.js.map +1 -1
- package/dist/cascade-executor.d.ts.map +1 -1
- package/dist/cascade-executor.js +1 -1
- package/dist/cascade-executor.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +23 -7
- package/dist/context.js.map +1 -1
- package/dist/cron-parser.d.ts +65 -0
- package/dist/cron-parser.d.ts.map +1 -0
- package/dist/cron-parser.js +294 -0
- package/dist/cron-parser.js.map +1 -0
- package/dist/cron-scheduler.d.ts +117 -0
- package/dist/cron-scheduler.d.ts.map +1 -0
- package/dist/cron-scheduler.js +176 -0
- package/dist/cron-scheduler.js.map +1 -0
- package/dist/database-context.d.ts +184 -0
- package/dist/database-context.d.ts.map +1 -0
- package/dist/database-context.js +428 -0
- package/dist/database-context.js.map +1 -0
- package/dist/digital-objects-adapter.d.ts +159 -0
- package/dist/digital-objects-adapter.d.ts.map +1 -0
- package/dist/digital-objects-adapter.js +229 -0
- package/dist/digital-objects-adapter.js.map +1 -0
- package/dist/durable-execution-cloudflare.d.ts +427 -0
- package/dist/durable-execution-cloudflare.d.ts.map +1 -0
- package/dist/durable-execution-cloudflare.js +510 -0
- package/dist/durable-execution-cloudflare.js.map +1 -0
- package/dist/durable-execution.d.ts +482 -0
- package/dist/durable-execution.d.ts.map +1 -0
- package/dist/durable-execution.js +594 -0
- package/dist/durable-execution.js.map +1 -0
- package/dist/durable-workflow.d.ts +176 -0
- package/dist/durable-workflow.d.ts.map +1 -0
- package/dist/durable-workflow.js +552 -0
- package/dist/durable-workflow.js.map +1 -0
- package/dist/graph/topological-sort.d.ts.map +1 -1
- package/dist/graph/topological-sort.js +5 -5
- package/dist/graph/topological-sort.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +101 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +115 -0
- package/dist/logger.js.map +1 -0
- package/dist/on.d.ts.map +1 -1
- package/dist/on.js +3 -3
- package/dist/on.js.map +1 -1
- package/dist/runtime.d.ts +169 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +275 -0
- package/dist/runtime.js.map +1 -0
- package/dist/send.d.ts.map +1 -1
- package/dist/send.js +4 -3
- package/dist/send.js.map +1 -1
- package/dist/telemetry.d.ts +150 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +388 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/timer-registry.d.ts +25 -0
- package/dist/timer-registry.d.ts.map +1 -1
- package/dist/timer-registry.js +42 -8
- package/dist/timer-registry.js.map +1 -1
- package/dist/types.d.ts +17 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker/durable-step.d.ts +481 -0
- package/dist/worker/durable-step.d.ts.map +1 -0
- package/dist/worker/durable-step.js +606 -0
- package/dist/worker/durable-step.js.map +1 -0
- package/dist/worker/index.d.ts +106 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +124 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/state-adapter.d.ts +230 -0
- package/dist/worker/state-adapter.d.ts.map +1 -0
- package/dist/worker/state-adapter.js +409 -0
- package/dist/worker/state-adapter.js.map +1 -0
- package/dist/worker/topological-executor.d.ts +282 -0
- package/dist/worker/topological-executor.d.ts.map +1 -0
- package/dist/worker/topological-executor.js +396 -0
- package/dist/worker/topological-executor.js.map +1 -0
- package/dist/worker/workflow-builder.d.ts +286 -0
- package/dist/worker/workflow-builder.d.ts.map +1 -0
- package/dist/worker/workflow-builder.js +565 -0
- package/dist/worker/workflow-builder.js.map +1 -0
- package/dist/worker.d.ts +800 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +2428 -0
- package/dist/worker.js.map +1 -0
- package/dist/workflow-builder.d.ts +287 -0
- package/dist/workflow-builder.d.ts.map +1 -0
- package/dist/workflow-builder.js +762 -0
- package/dist/workflow-builder.js.map +1 -0
- package/dist/workflow.d.ts +14 -30
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +132 -292
- package/dist/workflow.js.map +1 -1
- package/examples/01-ecommerce-order-pipeline.ts +358 -0
- package/examples/02-content-moderation-cascade.ts +454 -0
- package/examples/03-scheduled-reporting-dependencies.ts +479 -0
- package/examples/04-database-persistence.ts +518 -0
- package/examples/README.md +173 -0
- package/package.json +30 -13
- package/src/__tests__/digital-objects-adapter.test.ts +274 -0
- package/src/__tests__/durable-workflow.test.ts +297 -0
- package/src/barrier.ts +48 -7
- package/src/cascade-context.ts +36 -29
- package/src/cascade-executor.ts +3 -2
- package/src/context.ts +41 -12
- package/src/cron-parser.ts +347 -0
- package/src/cron-scheduler.ts +239 -0
- package/src/database-context.ts +658 -0
- package/src/digital-objects-adapter.ts +351 -0
- package/src/durable-execution-cloudflare.ts +855 -0
- package/src/durable-execution.ts +1042 -0
- package/src/durable-workflow.ts +717 -0
- package/src/graph/topological-sort.ts +6 -8
- package/src/index.ts +69 -0
- package/src/logger.ts +148 -0
- package/src/on.ts +8 -9
- package/src/runtime.ts +436 -0
- package/src/send.ts +4 -5
- package/src/telemetry.ts +577 -0
- package/src/timer-registry.ts +44 -10
- package/src/types.ts +32 -17
- package/src/worker/durable-step.ts +976 -0
- package/src/worker/index.ts +216 -0
- package/src/worker/state-adapter.ts +589 -0
- package/src/worker/topological-executor.ts +625 -0
- package/src/worker/workflow-builder.ts +871 -0
- package/src/worker.ts +2906 -0
- package/src/workflow-builder.ts +1068 -0
- package/src/workflow.ts +188 -351
- package/test/barrier-join.test.ts +32 -24
- package/test/cascade-executor.test.ts +9 -16
- package/test/cron-parser.test.ts +314 -0
- package/test/cron-scheduler.test.ts +291 -0
- package/test/database-context.test.ts +770 -0
- package/test/db-provider-adapter.test.ts +862 -0
- package/test/durable-execution-cloudflare.test.ts +606 -0
- package/test/durable-execution-in-process.test.ts +286 -0
- package/test/durable-execution.test.ts +247 -0
- package/test/e2e/workflow-scenarios.e2e.test.ts +1039 -0
- package/test/integration.test.ts +442 -0
- package/test/rpc-surface.test.ts +946 -0
- package/test/runtime.test.ts +262 -0
- package/test/schedule-timer-cleanup.test.ts +30 -21
- package/test/send-race-conditions.test.ts +30 -40
- package/test/worker/durable-cascade.test.ts +1117 -0
- package/test/worker/durable-step.test.ts +723 -0
- package/test/worker/topological-executor.test.ts +1240 -0
- package/test/worker/workflow-builder.test.ts +1067 -0
- package/test/worker.test.ts +608 -0
- package/test/workflow-builder.test.ts +1670 -0
- package/test/workflow-cron.test.ts +256 -0
- package/test/workflow-state-adapter.test.ts +923 -0
- package/test/workflow.test.ts +25 -22
- package/tsconfig.json +3 -1
- package/vitest.config.ts +38 -1
- package/vitest.workers.config.ts +44 -0
- package/wrangler.jsonc +22 -0
- package/.turbo/turbo-test.log +0 -169
- package/LICENSE +0 -21
- package/src/context.js +0 -83
- package/src/every.js +0 -267
- package/src/index.js +0 -71
- package/src/on.js +0 -79
- package/src/send.js +0 -111
- package/src/types.js +0 -4
- package/src/workflow.js +0 -455
- package/test/context.test.js +0 -116
- package/test/every.test.js +0 -282
- package/test/on.test.js +0 -80
- package/test/send.test.js +0 -89
- package/test/workflow.test.js +0 -224
- package/vitest.config.js +0 -7
package/src/types.ts
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
* Types for ai-workflows
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
import type { WorkflowContextType } from '@org.ai/types'
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* Handler function with source code for remote execution
|
|
7
9
|
*/
|
|
8
10
|
export interface HandlerFunction<T = unknown> {
|
|
9
11
|
/** The actual function */
|
|
10
|
-
fn: (...args:
|
|
12
|
+
fn: (...args: unknown[]) => void | Promise<void>
|
|
11
13
|
/** Source code string for remote execution */
|
|
12
14
|
source: string
|
|
13
15
|
/** Handler name (for debugging) */
|
|
@@ -21,6 +23,9 @@ export interface HandlerFunction<T = unknown> {
|
|
|
21
23
|
* Generic order follows Promise<T> convention:
|
|
22
24
|
* - TOutput (first) is what the handler returns
|
|
23
25
|
* - TInput (second) is what the handler receives
|
|
26
|
+
*
|
|
27
|
+
* Note: Uses WorkflowContext (extends WorkflowContextType from @org.ai/types)
|
|
28
|
+
* for workflow-specific features like OnProxy, EveryProxy, getState, log.
|
|
24
29
|
*/
|
|
25
30
|
export type EventHandler<TOutput = unknown, TInput = unknown> = (
|
|
26
31
|
data: TInput,
|
|
@@ -30,19 +35,25 @@ export type EventHandler<TOutput = unknown, TInput = unknown> = (
|
|
|
30
35
|
/**
|
|
31
36
|
* Schedule handler function type
|
|
32
37
|
*/
|
|
33
|
-
export type ScheduleHandler = (
|
|
34
|
-
$: WorkflowContext
|
|
35
|
-
) => void | Promise<void>
|
|
38
|
+
export type ScheduleHandler = ($: WorkflowContext) => void | Promise<void>
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
|
-
* Workflow context ($) passed to handlers
|
|
41
|
+
* Workflow context ($) passed to handlers.
|
|
42
|
+
* Extends WorkflowContextType from @org.ai/types with workflow-specific features.
|
|
39
43
|
*/
|
|
40
|
-
export interface WorkflowContext {
|
|
44
|
+
export interface WorkflowContext extends WorkflowContextType {
|
|
41
45
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
46
|
+
* Track an event (fire and forget)
|
|
47
|
+
* Best effort, no confirmation, swallows errors
|
|
48
|
+
* Use for telemetry and non-critical events
|
|
44
49
|
*/
|
|
45
|
-
|
|
50
|
+
track: (event: string, data: unknown) => void
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Send an event (durable)
|
|
54
|
+
* Guaranteed delivery, returns trackable EventId
|
|
55
|
+
*/
|
|
56
|
+
send: <T = unknown>(event: string, data: T) => string
|
|
46
57
|
|
|
47
58
|
/**
|
|
48
59
|
* Do an action (durable, waits for result)
|
|
@@ -245,7 +256,10 @@ export type EveryProxy = {
|
|
|
245
256
|
weeks: (value: number) => (handler: ScheduleHandler) => void
|
|
246
257
|
|
|
247
258
|
// Index signature for dynamic patterns
|
|
248
|
-
[key: string]:
|
|
259
|
+
[key: string]:
|
|
260
|
+
| ((handler: ScheduleHandler) => void)
|
|
261
|
+
| ((value: number) => (handler: ScheduleHandler) => void)
|
|
262
|
+
| DayScheduleProxy
|
|
249
263
|
}
|
|
250
264
|
|
|
251
265
|
/**
|
|
@@ -267,7 +281,10 @@ export interface OnProxyHandler extends ProxyHandler<Record<string, NounEventPro
|
|
|
267
281
|
/**
|
|
268
282
|
* ProxyHandler type for the inner noun level (event accessors)
|
|
269
283
|
*/
|
|
270
|
-
export interface NounEventProxyHandler
|
|
284
|
+
export interface NounEventProxyHandler
|
|
285
|
+
extends ProxyHandler<
|
|
286
|
+
Record<string, (handler: EventHandler, dependencies?: DependencyConfig) => void>
|
|
287
|
+
> {
|
|
271
288
|
get(
|
|
272
289
|
target: Record<string, (handler: EventHandler, dependencies?: DependencyConfig) => void>,
|
|
273
290
|
event: string,
|
|
@@ -294,11 +311,7 @@ export interface DayScheduleProxyHandler extends ProxyHandler<(handler: Schedule
|
|
|
294
311
|
timeKey: string,
|
|
295
312
|
receiver: unknown
|
|
296
313
|
): ((handler: ScheduleHandler) => void) | undefined
|
|
297
|
-
apply(
|
|
298
|
-
target: (handler: ScheduleHandler) => void,
|
|
299
|
-
thisArg: unknown,
|
|
300
|
-
args: [ScheduleHandler]
|
|
301
|
-
): void
|
|
314
|
+
apply(target: (handler: ScheduleHandler) => void, thisArg: unknown, args: [ScheduleHandler]): void
|
|
302
315
|
}
|
|
303
316
|
|
|
304
317
|
/**
|
|
@@ -395,7 +408,9 @@ export type PluralUnitKey = keyof PluralUnitMapping
|
|
|
395
408
|
* Type guard to check if a string is a valid plural unit key
|
|
396
409
|
*/
|
|
397
410
|
export function isPluralUnitKey(key: string): key is PluralUnitKey {
|
|
398
|
-
return
|
|
411
|
+
return (
|
|
412
|
+
key === 'seconds' || key === 'minutes' || key === 'hours' || key === 'days' || key === 'weeks'
|
|
413
|
+
)
|
|
399
414
|
}
|
|
400
415
|
|
|
401
416
|
/**
|