orquesta-cli 0.1.13 → 0.1.15

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 (541) hide show
  1. package/README.md +30 -4
  2. package/dist/cli.js +65 -4
  3. package/dist/core/config/config-manager.d.ts +13 -1
  4. package/dist/core/config/config-manager.js +83 -0
  5. package/dist/core/slash-command-handler.d.ts +1 -0
  6. package/dist/core/slash-command-handler.js +129 -0
  7. package/dist/orquesta/config-sync.d.ts +73 -0
  8. package/dist/orquesta/config-sync.js +230 -0
  9. package/dist/orquesta/prompt-reporter.d.ts +16 -0
  10. package/dist/orquesta/prompt-reporter.js +85 -0
  11. package/dist/setup/first-run-setup.d.ts +15 -0
  12. package/dist/setup/first-run-setup.js +238 -0
  13. package/dist/types/index.d.ts +11 -2
  14. package/dist/ui/TodoPanel.d.ts +1 -0
  15. package/dist/ui/TodoPanel.js +6 -1
  16. package/dist/ui/components/LLMSetupWizard.js +381 -7
  17. package/dist/ui/components/Logo.d.ts +2 -0
  18. package/dist/ui/components/Logo.js +10 -3
  19. package/dist/ui/components/OpenRouterModelBrowser.d.ts +13 -0
  20. package/dist/ui/components/OpenRouterModelBrowser.js +221 -0
  21. package/dist/ui/components/PlanExecuteApp.js +30 -4
  22. package/dist/ui/components/ProjectSelector.d.ts +8 -0
  23. package/dist/ui/components/ProjectSelector.js +119 -0
  24. package/dist/ui/components/StatusBar.d.ts +2 -0
  25. package/dist/ui/components/StatusBar.js +6 -1
  26. package/dist/ui/hooks/slashCommandProcessor.js +8 -4
  27. package/package.json +11 -5
  28. package/.eslintrc.json +0 -26
  29. package/.prettierrc.json +0 -10
  30. package/CLAUDE.md +0 -199
  31. package/SECURITY.md +0 -290
  32. package/TEST_LOCAL.md +0 -245
  33. package/dist/agents/base/base-agent.d.ts.map +0 -1
  34. package/dist/agents/base/base-agent.js.map +0 -1
  35. package/dist/agents/docs-search/index.d.ts.map +0 -1
  36. package/dist/agents/docs-search/index.js.map +0 -1
  37. package/dist/agents/index.d.ts.map +0 -1
  38. package/dist/agents/index.js.map +0 -1
  39. package/dist/agents/planner/index.d.ts.map +0 -1
  40. package/dist/agents/planner/index.js.map +0 -1
  41. package/dist/cli.d.ts.map +0 -1
  42. package/dist/cli.js.map +0 -1
  43. package/dist/constants.d.ts.map +0 -1
  44. package/dist/constants.js.map +0 -1
  45. package/dist/core/compact/compact-manager.d.ts.map +0 -1
  46. package/dist/core/compact/compact-manager.js.map +0 -1
  47. package/dist/core/compact/compact-prompts.d.ts.map +0 -1
  48. package/dist/core/compact/compact-prompts.js.map +0 -1
  49. package/dist/core/compact/context-tracker.d.ts.map +0 -1
  50. package/dist/core/compact/context-tracker.js.map +0 -1
  51. package/dist/core/compact/index.d.ts.map +0 -1
  52. package/dist/core/compact/index.js.map +0 -1
  53. package/dist/core/config/config-manager.d.ts.map +0 -1
  54. package/dist/core/config/config-manager.js.map +0 -1
  55. package/dist/core/config/index.d.ts.map +0 -1
  56. package/dist/core/config/index.js.map +0 -1
  57. package/dist/core/docs-manager.d.ts.map +0 -1
  58. package/dist/core/docs-manager.js.map +0 -1
  59. package/dist/core/git-auto-updater.d.ts +0 -58
  60. package/dist/core/git-auto-updater.d.ts.map +0 -1
  61. package/dist/core/git-auto-updater.js +0 -374
  62. package/dist/core/git-auto-updater.js.map +0 -1
  63. package/dist/core/llm/index.d.ts.map +0 -1
  64. package/dist/core/llm/index.js.map +0 -1
  65. package/dist/core/llm/llm-client.d.ts.map +0 -1
  66. package/dist/core/llm/llm-client.js.map +0 -1
  67. package/dist/core/session/index.d.ts.map +0 -1
  68. package/dist/core/session/index.js.map +0 -1
  69. package/dist/core/session/session-manager.d.ts.map +0 -1
  70. package/dist/core/session/session-manager.js.map +0 -1
  71. package/dist/core/slash-command-handler.d.ts.map +0 -1
  72. package/dist/core/slash-command-handler.js.map +0 -1
  73. package/dist/core/usage-tracker.d.ts.map +0 -1
  74. package/dist/core/usage-tracker.js.map +0 -1
  75. package/dist/errors/base.d.ts.map +0 -1
  76. package/dist/errors/base.js.map +0 -1
  77. package/dist/errors/file.d.ts.map +0 -1
  78. package/dist/errors/file.js.map +0 -1
  79. package/dist/errors/index.d.ts.map +0 -1
  80. package/dist/errors/index.js.map +0 -1
  81. package/dist/errors/llm.d.ts.map +0 -1
  82. package/dist/errors/llm.js.map +0 -1
  83. package/dist/errors/network.d.ts.map +0 -1
  84. package/dist/errors/network.js.map +0 -1
  85. package/dist/errors/validation.d.ts.map +0 -1
  86. package/dist/errors/validation.js.map +0 -1
  87. package/dist/eval/eval-runner.d.ts.map +0 -1
  88. package/dist/eval/eval-runner.js.map +0 -1
  89. package/dist/eval/index.d.ts.map +0 -1
  90. package/dist/eval/index.js.map +0 -1
  91. package/dist/eval/types.d.ts.map +0 -1
  92. package/dist/eval/types.js.map +0 -1
  93. package/dist/index.d.ts.map +0 -1
  94. package/dist/index.js.map +0 -1
  95. package/dist/orchestration/index.d.ts.map +0 -1
  96. package/dist/orchestration/index.js.map +0 -1
  97. package/dist/orchestration/plan-executor.d.ts.map +0 -1
  98. package/dist/orchestration/plan-executor.js.map +0 -1
  99. package/dist/orchestration/types.d.ts.map +0 -1
  100. package/dist/orchestration/types.js.map +0 -1
  101. package/dist/orchestration/utils.d.ts.map +0 -1
  102. package/dist/orchestration/utils.js.map +0 -1
  103. package/dist/orquesta/connection.d.ts.map +0 -1
  104. package/dist/orquesta/connection.js.map +0 -1
  105. package/dist/prompts/agents/docs-search-decision.d.ts.map +0 -1
  106. package/dist/prompts/agents/docs-search-decision.js.map +0 -1
  107. package/dist/prompts/agents/docs-search.d.ts.map +0 -1
  108. package/dist/prompts/agents/docs-search.js.map +0 -1
  109. package/dist/prompts/agents/planning.d.ts.map +0 -1
  110. package/dist/prompts/agents/planning.js.map +0 -1
  111. package/dist/prompts/index.d.ts.map +0 -1
  112. package/dist/prompts/index.js.map +0 -1
  113. package/dist/prompts/shared/codebase-rules.d.ts.map +0 -1
  114. package/dist/prompts/shared/codebase-rules.js.map +0 -1
  115. package/dist/prompts/shared/git-rules.d.ts.map +0 -1
  116. package/dist/prompts/shared/git-rules.js.map +0 -1
  117. package/dist/prompts/shared/language-rules.d.ts.map +0 -1
  118. package/dist/prompts/shared/language-rules.js.map +0 -1
  119. package/dist/prompts/shared/tool-usage.d.ts.map +0 -1
  120. package/dist/prompts/shared/tool-usage.js.map +0 -1
  121. package/dist/prompts/system/compact.d.ts.map +0 -1
  122. package/dist/prompts/system/compact.js.map +0 -1
  123. package/dist/prompts/system/plan-execute.d.ts.map +0 -1
  124. package/dist/prompts/system/plan-execute.js.map +0 -1
  125. package/dist/tools/browser/browser-client.d.ts.map +0 -1
  126. package/dist/tools/browser/browser-client.js.map +0 -1
  127. package/dist/tools/browser/browser-tools.d.ts.map +0 -1
  128. package/dist/tools/browser/browser-tools.js.map +0 -1
  129. package/dist/tools/browser/index.d.ts.map +0 -1
  130. package/dist/tools/browser/index.js.map +0 -1
  131. package/dist/tools/index.d.ts.map +0 -1
  132. package/dist/tools/index.js.map +0 -1
  133. package/dist/tools/llm/agents/docs-search-tools.d.ts.map +0 -1
  134. package/dist/tools/llm/agents/docs-search-tools.js.map +0 -1
  135. package/dist/tools/llm/agents/index.d.ts.map +0 -1
  136. package/dist/tools/llm/agents/index.js.map +0 -1
  137. package/dist/tools/llm/index.d.ts.map +0 -1
  138. package/dist/tools/llm/index.js.map +0 -1
  139. package/dist/tools/llm/simple/ask-user-tool.d.ts.map +0 -1
  140. package/dist/tools/llm/simple/ask-user-tool.js.map +0 -1
  141. package/dist/tools/llm/simple/background-bash-tool.d.ts.map +0 -1
  142. package/dist/tools/llm/simple/background-bash-tool.js.map +0 -1
  143. package/dist/tools/llm/simple/background-powershell-tool.d.ts.map +0 -1
  144. package/dist/tools/llm/simple/background-powershell-tool.js.map +0 -1
  145. package/dist/tools/llm/simple/bash-tool.d.ts.map +0 -1
  146. package/dist/tools/llm/simple/bash-tool.js.map +0 -1
  147. package/dist/tools/llm/simple/docs-search-agent-tool.d.ts.map +0 -1
  148. package/dist/tools/llm/simple/docs-search-agent-tool.js.map +0 -1
  149. package/dist/tools/llm/simple/file-tools.d.ts.map +0 -1
  150. package/dist/tools/llm/simple/file-tools.js.map +0 -1
  151. package/dist/tools/llm/simple/final-response-tool.d.ts.map +0 -1
  152. package/dist/tools/llm/simple/final-response-tool.js.map +0 -1
  153. package/dist/tools/llm/simple/index.d.ts.map +0 -1
  154. package/dist/tools/llm/simple/index.js.map +0 -1
  155. package/dist/tools/llm/simple/planning-tools.d.ts.map +0 -1
  156. package/dist/tools/llm/simple/planning-tools.js.map +0 -1
  157. package/dist/tools/llm/simple/powershell-tool.d.ts.map +0 -1
  158. package/dist/tools/llm/simple/powershell-tool.js.map +0 -1
  159. package/dist/tools/llm/simple/simple-tool-executor.d.ts.map +0 -1
  160. package/dist/tools/llm/simple/simple-tool-executor.js.map +0 -1
  161. package/dist/tools/llm/simple/todo-tools.d.ts.map +0 -1
  162. package/dist/tools/llm/simple/todo-tools.js.map +0 -1
  163. package/dist/tools/llm/simple/user-interaction-tools.d.ts.map +0 -1
  164. package/dist/tools/llm/simple/user-interaction-tools.js.map +0 -1
  165. package/dist/tools/office/common/constants.d.ts.map +0 -1
  166. package/dist/tools/office/common/constants.js.map +0 -1
  167. package/dist/tools/office/common/index.d.ts.map +0 -1
  168. package/dist/tools/office/common/index.js.map +0 -1
  169. package/dist/tools/office/common/types.d.ts.map +0 -1
  170. package/dist/tools/office/common/types.js.map +0 -1
  171. package/dist/tools/office/common/utils.d.ts.map +0 -1
  172. package/dist/tools/office/common/utils.js.map +0 -1
  173. package/dist/tools/office/excel-client.d.ts.map +0 -1
  174. package/dist/tools/office/excel-client.js.map +0 -1
  175. package/dist/tools/office/excel-tools/cells.d.ts.map +0 -1
  176. package/dist/tools/office/excel-tools/cells.js.map +0 -1
  177. package/dist/tools/office/excel-tools/charts.d.ts.map +0 -1
  178. package/dist/tools/office/excel-tools/charts.js.map +0 -1
  179. package/dist/tools/office/excel-tools/comments.d.ts.map +0 -1
  180. package/dist/tools/office/excel-tools/comments.js.map +0 -1
  181. package/dist/tools/office/excel-tools/data-ops.d.ts.map +0 -1
  182. package/dist/tools/office/excel-tools/data-ops.js.map +0 -1
  183. package/dist/tools/office/excel-tools/export.d.ts.map +0 -1
  184. package/dist/tools/office/excel-tools/export.js.map +0 -1
  185. package/dist/tools/office/excel-tools/formatting.d.ts.map +0 -1
  186. package/dist/tools/office/excel-tools/formatting.js.map +0 -1
  187. package/dist/tools/office/excel-tools/index.d.ts.map +0 -1
  188. package/dist/tools/office/excel-tools/index.js.map +0 -1
  189. package/dist/tools/office/excel-tools/launch.d.ts.map +0 -1
  190. package/dist/tools/office/excel-tools/launch.js.map +0 -1
  191. package/dist/tools/office/excel-tools/media.d.ts.map +0 -1
  192. package/dist/tools/office/excel-tools/media.js.map +0 -1
  193. package/dist/tools/office/excel-tools/named-ranges.d.ts.map +0 -1
  194. package/dist/tools/office/excel-tools/named-ranges.js.map +0 -1
  195. package/dist/tools/office/excel-tools/protection.d.ts.map +0 -1
  196. package/dist/tools/office/excel-tools/protection.js.map +0 -1
  197. package/dist/tools/office/excel-tools/rows-columns.d.ts.map +0 -1
  198. package/dist/tools/office/excel-tools/rows-columns.js.map +0 -1
  199. package/dist/tools/office/excel-tools/sheets.d.ts.map +0 -1
  200. package/dist/tools/office/excel-tools/sheets.js.map +0 -1
  201. package/dist/tools/office/excel-tools/validation.d.ts.map +0 -1
  202. package/dist/tools/office/excel-tools/validation.js.map +0 -1
  203. package/dist/tools/office/excel-tools.d.ts.map +0 -1
  204. package/dist/tools/office/excel-tools.js.map +0 -1
  205. package/dist/tools/office/index.d.ts.map +0 -1
  206. package/dist/tools/office/index.js.map +0 -1
  207. package/dist/tools/office/office-client-base.d.ts.map +0 -1
  208. package/dist/tools/office/office-client-base.js.map +0 -1
  209. package/dist/tools/office/office-client.d.ts.map +0 -1
  210. package/dist/tools/office/office-client.js.map +0 -1
  211. package/dist/tools/office/powerpoint-client.d.ts.map +0 -1
  212. package/dist/tools/office/powerpoint-client.js.map +0 -1
  213. package/dist/tools/office/powerpoint-tools/effects.d.ts.map +0 -1
  214. package/dist/tools/office/powerpoint-tools/effects.js.map +0 -1
  215. package/dist/tools/office/powerpoint-tools/export.d.ts.map +0 -1
  216. package/dist/tools/office/powerpoint-tools/export.js.map +0 -1
  217. package/dist/tools/office/powerpoint-tools/index.d.ts.map +0 -1
  218. package/dist/tools/office/powerpoint-tools/index.js.map +0 -1
  219. package/dist/tools/office/powerpoint-tools/launch.d.ts.map +0 -1
  220. package/dist/tools/office/powerpoint-tools/launch.js.map +0 -1
  221. package/dist/tools/office/powerpoint-tools/media.d.ts.map +0 -1
  222. package/dist/tools/office/powerpoint-tools/media.js.map +0 -1
  223. package/dist/tools/office/powerpoint-tools/notes.d.ts.map +0 -1
  224. package/dist/tools/office/powerpoint-tools/notes.js.map +0 -1
  225. package/dist/tools/office/powerpoint-tools/sections.d.ts.map +0 -1
  226. package/dist/tools/office/powerpoint-tools/sections.js.map +0 -1
  227. package/dist/tools/office/powerpoint-tools/shapes.d.ts.map +0 -1
  228. package/dist/tools/office/powerpoint-tools/shapes.js.map +0 -1
  229. package/dist/tools/office/powerpoint-tools/slides.d.ts.map +0 -1
  230. package/dist/tools/office/powerpoint-tools/slides.js.map +0 -1
  231. package/dist/tools/office/powerpoint-tools/tables.d.ts.map +0 -1
  232. package/dist/tools/office/powerpoint-tools/tables.js.map +0 -1
  233. package/dist/tools/office/powerpoint-tools/text.d.ts.map +0 -1
  234. package/dist/tools/office/powerpoint-tools/text.js.map +0 -1
  235. package/dist/tools/office/powerpoint-tools.d.ts.map +0 -1
  236. package/dist/tools/office/powerpoint-tools.js.map +0 -1
  237. package/dist/tools/office/word-client.d.ts.map +0 -1
  238. package/dist/tools/office/word-client.js.map +0 -1
  239. package/dist/tools/office/word-tools/bookmarks.d.ts.map +0 -1
  240. package/dist/tools/office/word-tools/bookmarks.js.map +0 -1
  241. package/dist/tools/office/word-tools/comments.d.ts.map +0 -1
  242. package/dist/tools/office/word-tools/comments.js.map +0 -1
  243. package/dist/tools/office/word-tools/content.d.ts.map +0 -1
  244. package/dist/tools/office/word-tools/content.js.map +0 -1
  245. package/dist/tools/office/word-tools/export.d.ts.map +0 -1
  246. package/dist/tools/office/word-tools/export.js.map +0 -1
  247. package/dist/tools/office/word-tools/formatting.d.ts.map +0 -1
  248. package/dist/tools/office/word-tools/formatting.js.map +0 -1
  249. package/dist/tools/office/word-tools/headers-footers.d.ts.map +0 -1
  250. package/dist/tools/office/word-tools/headers-footers.js.map +0 -1
  251. package/dist/tools/office/word-tools/index.d.ts.map +0 -1
  252. package/dist/tools/office/word-tools/index.js.map +0 -1
  253. package/dist/tools/office/word-tools/launch.d.ts.map +0 -1
  254. package/dist/tools/office/word-tools/launch.js.map +0 -1
  255. package/dist/tools/office/word-tools/lists.d.ts.map +0 -1
  256. package/dist/tools/office/word-tools/lists.js.map +0 -1
  257. package/dist/tools/office/word-tools/navigation.d.ts.map +0 -1
  258. package/dist/tools/office/word-tools/navigation.js.map +0 -1
  259. package/dist/tools/office/word-tools/page-setup.d.ts.map +0 -1
  260. package/dist/tools/office/word-tools/page-setup.js.map +0 -1
  261. package/dist/tools/office/word-tools/tables.d.ts.map +0 -1
  262. package/dist/tools/office/word-tools/tables.js.map +0 -1
  263. package/dist/tools/office/word-tools/text.d.ts.map +0 -1
  264. package/dist/tools/office/word-tools/text.js.map +0 -1
  265. package/dist/tools/office/word-tools/undo-redo.d.ts.map +0 -1
  266. package/dist/tools/office/word-tools/undo-redo.js.map +0 -1
  267. package/dist/tools/office/word-tools/watermarks.d.ts.map +0 -1
  268. package/dist/tools/office/word-tools/watermarks.js.map +0 -1
  269. package/dist/tools/office/word-tools.d.ts.map +0 -1
  270. package/dist/tools/office/word-tools.js.map +0 -1
  271. package/dist/tools/registry.d.ts.map +0 -1
  272. package/dist/tools/registry.js.map +0 -1
  273. package/dist/tools/types.d.ts.map +0 -1
  274. package/dist/tools/types.js.map +0 -1
  275. package/dist/types/index.d.ts.map +0 -1
  276. package/dist/types/index.js.map +0 -1
  277. package/dist/ui/PlanExecuteView.d.ts.map +0 -1
  278. package/dist/ui/PlanExecuteView.js.map +0 -1
  279. package/dist/ui/TodoPanel.d.ts.map +0 -1
  280. package/dist/ui/TodoPanel.js.map +0 -1
  281. package/dist/ui/UpdateNotification.d.ts.map +0 -1
  282. package/dist/ui/UpdateNotification.js.map +0 -1
  283. package/dist/ui/components/ActivityIndicator.d.ts.map +0 -1
  284. package/dist/ui/components/ActivityIndicator.js.map +0 -1
  285. package/dist/ui/components/CommandBrowser.d.ts.map +0 -1
  286. package/dist/ui/components/CommandBrowser.js.map +0 -1
  287. package/dist/ui/components/CustomTextInput.d.ts.map +0 -1
  288. package/dist/ui/components/CustomTextInput.js.map +0 -1
  289. package/dist/ui/components/DocsSearchProgress.d.ts.map +0 -1
  290. package/dist/ui/components/DocsSearchProgress.js.map +0 -1
  291. package/dist/ui/components/FileBrowser.d.ts.map +0 -1
  292. package/dist/ui/components/FileBrowser.js.map +0 -1
  293. package/dist/ui/components/LLMSetupWizard.d.ts.map +0 -1
  294. package/dist/ui/components/LLMSetupWizard.js.map +0 -1
  295. package/dist/ui/components/Logo.d.ts.map +0 -1
  296. package/dist/ui/components/Logo.js.map +0 -1
  297. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  298. package/dist/ui/components/MarkdownRenderer.js.map +0 -1
  299. package/dist/ui/components/ModelSelector.d.ts.map +0 -1
  300. package/dist/ui/components/ModelSelector.js.map +0 -1
  301. package/dist/ui/components/PlanExecuteApp.d.ts.map +0 -1
  302. package/dist/ui/components/PlanExecuteApp.js.map +0 -1
  303. package/dist/ui/components/ProgressBar.d.ts.map +0 -1
  304. package/dist/ui/components/ProgressBar.js.map +0 -1
  305. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  306. package/dist/ui/components/StatusBar.js.map +0 -1
  307. package/dist/ui/components/ThinkingIndicator.d.ts.map +0 -1
  308. package/dist/ui/components/ThinkingIndicator.js.map +0 -1
  309. package/dist/ui/components/TodoListView.d.ts.map +0 -1
  310. package/dist/ui/components/TodoListView.js.map +0 -1
  311. package/dist/ui/components/ToolSelector.d.ts.map +0 -1
  312. package/dist/ui/components/ToolSelector.js.map +0 -1
  313. package/dist/ui/components/dialogs/ApprovalDialog.d.ts.map +0 -1
  314. package/dist/ui/components/dialogs/ApprovalDialog.js.map +0 -1
  315. package/dist/ui/components/dialogs/AskUserDialog.d.ts.map +0 -1
  316. package/dist/ui/components/dialogs/AskUserDialog.js.map +0 -1
  317. package/dist/ui/components/dialogs/DocsBrowser.d.ts.map +0 -1
  318. package/dist/ui/components/dialogs/DocsBrowser.js.map +0 -1
  319. package/dist/ui/components/dialogs/SettingsDialog.d.ts.map +0 -1
  320. package/dist/ui/components/dialogs/SettingsDialog.js.map +0 -1
  321. package/dist/ui/components/dialogs/index.d.ts.map +0 -1
  322. package/dist/ui/components/dialogs/index.js.map +0 -1
  323. package/dist/ui/components/index.d.ts.map +0 -1
  324. package/dist/ui/components/index.js.map +0 -1
  325. package/dist/ui/components/panels/LogPanel.d.ts.map +0 -1
  326. package/dist/ui/components/panels/LogPanel.js.map +0 -1
  327. package/dist/ui/components/panels/SessionPanel.d.ts.map +0 -1
  328. package/dist/ui/components/panels/SessionPanel.js.map +0 -1
  329. package/dist/ui/components/panels/index.d.ts.map +0 -1
  330. package/dist/ui/components/panels/index.js.map +0 -1
  331. package/dist/ui/components/views/ChatView.d.ts.map +0 -1
  332. package/dist/ui/components/views/ChatView.js.map +0 -1
  333. package/dist/ui/components/views/index.d.ts.map +0 -1
  334. package/dist/ui/components/views/index.js.map +0 -1
  335. package/dist/ui/contexts/TokenContext.d.ts.map +0 -1
  336. package/dist/ui/contexts/TokenContext.js.map +0 -1
  337. package/dist/ui/hooks/atFileProcessor.d.ts.map +0 -1
  338. package/dist/ui/hooks/atFileProcessor.js.map +0 -1
  339. package/dist/ui/hooks/index.d.ts.map +0 -1
  340. package/dist/ui/hooks/index.js.map +0 -1
  341. package/dist/ui/hooks/slashCommandProcessor.d.ts.map +0 -1
  342. package/dist/ui/hooks/slashCommandProcessor.js.map +0 -1
  343. package/dist/ui/hooks/useCommandBrowserState.d.ts.map +0 -1
  344. package/dist/ui/hooks/useCommandBrowserState.js.map +0 -1
  345. package/dist/ui/hooks/useFileBrowserState.d.ts.map +0 -1
  346. package/dist/ui/hooks/useFileBrowserState.js.map +0 -1
  347. package/dist/ui/hooks/useFileList.d.ts.map +0 -1
  348. package/dist/ui/hooks/useFileList.js.map +0 -1
  349. package/dist/ui/hooks/useInputHistory.d.ts.map +0 -1
  350. package/dist/ui/hooks/useInputHistory.js.map +0 -1
  351. package/dist/ui/hooks/usePlanExecution.d.ts.map +0 -1
  352. package/dist/ui/hooks/usePlanExecution.js.map +0 -1
  353. package/dist/ui/index.d.ts.map +0 -1
  354. package/dist/ui/index.js.map +0 -1
  355. package/dist/ui/ink-entry.d.ts.map +0 -1
  356. package/dist/ui/ink-entry.js.map +0 -1
  357. package/dist/utils/env-filter.d.ts.map +0 -1
  358. package/dist/utils/env-filter.js.map +0 -1
  359. package/dist/utils/file-system.d.ts.map +0 -1
  360. package/dist/utils/file-system.js.map +0 -1
  361. package/dist/utils/git-utils.d.ts.map +0 -1
  362. package/dist/utils/git-utils.js.map +0 -1
  363. package/dist/utils/json-stream-logger.d.ts.map +0 -1
  364. package/dist/utils/json-stream-logger.js.map +0 -1
  365. package/dist/utils/logger.d.ts.map +0 -1
  366. package/dist/utils/logger.js.map +0 -1
  367. package/dist/utils/platform-utils.d.ts.map +0 -1
  368. package/dist/utils/platform-utils.js.map +0 -1
  369. package/dist/utils/wsl-utils.d.ts.map +0 -1
  370. package/dist/utils/wsl-utils.js.map +0 -1
  371. package/electron.vite.config.ts +0 -63
  372. package/google374b9eba0c52b043.html +0 -1
  373. package/src/agents/base/base-agent.ts +0 -159
  374. package/src/agents/docs-search/index.ts +0 -365
  375. package/src/agents/index.ts +0 -34
  376. package/src/agents/planner/index.ts +0 -544
  377. package/src/cli.ts +0 -201
  378. package/src/constants.ts +0 -47
  379. package/src/core/compact/compact-manager.ts +0 -160
  380. package/src/core/compact/compact-prompts.ts +0 -150
  381. package/src/core/compact/context-tracker.ts +0 -164
  382. package/src/core/compact/index.ts +0 -25
  383. package/src/core/config/config-manager.ts +0 -460
  384. package/src/core/config/index.ts +0 -5
  385. package/src/core/docs-manager.ts +0 -678
  386. package/src/core/llm/index.ts +0 -7
  387. package/src/core/llm/llm-client.ts +0 -1550
  388. package/src/core/session/index.ts +0 -5
  389. package/src/core/session/session-manager.ts +0 -464
  390. package/src/core/slash-command-handler.ts +0 -410
  391. package/src/core/usage-tracker.ts +0 -438
  392. package/src/errors/base.ts +0 -81
  393. package/src/errors/file.ts +0 -183
  394. package/src/errors/index.ts +0 -95
  395. package/src/errors/llm.ts +0 -151
  396. package/src/errors/network.ts +0 -124
  397. package/src/errors/validation.ts +0 -111
  398. package/src/eval/eval-runner.ts +0 -456
  399. package/src/eval/index.ts +0 -8
  400. package/src/eval/types.ts +0 -139
  401. package/src/index.ts +0 -22
  402. package/src/orchestration/index.ts +0 -30
  403. package/src/orchestration/plan-executor.ts +0 -652
  404. package/src/orchestration/types.ts +0 -127
  405. package/src/orchestration/utils.ts +0 -119
  406. package/src/orquesta/connection.ts +0 -291
  407. package/src/prompts/agents/docs-search-decision.ts +0 -74
  408. package/src/prompts/agents/docs-search.ts +0 -84
  409. package/src/prompts/agents/planning.ts +0 -143
  410. package/src/prompts/index.ts +0 -31
  411. package/src/prompts/shared/codebase-rules.ts +0 -29
  412. package/src/prompts/shared/git-rules.ts +0 -94
  413. package/src/prompts/shared/language-rules.ts +0 -36
  414. package/src/prompts/shared/tool-usage.ts +0 -72
  415. package/src/prompts/system/compact.ts +0 -80
  416. package/src/prompts/system/plan-execute.ts +0 -89
  417. package/src/tools/browser/browser-client.ts +0 -1363
  418. package/src/tools/browser/browser-tools.ts +0 -1139
  419. package/src/tools/browser/index.ts +0 -65
  420. package/src/tools/index.ts +0 -23
  421. package/src/tools/llm/agents/docs-search-tools.ts +0 -368
  422. package/src/tools/llm/agents/index.ts +0 -22
  423. package/src/tools/llm/index.ts +0 -11
  424. package/src/tools/llm/simple/ask-user-tool.ts +0 -25
  425. package/src/tools/llm/simple/background-bash-tool.ts +0 -443
  426. package/src/tools/llm/simple/background-powershell-tool.ts +0 -421
  427. package/src/tools/llm/simple/bash-tool.ts +0 -238
  428. package/src/tools/llm/simple/docs-search-agent-tool.ts +0 -146
  429. package/src/tools/llm/simple/file-tools.ts +0 -1051
  430. package/src/tools/llm/simple/final-response-tool.ts +0 -180
  431. package/src/tools/llm/simple/index.ts +0 -42
  432. package/src/tools/llm/simple/planning-tools.ts +0 -143
  433. package/src/tools/llm/simple/powershell-tool.ts +0 -241
  434. package/src/tools/llm/simple/simple-tool-executor.ts +0 -279
  435. package/src/tools/llm/simple/todo-tools.ts +0 -207
  436. package/src/tools/llm/simple/user-interaction-tools.ts +0 -277
  437. package/src/tools/office/common/constants.ts +0 -335
  438. package/src/tools/office/common/index.ts +0 -133
  439. package/src/tools/office/common/types.ts +0 -286
  440. package/src/tools/office/common/utils.ts +0 -116
  441. package/src/tools/office/excel-client.ts +0 -1336
  442. package/src/tools/office/excel-tools/cells.ts +0 -359
  443. package/src/tools/office/excel-tools/charts.ts +0 -166
  444. package/src/tools/office/excel-tools/comments.ts +0 -155
  445. package/src/tools/office/excel-tools/data-ops.ts +0 -349
  446. package/src/tools/office/excel-tools/export.ts +0 -105
  447. package/src/tools/office/excel-tools/formatting.ts +0 -357
  448. package/src/tools/office/excel-tools/index.ts +0 -55
  449. package/src/tools/office/excel-tools/launch.ts +0 -303
  450. package/src/tools/office/excel-tools/media.ts +0 -117
  451. package/src/tools/office/excel-tools/named-ranges.ts +0 -148
  452. package/src/tools/office/excel-tools/protection.ts +0 -105
  453. package/src/tools/office/excel-tools/rows-columns.ts +0 -386
  454. package/src/tools/office/excel-tools/sheets.ts +0 -228
  455. package/src/tools/office/excel-tools/validation.ts +0 -226
  456. package/src/tools/office/excel-tools.ts +0 -9
  457. package/src/tools/office/index.ts +0 -259
  458. package/src/tools/office/office-client-base.ts +0 -242
  459. package/src/tools/office/office-client.ts +0 -377
  460. package/src/tools/office/powerpoint-client.ts +0 -1498
  461. package/src/tools/office/powerpoint-tools/effects.ts +0 -315
  462. package/src/tools/office/powerpoint-tools/export.ts +0 -138
  463. package/src/tools/office/powerpoint-tools/index.ts +0 -45
  464. package/src/tools/office/powerpoint-tools/launch.ts +0 -263
  465. package/src/tools/office/powerpoint-tools/media.ts +0 -291
  466. package/src/tools/office/powerpoint-tools/notes.ts +0 -220
  467. package/src/tools/office/powerpoint-tools/sections.ts +0 -140
  468. package/src/tools/office/powerpoint-tools/shapes.ts +0 -870
  469. package/src/tools/office/powerpoint-tools/slides.ts +0 -350
  470. package/src/tools/office/powerpoint-tools/tables.ts +0 -182
  471. package/src/tools/office/powerpoint-tools/text.ts +0 -473
  472. package/src/tools/office/powerpoint-tools.ts +0 -9
  473. package/src/tools/office/word-client.ts +0 -1697
  474. package/src/tools/office/word-tools/bookmarks.ts +0 -186
  475. package/src/tools/office/word-tools/comments.ts +0 -185
  476. package/src/tools/office/word-tools/content.ts +0 -229
  477. package/src/tools/office/word-tools/export.ts +0 -97
  478. package/src/tools/office/word-tools/formatting.ts +0 -161
  479. package/src/tools/office/word-tools/headers-footers.ts +0 -155
  480. package/src/tools/office/word-tools/index.ts +0 -57
  481. package/src/tools/office/word-tools/launch.ts +0 -312
  482. package/src/tools/office/word-tools/lists.ts +0 -97
  483. package/src/tools/office/word-tools/navigation.ts +0 -114
  484. package/src/tools/office/word-tools/page-setup.ts +0 -195
  485. package/src/tools/office/word-tools/tables.ts +0 -262
  486. package/src/tools/office/word-tools/text.ts +0 -294
  487. package/src/tools/office/word-tools/undo-redo.ts +0 -97
  488. package/src/tools/office/word-tools/watermarks.ts +0 -105
  489. package/src/tools/office/word-tools.ts +0 -9
  490. package/src/tools/registry.ts +0 -527
  491. package/src/tools/types.ts +0 -231
  492. package/src/types/index.ts +0 -181
  493. package/src/ui/PlanExecuteView.tsx +0 -119
  494. package/src/ui/TodoPanel.tsx +0 -240
  495. package/src/ui/UpdateNotification.tsx +0 -105
  496. package/src/ui/components/ActivityIndicator.tsx +0 -234
  497. package/src/ui/components/CommandBrowser.tsx +0 -114
  498. package/src/ui/components/CustomTextInput.tsx +0 -389
  499. package/src/ui/components/DocsSearchProgress.tsx +0 -85
  500. package/src/ui/components/FileBrowser.tsx +0 -93
  501. package/src/ui/components/LLMSetupWizard.tsx +0 -333
  502. package/src/ui/components/Logo.tsx +0 -125
  503. package/src/ui/components/MarkdownRenderer.tsx +0 -358
  504. package/src/ui/components/ModelSelector.tsx +0 -203
  505. package/src/ui/components/PlanExecuteApp.tsx +0 -2007
  506. package/src/ui/components/ProgressBar.tsx +0 -51
  507. package/src/ui/components/StatusBar.tsx +0 -302
  508. package/src/ui/components/ThinkingIndicator.tsx +0 -120
  509. package/src/ui/components/TodoListView.tsx +0 -140
  510. package/src/ui/components/ToolSelector.tsx +0 -215
  511. package/src/ui/components/dialogs/ApprovalDialog.tsx +0 -259
  512. package/src/ui/components/dialogs/AskUserDialog.tsx +0 -159
  513. package/src/ui/components/dialogs/DocsBrowser.tsx +0 -222
  514. package/src/ui/components/dialogs/SettingsDialog.tsx +0 -939
  515. package/src/ui/components/dialogs/index.ts +0 -13
  516. package/src/ui/components/index.ts +0 -27
  517. package/src/ui/components/panels/LogPanel.tsx +0 -385
  518. package/src/ui/components/panels/SessionPanel.tsx +0 -146
  519. package/src/ui/components/panels/index.ts +0 -13
  520. package/src/ui/components/views/ChatView.tsx +0 -447
  521. package/src/ui/components/views/index.ts +0 -5
  522. package/src/ui/contexts/TokenContext.tsx +0 -139
  523. package/src/ui/hooks/atFileProcessor.ts +0 -167
  524. package/src/ui/hooks/index.ts +0 -11
  525. package/src/ui/hooks/slashCommandProcessor.ts +0 -174
  526. package/src/ui/hooks/useCommandBrowserState.ts +0 -97
  527. package/src/ui/hooks/useFileBrowserState.ts +0 -116
  528. package/src/ui/hooks/useFileList.ts +0 -132
  529. package/src/ui/hooks/useInputHistory.ts +0 -89
  530. package/src/ui/hooks/usePlanExecution.ts +0 -339
  531. package/src/ui/index.ts +0 -10
  532. package/src/ui/ink-entry.tsx +0 -36
  533. package/src/utils/env-filter.ts +0 -164
  534. package/src/utils/file-system.ts +0 -133
  535. package/src/utils/git-utils.ts +0 -30
  536. package/src/utils/json-stream-logger.ts +0 -1259
  537. package/src/utils/logger.ts +0 -2767
  538. package/src/utils/platform-utils.ts +0 -256
  539. package/src/utils/wsl-utils.ts +0 -113
  540. package/tsconfig.electron.json +0 -39
  541. package/tsconfig.json +0 -64
@@ -1,652 +0,0 @@
1
- /**
2
- * Plan Executor
3
- *
4
- * Core business logic for Plan & Execute workflow
5
- * Contains pure logic without React dependencies
6
- *
7
- * All execution is planning-based (Direct Mode removed)
8
- */
9
-
10
- import { Message, TodoItem } from '../types/index.js';
11
- import { LLMClient } from '../core/llm/llm-client.js';
12
- import { PlanningLLM } from '../agents/planner/index.js';
13
- import { sessionManager } from '../core/session/session-manager.js';
14
- import {
15
- CompactManager,
16
- CompactResult,
17
- contextTracker,
18
- buildCompactedMessages,
19
- } from '../core/compact/index.js';
20
- import { configManager } from '../core/config/config-manager.js';
21
- import {
22
- setTodoWriteCallback,
23
- clearTodoCallbacks,
24
- TodoInput,
25
- } from '../tools/llm/simple/todo-tools.js';
26
- import {
27
- setGetTodosCallback,
28
- setFinalResponseCallback,
29
- clearFinalResponseCallbacks,
30
- } from '../tools/llm/simple/final-response-tool.js';
31
- import {
32
- setDocsSearchLLMClientGetter,
33
- clearDocsSearchLLMClientGetter,
34
- } from '../tools/llm/simple/docs-search-agent-tool.js';
35
- import {
36
- emitPlanCreated,
37
- emitTodoStart,
38
- emitTodoComplete,
39
- emitTodoFail,
40
- emitCompact,
41
- emitAssistantResponse,
42
- } from '../tools/llm/simple/file-tools.js';
43
- import { toolRegistry } from '../tools/registry.js';
44
- import { PLAN_EXECUTE_SYSTEM_PROMPT as PLAN_PROMPT } from '../prompts/system/plan-execute.js';
45
- import { GIT_COMMIT_RULES } from '../prompts/shared/git-rules.js';
46
- import { logger } from '../utils/logger.js';
47
- import { getStreamLogger } from '../utils/json-stream-logger.js';
48
- import { detectGitRepo } from '../utils/git-utils.js';
49
-
50
- import type { StateCallbacks } from './types.js';
51
- import { formatErrorMessage, buildTodoContext, findActiveTodo, getTodoStats } from './utils.js';
52
-
53
- /**
54
- * Build system prompt with conditional Git rules
55
- * Git rules are only added when .git folder exists in working directory
56
- */
57
- function buildSystemPrompt(): string {
58
- const isGitRepo = detectGitRepo();
59
- if (isGitRepo) {
60
- return `${PLAN_PROMPT}\n\n${GIT_COMMIT_RULES}`;
61
- }
62
- return PLAN_PROMPT;
63
- }
64
-
65
- /**
66
- * Plan Executor
67
- *
68
- * Execute all requests based on planning
69
- * chatCompletionWithTools handles tool loop internally, no external loop needed
70
- */
71
- export class PlanExecutor {
72
- private currentLLMClient: LLMClient | null = null;
73
-
74
- constructor() {
75
- // No configuration needed - chatCompletionWithTools handles the loop internally
76
- }
77
-
78
- /**
79
- * Plan Mode execution (TODO-based execution)
80
- * Performs Planning and Docs Search Decision in parallel
81
- */
82
- async executePlanMode(
83
- userMessage: string,
84
- llmClient: LLMClient,
85
- messages: Message[],
86
- isInterruptedRef: { current: boolean },
87
- callbacks: StateCallbacks
88
- ): Promise<void> {
89
- const planningStartTime = Date.now();
90
- const streamLogger = getStreamLogger();
91
-
92
- logger.enter('PlanExecutor.executePlanMode', { messageLength: userMessage.length });
93
-
94
- // Log user input (for Ctrl+O LogBrowser chat category)
95
- streamLogger?.logUserInput(userMessage);
96
-
97
- // Log planning start
98
- streamLogger?.logPlanningStart(userMessage, {
99
- messageCount: messages.length,
100
- model: configManager.getCurrentModel()?.name,
101
- });
102
-
103
- // Store LLM client for docs search agent tool
104
- this.currentLLMClient = llmClient;
105
- setDocsSearchLLMClientGetter(() => this.currentLLMClient);
106
-
107
- // Reset state - clear previous TODOs when starting new planning
108
- isInterruptedRef.current = false;
109
- callbacks.setIsInterrupted(false);
110
- callbacks.setTodos([]); // Clear previous TODOs at start
111
- callbacks.setExecutionPhase('planning');
112
- callbacks.setCurrentActivity('Planning tasks');
113
-
114
- // Local TODO state
115
- let currentTodos: TodoItem[] = [];
116
-
117
- try {
118
- if (isInterruptedRef.current) {
119
- throw new Error('INTERRUPTED');
120
- }
121
-
122
- let currentMessages = messages;
123
-
124
- // 1. Generate TODO list with parallel docs search decision
125
- callbacks.setCurrentActivity('Thinking');
126
- const planningLLM = new PlanningLLM(llmClient);
127
-
128
- // Connect ask-user callback for planning phase clarification
129
- if (callbacks.askUser) {
130
- planningLLM.setAskUserCallback(callbacks.askUser);
131
- }
132
-
133
- const planResult = await planningLLM.generateTODOListWithDocsDecision(userMessage, currentMessages);
134
-
135
- // Add clarification messages to history (ask_to_user Q&A from planning phase)
136
- if (planResult.clarificationMessages?.length) {
137
- currentMessages = [...currentMessages, ...planResult.clarificationMessages];
138
- callbacks.setMessages([...currentMessages]);
139
- logger.flow('Added planning clarification messages to history', {
140
- count: planResult.clarificationMessages.length,
141
- });
142
- }
143
-
144
- // Check for direct response (no planning needed)
145
- if (planResult.directResponse) {
146
- logger.flow('Direct response - no execution needed');
147
-
148
- // Log planning end (direct response)
149
- streamLogger?.logPlanningEnd(0, [], true, Date.now() - planningStartTime);
150
-
151
- // Check if last message is already the same user request (avoid duplicate)
152
- const lastMsg = currentMessages[currentMessages.length - 1];
153
- const needsUserMessage = !(lastMsg?.role === 'user' && lastMsg?.content === userMessage);
154
- const updatedMessages: Message[] = needsUserMessage
155
- ? [
156
- ...currentMessages,
157
- { role: 'user' as const, content: userMessage },
158
- { role: 'assistant' as const, content: planResult.directResponse }
159
- ]
160
- : [
161
- ...currentMessages,
162
- { role: 'assistant' as const, content: planResult.directResponse }
163
- ];
164
- // Emit to UI log
165
- emitAssistantResponse(planResult.directResponse);
166
- // Update messages state
167
- callbacks.setMessages([...updatedMessages]);
168
- sessionManager.autoSaveCurrentSession(updatedMessages);
169
- callbacks.setExecutionPhase('idle');
170
- logger.exit('PlanExecutor.executePlanMode', { directResponse: true });
171
- return;
172
- }
173
-
174
- currentTodos = planResult.todos;
175
-
176
- // Log planning end (TODOs created)
177
- streamLogger?.logPlanningEnd(
178
- currentTodos.length,
179
- currentTodos.map(t => ({ id: t.id, title: t.title, status: t.status })),
180
- false,
181
- Date.now() - planningStartTime
182
- );
183
-
184
- logger.vars(
185
- { name: 'todoCount', value: currentTodos.length },
186
- { name: 'docsSearchNeeded', value: planResult.docsSearchNeeded }
187
- );
188
-
189
- // Update UI with TODOs
190
- callbacks.setTodos(currentTodos);
191
- emitPlanCreated(currentTodos.map(t => t.title));
192
-
193
- const planMessage = planResult.docsSearchNeeded
194
- ? `📋 Created ${currentTodos.length} tasks (including docs search). Starting execution...`
195
- : `📋 Created ${currentTodos.length} tasks. Starting execution...`;
196
- // Check if last message is already the same user request (avoid duplicate)
197
- const lastMsgForPlan = currentMessages[currentMessages.length - 1];
198
- const needsUserMessageForPlan = !(lastMsgForPlan?.role === 'user' && lastMsgForPlan?.content === userMessage);
199
- currentMessages = needsUserMessageForPlan
200
- ? [
201
- ...currentMessages,
202
- { role: 'user' as const, content: userMessage },
203
- { role: 'assistant' as const, content: planMessage }
204
- ]
205
- : [
206
- ...currentMessages,
207
- { role: 'assistant' as const, content: planMessage }
208
- ];
209
- callbacks.setMessages(currentMessages);
210
-
211
- // 2. Setup TODO callbacks
212
- this.setupTodoCallbacks(currentTodos, callbacks, (updated) => {
213
- currentTodos = updated;
214
- });
215
-
216
- // 3. Execute (single call - chatCompletionWithTools handles loop internally)
217
- callbacks.setExecutionPhase('executing');
218
- const tools = toolRegistry.getLLMToolDefinitions();
219
-
220
- // Prepare system message (with conditional Git rules if .git exists)
221
- const hasSystemMessage = currentMessages.some(m => m.role === 'system');
222
- if (!hasSystemMessage) {
223
- currentMessages = [
224
- { role: 'system' as const, content: buildSystemPrompt() },
225
- ...currentMessages
226
- ];
227
- }
228
-
229
- if (isInterruptedRef.current) {
230
- throw new Error('INTERRUPTED');
231
- }
232
-
233
- // Update activity
234
- const activeTodo = findActiveTodo(currentTodos);
235
- callbacks.setCurrentActivity(activeTodo?.title || 'Working on tasks');
236
-
237
- // Build TODO context and inject into last user message
238
- const todoContext = buildTodoContext(currentTodos);
239
- const lastUserMsgIndex = currentMessages.map(m => m.role).lastIndexOf('user');
240
- const messagesForLLM = lastUserMsgIndex >= 0
241
- ? currentMessages.map((m, i) =>
242
- i === lastUserMsgIndex
243
- ? { ...m, content: m.content + todoContext }
244
- : m
245
- )
246
- : [...currentMessages, { role: 'user' as const, content: `Execute the TODO list.${todoContext}` }];
247
-
248
- // Single LLM call - continues internally until finish_reason: stop
249
- // Pass pending message callbacks for mid-execution user input injection
250
- const result = await llmClient.chatCompletionWithTools(messagesForLLM, tools, {
251
- getPendingMessage: callbacks.getPendingMessage,
252
- clearPendingMessage: callbacks.clearPendingMessage,
253
- });
254
-
255
- // Update messages (without TODO context)
256
- const newMessages = result.allMessages.slice(currentMessages.length);
257
- currentMessages = [...currentMessages, ...newMessages];
258
- callbacks.setMessages([...currentMessages]);
259
- sessionManager.autoSaveCurrentSession(currentMessages);
260
-
261
- // Check for auto-compact after completion
262
- await this.checkAndPerformAutoCompact(
263
- llmClient,
264
- currentMessages,
265
- currentTodos,
266
- callbacks,
267
- (updated) => { currentMessages = updated; }
268
- );
269
-
270
- // 4. Completion - LLM's final response is already in currentMessages
271
- const stats = getTodoStats(currentTodos);
272
- sessionManager.autoSaveCurrentSession(currentMessages);
273
-
274
- logger.exit('PlanExecutor.executePlanMode', { success: true, ...stats });
275
- } catch (error) {
276
- if (error instanceof Error && error.message === 'INTERRUPTED') {
277
- logger.flow('Plan mode interrupted by user');
278
- callbacks.setMessages((prev: Message[]) => {
279
- const updatedMessages: Message[] = [
280
- ...prev,
281
- { role: 'assistant' as const, content: '⚠️ Execution interrupted.' }
282
- ];
283
- sessionManager.autoSaveCurrentSession(updatedMessages);
284
- return updatedMessages;
285
- });
286
- return;
287
- }
288
-
289
- logger.error('Plan mode execution failed', error as Error);
290
- const errorMessage = formatErrorMessage(error);
291
-
292
- callbacks.setMessages((prev: Message[]) => {
293
- const updatedMessages: Message[] = [
294
- ...prev,
295
- { role: 'assistant' as const, content: `Execution error:\n\n${errorMessage}` }
296
- ];
297
- sessionManager.autoSaveCurrentSession(updatedMessages);
298
- return updatedMessages;
299
- });
300
- } finally {
301
- callbacks.setExecutionPhase('idle');
302
- clearTodoCallbacks();
303
- clearFinalResponseCallbacks();
304
- clearDocsSearchLLMClientGetter();
305
- this.currentLLMClient = null;
306
- }
307
- }
308
-
309
- /**
310
- * Resume TODO execution
311
- */
312
- async resumeTodoExecution(
313
- userMessage: string,
314
- llmClient: LLMClient,
315
- messages: Message[],
316
- todos: TodoItem[],
317
- isInterruptedRef: { current: boolean },
318
- callbacks: StateCallbacks
319
- ): Promise<void> {
320
- logger.enter('PlanExecutor.resumeTodoExecution', { messageLength: userMessage.length, todoCount: todos.length });
321
-
322
- // Log user input (for Ctrl+O LogBrowser chat category)
323
- const streamLogger = getStreamLogger();
324
- streamLogger?.logUserInput(userMessage);
325
-
326
- // Store LLM client for docs search agent tool
327
- this.currentLLMClient = llmClient;
328
- setDocsSearchLLMClientGetter(() => this.currentLLMClient);
329
-
330
- // Reset state
331
- isInterruptedRef.current = false;
332
- callbacks.setIsInterrupted(false);
333
- callbacks.setExecutionPhase('executing');
334
- callbacks.setCurrentActivity('Resuming execution');
335
-
336
- let currentTodos = [...todos];
337
-
338
- try {
339
- // Add user message
340
- let currentMessages: Message[] = [
341
- ...messages,
342
- { role: 'user' as const, content: userMessage }
343
- ];
344
- callbacks.setMessages(currentMessages);
345
-
346
- // Setup TODO callbacks
347
- this.setupTodoCallbacks(currentTodos, callbacks, (updated) => {
348
- currentTodos = updated;
349
- });
350
-
351
- // Get tools from registry
352
- const tools = toolRegistry.getLLMToolDefinitions();
353
-
354
- // Ensure system message (with conditional Git rules if .git exists)
355
- const hasSystemMessage = currentMessages.some(m => m.role === 'system');
356
- if (!hasSystemMessage) {
357
- currentMessages = [
358
- { role: 'system' as const, content: buildSystemPrompt() },
359
- ...currentMessages
360
- ];
361
- }
362
-
363
- if (isInterruptedRef.current) {
364
- throw new Error('INTERRUPTED');
365
- }
366
-
367
- const activeTodo = findActiveTodo(currentTodos);
368
- callbacks.setCurrentActivity(activeTodo?.title || 'Working on tasks');
369
-
370
- // Build TODO context
371
- const todoContext = buildTodoContext(currentTodos);
372
-
373
- // Create messages with TODO context
374
- const lastUserMsgIndex = currentMessages.map(m => m.role).lastIndexOf('user');
375
- const messagesForLLM = lastUserMsgIndex >= 0
376
- ? currentMessages.map((m, i) =>
377
- i === lastUserMsgIndex
378
- ? { ...m, content: m.content + todoContext }
379
- : m
380
- )
381
- : [...currentMessages, { role: 'user' as const, content: `Resume the TODO list.${todoContext}` }];
382
-
383
- // Single LLM call - continues internally until finish_reason: stop
384
- // Pass pending message callbacks for mid-execution user input injection
385
- const result = await llmClient.chatCompletionWithTools(messagesForLLM, tools, {
386
- getPendingMessage: callbacks.getPendingMessage,
387
- clearPendingMessage: callbacks.clearPendingMessage,
388
- });
389
-
390
- // Update messages
391
- const newMessages = result.allMessages.slice(currentMessages.length);
392
- currentMessages = [...currentMessages, ...newMessages];
393
- callbacks.setMessages([...currentMessages]);
394
- sessionManager.autoSaveCurrentSession(currentMessages);
395
-
396
- // Check for auto-compact
397
- await this.checkAndPerformAutoCompact(
398
- llmClient,
399
- currentMessages,
400
- currentTodos,
401
- callbacks,
402
- (updated) => { currentMessages = updated; }
403
- );
404
-
405
- // Completion - LLM's final response is already in currentMessages
406
- sessionManager.autoSaveCurrentSession(currentMessages);
407
-
408
- logger.exit('PlanExecutor.resumeTodoExecution', { success: true });
409
- } catch (error) {
410
- if (error instanceof Error && error.message === 'INTERRUPTED') {
411
- logger.flow('Resume interrupted by user');
412
- return;
413
- }
414
-
415
- logger.error('Resume execution failed', error as Error);
416
- callbacks.setMessages((prev: Message[]) => [...prev, {
417
- role: 'assistant' as const,
418
- content: `Execution error:\n\n${error instanceof Error ? error.message : 'Unknown error'}`
419
- }]);
420
- } finally {
421
- callbacks.setExecutionPhase('idle');
422
- clearTodoCallbacks();
423
- clearFinalResponseCallbacks();
424
- clearDocsSearchLLMClientGetter();
425
- this.currentLLMClient = null;
426
- }
427
- }
428
-
429
- /**
430
- * Auto Mode execution (direct execution based on planning)
431
- * Classification logic removed - all requests handled via Plan Mode
432
- */
433
- async executeAutoMode(
434
- userMessage: string,
435
- llmClient: LLMClient,
436
- messages: Message[],
437
- _todos: TodoItem[],
438
- isInterruptedRef: { current: boolean },
439
- callbacks: StateCallbacks
440
- ): Promise<void> {
441
- logger.enter('PlanExecutor.executeAutoMode', { messageLength: userMessage.length });
442
-
443
- // All requests are now handled via Plan Mode
444
- // Classification and Direct Mode have been removed
445
- await this.executePlanMode(userMessage, llmClient, messages, isInterruptedRef, callbacks);
446
-
447
- logger.exit('PlanExecutor.executeAutoMode');
448
- }
449
-
450
- /**
451
- * Perform conversation compaction
452
- */
453
- async performCompact(
454
- llmClient: LLMClient,
455
- messages: Message[],
456
- todos: TodoItem[],
457
- callbacks: StateCallbacks
458
- ): Promise<CompactResult> {
459
- logger.enter('PlanExecutor.performCompact', { messageCount: messages.length });
460
- callbacks.setExecutionPhase('compacting');
461
- callbacks.setCurrentActivity('Compacting conversation');
462
-
463
- try {
464
- const compactManager = new CompactManager(llmClient);
465
-
466
- const result = await compactManager.compact(messages, {
467
- todos,
468
- workingDirectory: process.cwd(),
469
- currentModel: configManager.getCurrentModel()?.name,
470
- recentFiles: contextTracker.getRecentFiles(),
471
- });
472
-
473
- if (result.success && result.compactedSummary) {
474
- const lastTwoMessages = messages.slice(-2);
475
-
476
- const compactedBase = buildCompactedMessages(result.compactedSummary, {
477
- workingDirectory: process.cwd(),
478
- });
479
-
480
- const finalMessages = [...compactedBase, ...lastTwoMessages];
481
-
482
- // Estimate token count for compacted messages (for UI display)
483
- const totalContent = finalMessages
484
- .map(m => typeof m.content === 'string' ? m.content : JSON.stringify(m.content))
485
- .join('');
486
- const estimatedTokens = contextTracker.estimateTokens(totalContent);
487
-
488
- callbacks.setMessages(finalMessages);
489
- contextTracker.reset(estimatedTokens);
490
- sessionManager.autoSaveCurrentSession(finalMessages);
491
-
492
- emitCompact(result.originalMessageCount, finalMessages.length);
493
-
494
- logger.flow('Compact completed successfully', { preservedMessages: 2 });
495
-
496
- // Return with compactedMessages for caller to use
497
- logger.exit('PlanExecutor.performCompact', { success: true });
498
- return {
499
- ...result,
500
- compactedMessages: finalMessages,
501
- };
502
- }
503
-
504
- logger.exit('PlanExecutor.performCompact', { success: result.success });
505
- return result;
506
-
507
- } catch (error) {
508
- logger.error('Compact failed', error as Error);
509
- return {
510
- success: false,
511
- originalMessageCount: messages.length,
512
- newMessageCount: messages.length,
513
- error: error instanceof Error ? error.message : 'Unknown error',
514
- };
515
- } finally {
516
- callbacks.setExecutionPhase('idle');
517
- callbacks.setCurrentActivity('Idle');
518
- }
519
- }
520
-
521
- /**
522
- * Check if auto-compaction is needed
523
- */
524
- shouldAutoCompact(): boolean {
525
- const model = configManager.getCurrentModel();
526
- const maxTokens = model?.maxTokens || 128000;
527
- return contextTracker.shouldTriggerAutoCompact(maxTokens);
528
- }
529
-
530
- /**
531
- * Return context remaining percentage
532
- */
533
- getContextRemainingPercent(): number {
534
- const model = configManager.getCurrentModel();
535
- const maxTokens = model?.maxTokens || 128000;
536
- const usage = contextTracker.getContextUsage(maxTokens);
537
- return usage.remainingPercentage;
538
- }
539
-
540
- /**
541
- * Return context usage information
542
- */
543
- getContextUsageInfo(): { tokens: number; percent: number } {
544
- const model = configManager.getCurrentModel();
545
- const maxTokens = model?.maxTokens || 128000;
546
- const usage = contextTracker.getContextUsage(maxTokens);
547
- return {
548
- tokens: usage.currentTokens,
549
- percent: usage.usagePercentage,
550
- };
551
- }
552
-
553
- /**
554
- * Setup TODO callbacks (internal helper)
555
- * write_todos: Replace entire list approach
556
- * final_response: Deliver final response (requires all TODOs completed)
557
- */
558
- private setupTodoCallbacks(
559
- currentTodos: TodoItem[],
560
- callbacks: StateCallbacks,
561
- updateLocalTodos: (todos: TodoItem[]) => void
562
- ): void {
563
- // Mutable reference for getTodos callback
564
- let todosRef = currentTodos;
565
-
566
- // write_todos callback: Replace entire list
567
- setTodoWriteCallback(async (newTodos: TodoInput[]) => {
568
- // Find status changes for UI events
569
- const oldStatusMap = new Map(todosRef.map(t => [t.id, t.status]));
570
-
571
- // Convert to TodoItem format
572
- const updatedTodos: TodoItem[] = newTodos.map(t => ({
573
- id: t.id,
574
- title: t.title,
575
- status: t.status,
576
- }));
577
-
578
- // Emit events for status changes
579
- for (const todo of updatedTodos) {
580
- const oldStatus = oldStatusMap.get(todo.id);
581
- if (oldStatus !== todo.status) {
582
- if (todo.status === 'completed') {
583
- emitTodoComplete(todo.title);
584
- } else if (todo.status === 'failed') {
585
- emitTodoFail(todo.title);
586
- } else if (todo.status === 'in_progress') {
587
- emitTodoStart(todo.title);
588
- }
589
- }
590
- }
591
-
592
- // Update both local ref and external state
593
- todosRef = updatedTodos;
594
- updateLocalTodos(updatedTodos);
595
- callbacks.setTodos([...updatedTodos]);
596
-
597
- return true;
598
- });
599
-
600
- // getTodos callback for final_response tool
601
- setGetTodosCallback(() => todosRef);
602
-
603
- // finalResponse callback - emit as assistant response
604
- setFinalResponseCallback((message: string) => {
605
- emitAssistantResponse(message);
606
- });
607
- }
608
-
609
- /**
610
- * Check and perform auto-compaction (internal helper)
611
- */
612
- private async checkAndPerformAutoCompact(
613
- llmClient: LLMClient,
614
- currentMessages: Message[],
615
- currentTodos: TodoItem[],
616
- callbacks: StateCallbacks,
617
- updateLocalMessages: (messages: Message[]) => void
618
- ): Promise<void> {
619
- const model = configManager.getCurrentModel();
620
- const maxTokens = model?.maxTokens || 128000;
621
-
622
- if (contextTracker.shouldTriggerAutoCompact(maxTokens)) {
623
- logger.flow('Auto-compact triggered during execution');
624
- callbacks.setExecutionPhase('compacting');
625
- callbacks.setCurrentActivity('Compacting context');
626
-
627
- const compactManager = new CompactManager(llmClient);
628
- const compactResult = await compactManager.compact(currentMessages, {
629
- todos: currentTodos,
630
- workingDirectory: process.cwd(),
631
- });
632
-
633
- if (compactResult.success && compactResult.compactedSummary) {
634
- const lastTwoMessages = currentMessages.slice(-2);
635
- const newMessages = [
636
- ...buildCompactedMessages(compactResult.compactedSummary, {
637
- workingDirectory: process.cwd(),
638
- }),
639
- ...lastTwoMessages,
640
- ];
641
- updateLocalMessages(newMessages);
642
- callbacks.setMessages([...newMessages]);
643
- emitCompact(compactResult.originalMessageCount, compactResult.newMessageCount);
644
- }
645
-
646
- callbacks.setExecutionPhase('executing');
647
- }
648
- }
649
- }
650
-
651
- // Singleton instance (optional use)
652
- export const planExecutor = new PlanExecutor();