@nanocollective/nanocoder 1.17.3 → 1.19.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 (688) hide show
  1. package/README.md +178 -13
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/ai-sdk-client-empty-message.spec.d.ts +2 -0
  4. package/dist/ai-sdk-client-empty-message.spec.d.ts.map +1 -0
  5. package/dist/ai-sdk-client-empty-message.spec.js +124 -0
  6. package/dist/ai-sdk-client-empty-message.spec.js.map +1 -0
  7. package/dist/ai-sdk-client.d.ts +19 -3
  8. package/dist/ai-sdk-client.d.ts.map +1 -1
  9. package/dist/ai-sdk-client.js +359 -211
  10. package/dist/ai-sdk-client.js.map +1 -1
  11. package/dist/app/utils/appUtils.d.ts +1 -1
  12. package/dist/app/utils/appUtils.d.ts.map +1 -1
  13. package/dist/app/utils/appUtils.js +80 -14
  14. package/dist/app/utils/appUtils.js.map +1 -1
  15. package/dist/app.d.ts +22 -1
  16. package/dist/app.d.ts.map +1 -1
  17. package/dist/app.js +369 -53
  18. package/dist/app.js.map +1 -1
  19. package/dist/cli.js +37 -2
  20. package/dist/cli.js.map +1 -1
  21. package/dist/cli.spec.d.ts +2 -0
  22. package/dist/cli.spec.d.ts.map +1 -0
  23. package/dist/cli.spec.js +101 -0
  24. package/dist/cli.spec.js.map +1 -0
  25. package/dist/client-factory.d.ts.map +1 -1
  26. package/dist/client-factory.js +2 -2
  27. package/dist/client-factory.js.map +1 -1
  28. package/dist/commands/checkpoint.d.ts +6 -0
  29. package/dist/commands/checkpoint.d.ts.map +1 -0
  30. package/dist/commands/checkpoint.js +277 -0
  31. package/dist/commands/checkpoint.js.map +1 -0
  32. package/dist/commands/clear.d.ts.map +1 -1
  33. package/dist/commands/clear.js +1 -1
  34. package/dist/commands/clear.js.map +1 -1
  35. package/dist/commands/custom-commands.d.ts.map +1 -1
  36. package/dist/commands/custom-commands.js +4 -4
  37. package/dist/commands/custom-commands.js.map +1 -1
  38. package/dist/commands/exit.d.ts.map +1 -1
  39. package/dist/commands/exit.js.map +1 -1
  40. package/dist/commands/export.d.ts.map +1 -1
  41. package/dist/commands/export.js +2 -2
  42. package/dist/commands/export.js.map +1 -1
  43. package/dist/commands/help.d.ts.map +1 -1
  44. package/dist/commands/help.js +5 -5
  45. package/dist/commands/help.js.map +1 -1
  46. package/dist/commands/index.d.ts +2 -2
  47. package/dist/commands/index.d.ts.map +1 -1
  48. package/dist/commands/index.js +2 -2
  49. package/dist/commands/index.js.map +1 -1
  50. package/dist/commands/init.d.ts.map +1 -1
  51. package/dist/commands/init.js +15 -14
  52. package/dist/commands/init.js.map +1 -1
  53. package/dist/commands/lsp.d.ts.map +1 -1
  54. package/dist/commands/lsp.js +6 -6
  55. package/dist/commands/lsp.js.map +1 -1
  56. package/dist/commands/mcp.d.ts +1 -1
  57. package/dist/commands/mcp.d.ts.map +1 -1
  58. package/dist/commands/mcp.js +6 -6
  59. package/dist/commands/mcp.js.map +1 -1
  60. package/dist/commands/model-database.d.ts +8 -0
  61. package/dist/commands/model-database.d.ts.map +1 -0
  62. package/dist/commands/model-database.js +193 -0
  63. package/dist/commands/model-database.js.map +1 -0
  64. package/dist/commands/model.d.ts.map +1 -1
  65. package/dist/commands/model.js.map +1 -1
  66. package/dist/commands/provider.d.ts.map +1 -1
  67. package/dist/commands/provider.js.map +1 -1
  68. package/dist/commands/setup-config.js +1 -1
  69. package/dist/commands/setup-config.js.map +1 -1
  70. package/dist/commands/status.d.ts.map +1 -1
  71. package/dist/commands/status.js.map +1 -1
  72. package/dist/commands/theme.d.ts.map +1 -1
  73. package/dist/commands/theme.js.map +1 -1
  74. package/dist/commands/update.d.ts.map +1 -1
  75. package/dist/commands/update.js +5 -5
  76. package/dist/commands/update.js.map +1 -1
  77. package/dist/commands/usage.d.ts.map +1 -1
  78. package/dist/commands/usage.js +4 -4
  79. package/dist/commands/usage.js.map +1 -1
  80. package/dist/commands.d.ts.map +1 -1
  81. package/dist/commands.js +1 -1
  82. package/dist/commands.js.map +1 -1
  83. package/dist/components/assistant-message.d.ts.map +1 -1
  84. package/dist/components/assistant-message.js +5 -4
  85. package/dist/components/assistant-message.js.map +1 -1
  86. package/dist/components/bash-execution-indicator.d.ts.map +1 -1
  87. package/dist/components/bash-execution-indicator.js +2 -2
  88. package/dist/components/bash-execution-indicator.js.map +1 -1
  89. package/dist/components/cancelling-indicator.js +3 -3
  90. package/dist/components/cancelling-indicator.js.map +1 -1
  91. package/dist/components/chat-queue.d.ts.map +1 -1
  92. package/dist/components/chat-queue.js +1 -1
  93. package/dist/components/chat-queue.js.map +1 -1
  94. package/dist/components/checkpoint-display.d.ts +8 -0
  95. package/dist/components/checkpoint-display.d.ts.map +1 -0
  96. package/dist/components/checkpoint-display.js +29 -0
  97. package/dist/components/checkpoint-display.js.map +1 -0
  98. package/dist/components/checkpoint-selector.d.ts +11 -0
  99. package/dist/components/checkpoint-selector.d.ts.map +1 -0
  100. package/dist/components/checkpoint-selector.js +55 -0
  101. package/dist/components/checkpoint-selector.js.map +1 -0
  102. package/dist/components/error-message.d.ts.map +1 -1
  103. package/dist/components/error-message.js +4 -4
  104. package/dist/components/error-message.js.map +1 -1
  105. package/dist/components/info-message.d.ts.map +1 -1
  106. package/dist/components/info-message.js +4 -4
  107. package/dist/components/info-message.js.map +1 -1
  108. package/dist/components/model-selector.d.ts.map +1 -1
  109. package/dist/components/model-selector.js +7 -7
  110. package/dist/components/model-selector.js.map +1 -1
  111. package/dist/components/provider-selector.d.ts.map +1 -1
  112. package/dist/components/provider-selector.js +6 -6
  113. package/dist/components/provider-selector.js.map +1 -1
  114. package/dist/components/security-disclaimer.d.ts.map +1 -1
  115. package/dist/components/security-disclaimer.js +4 -4
  116. package/dist/components/security-disclaimer.js.map +1 -1
  117. package/dist/components/status.d.ts +5 -0
  118. package/dist/components/status.d.ts.map +1 -1
  119. package/dist/components/status.js +36 -7
  120. package/dist/components/status.js.map +1 -1
  121. package/dist/components/success-message.d.ts.map +1 -1
  122. package/dist/components/success-message.js +4 -4
  123. package/dist/components/success-message.js.map +1 -1
  124. package/dist/components/theme-selector.d.ts.map +1 -1
  125. package/dist/components/theme-selector.js +8 -8
  126. package/dist/components/theme-selector.js.map +1 -1
  127. package/dist/components/tool-confirmation.d.ts.map +1 -1
  128. package/dist/components/tool-confirmation.js +7 -7
  129. package/dist/components/tool-confirmation.js.map +1 -1
  130. package/dist/components/tool-execution-indicator.d.ts.map +1 -1
  131. package/dist/components/tool-execution-indicator.js +2 -2
  132. package/dist/components/tool-execution-indicator.js.map +1 -1
  133. package/dist/components/tool-message.d.ts.map +1 -1
  134. package/dist/components/tool-message.js +4 -5
  135. package/dist/components/tool-message.js.map +1 -1
  136. package/dist/components/ui/titled-box.d.ts +16 -0
  137. package/dist/components/ui/titled-box.d.ts.map +1 -0
  138. package/dist/components/ui/titled-box.js +10 -0
  139. package/dist/components/ui/titled-box.js.map +1 -0
  140. package/dist/components/usage/progress-bar.d.ts.map +1 -1
  141. package/dist/components/usage/progress-bar.js +3 -0
  142. package/dist/components/usage/progress-bar.js.map +1 -1
  143. package/dist/components/usage/usage-display.d.ts.map +1 -1
  144. package/dist/components/usage/usage-display.js +7 -4
  145. package/dist/components/usage/usage-display.js.map +1 -1
  146. package/dist/components/user-input.d.ts.map +1 -1
  147. package/dist/components/user-input.js +9 -8
  148. package/dist/components/user-input.js.map +1 -1
  149. package/dist/components/user-message.d.ts.map +1 -1
  150. package/dist/components/user-message.js +1 -1
  151. package/dist/components/user-message.js.map +1 -1
  152. package/dist/components/vscode-extension-prompt.js +3 -3
  153. package/dist/components/vscode-extension-prompt.js.map +1 -1
  154. package/dist/components/warning-message.d.ts.map +1 -1
  155. package/dist/components/warning-message.js +4 -4
  156. package/dist/components/warning-message.js.map +1 -1
  157. package/dist/components/welcome-message.d.ts.map +1 -1
  158. package/dist/components/welcome-message.js +4 -4
  159. package/dist/components/welcome-message.js.map +1 -1
  160. package/dist/config/index.d.ts.map +1 -1
  161. package/dist/config/index.js +7 -7
  162. package/dist/config/index.js.map +1 -1
  163. package/dist/config/index.spec.js +4 -4
  164. package/dist/config/index.spec.js.map +1 -1
  165. package/dist/config/paths.spec.js +1 -1
  166. package/dist/config/paths.spec.js.map +1 -1
  167. package/dist/config/preferences.d.ts +0 -2
  168. package/dist/config/preferences.d.ts.map +1 -1
  169. package/dist/config/preferences.js +1 -11
  170. package/dist/config/preferences.js.map +1 -1
  171. package/dist/context/mode-context.d.ts +12 -0
  172. package/dist/context/mode-context.d.ts.map +1 -0
  173. package/dist/context/mode-context.js +21 -0
  174. package/dist/context/mode-context.js.map +1 -0
  175. package/dist/context/mode-context.spec.d.ts +2 -0
  176. package/dist/context/mode-context.spec.d.ts.map +1 -0
  177. package/dist/context/mode-context.spec.js +61 -0
  178. package/dist/context/mode-context.spec.js.map +1 -0
  179. package/dist/custom-commands/executor.d.ts.map +1 -1
  180. package/dist/custom-commands/executor.js.map +1 -1
  181. package/dist/custom-commands/loader.d.ts.map +1 -1
  182. package/dist/custom-commands/loader.js +1 -1
  183. package/dist/custom-commands/loader.js.map +1 -1
  184. package/dist/custom-commands/parser.d.ts.map +1 -1
  185. package/dist/custom-commands/parser.js.map +1 -1
  186. package/dist/hooks/useAppInitialization.d.ts +9 -5
  187. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  188. package/dist/hooks/useAppInitialization.js +119 -45
  189. package/dist/hooks/useAppInitialization.js.map +1 -1
  190. package/dist/hooks/useAppState.d.ts +28 -9
  191. package/dist/hooks/useAppState.d.ts.map +1 -1
  192. package/dist/hooks/useAppState.js +28 -8
  193. package/dist/hooks/useAppState.js.map +1 -1
  194. package/dist/hooks/useChatHandler.d.ts +5 -3
  195. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  196. package/dist/hooks/useChatHandler.js +218 -118
  197. package/dist/hooks/useChatHandler.js.map +1 -1
  198. package/dist/hooks/useDirectoryTrust.js +1 -1
  199. package/dist/hooks/useDirectoryTrust.js.map +1 -1
  200. package/dist/hooks/useInputState.js +2 -2
  201. package/dist/hooks/useInputState.js.map +1 -1
  202. package/dist/hooks/useModeHandlers.d.ts +5 -5
  203. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  204. package/dist/hooks/useModeHandlers.js +12 -12
  205. package/dist/hooks/useModeHandlers.js.map +1 -1
  206. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  207. package/dist/hooks/useTerminalWidth.js +3 -3
  208. package/dist/hooks/useTerminalWidth.js.map +1 -1
  209. package/dist/hooks/useTheme.d.ts.map +1 -1
  210. package/dist/hooks/useTheme.js +1 -1
  211. package/dist/hooks/useTheme.js.map +1 -1
  212. package/dist/hooks/useToolHandler.d.ts +1 -1
  213. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  214. package/dist/hooks/useToolHandler.js +4 -4
  215. package/dist/hooks/useToolHandler.js.map +1 -1
  216. package/dist/hooks/useUIState.d.ts +1 -1
  217. package/dist/hooks/useUIState.d.ts.map +1 -1
  218. package/dist/hooks/useUIState.js.map +1 -1
  219. package/dist/hooks/useVSCodeServer.js +2 -2
  220. package/dist/hooks/useVSCodeServer.js.map +1 -1
  221. package/dist/init/agents-template-generator.d.ts +1 -1
  222. package/dist/init/agents-template-generator.d.ts.map +1 -1
  223. package/dist/init/agents-template-generator.js.map +1 -1
  224. package/dist/init/existing-rules-extractor.js +1 -1
  225. package/dist/init/existing-rules-extractor.js.map +1 -1
  226. package/dist/init/file-scanner.js +2 -2
  227. package/dist/init/file-scanner.js.map +1 -1
  228. package/dist/init/framework-detector.js +1 -1
  229. package/dist/init/framework-detector.js.map +1 -1
  230. package/dist/init/project-analyzer.d.ts +1 -1
  231. package/dist/init/project-analyzer.d.ts.map +1 -1
  232. package/dist/init/project-analyzer.js +3 -3
  233. package/dist/init/project-analyzer.js.map +1 -1
  234. package/dist/lsp/lsp-client.d.ts +1 -1
  235. package/dist/lsp/lsp-client.d.ts.map +1 -1
  236. package/dist/lsp/lsp-client.js +1 -1
  237. package/dist/lsp/lsp-client.js.map +1 -1
  238. package/dist/lsp/lsp-client.spec.js +1 -2
  239. package/dist/lsp/lsp-client.spec.js.map +1 -1
  240. package/dist/lsp/lsp-manager.d.ts +1 -1
  241. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  242. package/dist/lsp/lsp-manager.js.map +1 -1
  243. package/dist/lsp/lsp-manager.spec.js +1 -1
  244. package/dist/lsp/lsp-manager.spec.js.map +1 -1
  245. package/dist/lsp/protocol.spec.js +1 -1
  246. package/dist/lsp/protocol.spec.js.map +1 -1
  247. package/dist/lsp/server-discovery.spec.js +1 -1
  248. package/dist/lsp/server-discovery.spec.js.map +1 -1
  249. package/dist/markdown-parser/index.spec.js.map +1 -1
  250. package/dist/markdown-parser/table-parser.spec.js.map +1 -1
  251. package/dist/mcp/mcp-client.d.ts +3 -2
  252. package/dist/mcp/mcp-client.d.ts.map +1 -1
  253. package/dist/mcp/mcp-client.js +279 -96
  254. package/dist/mcp/mcp-client.js.map +1 -1
  255. package/dist/mcp/transport-factory.d.ts +1 -1
  256. package/dist/mcp/transport-factory.d.ts.map +1 -1
  257. package/dist/mcp/transport-factory.js +16 -3
  258. package/dist/mcp/transport-factory.js.map +1 -1
  259. package/dist/mcp/transport-factory.spec.js +30 -48
  260. package/dist/mcp/transport-factory.spec.js.map +1 -1
  261. package/dist/message-handler.d.ts +1 -1
  262. package/dist/message-handler.d.ts.map +1 -1
  263. package/dist/message-handler.js +1 -1
  264. package/dist/message-handler.js.map +1 -1
  265. package/dist/model-database/database-engine.d.ts +25 -0
  266. package/dist/model-database/database-engine.d.ts.map +1 -0
  267. package/dist/model-database/database-engine.js +37 -0
  268. package/dist/model-database/database-engine.js.map +1 -0
  269. package/dist/model-database/database-engine.spec.d.ts +2 -0
  270. package/dist/model-database/database-engine.spec.d.ts.map +1 -0
  271. package/dist/model-database/database-engine.spec.js +413 -0
  272. package/dist/model-database/database-engine.spec.js.map +1 -0
  273. package/dist/model-database/model-database.d.ts +30 -0
  274. package/dist/model-database/model-database.d.ts.map +1 -0
  275. package/dist/model-database/model-database.js +82 -0
  276. package/dist/model-database/model-database.js.map +1 -0
  277. package/dist/model-database/model-database.spec.d.ts +2 -0
  278. package/dist/model-database/model-database.spec.d.ts.map +1 -0
  279. package/dist/model-database/model-database.spec.js +322 -0
  280. package/dist/model-database/model-database.spec.js.map +1 -0
  281. package/dist/model-database/model-engine.d.ts +25 -0
  282. package/dist/model-database/model-engine.d.ts.map +1 -0
  283. package/dist/model-database/model-engine.js +49 -0
  284. package/dist/model-database/model-engine.js.map +1 -0
  285. package/dist/model-database/model-engine.spec.d.ts +2 -0
  286. package/dist/model-database/model-engine.spec.d.ts.map +1 -0
  287. package/dist/model-database/model-engine.spec.js +381 -0
  288. package/dist/model-database/model-engine.spec.js.map +1 -0
  289. package/dist/model-database/model-fetcher.d.ts +14 -0
  290. package/dist/model-database/model-fetcher.d.ts.map +1 -0
  291. package/dist/model-database/model-fetcher.js +249 -0
  292. package/dist/model-database/model-fetcher.js.map +1 -0
  293. package/dist/model-database/model-fetcher.spec.d.ts +2 -0
  294. package/dist/model-database/model-fetcher.spec.d.ts.map +1 -0
  295. package/dist/model-database/model-fetcher.spec.js +498 -0
  296. package/dist/model-database/model-fetcher.spec.js.map +1 -0
  297. package/dist/models/models-cache.d.ts +1 -1
  298. package/dist/models/models-cache.d.ts.map +1 -1
  299. package/dist/models/models-cache.js +1 -1
  300. package/dist/models/models-cache.js.map +1 -1
  301. package/dist/models/models-dev-client.d.ts.map +1 -1
  302. package/dist/models/models-dev-client.js +23 -7
  303. package/dist/models/models-dev-client.js.map +1 -1
  304. package/dist/prompt-history.js +2 -2
  305. package/dist/prompt-history.js.map +1 -1
  306. package/dist/services/checkpoint-manager.d.ts +68 -0
  307. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  308. package/dist/services/checkpoint-manager.js +345 -0
  309. package/dist/services/checkpoint-manager.js.map +1 -0
  310. package/dist/services/checkpoint-manager.spec.d.ts +2 -0
  311. package/dist/services/checkpoint-manager.spec.d.ts.map +1 -0
  312. package/dist/services/checkpoint-manager.spec.js +353 -0
  313. package/dist/services/checkpoint-manager.spec.js.map +1 -0
  314. package/dist/services/file-snapshot.d.ts +32 -0
  315. package/dist/services/file-snapshot.d.ts.map +1 -0
  316. package/dist/services/file-snapshot.js +161 -0
  317. package/dist/services/file-snapshot.js.map +1 -0
  318. package/dist/services/file-snapshot.spec.d.ts +2 -0
  319. package/dist/services/file-snapshot.spec.d.ts.map +1 -0
  320. package/dist/services/file-snapshot.spec.js +285 -0
  321. package/dist/services/file-snapshot.spec.js.map +1 -0
  322. package/dist/test-utils/render-with-theme.d.ts +7 -0
  323. package/dist/test-utils/render-with-theme.d.ts.map +1 -0
  324. package/dist/test-utils/render-with-theme.js +38 -0
  325. package/dist/test-utils/render-with-theme.js.map +1 -0
  326. package/dist/tokenization/tokenizer-factory.js +2 -2
  327. package/dist/tokenization/tokenizer-factory.js.map +1 -1
  328. package/dist/tokenization/tokenizer-factory.spec.js +2 -2
  329. package/dist/tokenization/tokenizer-factory.spec.js.map +1 -1
  330. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +1 -1
  331. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -1
  332. package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -1
  333. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -1
  334. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +1 -1
  335. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -1
  336. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -1
  337. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +1 -1
  338. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -1
  339. package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -1
  340. package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -1
  341. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +1 -1
  342. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -1
  343. package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -1
  344. package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -1
  345. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  346. package/dist/tool-calling/json-parser.js +12 -14
  347. package/dist/tool-calling/json-parser.js.map +1 -1
  348. package/dist/tool-calling/json-parser.spec.js +7 -7
  349. package/dist/tool-calling/json-parser.spec.js.map +1 -1
  350. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  351. package/dist/tool-calling/tool-parser.js +38 -10
  352. package/dist/tool-calling/tool-parser.js.map +1 -1
  353. package/dist/tool-calling/tool-parser.spec.js +82 -4
  354. package/dist/tool-calling/tool-parser.spec.js.map +1 -1
  355. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  356. package/dist/tool-calling/xml-parser.js +21 -23
  357. package/dist/tool-calling/xml-parser.js.map +1 -1
  358. package/dist/tool-calling/xml-parser.spec.js +23 -3
  359. package/dist/tool-calling/xml-parser.spec.js.map +1 -1
  360. package/dist/tools/create-file.d.ts +24 -2
  361. package/dist/tools/create-file.d.ts.map +1 -1
  362. package/dist/tools/create-file.js +20 -16
  363. package/dist/tools/create-file.js.map +1 -1
  364. package/dist/tools/delete-lines.d.ts +18 -2
  365. package/dist/tools/delete-lines.d.ts.map +1 -1
  366. package/dist/tools/delete-lines.js +22 -17
  367. package/dist/tools/delete-lines.js.map +1 -1
  368. package/dist/tools/execute-bash.d.ts +2 -2
  369. package/dist/tools/execute-bash.d.ts.map +1 -1
  370. package/dist/tools/execute-bash.js +13 -12
  371. package/dist/tools/execute-bash.js.map +1 -1
  372. package/dist/tools/execute-function.spec.d.ts +2 -0
  373. package/dist/tools/execute-function.spec.d.ts.map +1 -0
  374. package/dist/tools/execute-function.spec.js +141 -0
  375. package/dist/tools/execute-function.spec.js.map +1 -0
  376. package/dist/tools/fetch-url.d.ts +16 -2
  377. package/dist/tools/fetch-url.d.ts.map +1 -1
  378. package/dist/tools/fetch-url.js +13 -13
  379. package/dist/tools/fetch-url.js.map +1 -1
  380. package/dist/tools/find-files.d.ts +18 -2
  381. package/dist/tools/find-files.d.ts.map +1 -1
  382. package/dist/tools/find-files.js +13 -11
  383. package/dist/tools/find-files.js.map +1 -1
  384. package/dist/tools/index.d.ts +2 -3
  385. package/dist/tools/index.d.ts.map +1 -1
  386. package/dist/tools/index.js +35 -25
  387. package/dist/tools/index.js.map +1 -1
  388. package/dist/tools/insert-lines.d.ts +18 -2
  389. package/dist/tools/insert-lines.d.ts.map +1 -1
  390. package/dist/tools/insert-lines.js +21 -16
  391. package/dist/tools/insert-lines.js.map +1 -1
  392. package/dist/tools/lsp-get-diagnostics.d.ts +10 -2
  393. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  394. package/dist/tools/lsp-get-diagnostics.js +13 -11
  395. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  396. package/dist/tools/needs-approval.spec.d.ts +2 -0
  397. package/dist/tools/needs-approval.spec.d.ts.map +1 -0
  398. package/dist/tools/needs-approval.spec.js +308 -0
  399. package/dist/tools/needs-approval.spec.js.map +1 -0
  400. package/dist/tools/read-file.d.ts +2 -2
  401. package/dist/tools/read-file.d.ts.map +1 -1
  402. package/dist/tools/read-file.js +16 -18
  403. package/dist/tools/read-file.js.map +1 -1
  404. package/dist/tools/replace-lines.d.ts +19 -2
  405. package/dist/tools/replace-lines.d.ts.map +1 -1
  406. package/dist/tools/replace-lines.js +21 -16
  407. package/dist/tools/replace-lines.js.map +1 -1
  408. package/dist/tools/search-file-contents.d.ts +20 -2
  409. package/dist/tools/search-file-contents.d.ts.map +1 -1
  410. package/dist/tools/search-file-contents.js +17 -14
  411. package/dist/tools/search-file-contents.js.map +1 -1
  412. package/dist/tools/tool-manager.d.ts +1 -1
  413. package/dist/tools/tool-manager.d.ts.map +1 -1
  414. package/dist/tools/tool-manager.js +1 -1
  415. package/dist/tools/tool-manager.js.map +1 -1
  416. package/dist/tools/tool-registry.d.ts +1 -1
  417. package/dist/tools/tool-registry.d.ts.map +1 -1
  418. package/dist/tools/web-search.d.ts +2 -2
  419. package/dist/tools/web-search.d.ts.map +1 -1
  420. package/dist/tools/web-search.js +14 -14
  421. package/dist/tools/web-search.js.map +1 -1
  422. package/dist/types/app.d.ts +7 -4
  423. package/dist/types/app.d.ts.map +1 -1
  424. package/dist/types/checkpoint.d.ts +43 -0
  425. package/dist/types/checkpoint.d.ts.map +1 -0
  426. package/dist/types/checkpoint.js +2 -0
  427. package/dist/types/checkpoint.js.map +1 -0
  428. package/dist/types/config.d.ts +0 -1
  429. package/dist/types/config.d.ts.map +1 -1
  430. package/dist/types/core-connection-status.spec.d.ts +2 -0
  431. package/dist/types/core-connection-status.spec.d.ts.map +1 -0
  432. package/dist/types/core-connection-status.spec.js +52 -0
  433. package/dist/types/core-connection-status.spec.js.map +1 -0
  434. package/dist/types/core.d.ts +34 -29
  435. package/dist/types/core.d.ts.map +1 -1
  436. package/dist/types/core.js +1 -1
  437. package/dist/types/core.js.map +1 -1
  438. package/dist/types/index.d.ts +1 -0
  439. package/dist/types/index.d.ts.map +1 -1
  440. package/dist/types/index.js +1 -0
  441. package/dist/types/index.js.map +1 -1
  442. package/dist/types/system.d.ts +5 -30
  443. package/dist/types/system.d.ts.map +1 -1
  444. package/dist/usage/calculator.spec.js +1 -1
  445. package/dist/usage/calculator.spec.js.map +1 -1
  446. package/dist/usage/storage.d.ts +1 -1
  447. package/dist/usage/storage.d.ts.map +1 -1
  448. package/dist/usage/storage.js +9 -3
  449. package/dist/usage/storage.js.map +1 -1
  450. package/dist/usage/storage.spec.js +3 -3
  451. package/dist/usage/storage.spec.js.map +1 -1
  452. package/dist/usage/tracker.d.ts.map +1 -1
  453. package/dist/usage/tracker.js +1 -1
  454. package/dist/usage/tracker.js.map +1 -1
  455. package/dist/usage/tracker.spec.js +4 -4
  456. package/dist/usage/tracker.spec.js.map +1 -1
  457. package/dist/utils/atomic-deletion.spec.js +1 -1
  458. package/dist/utils/atomic-deletion.spec.js.map +1 -1
  459. package/dist/utils/checkpoint-utils.d.ts +12 -0
  460. package/dist/utils/checkpoint-utils.d.ts.map +1 -0
  461. package/dist/utils/checkpoint-utils.js +85 -0
  462. package/dist/utils/checkpoint-utils.js.map +1 -0
  463. package/dist/utils/checkpoint-utils.spec.d.ts +2 -0
  464. package/dist/utils/checkpoint-utils.spec.d.ts.map +1 -0
  465. package/dist/utils/checkpoint-utils.spec.js +182 -0
  466. package/dist/utils/checkpoint-utils.spec.js.map +1 -0
  467. package/dist/utils/error-formatter.d.ts +35 -0
  468. package/dist/utils/error-formatter.d.ts.map +1 -1
  469. package/dist/utils/error-formatter.js +123 -0
  470. package/dist/utils/error-formatter.js.map +1 -1
  471. package/dist/utils/file-autocomplete.js +2 -2
  472. package/dist/utils/file-autocomplete.js.map +1 -1
  473. package/dist/utils/file-autocomplete.spec.js +1 -1
  474. package/dist/utils/file-autocomplete.spec.js.map +1 -1
  475. package/dist/utils/file-content-loader.js +1 -1
  476. package/dist/utils/file-content-loader.js.map +1 -1
  477. package/dist/utils/file-content-loader.spec.js +4 -4
  478. package/dist/utils/file-content-loader.spec.js.map +1 -1
  479. package/dist/utils/file-mention-handler.js.map +1 -1
  480. package/dist/utils/file-mention-handler.spec.js +4 -4
  481. package/dist/utils/file-mention-handler.spec.js.map +1 -1
  482. package/dist/utils/file-mention-parser.spec.js +2 -2
  483. package/dist/utils/file-mention-parser.spec.js.map +1 -1
  484. package/dist/utils/installation-detector.js +2 -2
  485. package/dist/utils/installation-detector.js.map +1 -1
  486. package/dist/utils/installation-detector.spec.js +10 -17
  487. package/dist/utils/installation-detector.spec.js.map +1 -1
  488. package/dist/utils/logging/config.d.ts +41 -0
  489. package/dist/utils/logging/config.d.ts.map +1 -0
  490. package/dist/utils/logging/config.js +188 -0
  491. package/dist/utils/logging/config.js.map +1 -0
  492. package/dist/utils/logging/config.spec.d.ts +2 -0
  493. package/dist/utils/logging/config.spec.d.ts.map +1 -0
  494. package/dist/utils/logging/config.spec.js +233 -0
  495. package/dist/utils/logging/config.spec.js.map +1 -0
  496. package/dist/utils/logging/console-facade.d.ts +93 -0
  497. package/dist/utils/logging/console-facade.d.ts.map +1 -0
  498. package/dist/utils/logging/console-facade.js +295 -0
  499. package/dist/utils/logging/console-facade.js.map +1 -0
  500. package/dist/utils/logging/console-facade.spec.d.ts +2 -0
  501. package/dist/utils/logging/console-facade.spec.d.ts.map +1 -0
  502. package/dist/utils/logging/console-facade.spec.js +143 -0
  503. package/dist/utils/logging/console-facade.spec.js.map +1 -0
  504. package/dist/utils/logging/correlation.d.ts +139 -0
  505. package/dist/utils/logging/correlation.d.ts.map +1 -0
  506. package/dist/utils/logging/correlation.js +410 -0
  507. package/dist/utils/logging/correlation.js.map +1 -0
  508. package/dist/utils/logging/correlation.spec.d.ts +2 -0
  509. package/dist/utils/logging/correlation.spec.d.ts.map +1 -0
  510. package/dist/utils/logging/correlation.spec.js +449 -0
  511. package/dist/utils/logging/correlation.spec.js.map +1 -0
  512. package/dist/utils/logging/formatters.d.ts +70 -0
  513. package/dist/utils/logging/formatters.d.ts.map +1 -0
  514. package/dist/utils/logging/formatters.js +186 -0
  515. package/dist/utils/logging/formatters.js.map +1 -0
  516. package/dist/utils/logging/formatters.spec.d.ts +2 -0
  517. package/dist/utils/logging/formatters.spec.d.ts.map +1 -0
  518. package/dist/utils/logging/formatters.spec.js +356 -0
  519. package/dist/utils/logging/formatters.spec.js.map +1 -0
  520. package/dist/utils/logging/health-monitor.d.ts +216 -0
  521. package/dist/utils/logging/health-monitor.d.ts.map +1 -0
  522. package/dist/utils/logging/health-monitor.js +760 -0
  523. package/dist/utils/logging/health-monitor.js.map +1 -0
  524. package/dist/utils/logging/health-monitor.spec.d.ts +2 -0
  525. package/dist/utils/logging/health-monitor.spec.d.ts.map +1 -0
  526. package/dist/utils/logging/health-monitor.spec.js +305 -0
  527. package/dist/utils/logging/health-monitor.spec.js.map +1 -0
  528. package/dist/utils/logging/index.d.ts +100 -0
  529. package/dist/utils/logging/index.d.ts.map +1 -0
  530. package/dist/utils/logging/index.js +186 -0
  531. package/dist/utils/logging/index.js.map +1 -0
  532. package/dist/utils/logging/index.spec.d.ts +2 -0
  533. package/dist/utils/logging/index.spec.d.ts.map +1 -0
  534. package/dist/utils/logging/index.spec.js +214 -0
  535. package/dist/utils/logging/index.spec.js.map +1 -0
  536. package/dist/utils/logging/integration.spec.d.ts +2 -0
  537. package/dist/utils/logging/integration.spec.d.ts.map +1 -0
  538. package/dist/utils/logging/integration.spec.js +312 -0
  539. package/dist/utils/logging/integration.spec.js.map +1 -0
  540. package/dist/utils/logging/log-method-factory.d.ts +43 -0
  541. package/dist/utils/logging/log-method-factory.d.ts.map +1 -0
  542. package/dist/utils/logging/log-method-factory.js +176 -0
  543. package/dist/utils/logging/log-method-factory.js.map +1 -0
  544. package/dist/utils/logging/log-method-factory.spec.d.ts +2 -0
  545. package/dist/utils/logging/log-method-factory.spec.d.ts.map +1 -0
  546. package/dist/utils/logging/log-method-factory.spec.js +428 -0
  547. package/dist/utils/logging/log-method-factory.spec.js.map +1 -0
  548. package/dist/utils/logging/log-query.d.ts +275 -0
  549. package/dist/utils/logging/log-query.d.ts.map +1 -0
  550. package/dist/utils/logging/log-query.js +621 -0
  551. package/dist/utils/logging/log-query.js.map +1 -0
  552. package/dist/utils/logging/log-query.spec.d.ts +2 -0
  553. package/dist/utils/logging/log-query.spec.d.ts.map +1 -0
  554. package/dist/utils/logging/log-query.spec.js +737 -0
  555. package/dist/utils/logging/log-query.spec.js.map +1 -0
  556. package/dist/utils/logging/logger-provider.d.ts +73 -0
  557. package/dist/utils/logging/logger-provider.d.ts.map +1 -0
  558. package/dist/utils/logging/logger-provider.js +298 -0
  559. package/dist/utils/logging/logger-provider.js.map +1 -0
  560. package/dist/utils/logging/logger-provider.spec.d.ts +2 -0
  561. package/dist/utils/logging/logger-provider.spec.d.ts.map +1 -0
  562. package/dist/utils/logging/logger-provider.spec.js +204 -0
  563. package/dist/utils/logging/logger-provider.spec.js.map +1 -0
  564. package/dist/utils/logging/performance.d.ts +147 -0
  565. package/dist/utils/logging/performance.d.ts.map +1 -0
  566. package/dist/utils/logging/performance.js +520 -0
  567. package/dist/utils/logging/performance.js.map +1 -0
  568. package/dist/utils/logging/performance.spec.d.ts +2 -0
  569. package/dist/utils/logging/performance.spec.d.ts.map +1 -0
  570. package/dist/utils/logging/performance.spec.js +139 -0
  571. package/dist/utils/logging/performance.spec.js.map +1 -0
  572. package/dist/utils/logging/pino-logger.d.ts +22 -0
  573. package/dist/utils/logging/pino-logger.d.ts.map +1 -0
  574. package/dist/utils/logging/pino-logger.js +372 -0
  575. package/dist/utils/logging/pino-logger.js.map +1 -0
  576. package/dist/utils/logging/pino-logger.spec.d.ts +2 -0
  577. package/dist/utils/logging/pino-logger.spec.d.ts.map +1 -0
  578. package/dist/utils/logging/pino-logger.spec.js +294 -0
  579. package/dist/utils/logging/pino-logger.spec.js.map +1 -0
  580. package/dist/utils/logging/redaction.d.ts +38 -0
  581. package/dist/utils/logging/redaction.d.ts.map +1 -0
  582. package/dist/utils/logging/redaction.js +210 -0
  583. package/dist/utils/logging/redaction.js.map +1 -0
  584. package/dist/utils/logging/redaction.spec.d.ts +2 -0
  585. package/dist/utils/logging/redaction.spec.d.ts.map +1 -0
  586. package/dist/utils/logging/redaction.spec.js +338 -0
  587. package/dist/utils/logging/redaction.spec.js.map +1 -0
  588. package/dist/utils/logging/request-tracker.d.ts +189 -0
  589. package/dist/utils/logging/request-tracker.d.ts.map +1 -0
  590. package/dist/utils/logging/request-tracker.js +569 -0
  591. package/dist/utils/logging/request-tracker.js.map +1 -0
  592. package/dist/utils/logging/request-tracker.spec.d.ts +2 -0
  593. package/dist/utils/logging/request-tracker.spec.d.ts.map +1 -0
  594. package/dist/utils/logging/request-tracker.spec.js +868 -0
  595. package/dist/utils/logging/request-tracker.spec.js.map +1 -0
  596. package/dist/utils/logging/transports.d.ts +55 -0
  597. package/dist/utils/logging/transports.d.ts.map +1 -0
  598. package/dist/utils/logging/transports.js +252 -0
  599. package/dist/utils/logging/transports.js.map +1 -0
  600. package/dist/utils/logging/transports.spec.d.ts +2 -0
  601. package/dist/utils/logging/transports.spec.d.ts.map +1 -0
  602. package/dist/utils/logging/transports.spec.js +390 -0
  603. package/dist/utils/logging/transports.spec.js.map +1 -0
  604. package/dist/utils/logging/types.d.ts +173 -0
  605. package/dist/utils/logging/types.d.ts.map +1 -0
  606. package/dist/utils/logging/types.js +5 -0
  607. package/dist/utils/logging/types.js.map +1 -0
  608. package/dist/utils/message-queue.d.ts +64 -4
  609. package/dist/utils/message-queue.d.ts.map +1 -1
  610. package/dist/utils/message-queue.js +282 -28
  611. package/dist/utils/message-queue.js.map +1 -1
  612. package/dist/utils/paste-utils.spec.js +1 -1
  613. package/dist/utils/paste-utils.spec.js.map +1 -1
  614. package/dist/utils/prompt-processor.d.ts +2 -3
  615. package/dist/utils/prompt-processor.d.ts.map +1 -1
  616. package/dist/utils/prompt-processor.js +4 -52
  617. package/dist/utils/prompt-processor.js.map +1 -1
  618. package/dist/utils/tool-cancellation.spec.js.map +1 -1
  619. package/dist/utils/tool-result-display.d.ts +2 -2
  620. package/dist/utils/tool-result-display.d.ts.map +1 -1
  621. package/dist/utils/tool-result-display.js +3 -3
  622. package/dist/utils/tool-result-display.js.map +1 -1
  623. package/dist/utils/update-checker.d.ts.map +1 -1
  624. package/dist/utils/update-checker.js +1 -1
  625. package/dist/utils/update-checker.js.map +1 -1
  626. package/dist/utils/update-checker.spec.js +2 -2
  627. package/dist/utils/update-checker.spec.js.map +1 -1
  628. package/dist/vscode/extension-installer.js +1 -1
  629. package/dist/vscode/extension-installer.js.map +1 -1
  630. package/dist/vscode/extension-installer.spec.js +1 -1
  631. package/dist/vscode/extension-installer.spec.js.map +1 -1
  632. package/dist/vscode/protocol.spec.js +1 -1
  633. package/dist/vscode/protocol.spec.js.map +1 -1
  634. package/dist/vscode/vscode-server.d.ts.map +1 -1
  635. package/dist/vscode/vscode-server.js +2 -2
  636. package/dist/vscode/vscode-server.js.map +1 -1
  637. package/dist/vscode/vscode-server.spec.js.map +1 -1
  638. package/dist/wizard/config-wizard.d.ts.map +1 -1
  639. package/dist/wizard/config-wizard.js +16 -12
  640. package/dist/wizard/config-wizard.js.map +1 -1
  641. package/dist/wizard/steps/location-step.js +4 -4
  642. package/dist/wizard/steps/location-step.js.map +1 -1
  643. package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
  644. package/dist/wizard/steps/mcp-step.js +4 -4
  645. package/dist/wizard/steps/mcp-step.js.map +1 -1
  646. package/dist/wizard/steps/provider-step.d.ts.map +1 -1
  647. package/dist/wizard/steps/provider-step.js +4 -4
  648. package/dist/wizard/steps/provider-step.js.map +1 -1
  649. package/dist/wizard/steps/summary-step.d.ts.map +1 -1
  650. package/dist/wizard/steps/summary-step.js +2 -2
  651. package/dist/wizard/steps/summary-step.js.map +1 -1
  652. package/dist/wizard/templates/provider-templates.d.ts.map +1 -1
  653. package/dist/wizard/templates/provider-templates.js +66 -2
  654. package/dist/wizard/templates/provider-templates.js.map +1 -1
  655. package/dist/wizard/validation-array.spec.js +1 -1
  656. package/dist/wizard/validation-array.spec.js.map +1 -1
  657. package/dist/wizard/validation.spec.js +1 -1
  658. package/dist/wizard/validation.spec.js.map +1 -1
  659. package/package.json +28 -26
  660. package/source/app/prompts/main-prompt.md +29 -96
  661. package/dist/commands/recommendations.d.ts +0 -8
  662. package/dist/commands/recommendations.d.ts.map +0 -1
  663. package/dist/commands/recommendations.js +0 -311
  664. package/dist/commands/recommendations.js.map +0 -1
  665. package/dist/commands/streaming.d.ts +0 -3
  666. package/dist/commands/streaming.d.ts.map +0 -1
  667. package/dist/commands/streaming.js +0 -23
  668. package/dist/commands/streaming.js.map +0 -1
  669. package/dist/components/thinking-indicator.d.ts +0 -3
  670. package/dist/components/thinking-indicator.d.ts.map +0 -1
  671. package/dist/components/thinking-indicator.js +0 -69
  672. package/dist/components/thinking-indicator.js.map +0 -1
  673. package/dist/recommendations/model-database.d.ts +0 -8
  674. package/dist/recommendations/model-database.d.ts.map +0 -1
  675. package/dist/recommendations/model-database.js +0 -514
  676. package/dist/recommendations/model-database.js.map +0 -1
  677. package/dist/recommendations/model-engine.d.ts +0 -16
  678. package/dist/recommendations/model-engine.d.ts.map +0 -1
  679. package/dist/recommendations/model-engine.js +0 -185
  680. package/dist/recommendations/model-engine.js.map +0 -1
  681. package/dist/recommendations/recommendation-engine.d.ts +0 -39
  682. package/dist/recommendations/recommendation-engine.d.ts.map +0 -1
  683. package/dist/recommendations/recommendation-engine.js +0 -144
  684. package/dist/recommendations/recommendation-engine.js.map +0 -1
  685. package/dist/system/detector.d.ts +0 -18
  686. package/dist/system/detector.d.ts.map +0 -1
  687. package/dist/system/detector.js +0 -140
  688. package/dist/system/detector.js.map +0 -1
package/dist/app.js CHANGED
@@ -1,42 +1,105 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Box, Text, useApp } from 'ink';
3
- import WelcomeMessage from './components/welcome-message.js';
4
- import React from 'react';
5
- import { getThemeColors } from './config/themes.js';
6
- import { ThemeContext } from './hooks/useTheme.js';
7
- import UserInput from './components/user-input.js';
8
- import Status from './components/status.js';
2
+ import { ModelDatabaseDisplay } from './commands/model-database.js';
3
+ import BashExecutionIndicator from './components/bash-execution-indicator.js';
4
+ import CancellingIndicator from './components/cancelling-indicator.js';
9
5
  import ChatQueue from './components/chat-queue.js';
6
+ import CheckpointSelector from './components/checkpoint-selector.js';
7
+ import ErrorMessage from './components/error-message.js';
10
8
  import ModelSelector from './components/model-selector.js';
11
9
  import ProviderSelector from './components/provider-selector.js';
10
+ import SecurityDisclaimer from './components/security-disclaimer.js';
11
+ import Status from './components/status.js';
12
+ import SuccessMessage from './components/success-message.js';
12
13
  import ThemeSelector from './components/theme-selector.js';
13
- import ThinkingIndicator from './components/thinking-indicator.js';
14
- import CancellingIndicator from './components/cancelling-indicator.js';
15
14
  import ToolConfirmation from './components/tool-confirmation.js';
16
15
  import ToolExecutionIndicator from './components/tool-execution-indicator.js';
17
- import BashExecutionIndicator from './components/bash-execution-indicator.js';
18
- import { setGlobalMessageQueue } from './utils/message-queue.js';
19
- import Spinner from 'ink-spinner';
20
- import SecurityDisclaimer from './components/security-disclaimer.js';
21
- import { RecommendationsDisplay } from './commands/recommendations.js';
22
- import { ConfigWizard } from './wizard/config-wizard.js';
16
+ import UserInput from './components/user-input.js';
23
17
  import { VSCodeExtensionPrompt, shouldPromptExtensionInstall, } from './components/vscode-extension-prompt.js';
18
+ import WarningMessage from './components/warning-message.js';
19
+ import WelcomeMessage from './components/welcome-message.js';
20
+ import { getThemeColors } from './config/themes.js';
21
+ import { setCurrentMode as setCurrentModeContext } from './context/mode-context.js';
22
+ import { ThemeContext } from './hooks/useTheme.js';
23
+ import { CheckpointManager } from './services/checkpoint-manager.js';
24
+ import { generateCorrelationId, withNewCorrelationContext, } from './utils/logging/index.js';
25
+ import { addToMessageQueue, setGlobalMessageQueue } from './utils/message-queue.js';
26
+ import { ConfigWizard } from './wizard/config-wizard.js';
27
+ import { Box, Text, useApp } from 'ink';
28
+ import Spinner from 'ink-spinner';
29
+ import React, { useEffect, useMemo } from 'react';
30
+ import { createClearMessagesHandler, handleMessageSubmission, } from './app/utils/appUtils.js';
31
+ import { useAppInitialization } from './hooks/useAppInitialization.js';
24
32
  // Import extracted hooks and utilities
25
33
  import { useAppState } from './hooks/useAppState.js';
26
34
  import { useChatHandler } from './hooks/useChatHandler.js';
27
- import { useToolHandler } from './hooks/useToolHandler.js';
28
- import { useModeHandlers } from './hooks/useModeHandlers.js';
29
- import { useAppInitialization } from './hooks/useAppInitialization.js';
30
35
  import { useDirectoryTrust } from './hooks/useDirectoryTrust.js';
36
+ import { useModeHandlers } from './hooks/useModeHandlers.js';
37
+ import { useToolHandler } from './hooks/useToolHandler.js';
31
38
  import { useVSCodeServer } from './hooks/useVSCodeServer.js';
32
- import { createClearMessagesHandler, handleMessageSubmission, } from './app/utils/appUtils.js';
33
39
  // Provide shared UI state to components
34
40
  import { UIStateProvider } from './hooks/useUIState.js';
35
- export default function App({ vscodeMode = false, vscodePort }) {
41
+ import { createPinoLogger } from './utils/logging/pino-logger.js';
42
+ export function shouldRenderWelcome(nonInteractiveMode) {
43
+ return !nonInteractiveMode;
44
+ }
45
+ /**
46
+ * Helper function to determine if non-interactive mode processing is complete
47
+ */
48
+ export function isNonInteractiveModeComplete(appState, startTime, maxExecutionTimeMs) {
49
+ const isComplete = !appState.isToolExecuting &&
50
+ !appState.isBashExecuting &&
51
+ !appState.isToolConfirmationMode;
52
+ const _hasMessages = appState.messages.length > 0;
53
+ const hasTimedOut = Date.now() - startTime > maxExecutionTimeMs;
54
+ // Check for error messages in the messages array
55
+ const hasErrorMessages = appState.messages.some((message) => message.role === 'error' ||
56
+ (typeof message.content === 'string' &&
57
+ message.content.toLowerCase().includes('error')));
58
+ // Check for tool approval required messages
59
+ const hasToolApprovalRequired = appState.messages.some((message) => typeof message.content === 'string' &&
60
+ message.content.includes('Tool approval required'));
61
+ if (hasTimedOut) {
62
+ return { shouldExit: true, reason: 'timeout' };
63
+ }
64
+ if (hasToolApprovalRequired) {
65
+ return { shouldExit: true, reason: 'tool-approval' };
66
+ }
67
+ if (hasErrorMessages) {
68
+ return { shouldExit: true, reason: 'error' };
69
+ }
70
+ // Exit when conversation is complete and either:
71
+ // - We have messages in history (for chat/bash commands), OR
72
+ // - Conversation is marked complete (for display-only commands like /mcp)
73
+ if (isComplete && appState.isConversationComplete) {
74
+ return { shouldExit: true, reason: 'complete' };
75
+ }
76
+ return { shouldExit: false, reason: null };
77
+ }
78
+ export default function App({ vscodeMode = false, vscodePort, nonInteractivePrompt, nonInteractiveMode = false, loggingConfig = {}, }) {
79
+ // Memoize the logger to prevent recreation on every render
80
+ const logger = useMemo(() => createPinoLogger(undefined, loggingConfig), [loggingConfig]);
81
+ // Log application startup with key configuration
82
+ React.useEffect(() => {
83
+ logger.info('Nanocoder application starting', {
84
+ vscodeMode,
85
+ vscodePort,
86
+ nodeEnv: process.env.NODE_ENV || 'development',
87
+ platform: process.platform,
88
+ pid: process.pid,
89
+ });
90
+ }, [logger, vscodeMode, vscodePort]);
36
91
  // Use extracted hooks
37
92
  const appState = useAppState();
38
93
  const { exit } = useApp();
39
94
  const { isTrusted, handleConfirmTrust, isTrustLoading, isTrustedError } = useDirectoryTrust();
95
+ // Sync global mode context whenever development mode changes
96
+ React.useEffect(() => {
97
+ setCurrentModeContext(appState.developmentMode);
98
+ logger.info('Development mode changed', {
99
+ newMode: appState.developmentMode,
100
+ previousMode: undefined, // Could track previous state if needed
101
+ });
102
+ }, [appState.developmentMode, logger]);
40
103
  // VS Code extension installation prompt state
41
104
  const [showExtensionPrompt, setShowExtensionPrompt] = React.useState(() => vscodeMode && shouldPromptExtensionInstall());
42
105
  const [extensionPromptComplete, setExtensionPromptComplete] = React.useState(false);
@@ -45,6 +108,15 @@ export default function App({ vscodeMode = false, vscodePort }) {
45
108
  };
46
109
  // VS Code server integration - handles prompts from VS Code extension
47
110
  const handleVSCodePrompt = React.useCallback((prompt, context) => {
111
+ const correlationId = generateCorrelationId();
112
+ logger.info('VS Code prompt received', {
113
+ promptLength: prompt.length,
114
+ hasContext: !!context,
115
+ filePath: context?.filePath,
116
+ hasSelection: !!context?.selection,
117
+ cursorPosition: context?.cursorPosition,
118
+ correlationId,
119
+ });
48
120
  // Build enhanced prompt with context if available
49
121
  let enhancedPrompt = prompt;
50
122
  if (context?.filePath) {
@@ -52,8 +124,11 @@ export default function App({ vscodeMode = false, vscodePort }) {
52
124
  }
53
125
  // This will be connected to chat handler after initialization
54
126
  // For now, store it for processing
55
- console.log('VS Code prompt received:', enhancedPrompt);
56
- }, []);
127
+ logger.debug('VS Code enhanced prompt prepared', {
128
+ enhancedPromptLength: enhancedPrompt.length,
129
+ correlationId,
130
+ });
131
+ }, [logger]);
57
132
  // Setup VS Code server (returns connection status and methods)
58
133
  // The server handles prompts via callback and exposes methods for sending messages
59
134
  const _vsCodeServer = useVSCodeServer({
@@ -72,21 +147,58 @@ export default function App({ vscodeMode = false, vscodePort }) {
72
147
  // Initialize global message queue on component mount
73
148
  React.useEffect(() => {
74
149
  setGlobalMessageQueue(appState.addToChatQueue);
75
- }, [appState.addToChatQueue]);
150
+ logger.debug('Global message queue initialized', {
151
+ chatQueueFunction: 'addToChatQueue',
152
+ });
153
+ }, [appState.addToChatQueue, logger]);
154
+ // Log important application state changes
155
+ React.useEffect(() => {
156
+ if (appState.client) {
157
+ logger.info('AI client initialized', {
158
+ provider: appState.currentProvider,
159
+ model: appState.currentModel,
160
+ hasToolManager: !!appState.toolManager,
161
+ });
162
+ }
163
+ }, [
164
+ appState.client,
165
+ appState.currentProvider,
166
+ appState.currentModel,
167
+ appState.toolManager,
168
+ logger,
169
+ ]);
170
+ React.useEffect(() => {
171
+ if (appState.mcpInitialized) {
172
+ logger.info('MCP servers initialized', {
173
+ serverCount: appState.mcpServersStatus?.length || 0,
174
+ status: 'connected',
175
+ });
176
+ }
177
+ }, [appState.mcpInitialized, appState.mcpServersStatus, logger]);
178
+ React.useEffect(() => {
179
+ if (appState.updateInfo) {
180
+ logger.info('Update information available', {
181
+ hasUpdate: appState.updateInfo.hasUpdate,
182
+ currentVersion: appState.updateInfo.currentVersion,
183
+ latestVersion: appState.updateInfo.latestVersion,
184
+ });
185
+ }
186
+ }, [appState.updateInfo, logger]);
76
187
  // Setup chat handler
77
188
  const chatHandler = useChatHandler({
78
189
  client: appState.client,
79
190
  toolManager: appState.toolManager,
80
191
  messages: appState.messages,
81
192
  setMessages: appState.updateMessages,
193
+ currentProvider: appState.currentProvider,
82
194
  currentModel: appState.currentModel,
83
- setIsThinking: appState.setIsThinking,
84
195
  setIsCancelling: appState.setIsCancelling,
85
196
  addToChatQueue: appState.addToChatQueue,
86
197
  componentKeyCounter: appState.componentKeyCounter,
87
198
  abortController: appState.abortController,
88
199
  setAbortController: appState.setAbortController,
89
200
  developmentMode: appState.developmentMode,
201
+ nonInteractiveMode,
90
202
  onStartToolConfirmationFlow: (toolCalls, updatedMessages, assistantMsg, systemMessage) => {
91
203
  appState.setPendingToolCalls(toolCalls);
92
204
  appState.setCurrentToolIndex(0);
@@ -98,6 +210,10 @@ export default function App({ vscodeMode = false, vscodePort }) {
98
210
  });
99
211
  appState.setIsToolConfirmationMode(true);
100
212
  },
213
+ onConversationComplete: () => {
214
+ // Signal that the conversation has completed
215
+ appState.setIsConversationComplete(true);
216
+ },
101
217
  });
102
218
  // Setup tool handler
103
219
  const toolHandler = useToolHandler({
@@ -120,6 +236,43 @@ export default function App({ vscodeMode = false, vscodePort }) {
120
236
  currentProvider: appState.currentProvider,
121
237
  setDevelopmentMode: appState.setDevelopmentMode,
122
238
  });
239
+ // Log when application is fully ready and interface is active
240
+ useEffect(() => {
241
+ // Only log when we have a fully initialized application ready for user interaction
242
+ if (appState.mcpInitialized &&
243
+ appState.client &&
244
+ !appState.isToolExecuting &&
245
+ !appState.isToolConfirmationMode &&
246
+ !appState.isConfigWizardMode &&
247
+ appState.pendingToolCalls.length === 0) {
248
+ const correlationId = generateCorrelationId();
249
+ withNewCorrelationContext(() => {
250
+ logger.info('Application interface ready for user interaction', {
251
+ correlationId,
252
+ interfaceState: {
253
+ developmentMode: appState.developmentMode,
254
+ hasPendingToolCalls: appState.pendingToolCalls.length > 0,
255
+ clientInitialized: !!appState.client,
256
+ mcpServersConnected: appState.mcpInitialized,
257
+ inputDisabled: chatHandler.isStreaming ||
258
+ appState.isToolExecuting ||
259
+ appState.isBashExecuting,
260
+ },
261
+ });
262
+ }, correlationId);
263
+ }
264
+ }, [
265
+ appState.mcpInitialized,
266
+ appState.client,
267
+ appState.isToolExecuting,
268
+ appState.isToolConfirmationMode,
269
+ appState.isConfigWizardMode,
270
+ appState.pendingToolCalls.length,
271
+ logger,
272
+ appState.developmentMode,
273
+ chatHandler.isStreaming,
274
+ appState.isBashExecuting,
275
+ ]);
123
276
  // Setup initialization
124
277
  const appInitialization = useAppInitialization({
125
278
  setClient: appState.setClient,
@@ -132,6 +285,10 @@ export default function App({ vscodeMode = false, vscodePort }) {
132
285
  setStartChat: appState.setStartChat,
133
286
  setMcpInitialized: appState.setMcpInitialized,
134
287
  setUpdateInfo: appState.setUpdateInfo,
288
+ setMcpServersStatus: appState.setMcpServersStatus,
289
+ setLspServersStatus: appState.setLspServersStatus,
290
+ setPreferencesLoaded: appState.setPreferencesLoaded,
291
+ setCustomCommandsCount: appState.setCustomCommandsCount,
135
292
  addToChatQueue: appState.addToChatQueue,
136
293
  componentKeyCounter: appState.componentKeyCounter,
137
294
  customCommandCache: appState.customCommandCache,
@@ -151,7 +308,7 @@ export default function App({ vscodeMode = false, vscodePort }) {
151
308
  setIsModelSelectionMode: appState.setIsModelSelectionMode,
152
309
  setIsProviderSelectionMode: appState.setIsProviderSelectionMode,
153
310
  setIsThemeSelectionMode: appState.setIsThemeSelectionMode,
154
- setIsRecommendationsMode: appState.setIsRecommendationsMode,
311
+ setIsModelDatabaseMode: appState.setIsModelDatabaseMode,
155
312
  setIsConfigWizardMode: appState.setIsConfigWizardMode,
156
313
  addToChatQueue: appState.addToChatQueue,
157
314
  componentKeyCounter: appState.componentKeyCounter,
@@ -161,10 +318,17 @@ export default function App({ vscodeMode = false, vscodePort }) {
161
318
  const clearMessages = React.useMemo(() => createClearMessagesHandler(appState.updateMessages, appState.client), [appState.updateMessages, appState.client]);
162
319
  const handleCancel = React.useCallback(() => {
163
320
  if (appState.abortController) {
321
+ logger.info('Cancelling current operation', {
322
+ operation: 'user_cancellation',
323
+ hasAbortController: !!appState.abortController,
324
+ });
164
325
  appState.setIsCancelling(true);
165
326
  appState.abortController.abort();
166
327
  }
167
- }, [appState]);
328
+ else {
329
+ logger.debug('Cancel requested but no active operation to cancel');
330
+ }
331
+ }, [appState, logger]);
168
332
  const handleToggleDevelopmentMode = React.useCallback(() => {
169
333
  appState.setDevelopmentMode(currentMode => {
170
334
  const modes = [
@@ -174,13 +338,64 @@ export default function App({ vscodeMode = false, vscodePort }) {
174
338
  ];
175
339
  const currentIndex = modes.indexOf(currentMode);
176
340
  const nextIndex = (currentIndex + 1) % modes.length;
177
- return modes[nextIndex];
341
+ const nextMode = modes[nextIndex];
342
+ logger.info('Development mode toggled', {
343
+ previousMode: currentMode,
344
+ nextMode,
345
+ modeIndex: nextIndex,
346
+ totalModes: modes.length,
347
+ });
348
+ // Sync global mode context for tool needsApproval logic
349
+ setCurrentModeContext(nextMode);
350
+ return nextMode;
178
351
  });
179
- }, [appState]);
352
+ }, [appState, logger]);
180
353
  const handleShowStatus = React.useCallback(() => {
181
- appState.addToChatQueue(_jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo }, `status-${appState.componentKeyCounter}`));
354
+ logger.debug('Status display requested', {
355
+ currentProvider: appState.currentProvider,
356
+ currentModel: appState.currentModel,
357
+ currentTheme: appState.currentTheme,
358
+ componentKeyCounter: appState.componentKeyCounter,
359
+ });
360
+ appState.addToChatQueue(_jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo, mcpServersStatus: appState.mcpServersStatus, lspServersStatus: appState.lspServersStatus, preferencesLoaded: appState.preferencesLoaded, customCommandsCount: appState.customCommandsCount }, `status-${appState.componentKeyCounter}`));
361
+ }, [appState, logger]);
362
+ // Checkpoint selection handlers
363
+ const handleCheckpointSelect = React.useCallback(async (checkpointName, createBackup) => {
364
+ try {
365
+ const manager = new CheckpointManager();
366
+ if (createBackup) {
367
+ try {
368
+ await manager.saveCheckpoint(`backup-${new Date().toISOString().replace(/[:.]/g, '-')}`, appState.messages, appState.currentProvider, appState.currentModel);
369
+ }
370
+ catch (error) {
371
+ addToMessageQueue(_jsx(WarningMessage, { message: `Warning: Failed to create backup: ${error instanceof Error ? error.message : 'Unknown error'}`, hideBox: true }, `backup-warning-${Date.now()}`));
372
+ }
373
+ }
374
+ const checkpointData = await manager.loadCheckpoint(checkpointName, {
375
+ validateIntegrity: true,
376
+ });
377
+ await manager.restoreFiles(checkpointData);
378
+ addToMessageQueue(_jsx(SuccessMessage, { message: `✓ Checkpoint '${checkpointName}' restored successfully`, hideBox: true }, `restore-success-${Date.now()}`));
379
+ }
380
+ catch (error) {
381
+ addToMessageQueue(_jsx(ErrorMessage, { message: `Failed to restore checkpoint: ${error instanceof Error ? error.message : 'Unknown error'}`, hideBox: true }, `restore-error-${Date.now()}`));
382
+ }
383
+ finally {
384
+ appState.setIsCheckpointLoadMode(false);
385
+ appState.setCheckpointLoadData(null);
386
+ }
387
+ }, [appState]);
388
+ const handleCheckpointCancel = React.useCallback(() => {
389
+ appState.setIsCheckpointLoadMode(false);
390
+ appState.setCheckpointLoadData(null);
391
+ }, [appState]);
392
+ const enterCheckpointLoadMode = React.useCallback((checkpoints, currentMessageCount) => {
393
+ appState.setCheckpointLoadData({ checkpoints, currentMessageCount });
394
+ appState.setIsCheckpointLoadMode(true);
182
395
  }, [appState]);
183
396
  const handleMessageSubmit = React.useCallback(async (message) => {
397
+ // Reset conversation completion flag when starting a new message
398
+ appState.setIsConversationComplete(false);
184
399
  await handleMessageSubmission(message, {
185
400
  customCommandCache: appState.customCommandCache,
186
401
  customCommandLoader: appState.customCommandLoader,
@@ -189,11 +404,13 @@ export default function App({ vscodeMode = false, vscodePort }) {
189
404
  onEnterModelSelectionMode: modeHandlers.enterModelSelectionMode,
190
405
  onEnterProviderSelectionMode: modeHandlers.enterProviderSelectionMode,
191
406
  onEnterThemeSelectionMode: modeHandlers.enterThemeSelectionMode,
192
- onEnterRecommendationsMode: modeHandlers.enterRecommendationsMode,
407
+ onEnterModelDatabaseMode: modeHandlers.enterModelDatabaseMode,
193
408
  onEnterConfigWizardMode: modeHandlers.enterConfigWizardMode,
409
+ onEnterCheckpointLoadMode: enterCheckpointLoadMode,
194
410
  onShowStatus: handleShowStatus,
195
411
  onHandleChatMessage: chatHandler.handleChatMessage,
196
412
  onAddToChatQueue: appState.addToChatQueue,
413
+ onCommandComplete: () => appState.setIsConversationComplete(true),
197
414
  componentKeyCounter: appState.componentKeyCounter,
198
415
  setMessages: appState.updateMessages,
199
416
  messages: appState.messages,
@@ -206,66 +423,165 @@ export default function App({ vscodeMode = false, vscodePort }) {
206
423
  getMessageTokens: appState.getMessageTokens,
207
424
  });
208
425
  }, [
209
- appState.customCommandCache,
210
- appState.customCommandLoader,
211
- appState.customCommandExecutor,
426
+ appState,
212
427
  clearMessages,
213
428
  modeHandlers.enterModelSelectionMode,
214
429
  modeHandlers.enterProviderSelectionMode,
215
430
  modeHandlers.enterThemeSelectionMode,
216
- modeHandlers.enterRecommendationsMode,
431
+ modeHandlers.enterModelDatabaseMode,
217
432
  modeHandlers.enterConfigWizardMode,
433
+ enterCheckpointLoadMode,
218
434
  handleShowStatus,
219
435
  chatHandler.handleChatMessage,
220
- appState.addToChatQueue,
221
- appState.componentKeyCounter,
222
- appState.updateMessages,
223
- appState.messages,
224
- appState.setIsBashExecuting,
225
- appState.setCurrentBashCommand,
226
- appState.currentProvider,
227
- appState.currentModel,
228
- appState.currentTheme,
229
- appState.updateInfo,
230
- appState.getMessageTokens,
231
436
  ]);
437
+ // Handle non-interactive mode - automatically submit prompt and exit when done
438
+ const [nonInteractiveSubmitted, setNonInteractiveSubmitted] = React.useState(false);
439
+ React.useEffect(() => {
440
+ if (nonInteractivePrompt &&
441
+ appState.mcpInitialized &&
442
+ appState.client &&
443
+ !nonInteractiveSubmitted) {
444
+ setNonInteractiveSubmitted(true);
445
+ // Set auto-accept mode for non-interactive execution
446
+ appState.setDevelopmentMode('auto-accept');
447
+ // Submit the prompt
448
+ void handleMessageSubmit(nonInteractivePrompt);
449
+ }
450
+ // eslint-disable-next-line react-hooks/exhaustive-deps
451
+ }, [
452
+ nonInteractivePrompt,
453
+ appState.mcpInitialized,
454
+ appState.client,
455
+ nonInteractiveSubmitted,
456
+ handleMessageSubmit,
457
+ appState.setDevelopmentMode,
458
+ ]);
459
+ // Exit in non-interactive mode when all processing is complete
460
+ const OUTPUT_FLUSH_DELAY_MS = 1000;
461
+ const MAX_EXECUTION_TIME_MS = 300000; // 5 minutes
462
+ const [startTime] = React.useState(Date.now());
463
+ React.useEffect(() => {
464
+ if (nonInteractivePrompt && nonInteractiveSubmitted) {
465
+ const { shouldExit, reason } = isNonInteractiveModeComplete(appState, startTime, MAX_EXECUTION_TIME_MS);
466
+ if (shouldExit) {
467
+ if (reason === 'timeout') {
468
+ console.error('Non-interactive mode timed out');
469
+ }
470
+ else if (reason === 'error') {
471
+ console.error('Non-interactive mode encountered errors');
472
+ }
473
+ else if (reason === 'tool-approval') {
474
+ // Exit with error code when tool approval is required
475
+ // Error message already printed by useChatHandler
476
+ }
477
+ // Wait a bit to ensure all output is flushed
478
+ const timer = setTimeout(() => {
479
+ process.exit(reason === 'error' || reason === 'tool-approval' ? 1 : 0);
480
+ }, OUTPUT_FLUSH_DELAY_MS);
481
+ return () => clearTimeout(timer);
482
+ }
483
+ }
484
+ }, [nonInteractivePrompt, nonInteractiveSubmitted, appState, startTime]);
485
+ const shouldShowWelcome = shouldRenderWelcome(nonInteractiveMode);
486
+ const pendingToolCallCount = appState.pendingToolCalls.length;
487
+ const nonInteractiveLoadingMessage = React.useMemo(() => {
488
+ if (!nonInteractivePrompt) {
489
+ return null;
490
+ }
491
+ // Don't show loading message when conversation is complete (about to exit)
492
+ if (appState.isConversationComplete) {
493
+ return null;
494
+ }
495
+ if (!appState.mcpInitialized || !appState.client) {
496
+ return 'Waiting for MCP servers...';
497
+ }
498
+ if (appState.isToolExecuting ||
499
+ appState.isToolConfirmationMode ||
500
+ pendingToolCallCount > 0) {
501
+ return 'Waiting for tooling...';
502
+ }
503
+ if (appState.isBashExecuting) {
504
+ return 'Waiting for bash execution...';
505
+ }
506
+ return 'Waiting for chat to complete...';
507
+ }, [
508
+ nonInteractivePrompt,
509
+ appState.isConversationComplete,
510
+ appState.mcpInitialized,
511
+ appState.client,
512
+ appState.isToolExecuting,
513
+ appState.isToolConfirmationMode,
514
+ pendingToolCallCount,
515
+ appState.isBashExecuting,
516
+ ]);
517
+ const loadingLabel = nonInteractivePrompt
518
+ ? (nonInteractiveLoadingMessage ?? 'Loading...')
519
+ : 'Loading...';
232
520
  // Memoize static components to prevent unnecessary re-renders
233
- const staticComponents = React.useMemo(() => [
234
- _jsx(WelcomeMessage, {}, "welcome"),
235
- _jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo }, "status"),
236
- ], [
521
+ const staticComponents = React.useMemo(() => {
522
+ const components = [];
523
+ if (shouldShowWelcome) {
524
+ components.push(_jsx(WelcomeMessage, {}, "welcome"));
525
+ }
526
+ components.push(_jsx(Status, { provider: appState.currentProvider, model: appState.currentModel, theme: appState.currentTheme, updateInfo: appState.updateInfo, mcpServersStatus: appState.mcpServersStatus, lspServersStatus: appState.lspServersStatus, preferencesLoaded: appState.preferencesLoaded, customCommandsCount: appState.customCommandsCount }, "status"));
527
+ return components;
528
+ }, [
529
+ shouldShowWelcome,
237
530
  appState.currentProvider,
238
531
  appState.currentModel,
239
532
  appState.currentTheme,
240
533
  appState.updateInfo,
534
+ appState.mcpServersStatus,
535
+ appState.lspServersStatus,
536
+ appState.preferencesLoaded,
537
+ appState.customCommandsCount,
241
538
  ]);
242
539
  // Handle loading state for directory trust check
243
540
  if (isTrustLoading) {
244
- return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsxs(Text, { color: themeContextValue.colors.secondary, children: [_jsx(Spinner, { type: "dots2" }), " Checking directory trust..."] }) }));
541
+ logger.debug('Directory trust check in progress');
542
+ return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsxs(Text, { color: themeContextValue.colors.secondary, children: [_jsx(Spinner, { type: "dots" }), " Checking directory trust..."] }) }));
245
543
  }
246
544
  // Handle error state for directory trust
247
545
  if (isTrustedError) {
546
+ logger.error('Directory trust check failed', {
547
+ error: isTrustedError,
548
+ suggestion: 'restart_application_or_check_permissions',
549
+ });
248
550
  return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { color: themeContextValue.colors.error, children: ["\u26A0\uFE0F Error checking directory trust: ", isTrustedError] }), _jsx(Text, { color: themeContextValue.colors.secondary, children: "Please restart the application or check your permissions." })] }));
249
551
  }
250
552
  // Show security disclaimer if directory is not trusted
251
553
  if (!isTrusted) {
554
+ logger.info('Directory not trusted, showing security disclaimer');
252
555
  return (_jsx(SecurityDisclaimer, { onConfirm: handleConfirmTrust, onExit: handleExit }));
253
556
  }
557
+ // Directory is trusted - application can proceed
558
+ logger.debug('Directory trusted, proceeding with application initialization');
254
559
  // Show VS Code extension installation prompt if needed
255
560
  if (showExtensionPrompt && !extensionPromptComplete) {
561
+ logger.info('Showing VS Code extension installation prompt', {
562
+ vscodeMode,
563
+ extensionPromptComplete,
564
+ });
256
565
  return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(WelcomeMessage, {}), _jsx(VSCodeExtensionPrompt, { onComplete: () => {
566
+ logger.info('VS Code extension prompt completed');
257
567
  setShowExtensionPrompt(false);
258
568
  setExtensionPromptComplete(true);
259
569
  }, onSkip: () => {
570
+ logger.info('VS Code extension prompt skipped');
260
571
  setShowExtensionPrompt(false);
261
572
  setExtensionPromptComplete(true);
262
573
  } })] }) }));
263
574
  }
264
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsx(UIStateProvider, { children: _jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", children: [_jsx(Box, { flexGrow: 1, flexDirection: "column", minHeight: 0, children: appState.startChat && (_jsx(ChatQueue, { staticComponents: staticComponents, queuedComponents: appState.chatComponents })) }), appState.startChat && (_jsxs(Box, { flexDirection: "column", marginLeft: -1, children: [appState.isCancelling ? (_jsx(CancellingIndicator, {})) : appState.isThinking && !chatHandler.isStreaming ? (_jsx(ThinkingIndicator, {})) : null, chatHandler.isStreaming && chatHandler.streamingContent && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: themeContextValue.colors.primary, bold: true, children: [appState.currentModel, ":"] }) }), _jsx(Text, { children: chatHandler.streamingContent })] })), appState.isModelSelectionMode ? (_jsx(ModelSelector, { client: appState.client, currentModel: appState.currentModel, onModelSelect: model => void modeHandlers.handleModelSelect(model), onCancel: modeHandlers.handleModelSelectionCancel })) : appState.isProviderSelectionMode ? (_jsx(ProviderSelector, { currentProvider: appState.currentProvider, onProviderSelect: provider => void modeHandlers.handleProviderSelect(provider), onCancel: modeHandlers.handleProviderSelectionCancel })) : appState.isThemeSelectionMode ? (_jsx(ThemeSelector, { onThemeSelect: modeHandlers.handleThemeSelect, onCancel: modeHandlers.handleThemeSelectionCancel })) : appState.isRecommendationsMode ? (_jsx(RecommendationsDisplay, { onCancel: modeHandlers.handleRecommendationsCancel })) : appState.isConfigWizardMode ? (_jsx(ConfigWizard, { projectDir: process.cwd(), onComplete: configPath => void modeHandlers.handleConfigWizardComplete(configPath), onCancel: modeHandlers.handleConfigWizardCancel })) : appState.isToolConfirmationMode &&
575
+ return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsx(UIStateProvider, { children: _jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", children: [_jsx(Box, { flexGrow: 1, flexDirection: "column", minHeight: 0, children: appState.startChat && (_jsx(ChatQueue, { staticComponents: staticComponents, queuedComponents: appState.chatComponents })) }), appState.startChat && (_jsxs(Box, { flexDirection: "column", marginLeft: -1, children: [appState.isCancelling && _jsx(CancellingIndicator, {}), chatHandler.isStreaming && chatHandler.streamingContent && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: themeContextValue.colors.primary, bold: true, children: [appState.currentModel, ":"] }) }), _jsx(Text, { children: chatHandler.streamingContent })] })), appState.isModelSelectionMode ? (_jsx(ModelSelector, { client: appState.client, currentModel: appState.currentModel, onModelSelect: model => void modeHandlers.handleModelSelect(model), onCancel: modeHandlers.handleModelSelectionCancel })) : appState.isProviderSelectionMode ? (_jsx(ProviderSelector, { currentProvider: appState.currentProvider, onProviderSelect: provider => void modeHandlers.handleProviderSelect(provider), onCancel: modeHandlers.handleProviderSelectionCancel })) : appState.isThemeSelectionMode ? (_jsx(ThemeSelector, { onThemeSelect: modeHandlers.handleThemeSelect, onCancel: modeHandlers.handleThemeSelectionCancel })) : appState.isModelDatabaseMode ? (_jsx(ModelDatabaseDisplay, { onCancel: modeHandlers.handleModelDatabaseCancel })) : appState.isConfigWizardMode ? (_jsx(ConfigWizard, { projectDir: process.cwd(), onComplete: configPath => void modeHandlers.handleConfigWizardComplete(configPath), onCancel: modeHandlers.handleConfigWizardCancel })) : appState.isCheckpointLoadMode &&
576
+ appState.checkpointLoadData ? (_jsx(CheckpointSelector, { checkpoints: appState.checkpointLoadData.checkpoints, currentMessageCount: appState.checkpointLoadData.currentMessageCount, onSelect: (name, backup) => void handleCheckpointSelect(name, backup), onCancel: handleCheckpointCancel })) : appState.isToolConfirmationMode &&
265
577
  appState.pendingToolCalls[appState.currentToolIndex] ? (_jsx(ToolConfirmation, { toolCall: appState.pendingToolCalls[appState.currentToolIndex], onConfirm: toolHandler.handleToolConfirmation, onCancel: toolHandler.handleToolConfirmationCancel })) : appState.isToolExecuting &&
266
578
  appState.pendingToolCalls[appState.currentToolIndex] ? (_jsx(ToolExecutionIndicator, { toolName: appState.pendingToolCalls[appState.currentToolIndex]
267
- .function.name, currentIndex: appState.currentToolIndex, totalTools: appState.pendingToolCalls.length })) : appState.isBashExecuting ? (_jsx(BashExecutionIndicator, { command: appState.currentBashCommand })) : appState.mcpInitialized && appState.client ? (_jsx(UserInput, { customCommands: Array.from(appState.customCommandCache.keys()), onSubmit: msg => void handleMessageSubmit(msg), disabled: appState.isThinking ||
579
+ .function.name, currentIndex: appState.currentToolIndex, totalTools: appState.pendingToolCalls.length })) : appState.isBashExecuting ? (_jsx(BashExecutionIndicator, { command: appState.currentBashCommand })) : appState.mcpInitialized &&
580
+ appState.client &&
581
+ !nonInteractivePrompt ? (_jsx(UserInput, { customCommands: Array.from(appState.customCommandCache.keys()), onSubmit: msg => void handleMessageSubmit(msg), disabled: chatHandler.isStreaming ||
268
582
  appState.isToolExecuting ||
269
- appState.isBashExecuting, onCancel: handleCancel, onToggleMode: handleToggleDevelopmentMode, developmentMode: appState.developmentMode })) : appState.mcpInitialized && !appState.client ? (_jsx(_Fragment, {})) : (_jsxs(Text, { color: themeContextValue.colors.secondary, children: [_jsx(Spinner, { type: "dots2" }), " Loading..."] }))] }))] }) }) }));
583
+ appState.isBashExecuting, onCancel: handleCancel, onToggleMode: handleToggleDevelopmentMode, developmentMode: appState.developmentMode })) : appState.mcpInitialized && !appState.client ? (_jsx(_Fragment, {})) : nonInteractivePrompt && !nonInteractiveLoadingMessage ? (
584
+ // Show completion message when non-interactive mode is done
585
+ _jsx(Text, { color: themeContextValue.colors.secondary, children: "Completed. Exiting." })) : (_jsxs(Text, { color: themeContextValue.colors.secondary, children: [_jsx(Spinner, { type: "dots" }), " ", loadingLabel] }))] }))] }) }) }));
270
586
  }
271
587
  //# sourceMappingURL=app.js.map