xibecode 1.0.3 → 1.0.6

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 (268) hide show
  1. package/dist/commands/chat.d.ts.map +1 -1
  2. package/dist/commands/chat.js +10 -7
  3. package/dist/commands/chat.js.map +1 -1
  4. package/dist/commands/diagnostics.js +1 -1
  5. package/dist/commands/diagnostics.js.map +1 -1
  6. package/dist/commands/mcp.js +1 -1
  7. package/dist/commands/mcp.js.map +1 -1
  8. package/dist/commands/resume.js +1 -1
  9. package/dist/commands/resume.js.map +1 -1
  10. package/dist/commands/run-pr.d.ts.map +1 -1
  11. package/dist/commands/run-pr.js +10 -9
  12. package/dist/commands/run-pr.js.map +1 -1
  13. package/dist/commands/run.d.ts.map +1 -1
  14. package/dist/commands/run.js +14 -13
  15. package/dist/commands/run.js.map +1 -1
  16. package/dist/commands/skills.d.ts.map +1 -1
  17. package/dist/commands/skills.js +3 -2
  18. package/dist/commands/skills.js.map +1 -1
  19. package/dist/components/AssistantMarkdown.js +1 -1
  20. package/dist/components/AssistantMarkdown.js.map +1 -1
  21. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  22. package/dist/ui/claude-style-chat.js +12 -10
  23. package/dist/ui/claude-style-chat.js.map +1 -1
  24. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  25. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  26. package/dist/utils/built-in-skills-dir.js +11 -0
  27. package/dist/utils/built-in-skills-dir.js.map +1 -0
  28. package/dist/utils/config.d.ts +2 -119
  29. package/dist/utils/config.d.ts.map +1 -1
  30. package/dist/utils/config.js +3 -88
  31. package/dist/utils/config.js.map +1 -1
  32. package/package.json +11 -17
  33. package/dist/commands/punycode.d.ts +0 -5
  34. package/dist/commands/punycode.d.ts.map +0 -1
  35. package/dist/commands/punycode.js +0 -48
  36. package/dist/commands/punycode.js.map +0 -1
  37. package/dist/commands/tui.d.ts +0 -9
  38. package/dist/commands/tui.d.ts.map +0 -1
  39. package/dist/commands/tui.js +0 -83
  40. package/dist/commands/tui.js.map +0 -1
  41. package/dist/core/agent-tool-policies.d.ts +0 -5
  42. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  43. package/dist/core/agent-tool-policies.js +0 -18
  44. package/dist/core/agent-tool-policies.js.map +0 -1
  45. package/dist/core/agent.d.ts +0 -181
  46. package/dist/core/agent.d.ts.map +0 -1
  47. package/dist/core/agent.js +0 -1777
  48. package/dist/core/agent.js.map +0 -1
  49. package/dist/core/background-agent.d.ts +0 -23
  50. package/dist/core/background-agent.d.ts.map +0 -1
  51. package/dist/core/background-agent.js +0 -175
  52. package/dist/core/background-agent.js.map +0 -1
  53. package/dist/core/code-graph.d.ts +0 -18
  54. package/dist/core/code-graph.d.ts.map +0 -1
  55. package/dist/core/code-graph.js +0 -105
  56. package/dist/core/code-graph.js.map +0 -1
  57. package/dist/core/conflict-solver.d.ts +0 -26
  58. package/dist/core/conflict-solver.d.ts.map +0 -1
  59. package/dist/core/conflict-solver.js +0 -108
  60. package/dist/core/conflict-solver.js.map +0 -1
  61. package/dist/core/context-compactor.d.ts +0 -10
  62. package/dist/core/context-compactor.d.ts.map +0 -1
  63. package/dist/core/context-compactor.js +0 -158
  64. package/dist/core/context-compactor.js.map +0 -1
  65. package/dist/core/context-pruner.d.ts +0 -19
  66. package/dist/core/context-pruner.d.ts.map +0 -1
  67. package/dist/core/context-pruner.js +0 -103
  68. package/dist/core/context-pruner.js.map +0 -1
  69. package/dist/core/context.d.ts +0 -82
  70. package/dist/core/context.d.ts.map +0 -1
  71. package/dist/core/context.js +0 -273
  72. package/dist/core/context.js.map +0 -1
  73. package/dist/core/conversation-recovery.d.ts +0 -9
  74. package/dist/core/conversation-recovery.d.ts.map +0 -1
  75. package/dist/core/conversation-recovery.js +0 -15
  76. package/dist/core/conversation-recovery.js.map +0 -1
  77. package/dist/core/debug-workflow.d.ts +0 -9
  78. package/dist/core/debug-workflow.d.ts.map +0 -1
  79. package/dist/core/debug-workflow.js +0 -19
  80. package/dist/core/debug-workflow.js.map +0 -1
  81. package/dist/core/docs-scraper.d.ts +0 -40
  82. package/dist/core/docs-scraper.d.ts.map +0 -1
  83. package/dist/core/docs-scraper.js +0 -386
  84. package/dist/core/docs-scraper.js.map +0 -1
  85. package/dist/core/editor.d.ts +0 -87
  86. package/dist/core/editor.d.ts.map +0 -1
  87. package/dist/core/editor.js +0 -377
  88. package/dist/core/editor.js.map +0 -1
  89. package/dist/core/export.d.ts +0 -11
  90. package/dist/core/export.d.ts.map +0 -1
  91. package/dist/core/export.js +0 -54
  92. package/dist/core/export.js.map +0 -1
  93. package/dist/core/history-manager.d.ts +0 -75
  94. package/dist/core/history-manager.d.ts.map +0 -1
  95. package/dist/core/history-manager.js +0 -146
  96. package/dist/core/history-manager.js.map +0 -1
  97. package/dist/core/marketplace-client.d.ts +0 -52
  98. package/dist/core/marketplace-client.d.ts.map +0 -1
  99. package/dist/core/marketplace-client.js +0 -71
  100. package/dist/core/marketplace-client.js.map +0 -1
  101. package/dist/core/mcp/mcp-config.d.ts +0 -10
  102. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  103. package/dist/core/mcp/mcp-config.js +0 -70
  104. package/dist/core/mcp/mcp-config.js.map +0 -1
  105. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  106. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  107. package/dist/core/mcp/mcp-policy.js +0 -56
  108. package/dist/core/mcp/mcp-policy.js.map +0 -1
  109. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  110. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  111. package/dist/core/mcp/oauth-flow.js +0 -230
  112. package/dist/core/mcp/oauth-flow.js.map +0 -1
  113. package/dist/core/mcp/oauth-store.d.ts +0 -13
  114. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  115. package/dist/core/mcp/oauth-store.js +0 -68
  116. package/dist/core/mcp/oauth-store.js.map +0 -1
  117. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  118. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  119. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  120. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  121. package/dist/core/mcp-client.d.ts +0 -99
  122. package/dist/core/mcp-client.d.ts.map +0 -1
  123. package/dist/core/mcp-client.js +0 -317
  124. package/dist/core/mcp-client.js.map +0 -1
  125. package/dist/core/memory-promotions.d.ts +0 -15
  126. package/dist/core/memory-promotions.d.ts.map +0 -1
  127. package/dist/core/memory-promotions.js +0 -38
  128. package/dist/core/memory-promotions.js.map +0 -1
  129. package/dist/core/memory.d.ts +0 -32
  130. package/dist/core/memory.d.ts.map +0 -1
  131. package/dist/core/memory.js +0 -121
  132. package/dist/core/memory.js.map +0 -1
  133. package/dist/core/modes.d.ts +0 -432
  134. package/dist/core/modes.d.ts.map +0 -1
  135. package/dist/core/modes.js +0 -1094
  136. package/dist/core/modes.js.map +0 -1
  137. package/dist/core/pattern-miner.d.ts +0 -43
  138. package/dist/core/pattern-miner.d.ts.map +0 -1
  139. package/dist/core/pattern-miner.js +0 -123
  140. package/dist/core/pattern-miner.js.map +0 -1
  141. package/dist/core/permission-store.d.ts +0 -15
  142. package/dist/core/permission-store.d.ts.map +0 -1
  143. package/dist/core/permission-store.js +0 -30
  144. package/dist/core/permission-store.js.map +0 -1
  145. package/dist/core/permissions.d.ts +0 -33
  146. package/dist/core/permissions.d.ts.map +0 -1
  147. package/dist/core/permissions.js +0 -141
  148. package/dist/core/permissions.js.map +0 -1
  149. package/dist/core/plan-artifacts.d.ts +0 -10
  150. package/dist/core/plan-artifacts.d.ts.map +0 -1
  151. package/dist/core/plan-artifacts.js +0 -60
  152. package/dist/core/plan-artifacts.js.map +0 -1
  153. package/dist/core/plan-session.d.ts +0 -25
  154. package/dist/core/plan-session.d.ts.map +0 -1
  155. package/dist/core/plan-session.js +0 -99
  156. package/dist/core/plan-session.js.map +0 -1
  157. package/dist/core/planMode.d.ts +0 -51
  158. package/dist/core/planMode.d.ts.map +0 -1
  159. package/dist/core/planMode.js +0 -245
  160. package/dist/core/planMode.js.map +0 -1
  161. package/dist/core/plugins.d.ts +0 -96
  162. package/dist/core/plugins.d.ts.map +0 -1
  163. package/dist/core/plugins.js +0 -204
  164. package/dist/core/plugins.js.map +0 -1
  165. package/dist/core/session-bridge.d.ts +0 -128
  166. package/dist/core/session-bridge.d.ts.map +0 -1
  167. package/dist/core/session-bridge.js +0 -328
  168. package/dist/core/session-bridge.js.map +0 -1
  169. package/dist/core/session-manager.d.ts +0 -80
  170. package/dist/core/session-manager.d.ts.map +0 -1
  171. package/dist/core/session-manager.js +0 -166
  172. package/dist/core/session-manager.js.map +0 -1
  173. package/dist/core/session-memory.d.ts +0 -45
  174. package/dist/core/session-memory.d.ts.map +0 -1
  175. package/dist/core/session-memory.js +0 -103
  176. package/dist/core/session-memory.js.map +0 -1
  177. package/dist/core/skill-selection.d.ts +0 -36
  178. package/dist/core/skill-selection.d.ts.map +0 -1
  179. package/dist/core/skill-selection.js +0 -172
  180. package/dist/core/skill-selection.js.map +0 -1
  181. package/dist/core/skills-sh-client.d.ts +0 -19
  182. package/dist/core/skills-sh-client.d.ts.map +0 -1
  183. package/dist/core/skills-sh-client.js +0 -75
  184. package/dist/core/skills-sh-client.js.map +0 -1
  185. package/dist/core/skills.d.ts +0 -97
  186. package/dist/core/skills.d.ts.map +0 -1
  187. package/dist/core/skills.js +0 -339
  188. package/dist/core/skills.js.map +0 -1
  189. package/dist/core/swarm.d.ts +0 -34
  190. package/dist/core/swarm.d.ts.map +0 -1
  191. package/dist/core/swarm.js +0 -111
  192. package/dist/core/swarm.js.map +0 -1
  193. package/dist/core/task-status.d.ts +0 -13
  194. package/dist/core/task-status.d.ts.map +0 -1
  195. package/dist/core/task-status.js +0 -17
  196. package/dist/core/task-status.js.map +0 -1
  197. package/dist/core/tool-orchestrator.d.ts +0 -30
  198. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  199. package/dist/core/tool-orchestrator.js +0 -89
  200. package/dist/core/tool-orchestrator.js.map +0 -1
  201. package/dist/core/tools.d.ts +0 -462
  202. package/dist/core/tools.d.ts.map +0 -1
  203. package/dist/core/tools.js +0 -2916
  204. package/dist/core/tools.js.map +0 -1
  205. package/dist/core/transcript-cleanup.d.ts +0 -8
  206. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  207. package/dist/core/transcript-cleanup.js +0 -52
  208. package/dist/core/transcript-cleanup.js.map +0 -1
  209. package/dist/core/visual-feedback.d.ts +0 -20
  210. package/dist/core/visual-feedback.d.ts.map +0 -1
  211. package/dist/core/visual-feedback.js +0 -117
  212. package/dist/core/visual-feedback.js.map +0 -1
  213. package/dist/tools/browser.d.ts +0 -120
  214. package/dist/tools/browser.d.ts.map +0 -1
  215. package/dist/tools/browser.js +0 -439
  216. package/dist/tools/browser.js.map +0 -1
  217. package/dist/tools/test-generator.d.ts +0 -157
  218. package/dist/tools/test-generator.d.ts.map +0 -1
  219. package/dist/tools/test-generator.js +0 -893
  220. package/dist/tools/test-generator.js.map +0 -1
  221. package/dist/tui/InkApp.d.ts +0 -21
  222. package/dist/tui/InkApp.d.ts.map +0 -1
  223. package/dist/tui/InkApp.js +0 -146
  224. package/dist/tui/InkApp.js.map +0 -1
  225. package/dist/tui/MarkdownMessage.d.ts +0 -16
  226. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  227. package/dist/tui/MarkdownMessage.js +0 -63
  228. package/dist/tui/MarkdownMessage.js.map +0 -1
  229. package/dist/tui/blessed-chat.d.ts +0 -9
  230. package/dist/tui/blessed-chat.d.ts.map +0 -1
  231. package/dist/tui/blessed-chat.js +0 -887
  232. package/dist/tui/blessed-chat.js.map +0 -1
  233. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  234. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  235. package/dist/tui/markdown-to-blessed.js +0 -26
  236. package/dist/tui/markdown-to-blessed.js.map +0 -1
  237. package/dist/ui/ink/App.d.ts +0 -25
  238. package/dist/ui/ink/App.d.ts.map +0 -1
  239. package/dist/ui/ink/App.js +0 -372
  240. package/dist/ui/ink/App.js.map +0 -1
  241. package/dist/utils/at-references.d.ts +0 -14
  242. package/dist/utils/at-references.d.ts.map +0 -1
  243. package/dist/utils/at-references.js +0 -47
  244. package/dist/utils/at-references.js.map +0 -1
  245. package/dist/utils/auto-memory.d.ts +0 -24
  246. package/dist/utils/auto-memory.d.ts.map +0 -1
  247. package/dist/utils/auto-memory.js +0 -153
  248. package/dist/utils/auto-memory.js.map +0 -1
  249. package/dist/utils/git.d.ts +0 -89
  250. package/dist/utils/git.d.ts.map +0 -1
  251. package/dist/utils/git.js +0 -444
  252. package/dist/utils/git.js.map +0 -1
  253. package/dist/utils/mcp-servers-file.d.ts +0 -46
  254. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  255. package/dist/utils/mcp-servers-file.js +0 -212
  256. package/dist/utils/mcp-servers-file.js.map +0 -1
  257. package/dist/utils/safety.d.ts +0 -60
  258. package/dist/utils/safety.d.ts.map +0 -1
  259. package/dist/utils/safety.js +0 -254
  260. package/dist/utils/safety.js.map +0 -1
  261. package/dist/utils/smithery.d.ts +0 -25
  262. package/dist/utils/smithery.d.ts.map +0 -1
  263. package/dist/utils/smithery.js +0 -50
  264. package/dist/utils/smithery.js.map +0 -1
  265. package/dist/utils/testRunner.d.ts +0 -44
  266. package/dist/utils/testRunner.d.ts.map +0 -1
  267. package/dist/utils/testRunner.js +0 -270
  268. package/dist/utils/testRunner.js.map +0 -1
@@ -1,99 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- import { randomUUID } from 'crypto';
4
- export class PlanSessionManager {
5
- workingDir;
6
- sessionDir;
7
- constructor(workingDir = process.cwd()) {
8
- this.workingDir = workingDir;
9
- this.sessionDir = path.join(workingDir, '.xibecode', 'plan-sessions');
10
- }
11
- async create(request, metadata) {
12
- const now = new Date().toISOString();
13
- const session = {
14
- id: `plan-${randomUUID()}`,
15
- request,
16
- status: 'drafting',
17
- createdAt: now,
18
- updatedAt: now,
19
- answers: {},
20
- metadata,
21
- };
22
- await this.save(session);
23
- return session;
24
- }
25
- async load(sessionId) {
26
- const filePath = this.getSessionPath(sessionId);
27
- try {
28
- const raw = await fs.readFile(filePath, 'utf8');
29
- return JSON.parse(raw);
30
- }
31
- catch {
32
- return null;
33
- }
34
- }
35
- async updateStatus(sessionId, status) {
36
- const session = await this.load(sessionId);
37
- if (!session)
38
- return null;
39
- session.status = status;
40
- session.updatedAt = new Date().toISOString();
41
- await this.save(session);
42
- return session;
43
- }
44
- async attachArtifact(sessionId, artifactPath) {
45
- const session = await this.load(sessionId);
46
- if (!session)
47
- return null;
48
- session.artifactPath = artifactPath;
49
- session.updatedAt = new Date().toISOString();
50
- await this.save(session);
51
- return session;
52
- }
53
- async addAnswers(sessionId, answers) {
54
- const session = await this.load(sessionId);
55
- if (!session)
56
- return null;
57
- session.answers = { ...session.answers, ...answers };
58
- session.updatedAt = new Date().toISOString();
59
- await this.save(session);
60
- return session;
61
- }
62
- async listRecent(limit = 20) {
63
- let files;
64
- try {
65
- files = await fs.readdir(this.sessionDir);
66
- }
67
- catch {
68
- return [];
69
- }
70
- const sessions = [];
71
- const jsonFiles = files.filter(f => f.endsWith('.json'));
72
- // Bounded concurrency
73
- const CONCURRENCY_LIMIT = 20;
74
- for (let i = 0; i < jsonFiles.length; i += CONCURRENCY_LIMIT) {
75
- const chunk = jsonFiles.slice(i, i + CONCURRENCY_LIMIT);
76
- await Promise.all(chunk.map(async (file) => {
77
- try {
78
- const raw = await fs.readFile(path.join(this.sessionDir, file), 'utf8');
79
- sessions.push(JSON.parse(raw));
80
- }
81
- catch {
82
- // Ignore malformed session files to avoid breaking the list.
83
- }
84
- }));
85
- }
86
- return sessions
87
- .sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt))
88
- .slice(0, limit);
89
- }
90
- async save(session) {
91
- await fs.mkdir(this.sessionDir, { recursive: true });
92
- const filePath = this.getSessionPath(session.id);
93
- await fs.writeFile(filePath, JSON.stringify(session, null, 2), 'utf8');
94
- }
95
- getSessionPath(sessionId) {
96
- return path.join(this.sessionDir, `${sessionId}.json`);
97
- }
98
- }
99
- //# sourceMappingURL=plan-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-session.js","sourceRoot":"","sources":["../../src/core/plan-session.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { TodoItem, TodoDocument } from '../utils/todoManager.js';
2
- import { AgentConfig } from './agent.js';
3
- import { ProviderType } from '../utils/config.js';
4
- export interface PlanResult {
5
- doc: TodoDocument;
6
- tasks: TodoItem[];
7
- isLarge: boolean;
8
- planSessionId?: string;
9
- artifactPath?: string;
10
- requiresApproval?: boolean;
11
- }
12
- /**
13
- * Lightweight \"plan mode\" that decides whether a task is large/complex
14
- * and, if so, creates/updates todo.md with a structured list of tasks.
15
- *
16
- * This first implementation is intentionally heuristic and deterministic:
17
- * it does not call the LLM yet, but prepares a solid path for that later.
18
- */
19
- export declare class PlanMode {
20
- private readonly rootDir;
21
- private readonly config;
22
- private readonly provider;
23
- constructor(rootDir: string, config: AgentConfig, provider: ProviderType);
24
- /**
25
- * Decide whether a task should go through plan mode.
26
- * Very simple heuristic based on length and obvious multi-step language.
27
- */
28
- isLargeTask(description: string): boolean;
29
- /**
30
- * Build or extend a TODO plan for the given description.
31
- * Returns the updated document plus the tasks it just added/updated.
32
- */
33
- /**
34
- * Build or extend a TODO plan using the AI Architect.
35
- */
36
- buildPlan(description: string): Promise<PlanResult>;
37
- /**
38
- * Fallback to the old heuristic method if AI fails
39
- */
40
- fallbackBuildPlan(description: string): Promise<PlanResult>;
41
- private loadGeneratedPlanText;
42
- private buildFallbackPlanContent;
43
- private extractCandidateTasks;
44
- /**
45
- * Generate a deterministic id for a title within this plan.
46
- * We deliberately *do not* include timestamps here so the same
47
- * title maps to the same id when re-planning.
48
- */
49
- private generateDeterministicId;
50
- }
51
- //# sourceMappingURL=planMode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planMode.d.ts","sourceRoot":"","sources":["../../src/core/planMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAiB,WAAW,EAAc,MAAM,YAAY,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,YAAY;IAGzC;;;OAGG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAwBzC;;;OAGG;IACH;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA0GzD;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAyBnD,qBAAqB;IAcnC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,qBAAqB;IAkC7B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;CAQhC"}
@@ -1,245 +0,0 @@
1
- import { TodoManager } from '../utils/todoManager.js';
2
- import { EnhancedAgent } from './agent.js';
3
- import { CodingToolExecutor } from './tools.js';
4
- import { SkillManager } from './skills.js';
5
- import * as fs from 'fs/promises';
6
- import * as path from 'path';
7
- import chalk from 'chalk';
8
- import { PlanSessionManager } from './plan-session.js';
9
- import { persistPlanArtifact } from './plan-artifacts.js';
10
- /**
11
- * Lightweight \"plan mode\" that decides whether a task is large/complex
12
- * and, if so, creates/updates todo.md with a structured list of tasks.
13
- *
14
- * This first implementation is intentionally heuristic and deterministic:
15
- * it does not call the LLM yet, but prepares a solid path for that later.
16
- */
17
- export class PlanMode {
18
- rootDir;
19
- config;
20
- provider;
21
- constructor(rootDir, config, provider) {
22
- this.rootDir = rootDir;
23
- this.config = config;
24
- this.provider = provider;
25
- }
26
- /**
27
- * Decide whether a task should go through plan mode.
28
- * Very simple heuristic based on length and obvious multi-step language.
29
- */
30
- isLargeTask(description) {
31
- const text = description.trim();
32
- if (text.length > 400)
33
- return true;
34
- const lower = text.toLowerCase();
35
- const multiStepHints = [' and ', ' then ', ' followed by ', ' as well as ', 'step 1', 'step 2', 'first,', 'second,'];
36
- let hits = 0;
37
- for (const hint of multiStepHints) {
38
- if (lower.includes(hint)) {
39
- hits++;
40
- }
41
- }
42
- if (hits >= 2 || (hits >= 1 && text.length > 60)) {
43
- return true;
44
- }
45
- // Multiple bullet-like lines also indicate a larger request
46
- const lines = text.split('\n').map(l => l.trim());
47
- const bulletLines = lines.filter(l => /^[-*]\s+/.test(l)).length;
48
- if (bulletLines >= 2)
49
- return true;
50
- return false;
51
- }
52
- /**
53
- * Build or extend a TODO plan for the given description.
54
- * Returns the updated document plus the tasks it just added/updated.
55
- */
56
- /**
57
- * Build or extend a TODO plan using the AI Architect.
58
- */
59
- async buildPlan(description) {
60
- console.log(chalk.cyan('\n🧠 AI Architect is analyzing the request...'));
61
- const planSessionManager = new PlanSessionManager(this.rootDir);
62
- const planSession = await planSessionManager.create(description, {
63
- source: 'PlanMode.buildPlan',
64
- });
65
- // Initialize the Architect Agent
66
- // We give it a restricted set of tools: Read access + Write access ONLY to plan/todo files
67
- // For now, we'll give it the standard executor but instruct it carefully.
68
- const skillManager = new SkillManager(this.rootDir, this.config.apiKey, this.config.baseUrl, this.config.model, this.provider);
69
- await skillManager.loadSkills();
70
- const defaultSkillsPrompt = await skillManager.buildDefaultSkillsPromptForTask(description, this.rootDir);
71
- const toolExecutor = new CodingToolExecutor(this.rootDir, {
72
- dryRun: false, // We want it to actually write the plan files
73
- skillManager,
74
- });
75
- // Filter tools to ensure safety during planning (read-only + specific writes)
76
- // Actually, giving full read access is good. We just want to encourage it to write plans.
77
- const tools = toolExecutor.getTools();
78
- const architect = new EnhancedAgent({
79
- ...this.config,
80
- maxIterations: 10,
81
- provider: this.provider,
82
- customProviderFormat: this.config.customProviderFormat,
83
- defaultSkillsPrompt,
84
- }, this.provider);
85
- // Forward events for visibility
86
- architect.on('event', (event) => {
87
- if (event.type === 'thinking')
88
- console.log(chalk.gray(` ${event.data.message}`));
89
- });
90
- const prompt = `
91
- You are the AI Architect. Your goal is to analyze the user's request and create a concrete execution plan.
92
-
93
- USER REQUEST: "${description}"
94
-
95
- 1. **Explore**: Read files to understand the current state of the project.
96
- 2. **Plan**: Create a detailed \`implementation_plan.md\` file.
97
- - Describe the architectural changes.
98
- - List files to create/modify.
99
- - Identify potential risks.
100
- 3. **Tasking**: Create or Update the \`todo.md\` file.
101
- - Break the plan into small, testable tasks.
102
- - Use a markdown list format with IDs if possible, or just a standard task list.
103
- - The \`todo.md\` MUST be actionable.
104
-
105
- Perform these steps now.
106
- `.trim();
107
- try {
108
- await architect.run(prompt, tools, toolExecutor);
109
- }
110
- catch (error) {
111
- console.error(chalk.red('Architect failed to generate plan:'), error);
112
- }
113
- // Now read the generated todo.md to return the result
114
- const todoManager = new TodoManager(this.rootDir);
115
- let doc;
116
- try {
117
- // Force reload from disk in case Agent wrote it
118
- doc = await todoManager.load();
119
- }
120
- catch (e) {
121
- // Fallback if no todo.md was created
122
- doc = { pending: [], inProgress: [], done: [] };
123
- }
124
- // If doc is empty, fallback to heuristic (means Agent failed to write todo.md)
125
- if (doc.pending.length === 0 && doc.inProgress.length === 0 && doc.done.length === 0) {
126
- console.log(chalk.yellow(' (Architect did not create tasks, falling back to heuristic)'));
127
- const fallback = await this.fallbackBuildPlan(description);
128
- const fallbackPlanContent = this.buildFallbackPlanContent(fallback.tasks);
129
- const persisted = await persistPlanArtifact(this.rootDir, planSession.id, description, fallbackPlanContent);
130
- await planSessionManager.attachArtifact(planSession.id, persisted.artifactPath);
131
- await planSessionManager.updateStatus(planSession.id, 'awaiting_approval');
132
- return {
133
- ...fallback,
134
- planSessionId: planSession.id,
135
- artifactPath: persisted.artifactPath,
136
- requiresApproval: true,
137
- };
138
- }
139
- const generatedPlanText = await this.loadGeneratedPlanText();
140
- const persisted = await persistPlanArtifact(this.rootDir, planSession.id, description, generatedPlanText);
141
- await planSessionManager.attachArtifact(planSession.id, persisted.artifactPath);
142
- await planSessionManager.updateStatus(planSession.id, 'awaiting_approval');
143
- return {
144
- doc,
145
- tasks: doc.pending, // This might not be exactly "new" tasks, but "pending" ones
146
- isLarge: true,
147
- planSessionId: planSession.id,
148
- artifactPath: persisted.artifactPath,
149
- requiresApproval: true,
150
- };
151
- }
152
- /**
153
- * Fallback to the old heuristic method if AI fails
154
- */
155
- async fallbackBuildPlan(description) {
156
- const todoManager = new TodoManager(this.rootDir);
157
- const candidates = this.extractCandidateTasks(description);
158
- if (candidates.length === 0)
159
- candidates.push(description.trim());
160
- const newItems = candidates.map((title) => ({
161
- id: this.generateDeterministicId(title),
162
- title: title.trim(),
163
- }));
164
- const doc = await todoManager.mergeNewTasks(newItems);
165
- // Re-map to find added tasks
166
- const byId = new Map();
167
- [...doc.pending, ...doc.inProgress, ...doc.done].forEach(i => byId.set(i.id, i));
168
- const tasks = newItems.map((t) => byId.get(t.id)).filter(Boolean);
169
- return {
170
- doc,
171
- tasks,
172
- isLarge: this.isLargeTask(description),
173
- };
174
- }
175
- async loadGeneratedPlanText() {
176
- const candidates = ['implementation_plan.md', 'implementations.md'];
177
- for (const candidate of candidates) {
178
- const candidatePath = path.join(this.rootDir, candidate);
179
- try {
180
- const content = await fs.readFile(candidatePath, 'utf8');
181
- if (content.trim().length > 0)
182
- return content;
183
- }
184
- catch {
185
- // Ignore missing file candidates.
186
- }
187
- }
188
- return 'Plan file was not generated; refer to todo.md for actionable tasks.';
189
- }
190
- buildFallbackPlanContent(tasks) {
191
- if (tasks.length === 0) {
192
- return 'No tasks were generated.';
193
- }
194
- return [
195
- '## Fallback plan generated from todo tasks',
196
- '',
197
- ...tasks.map((task) => `- [ ] ${task.title} (${task.id})`),
198
- '',
199
- ].join('\n');
200
- }
201
- extractCandidateTasks(description) {
202
- const text = description.trim();
203
- const lines = text.split('\n');
204
- const tasks = [];
205
- // 1) Use bullet-style lines as tasks when present
206
- for (const raw of lines) {
207
- const line = raw.trim();
208
- const bulletMatch = /^[-*]\s+(.*)$/.exec(line);
209
- if (bulletMatch) {
210
- const title = bulletMatch[1].trim();
211
- if (title.length >= 10) {
212
- tasks.push(title);
213
- }
214
- }
215
- }
216
- if (tasks.length > 0)
217
- return tasks;
218
- // 2) Fallback: split by sentences and keep reasonably sized chunks
219
- const sentenceLike = text
220
- .split(/[.!?]/)
221
- .map(s => s.trim())
222
- .filter(s => s.length >= 15);
223
- if (sentenceLike.length > 1) {
224
- return sentenceLike;
225
- }
226
- // 3) Last resort: single task with the full description
227
- if (text.length > 0)
228
- return [text];
229
- return [];
230
- }
231
- /**
232
- * Generate a deterministic id for a title within this plan.
233
- * We deliberately *do not* include timestamps here so the same
234
- * title maps to the same id when re-planning.
235
- */
236
- generateDeterministicId(title) {
237
- const base = title
238
- .toLowerCase()
239
- .replace(/[^a-z0-9]+/g, '-')
240
- .replace(/^-+|-+$/g, '')
241
- .slice(0, 32) || 'task';
242
- return base;
243
- }
244
- }
245
- //# sourceMappingURL=planMode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planMode.js","sourceRoot":"","sources":["../../src/core/planMode.ts"],"names":[],"mappings":"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"}
@@ -1,96 +0,0 @@
1
- import type { Tool } from '@anthropic-ai/sdk/resources/messages';
2
- import type { EnhancedAgent } from './agent.js';
3
- /**
4
- * Plugin interface that all plugins must implement
5
- */
6
- export interface XibeCodePlugin {
7
- /**
8
- * Plugin name
9
- */
10
- name: string;
11
- /**
12
- * Plugin version
13
- */
14
- version: string;
15
- /**
16
- * Optional description
17
- */
18
- description?: string;
19
- /**
20
- * Register custom tools
21
- */
22
- registerTools?(): ToolDefinition[];
23
- /**
24
- * Optional lifecycle hooks
25
- */
26
- registerHooks?(agent: EnhancedAgent): void;
27
- /**
28
- * Initialize the plugin (called when loaded)
29
- */
30
- initialize?(): Promise<void> | void;
31
- /**
32
- * Cleanup when plugin is unloaded
33
- */
34
- cleanup?(): Promise<void> | void;
35
- }
36
- /**
37
- * Plugin tool definition
38
- */
39
- export interface ToolDefinition {
40
- /**
41
- * Tool schema (Anthropic format)
42
- */
43
- schema: Tool;
44
- /**
45
- * Tool execution handler
46
- */
47
- handler: (input: any) => Promise<any>;
48
- }
49
- /**
50
- * Plugin loader and manager
51
- */
52
- export declare class PluginManager {
53
- private plugins;
54
- private tools;
55
- /**
56
- * Load plugins from a list of paths
57
- */
58
- loadPlugins(pluginPaths: string[]): Promise<void>;
59
- /**
60
- * Load a single plugin from a path
61
- */
62
- loadPlugin(pluginPath: string): Promise<void>;
63
- /**
64
- * Get all registered plugin tools
65
- */
66
- getPluginTools(): Tool[];
67
- /**
68
- * Execute a plugin tool
69
- */
70
- executePluginTool(toolName: string, input: any): Promise<any>;
71
- /**
72
- * Check if a tool is a plugin tool
73
- */
74
- isPluginTool(toolName: string): boolean;
75
- /**
76
- * Register plugin hooks with the agent
77
- */
78
- registerHooks(agent: EnhancedAgent): void;
79
- /**
80
- * Get loaded plugins
81
- */
82
- getPlugins(): XibeCodePlugin[];
83
- /**
84
- * Unload all plugins
85
- */
86
- unloadAll(): Promise<void>;
87
- /**
88
- * Unload a specific plugin
89
- */
90
- unloadPlugin(pluginName: string): Promise<void>;
91
- }
92
- /**
93
- * Example plugin template
94
- */
95
- export declare const examplePlugin: XibeCodePlugin;
96
- //# sourceMappingURL=plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,IAAI,cAAc,EAAE,CAAC;IAEnC;;OAEG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,IAAI,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,KAAK,CAA0C;IAEvD;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDnD;;OAEG;IACH,cAAc,IAAI,IAAI,EAAE;IAIxB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAsBnE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAQzC;;OAEG;IACH,UAAU,IAAI,cAAc,EAAE;IAI9B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAUhC;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBtD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cA+C3B,CAAC"}