@nanocollective/nanocoder 1.11.3

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 (392) hide show
  1. package/LICENSE.md +23 -0
  2. package/README.md +366 -0
  3. package/dist/app/hooks/useAppInitialization.d.ts +26 -0
  4. package/dist/app/hooks/useAppInitialization.d.ts.map +1 -0
  5. package/dist/app/hooks/useAppInitialization.js +151 -0
  6. package/dist/app/hooks/useAppInitialization.js.map +1 -0
  7. package/dist/app/hooks/useAppState.d.ts +84 -0
  8. package/dist/app/hooks/useAppState.d.ts.map +1 -0
  9. package/dist/app/hooks/useAppState.js +162 -0
  10. package/dist/app/hooks/useAppState.js.map +1 -0
  11. package/dist/app/hooks/useChatHandler.d.ts +26 -0
  12. package/dist/app/hooks/useChatHandler.d.ts.map +1 -0
  13. package/dist/app/hooks/useChatHandler.js +532 -0
  14. package/dist/app/hooks/useChatHandler.js.map +1 -0
  15. package/dist/app/hooks/useDirectoryTrust.d.ts +15 -0
  16. package/dist/app/hooks/useDirectoryTrust.d.ts.map +1 -0
  17. package/dist/app/hooks/useDirectoryTrust.js +77 -0
  18. package/dist/app/hooks/useDirectoryTrust.js.map +1 -0
  19. package/dist/app/hooks/useModeHandlers.d.ts +31 -0
  20. package/dist/app/hooks/useModeHandlers.d.ts.map +1 -0
  21. package/dist/app/hooks/useModeHandlers.js +98 -0
  22. package/dist/app/hooks/useModeHandlers.js.map +1 -0
  23. package/dist/app/hooks/useToolHandler.d.ts +32 -0
  24. package/dist/app/hooks/useToolHandler.d.ts.map +1 -0
  25. package/dist/app/hooks/useToolHandler.js +154 -0
  26. package/dist/app/hooks/useToolHandler.js.map +1 -0
  27. package/dist/app/utils/appUtils.d.ts +4 -0
  28. package/dist/app/utils/appUtils.d.ts.map +1 -0
  29. package/dist/app/utils/appUtils.js +147 -0
  30. package/dist/app/utils/appUtils.js.map +1 -0
  31. package/dist/app/utils/conversationState.d.ts +68 -0
  32. package/dist/app/utils/conversationState.d.ts.map +1 -0
  33. package/dist/app/utils/conversationState.js +199 -0
  34. package/dist/app/utils/conversationState.js.map +1 -0
  35. package/dist/app.d.ts +2 -0
  36. package/dist/app.d.ts.map +1 -0
  37. package/dist/app.js +193 -0
  38. package/dist/app.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +6 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/client-factory.d.ts +6 -0
  44. package/dist/client-factory.d.ts.map +1 -0
  45. package/dist/client-factory.js +111 -0
  46. package/dist/client-factory.js.map +1 -0
  47. package/dist/command-parser.d.ts +5 -0
  48. package/dist/command-parser.d.ts.map +1 -0
  49. package/dist/command-parser.js +36 -0
  50. package/dist/command-parser.js.map +1 -0
  51. package/dist/commands/clear.d.ts +3 -0
  52. package/dist/commands/clear.d.ts.map +1 -0
  53. package/dist/commands/clear.js +17 -0
  54. package/dist/commands/clear.js.map +1 -0
  55. package/dist/commands/custom-commands.d.ts +3 -0
  56. package/dist/commands/custom-commands.d.ts.map +1 -0
  57. package/dist/commands/custom-commands.js +41 -0
  58. package/dist/commands/custom-commands.js.map +1 -0
  59. package/dist/commands/debug.d.ts +3 -0
  60. package/dist/commands/debug.d.ts.map +1 -0
  61. package/dist/commands/debug.js +86 -0
  62. package/dist/commands/debug.js.map +1 -0
  63. package/dist/commands/exit.d.ts +3 -0
  64. package/dist/commands/exit.d.ts.map +1 -0
  65. package/dist/commands/exit.js +17 -0
  66. package/dist/commands/exit.js.map +1 -0
  67. package/dist/commands/export.d.ts +3 -0
  68. package/dist/commands/export.d.ts.map +1 -0
  69. package/dist/commands/export.js +63 -0
  70. package/dist/commands/export.js.map +1 -0
  71. package/dist/commands/help.d.ts +3 -0
  72. package/dist/commands/help.d.ts.map +1 -0
  73. package/dist/commands/help.js +31 -0
  74. package/dist/commands/help.js.map +1 -0
  75. package/dist/commands/index.d.ts +13 -0
  76. package/dist/commands/index.d.ts.map +1 -0
  77. package/dist/commands/index.js +13 -0
  78. package/dist/commands/index.js.map +1 -0
  79. package/dist/commands/init.d.ts +3 -0
  80. package/dist/commands/init.d.ts.map +1 -0
  81. package/dist/commands/init.js +214 -0
  82. package/dist/commands/init.js.map +1 -0
  83. package/dist/commands/mcp.d.ts +9 -0
  84. package/dist/commands/mcp.d.ts.map +1 -0
  85. package/dist/commands/mcp.js +41 -0
  86. package/dist/commands/mcp.js.map +1 -0
  87. package/dist/commands/model.d.ts +3 -0
  88. package/dist/commands/model.d.ts.map +1 -0
  89. package/dist/commands/model.js +11 -0
  90. package/dist/commands/model.js.map +1 -0
  91. package/dist/commands/provider.d.ts +3 -0
  92. package/dist/commands/provider.d.ts.map +1 -0
  93. package/dist/commands/provider.js +11 -0
  94. package/dist/commands/provider.js.map +1 -0
  95. package/dist/commands/theme.d.ts +3 -0
  96. package/dist/commands/theme.d.ts.map +1 -0
  97. package/dist/commands/theme.js +11 -0
  98. package/dist/commands/theme.js.map +1 -0
  99. package/dist/commands/update.d.ts +3 -0
  100. package/dist/commands/update.d.ts.map +1 -0
  101. package/dist/commands/update.js +10 -0
  102. package/dist/commands/update.js.map +1 -0
  103. package/dist/commands.d.ts +16 -0
  104. package/dist/commands.d.ts.map +1 -0
  105. package/dist/commands.js +46 -0
  106. package/dist/commands.js.map +1 -0
  107. package/dist/components/assistant-message.d.ts +4 -0
  108. package/dist/components/assistant-message.d.ts.map +1 -0
  109. package/dist/components/assistant-message.js +43 -0
  110. package/dist/components/assistant-message.js.map +1 -0
  111. package/dist/components/bash-execution-indicator.d.ts +4 -0
  112. package/dist/components/bash-execution-indicator.d.ts.map +1 -0
  113. package/dist/components/bash-execution-indicator.js +9 -0
  114. package/dist/components/bash-execution-indicator.js.map +1 -0
  115. package/dist/components/cancelling-indicator.d.ts +3 -0
  116. package/dist/components/cancelling-indicator.d.ts.map +1 -0
  117. package/dist/components/cancelling-indicator.js +10 -0
  118. package/dist/components/cancelling-indicator.js.map +1 -0
  119. package/dist/components/chat-queue.d.ts +4 -0
  120. package/dist/components/chat-queue.d.ts.map +1 -0
  121. package/dist/components/chat-queue.js +23 -0
  122. package/dist/components/chat-queue.js.map +1 -0
  123. package/dist/components/custom-commands.d.ts +7 -0
  124. package/dist/components/custom-commands.d.ts.map +1 -0
  125. package/dist/components/custom-commands.js +27 -0
  126. package/dist/components/custom-commands.js.map +1 -0
  127. package/dist/components/error-message.d.ts +7 -0
  128. package/dist/components/error-message.d.ts.map +1 -0
  129. package/dist/components/error-message.js +12 -0
  130. package/dist/components/error-message.js.map +1 -0
  131. package/dist/components/info-message.d.ts +6 -0
  132. package/dist/components/info-message.d.ts.map +1 -0
  133. package/dist/components/info-message.js +11 -0
  134. package/dist/components/info-message.js.map +1 -0
  135. package/dist/components/model-selector.d.ts +10 -0
  136. package/dist/components/model-selector.d.ts.map +1 -0
  137. package/dist/components/model-selector.js +59 -0
  138. package/dist/components/model-selector.js.map +1 -0
  139. package/dist/components/provider-selector.d.ts +9 -0
  140. package/dist/components/provider-selector.d.ts.map +1 -0
  141. package/dist/components/provider-selector.js +36 -0
  142. package/dist/components/provider-selector.js.map +1 -0
  143. package/dist/components/security-disclaimer.d.ts +7 -0
  144. package/dist/components/security-disclaimer.d.ts.map +1 -0
  145. package/dist/components/security-disclaimer.js +36 -0
  146. package/dist/components/security-disclaimer.js.map +1 -0
  147. package/dist/components/status.d.ts +6 -0
  148. package/dist/components/status.d.ts.map +1 -0
  149. package/dist/components/status.js +35 -0
  150. package/dist/components/status.js.map +1 -0
  151. package/dist/components/success-message.d.ts +6 -0
  152. package/dist/components/success-message.d.ts.map +1 -0
  153. package/dist/components/success-message.js +11 -0
  154. package/dist/components/success-message.js.map +1 -0
  155. package/dist/components/theme-selector.d.ts +8 -0
  156. package/dist/components/theme-selector.d.ts.map +1 -0
  157. package/dist/components/theme-selector.js +40 -0
  158. package/dist/components/theme-selector.js.map +1 -0
  159. package/dist/components/thinking-indicator.d.ts +4 -0
  160. package/dist/components/thinking-indicator.d.ts.map +1 -0
  161. package/dist/components/thinking-indicator.js +32 -0
  162. package/dist/components/thinking-indicator.js.map +1 -0
  163. package/dist/components/tool-confirmation.d.ts +9 -0
  164. package/dist/components/tool-confirmation.d.ts.map +1 -0
  165. package/dist/components/tool-confirmation.js +72 -0
  166. package/dist/components/tool-confirmation.js.map +1 -0
  167. package/dist/components/tool-execution-indicator.d.ts +3 -0
  168. package/dist/components/tool-execution-indicator.d.ts.map +1 -0
  169. package/dist/components/tool-execution-indicator.js +9 -0
  170. package/dist/components/tool-execution-indicator.js.map +1 -0
  171. package/dist/components/tool-message.d.ts +10 -0
  172. package/dist/components/tool-message.d.ts.map +1 -0
  173. package/dist/components/tool-message.js +16 -0
  174. package/dist/components/tool-message.js.map +1 -0
  175. package/dist/components/update-message.d.ts +7 -0
  176. package/dist/components/update-message.d.ts.map +1 -0
  177. package/dist/components/update-message.js +93 -0
  178. package/dist/components/update-message.js.map +1 -0
  179. package/dist/components/user-input.d.ts +10 -0
  180. package/dist/components/user-input.d.ts.map +1 -0
  181. package/dist/components/user-input.js +188 -0
  182. package/dist/components/user-input.js.map +1 -0
  183. package/dist/components/user-message.d.ts +4 -0
  184. package/dist/components/user-message.d.ts.map +1 -0
  185. package/dist/components/user-message.js +15 -0
  186. package/dist/components/user-message.js.map +1 -0
  187. package/dist/components/welcome-message.d.ts +3 -0
  188. package/dist/components/welcome-message.d.ts.map +1 -0
  189. package/dist/components/welcome-message.js +21 -0
  190. package/dist/components/welcome-message.js.map +1 -0
  191. package/dist/config/index.d.ts +10 -0
  192. package/dist/config/index.d.ts.map +1 -0
  193. package/dist/config/index.js +44 -0
  194. package/dist/config/index.js.map +1 -0
  195. package/dist/config/logging.d.ts +14 -0
  196. package/dist/config/logging.d.ts.map +1 -0
  197. package/dist/config/logging.js +58 -0
  198. package/dist/config/logging.js.map +1 -0
  199. package/dist/config/preferences.d.ts +7 -0
  200. package/dist/config/preferences.d.ts.map +1 -0
  201. package/dist/config/preferences.js +46 -0
  202. package/dist/config/preferences.js.map +1 -0
  203. package/dist/config/themes.d.ts +6 -0
  204. package/dist/config/themes.d.ts.map +1 -0
  205. package/dist/config/themes.js +295 -0
  206. package/dist/config/themes.js.map +1 -0
  207. package/dist/custom-commands/executor.d.ts +12 -0
  208. package/dist/custom-commands/executor.d.ts.map +1 -0
  209. package/dist/custom-commands/executor.js +45 -0
  210. package/dist/custom-commands/executor.js.map +1 -0
  211. package/dist/custom-commands/index.d.ts +4 -0
  212. package/dist/custom-commands/index.d.ts.map +1 -0
  213. package/dist/custom-commands/index.js +4 -0
  214. package/dist/custom-commands/index.js.map +1 -0
  215. package/dist/custom-commands/loader.d.ts +41 -0
  216. package/dist/custom-commands/loader.d.ts.map +1 -0
  217. package/dist/custom-commands/loader.js +129 -0
  218. package/dist/custom-commands/loader.js.map +1 -0
  219. package/dist/custom-commands/parser.d.ts +10 -0
  220. package/dist/custom-commands/parser.d.ts.map +1 -0
  221. package/dist/custom-commands/parser.js +181 -0
  222. package/dist/custom-commands/parser.js.map +1 -0
  223. package/dist/hooks/useInputState.d.ts +14 -0
  224. package/dist/hooks/useInputState.d.ts.map +1 -0
  225. package/dist/hooks/useInputState.js +66 -0
  226. package/dist/hooks/useInputState.js.map +1 -0
  227. package/dist/hooks/useTerminalWidth.d.ts +2 -0
  228. package/dist/hooks/useTerminalWidth.d.ts.map +1 -0
  229. package/dist/hooks/useTerminalWidth.js +20 -0
  230. package/dist/hooks/useTerminalWidth.js.map +1 -0
  231. package/dist/hooks/useTheme.d.ts +9 -0
  232. package/dist/hooks/useTheme.d.ts.map +1 -0
  233. package/dist/hooks/useTheme.js +10 -0
  234. package/dist/hooks/useTheme.js.map +1 -0
  235. package/dist/hooks/useUIState.d.ts +19 -0
  236. package/dist/hooks/useUIState.d.ts.map +1 -0
  237. package/dist/hooks/useUIState.js +46 -0
  238. package/dist/hooks/useUIState.js.map +1 -0
  239. package/dist/init/agents-template-generator.d.ts +29 -0
  240. package/dist/init/agents-template-generator.d.ts.map +1 -0
  241. package/dist/init/agents-template-generator.js +340 -0
  242. package/dist/init/agents-template-generator.js.map +1 -0
  243. package/dist/init/existing-rules-extractor.d.ts +43 -0
  244. package/dist/init/existing-rules-extractor.d.ts.map +1 -0
  245. package/dist/init/existing-rules-extractor.js +226 -0
  246. package/dist/init/existing-rules-extractor.js.map +1 -0
  247. package/dist/init/file-scanner.d.ts +40 -0
  248. package/dist/init/file-scanner.d.ts.map +1 -0
  249. package/dist/init/file-scanner.js +153 -0
  250. package/dist/init/file-scanner.js.map +1 -0
  251. package/dist/init/framework-detector.d.ts +57 -0
  252. package/dist/init/framework-detector.d.ts.map +1 -0
  253. package/dist/init/framework-detector.js +277 -0
  254. package/dist/init/framework-detector.js.map +1 -0
  255. package/dist/init/language-detector.d.ts +31 -0
  256. package/dist/init/language-detector.d.ts.map +1 -0
  257. package/dist/init/language-detector.js +205 -0
  258. package/dist/init/language-detector.js.map +1 -0
  259. package/dist/init/project-analyzer.d.ts +62 -0
  260. package/dist/init/project-analyzer.d.ts.map +1 -0
  261. package/dist/init/project-analyzer.js +294 -0
  262. package/dist/init/project-analyzer.js.map +1 -0
  263. package/dist/langgraph-client.d.ts +20 -0
  264. package/dist/langgraph-client.d.ts.map +1 -0
  265. package/dist/langgraph-client.js +245 -0
  266. package/dist/langgraph-client.js.map +1 -0
  267. package/dist/mcp/mcp-client.d.ts +23 -0
  268. package/dist/mcp/mcp-client.d.ts.map +1 -0
  269. package/dist/mcp/mcp-client.js +194 -0
  270. package/dist/mcp/mcp-client.js.map +1 -0
  271. package/dist/mcp/mcp-tool-adapter.d.ts +22 -0
  272. package/dist/mcp/mcp-tool-adapter.d.ts.map +1 -0
  273. package/dist/mcp/mcp-tool-adapter.js +49 -0
  274. package/dist/mcp/mcp-tool-adapter.js.map +1 -0
  275. package/dist/message-handler.d.ts +7 -0
  276. package/dist/message-handler.d.ts.map +1 -0
  277. package/dist/message-handler.js +53 -0
  278. package/dist/message-handler.js.map +1 -0
  279. package/dist/prompt-history.d.ts +14 -0
  280. package/dist/prompt-history.d.ts.map +1 -0
  281. package/dist/prompt-history.js +88 -0
  282. package/dist/prompt-history.js.map +1 -0
  283. package/dist/tool-calling/index.d.ts +6 -0
  284. package/dist/tool-calling/index.d.ts.map +1 -0
  285. package/dist/tool-calling/index.js +5 -0
  286. package/dist/tool-calling/index.js.map +1 -0
  287. package/dist/tool-calling/json-parser.d.ts +7 -0
  288. package/dist/tool-calling/json-parser.d.ts.map +1 -0
  289. package/dist/tool-calling/json-parser.js +168 -0
  290. package/dist/tool-calling/json-parser.js.map +1 -0
  291. package/dist/tool-calling/xml-parser.d.ts +34 -0
  292. package/dist/tool-calling/xml-parser.d.ts.map +1 -0
  293. package/dist/tool-calling/xml-parser.js +113 -0
  294. package/dist/tool-calling/xml-parser.js.map +1 -0
  295. package/dist/tools/create-file.d.ts +3 -0
  296. package/dist/tools/create-file.d.ts.map +1 -0
  297. package/dist/tools/create-file.js +66 -0
  298. package/dist/tools/create-file.js.map +1 -0
  299. package/dist/tools/delete-lines.d.ts +3 -0
  300. package/dist/tools/delete-lines.d.ts.map +1 -0
  301. package/dist/tools/delete-lines.js +218 -0
  302. package/dist/tools/delete-lines.js.map +1 -0
  303. package/dist/tools/execute-bash.d.ts +3 -0
  304. package/dist/tools/execute-bash.d.ts.map +1 -0
  305. package/dist/tools/execute-bash.js +107 -0
  306. package/dist/tools/execute-bash.js.map +1 -0
  307. package/dist/tools/index.d.ts +7 -0
  308. package/dist/tools/index.d.ts.map +1 -0
  309. package/dist/tools/index.js +23 -0
  310. package/dist/tools/index.js.map +1 -0
  311. package/dist/tools/insert-lines.d.ts +3 -0
  312. package/dist/tools/insert-lines.d.ts.map +1 -0
  313. package/dist/tools/insert-lines.js +185 -0
  314. package/dist/tools/insert-lines.js.map +1 -0
  315. package/dist/tools/read-file.d.ts +3 -0
  316. package/dist/tools/read-file.d.ts.map +1 -0
  317. package/dist/tools/read-file.js +81 -0
  318. package/dist/tools/read-file.js.map +1 -0
  319. package/dist/tools/read-many-files.d.ts +3 -0
  320. package/dist/tools/read-many-files.d.ts.map +1 -0
  321. package/dist/tools/read-many-files.js +109 -0
  322. package/dist/tools/read-many-files.js.map +1 -0
  323. package/dist/tools/replace-lines.d.ts +3 -0
  324. package/dist/tools/replace-lines.d.ts.map +1 -0
  325. package/dist/tools/replace-lines.js +220 -0
  326. package/dist/tools/replace-lines.js.map +1 -0
  327. package/dist/tools/tool-manager.d.ts +54 -0
  328. package/dist/tools/tool-manager.d.ts.map +1 -0
  329. package/dist/tools/tool-manager.js +108 -0
  330. package/dist/tools/tool-manager.js.map +1 -0
  331. package/dist/types/app.d.ts +46 -0
  332. package/dist/types/app.d.ts.map +1 -0
  333. package/dist/types/app.js +2 -0
  334. package/dist/types/app.js.map +1 -0
  335. package/dist/types/commands.d.ts +36 -0
  336. package/dist/types/commands.d.ts.map +1 -0
  337. package/dist/types/commands.js +2 -0
  338. package/dist/types/commands.js.map +1 -0
  339. package/dist/types/components.d.ts +87 -0
  340. package/dist/types/components.d.ts.map +1 -0
  341. package/dist/types/components.js +2 -0
  342. package/dist/types/components.js.map +1 -0
  343. package/dist/types/config.d.ts +35 -0
  344. package/dist/types/config.d.ts.map +1 -0
  345. package/dist/types/config.js +2 -0
  346. package/dist/types/config.js.map +1 -0
  347. package/dist/types/core.d.ts +57 -0
  348. package/dist/types/core.d.ts.map +1 -0
  349. package/dist/types/core.js +2 -0
  350. package/dist/types/core.js.map +1 -0
  351. package/dist/types/hooks.d.ts +26 -0
  352. package/dist/types/hooks.d.ts.map +1 -0
  353. package/dist/types/hooks.js +2 -0
  354. package/dist/types/hooks.js.map +1 -0
  355. package/dist/types/index.d.ts +11 -0
  356. package/dist/types/index.d.ts.map +1 -0
  357. package/dist/types/index.js +12 -0
  358. package/dist/types/index.js.map +1 -0
  359. package/dist/types/mcp.d.ts +19 -0
  360. package/dist/types/mcp.d.ts.map +1 -0
  361. package/dist/types/mcp.js +2 -0
  362. package/dist/types/mcp.js.map +1 -0
  363. package/dist/types/tools.d.ts +31 -0
  364. package/dist/types/tools.d.ts.map +1 -0
  365. package/dist/types/tools.js +2 -0
  366. package/dist/types/tools.js.map +1 -0
  367. package/dist/types/ui.d.ts +22 -0
  368. package/dist/types/ui.d.ts.map +1 -0
  369. package/dist/types/ui.js +2 -0
  370. package/dist/types/ui.js.map +1 -0
  371. package/dist/types/utils.d.ts +19 -0
  372. package/dist/types/utils.d.ts.map +1 -0
  373. package/dist/types/utils.js +2 -0
  374. package/dist/types/utils.js.map +1 -0
  375. package/dist/utils/message-queue.d.ts +8 -0
  376. package/dist/utils/message-queue.d.ts.map +1 -0
  377. package/dist/utils/message-queue.js +50 -0
  378. package/dist/utils/message-queue.js.map +1 -0
  379. package/dist/utils/programming-language-helper.d.ts +2 -0
  380. package/dist/utils/programming-language-helper.d.ts.map +1 -0
  381. package/dist/utils/programming-language-helper.js +32 -0
  382. package/dist/utils/programming-language-helper.js.map +1 -0
  383. package/dist/utils/prompt-processor.d.ts +6 -0
  384. package/dist/utils/prompt-processor.d.ts.map +1 -0
  385. package/dist/utils/prompt-processor.js +103 -0
  386. package/dist/utils/prompt-processor.js.map +1 -0
  387. package/dist/utils/update-checker.d.ts +6 -0
  388. package/dist/utils/update-checker.d.ts.map +1 -0
  389. package/dist/utils/update-checker.js +120 -0
  390. package/dist/utils/update-checker.js.map +1 -0
  391. package/package.json +97 -0
  392. package/source/app/prompts/main-prompt.md +107 -0
@@ -0,0 +1,162 @@
1
+ import { useState, useCallback } from 'react';
2
+ import { loadPreferences } from '../../config/preferences.js';
3
+ import { defaultTheme } from '../../config/themes.js';
4
+ import React from 'react';
5
+ export function useAppState() {
6
+ // Initialize theme from preferences
7
+ const preferences = loadPreferences();
8
+ const initialTheme = preferences.selectedTheme || defaultTheme;
9
+ const [client, setClient] = useState(null);
10
+ const [messages, setMessages] = useState([]);
11
+ const [displayMessages, setDisplayMessages] = useState([]);
12
+ const [messageTokenCache, setMessageTokenCache] = useState(new Map());
13
+ const [currentModel, setCurrentModel] = useState('');
14
+ const [currentProvider, setCurrentProvider] = useState('openai-compatible');
15
+ const [currentTheme, setCurrentTheme] = useState(initialTheme);
16
+ const [toolManager, setToolManager] = useState(null);
17
+ const [customCommandLoader, setCustomCommandLoader] = useState(null);
18
+ const [customCommandExecutor, setCustomCommandExecutor] = useState(null);
19
+ const [customCommandCache, setCustomCommandCache] = useState(new Map());
20
+ const [startChat, setStartChat] = useState(false);
21
+ const [mcpInitialized, setMcpInitialized] = useState(false);
22
+ // Thinking indicator state
23
+ const [isThinking, setIsThinking] = useState(false);
24
+ const [isCancelling, setIsCancelling] = useState(false);
25
+ const [thinkingStats, setThinkingStats] = useState({
26
+ tokenCount: 0,
27
+ contextSize: 0,
28
+ totalTokensUsed: 0,
29
+ });
30
+ // Cancellation state
31
+ const [abortController, setAbortController] = useState(null);
32
+ // Mode states
33
+ const [isModelSelectionMode, setIsModelSelectionMode] = useState(false);
34
+ const [isProviderSelectionMode, setIsProviderSelectionMode] = useState(false);
35
+ const [isThemeSelectionMode, setIsThemeSelectionMode] = useState(false);
36
+ const [isToolConfirmationMode, setIsToolConfirmationMode] = useState(false);
37
+ const [isToolExecuting, setIsToolExecuting] = useState(false);
38
+ const [isBashExecuting, setIsBashExecuting] = useState(false);
39
+ const [currentBashCommand, setCurrentBashCommand] = useState('');
40
+ // Tool confirmation state
41
+ const [pendingToolCalls, setPendingToolCalls] = useState([]);
42
+ const [currentToolIndex, setCurrentToolIndex] = useState(0);
43
+ const [completedToolResults, setCompletedToolResults] = useState([]);
44
+ const [currentConversationContext, setCurrentConversationContext] = useState(null);
45
+ // Chat queue for components
46
+ const [chatComponents, setChatComponents] = useState([]);
47
+ const [componentKeyCounter, setComponentKeyCounter] = useState(0);
48
+ // Helper function to add components to the chat queue with stable keys and memory optimization
49
+ const addToChatQueue = useCallback((component) => {
50
+ const newCounter = componentKeyCounter + 1;
51
+ setComponentKeyCounter(newCounter);
52
+ let componentWithKey = component;
53
+ if (React.isValidElement(component) && !component.key) {
54
+ componentWithKey = React.cloneElement(component, {
55
+ key: `chat-component-${newCounter}`
56
+ });
57
+ }
58
+ setChatComponents(prevComponents => {
59
+ const newComponents = [...prevComponents, componentWithKey];
60
+ // Keep reasonable limit in memory for performance
61
+ return newComponents.length > 50 ? newComponents.slice(-50) : newComponents;
62
+ });
63
+ }, [componentKeyCounter]);
64
+ // Helper function for token calculation with caching
65
+ const getMessageTokens = useCallback((message) => {
66
+ const cacheKey = (message.content || '') + message.role;
67
+ if (messageTokenCache.has(cacheKey)) {
68
+ return messageTokenCache.get(cacheKey);
69
+ }
70
+ const tokens = Math.ceil((message.content?.length || 0) / 4);
71
+ setMessageTokenCache(prev => new Map(prev).set(cacheKey, tokens));
72
+ return tokens;
73
+ }, [messageTokenCache]);
74
+ // Optimized message updater that separates display from context
75
+ const updateMessages = useCallback((newMessages) => {
76
+ setMessages(newMessages); // Full context always preserved for model
77
+ // Limit display messages for UI performance only
78
+ const displayLimit = 30;
79
+ setDisplayMessages(newMessages.length > displayLimit
80
+ ? newMessages.slice(-displayLimit)
81
+ : newMessages);
82
+ }, []);
83
+ // Reset tool confirmation state
84
+ const resetToolConfirmationState = () => {
85
+ setIsToolConfirmationMode(false);
86
+ setIsToolExecuting(false);
87
+ setPendingToolCalls([]);
88
+ setCurrentToolIndex(0);
89
+ setCompletedToolResults([]);
90
+ setCurrentConversationContext(null);
91
+ };
92
+ return {
93
+ // State
94
+ client,
95
+ messages,
96
+ displayMessages,
97
+ messageTokenCache,
98
+ currentModel,
99
+ currentProvider,
100
+ currentTheme,
101
+ toolManager,
102
+ customCommandLoader,
103
+ customCommandExecutor,
104
+ customCommandCache,
105
+ startChat,
106
+ mcpInitialized,
107
+ isThinking,
108
+ isCancelling,
109
+ thinkingStats,
110
+ abortController,
111
+ isModelSelectionMode,
112
+ isProviderSelectionMode,
113
+ isThemeSelectionMode,
114
+ isToolConfirmationMode,
115
+ isToolExecuting,
116
+ isBashExecuting,
117
+ currentBashCommand,
118
+ pendingToolCalls,
119
+ currentToolIndex,
120
+ completedToolResults,
121
+ currentConversationContext,
122
+ chatComponents,
123
+ componentKeyCounter,
124
+ // Setters
125
+ setClient,
126
+ setMessages,
127
+ setDisplayMessages,
128
+ setMessageTokenCache,
129
+ setCurrentModel,
130
+ setCurrentProvider,
131
+ setCurrentTheme,
132
+ setToolManager,
133
+ setCustomCommandLoader,
134
+ setCustomCommandExecutor,
135
+ setCustomCommandCache,
136
+ setStartChat,
137
+ setMcpInitialized,
138
+ setIsThinking,
139
+ setIsCancelling,
140
+ setThinkingStats,
141
+ setAbortController,
142
+ setIsModelSelectionMode,
143
+ setIsProviderSelectionMode,
144
+ setIsThemeSelectionMode,
145
+ setIsToolConfirmationMode,
146
+ setIsToolExecuting,
147
+ setIsBashExecuting,
148
+ setCurrentBashCommand,
149
+ setPendingToolCalls,
150
+ setCurrentToolIndex,
151
+ setCompletedToolResults,
152
+ setCurrentConversationContext,
153
+ setChatComponents,
154
+ setComponentKeyCounter,
155
+ // Utilities
156
+ addToChatQueue,
157
+ getMessageTokens,
158
+ updateMessages,
159
+ resetToolConfirmationState,
160
+ };
161
+ }
162
+ //# sourceMappingURL=useAppState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../../source/app/hooks/useAppState.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { LLMClient, Message } from '../../types/core.js';
2
+ import { ToolManager } from '../../tools/tool-manager.js';
3
+ import { ThinkingStats } from './useAppState.js';
4
+ import React from 'react';
5
+ interface UseChatHandlerProps {
6
+ client: LLMClient | null;
7
+ toolManager: ToolManager | null;
8
+ messages: Message[];
9
+ setMessages: (messages: Message[]) => void;
10
+ getMessageTokens?: (message: Message) => number;
11
+ currentModel: string;
12
+ setIsThinking: (thinking: boolean) => void;
13
+ setIsCancelling: (cancelling: boolean) => void;
14
+ setThinkingStats: (stats: ThinkingStats | ((prev: ThinkingStats) => ThinkingStats)) => void;
15
+ addToChatQueue: (component: React.ReactNode) => void;
16
+ componentKeyCounter: number;
17
+ abortController: AbortController | null;
18
+ setAbortController: (controller: AbortController | null) => void;
19
+ onStartToolConfirmationFlow: (toolCalls: any[], updatedMessages: Message[], assistantMsg: Message, systemMessage: Message) => void;
20
+ }
21
+ export declare function useChatHandler({ client, toolManager, messages, setMessages, getMessageTokens, currentModel, setIsThinking, setIsCancelling, setThinkingStats, addToChatQueue, componentKeyCounter, abortController, setAbortController, onStartToolConfirmationFlow, }: UseChatHandlerProps): {
22
+ handleChatMessage: (message: string) => Promise<void>;
23
+ processAssistantResponse: (systemMessage: Message, messages: Message[]) => Promise<void>;
24
+ };
25
+ export {};
26
+ //# sourceMappingURL=useChatHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatHandler.d.ts","sourceRoot":"","sources":["../../../source/app/hooks/useChatHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,OAAO,EAAuB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AAYxD,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAuC1B,UAAU,mBAAmB;IAC5B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CACjB,KAAK,EAAE,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,aAAa,CAAC,KAC3D,IAAI,CAAC;IACV,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,2BAA2B,EAAE,CAC5B,SAAS,EAAE,GAAG,EAAE,EAChB,eAAe,EAAE,OAAO,EAAE,EAC1B,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,OAAO,KAClB,IAAI,CAAC;CACV;AAED,wBAAgB,cAAc,CAAC,EAC9B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,2BAA2B,GAC3B,EAAE,mBAAmB;iCA2mBqB,MAAM;8CAzOhC,OAAO,YACZ,OAAO,EAAE;EAmUpB"}