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