digital-workers 2.0.2 → 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 (69) hide show
  1. package/.turbo/turbo-build.log +4 -5
  2. package/CHANGELOG.md +31 -0
  3. package/LICENSE +21 -0
  4. package/README.md +134 -180
  5. package/dist/actions.d.ts.map +1 -1
  6. package/dist/actions.js +1 -0
  7. package/dist/actions.js.map +1 -1
  8. package/dist/agent-comms.d.ts +438 -0
  9. package/dist/agent-comms.d.ts.map +1 -0
  10. package/dist/agent-comms.js +666 -0
  11. package/dist/agent-comms.js.map +1 -0
  12. package/dist/capability-tiers.d.ts +230 -0
  13. package/dist/capability-tiers.d.ts.map +1 -0
  14. package/dist/capability-tiers.js +388 -0
  15. package/dist/capability-tiers.js.map +1 -0
  16. package/dist/cascade-context.d.ts +523 -0
  17. package/dist/cascade-context.d.ts.map +1 -0
  18. package/dist/cascade-context.js +494 -0
  19. package/dist/cascade-context.js.map +1 -0
  20. package/dist/error-escalation.d.ts +416 -0
  21. package/dist/error-escalation.d.ts.map +1 -0
  22. package/dist/error-escalation.js +656 -0
  23. package/dist/error-escalation.js.map +1 -0
  24. package/dist/index.d.ts +10 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +34 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/load-balancing.d.ts +395 -0
  29. package/dist/load-balancing.d.ts.map +1 -0
  30. package/dist/load-balancing.js +905 -0
  31. package/dist/load-balancing.js.map +1 -0
  32. package/dist/types.d.ts +8 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js +1 -0
  35. package/dist/types.js.map +1 -1
  36. package/package.json +14 -14
  37. package/src/actions.js +436 -0
  38. package/src/actions.ts +9 -8
  39. package/src/agent-comms.ts +1238 -0
  40. package/src/approve.js +234 -0
  41. package/src/ask.js +226 -0
  42. package/src/capability-tiers.ts +545 -0
  43. package/src/cascade-context.ts +648 -0
  44. package/src/decide.js +244 -0
  45. package/src/do.js +227 -0
  46. package/src/error-escalation.ts +1135 -0
  47. package/src/generate.js +298 -0
  48. package/src/goals.js +205 -0
  49. package/src/index.js +68 -0
  50. package/src/index.ts +223 -0
  51. package/src/is.js +317 -0
  52. package/src/kpis.js +270 -0
  53. package/src/load-balancing.ts +1381 -0
  54. package/src/notify.js +219 -0
  55. package/src/role.js +110 -0
  56. package/src/team.js +130 -0
  57. package/src/transports.js +357 -0
  58. package/src/types.js +71 -0
  59. package/src/types.ts +8 -0
  60. package/test/actions.test.js +401 -0
  61. package/test/agent-comms.test.ts +1397 -0
  62. package/test/capability-tiers.test.ts +631 -0
  63. package/test/cascade-context.test.ts +692 -0
  64. package/test/error-escalation.test.ts +1205 -0
  65. package/test/load-balancing-thread-safety.test.ts +464 -0
  66. package/test/load-balancing.test.ts +1145 -0
  67. package/test/standalone.test.js +250 -0
  68. package/test/types.test.js +371 -0
  69. package/test/types.test.ts +35 -0
@@ -0,0 +1,494 @@
1
+ /**
2
+ * Type-safe cascade context schema for agent coordination
3
+ *
4
+ * Provides structured data flow and coordination between agents in multi-agent
5
+ * workflows. Enables type-safe context propagation, validation, enrichment,
6
+ * and serialization for distributed agent systems.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { z } from 'zod';
11
+ // ============================================================================
12
+ // Agent Tier Schema and Type
13
+ // ============================================================================
14
+ /**
15
+ * Agent tier levels for cascade hierarchies
16
+ *
17
+ * - coordinator: Orchestrates multiple agents, highest level
18
+ * - supervisor: Manages worker agents, handles escalation
19
+ * - worker: Executes standard tasks
20
+ * - specialist: Handles domain-specific tasks
21
+ * - executor: Low-level task execution
22
+ */
23
+ export const AgentTierSchema = z.enum([
24
+ 'coordinator',
25
+ 'supervisor',
26
+ 'worker',
27
+ 'specialist',
28
+ 'executor',
29
+ ]);
30
+ // ============================================================================
31
+ // Context Version Schema and Type
32
+ // ============================================================================
33
+ /**
34
+ * Version tracking for context evolution and debugging
35
+ */
36
+ export const ContextVersionSchema = z.object({
37
+ major: z.number().int().nonnegative(),
38
+ minor: z.number().int().nonnegative(),
39
+ patch: z.number().int().nonnegative(),
40
+ timestamp: z.date(),
41
+ hash: z.string().optional(),
42
+ });
43
+ // ============================================================================
44
+ // Agent Reference Schema
45
+ // ============================================================================
46
+ /**
47
+ * Reference to an agent with tier information
48
+ */
49
+ export const AgentRefSchema = z.object({
50
+ id: z.string().min(1),
51
+ tier: AgentTierSchema,
52
+ name: z.string().optional(),
53
+ capabilities: z.array(z.string()).optional(),
54
+ });
55
+ // ============================================================================
56
+ // Task Priority Schema
57
+ // ============================================================================
58
+ export const TaskPrioritySchema = z.enum(['critical', 'high', 'normal', 'low']);
59
+ // ============================================================================
60
+ // Task Schema
61
+ // ============================================================================
62
+ export const TaskInfoSchema = z.object({
63
+ id: z.string().min(1),
64
+ type: z.string().min(1),
65
+ priority: TaskPrioritySchema,
66
+ description: z.string(),
67
+ deadline: z.date().optional(),
68
+ parentTaskId: z.string().optional(),
69
+ });
70
+ // ============================================================================
71
+ // Execution Phase Schema
72
+ // ============================================================================
73
+ export const ExecutionPhaseSchema = z.enum([
74
+ 'planning',
75
+ 'execution',
76
+ 'validation',
77
+ 'escalation',
78
+ 'completed',
79
+ 'failed',
80
+ ]);
81
+ // ============================================================================
82
+ // Execution State Schema
83
+ // ============================================================================
84
+ export const ExecutionStateSchema = z.object({
85
+ phase: ExecutionPhaseSchema,
86
+ startedAt: z.date(),
87
+ completedAt: z.date().optional(),
88
+ attempts: z.number().int().nonnegative(),
89
+ lastError: z.string().optional(),
90
+ escalatedFrom: z.string().optional(),
91
+ });
92
+ // ============================================================================
93
+ // Trace Entry Schema
94
+ // ============================================================================
95
+ export const TraceEntrySchema = z.object({
96
+ agentId: z.string(),
97
+ tier: AgentTierSchema,
98
+ timestamp: z.date(),
99
+ action: z.string(),
100
+ input: z.unknown().optional(),
101
+ output: z.unknown().optional(),
102
+ duration: z.number().optional(),
103
+ error: z.string().optional(),
104
+ });
105
+ // ============================================================================
106
+ // AgentCascadeContext Schema
107
+ // ============================================================================
108
+ /**
109
+ * Main cascade context schema for agent coordination
110
+ *
111
+ * Contains all information needed for agents to coordinate in a cascade:
112
+ * - Identity: Context ID and version
113
+ * - Agents: Origin and current agent references
114
+ * - Task: Task information and priority
115
+ * - State: Current execution state
116
+ * - Data: Task-specific payload
117
+ * - Trace: Execution history for debugging
118
+ * - Metadata: Extension point for custom data
119
+ */
120
+ export const AgentCascadeContextSchema = z.object({
121
+ id: z.string().min(1),
122
+ version: ContextVersionSchema,
123
+ originAgent: AgentRefSchema,
124
+ currentAgent: AgentRefSchema,
125
+ task: TaskInfoSchema,
126
+ state: ExecutionStateSchema,
127
+ data: z.record(z.unknown()).optional(),
128
+ trace: z.array(TraceEntrySchema),
129
+ metadata: z.record(z.unknown()).optional(),
130
+ });
131
+ // ============================================================================
132
+ // Validation Functions
133
+ // ============================================================================
134
+ /**
135
+ * Validate a cascade context against the schema
136
+ *
137
+ * @param context - The context to validate
138
+ * @returns Validation result with success flag and errors if any
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const result = validateContext(context)
143
+ * if (!result.success) {
144
+ * console.error('Invalid context:', result.errors)
145
+ * }
146
+ * ```
147
+ */
148
+ export function validateContext(context) {
149
+ const result = AgentCascadeContextSchema.safeParse(context);
150
+ if (result.success) {
151
+ return { success: true, data: result.data };
152
+ }
153
+ return {
154
+ success: false,
155
+ errors: result.error.issues.map(issue => ({
156
+ path: issue.path,
157
+ message: issue.message,
158
+ code: issue.code,
159
+ })),
160
+ };
161
+ }
162
+ // ============================================================================
163
+ // Context Version Functions
164
+ // ============================================================================
165
+ /**
166
+ * Create a new context version
167
+ *
168
+ * @param options - Optional version numbers
169
+ * @returns A new ContextVersion
170
+ */
171
+ export function createContextVersion(options) {
172
+ return {
173
+ major: options?.major ?? 1,
174
+ minor: options?.minor ?? 0,
175
+ patch: options?.patch ?? 0,
176
+ timestamp: new Date(),
177
+ };
178
+ }
179
+ /**
180
+ * Increment version patch number
181
+ */
182
+ function incrementPatch(version) {
183
+ return {
184
+ ...version,
185
+ patch: version.patch + 1,
186
+ timestamp: new Date(),
187
+ };
188
+ }
189
+ // ============================================================================
190
+ // Context Factory Functions
191
+ // ============================================================================
192
+ /**
193
+ * Generate a unique context ID
194
+ */
195
+ function generateContextId() {
196
+ const timestamp = Date.now().toString(36);
197
+ const random = Math.random().toString(36).substring(2, 10);
198
+ return `ctx_${timestamp}_${random}`;
199
+ }
200
+ /**
201
+ * Create a new cascade context
202
+ *
203
+ * @param options - Context creation options
204
+ * @returns A new AgentCascadeContext
205
+ *
206
+ * @example
207
+ * ```ts
208
+ * const context = createCascadeContext({
209
+ * originAgent: { id: 'coordinator', tier: 'coordinator', name: 'Main' },
210
+ * task: { id: 'task_1', type: 'analysis', priority: 'normal', description: 'Analyze data' },
211
+ * })
212
+ * ```
213
+ */
214
+ export function createCascadeContext(options) {
215
+ return {
216
+ id: generateContextId(),
217
+ version: createContextVersion(),
218
+ originAgent: options.originAgent,
219
+ currentAgent: { ...options.originAgent },
220
+ task: options.task,
221
+ state: {
222
+ phase: 'planning',
223
+ startedAt: new Date(),
224
+ attempts: 0,
225
+ },
226
+ data: options.data,
227
+ trace: [],
228
+ metadata: options.metadata,
229
+ };
230
+ }
231
+ // ============================================================================
232
+ // Context Enrichment Functions
233
+ // ============================================================================
234
+ /**
235
+ * Enrich a context with data from an agent
236
+ *
237
+ * Creates a new context with:
238
+ * - Merged data from the enrichment
239
+ * - Updated currentAgent to the enriching agent
240
+ * - Incremented version patch
241
+ * - Added trace entry
242
+ *
243
+ * @param context - The original context
244
+ * @param enrichment - The enrichment data
245
+ * @returns A new enriched context (original is unchanged)
246
+ *
247
+ * @example
248
+ * ```ts
249
+ * const enriched = enrichContext(context, {
250
+ * agentId: 'worker_1',
251
+ * tier: 'worker',
252
+ * timestamp: new Date(),
253
+ * data: { analysisResult: 'approved' },
254
+ * })
255
+ * ```
256
+ */
257
+ export function enrichContext(context, enrichment) {
258
+ // Create trace entry
259
+ const traceEntry = {
260
+ agentId: enrichment.agentId,
261
+ tier: enrichment.tier,
262
+ timestamp: enrichment.timestamp,
263
+ action: enrichment.action ?? 'enrich',
264
+ };
265
+ // Merge data deeply
266
+ const mergedData = deepMerge(context.data ?? {}, enrichment.data);
267
+ return {
268
+ ...context,
269
+ version: incrementPatch(context.version),
270
+ currentAgent: {
271
+ id: enrichment.agentId,
272
+ tier: enrichment.tier,
273
+ name: context.currentAgent.name,
274
+ },
275
+ data: mergedData,
276
+ trace: [...context.trace, traceEntry],
277
+ };
278
+ }
279
+ // ============================================================================
280
+ // Serialization Functions
281
+ // ============================================================================
282
+ /**
283
+ * Custom replacer for JSON.stringify that handles Date objects
284
+ */
285
+ function dateReplacer(_key, value) {
286
+ if (value instanceof Date) {
287
+ return value.toISOString();
288
+ }
289
+ return value;
290
+ }
291
+ /**
292
+ * Serialize a cascade context to JSON string
293
+ *
294
+ * Handles Date objects by converting them to ISO strings.
295
+ *
296
+ * @param context - The context to serialize
297
+ * @returns JSON string representation
298
+ */
299
+ export function serializeContext(context) {
300
+ return JSON.stringify(context, dateReplacer);
301
+ }
302
+ /**
303
+ * Deserialize a JSON string to a cascade context
304
+ *
305
+ * Validates the deserialized data and restores Date objects.
306
+ *
307
+ * @param json - JSON string to deserialize
308
+ * @returns The deserialized and validated context
309
+ * @throws Error if JSON is invalid or context validation fails
310
+ */
311
+ export function deserializeContext(json) {
312
+ let parsed;
313
+ try {
314
+ parsed = JSON.parse(json);
315
+ }
316
+ catch {
317
+ throw new Error('Invalid JSON string');
318
+ }
319
+ // Restore Date objects
320
+ if (typeof parsed === 'object' && parsed !== null) {
321
+ restoreDates(parsed);
322
+ }
323
+ // Validate the parsed context
324
+ const result = validateContext(parsed);
325
+ if (!result.success) {
326
+ throw new Error(`Invalid context structure: ${result.errors?.map(e => e.message).join(', ')}`);
327
+ }
328
+ return result.data;
329
+ }
330
+ /**
331
+ * Recursively restore ISO date strings to Date objects
332
+ */
333
+ function restoreDates(obj) {
334
+ const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/;
335
+ for (const key of Object.keys(obj)) {
336
+ const value = obj[key];
337
+ if (typeof value === 'string' && isoDateRegex.test(value)) {
338
+ obj[key] = new Date(value);
339
+ }
340
+ else if (typeof value === 'object' && value !== null) {
341
+ if (Array.isArray(value)) {
342
+ for (const item of value) {
343
+ if (typeof item === 'object' && item !== null) {
344
+ restoreDates(item);
345
+ }
346
+ }
347
+ }
348
+ else {
349
+ restoreDates(value);
350
+ }
351
+ }
352
+ }
353
+ }
354
+ // ============================================================================
355
+ // Context Merge/Diff Functions
356
+ // ============================================================================
357
+ /**
358
+ * Deep merge two objects
359
+ */
360
+ function deepMerge(target, source) {
361
+ const result = { ...target };
362
+ for (const key of Object.keys(source)) {
363
+ const sourceValue = source[key];
364
+ const targetValue = result[key];
365
+ if (typeof sourceValue === 'object' &&
366
+ sourceValue !== null &&
367
+ !Array.isArray(sourceValue) &&
368
+ typeof targetValue === 'object' &&
369
+ targetValue !== null &&
370
+ !Array.isArray(targetValue)) {
371
+ result[key] = deepMerge(targetValue, sourceValue);
372
+ }
373
+ else {
374
+ result[key] = sourceValue;
375
+ }
376
+ }
377
+ return result;
378
+ }
379
+ /**
380
+ * Merge two cascade contexts
381
+ *
382
+ * Combines contexts preferring the newer version:
383
+ * - Takes version, state from the newer context
384
+ * - Deep merges data objects
385
+ * - Concatenates trace arrays
386
+ * - Merges metadata
387
+ *
388
+ * @param ctx1 - First context
389
+ * @param ctx2 - Second context
390
+ * @returns Merged context
391
+ */
392
+ export function mergeContexts(ctx1, ctx2) {
393
+ // Determine which is newer based on version
394
+ const ctx1Version = ctx1.version.major * 10000 + ctx1.version.minor * 100 + ctx1.version.patch;
395
+ const ctx2Version = ctx2.version.major * 10000 + ctx2.version.minor * 100 + ctx2.version.patch;
396
+ const [older, newer] = ctx1Version <= ctx2Version ? [ctx1, ctx2] : [ctx2, ctx1];
397
+ // Merge data deeply
398
+ const mergedData = deepMerge(older.data ?? {}, newer.data ?? {});
399
+ // Combine traces (deduplicate by timestamp + agentId)
400
+ const seenTraces = new Set();
401
+ const combinedTrace = [];
402
+ for (const entry of [...older.trace, ...newer.trace]) {
403
+ const key = `${entry.agentId}-${entry.timestamp.getTime()}`;
404
+ if (!seenTraces.has(key)) {
405
+ seenTraces.add(key);
406
+ combinedTrace.push(entry);
407
+ }
408
+ }
409
+ // Merge metadata
410
+ const mergedMetadata = deepMerge(older.metadata ?? {}, newer.metadata ?? {});
411
+ return {
412
+ ...newer,
413
+ data: mergedData,
414
+ trace: combinedTrace,
415
+ metadata: mergedMetadata,
416
+ };
417
+ }
418
+ /**
419
+ * Compare two contexts and return the differences
420
+ *
421
+ * @param ctx1 - Original context
422
+ * @param ctx2 - Modified context
423
+ * @returns Diff object with list of changes
424
+ */
425
+ export function diffContexts(ctx1, ctx2) {
426
+ const changes = [];
427
+ // Helper to compare values recursively
428
+ function compareValues(path, val1, val2) {
429
+ // Handle undefined/null
430
+ if (val1 === undefined && val2 !== undefined) {
431
+ changes.push({ path, oldValue: val1, newValue: val2, type: 'added' });
432
+ return;
433
+ }
434
+ if (val1 !== undefined && val2 === undefined) {
435
+ changes.push({ path, oldValue: val1, newValue: val2, type: 'removed' });
436
+ return;
437
+ }
438
+ // Handle Date objects
439
+ if (val1 instanceof Date && val2 instanceof Date) {
440
+ if (val1.getTime() !== val2.getTime()) {
441
+ changes.push({ path, oldValue: val1, newValue: val2, type: 'modified' });
442
+ }
443
+ return;
444
+ }
445
+ // Handle primitives
446
+ if (typeof val1 !== 'object' || typeof val2 !== 'object') {
447
+ if (val1 !== val2) {
448
+ changes.push({ path, oldValue: val1, newValue: val2, type: 'modified' });
449
+ }
450
+ return;
451
+ }
452
+ // Handle null
453
+ if (val1 === null || val2 === null) {
454
+ if (val1 !== val2) {
455
+ changes.push({ path, oldValue: val1, newValue: val2, type: 'modified' });
456
+ }
457
+ return;
458
+ }
459
+ // Handle arrays
460
+ if (Array.isArray(val1) && Array.isArray(val2)) {
461
+ if (JSON.stringify(val1) !== JSON.stringify(val2)) {
462
+ changes.push({ path, oldValue: val1, newValue: val2, type: 'modified' });
463
+ }
464
+ return;
465
+ }
466
+ // Handle objects
467
+ const obj1 = val1;
468
+ const obj2 = val2;
469
+ const allKeys = Array.from(new Set([...Object.keys(obj1), ...Object.keys(obj2)]));
470
+ for (const key of allKeys) {
471
+ compareValues([...path, key], obj1[key], obj2[key]);
472
+ }
473
+ }
474
+ // Compare top-level fields (excluding trace which is handled specially)
475
+ const fieldsToCompare = [
476
+ 'id',
477
+ 'version',
478
+ 'originAgent',
479
+ 'currentAgent',
480
+ 'task',
481
+ 'state',
482
+ 'data',
483
+ 'metadata',
484
+ ];
485
+ for (const field of fieldsToCompare) {
486
+ compareValues([field], ctx1[field], ctx2[field]);
487
+ }
488
+ return {
489
+ changes,
490
+ fromVersion: ctx1.version,
491
+ toVersion: ctx2.version,
492
+ };
493
+ }
494
+ //# 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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"}