@nanocollective/nanocoder 1.22.5 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/LICENSE.md +1 -15
  2. package/README.md +25 -821
  3. package/assets/nanocoder-vscode.vsix +0 -0
  4. package/dist/ai-sdk-client/ai-sdk-client.d.ts +3 -2
  5. package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
  6. package/dist/ai-sdk-client/ai-sdk-client.js +16 -2
  7. package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
  8. package/dist/ai-sdk-client/chat/chat-handler.d.ts +2 -1
  9. package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
  10. package/dist/ai-sdk-client/chat/chat-handler.js +37 -70
  11. package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
  12. package/dist/ai-sdk-client/chat/streaming-handler.d.ts +2 -2
  13. package/dist/ai-sdk-client/chat/streaming-handler.d.ts.map +1 -1
  14. package/dist/ai-sdk-client/chat/streaming-handler.js +4 -23
  15. package/dist/ai-sdk-client/chat/streaming-handler.js.map +1 -1
  16. package/dist/ai-sdk-client/error-handling/error-parser.d.ts.map +1 -1
  17. package/dist/ai-sdk-client/error-handling/error-parser.js +11 -3
  18. package/dist/ai-sdk-client/error-handling/error-parser.js.map +1 -1
  19. package/dist/ai-sdk-client/providers/provider-factory.d.ts +2 -1
  20. package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
  21. package/dist/ai-sdk-client/providers/provider-factory.js +55 -0
  22. package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
  23. package/dist/app/App.d.ts +1 -1
  24. package/dist/app/App.d.ts.map +1 -1
  25. package/dist/app/App.js +148 -37
  26. package/dist/app/App.js.map +1 -1
  27. package/dist/app/components/chat-input.d.ts +9 -1
  28. package/dist/app/components/chat-input.d.ts.map +1 -1
  29. package/dist/app/components/chat-input.js +11 -8
  30. package/dist/app/components/chat-input.js.map +1 -1
  31. package/dist/app/components/modal-selectors.d.ts +6 -7
  32. package/dist/app/components/modal-selectors.d.ts.map +1 -1
  33. package/dist/app/components/modal-selectors.js +11 -7
  34. package/dist/app/components/modal-selectors.js.map +1 -1
  35. package/dist/app/components/settings-selector.d.ts.map +1 -1
  36. package/dist/app/components/settings-selector.js +3 -3
  37. package/dist/app/components/settings-selector.js.map +1 -1
  38. package/dist/app/helpers.d.ts.map +1 -1
  39. package/dist/app/helpers.js +2 -4
  40. package/dist/app/helpers.js.map +1 -1
  41. package/dist/app/index.d.ts +0 -1
  42. package/dist/app/index.d.ts.map +1 -1
  43. package/dist/app/index.js +0 -1
  44. package/dist/app/index.js.map +1 -1
  45. package/dist/app/types.d.ts +2 -0
  46. package/dist/app/types.d.ts.map +1 -1
  47. package/dist/app/utils/app-util.d.ts +1 -0
  48. package/dist/app/utils/app-util.d.ts.map +1 -1
  49. package/dist/app/utils/app-util.js +69 -204
  50. package/dist/app/utils/app-util.js.map +1 -1
  51. package/dist/app/utils/handlers/compact-handler.d.ts +6 -0
  52. package/dist/app/utils/handlers/compact-handler.d.ts.map +1 -0
  53. package/dist/app/utils/handlers/compact-handler.js +148 -0
  54. package/dist/app/utils/handlers/compact-handler.js.map +1 -0
  55. package/dist/app/utils/handlers/context-max-handler.d.ts +11 -0
  56. package/dist/app/utils/handlers/context-max-handler.d.ts.map +1 -0
  57. package/dist/app/utils/handlers/context-max-handler.js +102 -0
  58. package/dist/app/utils/handlers/context-max-handler.js.map +1 -0
  59. package/dist/app/utils/handlers/create-handler.d.ts +17 -0
  60. package/dist/app/utils/handlers/create-handler.d.ts.map +1 -0
  61. package/dist/app/utils/handlers/create-handler.js +112 -0
  62. package/dist/app/utils/handlers/create-handler.js.map +1 -0
  63. package/dist/app/utils/handlers/session-handler.d.ts +8 -0
  64. package/dist/app/utils/handlers/session-handler.d.ts.map +1 -0
  65. package/dist/app/utils/handlers/session-handler.js +99 -0
  66. package/dist/app/utils/handlers/session-handler.js.map +1 -0
  67. package/dist/auth/github-copilot.d.ts +44 -0
  68. package/dist/auth/github-copilot.d.ts.map +1 -0
  69. package/dist/auth/github-copilot.js +178 -0
  70. package/dist/auth/github-copilot.js.map +1 -0
  71. package/dist/cli.js +64 -3
  72. package/dist/cli.js.map +1 -1
  73. package/dist/client-factory.d.ts +1 -1
  74. package/dist/client-factory.d.ts.map +1 -1
  75. package/dist/client-factory.js +42 -10
  76. package/dist/client-factory.js.map +1 -1
  77. package/dist/commands/compact.d.ts +1 -6
  78. package/dist/commands/compact.d.ts.map +1 -1
  79. package/dist/commands/compact.js +2 -13
  80. package/dist/commands/compact.js.map +1 -1
  81. package/dist/commands/context-max.d.ts +14 -0
  82. package/dist/commands/context-max.d.ts.map +1 -0
  83. package/dist/commands/context-max.js +15 -0
  84. package/dist/commands/context-max.js.map +1 -0
  85. package/dist/commands/copilot-login-command.d.ts +3 -0
  86. package/dist/commands/copilot-login-command.d.ts.map +1 -0
  87. package/dist/commands/copilot-login-command.js +9 -0
  88. package/dist/commands/copilot-login-command.js.map +1 -0
  89. package/dist/commands/copilot-login.d.ts +9 -0
  90. package/dist/commands/copilot-login.d.ts.map +1 -0
  91. package/dist/commands/copilot-login.js +70 -0
  92. package/dist/commands/copilot-login.js.map +1 -0
  93. package/dist/commands/create-stub-command.d.ts +8 -0
  94. package/dist/commands/create-stub-command.d.ts.map +1 -0
  95. package/dist/commands/create-stub-command.js +14 -0
  96. package/dist/commands/create-stub-command.js.map +1 -0
  97. package/dist/commands/custom-commands.d.ts.map +1 -1
  98. package/dist/commands/custom-commands.js +88 -4
  99. package/dist/commands/custom-commands.js.map +1 -1
  100. package/dist/commands/exit.d.ts.map +1 -1
  101. package/dist/commands/exit.js +5 -8
  102. package/dist/commands/exit.js.map +1 -1
  103. package/dist/commands/explorer.d.ts +1 -2
  104. package/dist/commands/explorer.d.ts.map +1 -1
  105. package/dist/commands/explorer.js +2 -9
  106. package/dist/commands/explorer.js.map +1 -1
  107. package/dist/commands/help.d.ts.map +1 -1
  108. package/dist/commands/help.js +1 -1
  109. package/dist/commands/help.js.map +1 -1
  110. package/dist/commands/ide.d.ts +2 -0
  111. package/dist/commands/ide.d.ts.map +1 -0
  112. package/dist/commands/ide.js +3 -0
  113. package/dist/commands/ide.js.map +1 -0
  114. package/dist/commands/index.d.ts +5 -0
  115. package/dist/commands/index.d.ts.map +1 -1
  116. package/dist/commands/index.js +5 -0
  117. package/dist/commands/index.js.map +1 -1
  118. package/dist/commands/init.d.ts.map +1 -1
  119. package/dist/commands/init.js +2 -1
  120. package/dist/commands/init.js.map +1 -1
  121. package/dist/commands/model.d.ts +1 -2
  122. package/dist/commands/model.d.ts.map +1 -1
  123. package/dist/commands/model.js +2 -10
  124. package/dist/commands/model.js.map +1 -1
  125. package/dist/commands/provider.d.ts +1 -2
  126. package/dist/commands/provider.d.ts.map +1 -1
  127. package/dist/commands/provider.js +2 -10
  128. package/dist/commands/provider.js.map +1 -1
  129. package/dist/commands/resume.d.ts +8 -0
  130. package/dist/commands/resume.d.ts.map +1 -0
  131. package/dist/commands/resume.js +11 -0
  132. package/dist/commands/resume.js.map +1 -0
  133. package/dist/commands/schedule.d.ts +3 -0
  134. package/dist/commands/schedule.d.ts.map +1 -0
  135. package/dist/commands/schedule.js +177 -0
  136. package/dist/commands/schedule.js.map +1 -0
  137. package/dist/commands/settings.d.ts +1 -2
  138. package/dist/commands/settings.d.ts.map +1 -1
  139. package/dist/commands/settings.js +2 -10
  140. package/dist/commands/settings.js.map +1 -1
  141. package/dist/commands/status.d.ts +1 -2
  142. package/dist/commands/status.d.ts.map +1 -1
  143. package/dist/commands/status.js +2 -10
  144. package/dist/commands/status.js.map +1 -1
  145. package/dist/commands/usage.d.ts.map +1 -1
  146. package/dist/commands/usage.js +4 -3
  147. package/dist/commands/usage.js.map +1 -1
  148. package/dist/components/assistant-message.d.ts.map +1 -1
  149. package/dist/components/assistant-message.js +2 -27
  150. package/dist/components/assistant-message.js.map +1 -1
  151. package/dist/components/development-mode-indicator.d.ts +3 -2
  152. package/dist/components/development-mode-indicator.d.ts.map +1 -1
  153. package/dist/components/development-mode-indicator.js +23 -9
  154. package/dist/components/development-mode-indicator.js.map +1 -1
  155. package/dist/components/ide-selector.d.ts +7 -0
  156. package/dist/components/ide-selector.d.ts.map +1 -0
  157. package/dist/components/ide-selector.js +17 -0
  158. package/dist/components/ide-selector.js.map +1 -0
  159. package/dist/components/provider-selector.d.ts.map +1 -1
  160. package/dist/components/provider-selector.js +4 -3
  161. package/dist/components/provider-selector.js.map +1 -1
  162. package/dist/components/question-prompt.d.ts +8 -0
  163. package/dist/components/question-prompt.d.ts.map +1 -0
  164. package/dist/components/question-prompt.js +58 -0
  165. package/dist/components/question-prompt.js.map +1 -0
  166. package/dist/components/scheduler-view.d.ts +14 -0
  167. package/dist/components/scheduler-view.d.ts.map +1 -0
  168. package/dist/components/scheduler-view.js +17 -0
  169. package/dist/components/scheduler-view.js.map +1 -0
  170. package/dist/components/session-selector.d.ts +12 -0
  171. package/dist/components/session-selector.d.ts.map +1 -0
  172. package/dist/components/session-selector.js +108 -0
  173. package/dist/components/session-selector.js.map +1 -0
  174. package/dist/components/text-input.d.ts +13 -0
  175. package/dist/components/text-input.d.ts.map +1 -0
  176. package/dist/components/text-input.js +175 -0
  177. package/dist/components/text-input.js.map +1 -0
  178. package/dist/components/tool-confirmation.d.ts.map +1 -1
  179. package/dist/components/tool-confirmation.js +9 -6
  180. package/dist/components/tool-confirmation.js.map +1 -1
  181. package/dist/components/ui/styled-title.js +2 -2
  182. package/dist/components/ui/styled-title.js.map +1 -1
  183. package/dist/components/user-input.d.ts +4 -1
  184. package/dist/components/user-input.d.ts.map +1 -1
  185. package/dist/components/user-input.js +29 -24
  186. package/dist/components/user-input.js.map +1 -1
  187. package/dist/components/user-message.d.ts.map +1 -1
  188. package/dist/components/user-message.js +1 -23
  189. package/dist/components/user-message.js.map +1 -1
  190. package/dist/components/vscode-extension-prompt.d.ts +6 -1
  191. package/dist/components/vscode-extension-prompt.d.ts.map +1 -1
  192. package/dist/components/vscode-extension-prompt.js +80 -36
  193. package/dist/components/vscode-extension-prompt.js.map +1 -1
  194. package/dist/config/copilot-credentials.d.ts +27 -0
  195. package/dist/config/copilot-credentials.d.ts.map +1 -0
  196. package/dist/config/copilot-credentials.js +81 -0
  197. package/dist/config/copilot-credentials.js.map +1 -0
  198. package/dist/config/index.d.ts +0 -2
  199. package/dist/config/index.d.ts.map +1 -1
  200. package/dist/config/index.js +63 -27
  201. package/dist/config/index.js.map +1 -1
  202. package/dist/config/mcp-config-loader.d.ts +2 -3
  203. package/dist/config/mcp-config-loader.d.ts.map +1 -1
  204. package/dist/config/mcp-config-loader.js +136 -181
  205. package/dist/config/mcp-config-loader.js.map +1 -1
  206. package/dist/config/nanocoder-tools-config.js +2 -2
  207. package/dist/config/nanocoder-tools-config.js.map +1 -1
  208. package/dist/config/themes.d.ts.map +1 -1
  209. package/dist/config/themes.js +9 -746
  210. package/dist/config/themes.js.map +1 -1
  211. package/dist/config/validation.d.ts.map +1 -1
  212. package/dist/config/validation.js +0 -19
  213. package/dist/config/validation.js.map +1 -1
  214. package/dist/custom-commands/command-integration.d.ts +24 -0
  215. package/dist/custom-commands/command-integration.d.ts.map +1 -0
  216. package/dist/custom-commands/command-integration.js +68 -0
  217. package/dist/custom-commands/command-integration.js.map +1 -0
  218. package/dist/custom-commands/executor.d.ts.map +1 -1
  219. package/dist/custom-commands/executor.js +12 -2
  220. package/dist/custom-commands/executor.js.map +1 -1
  221. package/dist/custom-commands/loader.d.ts +33 -5
  222. package/dist/custom-commands/loader.d.ts.map +1 -1
  223. package/dist/custom-commands/loader.js +191 -18
  224. package/dist/custom-commands/loader.js.map +1 -1
  225. package/dist/custom-commands/parser.d.ts.map +1 -1
  226. package/dist/custom-commands/parser.js +106 -48
  227. package/dist/custom-commands/parser.js.map +1 -1
  228. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +6 -1
  229. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
  230. package/dist/hooks/chat-handler/conversation/conversation-loop.js +89 -76
  231. package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
  232. package/dist/hooks/chat-handler/conversation/tool-executor.d.ts +7 -2
  233. package/dist/hooks/chat-handler/conversation/tool-executor.d.ts.map +1 -1
  234. package/dist/hooks/chat-handler/conversation/tool-executor.js +109 -41
  235. package/dist/hooks/chat-handler/conversation/tool-executor.js.map +1 -1
  236. package/dist/hooks/chat-handler/types.d.ts +6 -1
  237. package/dist/hooks/chat-handler/types.d.ts.map +1 -1
  238. package/dist/hooks/chat-handler/useChatHandler.d.ts +1 -1
  239. package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
  240. package/dist/hooks/chat-handler/useChatHandler.js +19 -5
  241. package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
  242. package/dist/hooks/useAppHandlers.d.ts +10 -1
  243. package/dist/hooks/useAppHandlers.d.ts.map +1 -1
  244. package/dist/hooks/useAppHandlers.js +124 -13
  245. package/dist/hooks/useAppHandlers.js.map +1 -1
  246. package/dist/hooks/useAppInitialization.d.ts +5 -3
  247. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  248. package/dist/hooks/useAppInitialization.js +54 -30
  249. package/dist/hooks/useAppInitialization.js.map +1 -1
  250. package/dist/hooks/useAppState.d.ts +27 -7
  251. package/dist/hooks/useAppState.d.ts.map +1 -1
  252. package/dist/hooks/useAppState.js +54 -22
  253. package/dist/hooks/useAppState.js.map +1 -1
  254. package/dist/hooks/useContextPercentage.d.ts +17 -0
  255. package/dist/hooks/useContextPercentage.d.ts.map +1 -0
  256. package/dist/hooks/useContextPercentage.js +71 -0
  257. package/dist/hooks/useContextPercentage.js.map +1 -0
  258. package/dist/hooks/useModeHandlers.d.ts +9 -12
  259. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  260. package/dist/hooks/useModeHandlers.js +31 -91
  261. package/dist/hooks/useModeHandlers.js.map +1 -1
  262. package/dist/hooks/useNonInteractiveMode.d.ts +7 -0
  263. package/dist/hooks/useNonInteractiveMode.d.ts.map +1 -1
  264. package/dist/hooks/useNonInteractiveMode.js +42 -3
  265. package/dist/hooks/useNonInteractiveMode.js.map +1 -1
  266. package/dist/hooks/useSchedulerMode.d.ts +30 -0
  267. package/dist/hooks/useSchedulerMode.d.ts.map +1 -0
  268. package/dist/hooks/useSchedulerMode.js +99 -0
  269. package/dist/hooks/useSchedulerMode.js.map +1 -0
  270. package/dist/hooks/useSessionAutosave.d.ts +16 -0
  271. package/dist/hooks/useSessionAutosave.d.ts.map +1 -0
  272. package/dist/hooks/useSessionAutosave.js +133 -0
  273. package/dist/hooks/useSessionAutosave.js.map +1 -0
  274. package/dist/hooks/useToolHandler.d.ts +2 -1
  275. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  276. package/dist/hooks/useToolHandler.js +9 -3
  277. package/dist/hooks/useToolHandler.js.map +1 -1
  278. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  279. package/dist/lsp/lsp-manager.js +10 -0
  280. package/dist/lsp/lsp-manager.js.map +1 -1
  281. package/dist/mcp/mcp-client.d.ts.map +1 -1
  282. package/dist/mcp/mcp-client.js +23 -3
  283. package/dist/mcp/mcp-client.js.map +1 -1
  284. package/dist/mcp/transport-factory.d.ts.map +1 -1
  285. package/dist/mcp/transport-factory.js +4 -36
  286. package/dist/mcp/transport-factory.js.map +1 -1
  287. package/dist/models/index.d.ts +1 -1
  288. package/dist/models/index.d.ts.map +1 -1
  289. package/dist/models/index.js +1 -1
  290. package/dist/models/index.js.map +1 -1
  291. package/dist/models/models-dev-client.d.ts +8 -1
  292. package/dist/models/models-dev-client.d.ts.map +1 -1
  293. package/dist/models/models-dev-client.js +71 -15
  294. package/dist/models/models-dev-client.js.map +1 -1
  295. package/dist/schedule/cron.d.ts +14 -0
  296. package/dist/schedule/cron.d.ts.map +1 -0
  297. package/dist/schedule/cron.js +107 -0
  298. package/dist/schedule/cron.js.map +1 -0
  299. package/dist/schedule/index.d.ts +4 -0
  300. package/dist/schedule/index.d.ts.map +1 -0
  301. package/dist/schedule/index.js +4 -0
  302. package/dist/schedule/index.js.map +1 -0
  303. package/dist/schedule/runner.d.ts +42 -0
  304. package/dist/schedule/runner.d.ts.map +1 -0
  305. package/dist/schedule/runner.js +136 -0
  306. package/dist/schedule/runner.js.map +1 -0
  307. package/dist/schedule/storage.d.ts +9 -0
  308. package/dist/schedule/storage.d.ts.map +1 -0
  309. package/dist/schedule/storage.js +68 -0
  310. package/dist/schedule/storage.js.map +1 -0
  311. package/dist/schedule/types.d.ts +24 -0
  312. package/dist/schedule/types.d.ts.map +1 -0
  313. package/dist/schedule/types.js +2 -0
  314. package/dist/schedule/types.js.map +1 -0
  315. package/dist/services/bash-executor.d.ts.map +1 -1
  316. package/dist/services/bash-executor.js +5 -0
  317. package/dist/services/bash-executor.js.map +1 -1
  318. package/dist/session/session-manager.d.ts +57 -0
  319. package/dist/session/session-manager.d.ts.map +1 -0
  320. package/dist/session/session-manager.js +361 -0
  321. package/dist/session/session-manager.js.map +1 -0
  322. package/dist/test-utils/render-with-theme.d.ts.map +1 -1
  323. package/dist/test-utils/render-with-theme.js +2 -1
  324. package/dist/test-utils/render-with-theme.js.map +1 -1
  325. package/dist/tool-calling/tool-parser.d.ts +4 -3
  326. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  327. package/dist/tool-calling/tool-parser.js +17 -34
  328. package/dist/tool-calling/tool-parser.js.map +1 -1
  329. package/dist/tool-calling/xml-parser.d.ts +8 -4
  330. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  331. package/dist/tool-calling/xml-parser.js +15 -5
  332. package/dist/tool-calling/xml-parser.js.map +1 -1
  333. package/dist/tools/ask-question.d.ts +3 -0
  334. package/dist/tools/ask-question.d.ts.map +1 -0
  335. package/dist/tools/ask-question.js +66 -0
  336. package/dist/tools/ask-question.js.map +1 -0
  337. package/dist/tools/execute-bash.d.ts.map +1 -1
  338. package/dist/tools/execute-bash.js +6 -1
  339. package/dist/tools/execute-bash.js.map +1 -1
  340. package/dist/tools/fetch-url.d.ts.map +1 -1
  341. package/dist/tools/fetch-url.js +11 -2
  342. package/dist/tools/fetch-url.js.map +1 -1
  343. package/dist/tools/file-ops/copy-file.d.ts +3 -0
  344. package/dist/tools/file-ops/copy-file.d.ts.map +1 -0
  345. package/dist/tools/file-ops/copy-file.js +96 -0
  346. package/dist/tools/file-ops/copy-file.js.map +1 -0
  347. package/dist/tools/file-ops/create-directory.d.ts +3 -0
  348. package/dist/tools/file-ops/create-directory.d.ts.map +1 -0
  349. package/dist/tools/file-ops/create-directory.js +59 -0
  350. package/dist/tools/file-ops/create-directory.js.map +1 -0
  351. package/dist/tools/file-ops/delete-file.d.ts +3 -0
  352. package/dist/tools/file-ops/delete-file.d.ts.map +1 -0
  353. package/dist/tools/file-ops/delete-file.js +74 -0
  354. package/dist/tools/file-ops/delete-file.js.map +1 -0
  355. package/dist/tools/file-ops/index.d.ts +3 -0
  356. package/dist/tools/file-ops/index.d.ts.map +1 -0
  357. package/dist/tools/file-ops/index.js +8 -0
  358. package/dist/tools/file-ops/index.js.map +1 -0
  359. package/dist/tools/file-ops/move-file.d.ts +3 -0
  360. package/dist/tools/file-ops/move-file.d.ts.map +1 -0
  361. package/dist/tools/file-ops/move-file.js +96 -0
  362. package/dist/tools/file-ops/move-file.js.map +1 -0
  363. package/dist/tools/file-ops/string-replace-preview.d.ts +10 -0
  364. package/dist/tools/file-ops/string-replace-preview.d.ts.map +1 -0
  365. package/dist/tools/file-ops/string-replace-preview.js +171 -0
  366. package/dist/tools/file-ops/string-replace-preview.js.map +1 -0
  367. package/dist/tools/file-ops/string-replace.d.ts +3 -0
  368. package/dist/tools/file-ops/string-replace.d.ts.map +1 -0
  369. package/dist/tools/file-ops/string-replace.js +178 -0
  370. package/dist/tools/file-ops/string-replace.js.map +1 -0
  371. package/dist/tools/file-ops/write-file.d.ts +3 -0
  372. package/dist/tools/file-ops/write-file.d.ts.map +1 -0
  373. package/dist/tools/{write-file.js → file-ops/write-file.js} +34 -79
  374. package/dist/tools/file-ops/write-file.js.map +1 -0
  375. package/dist/tools/find-files.d.ts.map +1 -1
  376. package/dist/tools/find-files.js +1 -0
  377. package/dist/tools/find-files.js.map +1 -1
  378. package/dist/tools/git/git-diff.d.ts.map +1 -1
  379. package/dist/tools/git/git-diff.js +1 -0
  380. package/dist/tools/git/git-diff.js.map +1 -1
  381. package/dist/tools/git/git-log.d.ts.map +1 -1
  382. package/dist/tools/git/git-log.js +1 -0
  383. package/dist/tools/git/git-log.js.map +1 -1
  384. package/dist/tools/git/git-reset.js +1 -1
  385. package/dist/tools/git/git-reset.js.map +1 -1
  386. package/dist/tools/git/git-status.d.ts.map +1 -1
  387. package/dist/tools/git/git-status.js +1 -0
  388. package/dist/tools/git/git-status.js.map +1 -1
  389. package/dist/tools/git/index.js +3 -3
  390. package/dist/tools/git/index.js.map +1 -1
  391. package/dist/tools/git/utils.d.ts +4 -0
  392. package/dist/tools/git/utils.d.ts.map +1 -1
  393. package/dist/tools/git/utils.js +12 -0
  394. package/dist/tools/git/utils.js.map +1 -1
  395. package/dist/tools/index.d.ts +1 -0
  396. package/dist/tools/index.d.ts.map +1 -1
  397. package/dist/tools/index.js +15 -2
  398. package/dist/tools/index.js.map +1 -1
  399. package/dist/tools/list-directory.d.ts.map +1 -1
  400. package/dist/tools/list-directory.js +2 -1
  401. package/dist/tools/list-directory.js.map +1 -1
  402. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  403. package/dist/tools/lsp-get-diagnostics.js +1 -5
  404. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  405. package/dist/tools/read-file.d.ts.map +1 -1
  406. package/dist/tools/read-file.js +1 -0
  407. package/dist/tools/read-file.js.map +1 -1
  408. package/dist/tools/search-file-contents.d.ts.map +1 -1
  409. package/dist/tools/search-file-contents.js +60 -10
  410. package/dist/tools/search-file-contents.js.map +1 -1
  411. package/dist/tools/tasks/list-tasks.d.ts.map +1 -1
  412. package/dist/tools/tasks/list-tasks.js +1 -0
  413. package/dist/tools/tasks/list-tasks.js.map +1 -1
  414. package/dist/tools/tool-manager.d.ts +10 -0
  415. package/dist/tools/tool-manager.d.ts.map +1 -1
  416. package/dist/tools/tool-manager.js +25 -2
  417. package/dist/tools/tool-manager.js.map +1 -1
  418. package/dist/tools/tool-registry.d.ts +9 -1
  419. package/dist/tools/tool-registry.d.ts.map +1 -1
  420. package/dist/tools/tool-registry.js +17 -1
  421. package/dist/tools/tool-registry.js.map +1 -1
  422. package/dist/tools/web-search.d.ts.map +1 -1
  423. package/dist/tools/web-search.js +1 -0
  424. package/dist/tools/web-search.js.map +1 -1
  425. package/dist/types/app.d.ts +5 -0
  426. package/dist/types/app.d.ts.map +1 -1
  427. package/dist/types/commands.d.ts +20 -1
  428. package/dist/types/commands.d.ts.map +1 -1
  429. package/dist/types/config.d.ts +11 -15
  430. package/dist/types/config.d.ts.map +1 -1
  431. package/dist/types/core.d.ts +15 -4
  432. package/dist/types/core.d.ts.map +1 -1
  433. package/dist/types/core.js +7 -0
  434. package/dist/types/core.js.map +1 -1
  435. package/dist/types/markdown-parser.d.ts +2 -10
  436. package/dist/types/markdown-parser.d.ts.map +1 -1
  437. package/dist/types/mcp.d.ts +2 -28
  438. package/dist/types/mcp.d.ts.map +1 -1
  439. package/dist/types/ui.d.ts +1 -1
  440. package/dist/types/ui.d.ts.map +1 -1
  441. package/dist/utils/ansi-truncate.d.ts +6 -0
  442. package/dist/utils/ansi-truncate.d.ts.map +1 -0
  443. package/dist/utils/ansi-truncate.js +39 -0
  444. package/dist/utils/ansi-truncate.js.map +1 -0
  445. package/dist/utils/auto-compact.d.ts.map +1 -1
  446. package/dist/utils/auto-compact.js +13 -7
  447. package/dist/utils/auto-compact.js.map +1 -1
  448. package/dist/utils/installation-detector.d.ts +6 -0
  449. package/dist/utils/installation-detector.d.ts.map +1 -1
  450. package/dist/utils/installation-detector.js +33 -19
  451. package/dist/utils/installation-detector.js.map +1 -1
  452. package/dist/utils/logging/health-monitor/checks/memory-check.d.ts.map +1 -1
  453. package/dist/utils/logging/health-monitor/checks/memory-check.js +2 -1
  454. package/dist/utils/logging/health-monitor/checks/memory-check.js.map +1 -1
  455. package/dist/utils/logging/health-monitor/core/health-monitor.d.ts.map +1 -1
  456. package/dist/utils/logging/health-monitor/core/health-monitor.js +3 -2
  457. package/dist/utils/logging/health-monitor/core/health-monitor.js.map +1 -1
  458. package/dist/utils/logging/index.d.ts.map +1 -1
  459. package/dist/utils/logging/index.js +18 -30
  460. package/dist/utils/logging/index.js.map +1 -1
  461. package/dist/utils/logging/performance.d.ts.map +1 -1
  462. package/dist/utils/logging/performance.js +21 -17
  463. package/dist/utils/logging/performance.js.map +1 -1
  464. package/dist/utils/logging/pino-logger.d.ts.map +1 -1
  465. package/dist/utils/logging/pino-logger.js +7 -8
  466. package/dist/utils/logging/pino-logger.js.map +1 -1
  467. package/dist/utils/logging/redaction.d.ts.map +1 -1
  468. package/dist/utils/logging/redaction.js +2 -0
  469. package/dist/utils/logging/redaction.js.map +1 -1
  470. package/dist/utils/logging/request-tracker.d.ts.map +1 -1
  471. package/dist/utils/logging/request-tracker.js +6 -5
  472. package/dist/utils/logging/request-tracker.js.map +1 -1
  473. package/dist/utils/logging/safe-process.d.ts +16 -0
  474. package/dist/utils/logging/safe-process.d.ts.map +1 -0
  475. package/dist/utils/logging/safe-process.js +37 -0
  476. package/dist/utils/logging/safe-process.js.map +1 -0
  477. package/dist/utils/logging/types.d.ts +0 -3
  478. package/dist/utils/logging/types.d.ts.map +1 -1
  479. package/dist/utils/message-builder.d.ts +0 -5
  480. package/dist/utils/message-builder.d.ts.map +1 -1
  481. package/dist/utils/message-builder.js +0 -8
  482. package/dist/utils/message-builder.js.map +1 -1
  483. package/dist/utils/path-validation.d.ts.map +1 -1
  484. package/dist/utils/path-validation.js +3 -1
  485. package/dist/utils/path-validation.js.map +1 -1
  486. package/dist/utils/path-validators.d.ts +16 -0
  487. package/dist/utils/path-validators.d.ts.map +1 -0
  488. package/dist/utils/path-validators.js +55 -0
  489. package/dist/utils/path-validators.js.map +1 -0
  490. package/dist/utils/question-queue.d.ts +15 -0
  491. package/dist/utils/question-queue.d.ts.map +1 -0
  492. package/dist/utils/question-queue.js +25 -0
  493. package/dist/utils/question-queue.js.map +1 -0
  494. package/dist/utils/response-formatter.d.ts +108 -0
  495. package/dist/utils/response-formatter.d.ts.map +1 -0
  496. package/dist/utils/response-formatter.js +372 -0
  497. package/dist/utils/response-formatter.js.map +1 -0
  498. package/dist/utils/shutdown/index.d.ts +7 -0
  499. package/dist/utils/shutdown/index.d.ts.map +1 -0
  500. package/dist/utils/shutdown/index.js +6 -0
  501. package/dist/utils/shutdown/index.js.map +1 -0
  502. package/dist/utils/shutdown/shutdown-manager.d.ts +19 -0
  503. package/dist/utils/shutdown/shutdown-manager.d.ts.map +1 -0
  504. package/dist/utils/shutdown/shutdown-manager.js +100 -0
  505. package/dist/utils/shutdown/shutdown-manager.js.map +1 -0
  506. package/dist/utils/shutdown/types.d.ts +9 -0
  507. package/dist/utils/shutdown/types.d.ts.map +1 -0
  508. package/dist/utils/shutdown/types.js +2 -0
  509. package/dist/utils/shutdown/types.js.map +1 -0
  510. package/dist/utils/text-wrapping.d.ts +8 -0
  511. package/dist/utils/text-wrapping.d.ts.map +1 -0
  512. package/dist/utils/text-wrapping.js +29 -0
  513. package/dist/utils/text-wrapping.js.map +1 -0
  514. package/dist/utils/tool-approval.d.ts +6 -0
  515. package/dist/utils/tool-approval.d.ts.map +1 -0
  516. package/dist/utils/tool-approval.js +15 -0
  517. package/dist/utils/tool-approval.js.map +1 -0
  518. package/dist/utils/tool-result-display.d.ts +15 -1
  519. package/dist/utils/tool-result-display.d.ts.map +1 -1
  520. package/dist/utils/tool-result-display.js +93 -3
  521. package/dist/utils/tool-result-display.js.map +1 -1
  522. package/dist/utils/type-helpers.d.ts +140 -0
  523. package/dist/utils/type-helpers.d.ts.map +1 -0
  524. package/dist/utils/type-helpers.js +220 -0
  525. package/dist/utils/type-helpers.js.map +1 -0
  526. package/dist/utils/url-utils.d.ts +6 -0
  527. package/dist/utils/url-utils.d.ts.map +1 -0
  528. package/dist/utils/url-utils.js +22 -0
  529. package/dist/utils/url-utils.js.map +1 -0
  530. package/dist/vscode/extension-installer.d.ts +34 -7
  531. package/dist/vscode/extension-installer.d.ts.map +1 -1
  532. package/dist/vscode/extension-installer.js +151 -64
  533. package/dist/vscode/extension-installer.js.map +1 -1
  534. package/dist/vscode/index.d.ts +1 -1
  535. package/dist/vscode/index.d.ts.map +1 -1
  536. package/dist/vscode/index.js +1 -1
  537. package/dist/vscode/index.js.map +1 -1
  538. package/dist/vscode/vscode-server.d.ts.map +1 -1
  539. package/dist/vscode/vscode-server.js +10 -0
  540. package/dist/vscode/vscode-server.js.map +1 -1
  541. package/dist/wizards/mcp-wizard.d.ts.map +1 -1
  542. package/dist/wizards/mcp-wizard.js +2 -1
  543. package/dist/wizards/mcp-wizard.js.map +1 -1
  544. package/dist/wizards/provider-wizard.d.ts.map +1 -1
  545. package/dist/wizards/provider-wizard.js +4 -2
  546. package/dist/wizards/provider-wizard.js.map +1 -1
  547. package/dist/wizards/steps/location-step.d.ts.map +1 -1
  548. package/dist/wizards/steps/location-step.js +2 -1
  549. package/dist/wizards/steps/location-step.js.map +1 -1
  550. package/dist/wizards/steps/mcp-step.d.ts.map +1 -1
  551. package/dist/wizards/steps/mcp-step.js +3 -2
  552. package/dist/wizards/steps/mcp-step.js.map +1 -1
  553. package/dist/wizards/steps/provider-step.d.ts.map +1 -1
  554. package/dist/wizards/steps/provider-step.js +5 -2
  555. package/dist/wizards/steps/provider-step.js.map +1 -1
  556. package/dist/wizards/steps/summary-step.d.ts.map +1 -1
  557. package/dist/wizards/steps/summary-step.js +2 -1
  558. package/dist/wizards/steps/summary-step.js.map +1 -1
  559. package/dist/wizards/templates/mcp-templates.d.ts +0 -8
  560. package/dist/wizards/templates/mcp-templates.d.ts.map +1 -1
  561. package/dist/wizards/templates/mcp-templates.js +8 -6
  562. package/dist/wizards/templates/mcp-templates.js.map +1 -1
  563. package/dist/wizards/templates/provider-templates.d.ts.map +1 -1
  564. package/dist/wizards/templates/provider-templates.js +59 -0
  565. package/dist/wizards/templates/provider-templates.js.map +1 -1
  566. package/dist/wizards/validation.d.ts.map +1 -1
  567. package/dist/wizards/validation.js +2 -4
  568. package/dist/wizards/validation.js.map +1 -1
  569. package/package.json +22 -23
  570. package/source/app/prompts/main-prompt.md +21 -3
  571. package/source/config/themes.json +787 -0
  572. package/dist/ai-sdk-client/chat/tool-processor.d.ts +0 -10
  573. package/dist/ai-sdk-client/chat/tool-processor.d.ts.map +0 -1
  574. package/dist/ai-sdk-client/chat/tool-processor.js +0 -53
  575. package/dist/ai-sdk-client/chat/tool-processor.js.map +0 -1
  576. package/dist/hooks/chat-handler/utils/context-checker.d.ts +0 -15
  577. package/dist/hooks/chat-handler/utils/context-checker.d.ts.map +0 -1
  578. package/dist/hooks/chat-handler/utils/context-checker.js +0 -68
  579. package/dist/hooks/chat-handler/utils/context-checker.js.map +0 -1
  580. package/dist/tool-calling/json-parser.d.ts +0 -24
  581. package/dist/tool-calling/json-parser.d.ts.map +0 -1
  582. package/dist/tool-calling/json-parser.js +0 -202
  583. package/dist/tool-calling/json-parser.js.map +0 -1
  584. package/dist/tools/string-replace.d.ts +0 -3
  585. package/dist/tools/string-replace.d.ts.map +0 -1
  586. package/dist/tools/string-replace.js +0 -461
  587. package/dist/tools/string-replace.js.map +0 -1
  588. package/dist/tools/write-file.d.ts +0 -3
  589. package/dist/tools/write-file.d.ts.map +0 -1
  590. package/dist/tools/write-file.js.map +0 -1
@@ -38,19 +38,31 @@ export function useAppState() {
38
38
  const [isSettingsMode, setIsSettingsMode] = useState(false);
39
39
  // Cancellation state
40
40
  const [abortController, setAbortController] = useState(null);
41
- // Mode states
42
- const [isModelSelectionMode, setIsModelSelectionMode] = useState(false);
43
- const [isProviderSelectionMode, setIsProviderSelectionMode] = useState(false);
44
- const [isModelDatabaseMode, setIsModelDatabaseMode] = useState(false);
45
- const [isConfigWizardMode, setIsConfigWizardMode] = useState(false);
46
- const [isMcpWizardMode, setIsMcpWizardMode] = useState(false);
47
- const [isCheckpointLoadMode, setIsCheckpointLoadMode] = useState(false);
48
- const [isExplorerMode, setIsExplorerMode] = useState(false);
41
+ // Unified modal/mode state - replaces 11 individual boolean states
42
+ const [activeMode, setActiveMode] = useState(null);
43
+ const [isVscodeEnabled, setIsVscodeEnabled] = useState(false);
49
44
  const [checkpointLoadData, setCheckpointLoadData] = useState(null);
45
+ const [showAllSessions, setShowAllSessions] = useState(false);
46
+ const [currentSessionId, setCurrentSessionId] = useState(null);
50
47
  const [isToolConfirmationMode, setIsToolConfirmationMode] = useState(false);
51
48
  const [isToolExecuting, setIsToolExecuting] = useState(false);
49
+ // Compact tool display state
50
+ const [compactToolDisplay, setCompactToolDisplay] = useState(true);
51
+ // Ref keeps current value accessible to long-running async loops
52
+ const compactToolDisplayRef = useRef(true);
53
+ compactToolDisplayRef.current = compactToolDisplay;
54
+ const [compactToolCounts, setCompactToolCounts] = useState(null);
55
+ // Mutable ref for the compact counts accumulator - shared between
56
+ // the async conversation loop and the toggle handler
57
+ const compactToolCountsRef = useRef({});
58
+ // Question mode state (ask_question tool)
59
+ const [isQuestionMode, setIsQuestionMode] = useState(false);
60
+ const [pendingQuestion, setPendingQuestion] = useState(null);
52
61
  // Development mode state
53
62
  const [developmentMode, setDevelopmentMode] = useState('normal');
63
+ // Context usage state
64
+ const [contextPercentUsed, setContextPercentUsed] = useState(null);
65
+ const [contextLimit, setContextLimit] = useState(null);
54
66
  // Tool confirmation state
55
67
  const [pendingToolCalls, setPendingToolCalls] = useState([]);
56
68
  const [currentToolIndex, setCurrentToolIndex] = useState(0);
@@ -164,17 +176,35 @@ export function useAppState() {
164
176
  isConversationComplete,
165
177
  isSettingsMode,
166
178
  abortController,
167
- isModelSelectionMode,
168
- isProviderSelectionMode,
169
- isModelDatabaseMode,
170
- isConfigWizardMode,
171
- isMcpWizardMode,
172
- isCheckpointLoadMode,
173
- isExplorerMode,
179
+ // Unified mode state
180
+ activeMode,
181
+ setActiveMode,
182
+ // Derived mode booleans (read-only convenience)
183
+ isModelSelectionMode: activeMode === 'model',
184
+ isProviderSelectionMode: activeMode === 'provider',
185
+ isModelDatabaseMode: activeMode === 'modelDatabase',
186
+ isConfigWizardMode: activeMode === 'configWizard',
187
+ isMcpWizardMode: activeMode === 'mcpWizard',
188
+ isCheckpointLoadMode: activeMode === 'checkpointLoad',
189
+ isExplorerMode: activeMode === 'explorer',
190
+ isIdeSelectionMode: activeMode === 'ideSelection',
191
+ isSchedulerMode: activeMode === 'scheduler',
192
+ isSessionSelectorMode: activeMode === 'sessionSelector',
193
+ isVscodeEnabled,
174
194
  checkpointLoadData,
195
+ showAllSessions,
196
+ currentSessionId,
175
197
  isToolConfirmationMode,
176
198
  isToolExecuting,
199
+ compactToolDisplay,
200
+ compactToolDisplayRef,
201
+ compactToolCounts,
202
+ compactToolCountsRef,
203
+ isQuestionMode,
204
+ pendingQuestion,
177
205
  developmentMode,
206
+ contextPercentUsed,
207
+ contextLimit,
178
208
  pendingToolCalls,
179
209
  currentToolIndex,
180
210
  completedToolResults,
@@ -206,17 +236,19 @@ export function useAppState() {
206
236
  setIsConversationComplete,
207
237
  setIsSettingsMode,
208
238
  setAbortController,
209
- setIsModelSelectionMode,
210
- setIsProviderSelectionMode,
211
- setIsModelDatabaseMode,
212
- setIsConfigWizardMode,
213
- setIsMcpWizardMode,
214
- setIsCheckpointLoadMode,
215
- setIsExplorerMode,
239
+ setIsVscodeEnabled,
216
240
  setCheckpointLoadData,
241
+ setShowAllSessions,
242
+ setCurrentSessionId,
217
243
  setIsToolConfirmationMode,
218
244
  setIsToolExecuting,
245
+ setCompactToolDisplay,
246
+ setCompactToolCounts,
247
+ setIsQuestionMode,
248
+ setPendingQuestion,
219
249
  setDevelopmentMode,
250
+ setContextPercentUsed,
251
+ setContextLimit,
220
252
  setPendingToolCalls,
221
253
  setCurrentToolIndex,
222
254
  setCompletedToolResults,
@@ -1 +1 @@
1
- {"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../source/hooks/useAppState.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../source/hooks/useAppState.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ToolManager } from '../tools/tool-manager.js';
2
+ import type { Message } from '../types/core.js';
3
+ import type { Tokenizer } from '../types/tokenization.js';
4
+ interface UseContextPercentageProps {
5
+ currentModel: string;
6
+ messages: Message[];
7
+ tokenizer: Tokenizer;
8
+ getMessageTokens: (message: Message) => number;
9
+ toolManager: ToolManager | null;
10
+ streamingTokenCount: number;
11
+ contextLimit: number | null;
12
+ setContextPercentUsed: (value: number | null) => void;
13
+ setContextLimit: (value: number | null) => void;
14
+ }
15
+ export declare function useContextPercentage({ currentModel, messages, tokenizer, getMessageTokens, toolManager, streamingTokenCount, contextLimit, setContextPercentUsed, setContextLimit, }: UseContextPercentageProps): void;
16
+ export {};
17
+ //# sourceMappingURL=useContextPercentage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContextPercentage.d.ts","sourceRoot":"","sources":["../../source/hooks/useContextPercentage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAOpD,UAAU,yBAAyB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAAC,EACpC,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,eAAe,GACf,EAAE,yBAAyB,GAAG,IAAI,CA+ElC"}
@@ -0,0 +1,71 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { getModelContextLimit } from '../models/index.js';
3
+ import { calculateTokenBreakdown, calculateToolDefinitionsTokens, } from '../usage/calculator.js';
4
+ import { processPromptTemplate } from '../utils/prompt-processor.js';
5
+ export function useContextPercentage({ currentModel, messages, tokenizer, getMessageTokens, toolManager, streamingTokenCount, contextLimit, setContextPercentUsed, setContextLimit, }) {
6
+ const contextLimitRef = useRef(null);
7
+ const lastModelRef = useRef('');
8
+ // Effect 1: Resolve context limit when model changes
9
+ useEffect(() => {
10
+ if (!currentModel) {
11
+ contextLimitRef.current = null;
12
+ setContextLimit(null);
13
+ setContextPercentUsed(null);
14
+ return;
15
+ }
16
+ if (currentModel === lastModelRef.current)
17
+ return;
18
+ lastModelRef.current = currentModel;
19
+ let cancelled = false;
20
+ void getModelContextLimit(currentModel).then(limit => {
21
+ if (cancelled)
22
+ return;
23
+ contextLimitRef.current = limit;
24
+ setContextLimit(limit);
25
+ if (!limit) {
26
+ setContextPercentUsed(null);
27
+ }
28
+ });
29
+ return () => {
30
+ cancelled = true;
31
+ };
32
+ }, [currentModel, setContextLimit, setContextPercentUsed]);
33
+ // Effect 2: Recalculate percentage when messages, streaming tokens, or context limit change
34
+ useEffect(() => {
35
+ const limit = contextLimitRef.current;
36
+ if (!limit) {
37
+ setContextPercentUsed(null);
38
+ return;
39
+ }
40
+ // Include system prompt in calculation (same as /usage command)
41
+ const systemPrompt = processPromptTemplate();
42
+ const systemMessage = {
43
+ role: 'system',
44
+ content: systemPrompt,
45
+ };
46
+ const breakdown = calculateTokenBreakdown([systemMessage, ...messages], tokenizer, (message) => {
47
+ // System message won't be in the cache, use tokenizer directly
48
+ if (message.role === 'system') {
49
+ return tokenizer.countTokens(message);
50
+ }
51
+ return getMessageTokens(message);
52
+ });
53
+ // Include tool definition overhead (same as /usage command)
54
+ const toolDefTokens = toolManager
55
+ ? calculateToolDefinitionsTokens(Object.keys(toolManager.getToolRegistry()).length)
56
+ : 0;
57
+ const total = breakdown.total + toolDefTokens + streamingTokenCount;
58
+ const percent = Math.round((total / limit) * 100);
59
+ setContextPercentUsed(percent);
60
+ // contextLimit is included to re-trigger calculation after async limit resolution
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ }, [
63
+ messages,
64
+ tokenizer,
65
+ getMessageTokens,
66
+ toolManager,
67
+ streamingTokenCount,
68
+ setContextPercentUsed,
69
+ ]);
70
+ }
71
+ //# sourceMappingURL=useContextPercentage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContextPercentage.js","sourceRoot":"","sources":["../../source/hooks/useContextPercentage.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,31 @@
1
1
  import React from 'react';
2
+ import type { ActiveMode } from '../hooks/useAppState.js';
2
3
  import { LLMClient, Message } from '../types/core.js';
3
- import type { ThemePreset } from '../types/ui.js';
4
4
  interface UseModeHandlersProps {
5
5
  client: LLMClient | null;
6
6
  currentModel: string;
7
7
  currentProvider: string;
8
- currentTheme: ThemePreset;
9
8
  setClient: (client: LLMClient | null) => void;
10
9
  setCurrentModel: (model: string) => void;
11
10
  setCurrentProvider: (provider: string) => void;
12
- setCurrentTheme: (theme: ThemePreset) => void;
13
11
  setMessages: (messages: Message[]) => void;
14
- setIsModelSelectionMode: (mode: boolean) => void;
15
- setIsProviderSelectionMode: (mode: boolean) => void;
16
- setIsModelDatabaseMode: (mode: boolean) => void;
17
- setIsConfigWizardMode: (mode: boolean) => void;
12
+ setActiveMode: (mode: ActiveMode) => void;
18
13
  setIsSettingsMode: (mode: boolean) => void;
19
- setIsMcpWizardMode: (mode: boolean) => void;
20
- setIsExplorerMode: (mode: boolean) => void;
21
14
  addToChatQueue: (component: React.ReactNode) => void;
22
15
  getNextComponentKey: () => number;
23
16
  reinitializeMCPServers: (toolManager: import('../tools/tool-manager.js').ToolManager) => Promise<void>;
24
17
  }
25
- export declare function useModeHandlers({ client, currentModel, currentProvider, currentTheme: _currentTheme, setClient, setCurrentModel, setCurrentProvider, setCurrentTheme: _setCurrentTheme, setMessages, setIsModelSelectionMode, setIsProviderSelectionMode, setIsModelDatabaseMode, setIsConfigWizardMode, setIsSettingsMode, setIsMcpWizardMode, setIsExplorerMode, addToChatQueue, getNextComponentKey, reinitializeMCPServers, }: UseModeHandlersProps): {
18
+ export declare function useModeHandlers({ client, currentModel, currentProvider, setClient, setCurrentModel, setCurrentProvider, setMessages, setActiveMode, setIsSettingsMode, addToChatQueue, getNextComponentKey, reinitializeMCPServers, }: UseModeHandlersProps): {
19
+ enterMode: (mode: ActiveMode) => void;
20
+ exitMode: () => void;
26
21
  enterModelSelectionMode: () => void;
27
22
  enterProviderSelectionMode: () => void;
28
23
  enterModelDatabaseMode: () => void;
29
24
  enterConfigWizardMode: () => void;
30
- enterSettingsMode: () => void;
31
25
  enterMcpWizardMode: () => void;
26
+ enterExplorerMode: () => void;
27
+ enterIdeSelectionMode: () => void;
28
+ enterSettingsMode: () => void;
32
29
  handleModelSelect: (selectedModel: string) => Promise<void>;
33
30
  handleModelSelectionCancel: () => void;
34
31
  handleProviderSelect: (selectedProvider: string) => Promise<void>;
@@ -39,8 +36,8 @@ export declare function useModeHandlers({ client, currentModel, currentProvider,
39
36
  handleMcpWizardComplete: (configPath?: string) => Promise<void>;
40
37
  handleMcpWizardCancel: () => void;
41
38
  handleSettingsCancel: () => void;
42
- enterExplorerMode: () => void;
43
39
  handleExplorerCancel: () => void;
40
+ handleIdeSelectionCancel: () => void;
44
41
  };
45
42
  export {};
46
43
  //# sourceMappingURL=useModeHandlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModeHandlers.d.ts","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,UAAU,oBAAoB;IAC7B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,0BAA0B,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,sBAAsB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,qBAAqB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,sBAAsB,EAAE,CACvB,WAAW,EAAE,OAAO,sBAAsB,EAAE,WAAW,KACnD,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,EAC/B,MAAM,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EAAE,aAAa,EAC3B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,eAAe,EAAE,gBAAgB,EACjC,WAAW,EACX,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,GACtB,EAAE,oBAAoB;;;;;;;uCAY0B,MAAM;;6CA8BA,MAAM;;;8CA+EL,MAAM;;2CAsFT,MAAM;;;;;EAqF1D"}
1
+ {"version":3,"file":"useModeHandlers.d.ts","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAEhD,UAAU,oBAAoB;IAC7B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,sBAAsB,EAAE,CACvB,WAAW,EAAE,OAAO,sBAAsB,EAAE,WAAW,KACnD,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,EAC/B,MAAM,EACN,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,GACtB,EAAE,oBAAoB;sBAEG,UAAU;;;;;;;;;;uCAIa,MAAM;;6CAwBA,MAAM;;;8CAiDL,MAAM;;2CAqET,MAAM;;;;;EA+D1D"}
@@ -4,15 +4,10 @@ import { ErrorMessage, SuccessMessage } from '../components/message-box.js';
4
4
  import { reloadAppConfig } from '../config/index.js';
5
5
  import { loadPreferences, updateLastUsed } from '../config/preferences.js';
6
6
  import { getToolManager } from '../message-handler.js';
7
- export function useModeHandlers({ client, currentModel, currentProvider, currentTheme: _currentTheme, setClient, setCurrentModel, setCurrentProvider, setCurrentTheme: _setCurrentTheme, setMessages, setIsModelSelectionMode, setIsProviderSelectionMode, setIsModelDatabaseMode, setIsConfigWizardMode, setIsSettingsMode, setIsMcpWizardMode, setIsExplorerMode, addToChatQueue, getNextComponentKey, reinitializeMCPServers, }) {
8
- // Helper function to enter model selection mode
9
- const enterModelSelectionMode = () => {
10
- setIsModelSelectionMode(true);
11
- };
12
- // Helper function to enter provider selection mode
13
- const enterProviderSelectionMode = () => {
14
- setIsProviderSelectionMode(true);
15
- };
7
+ export function useModeHandlers({ client, currentModel, currentProvider, setClient, setCurrentModel, setCurrentProvider, setMessages, setActiveMode, setIsSettingsMode, addToChatQueue, getNextComponentKey, reinitializeMCPServers, }) {
8
+ // Generic enter/exit helpers
9
+ const enterMode = (mode) => setActiveMode(mode);
10
+ const exitMode = () => setActiveMode(null);
16
11
  // Handle model selection
17
12
  const handleModelSelect = async (selectedModel) => {
18
13
  if (client && selectedModel !== currentModel) {
@@ -23,71 +18,40 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
23
18
  await client.clearContext();
24
19
  // Update preferences
25
20
  updateLastUsed(currentProvider, selectedModel);
26
- // Add success message to chat queue
27
21
  addToChatQueue(_jsx(SuccessMessage, { message: `Model changed to: ${selectedModel}. Chat history cleared.`, hideBox: true }, `model-changed-${getNextComponentKey()}`));
28
22
  }
29
- setIsModelSelectionMode(false);
30
- };
31
- // Handle model selection cancel
32
- const handleModelSelectionCancel = () => {
33
- setIsModelSelectionMode(false);
23
+ exitMode();
34
24
  };
35
25
  // Handle provider selection
36
26
  const handleProviderSelect = async (selectedProvider) => {
37
27
  if (selectedProvider !== currentProvider) {
38
28
  try {
39
- // Create new client for the selected provider
40
29
  const { client: newClient, actualProvider } = await createLLMClient(selectedProvider);
41
- // Check if we got the provider we requested
42
30
  if (actualProvider !== selectedProvider) {
43
- // Provider was forced to a different one (likely due to missing config)
44
31
  addToChatQueue(_jsx(ErrorMessage, { message: `${selectedProvider} is not available. Please ensure it's properly configured in agents.config.json.`, hideBox: true }, `provider-forced-${getNextComponentKey()}`));
45
- return; // Don't change anything
32
+ return;
46
33
  }
47
34
  setClient(newClient);
48
35
  setCurrentProvider(actualProvider);
49
- // Set the model from the new client
50
36
  const newModel = newClient.getCurrentModel();
51
37
  setCurrentModel(newModel);
52
- // Clear message history when switching providers
53
38
  setMessages([]);
54
39
  await newClient.clearContext();
55
- // Update preferences - use the actualProvider (which is what was successfully created)
56
40
  updateLastUsed(actualProvider, newModel);
57
- // Add success message to chat queue
58
41
  addToChatQueue(_jsx(SuccessMessage, { message: `Provider changed to: ${actualProvider}, model: ${newModel}. Chat history cleared.`, hideBox: true }, `provider-changed-${getNextComponentKey()}`));
59
42
  }
60
43
  catch (error) {
61
- // Add error message if provider change fails
62
44
  addToChatQueue(_jsx(ErrorMessage, { message: `Failed to change provider to ${selectedProvider}: ${String(error)}`, hideBox: true }, `provider-error-${getNextComponentKey()}`));
63
45
  }
64
46
  }
65
- setIsProviderSelectionMode(false);
66
- };
67
- // Handle provider selection cancel
68
- const handleProviderSelectionCancel = () => {
69
- setIsProviderSelectionMode(false);
70
- };
71
- // Helper function to enter model database mode
72
- const enterModelDatabaseMode = () => {
73
- setIsModelDatabaseMode(true);
74
- };
75
- // Handle model database cancel
76
- const handleModelDatabaseCancel = () => {
77
- setIsModelDatabaseMode(false);
78
- };
79
- // Helper function to enter config wizard mode
80
- const enterConfigWizardMode = () => {
81
- setIsConfigWizardMode(true);
47
+ exitMode();
82
48
  };
83
- // Handle config wizard cancel/complete
49
+ // Handle config wizard complete - reinitializes client and MCP servers
84
50
  const handleConfigWizardComplete = async (configPath) => {
85
- setIsConfigWizardMode(false);
51
+ exitMode();
86
52
  if (configPath) {
87
53
  addToChatQueue(_jsx(SuccessMessage, { message: `Configuration saved to: ${configPath}.`, hideBox: true }, `config-wizard-complete-${getNextComponentKey()}`));
88
- // Reload the app configuration to pick up the newly saved config
89
54
  reloadAppConfig();
90
- // Reinitialize client with new configuration
91
55
  try {
92
56
  const preferences = loadPreferences();
93
57
  const { client: newClient, actualProvider } = await createLLMClient(preferences.lastProvider);
@@ -95,10 +59,8 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
95
59
  setCurrentProvider(actualProvider);
96
60
  const newModel = newClient.getCurrentModel();
97
61
  setCurrentModel(newModel);
98
- // Clear message history when switching providers
99
62
  setMessages([]);
100
63
  await newClient.clearContext();
101
- // Reinitialize MCP servers with the new configuration
102
64
  const toolManager = getToolManager();
103
65
  if (toolManager) {
104
66
  try {
@@ -116,21 +78,12 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
116
78
  }
117
79
  }
118
80
  };
119
- const handleConfigWizardCancel = () => {
120
- setIsConfigWizardMode(false);
121
- };
122
- // Helper function to enter MCP wizard mode
123
- const enterMcpWizardMode = () => {
124
- setIsMcpWizardMode(true);
125
- };
126
- // Handle MCP wizard cancel/complete
81
+ // Handle MCP wizard complete - reinitializes MCP servers
127
82
  const handleMcpWizardComplete = async (configPath) => {
128
- setIsMcpWizardMode(false);
83
+ exitMode();
129
84
  if (configPath) {
130
85
  addToChatQueue(_jsx(SuccessMessage, { message: `MCP configuration saved to: ${configPath}.`, hideBox: true }, `mcp-wizard-complete-${getNextComponentKey()}`));
131
- // Reload the app configuration to pick up the newly saved config
132
86
  reloadAppConfig();
133
- // Reinitialize MCP servers with the new configuration
134
87
  const toolManager = getToolManager();
135
88
  if (toolManager) {
136
89
  try {
@@ -143,44 +96,31 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
143
96
  }
144
97
  }
145
98
  };
146
- const handleMcpWizardCancel = () => {
147
- setIsMcpWizardMode(false);
148
- };
149
- // Helper function to enter settings mode
150
- const enterSettingsMode = () => {
151
- setIsSettingsMode(true);
152
- };
153
- // Handle settings cancel
154
- const handleSettingsCancel = () => {
155
- setIsSettingsMode(false);
156
- };
157
- // Helper function to enter explorer mode
158
- const enterExplorerMode = () => {
159
- setIsExplorerMode(true);
160
- };
161
- // Handle explorer cancel
162
- const handleExplorerCancel = () => {
163
- setIsExplorerMode(false);
164
- };
165
99
  return {
166
- enterModelSelectionMode,
167
- enterProviderSelectionMode,
168
- enterModelDatabaseMode,
169
- enterConfigWizardMode,
170
- enterSettingsMode,
171
- enterMcpWizardMode,
100
+ enterMode,
101
+ exitMode,
102
+ // Convenience enter helpers
103
+ enterModelSelectionMode: () => enterMode('model'),
104
+ enterProviderSelectionMode: () => enterMode('provider'),
105
+ enterModelDatabaseMode: () => enterMode('modelDatabase'),
106
+ enterConfigWizardMode: () => enterMode('configWizard'),
107
+ enterMcpWizardMode: () => enterMode('mcpWizard'),
108
+ enterExplorerMode: () => enterMode('explorer'),
109
+ enterIdeSelectionMode: () => enterMode('ideSelection'),
110
+ enterSettingsMode: () => setIsSettingsMode(true),
111
+ // Cancel/complete handlers
172
112
  handleModelSelect,
173
- handleModelSelectionCancel,
113
+ handleModelSelectionCancel: exitMode,
174
114
  handleProviderSelect,
175
- handleProviderSelectionCancel,
176
- handleModelDatabaseCancel,
115
+ handleProviderSelectionCancel: exitMode,
116
+ handleModelDatabaseCancel: exitMode,
177
117
  handleConfigWizardComplete,
178
- handleConfigWizardCancel,
118
+ handleConfigWizardCancel: exitMode,
179
119
  handleMcpWizardComplete,
180
- handleMcpWizardCancel,
181
- handleSettingsCancel,
182
- enterExplorerMode,
183
- handleExplorerCancel,
120
+ handleMcpWizardCancel: exitMode,
121
+ handleSettingsCancel: () => setIsSettingsMode(false),
122
+ handleExplorerCancel: exitMode,
123
+ handleIdeSelectionCancel: exitMode,
184
124
  };
185
125
  }
186
126
  //# sourceMappingURL=useModeHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModeHandlers.js","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModeHandlers.js","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"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"}
@@ -13,6 +13,13 @@ export interface NonInteractiveModeResult {
13
13
  nonInteractiveSubmitted: boolean;
14
14
  nonInteractiveLoadingMessage: string | null;
15
15
  }
16
+ /**
17
+ * Calculates the effective timeout based on provider configuration.
18
+ *
19
+ * @param client - The LLM client which may have provider-level timeouts
20
+ * @returns Final timeout in milliseconds
21
+ */
22
+ export declare function calculateEffectiveTimeout(client: LLMClient | null): number;
16
23
  /**
17
24
  * Handles non-interactive mode logic:
18
25
  * - Automatically submits prompt when ready
@@ -1 +1 @@
1
- {"version":3,"file":"useNonInteractiveMode.d.ts","sourceRoot":"","sources":["../../source/hooks/useNonInteractiveMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAC,eAAe,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAGxD,UAAU,0BAA0B;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB;IACxC,uBAAuB,EAAE,OAAO,CAAC;IACjC,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EACrC,oBAAoB,EACpB,cAAc,EACd,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,GACnB,EAAE,0BAA0B,GAAG,wBAAwB,CAuGvD"}
1
+ {"version":3,"file":"useNonInteractiveMode.d.ts","sourceRoot":"","sources":["../../source/hooks/useNonInteractiveMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAC,eAAe,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAIxD,UAAU,0BAA0B;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB;IACxC,uBAAuB,EAAE,OAAO,CAAC;IACjC,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAQD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAsB1E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EACrC,oBAAoB,EACpB,cAAc,EACd,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,GACnB,EAAE,0BAA0B,GAAG,wBAAwB,CA+GvD"}
@@ -3,6 +3,36 @@ import { isNonInteractiveModeComplete } from '../app/helpers.js';
3
3
  import { TIMEOUT_EXECUTION_MAX_MS, TIMEOUT_OUTPUT_FLUSH_MS } from '../constants.js';
4
4
  import { setCurrentMode as setCurrentModeContext } from '../context/mode-context.js';
5
5
  import { getLogger } from '../utils/logging/index.js';
6
+ import { getShutdownManager } from '../utils/shutdown/index.js';
7
+ // Buffer factor ensures we allow enough time for the provider response plus overhead
8
+ // Doubling is used because provider timeouts often refer to individual request segments
9
+ // or initial socket connection, while this execution timeout covers the entire
10
+ // multi-step process including output flushing and initial setup.
11
+ const TIMEOUT_BUFFER_FACTOR = 2;
12
+ /**
13
+ * Calculates the effective timeout based on provider configuration.
14
+ *
15
+ * @param client - The LLM client which may have provider-level timeouts
16
+ * @returns Final timeout in milliseconds
17
+ */
18
+ export function calculateEffectiveTimeout(client) {
19
+ let effectiveTimeout = TIMEOUT_EXECUTION_MAX_MS;
20
+ if (client) {
21
+ const configuredTimeout = client.getTimeout();
22
+ if (configuredTimeout === -1) {
23
+ // -1 means no timeout
24
+ effectiveTimeout = Number.MAX_SAFE_INTEGER;
25
+ }
26
+ else if (configuredTimeout !== undefined) {
27
+ // If the provider timeout is longer than the default 5 mins,
28
+ // we should allow it to run for at least that long with a safety buffer.
29
+ // We use a buffer because the overall execution includes overhead beyond
30
+ // the raw provider request time.
31
+ effectiveTimeout = Math.max(TIMEOUT_EXECUTION_MAX_MS, configuredTimeout * TIMEOUT_BUFFER_FACTOR);
32
+ }
33
+ }
34
+ return effectiveTimeout;
35
+ }
6
36
  /**
7
37
  * Handles non-interactive mode logic:
8
38
  * - Automatically submits prompt when ready
@@ -40,7 +70,9 @@ export function useNonInteractiveMode({ nonInteractivePrompt, mcpInitialized, cl
40
70
  // Exit when processing is complete
41
71
  React.useEffect(() => {
42
72
  if (nonInteractivePrompt && nonInteractiveSubmitted) {
43
- const { shouldExit, reason } = isNonInteractiveModeComplete(appState, startTime, TIMEOUT_EXECUTION_MAX_MS);
73
+ // Calculate timeout based on provider config if available
74
+ const effectiveTimeout = calculateEffectiveTimeout(client);
75
+ const { shouldExit, reason } = isNonInteractiveModeComplete(appState, startTime, effectiveTimeout);
44
76
  if (shouldExit) {
45
77
  const logger = getLogger();
46
78
  if (reason === 'timeout') {
@@ -54,13 +86,20 @@ export function useNonInteractiveMode({ nonInteractivePrompt, mcpInitialized, cl
54
86
  // Error message already printed by useChatHandler
55
87
  }
56
88
  // Wait a bit to ensure all output is flushed
89
+ const code = reason === 'error' || reason === 'tool-approval' ? 1 : 0;
57
90
  const timer = setTimeout(() => {
58
- process.exit(reason === 'error' || reason === 'tool-approval' ? 1 : 0);
91
+ void getShutdownManager().gracefulShutdown(code);
59
92
  }, TIMEOUT_OUTPUT_FLUSH_MS);
60
93
  return () => clearTimeout(timer);
61
94
  }
62
95
  }
63
- }, [nonInteractivePrompt, nonInteractiveSubmitted, appState, startTime]);
96
+ }, [
97
+ nonInteractivePrompt,
98
+ nonInteractiveSubmitted,
99
+ appState,
100
+ startTime,
101
+ client,
102
+ ]);
64
103
  // Compute loading message
65
104
  const nonInteractiveLoadingMessage = React.useMemo(() => {
66
105
  if (!nonInteractivePrompt) {