ai-workflows 2.1.1 → 2.1.3

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 (78) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +165 -3
  3. package/CHANGELOG.md +10 -1
  4. package/LICENSE +21 -0
  5. package/README.md +303 -184
  6. package/dist/barrier.d.ts +153 -0
  7. package/dist/barrier.d.ts.map +1 -0
  8. package/dist/barrier.js +339 -0
  9. package/dist/barrier.js.map +1 -0
  10. package/dist/cascade-context.d.ts +149 -0
  11. package/dist/cascade-context.d.ts.map +1 -0
  12. package/dist/cascade-context.js +324 -0
  13. package/dist/cascade-context.js.map +1 -0
  14. package/dist/cascade-executor.d.ts +196 -0
  15. package/dist/cascade-executor.d.ts.map +1 -0
  16. package/dist/cascade-executor.js +384 -0
  17. package/dist/cascade-executor.js.map +1 -0
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +4 -1
  20. package/dist/context.js.map +1 -1
  21. package/dist/dependency-graph.d.ts +157 -0
  22. package/dist/dependency-graph.d.ts.map +1 -0
  23. package/dist/dependency-graph.js +382 -0
  24. package/dist/dependency-graph.js.map +1 -0
  25. package/dist/every.d.ts +31 -2
  26. package/dist/every.d.ts.map +1 -1
  27. package/dist/every.js +63 -32
  28. package/dist/every.js.map +1 -1
  29. package/dist/graph/index.d.ts +8 -0
  30. package/dist/graph/index.d.ts.map +1 -0
  31. package/dist/graph/index.js +8 -0
  32. package/dist/graph/index.js.map +1 -0
  33. package/dist/graph/topological-sort.d.ts +121 -0
  34. package/dist/graph/topological-sort.d.ts.map +1 -0
  35. package/dist/graph/topological-sort.js +292 -0
  36. package/dist/graph/topological-sort.js.map +1 -0
  37. package/dist/index.d.ts +6 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +10 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/on.d.ts +35 -10
  42. package/dist/on.d.ts.map +1 -1
  43. package/dist/on.js +52 -18
  44. package/dist/on.js.map +1 -1
  45. package/dist/timer-registry.d.ts +52 -0
  46. package/dist/timer-registry.d.ts.map +1 -0
  47. package/dist/timer-registry.js +120 -0
  48. package/dist/timer-registry.js.map +1 -0
  49. package/dist/types.d.ts +88 -0
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/types.js +17 -1
  52. package/dist/types.js.map +1 -1
  53. package/dist/workflow.d.ts.map +1 -1
  54. package/dist/workflow.js +15 -11
  55. package/dist/workflow.js.map +1 -1
  56. package/package.json +11 -11
  57. package/src/barrier.ts +466 -0
  58. package/src/cascade-context.ts +488 -0
  59. package/src/cascade-executor.ts +587 -0
  60. package/src/context.ts +12 -7
  61. package/src/dependency-graph.ts +518 -0
  62. package/src/every.ts +104 -35
  63. package/src/graph/index.ts +19 -0
  64. package/src/graph/topological-sort.ts +414 -0
  65. package/src/index.ts +78 -0
  66. package/src/on.ts +81 -25
  67. package/src/timer-registry.ts +145 -0
  68. package/src/types.ts +121 -0
  69. package/src/workflow.ts +23 -16
  70. package/test/barrier-join.test.ts +434 -0
  71. package/test/barrier-unhandled-rejections.test.ts +359 -0
  72. package/test/cascade-context.test.ts +390 -0
  73. package/test/cascade-executor.test.ts +859 -0
  74. package/test/dependency-graph.test.ts +512 -0
  75. package/test/graph/topological-sort.test.ts +586 -0
  76. package/test/schedule-timer-cleanup.test.ts +344 -0
  77. package/test/send-race-conditions.test.ts +410 -0
  78. package/test/type-safety-every.test.ts +303 -0
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Cascade Context - Correlation IDs and step metadata for workflow execution
3
+ *
4
+ * Provides distributed tracing support with:
5
+ * - Unique correlation IDs per cascade
6
+ * - Step timing metadata (started_at, completed_at, duration)
7
+ * - Cascade path recording
8
+ * - Context inheritance for nested operations
9
+ * - Serialization for distributed systems
10
+ * - W3C Trace Context compatibility
11
+ */
12
+ /**
13
+ * Generate a UUID v4
14
+ */
15
+ function generateUUID() {
16
+ // Use crypto.randomUUID if available, otherwise fallback
17
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
18
+ return crypto.randomUUID();
19
+ }
20
+ // Fallback UUID v4 generation
21
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
22
+ const r = (Math.random() * 16) | 0;
23
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
24
+ return v.toString(16);
25
+ });
26
+ }
27
+ /**
28
+ * Generate a span ID (16 hex characters)
29
+ */
30
+ function generateSpanId() {
31
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
32
+ return crypto.randomUUID().replace(/-/g, '').slice(0, 16);
33
+ }
34
+ return 'xxxxxxxxxxxxxxxx'.replace(/x/g, () => {
35
+ return ((Math.random() * 16) | 0).toString(16);
36
+ });
37
+ }
38
+ /**
39
+ * Parse W3C traceparent header
40
+ */
41
+ function parseTraceparent(traceparent) {
42
+ const parts = traceparent.split('-');
43
+ if (parts.length !== 4)
44
+ return null;
45
+ return {
46
+ traceId: parts[1], // 32 hex chars
47
+ parentId: parts[2], // 16 hex chars
48
+ };
49
+ }
50
+ /**
51
+ * Convert correlation ID to trace ID format (32 hex chars)
52
+ */
53
+ function correlationIdToTraceId(correlationId) {
54
+ // Remove dashes and pad/truncate to 32 chars
55
+ const hex = correlationId.replace(/-/g, '');
56
+ return hex.slice(0, 32).padEnd(32, '0');
57
+ }
58
+ /**
59
+ * Convert trace ID to correlation ID format (UUID)
60
+ */
61
+ function traceIdToCorrelationId(traceId) {
62
+ // Convert 32 hex chars to UUID format
63
+ return `${traceId.slice(0, 8)}-${traceId.slice(8, 12)}-${traceId.slice(12, 16)}-${traceId.slice(16, 20)}-${traceId.slice(20, 32)}`;
64
+ }
65
+ /**
66
+ * Create a cascade context for tracking workflow execution
67
+ */
68
+ export function createCascadeContext(options = {}) {
69
+ const { parent, name, fromSerialized, fromTraceContext } = options;
70
+ // Handle restoration from serialized format
71
+ if (fromSerialized) {
72
+ const restoredSteps = fromSerialized.steps.map((s) => createRestoredStep(s, name));
73
+ const ctx = {
74
+ correlationId: fromSerialized.correlationId,
75
+ spanId: fromSerialized.spanId,
76
+ parentId: fromSerialized.parentId,
77
+ name: fromSerialized.name,
78
+ depth: fromSerialized.depth,
79
+ steps: restoredSteps,
80
+ path: fromSerialized.path,
81
+ createdAt: fromSerialized.createdAt,
82
+ get fullPath() {
83
+ return this.path;
84
+ },
85
+ serialize: () => serializeContext(ctx),
86
+ format: () => formatContext(ctx),
87
+ formatTree: () => formatContextTree(ctx),
88
+ toTraceContext: () => toTraceContext(ctx),
89
+ };
90
+ return ctx;
91
+ }
92
+ // Handle restoration from W3C trace context
93
+ if (fromTraceContext) {
94
+ const parsed = parseTraceparent(fromTraceContext.traceparent);
95
+ if (parsed) {
96
+ const correlationId = traceIdToCorrelationId(parsed.traceId);
97
+ const newSpanId = generateSpanId();
98
+ const ctx = {
99
+ correlationId,
100
+ spanId: newSpanId,
101
+ parentId: parsed.parentId,
102
+ name,
103
+ depth: 0,
104
+ steps: [],
105
+ path: [],
106
+ createdAt: Date.now(),
107
+ get fullPath() {
108
+ return this.path;
109
+ },
110
+ serialize: () => serializeContext(ctx),
111
+ format: () => formatContext(ctx),
112
+ formatTree: () => formatContextTree(ctx),
113
+ toTraceContext: () => toTraceContext(ctx),
114
+ };
115
+ return ctx;
116
+ }
117
+ }
118
+ // Determine correlation ID
119
+ let correlationId;
120
+ if (parent) {
121
+ correlationId = parent.correlationId;
122
+ }
123
+ else if (options.correlationId) {
124
+ correlationId = options.correlationId;
125
+ }
126
+ else {
127
+ correlationId = generateUUID();
128
+ }
129
+ const spanId = generateSpanId();
130
+ const parentId = parent?.spanId;
131
+ const depth = parent ? parent.depth + 1 : 0;
132
+ const createdAt = Date.now();
133
+ const steps = [];
134
+ const path = [];
135
+ const ctx = {
136
+ correlationId,
137
+ spanId,
138
+ parentId,
139
+ name,
140
+ depth,
141
+ steps,
142
+ path,
143
+ createdAt,
144
+ parent,
145
+ get fullPath() {
146
+ if (this.parent) {
147
+ return [...this.parent.fullPath, ...this.path];
148
+ }
149
+ return this.path;
150
+ },
151
+ serialize: () => serializeContext(ctx),
152
+ format: () => formatContext(ctx),
153
+ formatTree: () => formatContextTree(ctx),
154
+ toTraceContext: () => toTraceContext(ctx),
155
+ };
156
+ return ctx;
157
+ }
158
+ /**
159
+ * Create a restored step from serialized data
160
+ */
161
+ function createRestoredStep(serialized, contextName) {
162
+ const step = {
163
+ name: serialized.name,
164
+ startedAt: serialized.startedAt,
165
+ completedAt: serialized.completedAt,
166
+ duration: serialized.duration,
167
+ status: serialized.status,
168
+ metadata: serialized.metadata ? { ...serialized.metadata } : undefined,
169
+ complete: () => {
170
+ step.status = 'completed';
171
+ step.completedAt = Date.now();
172
+ step.duration = step.completedAt - step.startedAt;
173
+ },
174
+ fail: (error) => {
175
+ step.status = 'failed';
176
+ step.error = error;
177
+ step.completedAt = Date.now();
178
+ step.duration = step.completedAt - step.startedAt;
179
+ },
180
+ addMetadata: (data) => {
181
+ step.metadata = { ...step.metadata, ...data };
182
+ },
183
+ to5WHEvent: () => ({
184
+ who: step.metadata?.actor || 'system',
185
+ what: step.metadata?.action || step.name,
186
+ when: step.startedAt,
187
+ where: contextName || 'unknown',
188
+ why: step.metadata?.reason,
189
+ how: {
190
+ duration: step.duration,
191
+ status: step.status,
192
+ metadata: step.metadata,
193
+ },
194
+ }),
195
+ };
196
+ return step;
197
+ }
198
+ /**
199
+ * Record a step in the cascade context
200
+ */
201
+ export function recordStep(ctx, name, metadata) {
202
+ const startedAt = Date.now();
203
+ const step = {
204
+ name,
205
+ startedAt,
206
+ status: 'running',
207
+ metadata: metadata ? { ...metadata } : undefined,
208
+ complete: () => {
209
+ step.status = 'completed';
210
+ step.completedAt = Date.now();
211
+ step.duration = step.completedAt - step.startedAt;
212
+ ctx.path.push(name);
213
+ },
214
+ fail: (error) => {
215
+ step.status = 'failed';
216
+ step.error = error;
217
+ step.completedAt = Date.now();
218
+ step.duration = step.completedAt - step.startedAt;
219
+ },
220
+ addMetadata: (data) => {
221
+ step.metadata = { ...step.metadata, ...data };
222
+ },
223
+ to5WHEvent: () => ({
224
+ who: step.metadata?.actor || 'system',
225
+ what: step.metadata?.action || name,
226
+ when: startedAt,
227
+ where: ctx.name || 'cascade',
228
+ why: step.metadata?.reason,
229
+ how: {
230
+ duration: step.duration,
231
+ status: step.status,
232
+ metadata: step.metadata,
233
+ },
234
+ }),
235
+ };
236
+ ctx.steps.push(step);
237
+ return step;
238
+ }
239
+ /**
240
+ * Execute a callback with cascade context
241
+ */
242
+ export async function withCascadeContext(callback, options = {}) {
243
+ const ctx = createCascadeContext(options);
244
+ return callback(ctx);
245
+ }
246
+ /**
247
+ * Serialize context for transmission/storage
248
+ */
249
+ function serializeContext(ctx) {
250
+ return {
251
+ correlationId: ctx.correlationId,
252
+ spanId: ctx.spanId,
253
+ parentId: ctx.parentId,
254
+ name: ctx.name,
255
+ depth: ctx.depth,
256
+ steps: ctx.steps.map((step) => ({
257
+ name: step.name,
258
+ startedAt: step.startedAt,
259
+ completedAt: step.completedAt,
260
+ duration: step.duration,
261
+ status: step.status,
262
+ metadata: step.metadata,
263
+ })),
264
+ path: ctx.path,
265
+ createdAt: ctx.createdAt,
266
+ };
267
+ }
268
+ /**
269
+ * Format context as readable string
270
+ */
271
+ function formatContext(ctx) {
272
+ const lines = [];
273
+ lines.push(`Cascade: ${ctx.name || 'unnamed'}`);
274
+ lines.push(` Correlation ID: ${ctx.correlationId}`);
275
+ lines.push(` Span ID: ${ctx.spanId}`);
276
+ if (ctx.parentId) {
277
+ lines.push(` Parent ID: ${ctx.parentId}`);
278
+ }
279
+ lines.push(` Depth: ${ctx.depth}`);
280
+ lines.push(` Steps:`);
281
+ for (const step of ctx.steps) {
282
+ const status = step.status === 'completed' ? '[OK]' : step.status === 'failed' ? '[FAIL]' : '[...]';
283
+ const duration = step.duration ? ` (${step.duration}ms)` : '';
284
+ lines.push(` ${status} ${step.name}${duration}`);
285
+ }
286
+ return lines.join('\n');
287
+ }
288
+ /**
289
+ * Format context as tree including parent contexts
290
+ */
291
+ function formatContextTree(ctx) {
292
+ const lines = [];
293
+ // Build tree from root
294
+ const contexts = [];
295
+ let current = ctx;
296
+ while (current) {
297
+ contexts.unshift(current);
298
+ current = current.parent;
299
+ }
300
+ for (let i = 0; i < contexts.length; i++) {
301
+ const context = contexts[i];
302
+ const indent = ' '.repeat(i);
303
+ lines.push(`${indent}${context.name || 'cascade'} (depth: ${context.depth})`);
304
+ for (const step of context.steps) {
305
+ const status = step.status === 'completed' ? '[OK]' : step.status === 'failed' ? '[FAIL]' : '[...]';
306
+ const duration = step.duration ? ` (${step.duration}ms)` : '';
307
+ lines.push(`${indent} ${status} ${step.name}${duration}`);
308
+ }
309
+ }
310
+ return lines.join('\n');
311
+ }
312
+ /**
313
+ * Convert to W3C Trace Context format
314
+ */
315
+ function toTraceContext(ctx) {
316
+ const version = '00';
317
+ const traceId = correlationIdToTraceId(ctx.correlationId);
318
+ const spanId = ctx.spanId.padEnd(16, '0').slice(0, 16);
319
+ const flags = '01'; // sampled
320
+ return {
321
+ traceparent: `${version}-${traceId}-${spanId}-${flags}`,
322
+ };
323
+ }
324
+ //# sourceMappingURL=cascade-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade-context.js","sourceRoot":"","sources":["../src/cascade-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * CascadeExecutor - Code -> Generative -> Agentic -> Human escalation pattern
3
+ *
4
+ * Implements a tiered execution strategy that tries deterministic code first,
5
+ * then escalates to AI-powered solutions, and finally to human-in-the-loop
6
+ * if all automated approaches fail.
7
+ *
8
+ * Features:
9
+ * - Tier escalation on failure
10
+ * - Per-tier and total cascade timeouts
11
+ * - 5W+H event emission for audit trails
12
+ * - Context propagation through tiers
13
+ * - Retry support per tier
14
+ * - Custom skip conditions
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ import { type CascadeContext, type FiveWHEvent } from './cascade-context.js';
19
+ /**
20
+ * Ordered list of capability tiers
21
+ */
22
+ export declare const TIER_ORDER: readonly ["code", "generative", "agentic", "human"];
23
+ /**
24
+ * Default timeouts per tier (from capability-tiers)
25
+ */
26
+ export declare const DEFAULT_TIER_TIMEOUTS: Record<CapabilityTier, number>;
27
+ /**
28
+ * Capability tier levels
29
+ */
30
+ export type CapabilityTier = 'code' | 'generative' | 'agentic' | 'human';
31
+ /**
32
+ * Context passed to tier handlers
33
+ */
34
+ export interface TierContext {
35
+ /** Correlation ID for tracing */
36
+ correlationId: string;
37
+ /** Current tier being executed */
38
+ tier: CapabilityTier;
39
+ /** Input data */
40
+ input: unknown;
41
+ /** Cascade context */
42
+ cascadeContext: CascadeContext;
43
+ }
44
+ /**
45
+ * Handler for a specific tier
46
+ */
47
+ export interface TierHandler<T = unknown> {
48
+ /** Handler name for debugging */
49
+ name: string;
50
+ /** Execute the tier logic */
51
+ execute: (input: unknown, context: TierContext) => Promise<T>;
52
+ }
53
+ /**
54
+ * Retry configuration per tier
55
+ */
56
+ export interface TierRetryConfig {
57
+ /** Maximum number of retries */
58
+ maxRetries: number;
59
+ /** Base delay in milliseconds */
60
+ baseDelay: number;
61
+ /** Multiplier for exponential backoff */
62
+ multiplier?: number;
63
+ }
64
+ /**
65
+ * Result from a single tier execution
66
+ */
67
+ export interface TierResult {
68
+ /** Tier that was executed */
69
+ tier: CapabilityTier;
70
+ /** Whether the tier succeeded */
71
+ success: boolean;
72
+ /** Result value (if success) */
73
+ value?: unknown;
74
+ /** Error (if failure) */
75
+ error?: Error;
76
+ /** Whether the tier timed out */
77
+ timedOut?: boolean;
78
+ /** Duration in milliseconds */
79
+ duration: number;
80
+ }
81
+ /**
82
+ * Metrics from cascade execution
83
+ */
84
+ export interface CascadeMetrics {
85
+ /** Total execution duration */
86
+ totalDuration: number;
87
+ /** Duration per tier */
88
+ tierDurations: Partial<Record<CapabilityTier, number>>;
89
+ /** Number of retries per tier */
90
+ tierRetries?: Partial<Record<CapabilityTier, number>>;
91
+ }
92
+ /**
93
+ * Result from cascade execution
94
+ */
95
+ export interface CascadeResult<T = unknown> {
96
+ /** Final result value */
97
+ value: T;
98
+ /** Tier that produced the result */
99
+ tier: CapabilityTier;
100
+ /** History of all tier executions */
101
+ history: TierResult[];
102
+ /** Tiers that were skipped */
103
+ skippedTiers: CapabilityTier[];
104
+ /** Cascade context with tracing info */
105
+ context: CascadeContext;
106
+ /** Execution metrics */
107
+ metrics: CascadeMetrics;
108
+ }
109
+ /**
110
+ * Skip condition function
111
+ */
112
+ export type SkipCondition = (input: unknown) => boolean;
113
+ /**
114
+ * Configuration for CascadeExecutor
115
+ */
116
+ export interface CascadeConfig<T = unknown> {
117
+ /** Tier handlers */
118
+ tiers: Partial<Record<CapabilityTier, TierHandler<T>>>;
119
+ /** Per-tier timeouts in milliseconds */
120
+ timeouts?: Partial<Record<CapabilityTier, number>>;
121
+ /** Total cascade timeout in milliseconds */
122
+ totalTimeout?: number;
123
+ /** Use default timeouts from capability-tiers */
124
+ useDefaultTimeouts?: boolean;
125
+ /** Actor identifier for 5W+H events */
126
+ actor?: string;
127
+ /** Cascade name for 5W+H events */
128
+ cascadeName?: string;
129
+ /** Event callback for 5W+H events */
130
+ onEvent?: (event: FiveWHEvent) => void;
131
+ /** Skip conditions per tier */
132
+ skipConditions?: Partial<Record<CapabilityTier, SkipCondition>>;
133
+ /** Retry configuration per tier */
134
+ retryConfig?: Partial<Record<CapabilityTier, TierRetryConfig>>;
135
+ }
136
+ /**
137
+ * Error thrown when cascade times out
138
+ */
139
+ export declare class CascadeTimeoutError extends Error {
140
+ readonly timeout: number;
141
+ readonly elapsed: number;
142
+ constructor(timeout: number, elapsed: number);
143
+ }
144
+ /**
145
+ * Error thrown when a tier is skipped
146
+ */
147
+ export declare class TierSkippedError extends Error {
148
+ readonly tier: CapabilityTier;
149
+ readonly reason: string;
150
+ constructor(tier: CapabilityTier, reason: string);
151
+ }
152
+ /**
153
+ * Error thrown when all tiers fail
154
+ */
155
+ export declare class AllTiersFailedError extends Error {
156
+ readonly history: TierResult[];
157
+ constructor(history: TierResult[]);
158
+ }
159
+ /**
160
+ * CascadeExecutor implements the code -> generative -> agentic -> human pattern
161
+ */
162
+ export declare class CascadeExecutor<T = unknown> {
163
+ private readonly config;
164
+ private readonly actor;
165
+ private readonly cascadeName;
166
+ constructor(config: CascadeConfig<T>);
167
+ /**
168
+ * Execute the cascade
169
+ */
170
+ execute(input: unknown): Promise<CascadeResult<T>>;
171
+ /**
172
+ * Execute a single tier with timeout and retry support
173
+ */
174
+ private executeTier;
175
+ /**
176
+ * Execute a function with a timeout
177
+ */
178
+ private executeWithTimeout;
179
+ /**
180
+ * Get timeout for a tier
181
+ */
182
+ private getTierTimeout;
183
+ /**
184
+ * Get the next configured tier after the given tier
185
+ */
186
+ private getNextConfiguredTier;
187
+ /**
188
+ * Emit a 5W+H event
189
+ */
190
+ private emitEvent;
191
+ /**
192
+ * Sleep for a given duration
193
+ */
194
+ private sleep;
195
+ }
196
+ //# sourceMappingURL=cascade-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascade-executor.d.ts","sourceRoot":"","sources":["../src/cascade-executor.ts"],"names":[],"mappings":"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"}