@nanocollective/nanocoder 1.22.5 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/LICENSE.md +1 -15
  2. package/README.md +25 -821
  3. package/assets/nanocoder-vscode.vsix +0 -0
  4. package/dist/ai-sdk-client/ai-sdk-client.d.ts +3 -2
  5. package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
  6. package/dist/ai-sdk-client/ai-sdk-client.js +16 -2
  7. package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
  8. package/dist/ai-sdk-client/chat/chat-handler.d.ts +2 -1
  9. package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
  10. package/dist/ai-sdk-client/chat/chat-handler.js +37 -70
  11. package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
  12. package/dist/ai-sdk-client/chat/streaming-handler.d.ts +2 -2
  13. package/dist/ai-sdk-client/chat/streaming-handler.d.ts.map +1 -1
  14. package/dist/ai-sdk-client/chat/streaming-handler.js +4 -23
  15. package/dist/ai-sdk-client/chat/streaming-handler.js.map +1 -1
  16. package/dist/ai-sdk-client/error-handling/error-parser.d.ts.map +1 -1
  17. package/dist/ai-sdk-client/error-handling/error-parser.js +11 -3
  18. package/dist/ai-sdk-client/error-handling/error-parser.js.map +1 -1
  19. package/dist/ai-sdk-client/providers/provider-factory.d.ts +2 -1
  20. package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
  21. package/dist/ai-sdk-client/providers/provider-factory.js +55 -0
  22. package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
  23. package/dist/app/App.d.ts +1 -1
  24. package/dist/app/App.d.ts.map +1 -1
  25. package/dist/app/App.js +148 -37
  26. package/dist/app/App.js.map +1 -1
  27. package/dist/app/components/chat-input.d.ts +9 -1
  28. package/dist/app/components/chat-input.d.ts.map +1 -1
  29. package/dist/app/components/chat-input.js +11 -8
  30. package/dist/app/components/chat-input.js.map +1 -1
  31. package/dist/app/components/modal-selectors.d.ts +6 -7
  32. package/dist/app/components/modal-selectors.d.ts.map +1 -1
  33. package/dist/app/components/modal-selectors.js +11 -7
  34. package/dist/app/components/modal-selectors.js.map +1 -1
  35. package/dist/app/components/settings-selector.d.ts.map +1 -1
  36. package/dist/app/components/settings-selector.js +3 -3
  37. package/dist/app/components/settings-selector.js.map +1 -1
  38. package/dist/app/helpers.d.ts.map +1 -1
  39. package/dist/app/helpers.js +2 -4
  40. package/dist/app/helpers.js.map +1 -1
  41. package/dist/app/index.d.ts +0 -1
  42. package/dist/app/index.d.ts.map +1 -1
  43. package/dist/app/index.js +0 -1
  44. package/dist/app/index.js.map +1 -1
  45. package/dist/app/types.d.ts +2 -0
  46. package/dist/app/types.d.ts.map +1 -1
  47. package/dist/app/utils/app-util.d.ts +1 -0
  48. package/dist/app/utils/app-util.d.ts.map +1 -1
  49. package/dist/app/utils/app-util.js +69 -204
  50. package/dist/app/utils/app-util.js.map +1 -1
  51. package/dist/app/utils/handlers/compact-handler.d.ts +6 -0
  52. package/dist/app/utils/handlers/compact-handler.d.ts.map +1 -0
  53. package/dist/app/utils/handlers/compact-handler.js +148 -0
  54. package/dist/app/utils/handlers/compact-handler.js.map +1 -0
  55. package/dist/app/utils/handlers/context-max-handler.d.ts +11 -0
  56. package/dist/app/utils/handlers/context-max-handler.d.ts.map +1 -0
  57. package/dist/app/utils/handlers/context-max-handler.js +102 -0
  58. package/dist/app/utils/handlers/context-max-handler.js.map +1 -0
  59. package/dist/app/utils/handlers/create-handler.d.ts +17 -0
  60. package/dist/app/utils/handlers/create-handler.d.ts.map +1 -0
  61. package/dist/app/utils/handlers/create-handler.js +112 -0
  62. package/dist/app/utils/handlers/create-handler.js.map +1 -0
  63. package/dist/app/utils/handlers/session-handler.d.ts +8 -0
  64. package/dist/app/utils/handlers/session-handler.d.ts.map +1 -0
  65. package/dist/app/utils/handlers/session-handler.js +99 -0
  66. package/dist/app/utils/handlers/session-handler.js.map +1 -0
  67. package/dist/auth/github-copilot.d.ts +44 -0
  68. package/dist/auth/github-copilot.d.ts.map +1 -0
  69. package/dist/auth/github-copilot.js +178 -0
  70. package/dist/auth/github-copilot.js.map +1 -0
  71. package/dist/cli.js +64 -3
  72. package/dist/cli.js.map +1 -1
  73. package/dist/client-factory.d.ts +1 -1
  74. package/dist/client-factory.d.ts.map +1 -1
  75. package/dist/client-factory.js +42 -10
  76. package/dist/client-factory.js.map +1 -1
  77. package/dist/commands/compact.d.ts +1 -6
  78. package/dist/commands/compact.d.ts.map +1 -1
  79. package/dist/commands/compact.js +2 -13
  80. package/dist/commands/compact.js.map +1 -1
  81. package/dist/commands/context-max.d.ts +14 -0
  82. package/dist/commands/context-max.d.ts.map +1 -0
  83. package/dist/commands/context-max.js +15 -0
  84. package/dist/commands/context-max.js.map +1 -0
  85. package/dist/commands/copilot-login-command.d.ts +3 -0
  86. package/dist/commands/copilot-login-command.d.ts.map +1 -0
  87. package/dist/commands/copilot-login-command.js +9 -0
  88. package/dist/commands/copilot-login-command.js.map +1 -0
  89. package/dist/commands/copilot-login.d.ts +9 -0
  90. package/dist/commands/copilot-login.d.ts.map +1 -0
  91. package/dist/commands/copilot-login.js +70 -0
  92. package/dist/commands/copilot-login.js.map +1 -0
  93. package/dist/commands/create-stub-command.d.ts +8 -0
  94. package/dist/commands/create-stub-command.d.ts.map +1 -0
  95. package/dist/commands/create-stub-command.js +14 -0
  96. package/dist/commands/create-stub-command.js.map +1 -0
  97. package/dist/commands/custom-commands.d.ts.map +1 -1
  98. package/dist/commands/custom-commands.js +88 -4
  99. package/dist/commands/custom-commands.js.map +1 -1
  100. package/dist/commands/exit.d.ts.map +1 -1
  101. package/dist/commands/exit.js +5 -8
  102. package/dist/commands/exit.js.map +1 -1
  103. package/dist/commands/explorer.d.ts +1 -2
  104. package/dist/commands/explorer.d.ts.map +1 -1
  105. package/dist/commands/explorer.js +2 -9
  106. package/dist/commands/explorer.js.map +1 -1
  107. package/dist/commands/help.d.ts.map +1 -1
  108. package/dist/commands/help.js +1 -1
  109. package/dist/commands/help.js.map +1 -1
  110. package/dist/commands/ide.d.ts +2 -0
  111. package/dist/commands/ide.d.ts.map +1 -0
  112. package/dist/commands/ide.js +3 -0
  113. package/dist/commands/ide.js.map +1 -0
  114. package/dist/commands/index.d.ts +5 -0
  115. package/dist/commands/index.d.ts.map +1 -1
  116. package/dist/commands/index.js +5 -0
  117. package/dist/commands/index.js.map +1 -1
  118. package/dist/commands/init.d.ts.map +1 -1
  119. package/dist/commands/init.js +2 -1
  120. package/dist/commands/init.js.map +1 -1
  121. package/dist/commands/model.d.ts +1 -2
  122. package/dist/commands/model.d.ts.map +1 -1
  123. package/dist/commands/model.js +2 -10
  124. package/dist/commands/model.js.map +1 -1
  125. package/dist/commands/provider.d.ts +1 -2
  126. package/dist/commands/provider.d.ts.map +1 -1
  127. package/dist/commands/provider.js +2 -10
  128. package/dist/commands/provider.js.map +1 -1
  129. package/dist/commands/resume.d.ts +8 -0
  130. package/dist/commands/resume.d.ts.map +1 -0
  131. package/dist/commands/resume.js +11 -0
  132. package/dist/commands/resume.js.map +1 -0
  133. package/dist/commands/schedule.d.ts +3 -0
  134. package/dist/commands/schedule.d.ts.map +1 -0
  135. package/dist/commands/schedule.js +177 -0
  136. package/dist/commands/schedule.js.map +1 -0
  137. package/dist/commands/settings.d.ts +1 -2
  138. package/dist/commands/settings.d.ts.map +1 -1
  139. package/dist/commands/settings.js +2 -10
  140. package/dist/commands/settings.js.map +1 -1
  141. package/dist/commands/status.d.ts +1 -2
  142. package/dist/commands/status.d.ts.map +1 -1
  143. package/dist/commands/status.js +2 -10
  144. package/dist/commands/status.js.map +1 -1
  145. package/dist/commands/usage.d.ts.map +1 -1
  146. package/dist/commands/usage.js +4 -3
  147. package/dist/commands/usage.js.map +1 -1
  148. package/dist/components/assistant-message.d.ts.map +1 -1
  149. package/dist/components/assistant-message.js +2 -27
  150. package/dist/components/assistant-message.js.map +1 -1
  151. package/dist/components/development-mode-indicator.d.ts +3 -2
  152. package/dist/components/development-mode-indicator.d.ts.map +1 -1
  153. package/dist/components/development-mode-indicator.js +23 -9
  154. package/dist/components/development-mode-indicator.js.map +1 -1
  155. package/dist/components/ide-selector.d.ts +7 -0
  156. package/dist/components/ide-selector.d.ts.map +1 -0
  157. package/dist/components/ide-selector.js +17 -0
  158. package/dist/components/ide-selector.js.map +1 -0
  159. package/dist/components/provider-selector.d.ts.map +1 -1
  160. package/dist/components/provider-selector.js +4 -3
  161. package/dist/components/provider-selector.js.map +1 -1
  162. package/dist/components/question-prompt.d.ts +8 -0
  163. package/dist/components/question-prompt.d.ts.map +1 -0
  164. package/dist/components/question-prompt.js +58 -0
  165. package/dist/components/question-prompt.js.map +1 -0
  166. package/dist/components/scheduler-view.d.ts +14 -0
  167. package/dist/components/scheduler-view.d.ts.map +1 -0
  168. package/dist/components/scheduler-view.js +17 -0
  169. package/dist/components/scheduler-view.js.map +1 -0
  170. package/dist/components/session-selector.d.ts +12 -0
  171. package/dist/components/session-selector.d.ts.map +1 -0
  172. package/dist/components/session-selector.js +108 -0
  173. package/dist/components/session-selector.js.map +1 -0
  174. package/dist/components/text-input.d.ts +13 -0
  175. package/dist/components/text-input.d.ts.map +1 -0
  176. package/dist/components/text-input.js +175 -0
  177. package/dist/components/text-input.js.map +1 -0
  178. package/dist/components/tool-confirmation.d.ts.map +1 -1
  179. package/dist/components/tool-confirmation.js +9 -6
  180. package/dist/components/tool-confirmation.js.map +1 -1
  181. package/dist/components/ui/styled-title.js +2 -2
  182. package/dist/components/ui/styled-title.js.map +1 -1
  183. package/dist/components/user-input.d.ts +4 -1
  184. package/dist/components/user-input.d.ts.map +1 -1
  185. package/dist/components/user-input.js +29 -24
  186. package/dist/components/user-input.js.map +1 -1
  187. package/dist/components/user-message.d.ts.map +1 -1
  188. package/dist/components/user-message.js +1 -23
  189. package/dist/components/user-message.js.map +1 -1
  190. package/dist/components/vscode-extension-prompt.d.ts +6 -1
  191. package/dist/components/vscode-extension-prompt.d.ts.map +1 -1
  192. package/dist/components/vscode-extension-prompt.js +80 -36
  193. package/dist/components/vscode-extension-prompt.js.map +1 -1
  194. package/dist/config/copilot-credentials.d.ts +27 -0
  195. package/dist/config/copilot-credentials.d.ts.map +1 -0
  196. package/dist/config/copilot-credentials.js +81 -0
  197. package/dist/config/copilot-credentials.js.map +1 -0
  198. package/dist/config/index.d.ts +0 -2
  199. package/dist/config/index.d.ts.map +1 -1
  200. package/dist/config/index.js +63 -27
  201. package/dist/config/index.js.map +1 -1
  202. package/dist/config/mcp-config-loader.d.ts +2 -3
  203. package/dist/config/mcp-config-loader.d.ts.map +1 -1
  204. package/dist/config/mcp-config-loader.js +136 -181
  205. package/dist/config/mcp-config-loader.js.map +1 -1
  206. package/dist/config/nanocoder-tools-config.js +2 -2
  207. package/dist/config/nanocoder-tools-config.js.map +1 -1
  208. package/dist/config/themes.d.ts.map +1 -1
  209. package/dist/config/themes.js +9 -746
  210. package/dist/config/themes.js.map +1 -1
  211. package/dist/config/validation.d.ts.map +1 -1
  212. package/dist/config/validation.js +0 -19
  213. package/dist/config/validation.js.map +1 -1
  214. package/dist/custom-commands/command-integration.d.ts +24 -0
  215. package/dist/custom-commands/command-integration.d.ts.map +1 -0
  216. package/dist/custom-commands/command-integration.js +68 -0
  217. package/dist/custom-commands/command-integration.js.map +1 -0
  218. package/dist/custom-commands/executor.d.ts.map +1 -1
  219. package/dist/custom-commands/executor.js +12 -2
  220. package/dist/custom-commands/executor.js.map +1 -1
  221. package/dist/custom-commands/loader.d.ts +33 -5
  222. package/dist/custom-commands/loader.d.ts.map +1 -1
  223. package/dist/custom-commands/loader.js +191 -18
  224. package/dist/custom-commands/loader.js.map +1 -1
  225. package/dist/custom-commands/parser.d.ts.map +1 -1
  226. package/dist/custom-commands/parser.js +106 -48
  227. package/dist/custom-commands/parser.js.map +1 -1
  228. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +6 -1
  229. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
  230. package/dist/hooks/chat-handler/conversation/conversation-loop.js +89 -76
  231. package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
  232. package/dist/hooks/chat-handler/conversation/tool-executor.d.ts +7 -2
  233. package/dist/hooks/chat-handler/conversation/tool-executor.d.ts.map +1 -1
  234. package/dist/hooks/chat-handler/conversation/tool-executor.js +109 -41
  235. package/dist/hooks/chat-handler/conversation/tool-executor.js.map +1 -1
  236. package/dist/hooks/chat-handler/types.d.ts +6 -1
  237. package/dist/hooks/chat-handler/types.d.ts.map +1 -1
  238. package/dist/hooks/chat-handler/useChatHandler.d.ts +1 -1
  239. package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
  240. package/dist/hooks/chat-handler/useChatHandler.js +19 -5
  241. package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
  242. package/dist/hooks/useAppHandlers.d.ts +10 -1
  243. package/dist/hooks/useAppHandlers.d.ts.map +1 -1
  244. package/dist/hooks/useAppHandlers.js +124 -13
  245. package/dist/hooks/useAppHandlers.js.map +1 -1
  246. package/dist/hooks/useAppInitialization.d.ts +5 -3
  247. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  248. package/dist/hooks/useAppInitialization.js +54 -30
  249. package/dist/hooks/useAppInitialization.js.map +1 -1
  250. package/dist/hooks/useAppState.d.ts +27 -7
  251. package/dist/hooks/useAppState.d.ts.map +1 -1
  252. package/dist/hooks/useAppState.js +54 -22
  253. package/dist/hooks/useAppState.js.map +1 -1
  254. package/dist/hooks/useContextPercentage.d.ts +17 -0
  255. package/dist/hooks/useContextPercentage.d.ts.map +1 -0
  256. package/dist/hooks/useContextPercentage.js +71 -0
  257. package/dist/hooks/useContextPercentage.js.map +1 -0
  258. package/dist/hooks/useModeHandlers.d.ts +9 -12
  259. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  260. package/dist/hooks/useModeHandlers.js +31 -91
  261. package/dist/hooks/useModeHandlers.js.map +1 -1
  262. package/dist/hooks/useNonInteractiveMode.d.ts +7 -0
  263. package/dist/hooks/useNonInteractiveMode.d.ts.map +1 -1
  264. package/dist/hooks/useNonInteractiveMode.js +42 -3
  265. package/dist/hooks/useNonInteractiveMode.js.map +1 -1
  266. package/dist/hooks/useSchedulerMode.d.ts +30 -0
  267. package/dist/hooks/useSchedulerMode.d.ts.map +1 -0
  268. package/dist/hooks/useSchedulerMode.js +99 -0
  269. package/dist/hooks/useSchedulerMode.js.map +1 -0
  270. package/dist/hooks/useSessionAutosave.d.ts +16 -0
  271. package/dist/hooks/useSessionAutosave.d.ts.map +1 -0
  272. package/dist/hooks/useSessionAutosave.js +133 -0
  273. package/dist/hooks/useSessionAutosave.js.map +1 -0
  274. package/dist/hooks/useToolHandler.d.ts +2 -1
  275. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  276. package/dist/hooks/useToolHandler.js +9 -3
  277. package/dist/hooks/useToolHandler.js.map +1 -1
  278. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  279. package/dist/lsp/lsp-manager.js +10 -0
  280. package/dist/lsp/lsp-manager.js.map +1 -1
  281. package/dist/mcp/mcp-client.d.ts.map +1 -1
  282. package/dist/mcp/mcp-client.js +23 -3
  283. package/dist/mcp/mcp-client.js.map +1 -1
  284. package/dist/mcp/transport-factory.d.ts.map +1 -1
  285. package/dist/mcp/transport-factory.js +4 -36
  286. package/dist/mcp/transport-factory.js.map +1 -1
  287. package/dist/models/index.d.ts +1 -1
  288. package/dist/models/index.d.ts.map +1 -1
  289. package/dist/models/index.js +1 -1
  290. package/dist/models/index.js.map +1 -1
  291. package/dist/models/models-dev-client.d.ts +8 -1
  292. package/dist/models/models-dev-client.d.ts.map +1 -1
  293. package/dist/models/models-dev-client.js +71 -15
  294. package/dist/models/models-dev-client.js.map +1 -1
  295. package/dist/schedule/cron.d.ts +14 -0
  296. package/dist/schedule/cron.d.ts.map +1 -0
  297. package/dist/schedule/cron.js +107 -0
  298. package/dist/schedule/cron.js.map +1 -0
  299. package/dist/schedule/index.d.ts +4 -0
  300. package/dist/schedule/index.d.ts.map +1 -0
  301. package/dist/schedule/index.js +4 -0
  302. package/dist/schedule/index.js.map +1 -0
  303. package/dist/schedule/runner.d.ts +42 -0
  304. package/dist/schedule/runner.d.ts.map +1 -0
  305. package/dist/schedule/runner.js +136 -0
  306. package/dist/schedule/runner.js.map +1 -0
  307. package/dist/schedule/storage.d.ts +9 -0
  308. package/dist/schedule/storage.d.ts.map +1 -0
  309. package/dist/schedule/storage.js +68 -0
  310. package/dist/schedule/storage.js.map +1 -0
  311. package/dist/schedule/types.d.ts +24 -0
  312. package/dist/schedule/types.d.ts.map +1 -0
  313. package/dist/schedule/types.js +2 -0
  314. package/dist/schedule/types.js.map +1 -0
  315. package/dist/services/bash-executor.d.ts.map +1 -1
  316. package/dist/services/bash-executor.js +5 -0
  317. package/dist/services/bash-executor.js.map +1 -1
  318. package/dist/session/session-manager.d.ts +57 -0
  319. package/dist/session/session-manager.d.ts.map +1 -0
  320. package/dist/session/session-manager.js +361 -0
  321. package/dist/session/session-manager.js.map +1 -0
  322. package/dist/test-utils/render-with-theme.d.ts.map +1 -1
  323. package/dist/test-utils/render-with-theme.js +2 -1
  324. package/dist/test-utils/render-with-theme.js.map +1 -1
  325. package/dist/tool-calling/tool-parser.d.ts +4 -3
  326. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  327. package/dist/tool-calling/tool-parser.js +17 -34
  328. package/dist/tool-calling/tool-parser.js.map +1 -1
  329. package/dist/tool-calling/xml-parser.d.ts +8 -4
  330. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  331. package/dist/tool-calling/xml-parser.js +15 -5
  332. package/dist/tool-calling/xml-parser.js.map +1 -1
  333. package/dist/tools/ask-question.d.ts +3 -0
  334. package/dist/tools/ask-question.d.ts.map +1 -0
  335. package/dist/tools/ask-question.js +66 -0
  336. package/dist/tools/ask-question.js.map +1 -0
  337. package/dist/tools/execute-bash.d.ts.map +1 -1
  338. package/dist/tools/execute-bash.js +6 -1
  339. package/dist/tools/execute-bash.js.map +1 -1
  340. package/dist/tools/fetch-url.d.ts.map +1 -1
  341. package/dist/tools/fetch-url.js +11 -2
  342. package/dist/tools/fetch-url.js.map +1 -1
  343. package/dist/tools/file-ops/copy-file.d.ts +3 -0
  344. package/dist/tools/file-ops/copy-file.d.ts.map +1 -0
  345. package/dist/tools/file-ops/copy-file.js +96 -0
  346. package/dist/tools/file-ops/copy-file.js.map +1 -0
  347. package/dist/tools/file-ops/create-directory.d.ts +3 -0
  348. package/dist/tools/file-ops/create-directory.d.ts.map +1 -0
  349. package/dist/tools/file-ops/create-directory.js +59 -0
  350. package/dist/tools/file-ops/create-directory.js.map +1 -0
  351. package/dist/tools/file-ops/delete-file.d.ts +3 -0
  352. package/dist/tools/file-ops/delete-file.d.ts.map +1 -0
  353. package/dist/tools/file-ops/delete-file.js +74 -0
  354. package/dist/tools/file-ops/delete-file.js.map +1 -0
  355. package/dist/tools/file-ops/index.d.ts +3 -0
  356. package/dist/tools/file-ops/index.d.ts.map +1 -0
  357. package/dist/tools/file-ops/index.js +8 -0
  358. package/dist/tools/file-ops/index.js.map +1 -0
  359. package/dist/tools/file-ops/move-file.d.ts +3 -0
  360. package/dist/tools/file-ops/move-file.d.ts.map +1 -0
  361. package/dist/tools/file-ops/move-file.js +96 -0
  362. package/dist/tools/file-ops/move-file.js.map +1 -0
  363. package/dist/tools/file-ops/string-replace-preview.d.ts +10 -0
  364. package/dist/tools/file-ops/string-replace-preview.d.ts.map +1 -0
  365. package/dist/tools/file-ops/string-replace-preview.js +171 -0
  366. package/dist/tools/file-ops/string-replace-preview.js.map +1 -0
  367. package/dist/tools/file-ops/string-replace.d.ts +3 -0
  368. package/dist/tools/file-ops/string-replace.d.ts.map +1 -0
  369. package/dist/tools/file-ops/string-replace.js +178 -0
  370. package/dist/tools/file-ops/string-replace.js.map +1 -0
  371. package/dist/tools/file-ops/write-file.d.ts +3 -0
  372. package/dist/tools/file-ops/write-file.d.ts.map +1 -0
  373. package/dist/tools/{write-file.js → file-ops/write-file.js} +34 -79
  374. package/dist/tools/file-ops/write-file.js.map +1 -0
  375. package/dist/tools/find-files.d.ts.map +1 -1
  376. package/dist/tools/find-files.js +1 -0
  377. package/dist/tools/find-files.js.map +1 -1
  378. package/dist/tools/git/git-diff.d.ts.map +1 -1
  379. package/dist/tools/git/git-diff.js +1 -0
  380. package/dist/tools/git/git-diff.js.map +1 -1
  381. package/dist/tools/git/git-log.d.ts.map +1 -1
  382. package/dist/tools/git/git-log.js +1 -0
  383. package/dist/tools/git/git-log.js.map +1 -1
  384. package/dist/tools/git/git-reset.js +1 -1
  385. package/dist/tools/git/git-reset.js.map +1 -1
  386. package/dist/tools/git/git-status.d.ts.map +1 -1
  387. package/dist/tools/git/git-status.js +1 -0
  388. package/dist/tools/git/git-status.js.map +1 -1
  389. package/dist/tools/git/index.js +3 -3
  390. package/dist/tools/git/index.js.map +1 -1
  391. package/dist/tools/git/utils.d.ts +4 -0
  392. package/dist/tools/git/utils.d.ts.map +1 -1
  393. package/dist/tools/git/utils.js +12 -0
  394. package/dist/tools/git/utils.js.map +1 -1
  395. package/dist/tools/index.d.ts +1 -0
  396. package/dist/tools/index.d.ts.map +1 -1
  397. package/dist/tools/index.js +15 -2
  398. package/dist/tools/index.js.map +1 -1
  399. package/dist/tools/list-directory.d.ts.map +1 -1
  400. package/dist/tools/list-directory.js +2 -1
  401. package/dist/tools/list-directory.js.map +1 -1
  402. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  403. package/dist/tools/lsp-get-diagnostics.js +1 -5
  404. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  405. package/dist/tools/read-file.d.ts.map +1 -1
  406. package/dist/tools/read-file.js +1 -0
  407. package/dist/tools/read-file.js.map +1 -1
  408. package/dist/tools/search-file-contents.d.ts.map +1 -1
  409. package/dist/tools/search-file-contents.js +60 -10
  410. package/dist/tools/search-file-contents.js.map +1 -1
  411. package/dist/tools/tasks/list-tasks.d.ts.map +1 -1
  412. package/dist/tools/tasks/list-tasks.js +1 -0
  413. package/dist/tools/tasks/list-tasks.js.map +1 -1
  414. package/dist/tools/tool-manager.d.ts +10 -0
  415. package/dist/tools/tool-manager.d.ts.map +1 -1
  416. package/dist/tools/tool-manager.js +25 -2
  417. package/dist/tools/tool-manager.js.map +1 -1
  418. package/dist/tools/tool-registry.d.ts +9 -1
  419. package/dist/tools/tool-registry.d.ts.map +1 -1
  420. package/dist/tools/tool-registry.js +17 -1
  421. package/dist/tools/tool-registry.js.map +1 -1
  422. package/dist/tools/web-search.d.ts.map +1 -1
  423. package/dist/tools/web-search.js +1 -0
  424. package/dist/tools/web-search.js.map +1 -1
  425. package/dist/types/app.d.ts +5 -0
  426. package/dist/types/app.d.ts.map +1 -1
  427. package/dist/types/commands.d.ts +20 -1
  428. package/dist/types/commands.d.ts.map +1 -1
  429. package/dist/types/config.d.ts +11 -15
  430. package/dist/types/config.d.ts.map +1 -1
  431. package/dist/types/core.d.ts +15 -4
  432. package/dist/types/core.d.ts.map +1 -1
  433. package/dist/types/core.js +7 -0
  434. package/dist/types/core.js.map +1 -1
  435. package/dist/types/markdown-parser.d.ts +2 -10
  436. package/dist/types/markdown-parser.d.ts.map +1 -1
  437. package/dist/types/mcp.d.ts +2 -28
  438. package/dist/types/mcp.d.ts.map +1 -1
  439. package/dist/types/ui.d.ts +1 -1
  440. package/dist/types/ui.d.ts.map +1 -1
  441. package/dist/utils/ansi-truncate.d.ts +6 -0
  442. package/dist/utils/ansi-truncate.d.ts.map +1 -0
  443. package/dist/utils/ansi-truncate.js +39 -0
  444. package/dist/utils/ansi-truncate.js.map +1 -0
  445. package/dist/utils/auto-compact.d.ts.map +1 -1
  446. package/dist/utils/auto-compact.js +13 -7
  447. package/dist/utils/auto-compact.js.map +1 -1
  448. package/dist/utils/installation-detector.d.ts +6 -0
  449. package/dist/utils/installation-detector.d.ts.map +1 -1
  450. package/dist/utils/installation-detector.js +33 -19
  451. package/dist/utils/installation-detector.js.map +1 -1
  452. package/dist/utils/logging/health-monitor/checks/memory-check.d.ts.map +1 -1
  453. package/dist/utils/logging/health-monitor/checks/memory-check.js +2 -1
  454. package/dist/utils/logging/health-monitor/checks/memory-check.js.map +1 -1
  455. package/dist/utils/logging/health-monitor/core/health-monitor.d.ts.map +1 -1
  456. package/dist/utils/logging/health-monitor/core/health-monitor.js +3 -2
  457. package/dist/utils/logging/health-monitor/core/health-monitor.js.map +1 -1
  458. package/dist/utils/logging/index.d.ts.map +1 -1
  459. package/dist/utils/logging/index.js +18 -30
  460. package/dist/utils/logging/index.js.map +1 -1
  461. package/dist/utils/logging/performance.d.ts.map +1 -1
  462. package/dist/utils/logging/performance.js +21 -17
  463. package/dist/utils/logging/performance.js.map +1 -1
  464. package/dist/utils/logging/pino-logger.d.ts.map +1 -1
  465. package/dist/utils/logging/pino-logger.js +7 -8
  466. package/dist/utils/logging/pino-logger.js.map +1 -1
  467. package/dist/utils/logging/redaction.d.ts.map +1 -1
  468. package/dist/utils/logging/redaction.js +2 -0
  469. package/dist/utils/logging/redaction.js.map +1 -1
  470. package/dist/utils/logging/request-tracker.d.ts.map +1 -1
  471. package/dist/utils/logging/request-tracker.js +6 -5
  472. package/dist/utils/logging/request-tracker.js.map +1 -1
  473. package/dist/utils/logging/safe-process.d.ts +16 -0
  474. package/dist/utils/logging/safe-process.d.ts.map +1 -0
  475. package/dist/utils/logging/safe-process.js +37 -0
  476. package/dist/utils/logging/safe-process.js.map +1 -0
  477. package/dist/utils/logging/types.d.ts +0 -3
  478. package/dist/utils/logging/types.d.ts.map +1 -1
  479. package/dist/utils/message-builder.d.ts +0 -5
  480. package/dist/utils/message-builder.d.ts.map +1 -1
  481. package/dist/utils/message-builder.js +0 -8
  482. package/dist/utils/message-builder.js.map +1 -1
  483. package/dist/utils/path-validation.d.ts.map +1 -1
  484. package/dist/utils/path-validation.js +3 -1
  485. package/dist/utils/path-validation.js.map +1 -1
  486. package/dist/utils/path-validators.d.ts +16 -0
  487. package/dist/utils/path-validators.d.ts.map +1 -0
  488. package/dist/utils/path-validators.js +55 -0
  489. package/dist/utils/path-validators.js.map +1 -0
  490. package/dist/utils/question-queue.d.ts +15 -0
  491. package/dist/utils/question-queue.d.ts.map +1 -0
  492. package/dist/utils/question-queue.js +25 -0
  493. package/dist/utils/question-queue.js.map +1 -0
  494. package/dist/utils/response-formatter.d.ts +108 -0
  495. package/dist/utils/response-formatter.d.ts.map +1 -0
  496. package/dist/utils/response-formatter.js +372 -0
  497. package/dist/utils/response-formatter.js.map +1 -0
  498. package/dist/utils/shutdown/index.d.ts +7 -0
  499. package/dist/utils/shutdown/index.d.ts.map +1 -0
  500. package/dist/utils/shutdown/index.js +6 -0
  501. package/dist/utils/shutdown/index.js.map +1 -0
  502. package/dist/utils/shutdown/shutdown-manager.d.ts +19 -0
  503. package/dist/utils/shutdown/shutdown-manager.d.ts.map +1 -0
  504. package/dist/utils/shutdown/shutdown-manager.js +100 -0
  505. package/dist/utils/shutdown/shutdown-manager.js.map +1 -0
  506. package/dist/utils/shutdown/types.d.ts +9 -0
  507. package/dist/utils/shutdown/types.d.ts.map +1 -0
  508. package/dist/utils/shutdown/types.js +2 -0
  509. package/dist/utils/shutdown/types.js.map +1 -0
  510. package/dist/utils/text-wrapping.d.ts +8 -0
  511. package/dist/utils/text-wrapping.d.ts.map +1 -0
  512. package/dist/utils/text-wrapping.js +29 -0
  513. package/dist/utils/text-wrapping.js.map +1 -0
  514. package/dist/utils/tool-approval.d.ts +6 -0
  515. package/dist/utils/tool-approval.d.ts.map +1 -0
  516. package/dist/utils/tool-approval.js +15 -0
  517. package/dist/utils/tool-approval.js.map +1 -0
  518. package/dist/utils/tool-result-display.d.ts +15 -1
  519. package/dist/utils/tool-result-display.d.ts.map +1 -1
  520. package/dist/utils/tool-result-display.js +93 -3
  521. package/dist/utils/tool-result-display.js.map +1 -1
  522. package/dist/utils/type-helpers.d.ts +140 -0
  523. package/dist/utils/type-helpers.d.ts.map +1 -0
  524. package/dist/utils/type-helpers.js +220 -0
  525. package/dist/utils/type-helpers.js.map +1 -0
  526. package/dist/utils/url-utils.d.ts +6 -0
  527. package/dist/utils/url-utils.d.ts.map +1 -0
  528. package/dist/utils/url-utils.js +22 -0
  529. package/dist/utils/url-utils.js.map +1 -0
  530. package/dist/vscode/extension-installer.d.ts +34 -7
  531. package/dist/vscode/extension-installer.d.ts.map +1 -1
  532. package/dist/vscode/extension-installer.js +151 -64
  533. package/dist/vscode/extension-installer.js.map +1 -1
  534. package/dist/vscode/index.d.ts +1 -1
  535. package/dist/vscode/index.d.ts.map +1 -1
  536. package/dist/vscode/index.js +1 -1
  537. package/dist/vscode/index.js.map +1 -1
  538. package/dist/vscode/vscode-server.d.ts.map +1 -1
  539. package/dist/vscode/vscode-server.js +10 -0
  540. package/dist/vscode/vscode-server.js.map +1 -1
  541. package/dist/wizards/mcp-wizard.d.ts.map +1 -1
  542. package/dist/wizards/mcp-wizard.js +2 -1
  543. package/dist/wizards/mcp-wizard.js.map +1 -1
  544. package/dist/wizards/provider-wizard.d.ts.map +1 -1
  545. package/dist/wizards/provider-wizard.js +4 -2
  546. package/dist/wizards/provider-wizard.js.map +1 -1
  547. package/dist/wizards/steps/location-step.d.ts.map +1 -1
  548. package/dist/wizards/steps/location-step.js +2 -1
  549. package/dist/wizards/steps/location-step.js.map +1 -1
  550. package/dist/wizards/steps/mcp-step.d.ts.map +1 -1
  551. package/dist/wizards/steps/mcp-step.js +3 -2
  552. package/dist/wizards/steps/mcp-step.js.map +1 -1
  553. package/dist/wizards/steps/provider-step.d.ts.map +1 -1
  554. package/dist/wizards/steps/provider-step.js +5 -2
  555. package/dist/wizards/steps/provider-step.js.map +1 -1
  556. package/dist/wizards/steps/summary-step.d.ts.map +1 -1
  557. package/dist/wizards/steps/summary-step.js +2 -1
  558. package/dist/wizards/steps/summary-step.js.map +1 -1
  559. package/dist/wizards/templates/mcp-templates.d.ts +0 -8
  560. package/dist/wizards/templates/mcp-templates.d.ts.map +1 -1
  561. package/dist/wizards/templates/mcp-templates.js +8 -6
  562. package/dist/wizards/templates/mcp-templates.js.map +1 -1
  563. package/dist/wizards/templates/provider-templates.d.ts.map +1 -1
  564. package/dist/wizards/templates/provider-templates.js +59 -0
  565. package/dist/wizards/templates/provider-templates.js.map +1 -1
  566. package/dist/wizards/validation.d.ts.map +1 -1
  567. package/dist/wizards/validation.js +2 -4
  568. package/dist/wizards/validation.js.map +1 -1
  569. package/package.json +22 -23
  570. package/source/app/prompts/main-prompt.md +21 -3
  571. package/source/config/themes.json +787 -0
  572. package/dist/ai-sdk-client/chat/tool-processor.d.ts +0 -10
  573. package/dist/ai-sdk-client/chat/tool-processor.d.ts.map +0 -1
  574. package/dist/ai-sdk-client/chat/tool-processor.js +0 -53
  575. package/dist/ai-sdk-client/chat/tool-processor.js.map +0 -1
  576. package/dist/hooks/chat-handler/utils/context-checker.d.ts +0 -15
  577. package/dist/hooks/chat-handler/utils/context-checker.d.ts.map +0 -1
  578. package/dist/hooks/chat-handler/utils/context-checker.js +0 -68
  579. package/dist/hooks/chat-handler/utils/context-checker.js.map +0 -1
  580. package/dist/tool-calling/json-parser.d.ts +0 -24
  581. package/dist/tool-calling/json-parser.d.ts.map +0 -1
  582. package/dist/tool-calling/json-parser.js +0 -202
  583. package/dist/tool-calling/json-parser.js.map +0 -1
  584. package/dist/tools/string-replace.d.ts +0 -3
  585. package/dist/tools/string-replace.d.ts.map +0 -1
  586. package/dist/tools/string-replace.js +0 -461
  587. package/dist/tools/string-replace.js.map +0 -1
  588. package/dist/tools/write-file.d.ts +0 -3
  589. package/dist/tools/write-file.d.ts.map +0 -1
  590. package/dist/tools/write-file.js.map +0 -1
@@ -0,0 +1,178 @@
1
+ /**
2
+ * GitHub Copilot subscription auth: device OAuth flow and token refresh.
3
+ * Uses the same approach as opencode-copilot-auth for compatibility.
4
+ * @see https://github.com/anomalyco/opencode-copilot-auth
5
+ *
6
+ * CLIENT_ID: VS Code Copilot OAuth client (Iv1.b507a08c87ecfe98). External
7
+ * dependency; changing it may break device flow compatibility.
8
+ */
9
+ const GITHUB_COM = 'github.com';
10
+ const CLIENT_ID = 'Iv1.b507a08c87ecfe98';
11
+ /** Headers required by Copilot API; export for reuse in provider-factory. */
12
+ export const COPILOT_HEADERS = {
13
+ 'User-Agent': 'GitHubCopilotChat/0.35.0',
14
+ 'Editor-Version': 'vscode/1.107.0',
15
+ 'Editor-Plugin-Version': 'copilot-chat/0.35.0',
16
+ 'Copilot-Integration-Id': 'vscode-chat',
17
+ };
18
+ function normalizeDomain(url) {
19
+ return url.replace(/^https?:\/\//, '').replace(/\/$/, '');
20
+ }
21
+ export function getCopilotUrls(domain) {
22
+ const base = `https://${normalizeDomain(domain)}`;
23
+ return {
24
+ deviceCodeUrl: `${base}/login/device/code`,
25
+ accessTokenUrl: `${base}/login/oauth/access_token`,
26
+ copilotTokenUrl: domain === GITHUB_COM
27
+ ? 'https://api.github.com/copilot_internal/v2/token'
28
+ : `https://api.${normalizeDomain(domain)}/copilot_internal/v2/token`,
29
+ };
30
+ }
31
+ /**
32
+ * Start GitHub device OAuth flow. User must visit verificationUri and enter userCode.
33
+ * @internal Used by runCopilotLoginFlow.
34
+ */
35
+ async function startDeviceFlow(domain = GITHUB_COM, fetchFn = fetch) {
36
+ const urls = getCopilotUrls(domain);
37
+ const res = await fetchFn(urls.deviceCodeUrl, {
38
+ method: 'POST',
39
+ headers: {
40
+ Accept: 'application/json',
41
+ 'Content-Type': 'application/json',
42
+ 'User-Agent': 'GitHubCopilotChat/0.35.0',
43
+ },
44
+ body: JSON.stringify({
45
+ client_id: CLIENT_ID,
46
+ scope: 'read:user',
47
+ }),
48
+ signal: AbortSignal.timeout(30_000),
49
+ });
50
+ if (!res.ok) {
51
+ const body = await res.text();
52
+ throw new Error(`Device code request failed (POST ${urls.deviceCodeUrl}): HTTP ${res.status} ${res.statusText}\nResponse: ${body}`);
53
+ }
54
+ const data = (await res.json());
55
+ return {
56
+ deviceCode: data.device_code,
57
+ userCode: data.user_code,
58
+ verificationUri: data.verification_uri,
59
+ interval: typeof data.interval === 'number' ? data.interval : 5,
60
+ };
61
+ }
62
+ /**
63
+ * Poll until user completes device flow; returns the GitHub OAuth access token
64
+ * (the `access_token` from the response). This token is stored as the credential
65
+ * and used to obtain short-lived Copilot API tokens via getCopilotAccessToken.
66
+ * @internal Used by runCopilotLoginFlow.
67
+ */
68
+ const POLL_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes
69
+ async function pollForOAuthToken(deviceCode, intervalSeconds, domain = GITHUB_COM, fetchFn = fetch) {
70
+ const urls = getCopilotUrls(domain);
71
+ const intervalMs = Math.max(intervalSeconds * 1000, 1000);
72
+ const deadline = Date.now() + POLL_TIMEOUT_MS;
73
+ // eslint-disable-next-line no-constant-condition
74
+ while (true) {
75
+ if (Date.now() > deadline) {
76
+ throw new Error('Device code flow timed out. Please run login again and complete the flow within 15 minutes.');
77
+ }
78
+ const res = await fetchFn(urls.accessTokenUrl, {
79
+ method: 'POST',
80
+ headers: {
81
+ Accept: 'application/json',
82
+ 'Content-Type': 'application/json',
83
+ 'User-Agent': 'GitHubCopilotChat/0.35.0',
84
+ },
85
+ body: JSON.stringify({
86
+ client_id: CLIENT_ID,
87
+ device_code: deviceCode,
88
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
89
+ }),
90
+ });
91
+ if (!res.ok) {
92
+ const text = await res.text();
93
+ throw new Error(`Token exchange failed: ${res.status} ${text}`);
94
+ }
95
+ const data = (await res.json());
96
+ if (data.access_token) {
97
+ return data.access_token;
98
+ }
99
+ if (data.error === 'authorization_pending') {
100
+ await new Promise(r => setTimeout(r, intervalMs));
101
+ continue;
102
+ }
103
+ if (data.error === 'expired_token') {
104
+ throw new Error('Device code expired. Please run login again.');
105
+ }
106
+ if (data.error) {
107
+ throw new Error(`Authorization failed: ${data.error}`);
108
+ }
109
+ await new Promise(r => setTimeout(r, intervalMs));
110
+ }
111
+ }
112
+ let cachedToken = null;
113
+ /**
114
+ * Get a short-lived access token for the Copilot API using the stored GitHub OAuth
115
+ * token (from device flow). Caches the result until close to expiry (5 min buffer).
116
+ * Cache key uses full token so different tokens never share an entry; key is only
117
+ * used in-process for lookup, not stored or logged.
118
+ */
119
+ function tokenCacheKey(githubOAuthToken, domain) {
120
+ return `${domain}:${githubOAuthToken}`;
121
+ }
122
+ /**
123
+ * Clear the in-memory Copilot token cache so the next request fetches a new token.
124
+ * Use after credential change or logout so credentials can be invalidated without waiting for expiry.
125
+ */
126
+ export function clearCopilotTokenCache() {
127
+ cachedToken = null;
128
+ }
129
+ export async function getCopilotAccessToken(githubOAuthToken, domain = GITHUB_COM, fetchFn = fetch) {
130
+ const cacheKey = tokenCacheKey(githubOAuthToken, domain);
131
+ const now = Date.now();
132
+ if (cachedToken?.key === cacheKey && cachedToken.result.expiresAt > now) {
133
+ return cachedToken.result;
134
+ }
135
+ const urls = getCopilotUrls(domain);
136
+ const res = await fetchFn(urls.copilotTokenUrl, {
137
+ headers: {
138
+ Accept: 'application/json',
139
+ Authorization: `Bearer ${githubOAuthToken}`,
140
+ ...COPILOT_HEADERS,
141
+ },
142
+ });
143
+ if (!res.ok) {
144
+ const text = await res.text();
145
+ throw new Error(`Copilot token refresh failed: ${res.status} ${text}`);
146
+ }
147
+ const data = (await res.json());
148
+ if (!data.token || typeof data.token !== 'string') {
149
+ throw new Error('Copilot token endpoint returned no token. Your Copilot subscription may not include chat access.');
150
+ }
151
+ const expiresAt = (data.expires_at ?? 0) * 1000 - 5 * 60 * 1000; // 5 min buffer
152
+ const result = { token: data.token, expiresAt };
153
+ cachedToken = { key: cacheKey, result };
154
+ return result;
155
+ }
156
+ export function getCopilotBaseUrl(domain) {
157
+ if (domain === GITHUB_COM) {
158
+ return 'https://api.githubcopilot.com';
159
+ }
160
+ return `https://copilot-api.${normalizeDomain(domain)}`;
161
+ }
162
+ /**
163
+ * Run the full Copilot device-flow login: start flow, show code via callback, poll for token, save credential.
164
+ * Shared by CLI (cli.tsx) and in-chat UI (copilot-login.tsx) so the flow logic lives in one place.
165
+ */
166
+ export async function runCopilotLoginFlow(providerName, options) {
167
+ const { onShowCode, onPollingStart, delayBeforePollMs = 0, domain = GITHUB_COM, fetchFn = fetch, } = options;
168
+ const { saveCopilotCredential } = await import('../config/copilot-credentials.js');
169
+ const flow = await startDeviceFlow(domain, fetchFn);
170
+ onShowCode(flow.verificationUri, flow.userCode);
171
+ if (delayBeforePollMs > 0) {
172
+ await new Promise(r => setTimeout(r, delayBeforePollMs));
173
+ }
174
+ onPollingStart?.();
175
+ const oauthToken = await pollForOAuthToken(flow.deviceCode, flow.interval, domain, fetchFn);
176
+ saveCopilotCredential(providerName, oauthToken);
177
+ }
178
+ //# sourceMappingURL=github-copilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../source/auth/github-copilot.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -15,14 +15,24 @@ if (args.includes('--version') || args.includes('-v')) {
15
15
  // Handle --help/-h flag
16
16
  if (args.includes('--help') || args.includes('-h')) {
17
17
  console.log(`
18
- Usage: nanocoder [options]
18
+ Usage: nanocoder [options] [command]
19
+
20
+ Commands:
21
+ copilot login [provider-name] Log in to GitHub Copilot (device flow). Saves credentials for the "GitHub Copilot" provider.
19
22
 
20
23
  Options:
21
24
  -v, --version Show version number
22
25
  -h, --help Show help
23
26
  --vscode Run in VS Code mode
24
27
  --vscode-port Specify VS Code port
28
+ --provider Specify AI provider (must be configured in agents.config.json)
29
+ --model Specify AI model (must be available for the provider)
25
30
  run Run in non-interactive mode
31
+
32
+ Examples:
33
+ nanocoder --provider openrouter --model google/gemini-3.1-flash run "analyze src/app.ts"
34
+ nanocoder --provider ollama --model llama3.1
35
+ nanocoder run --provider openrouter "refactor database module"
26
36
  `);
27
37
  process.exit(0);
28
38
  }
@@ -36,6 +46,18 @@ if (portArgIndex !== -1 && args[portArgIndex + 1]) {
36
46
  vscodePort = port;
37
47
  }
38
48
  }
49
+ // Extract --provider if specified
50
+ let cliProvider;
51
+ const providerArgIndex = args.findIndex(arg => arg === '--provider');
52
+ if (providerArgIndex !== -1 && args[providerArgIndex + 1]) {
53
+ cliProvider = args[providerArgIndex + 1];
54
+ }
55
+ // Extract --model if specified
56
+ let cliModel;
57
+ const modelArgIndex = args.findIndex(arg => arg === '--model');
58
+ if (modelArgIndex !== -1 && args[modelArgIndex + 1]) {
59
+ cliModel = args[modelArgIndex + 1];
60
+ }
39
61
  // Check for non-interactive mode (run command)
40
62
  let nonInteractivePrompt;
41
63
  const runCommandIndex = args.findIndex(arg => arg === 'run');
@@ -43,7 +65,6 @@ const afterRunArgs = runCommandIndex !== -1 ? args.slice(runCommandIndex + 1) :
43
65
  if (runCommandIndex !== -1 && args[runCommandIndex + 1]) {
44
66
  // Filter out known flags after 'run' when constructing the prompt
45
67
  const promptArgs = [];
46
- const _knownFlags = new Set(['--vscode', '--vscode-port']);
47
68
  for (let i = 0; i < afterRunArgs.length; i++) {
48
69
  const arg = afterRunArgs[i];
49
70
  if (arg === '--vscode') {
@@ -53,6 +74,14 @@ if (runCommandIndex !== -1 && args[runCommandIndex + 1]) {
53
74
  i++; // skip this flag and its value
54
75
  continue;
55
76
  }
77
+ else if (arg === '--provider') {
78
+ i++; // skip this flag and its value
79
+ continue;
80
+ }
81
+ else if (arg === '--model') {
82
+ i++; // skip this flag and its value
83
+ continue;
84
+ }
56
85
  else {
57
86
  promptArgs.push(arg);
58
87
  }
@@ -60,5 +89,37 @@ if (runCommandIndex !== -1 && args[runCommandIndex + 1]) {
60
89
  nonInteractivePrompt = promptArgs.join(' ');
61
90
  }
62
91
  const nonInteractiveMode = runCommandIndex !== -1;
63
- render(_jsx(App, { vscodeMode: vscodeMode, vscodePort: vscodePort, nonInteractivePrompt: nonInteractivePrompt, nonInteractiveMode: nonInteractiveMode }));
92
+ // Handle copilot login from CLI (no App)
93
+ if (args[0] === 'copilot' && args[1] === 'login') {
94
+ const providerName = args[2]?.trim() || 'GitHub Copilot';
95
+ (async () => {
96
+ try {
97
+ const { runCopilotLoginFlow } = await import('./auth/github-copilot.js');
98
+ console.log('Starting GitHub Copilot login...');
99
+ await runCopilotLoginFlow(providerName, {
100
+ onShowCode(verificationUri, userCode) {
101
+ console.log('');
102
+ console.log(' 1. Open this URL in your browser:');
103
+ console.log('');
104
+ console.log(' ' + verificationUri);
105
+ console.log('');
106
+ console.log(' 2. Enter this code when prompted:');
107
+ console.log('');
108
+ console.log(' ' + userCode);
109
+ console.log('');
110
+ console.log('Waiting for you to complete login...');
111
+ },
112
+ });
113
+ console.log('\nLogged in. Credential saved for "' + providerName + '".');
114
+ process.exit(0);
115
+ }
116
+ catch (err) {
117
+ console.error(err instanceof Error ? err.message : err);
118
+ process.exit(1);
119
+ }
120
+ })();
121
+ }
122
+ else {
123
+ render(_jsx(App, { vscodeMode: vscodeMode, vscodePort: vscodePort, nonInteractivePrompt: nonInteractivePrompt, nonInteractiveMode: nonInteractiveMode, cliProvider: cliProvider, cliModel: cliModel }));
124
+ }
64
125
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.tsx"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export declare class ConfigurationError extends Error {
5
5
  isEmptyConfig: boolean;
6
6
  constructor(message: string, configPath: string, cwdPath?: string | undefined, isEmptyConfig?: boolean);
7
7
  }
8
- export declare function createLLMClient(provider?: string): Promise<{
8
+ export declare function createLLMClient(provider?: string, model?: string): Promise<{
9
9
  client: LLMClient;
10
10
  actualProvider: string;
11
11
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAmB,SAAS,EAAC,MAAM,eAAe,CAAC;AAG/D,qBAAa,kBAAmB,SAAQ,KAAK;IAGpC,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM;IAChB,aAAa,EAAE,OAAO;gBAH7B,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,aAAa,GAAE,OAAe;CAKtC;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,CAAC,CAOtD"}
1
+ {"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAmB,SAAS,EAAC,MAAM,eAAe,CAAC;AAI/D,qBAAa,kBAAmB,SAAQ,KAAK;IAGpC,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM;IAChB,aAAa,EAAE,OAAO;gBAH7B,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,aAAa,GAAE,OAAe;CAKtC;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,CAAC,CAOtD"}
@@ -1,10 +1,12 @@
1
1
  import { existsSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { AISDKClient } from './ai-sdk-client/index.js';
4
+ import { getCopilotNoCredentialsMessage, loadCopilotCredential, } from './config/copilot-credentials.js';
4
5
  import { getClosestConfigFile } from './config/index.js';
5
6
  import { loadAllProviderConfigs } from './config/mcp-config-loader.js';
6
7
  import { loadPreferences } from './config/preferences.js';
7
8
  import { TIMEOUT_PROVIDER_CONNECTION_MS } from './constants.js';
9
+ import { isLocalURL } from './utils/url-utils.js';
8
10
  // Custom error class for configuration errors that need special UI handling
9
11
  export class ConfigurationError extends Error {
10
12
  configPath;
@@ -18,21 +20,21 @@ export class ConfigurationError extends Error {
18
20
  this.name = 'ConfigurationError';
19
21
  }
20
22
  }
21
- export async function createLLMClient(provider) {
23
+ export async function createLLMClient(provider, model) {
22
24
  // Check if agents.config.json exists
23
25
  const agentsJsonPath = getClosestConfigFile('agents.config.json');
24
26
  const hasConfigFile = existsSync(agentsJsonPath);
25
27
  // Use AI SDK - it handles both tool-calling and non-tool-calling models
26
- return createAISDKClient(provider, hasConfigFile);
28
+ return createAISDKClient(provider, model, hasConfigFile);
27
29
  }
28
- async function createAISDKClient(requestedProvider, hasConfigFile = true) {
30
+ async function createAISDKClient(requestedProvider, requestedModel, hasConfigFile = true) {
29
31
  // Load provider configs
30
32
  const providers = loadProviderConfigs();
33
+ const configPath = getClosestConfigFile('agents.config.json');
34
+ const cwd = process.cwd();
35
+ const isInCwd = configPath.startsWith(cwd);
36
+ const cwdPath = !isInCwd ? join(cwd, 'agents.config.json') : undefined;
31
37
  if (providers.length === 0) {
32
- const configPath = getClosestConfigFile('agents.config.json');
33
- const cwd = process.cwd();
34
- const isInCwd = configPath.startsWith(cwd);
35
- const cwdPath = !isInCwd ? join(cwd, 'agents.config.json') : undefined;
36
38
  if (!hasConfigFile) {
37
39
  throw new ConfigurationError('No agents.config.json found', configPath, cwdPath, false);
38
40
  }
@@ -50,6 +52,24 @@ async function createAISDKClient(requestedProvider, hasConfigFile = true) {
50
52
  const preferences = loadPreferences();
51
53
  targetProvider = preferences.lastProvider || providers[0].name;
52
54
  }
55
+ // Validate provider exists if specified
56
+ if (requestedProvider) {
57
+ const providerConfig = providers.find(p => p.name === requestedProvider);
58
+ if (!providerConfig) {
59
+ const availableProviders = providers.map(p => p.name).join(', ');
60
+ throw new ConfigurationError(`Provider '${requestedProvider}' not found in agents.config.json. Available providers: ${availableProviders}`, configPath, cwdPath, false);
61
+ }
62
+ }
63
+ // Validate model exists in the target provider's model list if specified
64
+ if (requestedModel) {
65
+ const resolvedProviderConfig = providers.find(p => p.name === targetProvider) || providers[0];
66
+ if (resolvedProviderConfig &&
67
+ resolvedProviderConfig.models.length > 0 &&
68
+ !resolvedProviderConfig.models.includes(requestedModel)) {
69
+ const availableModels = resolvedProviderConfig.models.join(', ');
70
+ throw new ConfigurationError(`Model '${requestedModel}' not available for provider '${resolvedProviderConfig.name}'. Available models: ${availableModels}`, configPath, cwdPath, false);
71
+ }
72
+ }
53
73
  // Order providers: requested first, then others
54
74
  const availableProviders = providers.map(p => p.name);
55
75
  const providerOrder = [
@@ -66,6 +86,10 @@ async function createAISDKClient(requestedProvider, hasConfigFile = true) {
66
86
  // Test provider connection
67
87
  await testProviderConnection(providerConfig);
68
88
  const client = await AISDKClient.create(providerConfig);
89
+ // Set model if specified
90
+ if (requestedModel) {
91
+ client.setModel(requestedModel);
92
+ }
69
93
  return { client, actualProvider: providerType };
70
94
  }
71
95
  catch (error) {
@@ -110,7 +134,7 @@ function loadProviderConfigs() {
110
134
  async function testProviderConnection(providerConfig) {
111
135
  // Test local servers for connectivity
112
136
  if (providerConfig.config.baseURL &&
113
- providerConfig.config.baseURL.includes('localhost')) {
137
+ isLocalURL(providerConfig.config.baseURL)) {
114
138
  try {
115
139
  await fetch(providerConfig.config.baseURL, {
116
140
  signal: AbortSignal.timeout(TIMEOUT_PROVIDER_CONNECTION_MS),
@@ -131,9 +155,17 @@ async function testProviderConnection(providerConfig) {
131
155
  // Other errors (like HTTP errors) mean the server is responding, so pass
132
156
  }
133
157
  }
134
- // Require API key for hosted providers
158
+ // GitHub Copilot: require stored credential instead of apiKey
159
+ if (providerConfig.sdkProvider === 'github-copilot') {
160
+ const credential = loadCopilotCredential(providerConfig.name);
161
+ if (!credential?.oauthToken) {
162
+ throw new Error(getCopilotNoCredentialsMessage(providerConfig.name));
163
+ }
164
+ return;
165
+ }
166
+ // Require API key for other hosted providers
135
167
  if (!providerConfig.config.apiKey &&
136
- !providerConfig.config.baseURL?.includes('localhost')) {
168
+ !(providerConfig.config.baseURL && isLocalURL(providerConfig.config.baseURL))) {
137
169
  throw new Error('API key required for hosted providers');
138
170
  }
139
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { Command } from '../types/commands.js';
2
1
  /**
3
2
  * The /compact command compresses message history to reduce context usage.
4
3
  *
@@ -6,10 +5,6 @@ import type { Command } from '../types/commands.js';
6
5
  * because it requires access to app state (messages, setMessages, provider, model)
7
6
  * that isn't available through the standard command handler interface.
8
7
  *
9
- * This command definition exists to:
10
- * 1. Register the command in the command registry for /help and autocomplete
11
- * 2. Provide the command description to users
12
- *
13
8
  * Available flags:
14
9
  * --aggressive - Aggressive compression mode (removes more content)
15
10
  * --conservative - Conservative compression mode (preserves more content)
@@ -20,5 +15,5 @@ import type { Command } from '../types/commands.js';
20
15
  * --auto-off - Disable auto-compact for this session
21
16
  * --threshold <n> - Set auto-compact threshold (50-95%) for this session
22
17
  */
23
- export declare const compactCommand: Command;
18
+ export declare const compactCommand: import("../types/index.js").Command<void | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>>;
24
19
  //# sourceMappingURL=compact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,cAAc,EAAE,OAQ5B,CAAC"}
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,+HAG1B,CAAC"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { createStubCommand } from '../commands/create-stub-command.js';
2
2
  /**
3
3
  * The /compact command compresses message history to reduce context usage.
4
4
  *
@@ -6,10 +6,6 @@ import React from 'react';
6
6
  * because it requires access to app state (messages, setMessages, provider, model)
7
7
  * that isn't available through the standard command handler interface.
8
8
  *
9
- * This command definition exists to:
10
- * 1. Register the command in the command registry for /help and autocomplete
11
- * 2. Provide the command description to users
12
- *
13
9
  * Available flags:
14
10
  * --aggressive - Aggressive compression mode (removes more content)
15
11
  * --conservative - Conservative compression mode (preserves more content)
@@ -20,12 +16,5 @@ import React from 'react';
20
16
  * --auto-off - Disable auto-compact for this session
21
17
  * --threshold <n> - Set auto-compact threshold (50-95%) for this session
22
18
  */
23
- export const compactCommand = {
24
- name: 'compact',
25
- description: 'Compress message history to reduce context usage (use --aggressive, --conservative, --preview, --restore, --auto-on, --auto-off, --threshold <n>)',
26
- handler: async (_args, _messages, _metadata) => {
27
- // Handler returns empty fragment - actual logic in app-util.ts handleCompactCommand()
28
- return Promise.resolve(React.createElement(React.Fragment));
29
- },
30
- };
19
+ export const compactCommand = createStubCommand('compact', 'Compress message history to reduce context usage (use --aggressive, --conservative, --preview, --restore, --auto-on, --auto-off, --threshold <n>)');
31
20
  //# sourceMappingURL=compact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAY;IACtC,IAAI,EAAE,SAAS;IACf,WAAW,EACV,mJAAmJ;IACpJ,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;QACxD,sFAAsF;QACtF,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAC9C,SAAS,EACT,mJAAmJ,CACnJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The /context-max command sets the maximum context length for the current session.
3
+ *
4
+ * Note: The actual command logic is handled in app-util.ts handleContextMaxCommand()
5
+ * because it requires access to app state that isn't available through the standard
6
+ * command handler interface.
7
+ *
8
+ * Usage:
9
+ * /context-max <number> - Set context limit (supports k/K suffix, e.g. 128k)
10
+ * /context-max - Show current effective context limit
11
+ * /context-max --reset - Clear session override
12
+ */
13
+ export declare const contextMaxCommand: import("../types/index.js").Command<void | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>>;
14
+ //# sourceMappingURL=context-max.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-max.d.ts","sourceRoot":"","sources":["../../source/commands/context-max.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,+HAG7B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { createStubCommand } from '../commands/create-stub-command.js';
2
+ /**
3
+ * The /context-max command sets the maximum context length for the current session.
4
+ *
5
+ * Note: The actual command logic is handled in app-util.ts handleContextMaxCommand()
6
+ * because it requires access to app state that isn't available through the standard
7
+ * command handler interface.
8
+ *
9
+ * Usage:
10
+ * /context-max <number> - Set context limit (supports k/K suffix, e.g. 128k)
11
+ * /context-max - Show current effective context limit
12
+ * /context-max --reset - Clear session override
13
+ */
14
+ export const contextMaxCommand = createStubCommand('context-max', 'Set maximum context length for this session (e.g. /context-max 128k, --reset to clear)');
15
+ //# sourceMappingURL=context-max.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-max.js","sourceRoot":"","sources":["../../source/commands/context-max.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CACjD,aAAa,EACb,wFAAwF,CACxF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from '../types/index.js';
2
+ export declare const copilotLoginCommand: Command;
3
+ //# sourceMappingURL=copilot-login-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-login-command.d.ts","sourceRoot":"","sources":["../../source/commands/copilot-login-command.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C,eAAO,MAAM,mBAAmB,EAAE,OAQjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const copilotLoginCommand = {
2
+ name: 'copilot-login',
3
+ description: 'Log in to GitHub Copilot (device flow). Saves credentials for the "GitHub Copilot" provider.',
4
+ handler: async () => {
5
+ // Handled via setLiveComponent in app-util.ts for animated UI.
6
+ // This handler is kept for command registry listing / help text.
7
+ },
8
+ };
9
+ //# sourceMappingURL=copilot-login-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-login-command.js","sourceRoot":"","sources":["../../source/commands/copilot-login-command.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC3C,IAAI,EAAE,eAAe;IACrB,WAAW,EACV,8FAA8F;IAC/F,OAAO,EAAE,KAAK,IAAI,EAAE;QACnB,+DAA+D;QAC/D,iEAAiE;IAClE,CAAC;CACD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface CopilotLoginResult {
2
+ success: boolean;
3
+ error?: string;
4
+ }
5
+ export declare function CopilotLogin({ providerName, onDone, }: {
6
+ providerName?: string;
7
+ onDone?: (result: CopilotLoginResult) => void;
8
+ }): import("react/jsx-runtime").JSX.Element | null;
9
+ //# sourceMappingURL=copilot-login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-login.d.ts","sourceRoot":"","sources":["../../source/commands/copilot-login.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,EAC5B,YAAoC,EACpC,MAAM,GACN,EAAE;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC9C,kDAiGA"}