@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,573 @@
1
+ import test from 'ava';
2
+ import {createLogMethod, createLogMethods} from './log-method-factory.js';
3
+
4
+ // Mock logger for testing
5
+ class MockLogger {
6
+ private logs: Array<{level: string; args: unknown[]}> = [];
7
+
8
+ fatal(...args: unknown[]) {
9
+ this.logs.push({level: 'fatal', args});
10
+ }
11
+
12
+ error(...args: unknown[]) {
13
+ this.logs.push({level: 'error', args});
14
+ }
15
+
16
+ warn(...args: unknown[]) {
17
+ this.logs.push({level: 'warn', args});
18
+ }
19
+
20
+ info(...args: unknown[]) {
21
+ this.logs.push({level: 'info', args});
22
+ }
23
+
24
+ http(...args: unknown[]) {
25
+ this.logs.push({level: 'http', args});
26
+ }
27
+
28
+ debug(...args: unknown[]) {
29
+ this.logs.push({level: 'debug', args});
30
+ }
31
+
32
+ trace(...args: unknown[]) {
33
+ this.logs.push({level: 'trace', args});
34
+ }
35
+
36
+ getLogs() {
37
+ return this.logs;
38
+ }
39
+
40
+ clear() {
41
+ this.logs = [];
42
+ }
43
+ }
44
+
45
+ // Test createLogMethod function
46
+ // ============================================================================
47
+
48
+ test('createLogMethod creates function that logs messages', t => {
49
+ const mockLogger = new MockLogger();
50
+ const logMethod = createLogMethod(mockLogger, 'info');
51
+
52
+ t.truthy(logMethod);
53
+ t.is(typeof logMethod, 'function');
54
+ });
55
+
56
+ test('createLogMethod handles string-first signature', t => {
57
+ const mockLogger = new MockLogger();
58
+ const logMethod = createLogMethod(mockLogger, 'info');
59
+
60
+ logMethod('test message', {key: 'value'});
61
+
62
+ const logs = mockLogger.getLogs();
63
+ t.is(logs.length, 1);
64
+ t.is(logs[0].level, 'info');
65
+ });
66
+
67
+ test('createLogMethod handles object-first signature', t => {
68
+ const mockLogger = new MockLogger();
69
+ const logMethod = createLogMethod(mockLogger, 'info');
70
+
71
+ logMethod({key: 'value'}, 'test message');
72
+
73
+ const logs = mockLogger.getLogs();
74
+ t.is(logs.length, 1);
75
+ t.is(logs[0].level, 'info');
76
+ });
77
+
78
+ test('createLogMethod with contextPrefix adds prefix to messages', t => {
79
+ const mockLogger = new MockLogger();
80
+ const logMethod = createLogMethod(mockLogger, 'info', {
81
+ contextPrefix: 'TEST',
82
+ });
83
+
84
+ logMethod('test message');
85
+
86
+ const logs = mockLogger.getLogs();
87
+ t.is(logs.length, 1);
88
+ t.true(String(logs[0].args[0]).includes('[TEST]'));
89
+ });
90
+
91
+ test('createLogMethod with consolePrefix handles console logger', t => {
92
+ const originalConsole = console.info;
93
+ let consoleCalled = false;
94
+ console.info = (...args: unknown[]) => {
95
+ consoleCalled = true;
96
+ originalConsole(...args);
97
+ };
98
+
99
+ const logMethod = createLogMethod(console, 'info', {consolePrefix: 'TEST'});
100
+
101
+ logMethod('test message');
102
+
103
+ t.true(consoleCalled);
104
+
105
+ // Restore console
106
+ console.info = originalConsole;
107
+ });
108
+
109
+ test('createLogMethod with transformArgs transforms arguments', t => {
110
+ const mockLogger = new MockLogger();
111
+ const transformArgs = (args: unknown[]) => [args[0], 'transformed'];
112
+
113
+ const logMethod = createLogMethod(mockLogger, 'info', {transformArgs});
114
+
115
+ logMethod('test message', 'original');
116
+
117
+ const logs = mockLogger.getLogs();
118
+ t.is(logs.length, 1);
119
+ t.true(logs[0].args.includes('transformed'));
120
+ });
121
+
122
+ test('createLogMethod with transformResult transforms result', t => {
123
+ const mockLogger = new MockLogger();
124
+ let transformCalled = false;
125
+ const transformResult = () => {
126
+ transformCalled = true;
127
+ };
128
+
129
+ const logMethod = createLogMethod(mockLogger, 'info', {transformResult});
130
+
131
+ logMethod('test message');
132
+
133
+ t.true(transformCalled);
134
+ });
135
+
136
+ test('createLogMethod handles logger without level method gracefully', t => {
137
+ const mockLogger = {info: undefined};
138
+ const logMethod = createLogMethod(mockLogger, 'info');
139
+
140
+ // Should not throw
141
+ logMethod('test message');
142
+ t.pass();
143
+ });
144
+
145
+ test('createLogMethod handles logger method errors with fallback', t => {
146
+ const mockLogger = {
147
+ info: () => {
148
+ throw new Error('Mock error');
149
+ },
150
+ };
151
+
152
+ const originalConsole = console.info;
153
+ let consoleCalled = false;
154
+ console.info = (...args: unknown[]) => {
155
+ consoleCalled = true;
156
+ originalConsole(...args);
157
+ };
158
+
159
+ const logMethod = createLogMethod(mockLogger, 'info');
160
+
161
+ // Should fallback to console
162
+ logMethod('test message');
163
+
164
+ t.true(consoleCalled);
165
+
166
+ // Restore console
167
+ console.info = originalConsole;
168
+ });
169
+
170
+ // Test createLogMethods function
171
+ // ============================================================================
172
+
173
+ test('createLogMethods creates all standard log methods', t => {
174
+ const mockLogger = new MockLogger();
175
+ const logMethods = createLogMethods(mockLogger);
176
+
177
+ t.truthy(logMethods);
178
+ t.is(typeof logMethods.fatal, 'function');
179
+ t.is(typeof logMethods.error, 'function');
180
+ t.is(typeof logMethods.warn, 'function');
181
+ t.is(typeof logMethods.info, 'function');
182
+ t.is(typeof logMethods.http, 'function');
183
+ t.is(typeof logMethods.debug, 'function');
184
+ t.is(typeof logMethods.trace, 'function');
185
+ });
186
+
187
+ test('createLogMethods with contextPrefix adds prefix to all methods', t => {
188
+ const mockLogger = new MockLogger();
189
+ const logMethods = createLogMethods(mockLogger, {contextPrefix: 'TEST'});
190
+
191
+ logMethods.info('info message');
192
+ logMethods.error('error message');
193
+ logMethods.warn('warn message');
194
+
195
+ const logs = mockLogger.getLogs();
196
+ t.is(logs.length, 3);
197
+ t.true(String(logs[0].args[0]).includes('[INFO]'));
198
+ t.true(String(logs[1].args[0]).includes('[ERROR]'));
199
+ t.true(String(logs[2].args[0]).includes('[WARN]'));
200
+ });
201
+
202
+ test('createLogMethods with transformArgs transforms arguments for all methods', t => {
203
+ const mockLogger = new MockLogger();
204
+ const transformArgs = (args: unknown[], level?: string) => [level, ...args];
205
+
206
+ const logMethods = createLogMethods(mockLogger, {transformArgs});
207
+
208
+ logMethods.info('info message');
209
+ logMethods.error('error message');
210
+
211
+ const logs = mockLogger.getLogs();
212
+ t.is(logs.length, 2);
213
+ t.true(logs[0].args.includes('info'));
214
+ t.true(logs[1].args.includes('error'));
215
+ });
216
+
217
+ test('createLogMethods with transformResult transforms result for all methods', t => {
218
+ const mockLogger = new MockLogger();
219
+ let transformCount = 0;
220
+ const transformResult = () => {
221
+ transformCount++;
222
+ };
223
+
224
+ const logMethods = createLogMethods(mockLogger, {transformResult});
225
+
226
+ logMethods.info('info message');
227
+ logMethods.error('error message');
228
+ logMethods.warn('warn message');
229
+
230
+ t.is(transformCount, 3);
231
+ });
232
+
233
+ test('createLogMethods handles console logger with consolePrefix', t => {
234
+ const originalConsole = console.info;
235
+ let consoleInfoCalled = false;
236
+ console.info = (...args: unknown[]) => {
237
+ consoleInfoCalled = true;
238
+ originalConsole(...args);
239
+ };
240
+
241
+ const logMethods = createLogMethods(console, {consolePrefix: 'TEST'});
242
+
243
+ logMethods.info('test message');
244
+
245
+ t.true(consoleInfoCalled);
246
+
247
+ // Restore console
248
+ console.info = originalConsole;
249
+ });
250
+
251
+ // Test different log levels
252
+ // ============================================================================
253
+
254
+ test('createLogMethod creates fatal level method', t => {
255
+ const mockLogger = new MockLogger();
256
+ const logMethod = createLogMethod(mockLogger, 'fatal');
257
+
258
+ logMethod('fatal message');
259
+
260
+ const logs = mockLogger.getLogs();
261
+ t.is(logs.length, 1);
262
+ t.is(logs[0].level, 'fatal');
263
+ });
264
+
265
+ test('createLogMethod creates error level method', t => {
266
+ const mockLogger = new MockLogger();
267
+ const logMethod = createLogMethod(mockLogger, 'error');
268
+
269
+ logMethod('error message');
270
+
271
+ const logs = mockLogger.getLogs();
272
+ t.is(logs.length, 1);
273
+ t.is(logs[0].level, 'error');
274
+ });
275
+
276
+ test('createLogMethod creates warn level method', t => {
277
+ const mockLogger = new MockLogger();
278
+ const logMethod = createLogMethod(mockLogger, 'warn');
279
+
280
+ logMethod('warn message');
281
+
282
+ const logs = mockLogger.getLogs();
283
+ t.is(logs.length, 1);
284
+ t.is(logs[0].level, 'warn');
285
+ });
286
+
287
+ test('createLogMethod creates debug level method', t => {
288
+ const mockLogger = new MockLogger();
289
+ const logMethod = createLogMethod(mockLogger, 'debug');
290
+
291
+ logMethod('debug message');
292
+
293
+ const logs = mockLogger.getLogs();
294
+ t.is(logs.length, 1);
295
+ t.is(logs[0].level, 'debug');
296
+ });
297
+
298
+ test('createLogMethod creates trace level method', t => {
299
+ const mockLogger = new MockLogger();
300
+ const logMethod = createLogMethod(mockLogger, 'trace');
301
+
302
+ logMethod('trace message');
303
+
304
+ const logs = mockLogger.getLogs();
305
+ t.is(logs.length, 1);
306
+ t.is(logs[0].level, 'trace');
307
+ });
308
+
309
+ test('createLogMethod creates http level method', t => {
310
+ const mockLogger = new MockLogger();
311
+ const logMethod = createLogMethod(mockLogger, 'http');
312
+
313
+ logMethod('http message');
314
+
315
+ const logs = mockLogger.getLogs();
316
+ t.is(logs.length, 1);
317
+ t.is(logs[0].level, 'http');
318
+ });
319
+
320
+ // Test edge cases
321
+ // ============================================================================
322
+
323
+ test('createLogMethod handles empty message', t => {
324
+ const mockLogger = new MockLogger();
325
+ const logMethod = createLogMethod(mockLogger, 'info');
326
+
327
+ // Should not throw
328
+ logMethod('');
329
+ t.pass();
330
+ });
331
+
332
+ test('createLogMethod handles null object', t => {
333
+ const mockLogger = new MockLogger();
334
+ const logMethod = createLogMethod(mockLogger, 'info');
335
+
336
+ // Should not throw
337
+ logMethod(null as any, 'message');
338
+ t.pass();
339
+ });
340
+
341
+ test('createLogMethod handles undefined arguments', t => {
342
+ const mockLogger = new MockLogger();
343
+ const logMethod = createLogMethod(mockLogger, 'info');
344
+
345
+ // Should not throw
346
+ logMethod('message', undefined);
347
+ t.pass();
348
+ });
349
+
350
+ test('createLogMethod handles complex objects', t => {
351
+ const mockLogger = new MockLogger();
352
+ const logMethod = createLogMethod(mockLogger, 'info');
353
+
354
+ const complexObj = {
355
+ nested: {
356
+ deep: {
357
+ value: 'test',
358
+ },
359
+ },
360
+ array: [1, 2, 3],
361
+ func: () => 'test',
362
+ };
363
+
364
+ // Should not throw
365
+ logMethod(complexObj, 'complex object');
366
+ t.pass();
367
+ });
368
+
369
+ // Test console fallback for trace level
370
+ // ============================================================================
371
+
372
+ test('createLogMethod falls back to console.log for trace level', t => {
373
+ const mockLogger = {
374
+ trace: () => {
375
+ throw new Error('Trace not supported');
376
+ },
377
+ };
378
+
379
+ const originalConsole = console.log;
380
+ let consoleCalled = false;
381
+ console.log = (...args: unknown[]) => {
382
+ consoleCalled = true;
383
+ originalConsole(...args);
384
+ };
385
+
386
+ const logMethod = createLogMethod(mockLogger, 'trace');
387
+
388
+ logMethod('trace message');
389
+
390
+ t.true(consoleCalled);
391
+
392
+ // Restore console
393
+ console.log = originalConsole;
394
+ });
395
+
396
+ // Test method signature compatibility
397
+ // ============================================================================
398
+
399
+ test('createLogMethod supports both string-first and object-first signatures', t => {
400
+ const mockLogger = new MockLogger();
401
+ const logMethod = createLogMethod(mockLogger, 'info');
402
+
403
+ // String-first signature
404
+ logMethod('message', {key: 'value'});
405
+
406
+ // Object-first signature
407
+ logMethod({key: 'value'}, 'message');
408
+
409
+ const logs = mockLogger.getLogs();
410
+ t.is(logs.length, 2);
411
+ });
412
+
413
+ // Test error handling in transform functions
414
+ // ============================================================================
415
+
416
+ test('createLogMethod handles errors in transformArgs gracefully', t => {
417
+ const mockLogger = new MockLogger();
418
+ const transformArgs = () => {
419
+ throw new Error('Transform error');
420
+ };
421
+
422
+ const logMethod = createLogMethod(mockLogger, 'info', {transformArgs});
423
+
424
+ // Should not throw
425
+ logMethod('test message');
426
+ t.pass();
427
+ });
428
+
429
+ test('createLogMethod handles errors in transformResult gracefully', t => {
430
+ const mockLogger = new MockLogger();
431
+ const transformResult = () => {
432
+ throw new Error('Transform error');
433
+ };
434
+
435
+ const logMethod = createLogMethod(mockLogger, 'info', {transformResult});
436
+
437
+ // Should not throw
438
+ logMethod('test message');
439
+ t.pass();
440
+ });
441
+
442
+ // Test console method mapping
443
+ // ============================================================================
444
+
445
+ test('createLogMethod maps trace level to console.log', t => {
446
+ const originalConsole = console.log;
447
+ let consoleCalled = false;
448
+ console.log = (...args: unknown[]) => {
449
+ consoleCalled = true;
450
+ originalConsole(...args);
451
+ };
452
+
453
+ const logMethod = createLogMethod(console, 'trace', {
454
+ consolePrefix: 'TEST',
455
+ consoleMethod: 'log',
456
+ });
457
+
458
+ logMethod('trace message');
459
+
460
+ t.true(consoleCalled);
461
+
462
+ // Restore console
463
+ console.log = originalConsole;
464
+ });
465
+
466
+ test('createLogMethod maps info level to console.info', t => {
467
+ const originalConsole = console.info;
468
+ let consoleCalled = false;
469
+ console.info = (...args: unknown[]) => {
470
+ consoleCalled = true;
471
+ originalConsole(...args);
472
+ };
473
+
474
+ const logMethod = createLogMethod(console, 'info', {consolePrefix: 'TEST'});
475
+
476
+ logMethod('info message');
477
+
478
+ t.true(consoleCalled);
479
+
480
+ // Restore console
481
+ console.info = originalConsole;
482
+ });
483
+
484
+ test('createLogMethod maps error level to console.error', t => {
485
+ const originalConsole = console.error;
486
+ let consoleCalled = false;
487
+ console.error = (...args: unknown[]) => {
488
+ consoleCalled = true;
489
+ originalConsole(...args);
490
+ };
491
+
492
+ const logMethod = createLogMethod(console, 'error', {consolePrefix: 'TEST'});
493
+
494
+ logMethod('error message');
495
+
496
+ t.true(consoleCalled);
497
+
498
+ // Restore console
499
+ console.error = originalConsole;
500
+ });
501
+
502
+ // Test multiple arguments handling
503
+ // ============================================================================
504
+
505
+ test('createLogMethod handles multiple arguments', t => {
506
+ const mockLogger = new MockLogger();
507
+ const logMethod = createLogMethod(mockLogger, 'info');
508
+
509
+ logMethod('message', 'arg1', 'arg2', {key: 'value'});
510
+
511
+ const logs = mockLogger.getLogs();
512
+ t.is(logs.length, 1);
513
+ t.is(logs[0].args.length, 4); // message + 3 args
514
+ });
515
+
516
+ test('createLogMethod handles object-first with multiple arguments', t => {
517
+ const mockLogger = new MockLogger();
518
+ const logMethod = createLogMethod(mockLogger, 'info');
519
+
520
+ logMethod('message', {key: 'value'}, 'arg1', 'arg2');
521
+
522
+ const logs = mockLogger.getLogs();
523
+ t.is(logs.length, 1);
524
+ });
525
+
526
+ // Test type safety
527
+ // ============================================================================
528
+
529
+ test('createLogMethod returns function with correct type signature', t => {
530
+ const mockLogger = new MockLogger();
531
+ const logMethod = createLogMethod(mockLogger, 'info');
532
+
533
+ // Should accept string-first signature
534
+ logMethod('message');
535
+ logMethod('message', {key: 'value'});
536
+
537
+ // Should accept object-first signature
538
+ logMethod({key: 'value'});
539
+ logMethod({key: 'value'}, 'message');
540
+
541
+ t.pass();
542
+ });
543
+
544
+ // Test console method override
545
+ // ============================================================================
546
+
547
+ test('createLogMethod uses specified consoleMethod', t => {
548
+ const originalConsole = console.warn;
549
+ let consoleCalled = false;
550
+ console.warn = (...args: unknown[]) => {
551
+ consoleCalled = true;
552
+ originalConsole(...args);
553
+ };
554
+
555
+ const logMethod = createLogMethod(console, 'info', {
556
+ consolePrefix: 'TEST',
557
+ consoleMethod: 'warn',
558
+ });
559
+
560
+ logMethod('info message');
561
+
562
+ t.true(consoleCalled);
563
+
564
+ // Restore console
565
+ console.warn = originalConsole;
566
+ });
567
+
568
+ // Cleanup
569
+ // ============================================================================
570
+
571
+ test.after('cleanup mock logger', t => {
572
+ // Any cleanup if needed
573
+ });