@nanocollective/nanocoder 1.20.4 → 1.22.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 (486) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +157 -72
  3. package/assets/nanocoder-vscode.vsix +0 -0
  4. package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
  5. package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
  6. package/dist/ai-sdk-client/chat/chat-handler.d.ts +1 -0
  7. package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
  8. package/dist/ai-sdk-client/chat/chat-handler.js +66 -7
  9. package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
  10. package/dist/ai-sdk-client/error-handling/tool-error-detector.d.ts +8 -0
  11. package/dist/ai-sdk-client/error-handling/tool-error-detector.d.ts.map +1 -0
  12. package/dist/ai-sdk-client/error-handling/tool-error-detector.js +52 -0
  13. package/dist/ai-sdk-client/error-handling/tool-error-detector.js.map +1 -0
  14. package/dist/ai-sdk-client/providers/provider-factory.d.ts +6 -3
  15. package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
  16. package/dist/ai-sdk-client/providers/provider-factory.js +18 -4
  17. package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
  18. package/dist/ai-sdk-client/tools/tool-prompt-formatter.d.ts +8 -0
  19. package/dist/ai-sdk-client/tools/tool-prompt-formatter.d.ts.map +1 -0
  20. package/dist/ai-sdk-client/tools/tool-prompt-formatter.js +97 -0
  21. package/dist/ai-sdk-client/tools/tool-prompt-formatter.js.map +1 -0
  22. package/dist/app/App.d.ts.map +1 -1
  23. package/dist/app/App.js +22 -12
  24. package/dist/app/App.js.map +1 -1
  25. package/dist/app/components/modal-selectors.d.ts +6 -7
  26. package/dist/app/components/modal-selectors.d.ts.map +1 -1
  27. package/dist/app/components/modal-selectors.js +10 -10
  28. package/dist/app/components/modal-selectors.js.map +1 -1
  29. package/dist/app/components/settings-selector.d.ts +6 -0
  30. package/dist/app/components/settings-selector.d.ts.map +1 -0
  31. package/dist/app/components/settings-selector.js +289 -0
  32. package/dist/app/components/settings-selector.js.map +1 -0
  33. package/dist/app/utils/app-util.d.ts.map +1 -1
  34. package/dist/app/utils/app-util.js +178 -13
  35. package/dist/app/utils/app-util.js.map +1 -1
  36. package/dist/cli.js +22 -0
  37. package/dist/cli.js.map +1 -1
  38. package/dist/client-factory.d.ts.map +1 -1
  39. package/dist/client-factory.js +23 -20
  40. package/dist/client-factory.js.map +1 -1
  41. package/dist/commands/clear.d.ts.map +1 -1
  42. package/dist/commands/clear.js +8 -5
  43. package/dist/commands/clear.js.map +1 -1
  44. package/dist/commands/compact.d.ts +24 -0
  45. package/dist/commands/compact.d.ts.map +1 -0
  46. package/dist/commands/compact.js +31 -0
  47. package/dist/commands/compact.js.map +1 -0
  48. package/dist/commands/custom-commands.d.ts.map +1 -1
  49. package/dist/commands/custom-commands.js +1 -1
  50. package/dist/commands/custom-commands.js.map +1 -1
  51. package/dist/commands/exit.d.ts +1 -0
  52. package/dist/commands/exit.d.ts.map +1 -1
  53. package/dist/commands/exit.js +14 -0
  54. package/dist/commands/exit.js.map +1 -1
  55. package/dist/commands/explorer.d.ts +3 -0
  56. package/dist/commands/explorer.d.ts.map +1 -0
  57. package/dist/commands/explorer.js +10 -0
  58. package/dist/commands/explorer.js.map +1 -0
  59. package/dist/commands/help.d.ts.map +1 -1
  60. package/dist/commands/help.js +1 -1
  61. package/dist/commands/help.js.map +1 -1
  62. package/dist/commands/index.d.ts +6 -3
  63. package/dist/commands/index.d.ts.map +1 -1
  64. package/dist/commands/index.js +6 -3
  65. package/dist/commands/index.js.map +1 -1
  66. package/dist/commands/init.d.ts.map +1 -1
  67. package/dist/commands/init.js +1 -1
  68. package/dist/commands/init.js.map +1 -1
  69. package/dist/commands/lsp.d.ts.map +1 -1
  70. package/dist/commands/lsp.js +1 -1
  71. package/dist/commands/lsp.js.map +1 -1
  72. package/dist/commands/mcp.d.ts.map +1 -1
  73. package/dist/commands/mcp.js +15 -21
  74. package/dist/commands/mcp.js.map +1 -1
  75. package/dist/commands/model-database.d.ts.map +1 -1
  76. package/dist/commands/model-database.js +3 -3
  77. package/dist/commands/model-database.js.map +1 -1
  78. package/dist/commands/settings.d.ts +3 -0
  79. package/dist/commands/settings.d.ts.map +1 -0
  80. package/dist/commands/{theme.js → settings.js} +4 -4
  81. package/dist/commands/settings.js.map +1 -0
  82. package/dist/commands/setup-mcp.d.ts +3 -0
  83. package/dist/commands/setup-mcp.d.ts.map +1 -0
  84. package/dist/commands/setup-mcp.js +15 -0
  85. package/dist/commands/setup-mcp.js.map +1 -0
  86. package/dist/commands/setup-providers.d.ts +3 -0
  87. package/dist/commands/setup-providers.d.ts.map +1 -0
  88. package/dist/commands/{setup-config.js → setup-providers.js} +4 -4
  89. package/dist/commands/setup-providers.js.map +1 -0
  90. package/dist/commands/tasks.d.ts +3 -0
  91. package/dist/commands/tasks.d.ts.map +1 -0
  92. package/dist/commands/tasks.js +117 -0
  93. package/dist/commands/tasks.js.map +1 -0
  94. package/dist/commands/usage.d.ts.map +1 -1
  95. package/dist/commands/usage.js +31 -9
  96. package/dist/commands/usage.js.map +1 -1
  97. package/dist/components/assistant-message.d.ts.map +1 -1
  98. package/dist/components/assistant-message.js +39 -6
  99. package/dist/components/assistant-message.js.map +1 -1
  100. package/dist/components/checkpoint-selector.d.ts.map +1 -1
  101. package/dist/components/checkpoint-selector.js +3 -3
  102. package/dist/components/checkpoint-selector.js.map +1 -1
  103. package/dist/components/file-explorer/index.d.ts +3 -0
  104. package/dist/components/file-explorer/index.d.ts.map +1 -0
  105. package/dist/components/file-explorer/index.js +318 -0
  106. package/dist/components/file-explorer/index.js.map +1 -0
  107. package/dist/components/file-explorer/tree-item.d.ts +3 -0
  108. package/dist/components/file-explorer/tree-item.d.ts.map +1 -0
  109. package/dist/components/file-explorer/tree-item.js +42 -0
  110. package/dist/components/file-explorer/tree-item.js.map +1 -0
  111. package/dist/components/file-explorer/utils.d.ts +18 -0
  112. package/dist/components/file-explorer/utils.d.ts.map +1 -0
  113. package/dist/components/file-explorer/utils.js +51 -0
  114. package/dist/components/file-explorer/utils.js.map +1 -0
  115. package/dist/components/file-explorer.d.ts +2 -0
  116. package/dist/components/file-explorer.d.ts.map +1 -0
  117. package/dist/components/file-explorer.js +3 -0
  118. package/dist/components/file-explorer.js.map +1 -0
  119. package/dist/components/message-box.d.ts +1 -0
  120. package/dist/components/message-box.d.ts.map +1 -1
  121. package/dist/components/message-box.js +2 -2
  122. package/dist/components/message-box.js.map +1 -1
  123. package/dist/components/model-selector.d.ts.map +1 -1
  124. package/dist/components/model-selector.js +3 -3
  125. package/dist/components/model-selector.js.map +1 -1
  126. package/dist/components/provider-selector.d.ts.map +1 -1
  127. package/dist/components/provider-selector.js +1 -1
  128. package/dist/components/provider-selector.js.map +1 -1
  129. package/dist/components/security-disclaimer.d.ts.map +1 -1
  130. package/dist/components/security-disclaimer.js +1 -1
  131. package/dist/components/security-disclaimer.js.map +1 -1
  132. package/dist/components/status.d.ts +11 -0
  133. package/dist/components/status.d.ts.map +1 -1
  134. package/dist/components/status.js +4 -4
  135. package/dist/components/status.js.map +1 -1
  136. package/dist/components/task-list-display.d.ts +8 -0
  137. package/dist/components/task-list-display.d.ts.map +1 -0
  138. package/dist/components/task-list-display.js +26 -0
  139. package/dist/components/task-list-display.js.map +1 -0
  140. package/dist/components/tool-message.d.ts.map +1 -1
  141. package/dist/components/tool-message.js +1 -1
  142. package/dist/components/tool-message.js.map +1 -1
  143. package/dist/components/ui/styled-title.js +38 -38
  144. package/dist/components/usage/progress-bar.d.ts.map +1 -1
  145. package/dist/components/usage/progress-bar.js +6 -3
  146. package/dist/components/usage/progress-bar.js.map +1 -1
  147. package/dist/components/usage/usage-display.d.ts.map +1 -1
  148. package/dist/components/usage/usage-display.js +1 -1
  149. package/dist/components/usage/usage-display.js.map +1 -1
  150. package/dist/components/user-input.d.ts.map +1 -1
  151. package/dist/components/user-input.js +36 -16
  152. package/dist/components/user-input.js.map +1 -1
  153. package/dist/components/user-message.d.ts.map +1 -1
  154. package/dist/components/user-message.js +43 -12
  155. package/dist/components/user-message.js.map +1 -1
  156. package/dist/components/welcome-message.d.ts.map +1 -1
  157. package/dist/components/welcome-message.js +6 -2
  158. package/dist/components/welcome-message.js.map +1 -1
  159. package/dist/config/index.d.ts +7 -1
  160. package/dist/config/index.d.ts.map +1 -1
  161. package/dist/config/index.js +100 -16
  162. package/dist/config/index.js.map +1 -1
  163. package/dist/config/mcp-config-loader.d.ts +31 -0
  164. package/dist/config/mcp-config-loader.d.ts.map +1 -0
  165. package/dist/config/mcp-config-loader.js +341 -0
  166. package/dist/config/mcp-config-loader.js.map +1 -0
  167. package/dist/config/nanocoder-tools-config.d.ts +7 -0
  168. package/dist/config/nanocoder-tools-config.d.ts.map +1 -0
  169. package/dist/config/nanocoder-tools-config.js +14 -0
  170. package/dist/config/nanocoder-tools-config.js.map +1 -0
  171. package/dist/config/preferences.d.ts +4 -0
  172. package/dist/config/preferences.d.ts.map +1 -1
  173. package/dist/config/preferences.js +14 -0
  174. package/dist/config/preferences.js.map +1 -1
  175. package/dist/config/themes.d.ts.map +1 -1
  176. package/dist/config/themes.js +340 -0
  177. package/dist/config/themes.js.map +1 -1
  178. package/dist/config/validation.d.ts +11 -0
  179. package/dist/config/validation.d.ts.map +1 -0
  180. package/dist/config/validation.js +71 -0
  181. package/dist/config/validation.js.map +1 -0
  182. package/dist/constants.d.ts +3 -0
  183. package/dist/constants.d.ts.map +1 -1
  184. package/dist/constants.js +63 -0
  185. package/dist/constants.js.map +1 -1
  186. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +3 -1
  187. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
  188. package/dist/hooks/chat-handler/conversation/conversation-loop.js +52 -18
  189. package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
  190. package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
  191. package/dist/hooks/chat-handler/useChatHandler.js +7 -0
  192. package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
  193. package/dist/hooks/useAppHandlers.d.ts +3 -2
  194. package/dist/hooks/useAppHandlers.d.ts.map +1 -1
  195. package/dist/hooks/useAppHandlers.js +67 -4
  196. package/dist/hooks/useAppHandlers.js.map +1 -1
  197. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  198. package/dist/hooks/useAppInitialization.js +14 -4
  199. package/dist/hooks/useAppInitialization.js.map +1 -1
  200. package/dist/hooks/useAppState.d.ts +6 -4
  201. package/dist/hooks/useAppState.d.ts.map +1 -1
  202. package/dist/hooks/useAppState.js +9 -6
  203. package/dist/hooks/useAppState.js.map +1 -1
  204. package/dist/hooks/useModeHandlers.d.ts +12 -10
  205. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  206. package/dist/hooks/useModeHandlers.js +52 -42
  207. package/dist/hooks/useModeHandlers.js.map +1 -1
  208. package/dist/hooks/useTerminalWidth.d.ts +1 -1
  209. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  210. package/dist/hooks/useTerminalWidth.js +2 -2
  211. package/dist/hooks/useTerminalWidth.js.map +1 -1
  212. package/dist/hooks/useUIState.d.ts +2 -0
  213. package/dist/hooks/useUIState.d.ts.map +1 -1
  214. package/dist/hooks/useUIState.js +11 -1
  215. package/dist/hooks/useUIState.js.map +1 -1
  216. package/dist/mcp/mcp-client.d.ts +2 -0
  217. package/dist/mcp/mcp-client.d.ts.map +1 -1
  218. package/dist/mcp/mcp-client.js +13 -1
  219. package/dist/mcp/mcp-client.js.map +1 -1
  220. package/dist/models/models-dev-client.d.ts.map +1 -1
  221. package/dist/models/models-dev-client.js +61 -37
  222. package/dist/models/models-dev-client.js.map +1 -1
  223. package/dist/services/bash-executor.d.ts.map +1 -1
  224. package/dist/services/bash-executor.js +7 -0
  225. package/dist/services/bash-executor.js.map +1 -1
  226. package/dist/test-utils/cli-test-harness.d.ts +181 -0
  227. package/dist/test-utils/cli-test-harness.d.ts.map +1 -0
  228. package/dist/test-utils/cli-test-harness.js +413 -0
  229. package/dist/test-utils/cli-test-harness.js.map +1 -0
  230. package/dist/tools/execute-bash.d.ts.map +1 -1
  231. package/dist/tools/execute-bash.js +10 -2
  232. package/dist/tools/execute-bash.js.map +1 -1
  233. package/dist/tools/git/git-add.d.ts +8 -0
  234. package/dist/tools/git/git-add.d.ts.map +1 -0
  235. package/dist/tools/git/git-add.js +141 -0
  236. package/dist/tools/git/git-add.js.map +1 -0
  237. package/dist/tools/git/git-branch.d.ts +8 -0
  238. package/dist/tools/git/git-branch.d.ts.map +1 -0
  239. package/dist/tools/git/git-branch.js +251 -0
  240. package/dist/tools/git/git-branch.js.map +1 -0
  241. package/dist/tools/git/git-commit.d.ts +8 -0
  242. package/dist/tools/git/git-commit.d.ts.map +1 -0
  243. package/dist/tools/git/git-commit.js +176 -0
  244. package/dist/tools/git/git-commit.js.map +1 -0
  245. package/dist/tools/git/git-diff.d.ts +8 -0
  246. package/dist/tools/git/git-diff.d.ts.map +1 -0
  247. package/dist/tools/git/git-diff.js +136 -0
  248. package/dist/tools/git/git-diff.js.map +1 -0
  249. package/dist/tools/git/git-log.d.ts +8 -0
  250. package/dist/tools/git/git-log.d.ts.map +1 -0
  251. package/dist/tools/git/git-log.js +146 -0
  252. package/dist/tools/git/git-log.js.map +1 -0
  253. package/dist/tools/git/git-pr.d.ts +8 -0
  254. package/dist/tools/git/git-pr.d.ts.map +1 -0
  255. package/dist/tools/git/git-pr.js +252 -0
  256. package/dist/tools/git/git-pr.js.map +1 -0
  257. package/dist/tools/git/git-pull.d.ts +8 -0
  258. package/dist/tools/git/git-pull.d.ts.map +1 -0
  259. package/dist/tools/git/git-pull.js +151 -0
  260. package/dist/tools/git/git-pull.js.map +1 -0
  261. package/dist/tools/git/git-push.d.ts +8 -0
  262. package/dist/tools/git/git-push.d.ts.map +1 -0
  263. package/dist/tools/git/git-push.js +157 -0
  264. package/dist/tools/git/git-push.js.map +1 -0
  265. package/dist/tools/git/git-reset.d.ts +8 -0
  266. package/dist/tools/git/git-reset.d.ts.map +1 -0
  267. package/dist/tools/git/git-reset.js +183 -0
  268. package/dist/tools/git/git-reset.js.map +1 -0
  269. package/dist/tools/git/git-stash.d.ts +8 -0
  270. package/dist/tools/git/git-stash.d.ts.map +1 -0
  271. package/dist/tools/git/git-stash.js +260 -0
  272. package/dist/tools/git/git-stash.js.map +1 -0
  273. package/dist/tools/git/git-status.d.ts +8 -0
  274. package/dist/tools/git/git-status.d.ts.map +1 -0
  275. package/dist/tools/git/git-status.js +233 -0
  276. package/dist/tools/git/git-status.js.map +1 -0
  277. package/dist/tools/git/index.d.ts +9 -12
  278. package/dist/tools/git/index.d.ts.map +1 -1
  279. package/dist/tools/git/index.js +43 -11
  280. package/dist/tools/git/index.js.map +1 -1
  281. package/dist/tools/git/utils.d.ts +136 -23
  282. package/dist/tools/git/utils.d.ts.map +1 -1
  283. package/dist/tools/git/utils.js +405 -360
  284. package/dist/tools/git/utils.js.map +1 -1
  285. package/dist/tools/index.d.ts.map +1 -1
  286. package/dist/tools/index.js +15 -9
  287. package/dist/tools/index.js.map +1 -1
  288. package/dist/tools/string-replace.d.ts.map +1 -1
  289. package/dist/tools/string-replace.js +74 -17
  290. package/dist/tools/string-replace.js.map +1 -1
  291. package/dist/tools/tasks/create-task.d.ts +3 -0
  292. package/dist/tools/tasks/create-task.d.ts.map +1 -0
  293. package/dist/tools/tasks/create-task.js +101 -0
  294. package/dist/tools/tasks/create-task.js.map +1 -0
  295. package/dist/tools/tasks/delete-task.d.ts +3 -0
  296. package/dist/tools/tasks/delete-task.d.ts.map +1 -0
  297. package/dist/tools/tasks/delete-task.js +101 -0
  298. package/dist/tools/tasks/delete-task.js.map +1 -0
  299. package/dist/tools/tasks/index.d.ts +7 -0
  300. package/dist/tools/tasks/index.d.ts.map +1 -0
  301. package/dist/tools/tasks/index.js +6 -0
  302. package/dist/tools/tasks/index.js.map +1 -0
  303. package/dist/tools/tasks/list-tasks.d.ts +3 -0
  304. package/dist/tools/tasks/list-tasks.d.ts.map +1 -0
  305. package/dist/tools/tasks/list-tasks.js +67 -0
  306. package/dist/tools/tasks/list-tasks.js.map +1 -0
  307. package/dist/tools/tasks/storage.d.ts +7 -0
  308. package/dist/tools/tasks/storage.d.ts.map +1 -0
  309. package/dist/tools/tasks/storage.js +31 -0
  310. package/dist/tools/tasks/storage.js.map +1 -0
  311. package/dist/tools/tasks/types.d.ts +11 -0
  312. package/dist/tools/tasks/types.d.ts.map +1 -0
  313. package/dist/tools/tasks/types.js +2 -0
  314. package/dist/tools/tasks/types.js.map +1 -0
  315. package/dist/tools/tasks/update-task.d.ts +3 -0
  316. package/dist/tools/tasks/update-task.d.ts.map +1 -0
  317. package/dist/tools/tasks/update-task.js +142 -0
  318. package/dist/tools/tasks/update-task.js.map +1 -0
  319. package/dist/tools/tool-manager.d.ts +1 -0
  320. package/dist/tools/tool-manager.d.ts.map +1 -1
  321. package/dist/tools/write-file.d.ts.map +1 -1
  322. package/dist/tools/write-file.js +52 -3
  323. package/dist/tools/write-file.js.map +1 -1
  324. package/dist/types/app.d.ts +3 -2
  325. package/dist/types/app.d.ts.map +1 -1
  326. package/dist/types/config.d.ts +54 -27
  327. package/dist/types/config.d.ts.map +1 -1
  328. package/dist/types/file-explorer.d.ts +14 -0
  329. package/dist/types/file-explorer.d.ts.map +1 -0
  330. package/dist/types/file-explorer.js +2 -0
  331. package/dist/types/file-explorer.js.map +1 -0
  332. package/dist/types/mcp.d.ts +1 -0
  333. package/dist/types/mcp.d.ts.map +1 -1
  334. package/dist/types/ui.d.ts +2 -2
  335. package/dist/types/ui.d.ts.map +1 -1
  336. package/dist/utils/auto-compact.d.ts +23 -0
  337. package/dist/utils/auto-compact.d.ts.map +1 -0
  338. package/dist/utils/auto-compact.js +149 -0
  339. package/dist/utils/auto-compact.js.map +1 -0
  340. package/dist/utils/completion-note.d.ts +3 -0
  341. package/dist/utils/completion-note.d.ts.map +1 -0
  342. package/dist/utils/completion-note.js +39 -0
  343. package/dist/utils/completion-note.js.map +1 -0
  344. package/dist/utils/compression-backup.d.ts +14 -0
  345. package/dist/utils/compression-backup.d.ts.map +1 -0
  346. package/dist/utils/compression-backup.js +31 -0
  347. package/dist/utils/compression-backup.js.map +1 -0
  348. package/dist/utils/file-tree.d.ts +37 -0
  349. package/dist/utils/file-tree.d.ts.map +1 -0
  350. package/dist/utils/file-tree.js +122 -0
  351. package/dist/utils/file-tree.js.map +1 -0
  352. package/dist/utils/indentation-normalizer.d.ts +10 -0
  353. package/dist/utils/indentation-normalizer.d.ts.map +1 -1
  354. package/dist/utils/indentation-normalizer.js +48 -0
  355. package/dist/utils/indentation-normalizer.js.map +1 -1
  356. package/dist/utils/logging/config.d.ts +11 -0
  357. package/dist/utils/logging/config.d.ts.map +1 -1
  358. package/dist/utils/logging/config.js +19 -4
  359. package/dist/utils/logging/config.js.map +1 -1
  360. package/dist/utils/logging/logger-provider.d.ts +15 -0
  361. package/dist/utils/logging/logger-provider.d.ts.map +1 -1
  362. package/dist/utils/logging/logger-provider.js +48 -24
  363. package/dist/utils/logging/logger-provider.js.map +1 -1
  364. package/dist/utils/message-compression.d.ts +55 -0
  365. package/dist/utils/message-compression.d.ts.map +1 -0
  366. package/dist/utils/message-compression.js +401 -0
  367. package/dist/utils/message-compression.js.map +1 -0
  368. package/dist/vscode/protocol.d.ts +5 -1
  369. package/dist/vscode/protocol.d.ts.map +1 -1
  370. package/dist/vscode/vscode-server.d.ts +4 -0
  371. package/dist/vscode/vscode-server.d.ts.map +1 -1
  372. package/dist/vscode/vscode-server.js +10 -0
  373. package/dist/vscode/vscode-server.js.map +1 -1
  374. package/dist/wizards/mcp-wizard.d.ts +8 -0
  375. package/dist/wizards/mcp-wizard.d.ts.map +1 -0
  376. package/dist/wizards/mcp-wizard.js +256 -0
  377. package/dist/wizards/mcp-wizard.js.map +1 -0
  378. package/dist/wizards/provider-wizard.d.ts +8 -0
  379. package/dist/wizards/provider-wizard.d.ts.map +1 -0
  380. package/dist/wizards/provider-wizard.js +254 -0
  381. package/dist/wizards/provider-wizard.js.map +1 -0
  382. package/dist/wizards/steps/location-step.d.ts +10 -0
  383. package/dist/wizards/steps/location-step.d.ts.map +1 -0
  384. package/dist/{wizard → wizards}/steps/location-step.js +7 -10
  385. package/dist/wizards/steps/location-step.js.map +1 -0
  386. package/dist/{wizard → wizards}/steps/mcp-step.d.ts +3 -1
  387. package/dist/wizards/steps/mcp-step.d.ts.map +1 -0
  388. package/dist/{wizard → wizards}/steps/mcp-step.js +14 -11
  389. package/dist/wizards/steps/mcp-step.js.map +1 -0
  390. package/dist/wizards/steps/provider-step.d.ts +11 -0
  391. package/dist/wizards/steps/provider-step.d.ts.map +1 -0
  392. package/dist/{wizard → wizards}/steps/provider-step.js +12 -10
  393. package/dist/wizards/steps/provider-step.js.map +1 -0
  394. package/dist/{wizard → wizards}/steps/summary-step.d.ts +3 -2
  395. package/dist/wizards/steps/summary-step.d.ts.map +1 -0
  396. package/dist/{wizard → wizards}/steps/summary-step.js +2 -2
  397. package/dist/wizards/steps/summary-step.js.map +1 -0
  398. package/dist/{wizard → wizards}/templates/mcp-templates.d.ts +1 -0
  399. package/dist/wizards/templates/mcp-templates.d.ts.map +1 -0
  400. package/dist/wizards/templates/mcp-templates.js.map +1 -0
  401. package/dist/wizards/templates/provider-templates.d.ts.map +1 -0
  402. package/dist/{wizard → wizards}/templates/provider-templates.js +73 -8
  403. package/dist/wizards/templates/provider-templates.js.map +1 -0
  404. package/dist/wizards/utils/fetch-cloud-models.d.ts.map +1 -0
  405. package/dist/wizards/utils/fetch-cloud-models.js.map +1 -0
  406. package/dist/wizards/utils/fetch-local-models.d.ts.map +1 -0
  407. package/dist/wizards/utils/fetch-local-models.js.map +1 -0
  408. package/dist/wizards/validation.d.ts +72 -0
  409. package/dist/wizards/validation.d.ts.map +1 -0
  410. package/dist/{wizard → wizards}/validation.js +64 -1
  411. package/dist/wizards/validation.js.map +1 -0
  412. package/package.json +21 -6
  413. package/source/app/prompts/main-prompt.md +75 -68
  414. package/dist/commands/setup-config.d.ts +0 -3
  415. package/dist/commands/setup-config.d.ts.map +0 -1
  416. package/dist/commands/setup-config.js.map +0 -1
  417. package/dist/commands/theme.d.ts +0 -3
  418. package/dist/commands/theme.d.ts.map +0 -1
  419. package/dist/commands/theme.js.map +0 -1
  420. package/dist/commands/title-shape.d.ts +0 -3
  421. package/dist/commands/title-shape.d.ts.map +0 -1
  422. package/dist/commands/title-shape.js +0 -54
  423. package/dist/commands/title-shape.js.map +0 -1
  424. package/dist/components/theme-selector.d.ts +0 -8
  425. package/dist/components/theme-selector.d.ts.map +0 -1
  426. package/dist/components/theme-selector.js +0 -51
  427. package/dist/components/theme-selector.js.map +0 -1
  428. package/dist/components/title-shape-selector.d.ts +0 -8
  429. package/dist/components/title-shape-selector.d.ts.map +0 -1
  430. package/dist/components/title-shape-selector.js +0 -108
  431. package/dist/components/title-shape-selector.js.map +0 -1
  432. package/dist/tools/git/git-branch-suggest.d.ts +0 -9
  433. package/dist/tools/git/git-branch-suggest.d.ts.map +0 -1
  434. package/dist/tools/git/git-branch-suggest.js +0 -326
  435. package/dist/tools/git/git-branch-suggest.js.map +0 -1
  436. package/dist/tools/git/git-create-pr.d.ts +0 -9
  437. package/dist/tools/git/git-create-pr.d.ts.map +0 -1
  438. package/dist/tools/git/git-create-pr.js +0 -404
  439. package/dist/tools/git/git-create-pr.js.map +0 -1
  440. package/dist/tools/git/git-smart-commit.d.ts +0 -9
  441. package/dist/tools/git/git-smart-commit.d.ts.map +0 -1
  442. package/dist/tools/git/git-smart-commit.js +0 -308
  443. package/dist/tools/git/git-smart-commit.js.map +0 -1
  444. package/dist/tools/git/git-status-enhanced.d.ts +0 -9
  445. package/dist/tools/git/git-status-enhanced.d.ts.map +0 -1
  446. package/dist/tools/git/git-status-enhanced.js +0 -305
  447. package/dist/tools/git/git-status-enhanced.js.map +0 -1
  448. package/dist/tools/git/types.d.ts +0 -103
  449. package/dist/tools/git/types.d.ts.map +0 -1
  450. package/dist/tools/git/types.js +0 -7
  451. package/dist/tools/git/types.js.map +0 -1
  452. package/dist/utils/gradient-utils.d.ts +0 -25
  453. package/dist/utils/gradient-utils.d.ts.map +0 -1
  454. package/dist/utils/gradient-utils.js +0 -45
  455. package/dist/utils/gradient-utils.js.map +0 -1
  456. package/dist/wizard/config-wizard.d.ts +0 -8
  457. package/dist/wizard/config-wizard.d.ts.map +0 -1
  458. package/dist/wizard/config-wizard.js +0 -212
  459. package/dist/wizard/config-wizard.js.map +0 -1
  460. package/dist/wizard/steps/location-step.d.ts +0 -9
  461. package/dist/wizard/steps/location-step.d.ts.map +0 -1
  462. package/dist/wizard/steps/location-step.js.map +0 -1
  463. package/dist/wizard/steps/mcp-step.d.ts.map +0 -1
  464. package/dist/wizard/steps/mcp-step.js.map +0 -1
  465. package/dist/wizard/steps/provider-step.d.ts +0 -9
  466. package/dist/wizard/steps/provider-step.d.ts.map +0 -1
  467. package/dist/wizard/steps/provider-step.js.map +0 -1
  468. package/dist/wizard/steps/summary-step.d.ts.map +0 -1
  469. package/dist/wizard/steps/summary-step.js.map +0 -1
  470. package/dist/wizard/templates/mcp-templates.d.ts.map +0 -1
  471. package/dist/wizard/templates/mcp-templates.js.map +0 -1
  472. package/dist/wizard/templates/provider-templates.d.ts.map +0 -1
  473. package/dist/wizard/templates/provider-templates.js.map +0 -1
  474. package/dist/wizard/utils/fetch-cloud-models.d.ts.map +0 -1
  475. package/dist/wizard/utils/fetch-cloud-models.js.map +0 -1
  476. package/dist/wizard/utils/fetch-local-models.d.ts.map +0 -1
  477. package/dist/wizard/utils/fetch-local-models.js.map +0 -1
  478. package/dist/wizard/validation.d.ts +0 -64
  479. package/dist/wizard/validation.d.ts.map +0 -1
  480. package/dist/wizard/validation.js.map +0 -1
  481. /package/dist/{wizard → wizards}/templates/mcp-templates.js +0 -0
  482. /package/dist/{wizard → wizards}/templates/provider-templates.d.ts +0 -0
  483. /package/dist/{wizard → wizards}/utils/fetch-cloud-models.d.ts +0 -0
  484. /package/dist/{wizard → wizards}/utils/fetch-cloud-models.js +0 -0
  485. /package/dist/{wizard → wizards}/utils/fetch-local-models.d.ts +0 -0
  486. /package/dist/{wizard → wizards}/utils/fetch-local-models.js +0 -0
package/LICENSE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  MIT License with Attribution
4
4
 
5
- Copyright (c) 2025 Nano Collective
5
+ Copyright (c) 2026 Nano Collective
6
6
 
7
7
  Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -37,6 +37,7 @@ A local-first CLI coding agent that brings the power of agentic coding tools lik
37
37
  - [Advanced Tool System](#advanced-tool-system)
38
38
  - [Custom Command System](#custom-command-system)
39
39
  - [Enhanced User Experience](#enhanced-user-experience)
40
+ - [Keyboard Shortcuts](#keyboard-shortcuts)
40
41
  - [Developer Features](#developer-features)
41
42
  - [VS Code Extension](#vs-code-extension)
42
43
  - [Community](#community)
@@ -181,6 +182,46 @@ pnpm run dev
181
182
 
182
183
  ## Usage
183
184
 
185
+ ### CLI Options
186
+
187
+ Nanocoder supports standard CLI arguments for quick information and help:
188
+
189
+ ```bash
190
+ # Show version information
191
+ nanocoder --version
192
+ nanocoder -v
193
+
194
+ # Show help and available options
195
+ nanocoder --help
196
+ nanocoder -h
197
+ ```
198
+
199
+ **CLI Options Reference:**
200
+
201
+ | Option | Short | Description |
202
+ |--------|-------|-------------|
203
+ | `--version` | `-v` | Display the installed version number |
204
+ | `--help` | `-h` | Show usage information and available options |
205
+ | `--vscode` | | Run in VS Code mode (for extension) |
206
+ | `--vscode-port` | | Specify VS Code server port |
207
+ | `run` | | Run in non-interactive mode |
208
+
209
+ **Common Use Cases:**
210
+
211
+ ```bash
212
+ # Check version in scripts
213
+ echo "Nanocoder version: $(nanocoder --version)"
214
+
215
+ # Get help in CI/CD pipelines
216
+ nanocoder --help
217
+
218
+ # Quick version check
219
+ nanocoder -v
220
+
221
+ # Discover available options
222
+ nanocoder -h
223
+ ```
224
+
184
225
  ### Interactive Mode
185
226
 
186
227
  To start Nanocoder in interactive mode (the default), simply run:
@@ -243,9 +284,16 @@ Nanocoder supports any OpenAI-compatible API through a unified provider configur
243
284
 
244
285
  **Configuration Methods:**
245
286
 
246
- 1. **Interactive Setup (Recommended for new users)**: Run `/setup-config` inside Nanocoder for a guided wizard with provider templates
287
+ 1. **Interactive Setup (Recommended for new users)**: Run `/setup-providers` inside Nanocoder for a guided wizard with provider templates. The wizard allows you to:
288
+ - Choose between project-level or global configuration
289
+ - Select from common provider templates (Ollama, OpenRouter, LM Studio, Kimi Code, etc.)
290
+ - Add custom OpenAI-compatible providers manually
291
+ - Edit or delete existing providers
292
+ - Fetch available models automatically from your provider
247
293
  2. **Manual Configuration**: Create an `agents.config.json` file (see below for locations)
248
294
 
295
+ > **Note**: The `/setup-providers` wizard requires at least one provider to be configured before saving. You cannot exit without adding a provider.
296
+
249
297
  **Configuration File Locations:**
250
298
 
251
299
  Nanocoder looks for configuration in the following order (first found wins):
@@ -319,6 +367,13 @@ Nanocoder looks for configuration in the following order (first found wins):
319
367
  "baseUrl": "https://api.poe.com/v1",
320
368
  "apiKey": "your-poe-api-key",
321
369
  "models": ["Claude-Sonnet-4", "GPT-4o", "Gemini-2.5-Pro"]
370
+ },
371
+ {
372
+ "name": "Gemini",
373
+ "sdkProvider": "google",
374
+ "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
375
+ "apiKey": "your-gemini-api-key",
376
+ "models": ["gemini-3-flash-preview", "gemini-3-pro-preview"]
322
377
  }
323
378
  ]
324
379
  }
@@ -339,6 +394,8 @@ Nanocoder looks for configuration in the following order (first found wins):
339
394
  - **GitHub Models**: `"baseUrl": "https://models.github.ai/inference"` (requires PAT with `models:read` scope)
340
395
  - **Z.ai**: `"baseUrl": "https://api.z.ai/api/paas/v4/"`
341
396
  - **Z.ai Coding**: `"baseUrl": "https://api.z.ai/api/coding/paas/v4/"`
397
+ - **Kimi Code**: `"baseUrl": "https://api.kimi.com/coding/v1"`
398
+ - **Google Gemini**: `"sdkProvider": "google"` (get API key from [aistudio.google.com/apikey](https://aistudio.google.com/apikey))
342
399
 
343
400
  **Provider Configuration:**
344
401
 
@@ -346,6 +403,10 @@ Nanocoder looks for configuration in the following order (first found wins):
346
403
  - `baseUrl`: OpenAI-compatible API endpoint
347
404
  - `apiKey`: API key (optional, may not be required)
348
405
  - `models`: Available model list for `/model` command
406
+ - `disableToolModels`: List of model names to disable tool calling for (optional)
407
+ - `sdkProvider`: AI SDK provider package to use (optional, defaults to `openai-compatible`)
408
+ - `openai-compatible`: Default, works with any OpenAI-compatible API
409
+ - `google`: Use `@ai-sdk/google` for native Google Gemini support (required for Gemini 3 models with tool calling)
349
410
 
350
411
  **Environment Variables:**
351
412
 
@@ -355,7 +416,7 @@ Keep API keys out of version control using environment variables. Variables are
355
416
  - `NANOCODER_DATA_DIR`: Override the application data directory used for internal data like usage statistics.
356
417
 
357
418
  **Syntax:** `$VAR_NAME`, `${VAR_NAME}`, or `${VAR_NAME:-default}`
358
- **Supported in:** `baseUrl`, `apiKey`, `models`, MCP server `command`, `args`, `env`
419
+ **Supported in:** `baseUrl`, `apiKey`, `models`, `disableToolModels`, `MCP server`, `command`, `args`, `env`
359
420
 
360
421
  See `.env.example` for setup instructions
361
422
 
@@ -441,84 +502,47 @@ For complete documentation, see [Pino Logging Guide](docs/pino-logging.md).
441
502
 
442
503
  ### MCP (Model Context Protocol) Servers
443
504
 
444
- Nanocoder supports connecting to MCP servers to extend its capabilities with additional tools. Configure MCP servers in your `agents.config.json`:
505
+ Nanocoder supports MCP servers to extend its capabilities with additional tools. Configure servers using `.mcp.json` files at project or global level.
506
+
507
+ **Quick Start:**
508
+
509
+ 1. Run `/setup-mcp` for an interactive wizard with templates
510
+ 2. Or create `.mcp.json` in your project root:
445
511
 
446
512
  ```json
447
513
  {
448
- "nanocoder": {
449
- "mcpServers": [
450
- {
451
- "name": "filesystem",
452
- "transport": "stdio",
453
- "command": "npx",
454
- "args": [
455
- "@modelcontextprotocol/server-filesystem",
456
- "/path/to/allowed/directory"
457
- ]
458
- },
459
- {
460
- "name": "github",
461
- "transport": "stdio",
462
- "command": "npx",
463
- "args": ["@modelcontextprotocol/server-github"],
464
- "env": {
465
- "GITHUB_TOKEN": "your-github-token"
466
- }
467
- },
468
- {
469
- "name": "remote-search",
470
- "transport": "http",
471
- "url": "https://api.example.com/mcp",
472
- "timeout": 30000
473
- },
474
- {
475
- "name": "websocket-server",
476
- "transport": "websocket",
477
- "url": "wss://ws.example.com/mcp",
478
- "timeout": 60000
479
- }
480
- ]
481
- }
514
+ "mcpServers": {
515
+ "filesystem": {
516
+ "transport": "stdio",
517
+ "command": "npx",
518
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"],
519
+ "alwaysAllow": ["list_directory", "read_file"]
520
+ },
521
+ "github": {
522
+ "transport": "stdio",
523
+ "command": "npx",
524
+ "args": ["-y", "@modelcontextprotocol/server-github"],
525
+ "env": { "GITHUB_TOKEN": "$GITHUB_TOKEN" }
526
+ }
527
+ }
482
528
  }
483
529
  ```
484
530
 
485
- **MCP Server Configuration:**
486
-
487
- - `name`: Display name for the MCP server
488
- - `transport`: Transport type (`stdio`, `http`, `websocket`)
489
- - **For stdio transport:**
490
- - `command`: Executable command to start the server
491
- - `args`: Array of command-line arguments
492
- - `env`: Environment variables for the server process
493
- - **For http/websocket transport:**
494
- - `url`: Server endpoint URL
495
- - `timeout`: Connection timeout in milliseconds (optional)
496
-
497
- **Transport Types:**
531
+ **Key Features:**
498
532
 
499
- - **stdio**: Local command-line servers (most common)
500
- - **http**: Remote HTTP API endpoints
501
- - **websocket**: Real-time WebSocket connections
533
+ - **Transport types**: `stdio` (local), `http`, `websocket` (remote)
534
+ - **Auto-approve tools**: Use `alwaysAllow` to skip confirmation for trusted tools
535
+ - **Environment variables**: Use `$VAR` or `${VAR:-default}` syntax
536
+ - **Hierarchical config**: Project-level (`.mcp.json`) overrides global (`~/.config/nanocoder/.mcp.json`)
502
537
 
503
- When MCP servers are configured, Nanocoder will:
538
+ **Commands:**
504
539
 
505
- - Automatically connect to all configured servers on startup
506
- - Make all server tools available to the AI model
507
- - Show connected servers and their tools with the `/mcp` command
508
- - Display transport type and connection details in configuration summary
540
+ - `/setup-mcp` - Interactive configuration wizard (supports `Ctrl+E` for manual editing)
541
+ - `/mcp` - Show connected servers and their tools
509
542
 
510
- Popular MCP servers:
543
+ Popular MCP servers: Filesystem, GitHub, Brave Search, Context7, DeepWiki, and [many more](https://github.com/modelcontextprotocol/servers).
511
544
 
512
- - **Filesystem**: Enhanced file operations (stdio)
513
- - **GitHub**: Repository management (stdio)
514
- - **Brave Search**: Web search capabilities (http)
515
- - **Memory**: Persistent context storage
516
- - **Context7**: Documentation lookup (http)
517
- - **DeepWiki**: Wikipedia search (http)
518
- - **Sequential Thinking**: Advanced reasoning (http)
519
- - [View more MCP servers](https://github.com/modelcontextprotocol/servers)
520
-
521
- > **Note**: MCP server configuration follows the same location hierarchy as AI provider setup above. Use `/setup-config` for an interactive configuration wizard with templates for both local and remote MCP servers, or manually edit `agents.config.json` at the project level (current directory) or user level (platform-specific paths listed above).
545
+ > **Full documentation**: See the [MCP Configuration Guide](docs/mcp-configuration.md) for detailed setup, examples, and troubleshooting.
522
546
 
523
547
  ### User Preferences
524
548
 
@@ -563,22 +587,24 @@ You can override this directory using `NANOCODER_DATA_DIR`.
563
587
 
564
588
  - `/help` - Show available commands
565
589
  - `/init` - Initialize project with intelligent analysis, create AGENTS.md and configuration files. Use `/init --force` to regenerate AGENTS.md if it already exists.
566
- - `/setup-config` - Interactive wizard for configuring AI providers and MCP servers with templates
590
+ - `/setup-providers` - Interactive wizard for configuring AI providers with templates
591
+ - `/setup-mcp` - Interactive wizard for configuring MCP servers with templates
567
592
  - `/clear` - Clear chat history
568
593
  - `/model` - Switch between available models
569
594
  - `/provider` - Switch between configured AI providers
570
595
  - `/status` - Display current status (CWD, provider, model, theme, available updates, AGENTS setup)
571
596
  - `/model-database` - Browse coding models from OpenRouter (searchable, filterable by open/proprietary)
597
+ - `/settings` - Interactive menu to access Nanocoder theme settings (theme, title-shape, nanocoder-shape) and commands
572
598
  - `/mcp` - Show connected MCP servers and their tools
573
599
  - `/custom-commands` - List all custom commands
574
600
  - `/checkpoint` - Save and restore conversation snapshots (see [Checkpointing](#checkpointing) section)
601
+ - `/compact` - Compress message history to reduce context usage (see [Context Compression](docs/context-compression.md))
575
602
  - `/exit` - Exit the application
576
603
  - `/export` - Export current session to markdown file
577
- - `/theme` - Select a theme for the Nanocoder CLI
578
- - `/title-shape` - Select a title shape style for the Nanocoder CLI (real-time preview)
579
604
  - `/update` - Update Nanocoder to the latest version
580
605
  - `/usage` – Get current model context usage visually
581
606
  - `/lsp` – List connected LSP servers
607
+ - `/explorer` - Interactive file browser to navigate, preview, and select files for context
582
608
  - `!command` - Execute bash commands directly without leaving Nanocoder (output becomes context for the LLM)
583
609
  - `@file` - Include file contents in messages automatically via fuzzy search as you type
584
610
 
@@ -642,6 +668,50 @@ Nanocoder supports conversation checkpointing, allowing you to save snapshots of
642
668
  /checkpoint list
643
669
  ```
644
670
 
671
+ #### File Explorer
672
+
673
+ The `/explorer` command opens an interactive file browser for navigating your project, previewing files with syntax highlighting, and selecting multiple files to add as context.
674
+
675
+ **Navigation:**
676
+
677
+ | Key | Action |
678
+ |-----|--------|
679
+ | ↑/↓ | Navigate through files and directories |
680
+ | Enter | Expand/collapse directory or preview file |
681
+ | Space | Toggle file/directory selection |
682
+ | / | Enter search mode (filters all files including nested) |
683
+ | Backspace | Collapse current directory |
684
+ | Esc | Exit explorer (selected files are added to input) |
685
+
686
+ **Features:**
687
+
688
+ - **Tree view**: Browse your project structure with expandable directories
689
+ - **File preview**: View file contents with syntax highlighting before selecting
690
+ - **Compressed indentation**: Preview displays content with compressed indentation (tabs/4-spaces become 2-spaces) for narrow terminals
691
+ - **Multi-select**: Select multiple files to add as context at once
692
+ - **Directory selection**: Press Space on a directory to select all files within it
693
+ - **Search**: Press `/` to filter files by name across the entire tree
694
+ - **Token estimation**: Shows estimated token count for selected files with warning for large selections (10k+ tokens)
695
+ - **VS Code integration**: When running with `--vscode`, previewing a file also opens it in VS Code for full-featured viewing
696
+
697
+ **Selection indicators:**
698
+
699
+ - `✓` - File or directory fully selected
700
+ - `◐` - Directory partially selected (some files within)
701
+ - `✗` - File not selected (in preview mode)
702
+ - `v` / `>` - Directory expanded / collapsed
703
+
704
+ **Example workflow:**
705
+
706
+ ```bash
707
+ # Open the file explorer
708
+ /explorer
709
+
710
+ # Navigate to src/components, expand it
711
+ # Select multiple component files with Space
712
+ # Press Esc to add them to your input as @file mentions
713
+ ```
714
+
645
715
  #### Custom Commands
646
716
 
647
717
  Nanocoder supports custom commands defined as markdown files in the `.nanocoder/commands` directory. Like `agents.config.json`, this directory is created per codebase, allowing you to create reusable prompts with parameters and organize them by category specific to each project.
@@ -722,6 +792,21 @@ Generate comprehensive unit tests for {{component}}. Include:
722
792
  - **Auto-accept mode**: Automatically accepts more tool calls without confirmation for faster workflows
723
793
  - **Plan mode**: AI suggests actions but doesn't execute tools - useful for planning and exploration
724
794
 
795
+ ### Keyboard Shortcuts
796
+
797
+ | Action | Shortcut | Notes |
798
+ |--------|----------|-------|
799
+ | Submit prompt | Enter | |
800
+ | New line (multi-line input) | Ctrl+J | Most reliable across terminals |
801
+ | New line (multi-line input) | Shift+Enter | Terminal-dependent |
802
+ | New line (multi-line input) | Option/Alt+Enter | VS Code integrated terminal |
803
+ | Toggle development mode | Shift+Tab | Cycles through normal/auto-accept/plan |
804
+ | Cancel AI response | Esc | While AI is processing |
805
+ | Clear input | Esc (twice) | Press Esc twice to clear current input |
806
+ | History navigation | ↑/↓ | Navigate through prompt history |
807
+
808
+ > **Note on multi-line input**: Terminal support for Shift+Enter / Option/Alt+Enter varies in terminals and operating systems. If one of these shortcuts doesn't work in your terminal, try and use Ctrl+J which sends a literal newline character and works more reliably across platforms and software.
809
+
725
810
  ### Developer Features
726
811
 
727
812
  - **TypeScript-first**: Full type safety and IntelliSense support
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-client.d.ts","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EACf,MAAM,eAAe,CAAC;AAKvB,qBAAa,WAAY,YAAW,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;gBAEf,cAAc,EAAE,gBAAgB;IA0C5C;;OAEG;YACW,iBAAiB;IAc/B,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAKrE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgB7B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC;;OAEG;IACG,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACpC,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;IAiB3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAW7B"}
1
+ {"version":3,"file":"ai-sdk-client.d.ts","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EACf,MAAM,eAAe,CAAC;AAKvB,qBAAa,WAAY,YAAW,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;gBAEf,cAAc,EAAE,gBAAgB;IA0C5C;;OAEG;YACW,iBAAiB;IAc/B,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAKrE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgB7B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC;;OAEG;IACG,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACpC,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;IAiB3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAW7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-client.js","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-sdk-client.js","sourceRoot":"","sources":["../../source/ai-sdk-client/ai-sdk-client.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface ChatHandlerParams {
9
9
  callbacks: StreamCallbacks;
10
10
  signal?: AbortSignal;
11
11
  maxRetries: number;
12
+ skipTools?: boolean;
12
13
  }
13
14
  /**
14
15
  * Main chat handler - orchestrates the entire chat flow
@@ -1 +1 @@
1
- {"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,IAAI,CAAC;AAStC,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EAEf,MAAM,eAAe,CAAC;AAwBvB,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,gBAAgB,CAAC;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,iBAAiB,GACvB,OAAO,CAAC,eAAe,CAAC,CAuR1B"}
1
+ {"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,IAAI,CAAC;AAStC,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EAEf,MAAM,eAAe,CAAC;AA0BvB,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,gBAAgB,CAAC;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,iBAAiB,GACvB,OAAO,CAAC,eAAe,CAAC,CAwV1B"}
@@ -5,35 +5,79 @@ import { convertToModelMessages } from '../converters/message-converter.js';
5
5
  import { convertAISDKToolCalls, generateToolCallId, getToolResultOutput, } from '../converters/tool-converter.js';
6
6
  import { extractRootError } from '../error-handling/error-extractor.js';
7
7
  import { parseAPIError } from '../error-handling/error-parser.js';
8
+ import { isToolSupportError } from '../error-handling/tool-error-detector.js';
9
+ import { formatToolsForPrompt } from '../tools/tool-prompt-formatter.js';
8
10
  import { createOnStepFinishHandler, createPrepareStepHandler, } from './streaming-handler.js';
9
11
  import { processXMLToolCalls } from './tool-processor.js';
10
12
  /**
11
13
  * Main chat handler - orchestrates the entire chat flow
12
14
  */
13
15
  export async function handleChat(params) {
14
- const { model, currentModel, providerConfig, messages, tools, callbacks, signal, maxRetries, } = params;
16
+ const { model, currentModel, providerConfig, messages, tools, callbacks, signal, maxRetries, skipTools = false, } = params;
15
17
  const logger = getLogger();
16
18
  // Check if already aborted before starting
17
19
  if (signal?.aborted) {
18
20
  logger.debug('Chat request already aborted');
19
21
  throw new Error('Operation was cancelled');
20
22
  }
23
+ // Check if tools should be disabled
24
+ const shouldDisableTools = skipTools ||
25
+ providerConfig.disableTools ||
26
+ (providerConfig.disableToolModels &&
27
+ providerConfig.disableToolModels.includes(currentModel));
21
28
  // Start performance tracking
22
29
  const metrics = startMetrics();
23
30
  const correlationId = getCorrelationId() || generateCorrelationId();
31
+ if (shouldDisableTools) {
32
+ logger.info('Tools disabled for request', {
33
+ model: currentModel,
34
+ reason: skipTools
35
+ ? 'retry without tools'
36
+ : providerConfig.disableTools
37
+ ? 'provider configuration'
38
+ : 'model configuration',
39
+ correlationId,
40
+ });
41
+ }
24
42
  logger.info('Chat request starting', {
25
43
  model: currentModel,
26
44
  messageCount: messages.length,
27
- toolCount: Object.keys(tools).length,
45
+ toolCount: shouldDisableTools ? 0 : Object.keys(tools).length,
28
46
  correlationId,
29
47
  provider: providerConfig.name,
30
48
  });
31
49
  return await withNewCorrelationContext(async (_context) => {
32
50
  try {
33
51
  // Tools are already in AI SDK format - use directly
34
- const aiTools = Object.keys(tools).length > 0 ? tools : undefined;
52
+ const aiTools = shouldDisableTools
53
+ ? undefined
54
+ : Object.keys(tools).length > 0
55
+ ? tools
56
+ : undefined;
57
+ // When native tools are disabled but we have tools, inject definitions into system prompt
58
+ // This allows the model to still use tools via XML format
59
+ let messagesWithToolPrompt = messages;
60
+ if (shouldDisableTools && Object.keys(tools).length > 0) {
61
+ const toolPrompt = formatToolsForPrompt(tools);
62
+ if (toolPrompt) {
63
+ // Find and augment the system message with tool definitions
64
+ messagesWithToolPrompt = messages.map((msg, index) => {
65
+ if (msg.role === 'system' && index === 0) {
66
+ return {
67
+ ...msg,
68
+ content: msg.content + toolPrompt,
69
+ };
70
+ }
71
+ return msg;
72
+ });
73
+ logger.debug('Injected tool definitions into system prompt', {
74
+ toolCount: Object.keys(tools).length,
75
+ promptLength: toolPrompt.length,
76
+ });
77
+ }
78
+ }
35
79
  // Convert messages to AI SDK v5 ModelMessage format
36
- const modelMessages = convertToModelMessages(messages);
80
+ const modelMessages = convertToModelMessages(messagesWithToolPrompt);
37
81
  logger.debug('AI SDK request prepared', {
38
82
  messageCount: modelMessages.length,
39
83
  hasTools: !!aiTools,
@@ -52,6 +96,7 @@ export async function handleChat(params) {
52
96
  // Can be used to add custom logging, metrics, or step tracking
53
97
  onStepFinish: createOnStepFinishHandler(callbacks),
54
98
  prepareStep: createPrepareStepHandler(),
99
+ headers: providerConfig.config.headers,
55
100
  });
56
101
  // Get the full text from the result
57
102
  const fullText = result.text;
@@ -157,6 +202,20 @@ export async function handleChat(params) {
157
202
  });
158
203
  throw new Error('Operation was cancelled');
159
204
  }
205
+ // Check if error indicates tool support issue and we haven't retried
206
+ if (!skipTools && isToolSupportError(error)) {
207
+ logger.warn('Tool support error detected, retrying without tools', {
208
+ model: currentModel,
209
+ error: error instanceof Error ? error.message : error,
210
+ correlationId,
211
+ provider: providerConfig.name,
212
+ });
213
+ // Retry without tools
214
+ return await handleChat({
215
+ ...params,
216
+ skipTools: true, // Mark that we're retrying
217
+ });
218
+ }
160
219
  // Handle tool-specific errors - NoSuchToolError
161
220
  if (error instanceof NoSuchToolError) {
162
221
  logger.error('Tool not found', {
@@ -168,8 +227,8 @@ export async function handleChat(params) {
168
227
  // Provide helpful error message with available tools
169
228
  const availableTools = Object.keys(tools).join(', ');
170
229
  const errorMessage = availableTools
171
- ? `Tool "$\{error.toolName\}" does not exist. Available tools: $\{availableTools\}`
172
- : `Tool "$\{error.toolName\}" does not exist and no tools are currently loaded.`;
230
+ ? `Tool "${error.toolName}" does not exist. Available tools: ${availableTools}`
231
+ : `Tool "${error.toolName}" does not exist and no tools are currently loaded.`;
173
232
  throw new Error(errorMessage);
174
233
  }
175
234
  // Handle tool-specific errors - InvalidToolInputError
@@ -182,7 +241,7 @@ export async function handleChat(params) {
182
241
  validationError: error.message,
183
242
  });
184
243
  // Provide clear validation error
185
- throw new Error(`Invalid arguments for tool "$\{error.toolName\}": $\{error.message\}`);
244
+ throw new Error(`Invalid arguments for tool "${error.toolName}": ${error.message}`);
186
245
  }
187
246
  // Handle tool-specific errors - ToolCallRepairError
188
247
  if (error instanceof ToolCallRepairError) {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Detects if an error indicates the model doesn't support tool calling
3
+ *
4
+ * This is used to automatically retry requests without tools when a model
5
+ * rejects tool definitions (common with some local models like deepseek-r1 via Ollama)
6
+ */
7
+ export declare function isToolSupportError(error: unknown): boolean;
8
+ //# sourceMappingURL=tool-error-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-error-detector.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/tool-error-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqD1D"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Detects if an error indicates the model doesn't support tool calling
3
+ *
4
+ * This is used to automatically retry requests without tools when a model
5
+ * rejects tool definitions (common with some local models like deepseek-r1 via Ollama)
6
+ */
7
+ export function isToolSupportError(error) {
8
+ if (!(error instanceof Error)) {
9
+ return false;
10
+ }
11
+ const message = error.message.toLowerCase();
12
+ // Pattern 1: 400 Bad Request with tool-related messages
13
+ if (message.includes('400') && message.includes('bad request')) {
14
+ const toolPatterns = [
15
+ /tool/i,
16
+ /function/i,
17
+ /invalid.*parameter/i,
18
+ /unexpected.*field/i,
19
+ /unrecognized/i,
20
+ ];
21
+ for (const pattern of toolPatterns) {
22
+ if (pattern.test(message)) {
23
+ return true;
24
+ }
25
+ }
26
+ }
27
+ // Pattern 2: Direct mentions of tool/function not supported
28
+ const directPatterns = [
29
+ /tool.*not.*support/i,
30
+ /function.*not.*support/i,
31
+ /tool.*unsupported/i,
32
+ /function.*unsupported/i,
33
+ /invalid.*tool/i,
34
+ /invalid.*function/i,
35
+ /tool.*parameter.*invalid/i,
36
+ /function.*parameter.*invalid/i,
37
+ ];
38
+ for (const pattern of directPatterns) {
39
+ if (pattern.test(message)) {
40
+ return true;
41
+ }
42
+ }
43
+ // Pattern 3: Ollama-specific error messages
44
+ // Ollama may return errors like: "invalid character 't' looking for beginning of value"
45
+ // when it encounters the 'tools' field in JSON
46
+ if (message.includes('invalid character') &&
47
+ message.includes('after top-level value')) {
48
+ return true;
49
+ }
50
+ return false;
51
+ }
52
+ //# sourceMappingURL=tool-error-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-error-detector.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/tool-error-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAChD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE5C,wDAAwD;IACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,MAAM,YAAY,GAAG;YACpB,OAAO;YACP,WAAW;YACX,qBAAqB;YACrB,oBAAoB;YACpB,eAAe;SACf,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAED,4DAA4D;IAC5D,MAAM,cAAc,GAAG;QACtB,qBAAqB;QACrB,yBAAyB;QACzB,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,oBAAoB;QACpB,2BAA2B;QAC3B,+BAA+B;KAC/B,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,4CAA4C;IAC5C,wFAAwF;IACxF,+CAA+C;IAC/C,IACC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EACxC,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1,8 +1,11 @@
1
- import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
1
+ import { type GoogleGenerativeAIProvider } from '@ai-sdk/google';
2
+ import { type OpenAICompatibleProvider } from '@ai-sdk/openai-compatible';
2
3
  import { type Agent } from 'undici';
3
4
  import type { AIProviderConfig } from '../../types/index.js';
5
+ export type AIProvider = OpenAICompatibleProvider<string, string, string, string> | GoogleGenerativeAIProvider;
4
6
  /**
5
- * Creates an OpenAI-compatible provider with custom fetch using undici
7
+ * Creates an AI SDK provider based on the sdkProvider configuration.
8
+ * Defaults to 'openai-compatible' if not specified.
6
9
  */
7
- export declare function createProvider(providerConfig: AIProviderConfig, undiciAgent: Agent): ReturnType<typeof createOpenAICompatible>;
10
+ export declare function createProvider(providerConfig: AIProviderConfig, undiciAgent: Agent): AIProvider;
8
11
  //# sourceMappingURL=provider-factory.d.ts.map