orquesta-cli 0.1.13 → 0.1.14

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 (539) 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 +373 -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.map +0 -1
  60. package/dist/core/git-auto-updater.js.map +0 -1
  61. package/dist/core/llm/index.d.ts.map +0 -1
  62. package/dist/core/llm/index.js.map +0 -1
  63. package/dist/core/llm/llm-client.d.ts.map +0 -1
  64. package/dist/core/llm/llm-client.js.map +0 -1
  65. package/dist/core/session/index.d.ts.map +0 -1
  66. package/dist/core/session/index.js.map +0 -1
  67. package/dist/core/session/session-manager.d.ts.map +0 -1
  68. package/dist/core/session/session-manager.js.map +0 -1
  69. package/dist/core/slash-command-handler.d.ts.map +0 -1
  70. package/dist/core/slash-command-handler.js.map +0 -1
  71. package/dist/core/usage-tracker.d.ts.map +0 -1
  72. package/dist/core/usage-tracker.js.map +0 -1
  73. package/dist/errors/base.d.ts.map +0 -1
  74. package/dist/errors/base.js.map +0 -1
  75. package/dist/errors/file.d.ts.map +0 -1
  76. package/dist/errors/file.js.map +0 -1
  77. package/dist/errors/index.d.ts.map +0 -1
  78. package/dist/errors/index.js.map +0 -1
  79. package/dist/errors/llm.d.ts.map +0 -1
  80. package/dist/errors/llm.js.map +0 -1
  81. package/dist/errors/network.d.ts.map +0 -1
  82. package/dist/errors/network.js.map +0 -1
  83. package/dist/errors/validation.d.ts.map +0 -1
  84. package/dist/errors/validation.js.map +0 -1
  85. package/dist/eval/eval-runner.d.ts.map +0 -1
  86. package/dist/eval/eval-runner.js.map +0 -1
  87. package/dist/eval/index.d.ts.map +0 -1
  88. package/dist/eval/index.js.map +0 -1
  89. package/dist/eval/types.d.ts.map +0 -1
  90. package/dist/eval/types.js.map +0 -1
  91. package/dist/index.d.ts.map +0 -1
  92. package/dist/index.js.map +0 -1
  93. package/dist/orchestration/index.d.ts.map +0 -1
  94. package/dist/orchestration/index.js.map +0 -1
  95. package/dist/orchestration/plan-executor.d.ts.map +0 -1
  96. package/dist/orchestration/plan-executor.js.map +0 -1
  97. package/dist/orchestration/types.d.ts.map +0 -1
  98. package/dist/orchestration/types.js.map +0 -1
  99. package/dist/orchestration/utils.d.ts.map +0 -1
  100. package/dist/orchestration/utils.js.map +0 -1
  101. package/dist/orquesta/connection.d.ts.map +0 -1
  102. package/dist/orquesta/connection.js.map +0 -1
  103. package/dist/prompts/agents/docs-search-decision.d.ts.map +0 -1
  104. package/dist/prompts/agents/docs-search-decision.js.map +0 -1
  105. package/dist/prompts/agents/docs-search.d.ts.map +0 -1
  106. package/dist/prompts/agents/docs-search.js.map +0 -1
  107. package/dist/prompts/agents/planning.d.ts.map +0 -1
  108. package/dist/prompts/agents/planning.js.map +0 -1
  109. package/dist/prompts/index.d.ts.map +0 -1
  110. package/dist/prompts/index.js.map +0 -1
  111. package/dist/prompts/shared/codebase-rules.d.ts.map +0 -1
  112. package/dist/prompts/shared/codebase-rules.js.map +0 -1
  113. package/dist/prompts/shared/git-rules.d.ts.map +0 -1
  114. package/dist/prompts/shared/git-rules.js.map +0 -1
  115. package/dist/prompts/shared/language-rules.d.ts.map +0 -1
  116. package/dist/prompts/shared/language-rules.js.map +0 -1
  117. package/dist/prompts/shared/tool-usage.d.ts.map +0 -1
  118. package/dist/prompts/shared/tool-usage.js.map +0 -1
  119. package/dist/prompts/system/compact.d.ts.map +0 -1
  120. package/dist/prompts/system/compact.js.map +0 -1
  121. package/dist/prompts/system/plan-execute.d.ts.map +0 -1
  122. package/dist/prompts/system/plan-execute.js.map +0 -1
  123. package/dist/tools/browser/browser-client.d.ts.map +0 -1
  124. package/dist/tools/browser/browser-client.js.map +0 -1
  125. package/dist/tools/browser/browser-tools.d.ts.map +0 -1
  126. package/dist/tools/browser/browser-tools.js.map +0 -1
  127. package/dist/tools/browser/index.d.ts.map +0 -1
  128. package/dist/tools/browser/index.js.map +0 -1
  129. package/dist/tools/index.d.ts.map +0 -1
  130. package/dist/tools/index.js.map +0 -1
  131. package/dist/tools/llm/agents/docs-search-tools.d.ts.map +0 -1
  132. package/dist/tools/llm/agents/docs-search-tools.js.map +0 -1
  133. package/dist/tools/llm/agents/index.d.ts.map +0 -1
  134. package/dist/tools/llm/agents/index.js.map +0 -1
  135. package/dist/tools/llm/index.d.ts.map +0 -1
  136. package/dist/tools/llm/index.js.map +0 -1
  137. package/dist/tools/llm/simple/ask-user-tool.d.ts.map +0 -1
  138. package/dist/tools/llm/simple/ask-user-tool.js.map +0 -1
  139. package/dist/tools/llm/simple/background-bash-tool.d.ts.map +0 -1
  140. package/dist/tools/llm/simple/background-bash-tool.js.map +0 -1
  141. package/dist/tools/llm/simple/background-powershell-tool.d.ts.map +0 -1
  142. package/dist/tools/llm/simple/background-powershell-tool.js.map +0 -1
  143. package/dist/tools/llm/simple/bash-tool.d.ts.map +0 -1
  144. package/dist/tools/llm/simple/bash-tool.js.map +0 -1
  145. package/dist/tools/llm/simple/docs-search-agent-tool.d.ts.map +0 -1
  146. package/dist/tools/llm/simple/docs-search-agent-tool.js.map +0 -1
  147. package/dist/tools/llm/simple/file-tools.d.ts.map +0 -1
  148. package/dist/tools/llm/simple/file-tools.js.map +0 -1
  149. package/dist/tools/llm/simple/final-response-tool.d.ts.map +0 -1
  150. package/dist/tools/llm/simple/final-response-tool.js.map +0 -1
  151. package/dist/tools/llm/simple/index.d.ts.map +0 -1
  152. package/dist/tools/llm/simple/index.js.map +0 -1
  153. package/dist/tools/llm/simple/planning-tools.d.ts.map +0 -1
  154. package/dist/tools/llm/simple/planning-tools.js.map +0 -1
  155. package/dist/tools/llm/simple/powershell-tool.d.ts.map +0 -1
  156. package/dist/tools/llm/simple/powershell-tool.js.map +0 -1
  157. package/dist/tools/llm/simple/simple-tool-executor.d.ts.map +0 -1
  158. package/dist/tools/llm/simple/simple-tool-executor.js.map +0 -1
  159. package/dist/tools/llm/simple/todo-tools.d.ts.map +0 -1
  160. package/dist/tools/llm/simple/todo-tools.js.map +0 -1
  161. package/dist/tools/llm/simple/user-interaction-tools.d.ts.map +0 -1
  162. package/dist/tools/llm/simple/user-interaction-tools.js.map +0 -1
  163. package/dist/tools/office/common/constants.d.ts.map +0 -1
  164. package/dist/tools/office/common/constants.js.map +0 -1
  165. package/dist/tools/office/common/index.d.ts.map +0 -1
  166. package/dist/tools/office/common/index.js.map +0 -1
  167. package/dist/tools/office/common/types.d.ts.map +0 -1
  168. package/dist/tools/office/common/types.js.map +0 -1
  169. package/dist/tools/office/common/utils.d.ts.map +0 -1
  170. package/dist/tools/office/common/utils.js.map +0 -1
  171. package/dist/tools/office/excel-client.d.ts.map +0 -1
  172. package/dist/tools/office/excel-client.js.map +0 -1
  173. package/dist/tools/office/excel-tools/cells.d.ts.map +0 -1
  174. package/dist/tools/office/excel-tools/cells.js.map +0 -1
  175. package/dist/tools/office/excel-tools/charts.d.ts.map +0 -1
  176. package/dist/tools/office/excel-tools/charts.js.map +0 -1
  177. package/dist/tools/office/excel-tools/comments.d.ts.map +0 -1
  178. package/dist/tools/office/excel-tools/comments.js.map +0 -1
  179. package/dist/tools/office/excel-tools/data-ops.d.ts.map +0 -1
  180. package/dist/tools/office/excel-tools/data-ops.js.map +0 -1
  181. package/dist/tools/office/excel-tools/export.d.ts.map +0 -1
  182. package/dist/tools/office/excel-tools/export.js.map +0 -1
  183. package/dist/tools/office/excel-tools/formatting.d.ts.map +0 -1
  184. package/dist/tools/office/excel-tools/formatting.js.map +0 -1
  185. package/dist/tools/office/excel-tools/index.d.ts.map +0 -1
  186. package/dist/tools/office/excel-tools/index.js.map +0 -1
  187. package/dist/tools/office/excel-tools/launch.d.ts.map +0 -1
  188. package/dist/tools/office/excel-tools/launch.js.map +0 -1
  189. package/dist/tools/office/excel-tools/media.d.ts.map +0 -1
  190. package/dist/tools/office/excel-tools/media.js.map +0 -1
  191. package/dist/tools/office/excel-tools/named-ranges.d.ts.map +0 -1
  192. package/dist/tools/office/excel-tools/named-ranges.js.map +0 -1
  193. package/dist/tools/office/excel-tools/protection.d.ts.map +0 -1
  194. package/dist/tools/office/excel-tools/protection.js.map +0 -1
  195. package/dist/tools/office/excel-tools/rows-columns.d.ts.map +0 -1
  196. package/dist/tools/office/excel-tools/rows-columns.js.map +0 -1
  197. package/dist/tools/office/excel-tools/sheets.d.ts.map +0 -1
  198. package/dist/tools/office/excel-tools/sheets.js.map +0 -1
  199. package/dist/tools/office/excel-tools/validation.d.ts.map +0 -1
  200. package/dist/tools/office/excel-tools/validation.js.map +0 -1
  201. package/dist/tools/office/excel-tools.d.ts.map +0 -1
  202. package/dist/tools/office/excel-tools.js.map +0 -1
  203. package/dist/tools/office/index.d.ts.map +0 -1
  204. package/dist/tools/office/index.js.map +0 -1
  205. package/dist/tools/office/office-client-base.d.ts.map +0 -1
  206. package/dist/tools/office/office-client-base.js.map +0 -1
  207. package/dist/tools/office/office-client.d.ts.map +0 -1
  208. package/dist/tools/office/office-client.js.map +0 -1
  209. package/dist/tools/office/powerpoint-client.d.ts.map +0 -1
  210. package/dist/tools/office/powerpoint-client.js.map +0 -1
  211. package/dist/tools/office/powerpoint-tools/effects.d.ts.map +0 -1
  212. package/dist/tools/office/powerpoint-tools/effects.js.map +0 -1
  213. package/dist/tools/office/powerpoint-tools/export.d.ts.map +0 -1
  214. package/dist/tools/office/powerpoint-tools/export.js.map +0 -1
  215. package/dist/tools/office/powerpoint-tools/index.d.ts.map +0 -1
  216. package/dist/tools/office/powerpoint-tools/index.js.map +0 -1
  217. package/dist/tools/office/powerpoint-tools/launch.d.ts.map +0 -1
  218. package/dist/tools/office/powerpoint-tools/launch.js.map +0 -1
  219. package/dist/tools/office/powerpoint-tools/media.d.ts.map +0 -1
  220. package/dist/tools/office/powerpoint-tools/media.js.map +0 -1
  221. package/dist/tools/office/powerpoint-tools/notes.d.ts.map +0 -1
  222. package/dist/tools/office/powerpoint-tools/notes.js.map +0 -1
  223. package/dist/tools/office/powerpoint-tools/sections.d.ts.map +0 -1
  224. package/dist/tools/office/powerpoint-tools/sections.js.map +0 -1
  225. package/dist/tools/office/powerpoint-tools/shapes.d.ts.map +0 -1
  226. package/dist/tools/office/powerpoint-tools/shapes.js.map +0 -1
  227. package/dist/tools/office/powerpoint-tools/slides.d.ts.map +0 -1
  228. package/dist/tools/office/powerpoint-tools/slides.js.map +0 -1
  229. package/dist/tools/office/powerpoint-tools/tables.d.ts.map +0 -1
  230. package/dist/tools/office/powerpoint-tools/tables.js.map +0 -1
  231. package/dist/tools/office/powerpoint-tools/text.d.ts.map +0 -1
  232. package/dist/tools/office/powerpoint-tools/text.js.map +0 -1
  233. package/dist/tools/office/powerpoint-tools.d.ts.map +0 -1
  234. package/dist/tools/office/powerpoint-tools.js.map +0 -1
  235. package/dist/tools/office/word-client.d.ts.map +0 -1
  236. package/dist/tools/office/word-client.js.map +0 -1
  237. package/dist/tools/office/word-tools/bookmarks.d.ts.map +0 -1
  238. package/dist/tools/office/word-tools/bookmarks.js.map +0 -1
  239. package/dist/tools/office/word-tools/comments.d.ts.map +0 -1
  240. package/dist/tools/office/word-tools/comments.js.map +0 -1
  241. package/dist/tools/office/word-tools/content.d.ts.map +0 -1
  242. package/dist/tools/office/word-tools/content.js.map +0 -1
  243. package/dist/tools/office/word-tools/export.d.ts.map +0 -1
  244. package/dist/tools/office/word-tools/export.js.map +0 -1
  245. package/dist/tools/office/word-tools/formatting.d.ts.map +0 -1
  246. package/dist/tools/office/word-tools/formatting.js.map +0 -1
  247. package/dist/tools/office/word-tools/headers-footers.d.ts.map +0 -1
  248. package/dist/tools/office/word-tools/headers-footers.js.map +0 -1
  249. package/dist/tools/office/word-tools/index.d.ts.map +0 -1
  250. package/dist/tools/office/word-tools/index.js.map +0 -1
  251. package/dist/tools/office/word-tools/launch.d.ts.map +0 -1
  252. package/dist/tools/office/word-tools/launch.js.map +0 -1
  253. package/dist/tools/office/word-tools/lists.d.ts.map +0 -1
  254. package/dist/tools/office/word-tools/lists.js.map +0 -1
  255. package/dist/tools/office/word-tools/navigation.d.ts.map +0 -1
  256. package/dist/tools/office/word-tools/navigation.js.map +0 -1
  257. package/dist/tools/office/word-tools/page-setup.d.ts.map +0 -1
  258. package/dist/tools/office/word-tools/page-setup.js.map +0 -1
  259. package/dist/tools/office/word-tools/tables.d.ts.map +0 -1
  260. package/dist/tools/office/word-tools/tables.js.map +0 -1
  261. package/dist/tools/office/word-tools/text.d.ts.map +0 -1
  262. package/dist/tools/office/word-tools/text.js.map +0 -1
  263. package/dist/tools/office/word-tools/undo-redo.d.ts.map +0 -1
  264. package/dist/tools/office/word-tools/undo-redo.js.map +0 -1
  265. package/dist/tools/office/word-tools/watermarks.d.ts.map +0 -1
  266. package/dist/tools/office/word-tools/watermarks.js.map +0 -1
  267. package/dist/tools/office/word-tools.d.ts.map +0 -1
  268. package/dist/tools/office/word-tools.js.map +0 -1
  269. package/dist/tools/registry.d.ts.map +0 -1
  270. package/dist/tools/registry.js.map +0 -1
  271. package/dist/tools/types.d.ts.map +0 -1
  272. package/dist/tools/types.js.map +0 -1
  273. package/dist/types/index.d.ts.map +0 -1
  274. package/dist/types/index.js.map +0 -1
  275. package/dist/ui/PlanExecuteView.d.ts.map +0 -1
  276. package/dist/ui/PlanExecuteView.js.map +0 -1
  277. package/dist/ui/TodoPanel.d.ts.map +0 -1
  278. package/dist/ui/TodoPanel.js.map +0 -1
  279. package/dist/ui/UpdateNotification.d.ts.map +0 -1
  280. package/dist/ui/UpdateNotification.js.map +0 -1
  281. package/dist/ui/components/ActivityIndicator.d.ts.map +0 -1
  282. package/dist/ui/components/ActivityIndicator.js.map +0 -1
  283. package/dist/ui/components/CommandBrowser.d.ts.map +0 -1
  284. package/dist/ui/components/CommandBrowser.js.map +0 -1
  285. package/dist/ui/components/CustomTextInput.d.ts.map +0 -1
  286. package/dist/ui/components/CustomTextInput.js.map +0 -1
  287. package/dist/ui/components/DocsSearchProgress.d.ts.map +0 -1
  288. package/dist/ui/components/DocsSearchProgress.js.map +0 -1
  289. package/dist/ui/components/FileBrowser.d.ts.map +0 -1
  290. package/dist/ui/components/FileBrowser.js.map +0 -1
  291. package/dist/ui/components/LLMSetupWizard.d.ts.map +0 -1
  292. package/dist/ui/components/LLMSetupWizard.js.map +0 -1
  293. package/dist/ui/components/Logo.d.ts.map +0 -1
  294. package/dist/ui/components/Logo.js.map +0 -1
  295. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  296. package/dist/ui/components/MarkdownRenderer.js.map +0 -1
  297. package/dist/ui/components/ModelSelector.d.ts.map +0 -1
  298. package/dist/ui/components/ModelSelector.js.map +0 -1
  299. package/dist/ui/components/PlanExecuteApp.d.ts.map +0 -1
  300. package/dist/ui/components/PlanExecuteApp.js.map +0 -1
  301. package/dist/ui/components/ProgressBar.d.ts.map +0 -1
  302. package/dist/ui/components/ProgressBar.js.map +0 -1
  303. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  304. package/dist/ui/components/StatusBar.js.map +0 -1
  305. package/dist/ui/components/ThinkingIndicator.d.ts.map +0 -1
  306. package/dist/ui/components/ThinkingIndicator.js.map +0 -1
  307. package/dist/ui/components/TodoListView.d.ts.map +0 -1
  308. package/dist/ui/components/TodoListView.js.map +0 -1
  309. package/dist/ui/components/ToolSelector.d.ts.map +0 -1
  310. package/dist/ui/components/ToolSelector.js.map +0 -1
  311. package/dist/ui/components/dialogs/ApprovalDialog.d.ts.map +0 -1
  312. package/dist/ui/components/dialogs/ApprovalDialog.js.map +0 -1
  313. package/dist/ui/components/dialogs/AskUserDialog.d.ts.map +0 -1
  314. package/dist/ui/components/dialogs/AskUserDialog.js.map +0 -1
  315. package/dist/ui/components/dialogs/DocsBrowser.d.ts.map +0 -1
  316. package/dist/ui/components/dialogs/DocsBrowser.js.map +0 -1
  317. package/dist/ui/components/dialogs/SettingsDialog.d.ts.map +0 -1
  318. package/dist/ui/components/dialogs/SettingsDialog.js.map +0 -1
  319. package/dist/ui/components/dialogs/index.d.ts.map +0 -1
  320. package/dist/ui/components/dialogs/index.js.map +0 -1
  321. package/dist/ui/components/index.d.ts.map +0 -1
  322. package/dist/ui/components/index.js.map +0 -1
  323. package/dist/ui/components/panels/LogPanel.d.ts.map +0 -1
  324. package/dist/ui/components/panels/LogPanel.js.map +0 -1
  325. package/dist/ui/components/panels/SessionPanel.d.ts.map +0 -1
  326. package/dist/ui/components/panels/SessionPanel.js.map +0 -1
  327. package/dist/ui/components/panels/index.d.ts.map +0 -1
  328. package/dist/ui/components/panels/index.js.map +0 -1
  329. package/dist/ui/components/views/ChatView.d.ts.map +0 -1
  330. package/dist/ui/components/views/ChatView.js.map +0 -1
  331. package/dist/ui/components/views/index.d.ts.map +0 -1
  332. package/dist/ui/components/views/index.js.map +0 -1
  333. package/dist/ui/contexts/TokenContext.d.ts.map +0 -1
  334. package/dist/ui/contexts/TokenContext.js.map +0 -1
  335. package/dist/ui/hooks/atFileProcessor.d.ts.map +0 -1
  336. package/dist/ui/hooks/atFileProcessor.js.map +0 -1
  337. package/dist/ui/hooks/index.d.ts.map +0 -1
  338. package/dist/ui/hooks/index.js.map +0 -1
  339. package/dist/ui/hooks/slashCommandProcessor.d.ts.map +0 -1
  340. package/dist/ui/hooks/slashCommandProcessor.js.map +0 -1
  341. package/dist/ui/hooks/useCommandBrowserState.d.ts.map +0 -1
  342. package/dist/ui/hooks/useCommandBrowserState.js.map +0 -1
  343. package/dist/ui/hooks/useFileBrowserState.d.ts.map +0 -1
  344. package/dist/ui/hooks/useFileBrowserState.js.map +0 -1
  345. package/dist/ui/hooks/useFileList.d.ts.map +0 -1
  346. package/dist/ui/hooks/useFileList.js.map +0 -1
  347. package/dist/ui/hooks/useInputHistory.d.ts.map +0 -1
  348. package/dist/ui/hooks/useInputHistory.js.map +0 -1
  349. package/dist/ui/hooks/usePlanExecution.d.ts.map +0 -1
  350. package/dist/ui/hooks/usePlanExecution.js.map +0 -1
  351. package/dist/ui/index.d.ts.map +0 -1
  352. package/dist/ui/index.js.map +0 -1
  353. package/dist/ui/ink-entry.d.ts.map +0 -1
  354. package/dist/ui/ink-entry.js.map +0 -1
  355. package/dist/utils/env-filter.d.ts.map +0 -1
  356. package/dist/utils/env-filter.js.map +0 -1
  357. package/dist/utils/file-system.d.ts.map +0 -1
  358. package/dist/utils/file-system.js.map +0 -1
  359. package/dist/utils/git-utils.d.ts.map +0 -1
  360. package/dist/utils/git-utils.js.map +0 -1
  361. package/dist/utils/json-stream-logger.d.ts.map +0 -1
  362. package/dist/utils/json-stream-logger.js.map +0 -1
  363. package/dist/utils/logger.d.ts.map +0 -1
  364. package/dist/utils/logger.js.map +0 -1
  365. package/dist/utils/platform-utils.d.ts.map +0 -1
  366. package/dist/utils/platform-utils.js.map +0 -1
  367. package/dist/utils/wsl-utils.d.ts.map +0 -1
  368. package/dist/utils/wsl-utils.js.map +0 -1
  369. package/electron.vite.config.ts +0 -63
  370. package/google374b9eba0c52b043.html +0 -1
  371. package/src/agents/base/base-agent.ts +0 -159
  372. package/src/agents/docs-search/index.ts +0 -365
  373. package/src/agents/index.ts +0 -34
  374. package/src/agents/planner/index.ts +0 -544
  375. package/src/cli.ts +0 -201
  376. package/src/constants.ts +0 -47
  377. package/src/core/compact/compact-manager.ts +0 -160
  378. package/src/core/compact/compact-prompts.ts +0 -150
  379. package/src/core/compact/context-tracker.ts +0 -164
  380. package/src/core/compact/index.ts +0 -25
  381. package/src/core/config/config-manager.ts +0 -460
  382. package/src/core/config/index.ts +0 -5
  383. package/src/core/docs-manager.ts +0 -678
  384. package/src/core/llm/index.ts +0 -7
  385. package/src/core/llm/llm-client.ts +0 -1550
  386. package/src/core/session/index.ts +0 -5
  387. package/src/core/session/session-manager.ts +0 -464
  388. package/src/core/slash-command-handler.ts +0 -410
  389. package/src/core/usage-tracker.ts +0 -438
  390. package/src/errors/base.ts +0 -81
  391. package/src/errors/file.ts +0 -183
  392. package/src/errors/index.ts +0 -95
  393. package/src/errors/llm.ts +0 -151
  394. package/src/errors/network.ts +0 -124
  395. package/src/errors/validation.ts +0 -111
  396. package/src/eval/eval-runner.ts +0 -456
  397. package/src/eval/index.ts +0 -8
  398. package/src/eval/types.ts +0 -139
  399. package/src/index.ts +0 -22
  400. package/src/orchestration/index.ts +0 -30
  401. package/src/orchestration/plan-executor.ts +0 -652
  402. package/src/orchestration/types.ts +0 -127
  403. package/src/orchestration/utils.ts +0 -119
  404. package/src/orquesta/connection.ts +0 -291
  405. package/src/prompts/agents/docs-search-decision.ts +0 -74
  406. package/src/prompts/agents/docs-search.ts +0 -84
  407. package/src/prompts/agents/planning.ts +0 -143
  408. package/src/prompts/index.ts +0 -31
  409. package/src/prompts/shared/codebase-rules.ts +0 -29
  410. package/src/prompts/shared/git-rules.ts +0 -94
  411. package/src/prompts/shared/language-rules.ts +0 -36
  412. package/src/prompts/shared/tool-usage.ts +0 -72
  413. package/src/prompts/system/compact.ts +0 -80
  414. package/src/prompts/system/plan-execute.ts +0 -89
  415. package/src/tools/browser/browser-client.ts +0 -1363
  416. package/src/tools/browser/browser-tools.ts +0 -1139
  417. package/src/tools/browser/index.ts +0 -65
  418. package/src/tools/index.ts +0 -23
  419. package/src/tools/llm/agents/docs-search-tools.ts +0 -368
  420. package/src/tools/llm/agents/index.ts +0 -22
  421. package/src/tools/llm/index.ts +0 -11
  422. package/src/tools/llm/simple/ask-user-tool.ts +0 -25
  423. package/src/tools/llm/simple/background-bash-tool.ts +0 -443
  424. package/src/tools/llm/simple/background-powershell-tool.ts +0 -421
  425. package/src/tools/llm/simple/bash-tool.ts +0 -238
  426. package/src/tools/llm/simple/docs-search-agent-tool.ts +0 -146
  427. package/src/tools/llm/simple/file-tools.ts +0 -1051
  428. package/src/tools/llm/simple/final-response-tool.ts +0 -180
  429. package/src/tools/llm/simple/index.ts +0 -42
  430. package/src/tools/llm/simple/planning-tools.ts +0 -143
  431. package/src/tools/llm/simple/powershell-tool.ts +0 -241
  432. package/src/tools/llm/simple/simple-tool-executor.ts +0 -279
  433. package/src/tools/llm/simple/todo-tools.ts +0 -207
  434. package/src/tools/llm/simple/user-interaction-tools.ts +0 -277
  435. package/src/tools/office/common/constants.ts +0 -335
  436. package/src/tools/office/common/index.ts +0 -133
  437. package/src/tools/office/common/types.ts +0 -286
  438. package/src/tools/office/common/utils.ts +0 -116
  439. package/src/tools/office/excel-client.ts +0 -1336
  440. package/src/tools/office/excel-tools/cells.ts +0 -359
  441. package/src/tools/office/excel-tools/charts.ts +0 -166
  442. package/src/tools/office/excel-tools/comments.ts +0 -155
  443. package/src/tools/office/excel-tools/data-ops.ts +0 -349
  444. package/src/tools/office/excel-tools/export.ts +0 -105
  445. package/src/tools/office/excel-tools/formatting.ts +0 -357
  446. package/src/tools/office/excel-tools/index.ts +0 -55
  447. package/src/tools/office/excel-tools/launch.ts +0 -303
  448. package/src/tools/office/excel-tools/media.ts +0 -117
  449. package/src/tools/office/excel-tools/named-ranges.ts +0 -148
  450. package/src/tools/office/excel-tools/protection.ts +0 -105
  451. package/src/tools/office/excel-tools/rows-columns.ts +0 -386
  452. package/src/tools/office/excel-tools/sheets.ts +0 -228
  453. package/src/tools/office/excel-tools/validation.ts +0 -226
  454. package/src/tools/office/excel-tools.ts +0 -9
  455. package/src/tools/office/index.ts +0 -259
  456. package/src/tools/office/office-client-base.ts +0 -242
  457. package/src/tools/office/office-client.ts +0 -377
  458. package/src/tools/office/powerpoint-client.ts +0 -1498
  459. package/src/tools/office/powerpoint-tools/effects.ts +0 -315
  460. package/src/tools/office/powerpoint-tools/export.ts +0 -138
  461. package/src/tools/office/powerpoint-tools/index.ts +0 -45
  462. package/src/tools/office/powerpoint-tools/launch.ts +0 -263
  463. package/src/tools/office/powerpoint-tools/media.ts +0 -291
  464. package/src/tools/office/powerpoint-tools/notes.ts +0 -220
  465. package/src/tools/office/powerpoint-tools/sections.ts +0 -140
  466. package/src/tools/office/powerpoint-tools/shapes.ts +0 -870
  467. package/src/tools/office/powerpoint-tools/slides.ts +0 -350
  468. package/src/tools/office/powerpoint-tools/tables.ts +0 -182
  469. package/src/tools/office/powerpoint-tools/text.ts +0 -473
  470. package/src/tools/office/powerpoint-tools.ts +0 -9
  471. package/src/tools/office/word-client.ts +0 -1697
  472. package/src/tools/office/word-tools/bookmarks.ts +0 -186
  473. package/src/tools/office/word-tools/comments.ts +0 -185
  474. package/src/tools/office/word-tools/content.ts +0 -229
  475. package/src/tools/office/word-tools/export.ts +0 -97
  476. package/src/tools/office/word-tools/formatting.ts +0 -161
  477. package/src/tools/office/word-tools/headers-footers.ts +0 -155
  478. package/src/tools/office/word-tools/index.ts +0 -57
  479. package/src/tools/office/word-tools/launch.ts +0 -312
  480. package/src/tools/office/word-tools/lists.ts +0 -97
  481. package/src/tools/office/word-tools/navigation.ts +0 -114
  482. package/src/tools/office/word-tools/page-setup.ts +0 -195
  483. package/src/tools/office/word-tools/tables.ts +0 -262
  484. package/src/tools/office/word-tools/text.ts +0 -294
  485. package/src/tools/office/word-tools/undo-redo.ts +0 -97
  486. package/src/tools/office/word-tools/watermarks.ts +0 -105
  487. package/src/tools/office/word-tools.ts +0 -9
  488. package/src/tools/registry.ts +0 -527
  489. package/src/tools/types.ts +0 -231
  490. package/src/types/index.ts +0 -181
  491. package/src/ui/PlanExecuteView.tsx +0 -119
  492. package/src/ui/TodoPanel.tsx +0 -240
  493. package/src/ui/UpdateNotification.tsx +0 -105
  494. package/src/ui/components/ActivityIndicator.tsx +0 -234
  495. package/src/ui/components/CommandBrowser.tsx +0 -114
  496. package/src/ui/components/CustomTextInput.tsx +0 -389
  497. package/src/ui/components/DocsSearchProgress.tsx +0 -85
  498. package/src/ui/components/FileBrowser.tsx +0 -93
  499. package/src/ui/components/LLMSetupWizard.tsx +0 -333
  500. package/src/ui/components/Logo.tsx +0 -125
  501. package/src/ui/components/MarkdownRenderer.tsx +0 -358
  502. package/src/ui/components/ModelSelector.tsx +0 -203
  503. package/src/ui/components/PlanExecuteApp.tsx +0 -2007
  504. package/src/ui/components/ProgressBar.tsx +0 -51
  505. package/src/ui/components/StatusBar.tsx +0 -302
  506. package/src/ui/components/ThinkingIndicator.tsx +0 -120
  507. package/src/ui/components/TodoListView.tsx +0 -140
  508. package/src/ui/components/ToolSelector.tsx +0 -215
  509. package/src/ui/components/dialogs/ApprovalDialog.tsx +0 -259
  510. package/src/ui/components/dialogs/AskUserDialog.tsx +0 -159
  511. package/src/ui/components/dialogs/DocsBrowser.tsx +0 -222
  512. package/src/ui/components/dialogs/SettingsDialog.tsx +0 -939
  513. package/src/ui/components/dialogs/index.ts +0 -13
  514. package/src/ui/components/index.ts +0 -27
  515. package/src/ui/components/panels/LogPanel.tsx +0 -385
  516. package/src/ui/components/panels/SessionPanel.tsx +0 -146
  517. package/src/ui/components/panels/index.ts +0 -13
  518. package/src/ui/components/views/ChatView.tsx +0 -447
  519. package/src/ui/components/views/index.ts +0 -5
  520. package/src/ui/contexts/TokenContext.tsx +0 -139
  521. package/src/ui/hooks/atFileProcessor.ts +0 -167
  522. package/src/ui/hooks/index.ts +0 -11
  523. package/src/ui/hooks/slashCommandProcessor.ts +0 -174
  524. package/src/ui/hooks/useCommandBrowserState.ts +0 -97
  525. package/src/ui/hooks/useFileBrowserState.ts +0 -116
  526. package/src/ui/hooks/useFileList.ts +0 -132
  527. package/src/ui/hooks/useInputHistory.ts +0 -89
  528. package/src/ui/hooks/usePlanExecution.ts +0 -339
  529. package/src/ui/index.ts +0 -10
  530. package/src/ui/ink-entry.tsx +0 -36
  531. package/src/utils/env-filter.ts +0 -164
  532. package/src/utils/file-system.ts +0 -133
  533. package/src/utils/git-utils.ts +0 -30
  534. package/src/utils/json-stream-logger.ts +0 -1259
  535. package/src/utils/logger.ts +0 -2767
  536. package/src/utils/platform-utils.ts +0 -256
  537. package/src/utils/wsl-utils.ts +0 -113
  538. package/tsconfig.electron.json +0 -39
  539. 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();