@defai.digital/ax-cli 2.7.0 → 3.0.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.
Files changed (197) hide show
  1. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +69 -0
  2. package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +24 -0
  3. package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +69 -0
  4. package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +44 -0
  5. package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +24 -0
  6. package/.ax-cli/checkpoints/metadata.json +62 -0
  7. package/README.md +87 -11
  8. package/dist/agent/context-manager.d.ts +2 -2
  9. package/dist/agent/context-manager.js +37 -15
  10. package/dist/agent/context-manager.js.map +1 -1
  11. package/dist/agent/dependency-resolver.d.ts +83 -0
  12. package/dist/agent/dependency-resolver.js +310 -0
  13. package/dist/agent/dependency-resolver.js.map +1 -0
  14. package/dist/agent/llm-agent.d.ts +111 -0
  15. package/dist/agent/llm-agent.js +625 -3
  16. package/dist/agent/llm-agent.js.map +1 -1
  17. package/dist/agent/specialized/analysis-agent.d.ts +11 -0
  18. package/dist/agent/specialized/analysis-agent.js +33 -0
  19. package/dist/agent/specialized/analysis-agent.js.map +1 -0
  20. package/dist/agent/specialized/debug-agent.d.ts +11 -0
  21. package/dist/agent/specialized/debug-agent.js +33 -0
  22. package/dist/agent/specialized/debug-agent.js.map +1 -0
  23. package/dist/agent/specialized/documentation-agent.d.ts +11 -0
  24. package/dist/agent/specialized/documentation-agent.js +33 -0
  25. package/dist/agent/specialized/documentation-agent.js.map +1 -0
  26. package/dist/agent/specialized/index.d.ts +11 -0
  27. package/dist/agent/specialized/index.js +12 -0
  28. package/dist/agent/specialized/index.js.map +1 -0
  29. package/dist/agent/specialized/performance-agent.d.ts +11 -0
  30. package/dist/agent/specialized/performance-agent.js +33 -0
  31. package/dist/agent/specialized/performance-agent.js.map +1 -0
  32. package/dist/agent/specialized/refactoring-agent.d.ts +11 -0
  33. package/dist/agent/specialized/refactoring-agent.js +33 -0
  34. package/dist/agent/specialized/refactoring-agent.js.map +1 -0
  35. package/dist/agent/specialized/testing-agent.d.ts +11 -0
  36. package/dist/agent/specialized/testing-agent.js +33 -0
  37. package/dist/agent/specialized/testing-agent.js.map +1 -0
  38. package/dist/agent/subagent-orchestrator.d.ts +128 -0
  39. package/dist/agent/subagent-orchestrator.js +388 -0
  40. package/dist/agent/subagent-orchestrator.js.map +1 -0
  41. package/dist/agent/subagent-types.d.ts +262 -0
  42. package/dist/agent/subagent-types.js +152 -0
  43. package/dist/agent/subagent-types.js.map +1 -0
  44. package/dist/agent/subagent.d.ts +88 -0
  45. package/dist/agent/subagent.js +426 -0
  46. package/dist/agent/subagent.js.map +1 -0
  47. package/dist/checkpoint/index.d.ts +9 -0
  48. package/dist/checkpoint/index.js +11 -0
  49. package/dist/checkpoint/index.js.map +1 -0
  50. package/dist/checkpoint/manager.d.ts +99 -0
  51. package/dist/checkpoint/manager.js +281 -0
  52. package/dist/checkpoint/manager.js.map +1 -0
  53. package/dist/checkpoint/storage.d.ts +31 -0
  54. package/dist/checkpoint/storage.js +265 -0
  55. package/dist/checkpoint/storage.js.map +1 -0
  56. package/dist/checkpoint/types.d.ts +111 -0
  57. package/dist/checkpoint/types.js +17 -0
  58. package/dist/checkpoint/types.js.map +1 -0
  59. package/dist/commands/cache.js +5 -3
  60. package/dist/commands/cache.js.map +1 -1
  61. package/dist/commands/memory.js +21 -16
  62. package/dist/commands/memory.js.map +1 -1
  63. package/dist/commands/plan.d.ts +43 -0
  64. package/dist/commands/plan.js +385 -0
  65. package/dist/commands/plan.js.map +1 -0
  66. package/dist/commands/rewind.d.ts +19 -0
  67. package/dist/commands/rewind.js +221 -0
  68. package/dist/commands/rewind.js.map +1 -0
  69. package/dist/constants.d.ts +28 -0
  70. package/dist/constants.js +29 -0
  71. package/dist/constants.js.map +1 -1
  72. package/dist/hooks/use-enhanced-input.d.ts +5 -1
  73. package/dist/hooks/use-enhanced-input.js +23 -10
  74. package/dist/hooks/use-enhanced-input.js.map +1 -1
  75. package/dist/hooks/use-input-handler.d.ts +11 -1
  76. package/dist/hooks/use-input-handler.js +294 -2
  77. package/dist/hooks/use-input-handler.js.map +1 -1
  78. package/dist/llm/client.js +2 -1
  79. package/dist/llm/client.js.map +1 -1
  80. package/dist/llm/tools.d.ts +5 -0
  81. package/dist/llm/tools.js +57 -6
  82. package/dist/llm/tools.js.map +1 -1
  83. package/dist/mcp/client.d.ts +1 -0
  84. package/dist/mcp/client.js +30 -8
  85. package/dist/mcp/client.js.map +1 -1
  86. package/dist/mcp/transports.d.ts +0 -1
  87. package/dist/mcp/transports.js +10 -7
  88. package/dist/mcp/transports.js.map +1 -1
  89. package/dist/planner/dependency-resolver.d.ts +72 -0
  90. package/dist/planner/dependency-resolver.js +272 -0
  91. package/dist/planner/dependency-resolver.js.map +1 -0
  92. package/dist/planner/index.d.ts +12 -0
  93. package/dist/planner/index.js +26 -0
  94. package/dist/planner/index.js.map +1 -0
  95. package/dist/planner/plan-generator.d.ts +74 -0
  96. package/dist/planner/plan-generator.js +244 -0
  97. package/dist/planner/plan-generator.js.map +1 -0
  98. package/dist/planner/plan-storage.d.ts +98 -0
  99. package/dist/planner/plan-storage.js +325 -0
  100. package/dist/planner/plan-storage.js.map +1 -0
  101. package/dist/planner/prompts/planning-prompt.d.ts +41 -0
  102. package/dist/planner/prompts/planning-prompt.js +289 -0
  103. package/dist/planner/prompts/planning-prompt.js.map +1 -0
  104. package/dist/planner/task-planner.d.ts +135 -0
  105. package/dist/planner/task-planner.js +493 -0
  106. package/dist/planner/task-planner.js.map +1 -0
  107. package/dist/planner/token-estimator.d.ts +63 -0
  108. package/dist/planner/token-estimator.js +295 -0
  109. package/dist/planner/token-estimator.js.map +1 -0
  110. package/dist/planner/types.d.ts +669 -0
  111. package/dist/planner/types.js +213 -0
  112. package/dist/planner/types.js.map +1 -0
  113. package/dist/schemas/api-schemas.js +4 -0
  114. package/dist/schemas/api-schemas.js.map +1 -1
  115. package/dist/schemas/confirmation-schemas.d.ts +5 -0
  116. package/dist/schemas/confirmation-schemas.js +7 -0
  117. package/dist/schemas/confirmation-schemas.js.map +1 -1
  118. package/dist/schemas/index.d.ts +4 -4
  119. package/dist/tools/bash-output.d.ts +25 -0
  120. package/dist/tools/bash-output.js +145 -0
  121. package/dist/tools/bash-output.js.map +1 -0
  122. package/dist/tools/bash.d.ts +46 -2
  123. package/dist/tools/bash.js +241 -42
  124. package/dist/tools/bash.js.map +1 -1
  125. package/dist/tools/search.js +34 -9
  126. package/dist/tools/search.js.map +1 -1
  127. package/dist/tools/text-editor.d.ts +16 -0
  128. package/dist/tools/text-editor.js +37 -2
  129. package/dist/tools/text-editor.js.map +1 -1
  130. package/dist/ui/components/chat-history.d.ts +1 -0
  131. package/dist/ui/components/chat-history.js +125 -41
  132. package/dist/ui/components/chat-history.js.map +1 -1
  133. package/dist/ui/components/chat-input.js +10 -3
  134. package/dist/ui/components/chat-input.js.map +1 -1
  135. package/dist/ui/components/chat-interface.js +154 -45
  136. package/dist/ui/components/chat-interface.js.map +1 -1
  137. package/dist/ui/components/collapsible-tool-result.d.ts +26 -0
  138. package/dist/ui/components/collapsible-tool-result.js +172 -0
  139. package/dist/ui/components/collapsible-tool-result.js.map +1 -0
  140. package/dist/ui/components/command-suggestions.js +2 -1
  141. package/dist/ui/components/command-suggestions.js.map +1 -1
  142. package/dist/ui/components/confirmation-dialog.js +25 -36
  143. package/dist/ui/components/confirmation-dialog.js.map +1 -1
  144. package/dist/ui/components/index.d.ts +8 -0
  145. package/dist/ui/components/index.js +9 -0
  146. package/dist/ui/components/index.js.map +1 -1
  147. package/dist/ui/components/keyboard-hints.d.ts +35 -0
  148. package/dist/ui/components/keyboard-hints.js +134 -0
  149. package/dist/ui/components/keyboard-hints.js.map +1 -0
  150. package/dist/ui/components/loading-spinner.d.ts +2 -1
  151. package/dist/ui/components/loading-spinner.js +86 -34
  152. package/dist/ui/components/loading-spinner.js.map +1 -1
  153. package/dist/ui/components/phase-progress.d.ts +21 -0
  154. package/dist/ui/components/phase-progress.js +228 -0
  155. package/dist/ui/components/phase-progress.js.map +1 -0
  156. package/dist/ui/components/quick-actions.d.ts +12 -0
  157. package/dist/ui/components/quick-actions.js +122 -0
  158. package/dist/ui/components/quick-actions.js.map +1 -0
  159. package/dist/ui/components/reasoning-display.d.ts +0 -80
  160. package/dist/ui/components/reasoning-display.js +0 -83
  161. package/dist/ui/components/reasoning-display.js.map +1 -1
  162. package/dist/ui/components/status-bar.d.ts +25 -0
  163. package/dist/ui/components/status-bar.js +125 -0
  164. package/dist/ui/components/status-bar.js.map +1 -0
  165. package/dist/ui/components/subagent-monitor.d.ts +29 -0
  166. package/dist/ui/components/subagent-monitor.js +150 -0
  167. package/dist/ui/components/subagent-monitor.js.map +1 -0
  168. package/dist/ui/components/toast-notification.d.ts +123 -0
  169. package/dist/ui/components/toast-notification.js +143 -0
  170. package/dist/ui/components/toast-notification.js.map +1 -0
  171. package/dist/ui/components/welcome-panel.d.ts +10 -0
  172. package/dist/ui/components/welcome-panel.js +107 -0
  173. package/dist/ui/components/welcome-panel.js.map +1 -0
  174. package/dist/utils/background-task-manager.d.ts +95 -0
  175. package/dist/utils/background-task-manager.js +330 -0
  176. package/dist/utils/background-task-manager.js.map +1 -0
  177. package/dist/utils/confirmation-service.js +8 -3
  178. package/dist/utils/confirmation-service.js.map +1 -1
  179. package/dist/utils/history-manager.d.ts +1 -0
  180. package/dist/utils/history-manager.js +40 -5
  181. package/dist/utils/history-manager.js.map +1 -1
  182. package/dist/utils/json-utils.d.ts +7 -0
  183. package/dist/utils/json-utils.js +70 -2
  184. package/dist/utils/json-utils.js.map +1 -1
  185. package/dist/utils/message-optimizer.d.ts +1 -0
  186. package/dist/utils/message-optimizer.js +7 -1
  187. package/dist/utils/message-optimizer.js.map +1 -1
  188. package/dist/utils/project-analyzer.js +5 -2
  189. package/dist/utils/project-analyzer.js.map +1 -1
  190. package/dist/utils/settings-manager.js +12 -10
  191. package/dist/utils/settings-manager.js.map +1 -1
  192. package/dist/utils/text-utils.js +3 -3
  193. package/dist/utils/text-utils.js.map +1 -1
  194. package/dist/utils/token-counter.d.ts +5 -0
  195. package/dist/utils/token-counter.js +18 -3
  196. package/dist/utils/token-counter.js.map +1 -1
  197. package/package.json +3 -1
@@ -0,0 +1,388 @@
1
+ /**
2
+ * Subagent Orchestrator
3
+ *
4
+ * Manages the lifecycle of subagents and coordinates parallel task execution.
5
+ * Handles spawning, delegation, dependency resolution, and result aggregation.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ import { Subagent } from './subagent.js';
9
+ import { SubagentRole, SubagentState } from './subagent-types.js';
10
+ import { DependencyResolver } from './dependency-resolver.js';
11
+ // Import specialized agents
12
+ import { TestingAgent } from './specialized/testing-agent.js';
13
+ import { DocumentationAgent } from './specialized/documentation-agent.js';
14
+ import { RefactoringAgent } from './specialized/refactoring-agent.js';
15
+ import { AnalysisAgent } from './specialized/analysis-agent.js';
16
+ import { DebugAgent } from './specialized/debug-agent.js';
17
+ import { PerformanceAgent } from './specialized/performance-agent.js';
18
+ /**
19
+ * SubagentOrchestrator manages multiple subagents
20
+ */
21
+ export class SubagentOrchestrator extends EventEmitter {
22
+ subagents;
23
+ taskQueue;
24
+ results;
25
+ dependencyResolver;
26
+ activeCount;
27
+ config;
28
+ // Track event listeners for cleanup to prevent memory leaks
29
+ subagentListeners;
30
+ constructor(config) {
31
+ super();
32
+ this.config = {
33
+ maxConcurrentAgents: 5,
34
+ defaultTimeout: 300000,
35
+ autoCheckpoint: false,
36
+ verbose: false,
37
+ ...config,
38
+ };
39
+ this.subagents = new Map();
40
+ this.taskQueue = [];
41
+ this.results = new Map();
42
+ this.dependencyResolver = new DependencyResolver();
43
+ this.activeCount = 0;
44
+ this.subagentListeners = new Map();
45
+ }
46
+ /**
47
+ * Spawn a new subagent with the specified role
48
+ */
49
+ async spawn(role, config) {
50
+ // Check max concurrent agents limit
51
+ if (this.subagents.size >= this.config.maxConcurrentAgents) {
52
+ throw new Error(`Maximum concurrent agents limit (${this.config.maxConcurrentAgents}) reached`);
53
+ }
54
+ let subagent;
55
+ // Create specialized subagent based on role
56
+ switch (role) {
57
+ case SubagentRole.TESTING:
58
+ subagent = new TestingAgent(config);
59
+ break;
60
+ case SubagentRole.DOCUMENTATION:
61
+ subagent = new DocumentationAgent(config);
62
+ break;
63
+ case SubagentRole.REFACTORING:
64
+ subagent = new RefactoringAgent(config);
65
+ break;
66
+ case SubagentRole.ANALYSIS:
67
+ subagent = new AnalysisAgent(config);
68
+ break;
69
+ case SubagentRole.DEBUG:
70
+ subagent = new DebugAgent(config);
71
+ break;
72
+ case SubagentRole.PERFORMANCE:
73
+ subagent = new PerformanceAgent(config);
74
+ break;
75
+ case SubagentRole.GENERAL:
76
+ default:
77
+ subagent = new Subagent(SubagentRole.GENERAL, config);
78
+ break;
79
+ }
80
+ // Register subagent using its own ID
81
+ this.subagents.set(subagent.id, subagent);
82
+ // Forward subagent events
83
+ this.forwardSubagentEvents(subagent.id, subagent);
84
+ this.emit('spawn', { id: subagent.id, role });
85
+ return subagent;
86
+ }
87
+ /**
88
+ * Alias for spawn() for backward compatibility
89
+ */
90
+ async spawnSubagent(role, config) {
91
+ return this.spawn(role, config);
92
+ }
93
+ /**
94
+ * Forward events from subagent to orchestrator
95
+ * Stores listeners for proper cleanup to prevent memory leaks
96
+ */
97
+ forwardSubagentEvents(id, subagent) {
98
+ // Create named handlers so we can remove them later
99
+ const handlers = new Map();
100
+ const taskStartedHandler = (data) => {
101
+ this.activeCount++;
102
+ this.emit('subagent-start', { subagentId: id, ...data });
103
+ };
104
+ handlers.set('task-started', taskStartedHandler);
105
+ subagent.on('task-started', taskStartedHandler);
106
+ const taskCompletedHandler = (data) => {
107
+ this.activeCount--;
108
+ this.results.set(data.taskId, data.result);
109
+ this.emit('subagent-complete', { subagentId: id, ...data });
110
+ };
111
+ handlers.set('task-completed', taskCompletedHandler);
112
+ subagent.on('task-completed', taskCompletedHandler);
113
+ const taskFailedHandler = (data) => {
114
+ this.activeCount--;
115
+ this.emit('subagent-error', { subagentId: id, ...data });
116
+ };
117
+ handlers.set('task-failed', taskFailedHandler);
118
+ subagent.on('task-failed', taskFailedHandler);
119
+ const progressHandler = (data) => {
120
+ this.emit('subagent-progress', { subagentId: id, ...data });
121
+ };
122
+ handlers.set('progress', progressHandler);
123
+ subagent.on('progress', progressHandler);
124
+ const toolExecutedHandler = (data) => {
125
+ this.emit('subagent-tool', { subagentId: id, ...data });
126
+ };
127
+ handlers.set('tool-executed', toolExecutedHandler);
128
+ subagent.on('tool-executed', toolExecutedHandler);
129
+ // Store handlers for cleanup
130
+ this.subagentListeners.set(id, handlers);
131
+ }
132
+ /**
133
+ * Delegate a task to a subagent with the specified role
134
+ */
135
+ async delegateTask(task, role) {
136
+ // Determine role from task if not specified
137
+ const taskRole = role || this.inferRoleFromTask(task);
138
+ // Spawn subagent
139
+ const subagent = await this.spawnSubagent(taskRole);
140
+ try {
141
+ // Execute task
142
+ const result = await subagent.executeTask(task);
143
+ // Store result
144
+ this.results.set(task.id, result);
145
+ return result;
146
+ }
147
+ finally {
148
+ // Clean up subagent after task completion
149
+ await this.terminateSubagent(subagent.id);
150
+ }
151
+ }
152
+ /**
153
+ * Execute multiple tasks in parallel
154
+ */
155
+ async executeParallel(tasks) {
156
+ // Validate dependencies
157
+ if (!this.dependencyResolver.validateDependencies(tasks)) {
158
+ throw new Error('Circular dependencies detected in tasks');
159
+ }
160
+ // Resolve dependencies and get execution batches
161
+ const batches = this.dependencyResolver.resolveDependencies(tasks);
162
+ const allResults = [];
163
+ // Execute batches sequentially, but tasks within each batch in parallel
164
+ for (const batch of batches) {
165
+ const batchTasks = batch
166
+ .map(taskId => tasks.find(t => t.id === taskId))
167
+ .filter((task) => task !== undefined);
168
+ // Skip empty batches (shouldn't happen with valid dependency resolution)
169
+ if (batchTasks.length === 0)
170
+ continue;
171
+ // Execute batch in parallel
172
+ const batchResults = await this.executeBatch(batchTasks);
173
+ allResults.push(...batchResults);
174
+ }
175
+ return allResults;
176
+ }
177
+ /**
178
+ * Execute a batch of tasks in parallel
179
+ */
180
+ async executeBatch(tasks) {
181
+ const promises = tasks.map(async (task) => {
182
+ // Infer role from task
183
+ const role = this.inferRoleFromTask(task);
184
+ // Spawn and execute
185
+ const subagent = await this.spawnSubagent(role);
186
+ try {
187
+ const result = await subagent.executeTask(task);
188
+ this.results.set(task.id, result);
189
+ return result;
190
+ }
191
+ finally {
192
+ await this.terminateSubagent(subagent.id);
193
+ }
194
+ });
195
+ // Execute all in parallel with fail-safe
196
+ const results = await Promise.allSettled(promises);
197
+ return results.map((r, i) => {
198
+ if (r.status === 'fulfilled') {
199
+ return r.value;
200
+ }
201
+ else {
202
+ // Task failed - create a proper SubagentResult
203
+ const task = tasks[i];
204
+ const failedResult = {
205
+ id: `failed-${task.id}`,
206
+ taskId: task.id,
207
+ role: task.role,
208
+ success: false,
209
+ output: '',
210
+ error: r.reason?.message || 'Unknown error',
211
+ executionTime: 0,
212
+ status: {
213
+ id: `status-${task.id}`,
214
+ taskId: task.id,
215
+ role: task.role,
216
+ state: SubagentState.FAILED,
217
+ progress: 0,
218
+ startTime: new Date(),
219
+ endTime: new Date(),
220
+ error: r.reason?.message || 'Unknown error',
221
+ },
222
+ };
223
+ return failedResult;
224
+ }
225
+ });
226
+ }
227
+ /**
228
+ * Infer subagent role from task description
229
+ */
230
+ inferRoleFromTask(task) {
231
+ const desc = task.description.toLowerCase();
232
+ if (desc.includes('test') || desc.includes('testing')) {
233
+ return SubagentRole.TESTING;
234
+ }
235
+ if (desc.includes('document') || desc.includes('readme') || desc.includes('docs')) {
236
+ return SubagentRole.DOCUMENTATION;
237
+ }
238
+ if (desc.includes('refactor') || desc.includes('restructure')) {
239
+ return SubagentRole.REFACTORING;
240
+ }
241
+ if (desc.includes('analyze') || desc.includes('review') || desc.includes('audit')) {
242
+ return SubagentRole.ANALYSIS;
243
+ }
244
+ if (desc.includes('debug') || desc.includes('fix') || desc.includes('bug')) {
245
+ return SubagentRole.DEBUG;
246
+ }
247
+ if (desc.includes('performance') || desc.includes('optimize') || desc.includes('speed')) {
248
+ return SubagentRole.PERFORMANCE;
249
+ }
250
+ return SubagentRole.GENERAL;
251
+ }
252
+ /**
253
+ * Terminate a specific subagent by ID
254
+ * Properly removes event listeners to prevent memory leaks
255
+ */
256
+ async terminateSubagent(subagentId) {
257
+ const subagent = this.subagents.get(subagentId);
258
+ if (!subagent) {
259
+ return; // Gracefully handle non-existent subagent
260
+ }
261
+ // Remove event listeners to prevent memory leaks
262
+ const handlers = this.subagentListeners.get(subagentId);
263
+ if (handlers) {
264
+ for (const [event, handler] of handlers) {
265
+ subagent.off(event, handler);
266
+ }
267
+ this.subagentListeners.delete(subagentId);
268
+ }
269
+ await subagent.terminate();
270
+ this.subagents.delete(subagentId);
271
+ this.emit('terminate', { id: subagentId });
272
+ }
273
+ /**
274
+ * Terminate all subagents
275
+ * Properly removes all event listeners to prevent memory leaks
276
+ */
277
+ async terminateAll() {
278
+ // Remove all event listeners before terminating
279
+ for (const [subagentId, subagent] of this.subagents) {
280
+ const handlers = this.subagentListeners.get(subagentId);
281
+ if (handlers) {
282
+ for (const [event, handler] of handlers) {
283
+ subagent.off(event, handler);
284
+ }
285
+ }
286
+ }
287
+ this.subagentListeners.clear();
288
+ const terminatePromises = Array.from(this.subagents.values()).map((subagent) => subagent.terminate());
289
+ await Promise.all(terminatePromises);
290
+ this.subagents.clear();
291
+ this.activeCount = 0;
292
+ this.emit('all-terminated');
293
+ }
294
+ /**
295
+ * Get result for a specific task
296
+ */
297
+ getResult(taskId) {
298
+ return this.results.get(taskId);
299
+ }
300
+ /**
301
+ * Get all results
302
+ */
303
+ getAllResults() {
304
+ return new Map(this.results);
305
+ }
306
+ /**
307
+ * Get orchestrator status
308
+ */
309
+ getStatus() {
310
+ return {
311
+ totalSubagents: this.subagents.size,
312
+ activeSubagents: this.activeCount,
313
+ completedTasks: this.results.size,
314
+ queuedTasks: this.taskQueue.length,
315
+ };
316
+ }
317
+ /**
318
+ * Get list of active subagents
319
+ */
320
+ getActiveSubagents() {
321
+ const active = [];
322
+ for (const [id, subagent] of this.subagents) {
323
+ const status = subagent.getStatus();
324
+ // Check if state is RUNNING (active)
325
+ if (status.state === SubagentState.RUNNING) {
326
+ active.push({
327
+ id,
328
+ role: status.role,
329
+ status: status,
330
+ });
331
+ }
332
+ }
333
+ return active;
334
+ }
335
+ /**
336
+ * Clear all results
337
+ */
338
+ clearResults() {
339
+ this.results.clear();
340
+ }
341
+ /**
342
+ * Get all active subagents (alias for tests)
343
+ */
344
+ getActive() {
345
+ return Array.from(this.subagents.values());
346
+ }
347
+ /**
348
+ * Monitor a specific subagent's status
349
+ */
350
+ monitor(subagentId) {
351
+ const subagent = this.subagents.get(subagentId);
352
+ if (!subagent) {
353
+ return null;
354
+ }
355
+ return subagent.getStatus();
356
+ }
357
+ /**
358
+ * Get orchestrator statistics
359
+ */
360
+ getStats() {
361
+ const results = Array.from(this.results.values());
362
+ return {
363
+ activeAgents: this.subagents.size,
364
+ totalResults: results.length,
365
+ successfulTasks: results.filter(r => r.success).length,
366
+ failedTasks: results.filter(r => !r.success).length,
367
+ };
368
+ }
369
+ /**
370
+ * Spawn multiple subagents in parallel
371
+ */
372
+ async spawnParallel(configs) {
373
+ return Promise.all(configs.map(({ role, config }) => this.spawn(role, config)));
374
+ }
375
+ /**
376
+ * Send a message to a subagent
377
+ */
378
+ async sendMessage(subagentId, message) {
379
+ const subagent = this.subagents.get(subagentId);
380
+ if (!subagent) {
381
+ throw new Error(`Subagent ${subagentId} not found`);
382
+ }
383
+ // Subagent will handle the message via receiveMessage method
384
+ // For now, just emit an event
385
+ this.emit('message-sent', { subagentId, message });
386
+ }
387
+ }
388
+ //# sourceMappingURL=subagent-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-orchestrator.js","sourceRoot":"","sources":["../../src/agent/subagent-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Subagent System Types
3
+ *
4
+ * Type definitions for the autonomous subagent system that enables
5
+ * parallel task execution and specialized agent capabilities.
6
+ */
7
+ import type { LLMToolCall } from '../llm/client.js';
8
+ /**
9
+ * Types of specialized agents available
10
+ */
11
+ export declare enum SubagentRole {
12
+ /** General-purpose agent for any task */
13
+ GENERAL = "general",
14
+ /** Specialized in writing and running tests */
15
+ TESTING = "testing",
16
+ /** Specialized in generating documentation */
17
+ DOCUMENTATION = "documentation",
18
+ /** Specialized in code refactoring */
19
+ REFACTORING = "refactoring",
20
+ /** Specialized in code analysis and bug detection */
21
+ ANALYSIS = "analysis",
22
+ /** Specialized in debugging and error resolution */
23
+ DEBUG = "debug",
24
+ /** Specialized in performance optimization */
25
+ PERFORMANCE = "performance"
26
+ }
27
+ /**
28
+ * Chat entry (from llm-agent.ts to avoid circular dependency)
29
+ */
30
+ export interface ChatEntry {
31
+ type: 'user' | 'assistant' | 'tool_result' | 'tool_call';
32
+ content: string;
33
+ timestamp: Date;
34
+ toolCalls?: LLMToolCall[];
35
+ toolCall?: LLMToolCall;
36
+ toolResult?: {
37
+ success: boolean;
38
+ output?: string;
39
+ error?: string;
40
+ };
41
+ isStreaming?: boolean;
42
+ reasoningContent?: string;
43
+ isReasoningStreaming?: boolean;
44
+ }
45
+ /**
46
+ * Configuration for creating a subagent
47
+ */
48
+ export interface SubagentConfig {
49
+ /** Role/specialization of the subagent */
50
+ role: SubagentRole;
51
+ /** Tools this subagent is allowed to use */
52
+ allowedTools: string[];
53
+ /** Maximum tool execution rounds */
54
+ maxToolRounds: number;
55
+ /** Number of conversation messages to include as context */
56
+ contextDepth: number;
57
+ /** Custom system prompt (overrides role-based prompt) */
58
+ customSystemPrompt?: string;
59
+ /** Execution timeout in milliseconds */
60
+ timeout?: number;
61
+ /** Priority level (higher = executed first) */
62
+ priority?: number;
63
+ }
64
+ /**
65
+ * Task to be executed by a subagent
66
+ */
67
+ export interface SubagentTask {
68
+ /** Unique task identifier */
69
+ id: string;
70
+ /** Human-readable task description */
71
+ description: string;
72
+ /** Subagent role to use for this task */
73
+ role: SubagentRole;
74
+ /** Priority level (higher = executed first) */
75
+ priority: number;
76
+ /** Context to provide to the subagent */
77
+ context: SubagentContext;
78
+ /** IDs of tasks that must complete before this one */
79
+ dependencies?: string[];
80
+ /** Maximum tool rounds for this task */
81
+ maxToolRounds?: number;
82
+ /** Timeout in milliseconds */
83
+ timeout?: number;
84
+ }
85
+ /**
86
+ * Context provided to a subagent
87
+ */
88
+ export interface SubagentContext {
89
+ /** File paths to include in context */
90
+ files?: string[];
91
+ /** Code snippets to include */
92
+ codeSnippets?: CodeSnippet[];
93
+ /** Relevant conversation history */
94
+ conversationHistory?: ChatEntry[];
95
+ /** Additional metadata */
96
+ metadata?: Record<string, unknown>;
97
+ }
98
+ /**
99
+ * Code snippet for context
100
+ */
101
+ export interface CodeSnippet {
102
+ /** File path this snippet is from */
103
+ path: string;
104
+ /** The code content */
105
+ content: string;
106
+ /** Programming language */
107
+ language: string;
108
+ /** Starting line number */
109
+ startLine?: number;
110
+ /** Ending line number */
111
+ endLine?: number;
112
+ }
113
+ /**
114
+ * Execution state of a subagent
115
+ */
116
+ export declare enum SubagentState {
117
+ /** Waiting to be started */
118
+ PENDING = "pending",
119
+ /** Currently executing */
120
+ RUNNING = "running",
121
+ /** Successfully completed */
122
+ COMPLETED = "completed",
123
+ /** Failed with error */
124
+ FAILED = "failed",
125
+ /** Cancelled by user or system */
126
+ CANCELLED = "cancelled"
127
+ }
128
+ /**
129
+ * Status information for a subagent
130
+ */
131
+ export interface SubagentStatus {
132
+ /** Subagent unique identifier */
133
+ id: string;
134
+ /** Task being executed */
135
+ taskId: string;
136
+ /** Subagent role */
137
+ role: SubagentRole;
138
+ /** Current execution state */
139
+ state: SubagentState;
140
+ /** Progress percentage (0-100) */
141
+ progress: number;
142
+ /** When execution started */
143
+ startTime: Date;
144
+ /** When execution ended (if completed/failed) */
145
+ endTime?: Date;
146
+ /** Error message if failed */
147
+ error?: string;
148
+ /** Current action being performed */
149
+ currentAction?: string;
150
+ /** Tools used so far */
151
+ toolsUsed?: string[];
152
+ /** Number of tool rounds used */
153
+ toolRoundsUsed?: number;
154
+ }
155
+ /**
156
+ * Result of subagent execution
157
+ */
158
+ export interface SubagentResult {
159
+ /** Subagent identifier */
160
+ id: string;
161
+ /** Task identifier */
162
+ taskId: string;
163
+ /** Subagent role */
164
+ role: SubagentRole;
165
+ /** Whether execution was successful */
166
+ success: boolean;
167
+ /** Output/response from the subagent */
168
+ output: string;
169
+ /** Files modified */
170
+ filesModified?: string[];
171
+ /** Files created */
172
+ filesCreated?: string[];
173
+ /** Tool calls made during execution */
174
+ toolCalls?: LLMToolCall[];
175
+ /** Error message if failed */
176
+ error?: string;
177
+ /** Execution time in milliseconds */
178
+ executionTime: number;
179
+ /** Final status */
180
+ status: SubagentStatus;
181
+ /** Artifacts produced (file paths, URLs, etc) */
182
+ artifacts?: string[];
183
+ }
184
+ /**
185
+ * Message sent to/from a subagent
186
+ */
187
+ export interface SubagentMessage {
188
+ /** Message sender */
189
+ from: 'parent' | 'subagent';
190
+ /** Message recipient */
191
+ to: 'parent' | 'subagent';
192
+ /** Message type */
193
+ type: 'instruction' | 'progress' | 'result' | 'error' | 'cancellation';
194
+ /** Message content */
195
+ content: string;
196
+ /** Timestamp */
197
+ timestamp: Date;
198
+ /** Additional data */
199
+ data?: unknown;
200
+ }
201
+ /**
202
+ * Event emitted by subagent system
203
+ */
204
+ export interface SubagentEvent {
205
+ /** Event type */
206
+ type: 'spawn' | 'start' | 'progress' | 'complete' | 'fail' | 'cancel';
207
+ /** Subagent ID */
208
+ subagentId: string;
209
+ /** Task ID */
210
+ taskId: string;
211
+ /** Event data */
212
+ data?: unknown;
213
+ /** Timestamp */
214
+ timestamp: Date;
215
+ }
216
+ /**
217
+ * Configuration for subagent orchestrator
218
+ */
219
+ export interface OrchestratorConfig {
220
+ /** Maximum concurrent subagents */
221
+ maxConcurrentAgents: number;
222
+ /** Default timeout for subagents */
223
+ defaultTimeout: number;
224
+ /** Enable automatic checkpoint before spawning */
225
+ autoCheckpoint: boolean;
226
+ /** Enable detailed logging */
227
+ verbose: boolean;
228
+ }
229
+ /**
230
+ * Dependency graph node
231
+ */
232
+ export interface DependencyNode {
233
+ /** Task ID */
234
+ taskId: string;
235
+ /** Tasks this depends on */
236
+ dependencies: string[];
237
+ /** Tasks that depend on this */
238
+ dependents: string[];
239
+ /** Execution level (0 = no dependencies) */
240
+ level: number;
241
+ }
242
+ /**
243
+ * Dependency graph
244
+ */
245
+ export interface DependencyGraph {
246
+ /** All nodes in the graph */
247
+ nodes: Map<string, DependencyNode>;
248
+ /** Execution order (batches that can run in parallel) */
249
+ executionOrder: string[][];
250
+ /** Whether graph has cycles */
251
+ hasCycles: boolean;
252
+ /** Cycle details if any */
253
+ cycles?: string[][];
254
+ }
255
+ /**
256
+ * Default subagent configuration by role
257
+ */
258
+ export declare const DEFAULT_SUBAGENT_CONFIG: Record<SubagentRole, Partial<SubagentConfig>>;
259
+ /**
260
+ * System prompts for each subagent role
261
+ */
262
+ export declare const SUBAGENT_SYSTEM_PROMPTS: Record<SubagentRole, string>;