@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,289 @@
1
+ /**
2
+ * Planning Prompts
3
+ *
4
+ * System prompts for LLM-based task decomposition.
5
+ */
6
+ // ============================================================================
7
+ // Planning System Prompt
8
+ // ============================================================================
9
+ export const PLANNING_SYSTEM_PROMPT = `You are a task planning assistant for a CLI coding tool called AX-CLI.
10
+ Your job is to analyze user requests and create structured execution plans.
11
+
12
+ When given a complex coding task, you should:
13
+ 1. Understand the user's goal
14
+ 2. Break it down into 2-5 logical phases
15
+ 3. Identify dependencies between phases
16
+ 4. Assess risk levels for each phase
17
+ 5. Determine which phases can run in parallel
18
+
19
+ Guidelines for creating good plans:
20
+
21
+ PHASE DECOMPOSITION:
22
+ - Each phase should be independently executable
23
+ - Phases should have clear, measurable objectives
24
+ - Keep phases focused (1-3 objectives max per phase)
25
+ - Order phases logically (analysis → design → implementation → testing → documentation)
26
+
27
+ DEPENDENCIES:
28
+ - Mark dependencies between phases (e.g., testing depends on implementation)
29
+ - Identify phases that can run in parallel (e.g., testing and documentation)
30
+ - Avoid circular dependencies
31
+
32
+ RISK ASSESSMENT:
33
+ - low: Read-only operations, non-destructive changes
34
+ - medium: File modifications, adding new code
35
+ - high: Deleting files, modifying critical configs, database changes
36
+
37
+ TOOL IDENTIFICATION:
38
+ Common tools: view_file, str_replace_editor, bash, search, test
39
+
40
+ OUTPUT FORMAT:
41
+ You must respond with valid JSON only. No explanations outside the JSON.`;
42
+ // ============================================================================
43
+ // Planning User Prompt Template
44
+ // ============================================================================
45
+ export function buildPlanningPrompt(userRequest, context) {
46
+ let prompt = `Create an execution plan for this request:
47
+
48
+ <request>
49
+ ${userRequest}
50
+ </request>`;
51
+ if (context?.projectType) {
52
+ prompt += `\n\nProject type: ${context.projectType}`;
53
+ }
54
+ if (context?.files && context.files.length > 0) {
55
+ prompt += `\n\nRelevant files:\n${context.files.slice(0, 10).join("\n")}`;
56
+ }
57
+ if (context?.recentHistory && context.recentHistory.length > 0) {
58
+ prompt += `\n\nRecent context:\n${context.recentHistory.slice(-3).join("\n")}`;
59
+ }
60
+ prompt += `
61
+
62
+ Respond with a JSON object in this exact format:
63
+ {
64
+ "reasoning": "Brief explanation of why this decomposition makes sense",
65
+ "complexity": "simple|moderate|complex",
66
+ "phases": [
67
+ {
68
+ "name": "Phase Name",
69
+ "description": "What this phase accomplishes",
70
+ "objectives": ["Specific goal 1", "Specific goal 2"],
71
+ "toolsRequired": ["tool1", "tool2"],
72
+ "dependencies": [],
73
+ "canRunInParallel": false,
74
+ "riskLevel": "low|medium|high",
75
+ "requiresApproval": false
76
+ }
77
+ ]
78
+ }
79
+
80
+ Rules:
81
+ - Generate 1-5 phases depending on complexity
82
+ - Simple requests (single file change) = 1-2 phases
83
+ - Moderate requests (multi-file changes) = 2-3 phases
84
+ - Complex requests (new features, refactoring) = 3-5 phases
85
+ - First phase typically has no dependencies
86
+ - Testing and documentation can often run in parallel
87
+ - Set requiresApproval: true for high-risk phases`;
88
+ return prompt;
89
+ }
90
+ // ============================================================================
91
+ // Phase Execution Prompt
92
+ // ============================================================================
93
+ export function buildPhaseExecutionPrompt(phase, context) {
94
+ let prompt = `Execute this phase:
95
+
96
+ Phase: ${phase.name}
97
+ Description: ${phase.description}
98
+
99
+ Objectives:
100
+ ${phase.objectives.map((o, i) => `${i + 1}. ${o}`).join("\n")}
101
+
102
+ Expected tools: ${phase.toolsRequired.join(", ") || "any"}`;
103
+ if (context?.originalRequest) {
104
+ prompt += `\n\nOriginal user request: ${context.originalRequest}`;
105
+ }
106
+ if (context?.previousPhases && context.previousPhases.length > 0) {
107
+ prompt += `\n\nCompleted phases:\n${context.previousPhases.join("\n")}`;
108
+ }
109
+ prompt += `
110
+
111
+ Instructions:
112
+ - Focus only on the objectives listed above
113
+ - Complete all objectives before finishing
114
+ - Report any blockers or issues encountered
115
+ - Summarize what was accomplished when done`;
116
+ return prompt;
117
+ }
118
+ // ============================================================================
119
+ // Plan Summary Prompt
120
+ // ============================================================================
121
+ export function buildPlanSummaryPrompt(results) {
122
+ const phaseResults = results
123
+ .map((r, i) => `Phase ${i + 1}: ${r.phaseName}\nStatus: ${r.success ? "Success" : "Failed"}\n${r.output ? `Output: ${r.output}` : ""}`)
124
+ .join("\n\n");
125
+ return `Summarize the results of this multi-phase execution:
126
+
127
+ ${phaseResults}
128
+
129
+ Provide:
130
+ 1. A brief summary of what was accomplished
131
+ 2. Any warnings or issues to note
132
+ 3. Suggested next steps (if any)`;
133
+ }
134
+ // ============================================================================
135
+ // Complexity Detection
136
+ // ============================================================================
137
+ /**
138
+ * Keywords that indicate a complex request
139
+ */
140
+ export const COMPLEX_KEYWORDS = [
141
+ // Major code changes
142
+ "refactor",
143
+ "rewrite",
144
+ "migrate",
145
+ "restructure",
146
+ "reorganize",
147
+ "overhaul",
148
+ // Feature implementation
149
+ "implement feature",
150
+ "implement new",
151
+ "add feature",
152
+ "create feature",
153
+ "build feature",
154
+ "add authentication",
155
+ "add authorization",
156
+ "create api",
157
+ "build api",
158
+ // Architecture
159
+ "design",
160
+ "architect",
161
+ "system design",
162
+ // Testing
163
+ "test coverage",
164
+ "add tests",
165
+ "write tests",
166
+ "unit tests",
167
+ "integration tests",
168
+ // Documentation
169
+ "documentation",
170
+ "document all",
171
+ "add docs",
172
+ // DevOps
173
+ "deploy",
174
+ "ci/cd",
175
+ "pipeline",
176
+ "docker",
177
+ "kubernetes",
178
+ // Database
179
+ "database",
180
+ "schema",
181
+ "migration",
182
+ // Integration
183
+ "integration",
184
+ "integrate",
185
+ "connect",
186
+ // Multi-component work
187
+ "frontend and backend",
188
+ "client and server",
189
+ "multiple components",
190
+ "across modules",
191
+ // Performance
192
+ "optimize",
193
+ "performance",
194
+ "improve speed",
195
+ // Complex multi-step
196
+ "complete implementation",
197
+ "full implementation",
198
+ "end to end",
199
+ "e2e",
200
+ ];
201
+ /**
202
+ * Keywords that indicate a simple request
203
+ */
204
+ export const SIMPLE_KEYWORDS = [
205
+ "fix bug",
206
+ "typo",
207
+ "rename",
208
+ "update",
209
+ "change",
210
+ "modify",
211
+ "add import",
212
+ "remove",
213
+ "delete",
214
+ "comment",
215
+ ];
216
+ /**
217
+ * Detect if a request is likely complex
218
+ */
219
+ export function isComplexRequest(request) {
220
+ const lowerRequest = request.toLowerCase();
221
+ // Check for complex indicators
222
+ const hasComplexKeywords = COMPLEX_KEYWORDS.some((kw) => lowerRequest.includes(kw));
223
+ // Check for multiple file indicators
224
+ const hasMultipleFiles = lowerRequest.includes("all files") ||
225
+ lowerRequest.includes("entire") ||
226
+ lowerRequest.includes("whole project") ||
227
+ lowerRequest.includes("across") ||
228
+ lowerRequest.includes("every file") ||
229
+ lowerRequest.includes("codebase") ||
230
+ /\d+ files/.test(lowerRequest);
231
+ // Check for multi-step indicators
232
+ const hasMultipleSteps = lowerRequest.includes("first") ||
233
+ lowerRequest.includes("then") ||
234
+ lowerRequest.includes("after that") ||
235
+ lowerRequest.includes("finally") ||
236
+ lowerRequest.includes("and also") ||
237
+ lowerRequest.includes("step") ||
238
+ lowerRequest.includes("next") ||
239
+ // Multiple action verbs with "and"
240
+ /\b(create|add|implement|build|write)\b.+\band\b.+\b(create|add|implement|build|write|test|document)\b/i.test(lowerRequest);
241
+ // Check for request length - very long requests often need decomposition
242
+ const isLongRequest = request.length > 300;
243
+ // Check for multiple distinct tasks (comma-separated or numbered)
244
+ const hasMultipleTasks = (lowerRequest.match(/\d\.\s/g) || []).length >= 2 || // numbered list
245
+ (lowerRequest.match(/,\s*(add|create|implement|update|fix|remove)/g) || []).length >= 2;
246
+ // Simple requests override
247
+ const hasSimpleKeywords = SIMPLE_KEYWORDS.some((kw) => lowerRequest.includes(kw));
248
+ // Only simple if no other complexity indicators
249
+ if (hasSimpleKeywords && !hasMultipleFiles && !hasMultipleSteps && !hasMultipleTasks && !isLongRequest) {
250
+ return false;
251
+ }
252
+ return hasComplexKeywords || hasMultipleFiles || hasMultipleSteps || hasMultipleTasks || (isLongRequest && hasComplexKeywords);
253
+ }
254
+ /**
255
+ * Estimate minimum phases based on request analysis
256
+ */
257
+ export function estimateMinPhases(request) {
258
+ const lowerRequest = request.toLowerCase();
259
+ // Count distinct action verbs
260
+ const actionVerbs = [
261
+ "create",
262
+ "add",
263
+ "implement",
264
+ "test",
265
+ "document",
266
+ "refactor",
267
+ "fix",
268
+ "update",
269
+ "remove",
270
+ "migrate",
271
+ "deploy",
272
+ ];
273
+ let distinctActions = 0;
274
+ for (const verb of actionVerbs) {
275
+ if (lowerRequest.includes(verb)) {
276
+ distinctActions++;
277
+ }
278
+ }
279
+ // Count step indicators
280
+ const stepIndicators = ["first", "then", "next", "after", "finally"];
281
+ let stepCount = 0;
282
+ for (const indicator of stepIndicators) {
283
+ if (lowerRequest.includes(indicator)) {
284
+ stepCount++;
285
+ }
286
+ }
287
+ return Math.max(1, Math.min(5, distinctActions, stepCount + 1));
288
+ }
289
+ //# sourceMappingURL=planning-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-prompt.js","sourceRoot":"","sources":["../../../src/planner/prompts/planning-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Task Planner
3
+ *
4
+ * Main orchestrator for multi-phase task planning and execution.
5
+ * Coordinates plan generation, storage, and phase execution.
6
+ */
7
+ import { EventEmitter } from "events";
8
+ import { TaskPlan, TaskPhase, PhaseResult, PlanResult, ExecutionOptions, PlannerOptions } from "./types.js";
9
+ import { ExecutionBatch } from "./dependency-resolver.js";
10
+ export interface TaskPlannerEvents {
11
+ "plan:created": (plan: TaskPlan) => void;
12
+ "plan:approved": (plan: TaskPlan) => void;
13
+ "plan:started": (plan: TaskPlan) => void;
14
+ "plan:paused": (plan: TaskPlan) => void;
15
+ "plan:completed": (plan: TaskPlan, result: PlanResult) => void;
16
+ "plan:failed": (plan: TaskPlan, error: Error) => void;
17
+ "phase:started": (plan: TaskPlan, phase: TaskPhase) => void;
18
+ "phase:completed": (plan: TaskPlan, phase: TaskPhase, result: PhaseResult) => void;
19
+ "phase:failed": (plan: TaskPlan, phase: TaskPhase, error: Error) => void;
20
+ "phase:skipped": (plan: TaskPlan, phase: TaskPhase) => void;
21
+ "phase:approval-required": (plan: TaskPlan, phase: TaskPhase) => void;
22
+ "batch:started": (plan: TaskPlan, batch: ExecutionBatch) => void;
23
+ "batch:completed": (plan: TaskPlan, batch: ExecutionBatch) => void;
24
+ }
25
+ export declare class TaskPlanner extends EventEmitter {
26
+ private options;
27
+ private storage;
28
+ private generator;
29
+ private resolver;
30
+ private estimator;
31
+ private currentPlan;
32
+ private isPaused;
33
+ private isExecuting;
34
+ constructor(options?: Partial<PlannerOptions>);
35
+ /**
36
+ * Check if a request should trigger multi-phase planning
37
+ */
38
+ shouldCreatePlan(request: string): boolean;
39
+ /**
40
+ * Generate a plan from user request using LLM
41
+ *
42
+ * @param request - User's request
43
+ * @param llmCaller - Function to call LLM with prompts
44
+ * @param context - Additional context
45
+ */
46
+ generatePlan(request: string, llmCaller: (systemPrompt: string, userPrompt: string) => Promise<string>, context?: {
47
+ projectType?: string;
48
+ files?: string[];
49
+ recentHistory?: string[];
50
+ }): Promise<TaskPlan | null>;
51
+ /**
52
+ * Create a plan directly (without LLM, for testing or manual creation)
53
+ */
54
+ createPlan(plan: TaskPlan): Promise<TaskPlan>;
55
+ /**
56
+ * Execute a plan
57
+ *
58
+ * @param plan - Plan to execute
59
+ * @param phaseExecutor - Function to execute a single phase
60
+ * @param options - Execution options
61
+ */
62
+ executePlan(plan: TaskPlan, phaseExecutor: (phase: TaskPhase, planContext: {
63
+ planId: string;
64
+ originalRequest: string;
65
+ completedPhases: string[];
66
+ }) => Promise<PhaseResult>, options?: Partial<ExecutionOptions>): Promise<PlanResult>;
67
+ /**
68
+ * Execute a batch of phases
69
+ */
70
+ private executeBatch;
71
+ /**
72
+ * Execute a single phase
73
+ */
74
+ private executePhase;
75
+ /**
76
+ * Generate summary from results
77
+ */
78
+ private generateSummary;
79
+ /**
80
+ * Pause plan execution
81
+ */
82
+ pausePlan(): Promise<void>;
83
+ /**
84
+ * Resume a paused plan
85
+ */
86
+ resumePlan(planId: string, phaseExecutor: (phase: TaskPhase, context: {
87
+ planId: string;
88
+ originalRequest: string;
89
+ completedPhases: string[];
90
+ }) => Promise<PhaseResult>, options?: Partial<ExecutionOptions>): Promise<PlanResult | null>;
91
+ /**
92
+ * Skip a specific phase
93
+ */
94
+ skipPhase(planId: string, phaseId: string): Promise<boolean>;
95
+ /**
96
+ * Abandon a plan
97
+ */
98
+ abandonPlan(planId: string): Promise<boolean>;
99
+ /**
100
+ * Get current plan
101
+ */
102
+ getCurrentPlan(): TaskPlan | null;
103
+ /**
104
+ * Load a plan from storage
105
+ */
106
+ loadPlan(planId: string): Promise<TaskPlan | null>;
107
+ /**
108
+ * List all plans
109
+ */
110
+ listPlans(): Promise<import("./types.js").PlanSummary[]>;
111
+ /**
112
+ * List resumable plans
113
+ */
114
+ listResumablePlans(): Promise<import("./types.js").PlanSummary[]>;
115
+ /**
116
+ * Get execution batches for a plan
117
+ */
118
+ getExecutionBatches(plan: TaskPlan): ExecutionBatch[];
119
+ /**
120
+ * Check if currently executing
121
+ */
122
+ isCurrentlyExecuting(): boolean;
123
+ /**
124
+ * Check if paused
125
+ */
126
+ isCurrentlyPaused(): boolean;
127
+ }
128
+ /**
129
+ * Get the singleton TaskPlanner instance
130
+ */
131
+ export declare function getTaskPlanner(): TaskPlanner;
132
+ /**
133
+ * Reset the singleton (for testing)
134
+ */
135
+ export declare function resetTaskPlanner(): void;