@defai.digital/ax-cli 2.7.0 → 2.8.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 (99) 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 +2 -2
  8. package/dist/agent/context-manager.d.ts +2 -2
  9. package/dist/agent/context-manager.js +28 -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 +302 -0
  13. package/dist/agent/dependency-resolver.js.map +1 -0
  14. package/dist/agent/llm-agent.d.ts +63 -0
  15. package/dist/agent/llm-agent.js +250 -0
  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 +124 -0
  39. package/dist/agent/subagent-orchestrator.js +345 -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 +402 -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/rewind.d.ts +19 -0
  60. package/dist/commands/rewind.js +221 -0
  61. package/dist/commands/rewind.js.map +1 -0
  62. package/dist/hooks/use-input-handler.js +24 -0
  63. package/dist/hooks/use-input-handler.js.map +1 -1
  64. package/dist/llm/client.js +2 -1
  65. package/dist/llm/client.js.map +1 -1
  66. package/dist/mcp/client.d.ts +1 -0
  67. package/dist/mcp/client.js +27 -12
  68. package/dist/mcp/client.js.map +1 -1
  69. package/dist/mcp/transports.d.ts +0 -1
  70. package/dist/mcp/transports.js +10 -7
  71. package/dist/mcp/transports.js.map +1 -1
  72. package/dist/schemas/api-schemas.js +4 -0
  73. package/dist/schemas/api-schemas.js.map +1 -1
  74. package/dist/tools/bash.js +26 -1
  75. package/dist/tools/bash.js.map +1 -1
  76. package/dist/tools/search.js +21 -9
  77. package/dist/tools/search.js.map +1 -1
  78. package/dist/tools/text-editor.d.ts +16 -0
  79. package/dist/tools/text-editor.js +33 -0
  80. package/dist/tools/text-editor.js.map +1 -1
  81. package/dist/ui/components/chat-interface.js +3 -2
  82. package/dist/ui/components/chat-interface.js.map +1 -1
  83. package/dist/ui/components/subagent-monitor.d.ts +29 -0
  84. package/dist/ui/components/subagent-monitor.js +150 -0
  85. package/dist/ui/components/subagent-monitor.js.map +1 -0
  86. package/dist/utils/history-manager.d.ts +1 -0
  87. package/dist/utils/history-manager.js +40 -5
  88. package/dist/utils/history-manager.js.map +1 -1
  89. package/dist/utils/json-utils.d.ts +7 -0
  90. package/dist/utils/json-utils.js +70 -2
  91. package/dist/utils/json-utils.js.map +1 -1
  92. package/dist/utils/settings-manager.js +12 -10
  93. package/dist/utils/settings-manager.js.map +1 -1
  94. package/dist/utils/text-utils.js +3 -3
  95. package/dist/utils/text-utils.js.map +1 -1
  96. package/dist/utils/token-counter.d.ts +5 -0
  97. package/dist/utils/token-counter.js +18 -3
  98. package/dist/utils/token-counter.js.map +1 -1
  99. package/package.json +2 -1
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Dependency Resolver
3
+ *
4
+ * Resolves task dependencies and determines execution order for subagents.
5
+ * Implements topological sorting with cycle detection.
6
+ */
7
+ /**
8
+ * DependencyResolver class for managing task dependencies
9
+ */
10
+ export class DependencyResolver {
11
+ /**
12
+ * Resolve task dependencies and return execution batches
13
+ * Tasks in the same batch can be executed in parallel
14
+ *
15
+ * @param tasks Array of tasks to resolve
16
+ * @returns Array of batches, where each batch is an array of task IDs
17
+ */
18
+ resolveDependencies(tasks) {
19
+ // Build dependency graph
20
+ const graph = this.buildDependencyGraph(tasks);
21
+ // Check for cycles
22
+ if (this.hasCycle(graph)) {
23
+ throw new Error('Circular dependency detected in task graph');
24
+ }
25
+ // Perform topological sort
26
+ const sorted = this.topologicalSort(graph, tasks);
27
+ // Group into parallel batches
28
+ return this.groupIntoBatches(sorted, graph, tasks);
29
+ }
30
+ /**
31
+ * Validate that there are no circular dependencies
32
+ *
33
+ * @param tasks Array of tasks to validate
34
+ * @returns true if valid, false if circular dependencies exist
35
+ */
36
+ validateDependencies(tasks) {
37
+ try {
38
+ const graph = this.buildDependencyGraph(tasks);
39
+ return !this.hasCycle(graph);
40
+ }
41
+ catch (error) {
42
+ return false;
43
+ }
44
+ }
45
+ /**
46
+ * Get dependency graph structure
47
+ *
48
+ * @param tasks Array of tasks
49
+ * @returns DependencyGraph object with nodes and execution order
50
+ */
51
+ getDependencyGraph(tasks) {
52
+ const graph = this.buildDependencyGraph(tasks);
53
+ const hasCycles = this.hasCycle(graph);
54
+ if (hasCycles) {
55
+ const cycles = this.findCycles(graph, tasks);
56
+ return {
57
+ nodes: graph,
58
+ executionOrder: [],
59
+ hasCycles: true,
60
+ cycles,
61
+ };
62
+ }
63
+ const sorted = this.topologicalSort(graph, tasks);
64
+ const executionOrder = this.groupIntoBatches(sorted, graph, tasks);
65
+ return {
66
+ nodes: graph,
67
+ executionOrder,
68
+ hasCycles: false,
69
+ };
70
+ }
71
+ // ==================== Private Methods ====================
72
+ /**
73
+ * Build dependency graph from tasks
74
+ */
75
+ buildDependencyGraph(tasks) {
76
+ const graph = new Map();
77
+ // Initialize all nodes
78
+ for (const task of tasks) {
79
+ graph.set(task.id, {
80
+ taskId: task.id,
81
+ dependencies: task.dependencies || [],
82
+ dependents: [],
83
+ level: 0,
84
+ });
85
+ }
86
+ // Build dependent relationships
87
+ for (const task of tasks) {
88
+ if (task.dependencies) {
89
+ for (const depId of task.dependencies) {
90
+ const depNode = graph.get(depId);
91
+ if (depNode) {
92
+ depNode.dependents.push(task.id);
93
+ }
94
+ else {
95
+ throw new Error(`Task ${task.id} depends on non-existent task ${depId}`);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ return graph;
101
+ }
102
+ /**
103
+ * Perform topological sort using Kahn's algorithm
104
+ */
105
+ topologicalSort(graph, tasks) {
106
+ // Calculate in-degrees
107
+ const inDegree = new Map();
108
+ for (const [nodeId, node] of graph) {
109
+ inDegree.set(nodeId, node.dependencies.length);
110
+ }
111
+ // Find nodes with in-degree 0
112
+ const queue = [];
113
+ for (const [nodeId, degree] of inDegree) {
114
+ if (degree === 0) {
115
+ queue.push(nodeId);
116
+ }
117
+ }
118
+ // Process queue
119
+ const result = [];
120
+ while (queue.length > 0) {
121
+ // Sort by priority before processing
122
+ queue.sort((a, b) => {
123
+ const taskA = tasks.find(t => t.id === a);
124
+ const taskB = tasks.find(t => t.id === b);
125
+ return (taskB?.priority || 0) - (taskA?.priority || 0);
126
+ });
127
+ const nodeId = queue.shift();
128
+ result.push(nodeId);
129
+ const node = graph.get(nodeId);
130
+ for (const dependentId of node.dependents) {
131
+ const newDegree = inDegree.get(dependentId) - 1;
132
+ inDegree.set(dependentId, newDegree);
133
+ if (newDegree === 0) {
134
+ queue.push(dependentId);
135
+ }
136
+ }
137
+ }
138
+ return result;
139
+ }
140
+ /**
141
+ * Group sorted tasks into parallel execution batches
142
+ */
143
+ groupIntoBatches(sorted, graph, tasks) {
144
+ const batches = [];
145
+ // Assign levels to each node
146
+ const levels = new Map();
147
+ for (const nodeId of sorted) {
148
+ const node = graph.get(nodeId);
149
+ let maxDepLevel = -1;
150
+ for (const depId of node.dependencies) {
151
+ const depLevel = levels.get(depId) || 0;
152
+ maxDepLevel = Math.max(maxDepLevel, depLevel);
153
+ }
154
+ const level = maxDepLevel + 1;
155
+ levels.set(nodeId, level);
156
+ node.level = level;
157
+ }
158
+ // Group by level
159
+ const maxLevel = Math.max(...Array.from(levels.values()));
160
+ for (let level = 0; level <= maxLevel; level++) {
161
+ const batch = [];
162
+ for (const [nodeId, nodeLevel] of levels) {
163
+ if (nodeLevel === level) {
164
+ batch.push(nodeId);
165
+ }
166
+ }
167
+ if (batch.length > 0) {
168
+ // Sort by priority within batch
169
+ batch.sort((a, b) => {
170
+ const taskA = tasks.find(t => t.id === a);
171
+ const taskB = tasks.find(t => t.id === b);
172
+ return (taskB?.priority || 0) - (taskA?.priority || 0);
173
+ });
174
+ batches.push(batch);
175
+ }
176
+ }
177
+ return batches;
178
+ }
179
+ /**
180
+ * Check if graph has cycles using DFS
181
+ */
182
+ hasCycle(graph) {
183
+ const visited = new Set();
184
+ const recursionStack = new Set();
185
+ for (const nodeId of graph.keys()) {
186
+ if (this.hasCycleUtil(nodeId, graph, visited, recursionStack)) {
187
+ return true;
188
+ }
189
+ }
190
+ return false;
191
+ }
192
+ /**
193
+ * Utility function for cycle detection
194
+ */
195
+ hasCycleUtil(nodeId, graph, visited, recursionStack) {
196
+ if (recursionStack.has(nodeId)) {
197
+ return true; // Cycle detected
198
+ }
199
+ if (visited.has(nodeId)) {
200
+ return false; // Already processed
201
+ }
202
+ visited.add(nodeId);
203
+ recursionStack.add(nodeId);
204
+ const node = graph.get(nodeId);
205
+ for (const dependentId of node.dependents) {
206
+ if (this.hasCycleUtil(dependentId, graph, visited, recursionStack)) {
207
+ return true;
208
+ }
209
+ }
210
+ recursionStack.delete(nodeId);
211
+ return false;
212
+ }
213
+ /**
214
+ * Find all cycles in the graph
215
+ */
216
+ findCycles(graph, _tasks) {
217
+ const cycles = [];
218
+ const visited = new Set();
219
+ const recursionStack = [];
220
+ for (const nodeId of graph.keys()) {
221
+ if (!visited.has(nodeId)) {
222
+ this.findCyclesUtil(nodeId, graph, visited, recursionStack, cycles);
223
+ }
224
+ }
225
+ return cycles;
226
+ }
227
+ /**
228
+ * Utility function for finding cycles
229
+ */
230
+ findCyclesUtil(nodeId, graph, visited, recursionStack, cycles) {
231
+ visited.add(nodeId);
232
+ recursionStack.push(nodeId);
233
+ const node = graph.get(nodeId);
234
+ for (const dependentId of node.dependents) {
235
+ if (!visited.has(dependentId)) {
236
+ this.findCyclesUtil(dependentId, graph, visited, recursionStack, cycles);
237
+ }
238
+ else {
239
+ // Found a cycle
240
+ const cycleStart = recursionStack.indexOf(dependentId);
241
+ if (cycleStart !== -1) {
242
+ const cycle = recursionStack.slice(cycleStart);
243
+ cycle.push(dependentId); // Complete the cycle
244
+ cycles.push(cycle);
245
+ }
246
+ }
247
+ }
248
+ recursionStack.pop();
249
+ }
250
+ /**
251
+ * Get execution level for a task
252
+ * Level 0 = no dependencies, Level N = depends on tasks at level N-1
253
+ */
254
+ getTaskLevel(taskId, tasks) {
255
+ const graph = this.buildDependencyGraph(tasks);
256
+ const node = graph.get(taskId);
257
+ if (!node) {
258
+ throw new Error(`Task ${taskId} not found`);
259
+ }
260
+ return node.level;
261
+ }
262
+ /**
263
+ * Get all tasks that can be executed in parallel
264
+ */
265
+ getParallelTasks(tasks) {
266
+ return this.resolveDependencies(tasks);
267
+ }
268
+ /**
269
+ * Check if a task can be executed given completed tasks
270
+ */
271
+ canExecuteTask(taskId, completedTaskIds, tasks) {
272
+ const task = tasks.find(t => t.id === taskId);
273
+ if (!task) {
274
+ return false;
275
+ }
276
+ if (!task.dependencies || task.dependencies.length === 0) {
277
+ return true;
278
+ }
279
+ // All dependencies must be completed
280
+ return task.dependencies.every(depId => completedTaskIds.has(depId));
281
+ }
282
+ /**
283
+ * Get tasks that are ready to execute
284
+ */
285
+ getReadyTasks(tasks, completedTaskIds) {
286
+ return tasks.filter(task => {
287
+ // Skip if already completed
288
+ if (completedTaskIds.has(task.id)) {
289
+ return false;
290
+ }
291
+ // Check if dependencies are met
292
+ return this.canExecuteTask(task.id, completedTaskIds, tasks);
293
+ });
294
+ }
295
+ }
296
+ /**
297
+ * Create a new dependency resolver instance
298
+ */
299
+ export function createDependencyResolver() {
300
+ return new DependencyResolver();
301
+ }
302
+ //# sourceMappingURL=dependency-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/agent/dependency-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { LLMToolCall } from "../llm/client.js";
2
2
  import { ToolResult } from "../types/index.js";
3
3
  import { EventEmitter } from "events";
4
+ import { CheckpointManager } from "../checkpoint/index.js";
5
+ import { SubagentOrchestrator } from "./subagent-orchestrator.js";
4
6
  export interface ChatEntry {
5
7
  type: "user" | "assistant" | "tool_result" | "tool_call";
6
8
  content: string;
@@ -41,7 +43,10 @@ export declare class LLMAgent extends EventEmitter {
41
43
  private abortController;
42
44
  private maxToolRounds;
43
45
  private recentToolCalls;
46
+ private checkpointManager;
47
+ private subagentOrchestrator;
44
48
  constructor(apiKey: string, baseURL?: string, model?: string, maxToolRounds?: number);
49
+ private initializeCheckpointManager;
45
50
  private initializeMCP;
46
51
  private isGrokModel;
47
52
  /**
@@ -121,6 +126,64 @@ export declare class LLMAgent extends EventEmitter {
121
126
  * Returns a number between 0-100
122
127
  */
123
128
  getContextPercentage(): number;
129
+ /**
130
+ * Create a checkpoint of current state
131
+ */
132
+ createCheckpoint(description?: string): Promise<string>;
133
+ /**
134
+ * Rewind conversation to a checkpoint
135
+ */
136
+ rewindConversation(checkpointId: string): Promise<{
137
+ success: boolean;
138
+ error?: string;
139
+ }>;
140
+ /**
141
+ * Get checkpoint manager instance
142
+ */
143
+ getCheckpointManager(): CheckpointManager;
144
+ /**
145
+ * Get subagent orchestrator instance
146
+ */
147
+ getSubagentOrchestrator(): SubagentOrchestrator;
148
+ /**
149
+ * Spawn a specialized subagent for a specific task
150
+ * This is a user-facing method that simplifies subagent usage
151
+ *
152
+ * @param role - The role/specialization of the subagent
153
+ * @param description - Task description
154
+ * @param context - Optional additional context
155
+ * @returns The result of the subagent execution
156
+ */
157
+ spawnSubagent(role: string, description: string, context?: {
158
+ files?: string[];
159
+ additionalContext?: string;
160
+ }): Promise<{
161
+ success: boolean;
162
+ output: string;
163
+ filesModified?: string[];
164
+ filesCreated?: string[];
165
+ error?: string;
166
+ }>;
167
+ /**
168
+ * Execute multiple tasks in parallel using subagents
169
+ * This automatically handles dependency resolution and parallel execution
170
+ *
171
+ * @param tasks - Array of tasks with role and description
172
+ * @returns Array of results from all tasks
173
+ */
174
+ executeParallelTasks(tasks: Array<{
175
+ role: string;
176
+ description: string;
177
+ dependencies?: string[];
178
+ id?: string;
179
+ }>): Promise<Array<{
180
+ taskId: string;
181
+ success: boolean;
182
+ output: string;
183
+ filesModified?: string[];
184
+ filesCreated?: string[];
185
+ error?: string;
186
+ }>>;
124
187
  /**
125
188
  * Dispose of resources and remove event listeners
126
189
  * Call this when the agent is no longer needed