@defai.digital/agent-parallel 13.4.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.
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Result Aggregator
3
+ *
4
+ * Combines results from parallel agent execution based on configured strategy.
5
+ *
6
+ * Invariants:
7
+ * - INV-APE-004: Result aggregation follows configured strategy
8
+ */
9
+ /**
10
+ * Deep merge two objects
11
+ * Later values override earlier values
12
+ */
13
+ function deepMerge(target, source) {
14
+ const result = { ...target };
15
+ for (const [key, value] of Object.entries(source)) {
16
+ if (value &&
17
+ typeof value === 'object' &&
18
+ !Array.isArray(value) &&
19
+ result[key] &&
20
+ typeof result[key] === 'object' &&
21
+ !Array.isArray(result[key])) {
22
+ // Recursively merge objects
23
+ result[key] = deepMerge(result[key], value);
24
+ }
25
+ else {
26
+ // Override with new value
27
+ result[key] = value;
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+ /**
33
+ * Merge strategy: Combine all outputs into single object
34
+ * INV-APE-004: Later tasks override earlier for same keys
35
+ */
36
+ function mergeResults(results) {
37
+ const merged = {};
38
+ // Sort by layer then completion time to ensure deterministic merge order
39
+ const sortedResults = [...results].sort((a, b) => {
40
+ // First by layer
41
+ const layerDiff = (a.layer ?? 0) - (b.layer ?? 0);
42
+ if (layerDiff !== 0)
43
+ return layerDiff;
44
+ // Then by completion time
45
+ const aTime = a.completedAt ? new Date(a.completedAt).getTime() : 0;
46
+ const bTime = b.completedAt ? new Date(b.completedAt).getTime() : 0;
47
+ return aTime - bTime;
48
+ });
49
+ for (const result of sortedResults) {
50
+ if (result.success && result.output !== undefined) {
51
+ if (typeof result.output === 'object' && result.output !== null && !Array.isArray(result.output)) {
52
+ // Deep merge object outputs
53
+ Object.assign(merged, deepMerge(merged, result.output));
54
+ }
55
+ else {
56
+ // For non-object outputs, use agent ID as key
57
+ merged[result.agentId] = result.output;
58
+ }
59
+ }
60
+ }
61
+ return Object.keys(merged).length > 0 ? merged : undefined;
62
+ }
63
+ /**
64
+ * List strategy: Return array of individual results
65
+ * INV-APE-004: Ordered by task definition order (taskId)
66
+ */
67
+ function listResults(results) {
68
+ return results
69
+ .filter((r) => r.success)
70
+ .sort((a, b) => a.taskId.localeCompare(b.taskId))
71
+ .map((r) => ({
72
+ taskId: r.taskId,
73
+ agentId: r.agentId,
74
+ output: r.output,
75
+ durationMs: r.durationMs,
76
+ }));
77
+ }
78
+ /**
79
+ * First success strategy: Return first successful result
80
+ * INV-APE-004: First by layer, then by completion time
81
+ */
82
+ function firstSuccessResult(results) {
83
+ const successResults = results
84
+ .filter((r) => r.success && r.output !== undefined)
85
+ .sort((a, b) => {
86
+ // First by layer
87
+ const layerDiff = (a.layer ?? 0) - (b.layer ?? 0);
88
+ if (layerDiff !== 0)
89
+ return layerDiff;
90
+ // Then by completion time
91
+ const aTime = a.completedAt ? new Date(a.completedAt).getTime() : 0;
92
+ const bTime = b.completedAt ? new Date(b.completedAt).getTime() : 0;
93
+ return aTime - bTime;
94
+ });
95
+ return successResults[0]?.output;
96
+ }
97
+ /**
98
+ * Creates a result aggregator
99
+ */
100
+ export function createResultAggregator() {
101
+ return {
102
+ /**
103
+ * Aggregate task results based on strategy
104
+ * INV-APE-004: Follows configured strategy exactly
105
+ */
106
+ aggregate(results, options) {
107
+ const { strategy, customAggregator } = options;
108
+ switch (strategy) {
109
+ case 'merge':
110
+ return mergeResults(results);
111
+ case 'list':
112
+ return listResults(results);
113
+ case 'firstSuccess':
114
+ return firstSuccessResult(results);
115
+ case 'custom':
116
+ if (!customAggregator) {
117
+ throw new Error('Custom aggregation strategy requires a customAggregator function');
118
+ }
119
+ return customAggregator(results);
120
+ default:
121
+ // Exhaustive check
122
+ const _exhaustive = strategy;
123
+ throw new Error(`Unknown aggregation strategy: ${_exhaustive}`);
124
+ }
125
+ },
126
+ };
127
+ }
128
+ /**
129
+ * Built-in aggregation strategies for convenience
130
+ */
131
+ export const AggregationStrategies = {
132
+ /**
133
+ * Merge all successful outputs into single object
134
+ */
135
+ merge: mergeResults,
136
+ /**
137
+ * Return array of all successful results
138
+ */
139
+ list: listResults,
140
+ /**
141
+ * Return first successful result only
142
+ */
143
+ firstSuccess: firstSuccessResult,
144
+ /**
145
+ * Create custom strategy from function
146
+ */
147
+ custom: (fn) => fn,
148
+ };
149
+ /**
150
+ * Utility: Create a keyed aggregator that groups results by a key
151
+ */
152
+ export function createKeyedAggregator(keyFn) {
153
+ return (results) => {
154
+ const grouped = {};
155
+ for (const result of results) {
156
+ if (result.success && result.output !== undefined) {
157
+ const key = keyFn(result);
158
+ if (!grouped[key]) {
159
+ grouped[key] = [];
160
+ }
161
+ grouped[key].push(result.output);
162
+ }
163
+ }
164
+ return grouped;
165
+ };
166
+ }
167
+ /**
168
+ * Utility: Create aggregator that filters by success and transforms
169
+ */
170
+ export function createTransformAggregator(transform) {
171
+ return (results) => {
172
+ return results
173
+ .filter((r) => r.success && r.output !== undefined)
174
+ .map((r) => transform(r.output, r));
175
+ };
176
+ }
177
+ /**
178
+ * Get aggregation strategy from string
179
+ */
180
+ export function getAggregationStrategy(name) {
181
+ const valid = ['merge', 'list', 'firstSuccess', 'custom'];
182
+ if (valid.includes(name)) {
183
+ return name;
184
+ }
185
+ throw new Error(`Invalid aggregation strategy: ${name}. Valid strategies: ${valid.join(', ')}`);
186
+ }
187
+ //# sourceMappingURL=result-aggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-aggregator.js","sourceRoot":"","sources":["../src/result-aggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Parallel Agent Execution Types
3
+ *
4
+ * Port interfaces and type definitions for parallel agent execution.
5
+ */
6
+ import type { AgentParallelTask, AgentParallelTaskResult, AgentParallelGroupResult, AgentParallelExecutionConfig, ExecutionPlan, SharedContext } from '@defai.digital/contracts';
7
+ /**
8
+ * Agent execution request
9
+ */
10
+ export interface AgentExecuteRequest {
11
+ agentId: string;
12
+ input: unknown;
13
+ provider?: string;
14
+ model?: string;
15
+ timeout?: number;
16
+ sessionId?: string;
17
+ }
18
+ /**
19
+ * Agent execution result
20
+ */
21
+ export interface AgentExecuteResult {
22
+ success: boolean;
23
+ agentId: string;
24
+ output?: unknown;
25
+ error?: string;
26
+ errorCode?: string;
27
+ durationMs: number;
28
+ }
29
+ /**
30
+ * Port interface for agent execution
31
+ * Implementations inject actual agent executor at runtime
32
+ */
33
+ export interface AgentExecutorPort {
34
+ /**
35
+ * Execute a single agent with input
36
+ */
37
+ execute(request: AgentExecuteRequest): Promise<AgentExecuteResult>;
38
+ /**
39
+ * Check if an agent exists
40
+ */
41
+ exists(agentId: string): Promise<boolean>;
42
+ }
43
+ /**
44
+ * Parallel agent orchestrator interface
45
+ */
46
+ export interface AgentParallelOrchestrator {
47
+ /**
48
+ * Execute multiple agents in parallel with DAG-based dependency management
49
+ * INV-APE-001: Respects maxConcurrentAgents
50
+ * INV-APE-002: Honors dependencies
51
+ * INV-APE-003: Shared context immutable
52
+ */
53
+ executeParallel(tasks: AgentParallelTask[], config?: Partial<AgentParallelExecutionConfig>, sharedContext?: Record<string, unknown>): Promise<AgentParallelGroupResult>;
54
+ /**
55
+ * Build execution plan without executing
56
+ * Returns DAG analysis showing execution layers
57
+ */
58
+ buildExecutionPlan(tasks: AgentParallelTask[]): ExecutionPlan;
59
+ /**
60
+ * Cancel ongoing execution
61
+ */
62
+ cancel(): void;
63
+ /**
64
+ * Get current configuration
65
+ */
66
+ getConfig(): AgentParallelExecutionConfig;
67
+ }
68
+ /**
69
+ * Execution layer - tasks at same level can run in parallel
70
+ */
71
+ export interface TaskLayer {
72
+ index: number;
73
+ tasks: AgentParallelTask[];
74
+ }
75
+ /**
76
+ * DAG analysis result
77
+ */
78
+ export interface DAGAnalysisResult {
79
+ layers: TaskLayer[];
80
+ totalLayers: number;
81
+ maxParallelism: number;
82
+ hasCycles: boolean;
83
+ cycleNodes?: string[];
84
+ }
85
+ /**
86
+ * DAG analyzer interface
87
+ */
88
+ export interface DAGAnalyzer {
89
+ /**
90
+ * Analyze tasks and build execution layers
91
+ * INV-APE-002: Ensures dependencies honored
92
+ * INV-APE-200: Detects circular dependencies
93
+ */
94
+ analyze(tasks: AgentParallelTask[]): DAGAnalysisResult;
95
+ /**
96
+ * Validate DAG structure
97
+ */
98
+ validate(tasks: AgentParallelTask[]): {
99
+ valid: boolean;
100
+ errors: string[];
101
+ };
102
+ }
103
+ /**
104
+ * Context manager for shared immutable context
105
+ * INV-APE-003: Context immutable during execution
106
+ */
107
+ export interface ContextManager {
108
+ /**
109
+ * Create frozen shared context
110
+ */
111
+ create(data: Record<string, unknown>): SharedContext;
112
+ /**
113
+ * Get read-only view of context
114
+ */
115
+ get(): SharedContext | null;
116
+ /**
117
+ * Check if context is frozen/immutable
118
+ */
119
+ isFrozen(): boolean;
120
+ /**
121
+ * Clear context (for cleanup)
122
+ */
123
+ clear(): void;
124
+ }
125
+ /**
126
+ * Result aggregation strategy
127
+ */
128
+ export type AggregationStrategy = 'merge' | 'list' | 'firstSuccess' | 'custom';
129
+ /**
130
+ * Custom aggregation function
131
+ */
132
+ export type CustomAggregator = (results: AgentParallelTaskResult[]) => unknown;
133
+ /**
134
+ * Result aggregator options
135
+ */
136
+ export interface ResultAggregatorOptions {
137
+ strategy: AggregationStrategy;
138
+ customAggregator?: CustomAggregator;
139
+ }
140
+ /**
141
+ * Result aggregator interface
142
+ * INV-APE-004: Aggregation follows configured strategy
143
+ */
144
+ export interface ResultAggregator {
145
+ /**
146
+ * Aggregate task results based on strategy
147
+ */
148
+ aggregate(results: AgentParallelTaskResult[], options: ResultAggregatorOptions): unknown;
149
+ }
150
+ /**
151
+ * Progress event types
152
+ */
153
+ export type ParallelProgressEventType = 'execution.started' | 'layer.started' | 'layer.completed' | 'task.started' | 'task.completed' | 'task.failed' | 'task.skipped' | 'execution.completed' | 'execution.cancelled';
154
+ /**
155
+ * Progress event
156
+ */
157
+ export interface ParallelProgressEvent {
158
+ type: ParallelProgressEventType;
159
+ timestamp: string;
160
+ groupId: string;
161
+ layerIndex?: number;
162
+ taskId?: string;
163
+ agentId?: string;
164
+ totalTasks?: number;
165
+ completedTasks?: number;
166
+ failedTasks?: number;
167
+ message?: string;
168
+ }
169
+ /**
170
+ * Progress callback
171
+ */
172
+ export type ParallelProgressCallback = (event: ParallelProgressEvent) => void;
173
+ /**
174
+ * Options for creating parallel orchestrator
175
+ */
176
+ export interface AgentParallelOrchestratorOptions {
177
+ /**
178
+ * Agent executor port (for dependency injection)
179
+ */
180
+ agentExecutor: AgentExecutorPort;
181
+ /**
182
+ * Default configuration
183
+ */
184
+ defaultConfig?: Partial<AgentParallelExecutionConfig>;
185
+ /**
186
+ * Progress callback for execution updates
187
+ */
188
+ onProgress?: ParallelProgressCallback;
189
+ }
190
+ /**
191
+ * Stub agent executor for testing
192
+ */
193
+ export declare class StubAgentExecutor implements AgentExecutorPort {
194
+ private results;
195
+ private existingAgents;
196
+ /**
197
+ * Set expected result for an agent
198
+ */
199
+ setResult(agentId: string, result: Partial<AgentExecuteResult>): void;
200
+ /**
201
+ * Set agent as existing
202
+ */
203
+ setExists(agentId: string, exists: boolean): void;
204
+ execute(request: AgentExecuteRequest): Promise<AgentExecuteResult>;
205
+ exists(agentId: string): Promise<boolean>;
206
+ }
207
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Parallel Agent Execution Types
3
+ *
4
+ * Port interfaces and type definitions for parallel agent execution.
5
+ */
6
+ // ============================================================================
7
+ // Stub Implementation (for testing)
8
+ // ============================================================================
9
+ /**
10
+ * Stub agent executor for testing
11
+ */
12
+ export class StubAgentExecutor {
13
+ results = new Map();
14
+ existingAgents = new Set();
15
+ /**
16
+ * Set expected result for an agent
17
+ */
18
+ setResult(agentId, result) {
19
+ this.results.set(agentId, {
20
+ success: true,
21
+ agentId,
22
+ durationMs: 100,
23
+ ...result,
24
+ });
25
+ }
26
+ /**
27
+ * Set agent as existing
28
+ */
29
+ setExists(agentId, exists) {
30
+ if (exists) {
31
+ this.existingAgents.add(agentId);
32
+ }
33
+ else {
34
+ this.existingAgents.delete(agentId);
35
+ }
36
+ }
37
+ async execute(request) {
38
+ const result = this.results.get(request.agentId);
39
+ if (result) {
40
+ return result;
41
+ }
42
+ // Default: return success with echo output
43
+ return {
44
+ success: true,
45
+ agentId: request.agentId,
46
+ output: { input: request.input, echo: true },
47
+ durationMs: 50,
48
+ };
49
+ }
50
+ async exists(agentId) {
51
+ return this.existingAgents.has(agentId) || this.results.has(agentId);
52
+ }
53
+ }
54
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuQH,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IACrD,cAAc,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,OAAe,EAAE,MAAmC;QAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;YACxB,OAAO,EAAE,IAAI;YACb,OAAO;YACP,UAAU,EAAE,GAAG;YACf,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAe,EAAE,MAAe;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2CAA2C;QAC3C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5C,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@defai.digital/agent-parallel",
3
+ "version": "13.4.0",
4
+ "type": "module",
5
+ "description": "Parallel agent execution orchestration for AutomatosX",
6
+ "license": "BUSL-1.1",
7
+ "author": "DEFAI Private Limited",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/defai-digital/automatosx.git",
11
+ "directory": "packages/core/agent-parallel"
12
+ },
13
+ "homepage": "https://github.com/defai-digital/automatosx#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/defai-digital/automatosx/issues"
16
+ },
17
+ "main": "dist/index.js",
18
+ "types": "dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "src"
28
+ ],
29
+ "engines": {
30
+ "node": ">=20.0.0"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "dependencies": {
36
+ "@defai.digital/contracts": "13.4.0"
37
+ },
38
+ "devDependencies": {
39
+ "typescript": "^5.7.2"
40
+ },
41
+ "peerDependencies": {
42
+ "zod": "^3.23.0"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc --build",
46
+ "clean": "rm -rf dist"
47
+ }
48
+ }