@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,449 @@
1
+ import { existsSync, mkdirSync, rmSync } from 'fs';
2
+ import { tmpdir } from 'os';
3
+ import { join } from 'path';
4
+ import test from 'ava';
5
+ console.log(`\nlogging/correlation.spec.ts`);
6
+ // Import correlation functions
7
+ import { checkCorrelationHealth, clearCorrelationContext, correlationMiddleware, createCorrelationContext, createCorrelationFromHeaders, extractCorrelationId, formatCorrelationForLog, generateCorrelationId, generateShortCorrelationId, getCorrelationHeader, getCorrelationId, getCorrelationMetadata, getCorrelationMonitoring, getCurrentCorrelationContext, resetCorrelationMonitoring, setCorrelationContext, withCorrelation, withCorrelationContext, withNewCorrelationContext, } from './correlation.js';
8
+ // Create a temporary test directory
9
+ const testDir = join(tmpdir(), `nanocoder-correlation-test-${Date.now()}`);
10
+ test.before(() => {
11
+ mkdirSync(testDir, { recursive: true });
12
+ });
13
+ test.after.always(() => {
14
+ // Clean up test directory
15
+ if (existsSync(testDir)) {
16
+ rmSync(testDir, { recursive: true, force: true });
17
+ }
18
+ // Clear correlation context
19
+ clearCorrelationContext();
20
+ });
21
+ test('generateCorrelationId creates valid correlation ID', t => {
22
+ const id1 = generateCorrelationId();
23
+ const id2 = generateCorrelationId();
24
+ t.is(typeof id1, 'string', 'Should return string');
25
+ t.is(typeof id2, 'string', 'Should return string');
26
+ t.true(id1.length > 0, 'Should not be empty');
27
+ t.true(id2.length > 0, 'Should not be empty');
28
+ t.not(id1, id2, 'Should generate unique IDs');
29
+ });
30
+ test('generateShortCorrelationId creates short IDs', t => {
31
+ const shortId = generateShortCorrelationId();
32
+ const fullId = generateCorrelationId();
33
+ t.is(typeof shortId, 'string', 'Should return string');
34
+ t.true(shortId.length > 0, 'Should not be empty');
35
+ t.true(shortId.length < fullId.length, 'Short ID should be shorter than full ID');
36
+ });
37
+ test('correlation context management works', t => {
38
+ const context = {
39
+ id: 'test-123',
40
+ parentId: 'parent-456',
41
+ metadata: {
42
+ source: 'test',
43
+ version: '1.0.0',
44
+ },
45
+ };
46
+ // Use withCorrelationContext instead of deprecated setCorrelationContext
47
+ withCorrelationContext(context, () => {
48
+ // Get current context
49
+ const current = getCurrentCorrelationContext();
50
+ t.truthy(current, 'Should return context');
51
+ t.is(current.id, context.id, 'Should match ID');
52
+ t.is(current.parentId, context.parentId, 'Should match parent ID');
53
+ t.is(current.metadata?.source, context.metadata?.source, 'Should match metadata');
54
+ });
55
+ // Context should be cleared automatically after withCorrelationContext completes
56
+ const cleared = getCurrentCorrelationContext();
57
+ t.falsy(cleared, 'Should be cleared');
58
+ });
59
+ test('createCorrelationContext creates valid context', t => {
60
+ const context = createCorrelationContext('parent-123', {
61
+ source: 'test',
62
+ version: '1.0.0',
63
+ });
64
+ t.is(typeof context.id, 'string', 'Should have ID');
65
+ t.is(context.parentId, 'parent-123', 'Should set parent ID');
66
+ t.is(context.metadata?.source, 'test', 'Should set metadata source');
67
+ t.is(context.metadata?.version, '1.0.0', 'Should set metadata version');
68
+ });
69
+ test('withCorrelationContext executes function with context', t => {
70
+ const context = {
71
+ id: 'test-123',
72
+ parentId: 'parent-456',
73
+ metadata: { source: 'test' },
74
+ };
75
+ let executedContext = null;
76
+ withCorrelationContext(context, () => {
77
+ executedContext = getCurrentCorrelationContext();
78
+ });
79
+ t.truthy(executedContext, 'Should have context during execution');
80
+ t.is(executedContext.id, context.id, 'Should have correct ID');
81
+ t.is(executedContext.parentId, context.parentId, 'Should have correct parent ID');
82
+ // Context should be cleared after execution
83
+ const afterContext = getCurrentCorrelationContext();
84
+ t.falsy(afterContext, 'Context should be cleared after execution');
85
+ });
86
+ test('withNewCorrelationContext creates new context', t => {
87
+ let correlationId = undefined;
88
+ withNewCorrelationContext(() => {
89
+ const context = getCurrentCorrelationContext();
90
+ if (context) {
91
+ correlationId = context.id;
92
+ }
93
+ }, 'parent-123', { source: 'test' });
94
+ t.truthy(correlationId, 'Should generate correlation ID');
95
+ t.is(typeof correlationId, 'string', 'Should be string');
96
+ t.true(correlationId.length > 0, 'Should not be empty');
97
+ });
98
+ test('getCorrelationId returns current ID', t => {
99
+ const context = {
100
+ id: 'test-123',
101
+ parentId: 'parent-456',
102
+ };
103
+ withCorrelationContext(context, () => {
104
+ const id = getCorrelationId();
105
+ t.is(id, 'test-123', 'Should return current correlation ID');
106
+ });
107
+ // Context should be cleared automatically after withCorrelationContext completes
108
+ const clearedId = getCorrelationId();
109
+ t.falsy(clearedId, 'Should return undefined when no context');
110
+ });
111
+ test('isCorrelationEnabled checks if correlation is active', t => {
112
+ // isCorrelationEnabled checks process.env, not the current context
113
+ // so this behavior may need to be adjusted based on the actual implementation
114
+ const context = getCurrentCorrelationContext();
115
+ t.is(context, null, 'Context should be null initially');
116
+ withCorrelationContext(createCorrelationContext(), () => {
117
+ const contextAfterSet = getCurrentCorrelationContext();
118
+ t.truthy(contextAfterSet, 'Context should not be null after setting');
119
+ });
120
+ // Context should be cleared automatically after withCorrelationContext completes
121
+ });
122
+ test('getCorrelationHeader returns header value', t => {
123
+ const context = {
124
+ id: 'test-123',
125
+ parentId: 'parent-456',
126
+ };
127
+ withCorrelationContext(context, () => {
128
+ const header = getCorrelationHeader();
129
+ t.truthy(header, 'Should return header');
130
+ t.is(typeof header, 'object', 'Should be object');
131
+ t.deepEqual(header, { 'X-Correlation-ID': 'test-123' }, 'Should return correct header');
132
+ });
133
+ // Context should be cleared automatically after withCorrelationContext completes
134
+ const noHeader = getCorrelationHeader();
135
+ t.deepEqual(noHeader, {}, 'Should return empty object when no context');
136
+ });
137
+ test('extractCorrelationId extracts from various sources', t => {
138
+ // Test with correlation header
139
+ const header = 'test-123';
140
+ t.is(extractCorrelationId({ 'x-correlation-id': header }), header, 'Should extract from header');
141
+ // Test with request ID
142
+ const requestId = 'req-456';
143
+ t.is(extractCorrelationId({ 'x-request-id': requestId }), requestId, 'Should extract from request ID');
144
+ // Test with trace ID
145
+ const traceId = 'trace-789';
146
+ t.is(extractCorrelationId({ 'x-trace-id': traceId }), traceId, 'Should extract from trace ID');
147
+ // Test with no headers
148
+ t.falsy(extractCorrelationId({}), 'Should return undefined with no headers');
149
+ });
150
+ test('createCorrelationFromHeaders creates context from headers', t => {
151
+ const headers = {
152
+ 'x-correlation-id': 'corr-123',
153
+ 'x-trace-id': 'trace-456',
154
+ 'x-span-id': 'span-789',
155
+ 'x-user-id': 'user-123',
156
+ 'x-session-id': 'session-456',
157
+ };
158
+ const context = createCorrelationFromHeaders(headers);
159
+ t.truthy(context, 'Should create context');
160
+ t.is(context.id, 'corr-123', 'Should set correlation ID');
161
+ });
162
+ test('correlation metadata management', t => {
163
+ const metadata = {
164
+ source: 'api-server',
165
+ version: '2.1.0',
166
+ environment: 'production',
167
+ };
168
+ const context = {
169
+ id: 'test-456',
170
+ metadata,
171
+ };
172
+ withCorrelationContext(context, () => {
173
+ // Get metadata
174
+ const retrieved = getCorrelationMetadata();
175
+ t.truthy(retrieved, 'Should return metadata');
176
+ t.is(retrieved.source, metadata.source, 'Should match source');
177
+ t.is(retrieved.version, metadata.version, 'Should match version');
178
+ t.is(retrieved.environment, metadata.environment, 'Should match environment');
179
+ });
180
+ // Context should be cleared automatically after withCorrelationContext completes
181
+ });
182
+ test('formatCorrelationForLog formats for logging', t => {
183
+ const context = {
184
+ id: 'test-123',
185
+ parentId: 'parent-456',
186
+ metadata: { source: 'test' },
187
+ };
188
+ withCorrelationContext(context, () => {
189
+ const formatted = formatCorrelationForLog();
190
+ t.is(typeof formatted, 'object', 'Should return object');
191
+ t.is(formatted.correlationId, 'test-123', 'Should include correlation ID');
192
+ });
193
+ // Context should be cleared automatically after withCorrelationContext completes
194
+ });
195
+ test('correlationMiddleware creates middleware function', t => {
196
+ const middleware = correlationMiddleware();
197
+ t.is(typeof middleware, 'function', 'Should return middleware function');
198
+ // Test middleware execution
199
+ const mockRequest = {
200
+ headers: {
201
+ 'x-correlation-id': 'test-123',
202
+ },
203
+ };
204
+ const mockResponse = {};
205
+ const mockNext = () => { };
206
+ t.notThrows(() => {
207
+ middleware(mockRequest, mockResponse, mockNext);
208
+ }, 'Middleware should execute without errors');
209
+ });
210
+ test('withCorrelation decorator works with async functions', async (t) => {
211
+ const mockFunction = async (...args) => {
212
+ const input = args[0];
213
+ const context = getCurrentCorrelationContext();
214
+ return `${input}-${context?.id || 'no-context'}`;
215
+ };
216
+ const decoratedFunction = withCorrelation(mockFunction);
217
+ const result = await decoratedFunction('test');
218
+ t.is(typeof result, 'string', 'Should return string');
219
+ t.true(result.includes('test-'), 'Should include input');
220
+ });
221
+ test('context isolation between concurrent operations', async (t) => {
222
+ const results = [];
223
+ const operation1 = withNewCorrelationContext(async () => {
224
+ await new Promise(resolve => setTimeout(resolve, 10));
225
+ const context = getCurrentCorrelationContext();
226
+ results.push(`op1-${context?.metadata?.userId}`);
227
+ }, 'parent-1', { userId: 'user-1' });
228
+ const operation2 = withNewCorrelationContext(async () => {
229
+ await new Promise(resolve => setTimeout(resolve, 5));
230
+ const context = getCurrentCorrelationContext();
231
+ results.push(`op2-${context?.metadata?.userId}`);
232
+ }, 'parent-2', { userId: 'user-2' });
233
+ await Promise.all([operation1, operation2]);
234
+ t.is(results.length, 2, 'Should have both results');
235
+ t.true(results.some(r => r.includes('user-1')), 'Should have user-1 result');
236
+ t.true(results.some(r => r.includes('user-2')), 'Should have user-2 result');
237
+ });
238
+ test('error handling in correlation functions', t => {
239
+ // Test with invalid context
240
+ t.notThrows(() => {
241
+ setCorrelationContext(null);
242
+ getCurrentCorrelationContext();
243
+ }, 'Should handle invalid context gracefully');
244
+ // Test with malformed headers
245
+ const malformedHeaders = {
246
+ 'x-correlation-id': null,
247
+ 'x-trace-id': undefined,
248
+ 'x-user-id': 123,
249
+ };
250
+ t.notThrows(() => {
251
+ createCorrelationFromHeaders(malformedHeaders);
252
+ }, 'Should handle malformed headers');
253
+ });
254
+ test('correlation ID format validation', t => {
255
+ const validId = generateCorrelationId();
256
+ t.regex(validId, /^[a-zA-Z0-9_-]+$/, 'Should contain only valid characters');
257
+ t.true(validId.length >= 8, 'Should be at least 8 characters');
258
+ t.true(validId.length <= 64, 'Should not exceed 64 characters');
259
+ });
260
+ /**
261
+ * Test AsyncLocalStorage-only mode (legacy context disabled)
262
+ * This test verifies that the system works correctly without legacy context fallback
263
+ */
264
+ test('AsyncLocalStorage-only mode works without legacy context', t => {
265
+ // Save original environment variable
266
+ const originalEnv = process.env.NANOCODER_CORRELATION_LEGACY_FALLBACK;
267
+ try {
268
+ // Disable legacy context
269
+ process.env.NANOCODER_CORRELATION_LEGACY_FALLBACK = 'false';
270
+ // Test that AsyncLocalStorage still works
271
+ const testId = generateCorrelationId();
272
+ const testMetadata = { source: 'test', version: '1.0.0' };
273
+ const result = withNewCorrelationContext((context) => {
274
+ // Verify context is created correctly
275
+ t.truthy(context, 'Should have context');
276
+ t.is(context.id, testId, 'Should have correct ID');
277
+ t.deepEqual(context.metadata, testMetadata, 'Should have correct metadata');
278
+ // Verify context is accessible within AsyncLocalStorage
279
+ t.is(getCorrelationId(), testId, 'Should get correct ID');
280
+ t.deepEqual(getCorrelationMetadata(), testMetadata, 'Should get correct metadata');
281
+ // Verify legacy context is not used
282
+ t.is(getCurrentCorrelationContext(), context, 'Should use AsyncLocalStorage context');
283
+ return 'success';
284
+ }, testId, testMetadata);
285
+ t.is(result, 'success', 'Should execute successfully');
286
+ // Verify no legacy context was used
287
+ const asyncOnlyResult = withNewCorrelationContext((context) => {
288
+ // In AsyncLocalStorage-only mode, legacy context should not interfere
289
+ const current = getCurrentCorrelationContext();
290
+ t.truthy(current, 'Should have AsyncLocalStorage context');
291
+ t.is(current.id, context.id, 'Should match current context');
292
+ // Format for logging should work
293
+ const formatted = formatCorrelationForLog();
294
+ t.truthy(formatted.correlationId, 'Should format for logging');
295
+ return true;
296
+ });
297
+ t.true(asyncOnlyResult, 'Should work without legacy context');
298
+ }
299
+ finally {
300
+ // Restore original environment variable
301
+ if (originalEnv === undefined) {
302
+ delete process.env.NANOCODER_CORRELATION_LEGACY_FALLBACK;
303
+ }
304
+ else {
305
+ process.env.NANOCODER_CORRELATION_LEGACY_FALLBACK = originalEnv;
306
+ }
307
+ }
308
+ });
309
+ /**
310
+ * Test concurrent operations with AsyncLocalStorage
311
+ * Verifies that correlation contexts don't interfere with each other
312
+ */
313
+ test('Concurrent operations maintain isolated correlation contexts', async (t) => {
314
+ const results = await Promise.all([
315
+ withNewCorrelationContext(async (context1) => {
316
+ await new Promise(resolve => setTimeout(resolve, 10));
317
+ return { id: context1.id, metadata: context1.metadata };
318
+ }, 'context-1', { source: 'test1' }),
319
+ withNewCorrelationContext(async (context2) => {
320
+ await new Promise(resolve => setTimeout(resolve, 10));
321
+ return { id: context2.id, metadata: context2.metadata };
322
+ }, 'context-2', { source: 'test2' }),
323
+ withNewCorrelationContext(async (context3) => {
324
+ await new Promise(resolve => setTimeout(resolve, 10));
325
+ return { id: context3.id, metadata: context3.metadata };
326
+ }, 'context-3', { source: 'test3' }),
327
+ ]);
328
+ // Verify all contexts are different
329
+ t.is(results.length, 3, 'Should have 3 results');
330
+ t.not(results[0].id, results[1].id, 'Context 1 and 2 should be different');
331
+ t.not(results[0].id, results[2].id, 'Context 1 and 3 should be different');
332
+ t.not(results[1].id, results[2].id, 'Context 2 and 3 should be different');
333
+ // Verify metadata is correct
334
+ t.deepEqual(results[0].metadata, { source: 'test1' }, 'Context 1 should have correct metadata');
335
+ t.deepEqual(results[1].metadata, { source: 'test2' }, 'Context 2 should have correct metadata');
336
+ t.deepEqual(results[2].metadata, { source: 'test3' }, 'Context 3 should have correct metadata');
337
+ });
338
+ /**
339
+ * Test correlation context persistence across async boundaries
340
+ */
341
+ test('Correlation context persists across async boundaries', async (t) => {
342
+ const testId = generateCorrelationId();
343
+ const testMetadata = { async: 'test', boundary: 'test' };
344
+ const result = await withNewCorrelationContext(async (context) => {
345
+ // Verify context in first async operation
346
+ t.is(getCorrelationId(), testId, 'Should have context in first async op');
347
+ // Wait and verify context persists
348
+ await new Promise(resolve => setTimeout(resolve, 20));
349
+ t.is(getCorrelationId(), testId, 'Should persist after timeout');
350
+ // Nested async operation
351
+ const nestedResult = await new Promise(resolve => {
352
+ setTimeout(() => {
353
+ t.is(getCorrelationId(), testId, 'Should persist in nested async');
354
+ resolve('nested-success');
355
+ }, 10);
356
+ });
357
+ // Final verification
358
+ t.is(getCorrelationId(), testId, 'Should persist to end');
359
+ return nestedResult;
360
+ }, testId, testMetadata);
361
+ t.is(result, 'nested-success', 'Should complete successfully');
362
+ });
363
+ /**
364
+ * Test error handling with correlation context
365
+ */
366
+ test('Correlation context preserved in error scenarios', async (t) => {
367
+ const testId = generateCorrelationId();
368
+ try {
369
+ await withNewCorrelationContext(async (context) => {
370
+ t.is(getCorrelationId(), testId, 'Should have context before error');
371
+ // Simulate error
372
+ throw new Error('Test error');
373
+ }, testId);
374
+ t.fail('Should have thrown error');
375
+ }
376
+ catch (error) {
377
+ // Error should be thrown, but we can't access context here
378
+ t.is(error.message, 'Test error', 'Should throw correct error');
379
+ }
380
+ // Context should not leak after error
381
+ const afterError = getCurrentCorrelationContext();
382
+ t.falsy(afterError, 'Context should not leak after error');
383
+ });
384
+ test('metadata merging works correctly', t => {
385
+ const metadata = {
386
+ source: 'api',
387
+ version: '1.0.0',
388
+ environment: 'production',
389
+ requestId: 'req-123',
390
+ };
391
+ const context = {
392
+ id: 'test-123',
393
+ metadata,
394
+ };
395
+ withCorrelationContext(context, () => {
396
+ const merged = getCorrelationMetadata();
397
+ t.is(merged.source, 'api', 'Should preserve initial metadata');
398
+ t.is(merged.version, '1.0.0', 'Should preserve initial version');
399
+ t.is(merged.environment, 'production', 'Should include additional metadata');
400
+ t.is(merged.requestId, 'req-123', 'Should include additional request ID');
401
+ });
402
+ // Context should be cleared automatically after withCorrelationContext completes
403
+ });
404
+ /**
405
+ * Test correlation monitoring functionality
406
+ */
407
+ test('correlation monitoring tracks context usage', t => {
408
+ // Reset monitoring to start fresh
409
+ resetCorrelationMonitoring();
410
+ // Initial state
411
+ const initialMetrics = getCorrelationMonitoring();
412
+ t.is(initialMetrics.contextsCreated, 0, 'Should start with 0 contexts created');
413
+ t.is(initialMetrics.activeContexts, 0, 'Should start with 0 active contexts');
414
+ t.is(initialMetrics.errors, 0, 'Should start with 0 errors');
415
+ // Create some contexts
416
+ withNewCorrelationContext(() => 'test1');
417
+ withNewCorrelationContext(() => 'test2');
418
+ // Check metrics after context creation
419
+ const afterMetrics = getCorrelationMonitoring();
420
+ t.is(afterMetrics.contextsCreated, 2, 'Should track 2 contexts created');
421
+ t.is(afterMetrics.activeContexts, 0, 'Should have 0 active contexts after completion');
422
+ t.is(afterMetrics.errors, 0, 'Should still have 0 errors');
423
+ // Test health check
424
+ const health = checkCorrelationHealth();
425
+ t.true(health.healthy, 'Health check should pass');
426
+ t.is(health.message, 'Correlation context system is healthy', 'Should report healthy status');
427
+ });
428
+ /**
429
+ * Test correlation monitoring error tracking
430
+ */
431
+ test('correlation monitoring tracks errors', t => {
432
+ // Reset monitoring to start fresh
433
+ resetCorrelationMonitoring();
434
+ // Create a context that throws an error
435
+ try {
436
+ withNewCorrelationContext(() => {
437
+ throw new Error('Test error for monitoring');
438
+ });
439
+ }
440
+ catch {
441
+ // Expected to catch the error
442
+ }
443
+ // Check error tracking
444
+ const metrics = getCorrelationMonitoring();
445
+ t.is(metrics.errors, 1, 'Should track 1 error');
446
+ t.truthy(metrics.lastError, 'Should have last error recorded');
447
+ t.is(metrics.lastErrorTime, metrics.lastErrorTime, 'Should have error timestamp');
448
+ });
449
+ //# sourceMappingURL=correlation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correlation.spec.js","sourceRoot":"","sources":["../../../source/utils/logging/correlation.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Output formatters for JSON and pretty logging
3
+ */
4
+ import type { LogEntry } from './types.js';
5
+ /**
6
+ * Format log level as uppercase string
7
+ */
8
+ export declare function formatLevel(label: string, _number: number): {
9
+ level: string;
10
+ };
11
+ /**
12
+ * Custom timestamp formatter
13
+ */
14
+ export declare function formatTimestamp(time: number): {
15
+ time: string;
16
+ };
17
+ /**
18
+ * Format timestamp for development (human readable)
19
+ */
20
+ export declare function formatTimestampDev(time: number): {
21
+ time: string;
22
+ };
23
+ /**
24
+ * Sanitize error objects for JSON serialization
25
+ */
26
+ export declare function serializeError(err: Error): Record<string, any>;
27
+ /**
28
+ * Format log entry for production JSON output
29
+ */
30
+ export declare function formatProductionLog(log: LogEntry): LogEntry;
31
+ /**
32
+ * Format log entry for development pretty output
33
+ */
34
+ export declare function formatDevelopmentLog(log: LogEntry): LogEntry;
35
+ /**
36
+ * Create Pino formatters configuration
37
+ */
38
+ export declare function createFormatters(isProduction?: boolean): {
39
+ level: typeof formatLevel;
40
+ log: typeof formatProductionLog;
41
+ time: typeof formatTimestampDev;
42
+ };
43
+ /**
44
+ * Message formatter for custom log messages
45
+ */
46
+ export declare function formatMessage(template: string, bindings: Record<string, any>, level: string): string;
47
+ /**
48
+ * Color mapping for different log levels (development only)
49
+ */
50
+ export declare const levelColors: Record<string, string>;
51
+ /**
52
+ * Get color for log level
53
+ */
54
+ export declare function getLevelColor(level: string): string;
55
+ /**
56
+ * Create pretty print formatter for development
57
+ */
58
+ export declare function createPrettyFormatter(): {
59
+ translateTime: string;
60
+ ignore: string;
61
+ messageFormat: string;
62
+ customPrettifiers: {
63
+ time: (timestamp: number) => string;
64
+ level: (label: string) => string;
65
+ hostname: () => string;
66
+ };
67
+ colorize: boolean;
68
+ levelFirst: boolean;
69
+ };
70
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../source/utils/logging/formatters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAI3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAK5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAY/D;AAED;;GAEG;AAEH,wBAAgB,cAAc,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAwB9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CA2C3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAQ5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,GAAE,OAAe;;;;EAM7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,MAAM,EAEhB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,KAAK,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS9C,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB;;;;;0BAMhB,MAAM;uBAGT,MAAM;;;;;EAYvB"}