@nanocollective/nanocoder 1.17.3 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (688) hide show
  1. package/README.md +178 -13
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/ai-sdk-client-empty-message.spec.d.ts +2 -0
  4. package/dist/ai-sdk-client-empty-message.spec.d.ts.map +1 -0
  5. package/dist/ai-sdk-client-empty-message.spec.js +124 -0
  6. package/dist/ai-sdk-client-empty-message.spec.js.map +1 -0
  7. package/dist/ai-sdk-client.d.ts +19 -3
  8. package/dist/ai-sdk-client.d.ts.map +1 -1
  9. package/dist/ai-sdk-client.js +359 -211
  10. package/dist/ai-sdk-client.js.map +1 -1
  11. package/dist/app/utils/appUtils.d.ts +1 -1
  12. package/dist/app/utils/appUtils.d.ts.map +1 -1
  13. package/dist/app/utils/appUtils.js +80 -14
  14. package/dist/app/utils/appUtils.js.map +1 -1
  15. package/dist/app.d.ts +22 -1
  16. package/dist/app.d.ts.map +1 -1
  17. package/dist/app.js +369 -53
  18. package/dist/app.js.map +1 -1
  19. package/dist/cli.js +37 -2
  20. package/dist/cli.js.map +1 -1
  21. package/dist/cli.spec.d.ts +2 -0
  22. package/dist/cli.spec.d.ts.map +1 -0
  23. package/dist/cli.spec.js +101 -0
  24. package/dist/cli.spec.js.map +1 -0
  25. package/dist/client-factory.d.ts.map +1 -1
  26. package/dist/client-factory.js +2 -2
  27. package/dist/client-factory.js.map +1 -1
  28. package/dist/commands/checkpoint.d.ts +6 -0
  29. package/dist/commands/checkpoint.d.ts.map +1 -0
  30. package/dist/commands/checkpoint.js +277 -0
  31. package/dist/commands/checkpoint.js.map +1 -0
  32. package/dist/commands/clear.d.ts.map +1 -1
  33. package/dist/commands/clear.js +1 -1
  34. package/dist/commands/clear.js.map +1 -1
  35. package/dist/commands/custom-commands.d.ts.map +1 -1
  36. package/dist/commands/custom-commands.js +4 -4
  37. package/dist/commands/custom-commands.js.map +1 -1
  38. package/dist/commands/exit.d.ts.map +1 -1
  39. package/dist/commands/exit.js.map +1 -1
  40. package/dist/commands/export.d.ts.map +1 -1
  41. package/dist/commands/export.js +2 -2
  42. package/dist/commands/export.js.map +1 -1
  43. package/dist/commands/help.d.ts.map +1 -1
  44. package/dist/commands/help.js +5 -5
  45. package/dist/commands/help.js.map +1 -1
  46. package/dist/commands/index.d.ts +2 -2
  47. package/dist/commands/index.d.ts.map +1 -1
  48. package/dist/commands/index.js +2 -2
  49. package/dist/commands/index.js.map +1 -1
  50. package/dist/commands/init.d.ts.map +1 -1
  51. package/dist/commands/init.js +15 -14
  52. package/dist/commands/init.js.map +1 -1
  53. package/dist/commands/lsp.d.ts.map +1 -1
  54. package/dist/commands/lsp.js +6 -6
  55. package/dist/commands/lsp.js.map +1 -1
  56. package/dist/commands/mcp.d.ts +1 -1
  57. package/dist/commands/mcp.d.ts.map +1 -1
  58. package/dist/commands/mcp.js +6 -6
  59. package/dist/commands/mcp.js.map +1 -1
  60. package/dist/commands/model-database.d.ts +8 -0
  61. package/dist/commands/model-database.d.ts.map +1 -0
  62. package/dist/commands/model-database.js +193 -0
  63. package/dist/commands/model-database.js.map +1 -0
  64. package/dist/commands/model.d.ts.map +1 -1
  65. package/dist/commands/model.js.map +1 -1
  66. package/dist/commands/provider.d.ts.map +1 -1
  67. package/dist/commands/provider.js.map +1 -1
  68. package/dist/commands/setup-config.js +1 -1
  69. package/dist/commands/setup-config.js.map +1 -1
  70. package/dist/commands/status.d.ts.map +1 -1
  71. package/dist/commands/status.js.map +1 -1
  72. package/dist/commands/theme.d.ts.map +1 -1
  73. package/dist/commands/theme.js.map +1 -1
  74. package/dist/commands/update.d.ts.map +1 -1
  75. package/dist/commands/update.js +5 -5
  76. package/dist/commands/update.js.map +1 -1
  77. package/dist/commands/usage.d.ts.map +1 -1
  78. package/dist/commands/usage.js +4 -4
  79. package/dist/commands/usage.js.map +1 -1
  80. package/dist/commands.d.ts.map +1 -1
  81. package/dist/commands.js +1 -1
  82. package/dist/commands.js.map +1 -1
  83. package/dist/components/assistant-message.d.ts.map +1 -1
  84. package/dist/components/assistant-message.js +5 -4
  85. package/dist/components/assistant-message.js.map +1 -1
  86. package/dist/components/bash-execution-indicator.d.ts.map +1 -1
  87. package/dist/components/bash-execution-indicator.js +2 -2
  88. package/dist/components/bash-execution-indicator.js.map +1 -1
  89. package/dist/components/cancelling-indicator.js +3 -3
  90. package/dist/components/cancelling-indicator.js.map +1 -1
  91. package/dist/components/chat-queue.d.ts.map +1 -1
  92. package/dist/components/chat-queue.js +1 -1
  93. package/dist/components/chat-queue.js.map +1 -1
  94. package/dist/components/checkpoint-display.d.ts +8 -0
  95. package/dist/components/checkpoint-display.d.ts.map +1 -0
  96. package/dist/components/checkpoint-display.js +29 -0
  97. package/dist/components/checkpoint-display.js.map +1 -0
  98. package/dist/components/checkpoint-selector.d.ts +11 -0
  99. package/dist/components/checkpoint-selector.d.ts.map +1 -0
  100. package/dist/components/checkpoint-selector.js +55 -0
  101. package/dist/components/checkpoint-selector.js.map +1 -0
  102. package/dist/components/error-message.d.ts.map +1 -1
  103. package/dist/components/error-message.js +4 -4
  104. package/dist/components/error-message.js.map +1 -1
  105. package/dist/components/info-message.d.ts.map +1 -1
  106. package/dist/components/info-message.js +4 -4
  107. package/dist/components/info-message.js.map +1 -1
  108. package/dist/components/model-selector.d.ts.map +1 -1
  109. package/dist/components/model-selector.js +7 -7
  110. package/dist/components/model-selector.js.map +1 -1
  111. package/dist/components/provider-selector.d.ts.map +1 -1
  112. package/dist/components/provider-selector.js +6 -6
  113. package/dist/components/provider-selector.js.map +1 -1
  114. package/dist/components/security-disclaimer.d.ts.map +1 -1
  115. package/dist/components/security-disclaimer.js +4 -4
  116. package/dist/components/security-disclaimer.js.map +1 -1
  117. package/dist/components/status.d.ts +5 -0
  118. package/dist/components/status.d.ts.map +1 -1
  119. package/dist/components/status.js +36 -7
  120. package/dist/components/status.js.map +1 -1
  121. package/dist/components/success-message.d.ts.map +1 -1
  122. package/dist/components/success-message.js +4 -4
  123. package/dist/components/success-message.js.map +1 -1
  124. package/dist/components/theme-selector.d.ts.map +1 -1
  125. package/dist/components/theme-selector.js +8 -8
  126. package/dist/components/theme-selector.js.map +1 -1
  127. package/dist/components/tool-confirmation.d.ts.map +1 -1
  128. package/dist/components/tool-confirmation.js +7 -7
  129. package/dist/components/tool-confirmation.js.map +1 -1
  130. package/dist/components/tool-execution-indicator.d.ts.map +1 -1
  131. package/dist/components/tool-execution-indicator.js +2 -2
  132. package/dist/components/tool-execution-indicator.js.map +1 -1
  133. package/dist/components/tool-message.d.ts.map +1 -1
  134. package/dist/components/tool-message.js +4 -5
  135. package/dist/components/tool-message.js.map +1 -1
  136. package/dist/components/ui/titled-box.d.ts +16 -0
  137. package/dist/components/ui/titled-box.d.ts.map +1 -0
  138. package/dist/components/ui/titled-box.js +10 -0
  139. package/dist/components/ui/titled-box.js.map +1 -0
  140. package/dist/components/usage/progress-bar.d.ts.map +1 -1
  141. package/dist/components/usage/progress-bar.js +3 -0
  142. package/dist/components/usage/progress-bar.js.map +1 -1
  143. package/dist/components/usage/usage-display.d.ts.map +1 -1
  144. package/dist/components/usage/usage-display.js +7 -4
  145. package/dist/components/usage/usage-display.js.map +1 -1
  146. package/dist/components/user-input.d.ts.map +1 -1
  147. package/dist/components/user-input.js +9 -8
  148. package/dist/components/user-input.js.map +1 -1
  149. package/dist/components/user-message.d.ts.map +1 -1
  150. package/dist/components/user-message.js +1 -1
  151. package/dist/components/user-message.js.map +1 -1
  152. package/dist/components/vscode-extension-prompt.js +3 -3
  153. package/dist/components/vscode-extension-prompt.js.map +1 -1
  154. package/dist/components/warning-message.d.ts.map +1 -1
  155. package/dist/components/warning-message.js +4 -4
  156. package/dist/components/warning-message.js.map +1 -1
  157. package/dist/components/welcome-message.d.ts.map +1 -1
  158. package/dist/components/welcome-message.js +4 -4
  159. package/dist/components/welcome-message.js.map +1 -1
  160. package/dist/config/index.d.ts.map +1 -1
  161. package/dist/config/index.js +7 -7
  162. package/dist/config/index.js.map +1 -1
  163. package/dist/config/index.spec.js +4 -4
  164. package/dist/config/index.spec.js.map +1 -1
  165. package/dist/config/paths.spec.js +1 -1
  166. package/dist/config/paths.spec.js.map +1 -1
  167. package/dist/config/preferences.d.ts +0 -2
  168. package/dist/config/preferences.d.ts.map +1 -1
  169. package/dist/config/preferences.js +1 -11
  170. package/dist/config/preferences.js.map +1 -1
  171. package/dist/context/mode-context.d.ts +12 -0
  172. package/dist/context/mode-context.d.ts.map +1 -0
  173. package/dist/context/mode-context.js +21 -0
  174. package/dist/context/mode-context.js.map +1 -0
  175. package/dist/context/mode-context.spec.d.ts +2 -0
  176. package/dist/context/mode-context.spec.d.ts.map +1 -0
  177. package/dist/context/mode-context.spec.js +61 -0
  178. package/dist/context/mode-context.spec.js.map +1 -0
  179. package/dist/custom-commands/executor.d.ts.map +1 -1
  180. package/dist/custom-commands/executor.js.map +1 -1
  181. package/dist/custom-commands/loader.d.ts.map +1 -1
  182. package/dist/custom-commands/loader.js +1 -1
  183. package/dist/custom-commands/loader.js.map +1 -1
  184. package/dist/custom-commands/parser.d.ts.map +1 -1
  185. package/dist/custom-commands/parser.js.map +1 -1
  186. package/dist/hooks/useAppInitialization.d.ts +9 -5
  187. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  188. package/dist/hooks/useAppInitialization.js +119 -45
  189. package/dist/hooks/useAppInitialization.js.map +1 -1
  190. package/dist/hooks/useAppState.d.ts +28 -9
  191. package/dist/hooks/useAppState.d.ts.map +1 -1
  192. package/dist/hooks/useAppState.js +28 -8
  193. package/dist/hooks/useAppState.js.map +1 -1
  194. package/dist/hooks/useChatHandler.d.ts +5 -3
  195. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  196. package/dist/hooks/useChatHandler.js +218 -118
  197. package/dist/hooks/useChatHandler.js.map +1 -1
  198. package/dist/hooks/useDirectoryTrust.js +1 -1
  199. package/dist/hooks/useDirectoryTrust.js.map +1 -1
  200. package/dist/hooks/useInputState.js +2 -2
  201. package/dist/hooks/useInputState.js.map +1 -1
  202. package/dist/hooks/useModeHandlers.d.ts +5 -5
  203. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  204. package/dist/hooks/useModeHandlers.js +12 -12
  205. package/dist/hooks/useModeHandlers.js.map +1 -1
  206. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  207. package/dist/hooks/useTerminalWidth.js +3 -3
  208. package/dist/hooks/useTerminalWidth.js.map +1 -1
  209. package/dist/hooks/useTheme.d.ts.map +1 -1
  210. package/dist/hooks/useTheme.js +1 -1
  211. package/dist/hooks/useTheme.js.map +1 -1
  212. package/dist/hooks/useToolHandler.d.ts +1 -1
  213. package/dist/hooks/useToolHandler.d.ts.map +1 -1
  214. package/dist/hooks/useToolHandler.js +4 -4
  215. package/dist/hooks/useToolHandler.js.map +1 -1
  216. package/dist/hooks/useUIState.d.ts +1 -1
  217. package/dist/hooks/useUIState.d.ts.map +1 -1
  218. package/dist/hooks/useUIState.js.map +1 -1
  219. package/dist/hooks/useVSCodeServer.js +2 -2
  220. package/dist/hooks/useVSCodeServer.js.map +1 -1
  221. package/dist/init/agents-template-generator.d.ts +1 -1
  222. package/dist/init/agents-template-generator.d.ts.map +1 -1
  223. package/dist/init/agents-template-generator.js.map +1 -1
  224. package/dist/init/existing-rules-extractor.js +1 -1
  225. package/dist/init/existing-rules-extractor.js.map +1 -1
  226. package/dist/init/file-scanner.js +2 -2
  227. package/dist/init/file-scanner.js.map +1 -1
  228. package/dist/init/framework-detector.js +1 -1
  229. package/dist/init/framework-detector.js.map +1 -1
  230. package/dist/init/project-analyzer.d.ts +1 -1
  231. package/dist/init/project-analyzer.d.ts.map +1 -1
  232. package/dist/init/project-analyzer.js +3 -3
  233. package/dist/init/project-analyzer.js.map +1 -1
  234. package/dist/lsp/lsp-client.d.ts +1 -1
  235. package/dist/lsp/lsp-client.d.ts.map +1 -1
  236. package/dist/lsp/lsp-client.js +1 -1
  237. package/dist/lsp/lsp-client.js.map +1 -1
  238. package/dist/lsp/lsp-client.spec.js +1 -2
  239. package/dist/lsp/lsp-client.spec.js.map +1 -1
  240. package/dist/lsp/lsp-manager.d.ts +1 -1
  241. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  242. package/dist/lsp/lsp-manager.js.map +1 -1
  243. package/dist/lsp/lsp-manager.spec.js +1 -1
  244. package/dist/lsp/lsp-manager.spec.js.map +1 -1
  245. package/dist/lsp/protocol.spec.js +1 -1
  246. package/dist/lsp/protocol.spec.js.map +1 -1
  247. package/dist/lsp/server-discovery.spec.js +1 -1
  248. package/dist/lsp/server-discovery.spec.js.map +1 -1
  249. package/dist/markdown-parser/index.spec.js.map +1 -1
  250. package/dist/markdown-parser/table-parser.spec.js.map +1 -1
  251. package/dist/mcp/mcp-client.d.ts +3 -2
  252. package/dist/mcp/mcp-client.d.ts.map +1 -1
  253. package/dist/mcp/mcp-client.js +279 -96
  254. package/dist/mcp/mcp-client.js.map +1 -1
  255. package/dist/mcp/transport-factory.d.ts +1 -1
  256. package/dist/mcp/transport-factory.d.ts.map +1 -1
  257. package/dist/mcp/transport-factory.js +16 -3
  258. package/dist/mcp/transport-factory.js.map +1 -1
  259. package/dist/mcp/transport-factory.spec.js +30 -48
  260. package/dist/mcp/transport-factory.spec.js.map +1 -1
  261. package/dist/message-handler.d.ts +1 -1
  262. package/dist/message-handler.d.ts.map +1 -1
  263. package/dist/message-handler.js +1 -1
  264. package/dist/message-handler.js.map +1 -1
  265. package/dist/model-database/database-engine.d.ts +25 -0
  266. package/dist/model-database/database-engine.d.ts.map +1 -0
  267. package/dist/model-database/database-engine.js +37 -0
  268. package/dist/model-database/database-engine.js.map +1 -0
  269. package/dist/model-database/database-engine.spec.d.ts +2 -0
  270. package/dist/model-database/database-engine.spec.d.ts.map +1 -0
  271. package/dist/model-database/database-engine.spec.js +413 -0
  272. package/dist/model-database/database-engine.spec.js.map +1 -0
  273. package/dist/model-database/model-database.d.ts +30 -0
  274. package/dist/model-database/model-database.d.ts.map +1 -0
  275. package/dist/model-database/model-database.js +82 -0
  276. package/dist/model-database/model-database.js.map +1 -0
  277. package/dist/model-database/model-database.spec.d.ts +2 -0
  278. package/dist/model-database/model-database.spec.d.ts.map +1 -0
  279. package/dist/model-database/model-database.spec.js +322 -0
  280. package/dist/model-database/model-database.spec.js.map +1 -0
  281. package/dist/model-database/model-engine.d.ts +25 -0
  282. package/dist/model-database/model-engine.d.ts.map +1 -0
  283. package/dist/model-database/model-engine.js +49 -0
  284. package/dist/model-database/model-engine.js.map +1 -0
  285. package/dist/model-database/model-engine.spec.d.ts +2 -0
  286. package/dist/model-database/model-engine.spec.d.ts.map +1 -0
  287. package/dist/model-database/model-engine.spec.js +381 -0
  288. package/dist/model-database/model-engine.spec.js.map +1 -0
  289. package/dist/model-database/model-fetcher.d.ts +14 -0
  290. package/dist/model-database/model-fetcher.d.ts.map +1 -0
  291. package/dist/model-database/model-fetcher.js +249 -0
  292. package/dist/model-database/model-fetcher.js.map +1 -0
  293. package/dist/model-database/model-fetcher.spec.d.ts +2 -0
  294. package/dist/model-database/model-fetcher.spec.d.ts.map +1 -0
  295. package/dist/model-database/model-fetcher.spec.js +498 -0
  296. package/dist/model-database/model-fetcher.spec.js.map +1 -0
  297. package/dist/models/models-cache.d.ts +1 -1
  298. package/dist/models/models-cache.d.ts.map +1 -1
  299. package/dist/models/models-cache.js +1 -1
  300. package/dist/models/models-cache.js.map +1 -1
  301. package/dist/models/models-dev-client.d.ts.map +1 -1
  302. package/dist/models/models-dev-client.js +23 -7
  303. package/dist/models/models-dev-client.js.map +1 -1
  304. package/dist/prompt-history.js +2 -2
  305. package/dist/prompt-history.js.map +1 -1
  306. package/dist/services/checkpoint-manager.d.ts +68 -0
  307. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  308. package/dist/services/checkpoint-manager.js +345 -0
  309. package/dist/services/checkpoint-manager.js.map +1 -0
  310. package/dist/services/checkpoint-manager.spec.d.ts +2 -0
  311. package/dist/services/checkpoint-manager.spec.d.ts.map +1 -0
  312. package/dist/services/checkpoint-manager.spec.js +353 -0
  313. package/dist/services/checkpoint-manager.spec.js.map +1 -0
  314. package/dist/services/file-snapshot.d.ts +32 -0
  315. package/dist/services/file-snapshot.d.ts.map +1 -0
  316. package/dist/services/file-snapshot.js +161 -0
  317. package/dist/services/file-snapshot.js.map +1 -0
  318. package/dist/services/file-snapshot.spec.d.ts +2 -0
  319. package/dist/services/file-snapshot.spec.d.ts.map +1 -0
  320. package/dist/services/file-snapshot.spec.js +285 -0
  321. package/dist/services/file-snapshot.spec.js.map +1 -0
  322. package/dist/test-utils/render-with-theme.d.ts +7 -0
  323. package/dist/test-utils/render-with-theme.d.ts.map +1 -0
  324. package/dist/test-utils/render-with-theme.js +38 -0
  325. package/dist/test-utils/render-with-theme.js.map +1 -0
  326. package/dist/tokenization/tokenizer-factory.js +2 -2
  327. package/dist/tokenization/tokenizer-factory.js.map +1 -1
  328. package/dist/tokenization/tokenizer-factory.spec.js +2 -2
  329. package/dist/tokenization/tokenizer-factory.spec.js.map +1 -1
  330. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +1 -1
  331. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -1
  332. package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -1
  333. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -1
  334. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +1 -1
  335. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -1
  336. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -1
  337. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +1 -1
  338. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -1
  339. package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -1
  340. package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -1
  341. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +1 -1
  342. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -1
  343. package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -1
  344. package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -1
  345. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  346. package/dist/tool-calling/json-parser.js +12 -14
  347. package/dist/tool-calling/json-parser.js.map +1 -1
  348. package/dist/tool-calling/json-parser.spec.js +7 -7
  349. package/dist/tool-calling/json-parser.spec.js.map +1 -1
  350. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  351. package/dist/tool-calling/tool-parser.js +38 -10
  352. package/dist/tool-calling/tool-parser.js.map +1 -1
  353. package/dist/tool-calling/tool-parser.spec.js +82 -4
  354. package/dist/tool-calling/tool-parser.spec.js.map +1 -1
  355. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  356. package/dist/tool-calling/xml-parser.js +21 -23
  357. package/dist/tool-calling/xml-parser.js.map +1 -1
  358. package/dist/tool-calling/xml-parser.spec.js +23 -3
  359. package/dist/tool-calling/xml-parser.spec.js.map +1 -1
  360. package/dist/tools/create-file.d.ts +24 -2
  361. package/dist/tools/create-file.d.ts.map +1 -1
  362. package/dist/tools/create-file.js +20 -16
  363. package/dist/tools/create-file.js.map +1 -1
  364. package/dist/tools/delete-lines.d.ts +18 -2
  365. package/dist/tools/delete-lines.d.ts.map +1 -1
  366. package/dist/tools/delete-lines.js +22 -17
  367. package/dist/tools/delete-lines.js.map +1 -1
  368. package/dist/tools/execute-bash.d.ts +2 -2
  369. package/dist/tools/execute-bash.d.ts.map +1 -1
  370. package/dist/tools/execute-bash.js +13 -12
  371. package/dist/tools/execute-bash.js.map +1 -1
  372. package/dist/tools/execute-function.spec.d.ts +2 -0
  373. package/dist/tools/execute-function.spec.d.ts.map +1 -0
  374. package/dist/tools/execute-function.spec.js +141 -0
  375. package/dist/tools/execute-function.spec.js.map +1 -0
  376. package/dist/tools/fetch-url.d.ts +16 -2
  377. package/dist/tools/fetch-url.d.ts.map +1 -1
  378. package/dist/tools/fetch-url.js +13 -13
  379. package/dist/tools/fetch-url.js.map +1 -1
  380. package/dist/tools/find-files.d.ts +18 -2
  381. package/dist/tools/find-files.d.ts.map +1 -1
  382. package/dist/tools/find-files.js +13 -11
  383. package/dist/tools/find-files.js.map +1 -1
  384. package/dist/tools/index.d.ts +2 -3
  385. package/dist/tools/index.d.ts.map +1 -1
  386. package/dist/tools/index.js +35 -25
  387. package/dist/tools/index.js.map +1 -1
  388. package/dist/tools/insert-lines.d.ts +18 -2
  389. package/dist/tools/insert-lines.d.ts.map +1 -1
  390. package/dist/tools/insert-lines.js +21 -16
  391. package/dist/tools/insert-lines.js.map +1 -1
  392. package/dist/tools/lsp-get-diagnostics.d.ts +10 -2
  393. package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
  394. package/dist/tools/lsp-get-diagnostics.js +13 -11
  395. package/dist/tools/lsp-get-diagnostics.js.map +1 -1
  396. package/dist/tools/needs-approval.spec.d.ts +2 -0
  397. package/dist/tools/needs-approval.spec.d.ts.map +1 -0
  398. package/dist/tools/needs-approval.spec.js +308 -0
  399. package/dist/tools/needs-approval.spec.js.map +1 -0
  400. package/dist/tools/read-file.d.ts +2 -2
  401. package/dist/tools/read-file.d.ts.map +1 -1
  402. package/dist/tools/read-file.js +16 -18
  403. package/dist/tools/read-file.js.map +1 -1
  404. package/dist/tools/replace-lines.d.ts +19 -2
  405. package/dist/tools/replace-lines.d.ts.map +1 -1
  406. package/dist/tools/replace-lines.js +21 -16
  407. package/dist/tools/replace-lines.js.map +1 -1
  408. package/dist/tools/search-file-contents.d.ts +20 -2
  409. package/dist/tools/search-file-contents.d.ts.map +1 -1
  410. package/dist/tools/search-file-contents.js +17 -14
  411. package/dist/tools/search-file-contents.js.map +1 -1
  412. package/dist/tools/tool-manager.d.ts +1 -1
  413. package/dist/tools/tool-manager.d.ts.map +1 -1
  414. package/dist/tools/tool-manager.js +1 -1
  415. package/dist/tools/tool-manager.js.map +1 -1
  416. package/dist/tools/tool-registry.d.ts +1 -1
  417. package/dist/tools/tool-registry.d.ts.map +1 -1
  418. package/dist/tools/web-search.d.ts +2 -2
  419. package/dist/tools/web-search.d.ts.map +1 -1
  420. package/dist/tools/web-search.js +14 -14
  421. package/dist/tools/web-search.js.map +1 -1
  422. package/dist/types/app.d.ts +7 -4
  423. package/dist/types/app.d.ts.map +1 -1
  424. package/dist/types/checkpoint.d.ts +43 -0
  425. package/dist/types/checkpoint.d.ts.map +1 -0
  426. package/dist/types/checkpoint.js +2 -0
  427. package/dist/types/checkpoint.js.map +1 -0
  428. package/dist/types/config.d.ts +0 -1
  429. package/dist/types/config.d.ts.map +1 -1
  430. package/dist/types/core-connection-status.spec.d.ts +2 -0
  431. package/dist/types/core-connection-status.spec.d.ts.map +1 -0
  432. package/dist/types/core-connection-status.spec.js +52 -0
  433. package/dist/types/core-connection-status.spec.js.map +1 -0
  434. package/dist/types/core.d.ts +34 -29
  435. package/dist/types/core.d.ts.map +1 -1
  436. package/dist/types/core.js +1 -1
  437. package/dist/types/core.js.map +1 -1
  438. package/dist/types/index.d.ts +1 -0
  439. package/dist/types/index.d.ts.map +1 -1
  440. package/dist/types/index.js +1 -0
  441. package/dist/types/index.js.map +1 -1
  442. package/dist/types/system.d.ts +5 -30
  443. package/dist/types/system.d.ts.map +1 -1
  444. package/dist/usage/calculator.spec.js +1 -1
  445. package/dist/usage/calculator.spec.js.map +1 -1
  446. package/dist/usage/storage.d.ts +1 -1
  447. package/dist/usage/storage.d.ts.map +1 -1
  448. package/dist/usage/storage.js +9 -3
  449. package/dist/usage/storage.js.map +1 -1
  450. package/dist/usage/storage.spec.js +3 -3
  451. package/dist/usage/storage.spec.js.map +1 -1
  452. package/dist/usage/tracker.d.ts.map +1 -1
  453. package/dist/usage/tracker.js +1 -1
  454. package/dist/usage/tracker.js.map +1 -1
  455. package/dist/usage/tracker.spec.js +4 -4
  456. package/dist/usage/tracker.spec.js.map +1 -1
  457. package/dist/utils/atomic-deletion.spec.js +1 -1
  458. package/dist/utils/atomic-deletion.spec.js.map +1 -1
  459. package/dist/utils/checkpoint-utils.d.ts +12 -0
  460. package/dist/utils/checkpoint-utils.d.ts.map +1 -0
  461. package/dist/utils/checkpoint-utils.js +85 -0
  462. package/dist/utils/checkpoint-utils.js.map +1 -0
  463. package/dist/utils/checkpoint-utils.spec.d.ts +2 -0
  464. package/dist/utils/checkpoint-utils.spec.d.ts.map +1 -0
  465. package/dist/utils/checkpoint-utils.spec.js +182 -0
  466. package/dist/utils/checkpoint-utils.spec.js.map +1 -0
  467. package/dist/utils/error-formatter.d.ts +35 -0
  468. package/dist/utils/error-formatter.d.ts.map +1 -1
  469. package/dist/utils/error-formatter.js +123 -0
  470. package/dist/utils/error-formatter.js.map +1 -1
  471. package/dist/utils/file-autocomplete.js +2 -2
  472. package/dist/utils/file-autocomplete.js.map +1 -1
  473. package/dist/utils/file-autocomplete.spec.js +1 -1
  474. package/dist/utils/file-autocomplete.spec.js.map +1 -1
  475. package/dist/utils/file-content-loader.js +1 -1
  476. package/dist/utils/file-content-loader.js.map +1 -1
  477. package/dist/utils/file-content-loader.spec.js +4 -4
  478. package/dist/utils/file-content-loader.spec.js.map +1 -1
  479. package/dist/utils/file-mention-handler.js.map +1 -1
  480. package/dist/utils/file-mention-handler.spec.js +4 -4
  481. package/dist/utils/file-mention-handler.spec.js.map +1 -1
  482. package/dist/utils/file-mention-parser.spec.js +2 -2
  483. package/dist/utils/file-mention-parser.spec.js.map +1 -1
  484. package/dist/utils/installation-detector.js +2 -2
  485. package/dist/utils/installation-detector.js.map +1 -1
  486. package/dist/utils/installation-detector.spec.js +10 -17
  487. package/dist/utils/installation-detector.spec.js.map +1 -1
  488. package/dist/utils/logging/config.d.ts +41 -0
  489. package/dist/utils/logging/config.d.ts.map +1 -0
  490. package/dist/utils/logging/config.js +188 -0
  491. package/dist/utils/logging/config.js.map +1 -0
  492. package/dist/utils/logging/config.spec.d.ts +2 -0
  493. package/dist/utils/logging/config.spec.d.ts.map +1 -0
  494. package/dist/utils/logging/config.spec.js +233 -0
  495. package/dist/utils/logging/config.spec.js.map +1 -0
  496. package/dist/utils/logging/console-facade.d.ts +93 -0
  497. package/dist/utils/logging/console-facade.d.ts.map +1 -0
  498. package/dist/utils/logging/console-facade.js +295 -0
  499. package/dist/utils/logging/console-facade.js.map +1 -0
  500. package/dist/utils/logging/console-facade.spec.d.ts +2 -0
  501. package/dist/utils/logging/console-facade.spec.d.ts.map +1 -0
  502. package/dist/utils/logging/console-facade.spec.js +143 -0
  503. package/dist/utils/logging/console-facade.spec.js.map +1 -0
  504. package/dist/utils/logging/correlation.d.ts +139 -0
  505. package/dist/utils/logging/correlation.d.ts.map +1 -0
  506. package/dist/utils/logging/correlation.js +410 -0
  507. package/dist/utils/logging/correlation.js.map +1 -0
  508. package/dist/utils/logging/correlation.spec.d.ts +2 -0
  509. package/dist/utils/logging/correlation.spec.d.ts.map +1 -0
  510. package/dist/utils/logging/correlation.spec.js +449 -0
  511. package/dist/utils/logging/correlation.spec.js.map +1 -0
  512. package/dist/utils/logging/formatters.d.ts +70 -0
  513. package/dist/utils/logging/formatters.d.ts.map +1 -0
  514. package/dist/utils/logging/formatters.js +186 -0
  515. package/dist/utils/logging/formatters.js.map +1 -0
  516. package/dist/utils/logging/formatters.spec.d.ts +2 -0
  517. package/dist/utils/logging/formatters.spec.d.ts.map +1 -0
  518. package/dist/utils/logging/formatters.spec.js +356 -0
  519. package/dist/utils/logging/formatters.spec.js.map +1 -0
  520. package/dist/utils/logging/health-monitor.d.ts +216 -0
  521. package/dist/utils/logging/health-monitor.d.ts.map +1 -0
  522. package/dist/utils/logging/health-monitor.js +760 -0
  523. package/dist/utils/logging/health-monitor.js.map +1 -0
  524. package/dist/utils/logging/health-monitor.spec.d.ts +2 -0
  525. package/dist/utils/logging/health-monitor.spec.d.ts.map +1 -0
  526. package/dist/utils/logging/health-monitor.spec.js +305 -0
  527. package/dist/utils/logging/health-monitor.spec.js.map +1 -0
  528. package/dist/utils/logging/index.d.ts +100 -0
  529. package/dist/utils/logging/index.d.ts.map +1 -0
  530. package/dist/utils/logging/index.js +186 -0
  531. package/dist/utils/logging/index.js.map +1 -0
  532. package/dist/utils/logging/index.spec.d.ts +2 -0
  533. package/dist/utils/logging/index.spec.d.ts.map +1 -0
  534. package/dist/utils/logging/index.spec.js +214 -0
  535. package/dist/utils/logging/index.spec.js.map +1 -0
  536. package/dist/utils/logging/integration.spec.d.ts +2 -0
  537. package/dist/utils/logging/integration.spec.d.ts.map +1 -0
  538. package/dist/utils/logging/integration.spec.js +312 -0
  539. package/dist/utils/logging/integration.spec.js.map +1 -0
  540. package/dist/utils/logging/log-method-factory.d.ts +43 -0
  541. package/dist/utils/logging/log-method-factory.d.ts.map +1 -0
  542. package/dist/utils/logging/log-method-factory.js +176 -0
  543. package/dist/utils/logging/log-method-factory.js.map +1 -0
  544. package/dist/utils/logging/log-method-factory.spec.d.ts +2 -0
  545. package/dist/utils/logging/log-method-factory.spec.d.ts.map +1 -0
  546. package/dist/utils/logging/log-method-factory.spec.js +428 -0
  547. package/dist/utils/logging/log-method-factory.spec.js.map +1 -0
  548. package/dist/utils/logging/log-query.d.ts +275 -0
  549. package/dist/utils/logging/log-query.d.ts.map +1 -0
  550. package/dist/utils/logging/log-query.js +621 -0
  551. package/dist/utils/logging/log-query.js.map +1 -0
  552. package/dist/utils/logging/log-query.spec.d.ts +2 -0
  553. package/dist/utils/logging/log-query.spec.d.ts.map +1 -0
  554. package/dist/utils/logging/log-query.spec.js +737 -0
  555. package/dist/utils/logging/log-query.spec.js.map +1 -0
  556. package/dist/utils/logging/logger-provider.d.ts +73 -0
  557. package/dist/utils/logging/logger-provider.d.ts.map +1 -0
  558. package/dist/utils/logging/logger-provider.js +298 -0
  559. package/dist/utils/logging/logger-provider.js.map +1 -0
  560. package/dist/utils/logging/logger-provider.spec.d.ts +2 -0
  561. package/dist/utils/logging/logger-provider.spec.d.ts.map +1 -0
  562. package/dist/utils/logging/logger-provider.spec.js +204 -0
  563. package/dist/utils/logging/logger-provider.spec.js.map +1 -0
  564. package/dist/utils/logging/performance.d.ts +147 -0
  565. package/dist/utils/logging/performance.d.ts.map +1 -0
  566. package/dist/utils/logging/performance.js +520 -0
  567. package/dist/utils/logging/performance.js.map +1 -0
  568. package/dist/utils/logging/performance.spec.d.ts +2 -0
  569. package/dist/utils/logging/performance.spec.d.ts.map +1 -0
  570. package/dist/utils/logging/performance.spec.js +139 -0
  571. package/dist/utils/logging/performance.spec.js.map +1 -0
  572. package/dist/utils/logging/pino-logger.d.ts +22 -0
  573. package/dist/utils/logging/pino-logger.d.ts.map +1 -0
  574. package/dist/utils/logging/pino-logger.js +372 -0
  575. package/dist/utils/logging/pino-logger.js.map +1 -0
  576. package/dist/utils/logging/pino-logger.spec.d.ts +2 -0
  577. package/dist/utils/logging/pino-logger.spec.d.ts.map +1 -0
  578. package/dist/utils/logging/pino-logger.spec.js +294 -0
  579. package/dist/utils/logging/pino-logger.spec.js.map +1 -0
  580. package/dist/utils/logging/redaction.d.ts +38 -0
  581. package/dist/utils/logging/redaction.d.ts.map +1 -0
  582. package/dist/utils/logging/redaction.js +210 -0
  583. package/dist/utils/logging/redaction.js.map +1 -0
  584. package/dist/utils/logging/redaction.spec.d.ts +2 -0
  585. package/dist/utils/logging/redaction.spec.d.ts.map +1 -0
  586. package/dist/utils/logging/redaction.spec.js +338 -0
  587. package/dist/utils/logging/redaction.spec.js.map +1 -0
  588. package/dist/utils/logging/request-tracker.d.ts +189 -0
  589. package/dist/utils/logging/request-tracker.d.ts.map +1 -0
  590. package/dist/utils/logging/request-tracker.js +569 -0
  591. package/dist/utils/logging/request-tracker.js.map +1 -0
  592. package/dist/utils/logging/request-tracker.spec.d.ts +2 -0
  593. package/dist/utils/logging/request-tracker.spec.d.ts.map +1 -0
  594. package/dist/utils/logging/request-tracker.spec.js +868 -0
  595. package/dist/utils/logging/request-tracker.spec.js.map +1 -0
  596. package/dist/utils/logging/transports.d.ts +55 -0
  597. package/dist/utils/logging/transports.d.ts.map +1 -0
  598. package/dist/utils/logging/transports.js +252 -0
  599. package/dist/utils/logging/transports.js.map +1 -0
  600. package/dist/utils/logging/transports.spec.d.ts +2 -0
  601. package/dist/utils/logging/transports.spec.d.ts.map +1 -0
  602. package/dist/utils/logging/transports.spec.js +390 -0
  603. package/dist/utils/logging/transports.spec.js.map +1 -0
  604. package/dist/utils/logging/types.d.ts +173 -0
  605. package/dist/utils/logging/types.d.ts.map +1 -0
  606. package/dist/utils/logging/types.js +5 -0
  607. package/dist/utils/logging/types.js.map +1 -0
  608. package/dist/utils/message-queue.d.ts +64 -4
  609. package/dist/utils/message-queue.d.ts.map +1 -1
  610. package/dist/utils/message-queue.js +282 -28
  611. package/dist/utils/message-queue.js.map +1 -1
  612. package/dist/utils/paste-utils.spec.js +1 -1
  613. package/dist/utils/paste-utils.spec.js.map +1 -1
  614. package/dist/utils/prompt-processor.d.ts +2 -3
  615. package/dist/utils/prompt-processor.d.ts.map +1 -1
  616. package/dist/utils/prompt-processor.js +4 -52
  617. package/dist/utils/prompt-processor.js.map +1 -1
  618. package/dist/utils/tool-cancellation.spec.js.map +1 -1
  619. package/dist/utils/tool-result-display.d.ts +2 -2
  620. package/dist/utils/tool-result-display.d.ts.map +1 -1
  621. package/dist/utils/tool-result-display.js +3 -3
  622. package/dist/utils/tool-result-display.js.map +1 -1
  623. package/dist/utils/update-checker.d.ts.map +1 -1
  624. package/dist/utils/update-checker.js +1 -1
  625. package/dist/utils/update-checker.js.map +1 -1
  626. package/dist/utils/update-checker.spec.js +2 -2
  627. package/dist/utils/update-checker.spec.js.map +1 -1
  628. package/dist/vscode/extension-installer.js +1 -1
  629. package/dist/vscode/extension-installer.js.map +1 -1
  630. package/dist/vscode/extension-installer.spec.js +1 -1
  631. package/dist/vscode/extension-installer.spec.js.map +1 -1
  632. package/dist/vscode/protocol.spec.js +1 -1
  633. package/dist/vscode/protocol.spec.js.map +1 -1
  634. package/dist/vscode/vscode-server.d.ts.map +1 -1
  635. package/dist/vscode/vscode-server.js +2 -2
  636. package/dist/vscode/vscode-server.js.map +1 -1
  637. package/dist/vscode/vscode-server.spec.js.map +1 -1
  638. package/dist/wizard/config-wizard.d.ts.map +1 -1
  639. package/dist/wizard/config-wizard.js +16 -12
  640. package/dist/wizard/config-wizard.js.map +1 -1
  641. package/dist/wizard/steps/location-step.js +4 -4
  642. package/dist/wizard/steps/location-step.js.map +1 -1
  643. package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
  644. package/dist/wizard/steps/mcp-step.js +4 -4
  645. package/dist/wizard/steps/mcp-step.js.map +1 -1
  646. package/dist/wizard/steps/provider-step.d.ts.map +1 -1
  647. package/dist/wizard/steps/provider-step.js +4 -4
  648. package/dist/wizard/steps/provider-step.js.map +1 -1
  649. package/dist/wizard/steps/summary-step.d.ts.map +1 -1
  650. package/dist/wizard/steps/summary-step.js +2 -2
  651. package/dist/wizard/steps/summary-step.js.map +1 -1
  652. package/dist/wizard/templates/provider-templates.d.ts.map +1 -1
  653. package/dist/wizard/templates/provider-templates.js +66 -2
  654. package/dist/wizard/templates/provider-templates.js.map +1 -1
  655. package/dist/wizard/validation-array.spec.js +1 -1
  656. package/dist/wizard/validation-array.spec.js.map +1 -1
  657. package/dist/wizard/validation.spec.js +1 -1
  658. package/dist/wizard/validation.spec.js.map +1 -1
  659. package/package.json +28 -26
  660. package/source/app/prompts/main-prompt.md +29 -96
  661. package/dist/commands/recommendations.d.ts +0 -8
  662. package/dist/commands/recommendations.d.ts.map +0 -1
  663. package/dist/commands/recommendations.js +0 -311
  664. package/dist/commands/recommendations.js.map +0 -1
  665. package/dist/commands/streaming.d.ts +0 -3
  666. package/dist/commands/streaming.d.ts.map +0 -1
  667. package/dist/commands/streaming.js +0 -23
  668. package/dist/commands/streaming.js.map +0 -1
  669. package/dist/components/thinking-indicator.d.ts +0 -3
  670. package/dist/components/thinking-indicator.d.ts.map +0 -1
  671. package/dist/components/thinking-indicator.js +0 -69
  672. package/dist/components/thinking-indicator.js.map +0 -1
  673. package/dist/recommendations/model-database.d.ts +0 -8
  674. package/dist/recommendations/model-database.d.ts.map +0 -1
  675. package/dist/recommendations/model-database.js +0 -514
  676. package/dist/recommendations/model-database.js.map +0 -1
  677. package/dist/recommendations/model-engine.d.ts +0 -16
  678. package/dist/recommendations/model-engine.d.ts.map +0 -1
  679. package/dist/recommendations/model-engine.js +0 -185
  680. package/dist/recommendations/model-engine.js.map +0 -1
  681. package/dist/recommendations/recommendation-engine.d.ts +0 -39
  682. package/dist/recommendations/recommendation-engine.d.ts.map +0 -1
  683. package/dist/recommendations/recommendation-engine.js +0 -144
  684. package/dist/recommendations/recommendation-engine.js.map +0 -1
  685. package/dist/system/detector.d.ts +0 -18
  686. package/dist/system/detector.d.ts.map +0 -1
  687. package/dist/system/detector.js +0 -140
  688. package/dist/system/detector.js.map +0 -1
@@ -0,0 +1,428 @@
1
+ import test from 'ava';
2
+ import { createLogMethod, createLogMethods } from './log-method-factory.js';
3
+ // Mock logger for testing
4
+ class MockLogger {
5
+ logs = [];
6
+ fatal(...args) {
7
+ this.logs.push({ level: 'fatal', args });
8
+ }
9
+ error(...args) {
10
+ this.logs.push({ level: 'error', args });
11
+ }
12
+ warn(...args) {
13
+ this.logs.push({ level: 'warn', args });
14
+ }
15
+ info(...args) {
16
+ this.logs.push({ level: 'info', args });
17
+ }
18
+ http(...args) {
19
+ this.logs.push({ level: 'http', args });
20
+ }
21
+ debug(...args) {
22
+ this.logs.push({ level: 'debug', args });
23
+ }
24
+ trace(...args) {
25
+ this.logs.push({ level: 'trace', args });
26
+ }
27
+ getLogs() {
28
+ return this.logs;
29
+ }
30
+ clear() {
31
+ this.logs = [];
32
+ }
33
+ }
34
+ // Test createLogMethod function
35
+ // ============================================================================
36
+ test('createLogMethod creates function that logs messages', t => {
37
+ const mockLogger = new MockLogger();
38
+ const logMethod = createLogMethod(mockLogger, 'info');
39
+ t.truthy(logMethod);
40
+ t.is(typeof logMethod, 'function');
41
+ });
42
+ test('createLogMethod handles string-first signature', t => {
43
+ const mockLogger = new MockLogger();
44
+ const logMethod = createLogMethod(mockLogger, 'info');
45
+ logMethod('test message', { key: 'value' });
46
+ const logs = mockLogger.getLogs();
47
+ t.is(logs.length, 1);
48
+ t.is(logs[0].level, 'info');
49
+ });
50
+ test('createLogMethod handles object-first signature', t => {
51
+ const mockLogger = new MockLogger();
52
+ const logMethod = createLogMethod(mockLogger, 'info');
53
+ logMethod({ key: 'value' }, 'test message');
54
+ const logs = mockLogger.getLogs();
55
+ t.is(logs.length, 1);
56
+ t.is(logs[0].level, 'info');
57
+ });
58
+ test('createLogMethod with contextPrefix adds prefix to messages', t => {
59
+ const mockLogger = new MockLogger();
60
+ const logMethod = createLogMethod(mockLogger, 'info', {
61
+ contextPrefix: 'TEST',
62
+ });
63
+ logMethod('test message');
64
+ const logs = mockLogger.getLogs();
65
+ t.is(logs.length, 1);
66
+ t.true(String(logs[0].args[0]).includes('[TEST]'));
67
+ });
68
+ test('createLogMethod with consolePrefix handles console logger', t => {
69
+ const originalConsole = console.info;
70
+ let consoleCalled = false;
71
+ console.info = (...args) => {
72
+ consoleCalled = true;
73
+ originalConsole(...args);
74
+ };
75
+ const logMethod = createLogMethod(console, 'info', { consolePrefix: 'TEST' });
76
+ logMethod('test message');
77
+ t.true(consoleCalled);
78
+ // Restore console
79
+ console.info = originalConsole;
80
+ });
81
+ test('createLogMethod with transformArgs transforms arguments', t => {
82
+ const mockLogger = new MockLogger();
83
+ const transformArgs = (args) => [args[0], 'transformed'];
84
+ const logMethod = createLogMethod(mockLogger, 'info', { transformArgs });
85
+ logMethod('test message', 'original');
86
+ const logs = mockLogger.getLogs();
87
+ t.is(logs.length, 1);
88
+ t.true(logs[0].args.includes('transformed'));
89
+ });
90
+ test('createLogMethod with transformResult transforms result', t => {
91
+ const mockLogger = new MockLogger();
92
+ let transformCalled = false;
93
+ const transformResult = () => {
94
+ transformCalled = true;
95
+ };
96
+ const logMethod = createLogMethod(mockLogger, 'info', { transformResult });
97
+ logMethod('test message');
98
+ t.true(transformCalled);
99
+ });
100
+ test('createLogMethod handles logger without level method gracefully', t => {
101
+ const mockLogger = { info: undefined };
102
+ const logMethod = createLogMethod(mockLogger, 'info');
103
+ // Should not throw
104
+ logMethod('test message');
105
+ t.pass();
106
+ });
107
+ test('createLogMethod handles logger method errors with fallback', t => {
108
+ const mockLogger = {
109
+ info: () => {
110
+ throw new Error('Mock error');
111
+ },
112
+ };
113
+ const originalConsole = console.info;
114
+ let consoleCalled = false;
115
+ console.info = (...args) => {
116
+ consoleCalled = true;
117
+ originalConsole(...args);
118
+ };
119
+ const logMethod = createLogMethod(mockLogger, 'info');
120
+ // Should fallback to console
121
+ logMethod('test message');
122
+ t.true(consoleCalled);
123
+ // Restore console
124
+ console.info = originalConsole;
125
+ });
126
+ // Test createLogMethods function
127
+ // ============================================================================
128
+ test('createLogMethods creates all standard log methods', t => {
129
+ const mockLogger = new MockLogger();
130
+ const logMethods = createLogMethods(mockLogger);
131
+ t.truthy(logMethods);
132
+ t.is(typeof logMethods.fatal, 'function');
133
+ t.is(typeof logMethods.error, 'function');
134
+ t.is(typeof logMethods.warn, 'function');
135
+ t.is(typeof logMethods.info, 'function');
136
+ t.is(typeof logMethods.http, 'function');
137
+ t.is(typeof logMethods.debug, 'function');
138
+ t.is(typeof logMethods.trace, 'function');
139
+ });
140
+ test('createLogMethods with contextPrefix adds prefix to all methods', t => {
141
+ const mockLogger = new MockLogger();
142
+ const logMethods = createLogMethods(mockLogger, { contextPrefix: 'TEST' });
143
+ logMethods.info('info message');
144
+ logMethods.error('error message');
145
+ logMethods.warn('warn message');
146
+ const logs = mockLogger.getLogs();
147
+ t.is(logs.length, 3);
148
+ t.true(String(logs[0].args[0]).includes('[INFO]'));
149
+ t.true(String(logs[1].args[0]).includes('[ERROR]'));
150
+ t.true(String(logs[2].args[0]).includes('[WARN]'));
151
+ });
152
+ test('createLogMethods with transformArgs transforms arguments for all methods', t => {
153
+ const mockLogger = new MockLogger();
154
+ const transformArgs = (args, level) => [level, ...args];
155
+ const logMethods = createLogMethods(mockLogger, { transformArgs });
156
+ logMethods.info('info message');
157
+ logMethods.error('error message');
158
+ const logs = mockLogger.getLogs();
159
+ t.is(logs.length, 2);
160
+ t.true(logs[0].args.includes('info'));
161
+ t.true(logs[1].args.includes('error'));
162
+ });
163
+ test('createLogMethods with transformResult transforms result for all methods', t => {
164
+ const mockLogger = new MockLogger();
165
+ let transformCount = 0;
166
+ const transformResult = () => {
167
+ transformCount++;
168
+ };
169
+ const logMethods = createLogMethods(mockLogger, { transformResult });
170
+ logMethods.info('info message');
171
+ logMethods.error('error message');
172
+ logMethods.warn('warn message');
173
+ t.is(transformCount, 3);
174
+ });
175
+ test('createLogMethods handles console logger with consolePrefix', t => {
176
+ const originalConsole = console.info;
177
+ let consoleInfoCalled = false;
178
+ console.info = (...args) => {
179
+ consoleInfoCalled = true;
180
+ originalConsole(...args);
181
+ };
182
+ const logMethods = createLogMethods(console, { consolePrefix: 'TEST' });
183
+ logMethods.info('test message');
184
+ t.true(consoleInfoCalled);
185
+ // Restore console
186
+ console.info = originalConsole;
187
+ });
188
+ // Test different log levels
189
+ // ============================================================================
190
+ test('createLogMethod creates fatal level method', t => {
191
+ const mockLogger = new MockLogger();
192
+ const logMethod = createLogMethod(mockLogger, 'fatal');
193
+ logMethod('fatal message');
194
+ const logs = mockLogger.getLogs();
195
+ t.is(logs.length, 1);
196
+ t.is(logs[0].level, 'fatal');
197
+ });
198
+ test('createLogMethod creates error level method', t => {
199
+ const mockLogger = new MockLogger();
200
+ const logMethod = createLogMethod(mockLogger, 'error');
201
+ logMethod('error message');
202
+ const logs = mockLogger.getLogs();
203
+ t.is(logs.length, 1);
204
+ t.is(logs[0].level, 'error');
205
+ });
206
+ test('createLogMethod creates warn level method', t => {
207
+ const mockLogger = new MockLogger();
208
+ const logMethod = createLogMethod(mockLogger, 'warn');
209
+ logMethod('warn message');
210
+ const logs = mockLogger.getLogs();
211
+ t.is(logs.length, 1);
212
+ t.is(logs[0].level, 'warn');
213
+ });
214
+ test('createLogMethod creates debug level method', t => {
215
+ const mockLogger = new MockLogger();
216
+ const logMethod = createLogMethod(mockLogger, 'debug');
217
+ logMethod('debug message');
218
+ const logs = mockLogger.getLogs();
219
+ t.is(logs.length, 1);
220
+ t.is(logs[0].level, 'debug');
221
+ });
222
+ test('createLogMethod creates trace level method', t => {
223
+ const mockLogger = new MockLogger();
224
+ const logMethod = createLogMethod(mockLogger, 'trace');
225
+ logMethod('trace message');
226
+ const logs = mockLogger.getLogs();
227
+ t.is(logs.length, 1);
228
+ t.is(logs[0].level, 'trace');
229
+ });
230
+ test('createLogMethod creates http level method', t => {
231
+ const mockLogger = new MockLogger();
232
+ const logMethod = createLogMethod(mockLogger, 'http');
233
+ logMethod('http message');
234
+ const logs = mockLogger.getLogs();
235
+ t.is(logs.length, 1);
236
+ t.is(logs[0].level, 'http');
237
+ });
238
+ // Test edge cases
239
+ // ============================================================================
240
+ test('createLogMethod handles empty message', t => {
241
+ const mockLogger = new MockLogger();
242
+ const logMethod = createLogMethod(mockLogger, 'info');
243
+ // Should not throw
244
+ logMethod('');
245
+ t.pass();
246
+ });
247
+ test('createLogMethod handles null object', t => {
248
+ const mockLogger = new MockLogger();
249
+ const logMethod = createLogMethod(mockLogger, 'info');
250
+ // Should not throw
251
+ logMethod(null, 'message');
252
+ t.pass();
253
+ });
254
+ test('createLogMethod handles undefined arguments', t => {
255
+ const mockLogger = new MockLogger();
256
+ const logMethod = createLogMethod(mockLogger, 'info');
257
+ // Should not throw
258
+ logMethod('message', undefined);
259
+ t.pass();
260
+ });
261
+ test('createLogMethod handles complex objects', t => {
262
+ const mockLogger = new MockLogger();
263
+ const logMethod = createLogMethod(mockLogger, 'info');
264
+ const complexObj = {
265
+ nested: {
266
+ deep: {
267
+ value: 'test',
268
+ },
269
+ },
270
+ array: [1, 2, 3],
271
+ func: () => 'test',
272
+ };
273
+ // Should not throw
274
+ logMethod(complexObj, 'complex object');
275
+ t.pass();
276
+ });
277
+ // Test console fallback for trace level
278
+ // ============================================================================
279
+ test('createLogMethod falls back to console.log for trace level', t => {
280
+ const mockLogger = {
281
+ trace: () => {
282
+ throw new Error('Trace not supported');
283
+ },
284
+ };
285
+ const originalConsole = console.log;
286
+ let consoleCalled = false;
287
+ console.log = (...args) => {
288
+ consoleCalled = true;
289
+ originalConsole(...args);
290
+ };
291
+ const logMethod = createLogMethod(mockLogger, 'trace');
292
+ logMethod('trace message');
293
+ t.true(consoleCalled);
294
+ // Restore console
295
+ console.log = originalConsole;
296
+ });
297
+ // Test method signature compatibility
298
+ // ============================================================================
299
+ test('createLogMethod supports both string-first and object-first signatures', t => {
300
+ const mockLogger = new MockLogger();
301
+ const logMethod = createLogMethod(mockLogger, 'info');
302
+ // String-first signature
303
+ logMethod('message', { key: 'value' });
304
+ // Object-first signature
305
+ logMethod({ key: 'value' }, 'message');
306
+ const logs = mockLogger.getLogs();
307
+ t.is(logs.length, 2);
308
+ });
309
+ // Test error handling in transform functions
310
+ // ============================================================================
311
+ test('createLogMethod handles errors in transformArgs gracefully', t => {
312
+ const mockLogger = new MockLogger();
313
+ const transformArgs = () => {
314
+ throw new Error('Transform error');
315
+ };
316
+ const logMethod = createLogMethod(mockLogger, 'info', { transformArgs });
317
+ // Should not throw
318
+ logMethod('test message');
319
+ t.pass();
320
+ });
321
+ test('createLogMethod handles errors in transformResult gracefully', t => {
322
+ const mockLogger = new MockLogger();
323
+ const transformResult = () => {
324
+ throw new Error('Transform error');
325
+ };
326
+ const logMethod = createLogMethod(mockLogger, 'info', { transformResult });
327
+ // Should not throw
328
+ logMethod('test message');
329
+ t.pass();
330
+ });
331
+ // Test console method mapping
332
+ // ============================================================================
333
+ test('createLogMethod maps trace level to console.log', t => {
334
+ const originalConsole = console.log;
335
+ let consoleCalled = false;
336
+ console.log = (...args) => {
337
+ consoleCalled = true;
338
+ originalConsole(...args);
339
+ };
340
+ const logMethod = createLogMethod(console, 'trace', {
341
+ consolePrefix: 'TEST',
342
+ consoleMethod: 'log',
343
+ });
344
+ logMethod('trace message');
345
+ t.true(consoleCalled);
346
+ // Restore console
347
+ console.log = originalConsole;
348
+ });
349
+ test('createLogMethod maps info level to console.info', t => {
350
+ const originalConsole = console.info;
351
+ let consoleCalled = false;
352
+ console.info = (...args) => {
353
+ consoleCalled = true;
354
+ originalConsole(...args);
355
+ };
356
+ const logMethod = createLogMethod(console, 'info', { consolePrefix: 'TEST' });
357
+ logMethod('info message');
358
+ t.true(consoleCalled);
359
+ // Restore console
360
+ console.info = originalConsole;
361
+ });
362
+ test('createLogMethod maps error level to console.error', t => {
363
+ const originalConsole = console.error;
364
+ let consoleCalled = false;
365
+ console.error = (...args) => {
366
+ consoleCalled = true;
367
+ originalConsole(...args);
368
+ };
369
+ const logMethod = createLogMethod(console, 'error', { consolePrefix: 'TEST' });
370
+ logMethod('error message');
371
+ t.true(consoleCalled);
372
+ // Restore console
373
+ console.error = originalConsole;
374
+ });
375
+ // Test multiple arguments handling
376
+ // ============================================================================
377
+ test('createLogMethod handles multiple arguments', t => {
378
+ const mockLogger = new MockLogger();
379
+ const logMethod = createLogMethod(mockLogger, 'info');
380
+ logMethod('message', 'arg1', 'arg2', { key: 'value' });
381
+ const logs = mockLogger.getLogs();
382
+ t.is(logs.length, 1);
383
+ t.is(logs[0].args.length, 4); // message + 3 args
384
+ });
385
+ test('createLogMethod handles object-first with multiple arguments', t => {
386
+ const mockLogger = new MockLogger();
387
+ const logMethod = createLogMethod(mockLogger, 'info');
388
+ logMethod('message', { key: 'value' }, 'arg1', 'arg2');
389
+ const logs = mockLogger.getLogs();
390
+ t.is(logs.length, 1);
391
+ });
392
+ // Test type safety
393
+ // ============================================================================
394
+ test('createLogMethod returns function with correct type signature', t => {
395
+ const mockLogger = new MockLogger();
396
+ const logMethod = createLogMethod(mockLogger, 'info');
397
+ // Should accept string-first signature
398
+ logMethod('message');
399
+ logMethod('message', { key: 'value' });
400
+ // Should accept object-first signature
401
+ logMethod({ key: 'value' });
402
+ logMethod({ key: 'value' }, 'message');
403
+ t.pass();
404
+ });
405
+ // Test console method override
406
+ // ============================================================================
407
+ test('createLogMethod uses specified consoleMethod', t => {
408
+ const originalConsole = console.warn;
409
+ let consoleCalled = false;
410
+ console.warn = (...args) => {
411
+ consoleCalled = true;
412
+ originalConsole(...args);
413
+ };
414
+ const logMethod = createLogMethod(console, 'info', {
415
+ consolePrefix: 'TEST',
416
+ consoleMethod: 'warn',
417
+ });
418
+ logMethod('info message');
419
+ t.true(consoleCalled);
420
+ // Restore console
421
+ console.warn = originalConsole;
422
+ });
423
+ // Cleanup
424
+ // ============================================================================
425
+ test.after('cleanup mock logger', t => {
426
+ // Any cleanup if needed
427
+ });
428
+ //# sourceMappingURL=log-method-factory.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-method-factory.spec.js","sourceRoot":"","sources":["../../../source/utils/logging/log-method-factory.spec.ts"],"names":[],"mappings":"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"}