@gguf/coder 0.2.9 → 0.3.1

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 (439) hide show
  1. package/.editorconfig +16 -0
  2. package/.env.example +63 -0
  3. package/.gitattributes +1 -0
  4. package/.semgrepignore +19 -0
  5. package/coder-dummy-file.ts +52 -0
  6. package/coder.config.example.json +59 -0
  7. package/coder.config.json +13 -0
  8. package/color_picker.html +36 -0
  9. package/dist/tools/execute-bash.js +3 -3
  10. package/dist/tools/execute-bash.js.map +1 -1
  11. package/dist/tools/fetch-url.js +3 -3
  12. package/dist/tools/fetch-url.js.map +1 -1
  13. package/dist/tools/find-files.d.ts.map +1 -1
  14. package/dist/tools/find-files.js +1 -1
  15. package/dist/tools/find-files.js.map +1 -1
  16. package/dist/tools/lsp-get-diagnostics.js +1 -1
  17. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  18. package/dist/tools/read-file.d.ts.map +1 -1
  19. package/dist/tools/read-file.js +6 -6
  20. package/dist/tools/read-file.js.map +1 -1
  21. package/dist/tools/search-file-contents.d.ts.map +1 -1
  22. package/dist/tools/search-file-contents.js +1 -1
  23. package/dist/tools/search-file-contents.js.map +1 -1
  24. package/dist/tools/string-replace.js +11 -11
  25. package/dist/tools/string-replace.js.map +1 -1
  26. package/dist/tools/web-search.d.ts.map +1 -1
  27. package/dist/tools/web-search.js +3 -3
  28. package/dist/tools/web-search.js.map +1 -1
  29. package/dist/tools/write-file.js +4 -4
  30. package/dist/tools/write-file.js.map +1 -1
  31. package/dist/utils/tool-result-display.d.ts.map +1 -1
  32. package/dist/utils/tool-result-display.js +3 -3
  33. package/dist/utils/tool-result-display.js.map +1 -1
  34. package/package.json +2 -14
  35. package/scripts/extract-changelog.js +73 -0
  36. package/scripts/fetch-models.js +143 -0
  37. package/scripts/test.sh +40 -0
  38. package/scripts/update-homebrew-formula.sh +125 -0
  39. package/scripts/update-nix-version.sh +157 -0
  40. package/source/ai-sdk-client/AISDKClient.spec.ts +117 -0
  41. package/source/ai-sdk-client/AISDKClient.ts +155 -0
  42. package/source/ai-sdk-client/chat/chat-handler.spec.ts +121 -0
  43. package/source/ai-sdk-client/chat/chat-handler.ts +276 -0
  44. package/source/ai-sdk-client/chat/streaming-handler.spec.ts +173 -0
  45. package/source/ai-sdk-client/chat/streaming-handler.ts +110 -0
  46. package/source/ai-sdk-client/chat/tool-processor.spec.ts +92 -0
  47. package/source/ai-sdk-client/chat/tool-processor.ts +70 -0
  48. package/source/ai-sdk-client/converters/message-converter.spec.ts +220 -0
  49. package/source/ai-sdk-client/converters/message-converter.ts +113 -0
  50. package/source/ai-sdk-client/converters/tool-converter.spec.ts +90 -0
  51. package/source/ai-sdk-client/converters/tool-converter.ts +46 -0
  52. package/source/ai-sdk-client/error-handling/error-extractor.spec.ts +55 -0
  53. package/source/ai-sdk-client/error-handling/error-extractor.ts +15 -0
  54. package/source/ai-sdk-client/error-handling/error-parser.spec.ts +169 -0
  55. package/source/ai-sdk-client/error-handling/error-parser.ts +161 -0
  56. package/source/ai-sdk-client/index.ts +7 -0
  57. package/source/ai-sdk-client/providers/provider-factory.spec.ts +71 -0
  58. package/source/ai-sdk-client/providers/provider-factory.ts +41 -0
  59. package/source/ai-sdk-client/types.ts +9 -0
  60. package/source/ai-sdk-client-empty-message.spec.ts +141 -0
  61. package/source/ai-sdk-client-error-handling.spec.ts +186 -0
  62. package/source/ai-sdk-client-maxretries.spec.ts +114 -0
  63. package/source/ai-sdk-client-preparestep.spec.ts +279 -0
  64. package/source/app/App.spec.tsx +32 -0
  65. package/source/app/App.tsx +480 -0
  66. package/source/app/components/AppContainer.spec.tsx +96 -0
  67. package/source/app/components/AppContainer.tsx +56 -0
  68. package/source/app/components/ChatInterface.spec.tsx +163 -0
  69. package/source/app/components/ChatInterface.tsx +144 -0
  70. package/source/app/components/ModalSelectors.spec.tsx +141 -0
  71. package/source/app/components/ModalSelectors.tsx +135 -0
  72. package/source/app/helpers.spec.ts +97 -0
  73. package/source/app/helpers.ts +63 -0
  74. package/source/app/index.ts +4 -0
  75. package/source/app/types.ts +39 -0
  76. package/source/app/utils/appUtils.ts +294 -0
  77. package/source/app/utils/conversationState.ts +310 -0
  78. package/source/app.spec.tsx +244 -0
  79. package/source/cli.spec.ts +73 -0
  80. package/source/cli.tsx +51 -0
  81. package/source/client-factory.spec.ts +48 -0
  82. package/source/client-factory.ts +178 -0
  83. package/source/command-parser.spec.ts +127 -0
  84. package/source/command-parser.ts +36 -0
  85. package/source/commands/checkpoint.spec.tsx +277 -0
  86. package/source/commands/checkpoint.tsx +366 -0
  87. package/source/commands/clear.tsx +22 -0
  88. package/source/commands/custom-commands.tsx +121 -0
  89. package/source/commands/exit.ts +21 -0
  90. package/source/commands/export.spec.tsx +131 -0
  91. package/source/commands/export.tsx +79 -0
  92. package/source/commands/help.tsx +120 -0
  93. package/source/commands/index.ts +17 -0
  94. package/source/commands/init.tsx +339 -0
  95. package/source/commands/lsp-command.spec.tsx +281 -0
  96. package/source/commands/lsp.tsx +120 -0
  97. package/source/commands/mcp-command.spec.tsx +313 -0
  98. package/source/commands/mcp.tsx +162 -0
  99. package/source/commands/model-database.spec.tsx +758 -0
  100. package/source/commands/model-database.tsx +418 -0
  101. package/source/commands/model.ts +12 -0
  102. package/source/commands/provider.ts +12 -0
  103. package/source/commands/setup-config.tsx +16 -0
  104. package/source/commands/simple-commands.spec.tsx +175 -0
  105. package/source/commands/status.ts +12 -0
  106. package/source/commands/theme.ts +12 -0
  107. package/source/commands/update.spec.tsx +261 -0
  108. package/source/commands/update.tsx +201 -0
  109. package/source/commands/usage.spec.tsx +495 -0
  110. package/source/commands/usage.tsx +100 -0
  111. package/source/commands.spec.ts +436 -0
  112. package/source/commands.ts +83 -0
  113. package/source/components/assistant-message.spec.tsx +796 -0
  114. package/source/components/assistant-message.tsx +34 -0
  115. package/source/components/bash-execution-indicator.tsx +21 -0
  116. package/source/components/cancelling-indicator.tsx +16 -0
  117. package/source/components/chat-queue.spec.tsx +83 -0
  118. package/source/components/chat-queue.tsx +36 -0
  119. package/source/components/checkpoint-display.spec.tsx +219 -0
  120. package/source/components/checkpoint-display.tsx +126 -0
  121. package/source/components/checkpoint-selector.spec.tsx +173 -0
  122. package/source/components/checkpoint-selector.tsx +173 -0
  123. package/source/components/development-mode-indicator.spec.tsx +268 -0
  124. package/source/components/development-mode-indicator.tsx +38 -0
  125. package/source/components/message-box.spec.tsx +427 -0
  126. package/source/components/message-box.tsx +87 -0
  127. package/source/components/model-selector.tsx +132 -0
  128. package/source/components/provider-selector.tsx +75 -0
  129. package/source/components/random-spinner.tsx +19 -0
  130. package/source/components/security-disclaimer.tsx +73 -0
  131. package/source/components/status-connection-display.spec.tsx +133 -0
  132. package/source/components/status.tsx +267 -0
  133. package/source/components/theme-selector.tsx +126 -0
  134. package/source/components/tool-confirmation.tsx +190 -0
  135. package/source/components/tool-execution-indicator.tsx +33 -0
  136. package/source/components/tool-message.tsx +85 -0
  137. package/source/components/ui/titled-box.spec.tsx +207 -0
  138. package/source/components/ui/titled-box.tsx +57 -0
  139. package/source/components/usage/progress-bar.spec.tsx +398 -0
  140. package/source/components/usage/progress-bar.tsx +30 -0
  141. package/source/components/usage/usage-display.spec.tsx +780 -0
  142. package/source/components/usage/usage-display.tsx +291 -0
  143. package/source/components/user-input.spec.tsx +327 -0
  144. package/source/components/user-input.tsx +533 -0
  145. package/source/components/user-message.spec.tsx +230 -0
  146. package/source/components/user-message.tsx +84 -0
  147. package/source/components/welcome-message.tsx +76 -0
  148. package/source/config/env-substitution.ts +65 -0
  149. package/source/config/index.spec.ts +171 -0
  150. package/source/config/index.ts +154 -0
  151. package/source/config/paths.spec.ts +241 -0
  152. package/source/config/paths.ts +55 -0
  153. package/source/config/preferences.ts +51 -0
  154. package/source/config/themes.ts +315 -0
  155. package/source/constants.ts +130 -0
  156. package/source/context/mode-context.spec.ts +79 -0
  157. package/source/context/mode-context.ts +24 -0
  158. package/source/custom-commands/executor.spec.ts +142 -0
  159. package/source/custom-commands/executor.ts +64 -0
  160. package/source/custom-commands/loader.spec.ts +314 -0
  161. package/source/custom-commands/loader.ts +153 -0
  162. package/source/custom-commands/parser.ts +196 -0
  163. package/source/hooks/chat-handler/conversation/conversation-loop.spec.ts +39 -0
  164. package/source/hooks/chat-handler/conversation/conversation-loop.tsx +511 -0
  165. package/source/hooks/chat-handler/conversation/tool-executor.spec.ts +50 -0
  166. package/source/hooks/chat-handler/conversation/tool-executor.tsx +109 -0
  167. package/source/hooks/chat-handler/index.ts +12 -0
  168. package/source/hooks/chat-handler/state/streaming-state.spec.ts +26 -0
  169. package/source/hooks/chat-handler/state/streaming-state.ts +19 -0
  170. package/source/hooks/chat-handler/types.ts +38 -0
  171. package/source/hooks/chat-handler/useChatHandler.spec.tsx +321 -0
  172. package/source/hooks/chat-handler/useChatHandler.tsx +194 -0
  173. package/source/hooks/chat-handler/utils/context-checker.spec.ts +60 -0
  174. package/source/hooks/chat-handler/utils/context-checker.tsx +73 -0
  175. package/source/hooks/chat-handler/utils/message-helpers.spec.ts +42 -0
  176. package/source/hooks/chat-handler/utils/message-helpers.tsx +36 -0
  177. package/source/hooks/chat-handler/utils/tool-filters.spec.ts +109 -0
  178. package/source/hooks/chat-handler/utils/tool-filters.ts +64 -0
  179. package/source/hooks/useAppHandlers.tsx +291 -0
  180. package/source/hooks/useAppInitialization.tsx +422 -0
  181. package/source/hooks/useAppState.tsx +311 -0
  182. package/source/hooks/useDirectoryTrust.tsx +98 -0
  183. package/source/hooks/useInputState.ts +414 -0
  184. package/source/hooks/useModeHandlers.tsx +302 -0
  185. package/source/hooks/useNonInteractiveMode.ts +140 -0
  186. package/source/hooks/useTerminalWidth.tsx +81 -0
  187. package/source/hooks/useTheme.ts +18 -0
  188. package/source/hooks/useToolHandler.tsx +349 -0
  189. package/source/hooks/useUIState.ts +61 -0
  190. package/source/init/agents-template-generator.ts +421 -0
  191. package/source/init/existing-rules-extractor.ts +319 -0
  192. package/source/init/file-scanner.spec.ts +227 -0
  193. package/source/init/file-scanner.ts +238 -0
  194. package/source/init/framework-detector.ts +382 -0
  195. package/source/init/language-detector.ts +269 -0
  196. package/source/init/project-analyzer.spec.ts +231 -0
  197. package/source/init/project-analyzer.ts +458 -0
  198. package/source/lsp/index.ts +31 -0
  199. package/source/lsp/lsp-client.spec.ts +508 -0
  200. package/source/lsp/lsp-client.ts +487 -0
  201. package/source/lsp/lsp-manager.spec.ts +477 -0
  202. package/source/lsp/lsp-manager.ts +419 -0
  203. package/source/lsp/protocol.spec.ts +502 -0
  204. package/source/lsp/protocol.ts +360 -0
  205. package/source/lsp/server-discovery.spec.ts +654 -0
  206. package/source/lsp/server-discovery.ts +515 -0
  207. package/source/markdown-parser/html-entities.spec.ts +88 -0
  208. package/source/markdown-parser/html-entities.ts +45 -0
  209. package/source/markdown-parser/index.spec.ts +281 -0
  210. package/source/markdown-parser/index.ts +126 -0
  211. package/source/markdown-parser/table-parser.spec.ts +133 -0
  212. package/source/markdown-parser/table-parser.ts +114 -0
  213. package/source/markdown-parser/utils.spec.ts +70 -0
  214. package/source/markdown-parser/utils.ts +13 -0
  215. package/source/mcp/mcp-client.spec.ts +81 -0
  216. package/source/mcp/mcp-client.ts +625 -0
  217. package/source/mcp/transport-factory.spec.ts +406 -0
  218. package/source/mcp/transport-factory.ts +312 -0
  219. package/source/message-handler.ts +67 -0
  220. package/source/model-database/database-engine.spec.ts +494 -0
  221. package/source/model-database/database-engine.ts +50 -0
  222. package/source/model-database/model-database.spec.ts +363 -0
  223. package/source/model-database/model-database.ts +91 -0
  224. package/source/model-database/model-engine.spec.ts +447 -0
  225. package/source/model-database/model-engine.ts +65 -0
  226. package/source/model-database/model-fetcher.spec.ts +583 -0
  227. package/source/model-database/model-fetcher.ts +330 -0
  228. package/source/models/index.ts +1 -0
  229. package/source/models/models-cache.spec.ts +214 -0
  230. package/source/models/models-cache.ts +78 -0
  231. package/source/models/models-dev-client.spec.ts +379 -0
  232. package/source/models/models-dev-client.ts +329 -0
  233. package/source/models/models-types.ts +68 -0
  234. package/source/prompt-history.ts +155 -0
  235. package/source/security/command-injection.spec.ts +240 -0
  236. package/source/services/checkpoint-manager.spec.ts +523 -0
  237. package/source/services/checkpoint-manager.ts +466 -0
  238. package/source/services/file-snapshot.spec.ts +569 -0
  239. package/source/services/file-snapshot.ts +220 -0
  240. package/source/test-utils/render-with-theme.tsx +48 -0
  241. package/source/tokenization/index.ts +1 -0
  242. package/source/tokenization/tokenizer-factory.spec.ts +170 -0
  243. package/source/tokenization/tokenizer-factory.ts +125 -0
  244. package/source/tokenization/tokenizers/anthropic-tokenizer.spec.ts +200 -0
  245. package/source/tokenization/tokenizers/anthropic-tokenizer.ts +43 -0
  246. package/source/tokenization/tokenizers/fallback-tokenizer.spec.ts +236 -0
  247. package/source/tokenization/tokenizers/fallback-tokenizer.ts +26 -0
  248. package/source/tokenization/tokenizers/llama-tokenizer.spec.ts +224 -0
  249. package/source/tokenization/tokenizers/llama-tokenizer.ts +41 -0
  250. package/source/tokenization/tokenizers/openai-tokenizer.spec.ts +184 -0
  251. package/source/tokenization/tokenizers/openai-tokenizer.ts +57 -0
  252. package/source/tool-calling/index.ts +5 -0
  253. package/source/tool-calling/json-parser.spec.ts +639 -0
  254. package/source/tool-calling/json-parser.ts +247 -0
  255. package/source/tool-calling/tool-parser.spec.ts +395 -0
  256. package/source/tool-calling/tool-parser.ts +120 -0
  257. package/source/tool-calling/xml-parser.spec.ts +662 -0
  258. package/source/tool-calling/xml-parser.ts +289 -0
  259. package/source/tools/execute-bash.spec.tsx +353 -0
  260. package/source/tools/execute-bash.tsx +219 -0
  261. package/source/tools/execute-function.spec.ts +130 -0
  262. package/source/tools/fetch-url.spec.tsx +342 -0
  263. package/source/tools/fetch-url.tsx +172 -0
  264. package/source/tools/find-files.spec.tsx +924 -0
  265. package/source/tools/find-files.tsx +293 -0
  266. package/source/tools/index.ts +102 -0
  267. package/source/tools/lsp-get-diagnostics.tsx +192 -0
  268. package/source/tools/needs-approval.spec.ts +282 -0
  269. package/source/tools/read-file.spec.tsx +801 -0
  270. package/source/tools/read-file.tsx +387 -0
  271. package/source/tools/search-file-contents.spec.tsx +1273 -0
  272. package/source/tools/search-file-contents.tsx +293 -0
  273. package/source/tools/string-replace.spec.tsx +730 -0
  274. package/source/tools/string-replace.tsx +548 -0
  275. package/source/tools/tool-manager.ts +210 -0
  276. package/source/tools/tool-registry.spec.ts +415 -0
  277. package/source/tools/tool-registry.ts +228 -0
  278. package/source/tools/web-search.tsx +223 -0
  279. package/source/tools/write-file.spec.tsx +559 -0
  280. package/source/tools/write-file.tsx +228 -0
  281. package/source/types/app.ts +37 -0
  282. package/source/types/checkpoint.ts +48 -0
  283. package/source/types/commands.ts +46 -0
  284. package/source/types/components.ts +27 -0
  285. package/source/types/config.ts +103 -0
  286. package/source/types/core-connection-status.spec.ts +67 -0
  287. package/source/types/core.ts +181 -0
  288. package/source/types/hooks.ts +50 -0
  289. package/source/types/index.ts +12 -0
  290. package/source/types/markdown-parser.ts +11 -0
  291. package/source/types/mcp.ts +52 -0
  292. package/source/types/system.ts +16 -0
  293. package/source/types/tokenization.ts +41 -0
  294. package/source/types/ui.ts +40 -0
  295. package/source/types/usage.ts +58 -0
  296. package/source/types/utils.ts +16 -0
  297. package/source/usage/calculator.spec.ts +385 -0
  298. package/source/usage/calculator.ts +104 -0
  299. package/source/usage/storage.spec.ts +703 -0
  300. package/source/usage/storage.ts +238 -0
  301. package/source/usage/tracker.spec.ts +456 -0
  302. package/source/usage/tracker.ts +102 -0
  303. package/source/utils/atomic-deletion.spec.ts +194 -0
  304. package/source/utils/atomic-deletion.ts +127 -0
  305. package/source/utils/bounded-map.spec.ts +300 -0
  306. package/source/utils/bounded-map.ts +193 -0
  307. package/source/utils/checkpoint-utils.spec.ts +222 -0
  308. package/source/utils/checkpoint-utils.ts +92 -0
  309. package/source/utils/error-formatter.spec.ts +169 -0
  310. package/source/utils/error-formatter.ts +194 -0
  311. package/source/utils/file-autocomplete.spec.ts +173 -0
  312. package/source/utils/file-autocomplete.ts +196 -0
  313. package/source/utils/file-cache.spec.ts +309 -0
  314. package/source/utils/file-cache.ts +195 -0
  315. package/source/utils/file-content-loader.spec.ts +180 -0
  316. package/source/utils/file-content-loader.ts +179 -0
  317. package/source/utils/file-mention-handler.spec.ts +261 -0
  318. package/source/utils/file-mention-handler.ts +84 -0
  319. package/source/utils/file-mention-parser.spec.ts +182 -0
  320. package/source/utils/file-mention-parser.ts +170 -0
  321. package/source/utils/fuzzy-matching.spec.ts +149 -0
  322. package/source/utils/fuzzy-matching.ts +146 -0
  323. package/source/utils/indentation-normalizer.spec.ts +216 -0
  324. package/source/utils/indentation-normalizer.ts +76 -0
  325. package/source/utils/installation-detector.spec.ts +178 -0
  326. package/source/utils/installation-detector.ts +153 -0
  327. package/source/utils/logging/config.spec.ts +311 -0
  328. package/source/utils/logging/config.ts +210 -0
  329. package/source/utils/logging/console-facade.spec.ts +184 -0
  330. package/source/utils/logging/console-facade.ts +384 -0
  331. package/source/utils/logging/correlation.spec.ts +679 -0
  332. package/source/utils/logging/correlation.ts +474 -0
  333. package/source/utils/logging/formatters.spec.ts +464 -0
  334. package/source/utils/logging/formatters.ts +207 -0
  335. package/source/utils/logging/health-monitor/alerts/alert-manager.spec.ts +93 -0
  336. package/source/utils/logging/health-monitor/alerts/alert-manager.ts +79 -0
  337. package/source/utils/logging/health-monitor/checks/configuration-check.spec.ts +56 -0
  338. package/source/utils/logging/health-monitor/checks/configuration-check.ts +43 -0
  339. package/source/utils/logging/health-monitor/checks/logging-check.spec.ts +56 -0
  340. package/source/utils/logging/health-monitor/checks/logging-check.ts +58 -0
  341. package/source/utils/logging/health-monitor/checks/memory-check.spec.ts +100 -0
  342. package/source/utils/logging/health-monitor/checks/memory-check.ts +78 -0
  343. package/source/utils/logging/health-monitor/checks/performance-check.spec.ts +56 -0
  344. package/source/utils/logging/health-monitor/checks/performance-check.ts +56 -0
  345. package/source/utils/logging/health-monitor/checks/request-check.spec.ts +56 -0
  346. package/source/utils/logging/health-monitor/checks/request-check.ts +76 -0
  347. package/source/utils/logging/health-monitor/core/health-check-runner.spec.ts +70 -0
  348. package/source/utils/logging/health-monitor/core/health-check-runner.ts +138 -0
  349. package/source/utils/logging/health-monitor/core/health-monitor.spec.ts +58 -0
  350. package/source/utils/logging/health-monitor/core/health-monitor.ts +344 -0
  351. package/source/utils/logging/health-monitor/core/scoring.spec.ts +65 -0
  352. package/source/utils/logging/health-monitor/core/scoring.ts +91 -0
  353. package/source/utils/logging/health-monitor/index.ts +15 -0
  354. package/source/utils/logging/health-monitor/instances.ts +48 -0
  355. package/source/utils/logging/health-monitor/middleware/http-middleware.spec.ts +141 -0
  356. package/source/utils/logging/health-monitor/middleware/http-middleware.ts +75 -0
  357. package/source/utils/logging/health-monitor/types.ts +126 -0
  358. package/source/utils/logging/index.spec.ts +284 -0
  359. package/source/utils/logging/index.ts +236 -0
  360. package/source/utils/logging/integration.spec.ts +441 -0
  361. package/source/utils/logging/log-method-factory.spec.ts +573 -0
  362. package/source/utils/logging/log-method-factory.ts +233 -0
  363. package/source/utils/logging/log-query/aggregation/aggregator.spec.ts +277 -0
  364. package/source/utils/logging/log-query/aggregation/aggregator.ts +159 -0
  365. package/source/utils/logging/log-query/aggregation/facet-generator.spec.ts +159 -0
  366. package/source/utils/logging/log-query/aggregation/facet-generator.ts +47 -0
  367. package/source/utils/logging/log-query/index.ts +23 -0
  368. package/source/utils/logging/log-query/query/filter-predicates.spec.ts +247 -0
  369. package/source/utils/logging/log-query/query/filter-predicates.ts +154 -0
  370. package/source/utils/logging/log-query/query/query-builder.spec.ts +182 -0
  371. package/source/utils/logging/log-query/query/query-builder.ts +151 -0
  372. package/source/utils/logging/log-query/query/query-engine.spec.ts +214 -0
  373. package/source/utils/logging/log-query/query/query-engine.ts +45 -0
  374. package/source/utils/logging/log-query/storage/circular-buffer.spec.ts +143 -0
  375. package/source/utils/logging/log-query/storage/circular-buffer.ts +75 -0
  376. package/source/utils/logging/log-query/storage/index-manager.spec.ts +150 -0
  377. package/source/utils/logging/log-query/storage/index-manager.ts +71 -0
  378. package/source/utils/logging/log-query/storage/log-storage.spec.ts +257 -0
  379. package/source/utils/logging/log-query/storage/log-storage.ts +80 -0
  380. package/source/utils/logging/log-query/types.ts +163 -0
  381. package/source/utils/logging/log-query/utils/helpers.spec.ts +263 -0
  382. package/source/utils/logging/log-query/utils/helpers.ts +72 -0
  383. package/source/utils/logging/log-query/utils/sorting.spec.ts +182 -0
  384. package/source/utils/logging/log-query/utils/sorting.ts +61 -0
  385. package/source/utils/logging/logger-provider.spec.ts +262 -0
  386. package/source/utils/logging/logger-provider.ts +362 -0
  387. package/source/utils/logging/performance.spec.ts +209 -0
  388. package/source/utils/logging/performance.ts +757 -0
  389. package/source/utils/logging/pino-logger.spec.ts +425 -0
  390. package/source/utils/logging/pino-logger.ts +514 -0
  391. package/source/utils/logging/redaction.spec.ts +490 -0
  392. package/source/utils/logging/redaction.ts +267 -0
  393. package/source/utils/logging/request-tracker.spec.ts +1198 -0
  394. package/source/utils/logging/request-tracker.ts +803 -0
  395. package/source/utils/logging/transports.spec.ts +505 -0
  396. package/source/utils/logging/transports.ts +305 -0
  397. package/source/utils/logging/types.ts +216 -0
  398. package/source/utils/message-builder.spec.ts +179 -0
  399. package/source/utils/message-builder.ts +101 -0
  400. package/source/utils/message-queue.tsx +486 -0
  401. package/source/utils/paste-detection.spec.ts +69 -0
  402. package/source/utils/paste-detection.ts +124 -0
  403. package/source/utils/paste-roundtrip.spec.ts +442 -0
  404. package/source/utils/paste-utils.spec.ts +128 -0
  405. package/source/utils/paste-utils.ts +52 -0
  406. package/source/utils/programming-language-helper.spec.ts +74 -0
  407. package/source/utils/programming-language-helper.ts +32 -0
  408. package/source/utils/prompt-assembly.spec.ts +221 -0
  409. package/source/utils/prompt-processor.ts +173 -0
  410. package/source/utils/tool-args-parser.spec.ts +136 -0
  411. package/source/utils/tool-args-parser.ts +54 -0
  412. package/source/utils/tool-cancellation.spec.ts +230 -0
  413. package/source/utils/tool-cancellation.ts +28 -0
  414. package/source/utils/tool-result-display.spec.tsx +469 -0
  415. package/source/utils/tool-result-display.tsx +90 -0
  416. package/source/utils/update-checker.spec.ts +383 -0
  417. package/source/utils/update-checker.ts +183 -0
  418. package/source/wizard/config-wizard.spec.tsx +103 -0
  419. package/source/wizard/config-wizard.tsx +382 -0
  420. package/source/wizard/steps/location-step.spec.tsx +186 -0
  421. package/source/wizard/steps/location-step.tsx +147 -0
  422. package/source/wizard/steps/mcp-step.spec.tsx +607 -0
  423. package/source/wizard/steps/mcp-step.tsx +632 -0
  424. package/source/wizard/steps/provider-step.spec.tsx +342 -0
  425. package/source/wizard/steps/provider-step.tsx +957 -0
  426. package/source/wizard/steps/summary-step.spec.tsx +749 -0
  427. package/source/wizard/steps/summary-step.tsx +228 -0
  428. package/source/wizard/templates/mcp-templates.spec.ts +613 -0
  429. package/source/wizard/templates/mcp-templates.ts +570 -0
  430. package/source/wizard/templates/provider-templates.spec.ts +152 -0
  431. package/source/wizard/templates/provider-templates.ts +485 -0
  432. package/source/wizard/utils/fetch-cloud-models.spec.ts +428 -0
  433. package/source/wizard/utils/fetch-cloud-models.ts +223 -0
  434. package/source/wizard/utils/fetch-local-models.spec.ts +297 -0
  435. package/source/wizard/utils/fetch-local-models.ts +192 -0
  436. package/source/wizard/validation-array.spec.ts +264 -0
  437. package/source/wizard/validation.spec.ts +373 -0
  438. package/source/wizard/validation.ts +232 -0
  439. package/source/app/prompts/main-prompt.md +0 -122
@@ -0,0 +1,181 @@
1
+ import React from 'react';
2
+
3
+ import {type Tool as AISDKTool, jsonSchema, tool} from 'ai';
4
+
5
+ export {tool, jsonSchema};
6
+
7
+ // Type for AI SDK tools (return type of tool() function)
8
+ // Tool<PARAMETERS, RESULT> is AI SDK's actual tool type
9
+ // We use 'any' for generics since we don't auto-execute tools (human-in-the-loop)
10
+ // biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required
11
+ export type AISDKCoreTool = AISDKTool<any, any>;
12
+
13
+ // Current Coder message format (OpenAI-compatible)
14
+ // Note: We maintain this format internally and convert to ModelMessage at AI SDK boundary
15
+ export interface Message {
16
+ role: 'user' | 'assistant' | 'system' | 'tool';
17
+ content: string;
18
+ tool_calls?: ToolCall[];
19
+ tool_call_id?: string;
20
+ name?: string;
21
+ }
22
+
23
+ export interface ToolCall {
24
+ id: string;
25
+ function: {
26
+ name: string;
27
+ arguments: Record<string, unknown>;
28
+ };
29
+ }
30
+
31
+ export interface ToolResult {
32
+ tool_call_id: string;
33
+ role: 'tool';
34
+ name: string;
35
+ content: string;
36
+ }
37
+
38
+ export interface ToolParameterSchema {
39
+ type?: string;
40
+ description?: string;
41
+ [key: string]: unknown;
42
+ }
43
+
44
+ export interface Tool {
45
+ type: 'function';
46
+ function: {
47
+ name: string;
48
+ description: string;
49
+ parameters: {
50
+ type: 'object';
51
+ properties: Record<string, ToolParameterSchema>;
52
+ required: string[];
53
+ };
54
+ };
55
+ }
56
+
57
+ // Tool handlers accept dynamic args from LLM, so any is appropriate here
58
+ // biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required -- Tool arguments are dynamically typed
59
+ export type ToolHandler = (input: any) => Promise<string>;
60
+
61
+ /**
62
+ * Tool formatter type for Ink UI
63
+ * Formats tool arguments and results for display in the CLI
64
+ */
65
+ export type ToolFormatter = (
66
+ // biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required -- Tool arguments are dynamically typed
67
+ args: any,
68
+ result?: string,
69
+ ) =>
70
+ | string
71
+ | Promise<string>
72
+ | React.ReactElement
73
+ | Promise<React.ReactElement>;
74
+
75
+ /**
76
+ * Tool validator type for pre-execution validation
77
+ * Returns validation result with optional error message
78
+ */
79
+ export type ToolValidator = (
80
+ // biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required -- Tool arguments are dynamically typed
81
+ args: any,
82
+ ) => Promise<{valid: true} | {valid: false; error: string}>;
83
+
84
+ /**
85
+ * Coder tool export structure
86
+ *
87
+ * This is what individual tool files export (e.g., read-file.tsx, execute-bash.tsx).
88
+ * The handler is extracted from tool.execute() in tools/index.ts to avoid duplication.
89
+ *
90
+ * Structure:
91
+ * - name: Tool name as const for type safety
92
+ * - tool: Native AI SDK v6 CoreTool with execute() function
93
+ * - formatter: Optional React component for rich CLI UI display
94
+ * - validator: Optional pre-execution validation function
95
+ */
96
+ export interface CoderToolExport {
97
+ name: string;
98
+ tool: AISDKCoreTool; // AI SDK v6 tool with execute()
99
+ formatter?: ToolFormatter; // For UI display
100
+ validator?: ToolValidator; // For pre-execution validation
101
+ }
102
+
103
+ /**
104
+ * Internal tool entry used by ToolRegistry
105
+ *
106
+ * This is the complete tool entry including the handler extracted from tool.execute().
107
+ * Used internally by ToolRegistry and ToolManager for unified tool management.
108
+ *
109
+ * Structure:
110
+ * - name: Tool name for registry lookup
111
+ * - tool: Native AI SDK CoreTool (for passing to AI SDK)
112
+ * - handler: Extracted execute function (for human-in-the-loop execution)
113
+ * - formatter: Optional React component for rich CLI UI display
114
+ * - validator: Optional pre-execution validation function
115
+ */
116
+ export interface ToolEntry {
117
+ name: string;
118
+ tool: AISDKCoreTool; // For AI SDK
119
+ handler: ToolHandler; // For execution (extracted from tool.execute)
120
+ formatter?: ToolFormatter; // For UI (React component)
121
+ validator?: ToolValidator; // For validation
122
+ }
123
+
124
+ interface LLMMessage {
125
+ role: 'assistant';
126
+ content: string;
127
+ tool_calls?: ToolCall[];
128
+ }
129
+
130
+ export interface LLMChatResponse {
131
+ choices: Array<{
132
+ message: LLMMessage;
133
+ }>;
134
+ // Auto-executed messages (assistant + tool results) from AI SDK multi-step execution
135
+ // These need to be added to message history for proper context tracking
136
+ autoExecutedMessages?: Message[];
137
+ }
138
+
139
+ export interface StreamCallbacks {
140
+ onToken?: (token: string) => void;
141
+ onToolCall?: (toolCall: ToolCall) => void;
142
+ onToolExecuted?: (toolCall: ToolCall, result: string) => void;
143
+ onFinish?: () => void;
144
+ }
145
+
146
+ export interface LLMClient {
147
+ getCurrentModel(): string;
148
+ setModel(model: string): void;
149
+ getContextSize(): number;
150
+ getAvailableModels(): Promise<string[]>;
151
+ chat(
152
+ messages: Message[],
153
+ tools: Record<string, AISDKCoreTool>,
154
+ callbacks: StreamCallbacks,
155
+ signal?: AbortSignal,
156
+ ): Promise<LLMChatResponse>;
157
+ clearContext(): Promise<void>;
158
+ }
159
+
160
+ export type DevelopmentMode = 'normal' | 'auto-accept' | 'plan';
161
+
162
+ export const DEVELOPMENT_MODE_LABELS: Record<DevelopmentMode, string> = {
163
+ normal: '▶ normal mode on',
164
+ 'auto-accept': '⏵⏵ auto-accept mode on',
165
+ plan: '⏸ plan mode on',
166
+ };
167
+
168
+ // Connection status types for MCP and LSP servers
169
+ export type ConnectionStatus = 'connected' | 'failed' | 'pending';
170
+
171
+ export interface MCPConnectionStatus {
172
+ name: string;
173
+ status: ConnectionStatus;
174
+ errorMessage?: string;
175
+ }
176
+
177
+ export interface LSPConnectionStatus {
178
+ name: string;
179
+ status: ConnectionStatus;
180
+ errorMessage?: string;
181
+ }
@@ -0,0 +1,50 @@
1
+ // Enum for all supported placeholder types - ensures type safety
2
+ export enum PlaceholderType {
3
+ PASTE = 'paste',
4
+ FILE = 'file',
5
+ // Future types can be added here:
6
+ // TEMPLATE = 'template',
7
+ // ENV_VAR = 'env_var',
8
+ // COMMAND_OUTPUT = 'command_output'
9
+ }
10
+
11
+ // Base placeholder content structure
12
+ interface BasePlaceholderContent {
13
+ type: PlaceholderType;
14
+ displayText: string; // What shows in the placeholder (e.g., "[Paste #123: 567 chars]")
15
+ }
16
+
17
+ // Specific placeholder types with their own JSON data structures
18
+ export interface PastePlaceholderContent extends BasePlaceholderContent {
19
+ type: PlaceholderType.PASTE;
20
+ content: string; // The actual pasted text
21
+ originalSize: number;
22
+ detectionMethod?: 'rate' | 'size' | 'multiline';
23
+ timestamp?: number; // When the paste occurred
24
+ }
25
+
26
+ interface FilePlaceholderContent extends BasePlaceholderContent {
27
+ type: PlaceholderType.FILE;
28
+ filePath: string; // Absolute or relative path
29
+ content: string; // File contents at time of inclusion
30
+ lastModified?: number; // File modification time
31
+ encoding?: string; // File encoding (utf8, etc.)
32
+ fileSize?: number; // Original file size
33
+ checksum?: string; // For detecting file changes
34
+ }
35
+
36
+ // Union type for all placeholder content types - fully type-safe
37
+ export type PlaceholderContent =
38
+ | PastePlaceholderContent
39
+ | FilePlaceholderContent;
40
+
41
+ // Core data structure for placeholder handling system
42
+ export interface InputState {
43
+ // The text visible in the input field, including placeholders.
44
+ // e.g., "Analyze this: [Paste #1234: 567 chars] and compare with [File #5678: config.json]"
45
+ displayValue: string;
46
+
47
+ // A dictionary holding the full content and metadata for each placeholder.
48
+ // The key is the ID from the placeholder.
49
+ placeholderContent: Record<string, PlaceholderContent>;
50
+ }
@@ -0,0 +1,12 @@
1
+ // Re-export all types from organized modules
2
+ export * from '@/types/core';
3
+ export * from '@/types/config';
4
+ export * from '@/types/mcp';
5
+ export * from '@/types/commands';
6
+ export * from '@/types/ui';
7
+ export * from '@/types/app';
8
+ export * from '@/types/utils';
9
+ export * from '@/types/components';
10
+ export * from '@/types/hooks';
11
+ export * from '@/types/system';
12
+ export * from '@/types/checkpoint';
@@ -0,0 +1,11 @@
1
+ // Color scheme for terminal output
2
+ export interface Colors {
3
+ primary: string;
4
+ secondary: string;
5
+ success: string;
6
+ error: string;
7
+ warning: string;
8
+ info: string;
9
+ white: string;
10
+ tool: string;
11
+ }
@@ -0,0 +1,52 @@
1
+ export type MCPTransportType = 'stdio' | 'websocket' | 'http';
2
+
3
+ export interface MCPAuthConfig {
4
+ type: 'bearer' | 'basic' | 'api-key' | 'custom';
5
+ token?: string;
6
+ username?: string;
7
+ password?: string;
8
+ apiKey?: string;
9
+ customHeaders?: Record<string, string>;
10
+ }
11
+
12
+ export interface MCPServer {
13
+ name: string;
14
+ transport: MCPTransportType;
15
+
16
+ // STDIO-specific fields
17
+ command?: string;
18
+ args?: string[];
19
+ env?: Record<string, string>;
20
+
21
+ // Remote transport-specific fields
22
+ url?: string;
23
+ headers?: Record<string, string>;
24
+ auth?: MCPAuthConfig;
25
+ timeout?: number;
26
+ reconnect?: {
27
+ enabled: boolean;
28
+ maxAttempts: number;
29
+ backoffMs: number;
30
+ };
31
+
32
+ // Common fields
33
+ description?: string;
34
+ tags?: string[];
35
+ enabled?: boolean;
36
+ }
37
+
38
+ export interface MCPTool {
39
+ name: string;
40
+ description?: string;
41
+ // JSON Schema for tool input - intentionally flexible
42
+ // biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required
43
+ inputSchema?: any;
44
+ serverName: string;
45
+ }
46
+
47
+ export interface MCPInitResult {
48
+ serverName: string;
49
+ success: boolean;
50
+ toolCount?: number;
51
+ error?: string;
52
+ }
@@ -0,0 +1,16 @@
1
+ export interface ModelEntry {
2
+ id: string; // OpenRouter model ID (e.g., "openai/gpt-4")
3
+ name: string; // Display name
4
+ author: string; // Model creator/organization (e.g., "Meta", "Anthropic", "Qwen")
5
+ size: string; // Context length formatted (e.g., "128K", "1M")
6
+ local: boolean; // Open weights - can be run locally
7
+ api: boolean; // Available via hosted API (OpenRouter, etc.)
8
+ contextLength: number; // Raw context length in tokens
9
+ created: number; // Unix timestamp of model creation
10
+ quality: {
11
+ cost: number; // Cost-effectiveness (10 = free/cheap, 1 = very expensive)
12
+ };
13
+ costType: 'free' | 'paid';
14
+ costDetails: string; // e.g., "$1.25/M in, $5.00/M out"
15
+ hasToolSupport: boolean; // Whether model supports tool/function calling
16
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Tokenizer interface and types
3
+ */
4
+
5
+ import type {Message} from '@/types/core';
6
+
7
+ /**
8
+ * Tokenizer interface for encoding text and counting tokens
9
+ */
10
+ export interface Tokenizer {
11
+ /**
12
+ * Encode text and return token count
13
+ */
14
+ encode(text: string): number;
15
+
16
+ /**
17
+ * Count tokens in a message (content + role)
18
+ */
19
+ countTokens(message: Message): number;
20
+
21
+ /**
22
+ * Get the tokenizer name/type
23
+ */
24
+ getName(): string;
25
+
26
+ /**
27
+ * Optional cleanup method for releasing resources
28
+ * Should be called when the tokenizer is no longer needed
29
+ */
30
+ free?(): void;
31
+ }
32
+
33
+ /**
34
+ * Provider types for tokenizer selection
35
+ */
36
+ export type TokenizerProvider =
37
+ | 'openai'
38
+ | 'anthropic'
39
+ | 'llama'
40
+ | 'fallback'
41
+ | 'auto';
@@ -0,0 +1,40 @@
1
+ export interface Colors {
2
+ white: string;
3
+ black: string;
4
+ primary: string;
5
+ tool: string;
6
+ secondary: string;
7
+ success: string;
8
+ error: string;
9
+ info: string;
10
+ warning: string;
11
+ // Diff highlight colors
12
+ diffAdded: string;
13
+ diffRemoved: string;
14
+ diffAddedText: string;
15
+ diffRemovedText: string;
16
+ }
17
+
18
+ export interface Theme {
19
+ name: string;
20
+ displayName: string;
21
+ colors: Colors;
22
+ }
23
+
24
+ export type ThemePreset =
25
+ | 'tokyo-night'
26
+ | 'synthwave-84'
27
+ | 'forest-night'
28
+ | 'material-ocean'
29
+ | 'sunset-glow'
30
+ | 'nord-frost'
31
+ | 'rose-pine-dawn'
32
+ | 'neon-jungle'
33
+ | 'midnight-amethyst'
34
+ | 'desert-mirage'
35
+ | 'cherry-blossom'
36
+ | 'electric-storm'
37
+ | 'deep-sea'
38
+ | 'volcanic-ash'
39
+ | 'cyberpunk-mint'
40
+ | 'dracula';
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Token breakdown by category
3
+ */
4
+ export interface TokenBreakdown {
5
+ system: number;
6
+ userMessages: number;
7
+ assistantMessages: number;
8
+ toolDefinitions: number;
9
+ toolResults: number;
10
+ total: number;
11
+ }
12
+
13
+ /**
14
+ * Session usage data
15
+ */
16
+ export interface SessionUsage {
17
+ id: string;
18
+ timestamp: number;
19
+ provider: string;
20
+ model: string;
21
+ tokens: TokenBreakdown;
22
+ messageCount: number;
23
+ duration?: number; // Session duration in milliseconds
24
+ }
25
+
26
+ /**
27
+ * Daily aggregate usage
28
+ */
29
+ export interface DailyAggregate {
30
+ date: string; // YYYY-MM-DD format
31
+ sessions: number;
32
+ totalTokens: number;
33
+ providers: Record<string, number>; // Provider name -> token count
34
+ models: Record<string, number>; // Model name -> token count
35
+ }
36
+
37
+ /**
38
+ * Persistent usage data structure
39
+ */
40
+ export interface UsageData {
41
+ sessions: SessionUsage[]; // Last 100 sessions
42
+ dailyAggregates: DailyAggregate[]; // Last 30 days
43
+ totalLifetime: number;
44
+ lastUpdated: number;
45
+ }
46
+
47
+ /**
48
+ * Current session statistics
49
+ */
50
+ export interface CurrentSessionStats {
51
+ tokens: TokenBreakdown;
52
+ messageCount: number;
53
+ startTime: number;
54
+ provider: string;
55
+ model: string;
56
+ contextLimit: number | null;
57
+ percentUsed: number;
58
+ }
@@ -0,0 +1,16 @@
1
+ export type MessageType = 'info' | 'error' | 'success' | 'warning';
2
+
3
+ export interface NpmRegistryResponse {
4
+ version: string;
5
+ name: string;
6
+ [key: string]: unknown;
7
+ }
8
+
9
+ export interface UpdateInfo {
10
+ hasUpdate: boolean;
11
+ currentVersion: string;
12
+ latestVersion?: string;
13
+ updateCommand?: string;
14
+ updateMessage?: string;
15
+ error?: string;
16
+ }