prompsit-cli 26.225.1206 → 26.227.2006

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 (361) hide show
  1. package/README.md +10 -4
  2. package/dist/api/auth-session.d.ts +11 -11
  3. package/dist/api/auth-session.d.ts.map +1 -1
  4. package/dist/api/auth-session.js +21 -17
  5. package/dist/api/auth-session.js.map +1 -1
  6. package/dist/api/client.d.ts +4 -4
  7. package/dist/api/client.d.ts.map +1 -1
  8. package/dist/api/client.js +8 -8
  9. package/dist/api/client.js.map +1 -1
  10. package/dist/api/curl.d.ts +30 -0
  11. package/dist/api/curl.d.ts.map +1 -0
  12. package/dist/api/curl.js +115 -0
  13. package/dist/api/curl.js.map +1 -0
  14. package/dist/api/errors.d.ts +2 -3
  15. package/dist/api/errors.d.ts.map +1 -1
  16. package/dist/api/errors.js +4 -2
  17. package/dist/api/errors.js.map +1 -1
  18. package/dist/api/http-utils.d.ts +5 -0
  19. package/dist/api/http-utils.d.ts.map +1 -0
  20. package/dist/api/http-utils.js +19 -0
  21. package/dist/api/http-utils.js.map +1 -0
  22. package/dist/api/models.d.ts +135 -89
  23. package/dist/api/models.d.ts.map +1 -1
  24. package/dist/api/models.js +62 -72
  25. package/dist/api/models.js.map +1 -1
  26. package/dist/api/resources/data.d.ts +3 -5
  27. package/dist/api/resources/data.d.ts.map +1 -1
  28. package/dist/api/resources/data.js +11 -12
  29. package/dist/api/resources/data.js.map +1 -1
  30. package/dist/api/resources/discovery.d.ts +26 -0
  31. package/dist/api/resources/discovery.d.ts.map +1 -0
  32. package/dist/api/resources/discovery.js +46 -0
  33. package/dist/api/resources/discovery.js.map +1 -0
  34. package/dist/api/resources/evaluation.d.ts +9 -12
  35. package/dist/api/resources/evaluation.d.ts.map +1 -1
  36. package/dist/api/resources/evaluation.js +45 -20
  37. package/dist/api/resources/evaluation.js.map +1 -1
  38. package/dist/api/resources/formats.d.ts +1 -1
  39. package/dist/api/resources/formats.js +2 -2
  40. package/dist/api/resources/formats.js.map +1 -1
  41. package/dist/api/resources/jobs.d.ts +7 -8
  42. package/dist/api/resources/jobs.d.ts.map +1 -1
  43. package/dist/api/resources/jobs.js +10 -49
  44. package/dist/api/resources/jobs.js.map +1 -1
  45. package/dist/api/resources/languages.d.ts +25 -0
  46. package/dist/api/resources/languages.d.ts.map +1 -0
  47. package/dist/api/resources/languages.js +44 -0
  48. package/dist/api/resources/languages.js.map +1 -0
  49. package/dist/api/resources/translation.d.ts +8 -16
  50. package/dist/api/resources/translation.d.ts.map +1 -1
  51. package/dist/api/resources/translation.js +11 -15
  52. package/dist/api/resources/translation.js.map +1 -1
  53. package/dist/api/sse-client.d.ts +10 -16
  54. package/dist/api/sse-client.d.ts.map +1 -1
  55. package/dist/api/sse-client.js +158 -197
  56. package/dist/api/sse-client.js.map +1 -1
  57. package/dist/api/sse-models.js +1 -1
  58. package/dist/api/sse-models.js.map +1 -1
  59. package/dist/api/trace.js +1 -1
  60. package/dist/api/trace.js.map +1 -1
  61. package/dist/api/transport.d.ts +28 -1
  62. package/dist/api/transport.d.ts.map +1 -1
  63. package/dist/api/transport.js +89 -17
  64. package/dist/api/transport.js.map +1 -1
  65. package/dist/cli/arg-order.d.ts +2 -0
  66. package/dist/cli/arg-order.d.ts.map +1 -1
  67. package/dist/cli/arg-order.js +2 -0
  68. package/dist/cli/arg-order.js.map +1 -1
  69. package/dist/cli/exit-codes.d.ts +0 -2
  70. package/dist/cli/exit-codes.d.ts.map +1 -1
  71. package/dist/cli/exit-codes.js +0 -2
  72. package/dist/cli/exit-codes.js.map +1 -1
  73. package/dist/cli/exit.d.ts +4 -4
  74. package/dist/cli/exit.d.ts.map +1 -1
  75. package/dist/cli/exit.js +4 -4
  76. package/dist/cli/exit.js.map +1 -1
  77. package/dist/cli/prompts.d.ts +0 -2
  78. package/dist/cli/prompts.d.ts.map +1 -1
  79. package/dist/cli/prompts.js +1 -1
  80. package/dist/cli/prompts.js.map +1 -1
  81. package/dist/commands/auth.d.ts.map +1 -1
  82. package/dist/commands/auth.js +0 -1
  83. package/dist/commands/auth.js.map +1 -1
  84. package/dist/commands/batch-processor.d.ts +38 -0
  85. package/dist/commands/batch-processor.d.ts.map +1 -0
  86. package/dist/commands/batch-processor.js +73 -0
  87. package/dist/commands/batch-processor.js.map +1 -0
  88. package/dist/commands/config/api-url.d.ts.map +1 -1
  89. package/dist/commands/config/api-url.js +4 -1
  90. package/dist/commands/config/api-url.js.map +1 -1
  91. package/dist/commands/config/command.d.ts.map +1 -1
  92. package/dist/commands/config/command.js +3 -2
  93. package/dist/commands/config/command.js.map +1 -1
  94. package/dist/commands/config/language.d.ts.map +1 -1
  95. package/dist/commands/config/language.js.map +1 -1
  96. package/dist/commands/config/reset.d.ts.map +1 -1
  97. package/dist/commands/config/reset.js.map +1 -1
  98. package/dist/commands/config/shared.js +3 -3
  99. package/dist/commands/config/shared.js.map +1 -1
  100. package/dist/commands/config/show.d.ts.map +1 -1
  101. package/dist/commands/config/show.js +0 -13
  102. package/dist/commands/config/show.js.map +1 -1
  103. package/dist/commands/data.d.ts.map +1 -1
  104. package/dist/commands/data.js +241 -68
  105. package/dist/commands/data.js.map +1 -1
  106. package/dist/commands/evaluate.d.ts.map +1 -1
  107. package/dist/commands/evaluate.js +111 -29
  108. package/dist/commands/evaluate.js.map +1 -1
  109. package/dist/commands/formats.d.ts +1 -1
  110. package/dist/commands/formats.d.ts.map +1 -1
  111. package/dist/commands/formats.js +5 -12
  112. package/dist/commands/formats.js.map +1 -1
  113. package/dist/commands/health.d.ts +1 -1
  114. package/dist/commands/health.d.ts.map +1 -1
  115. package/dist/commands/health.js +3 -10
  116. package/dist/commands/health.js.map +1 -1
  117. package/dist/commands/job-tracking.d.ts +13 -5
  118. package/dist/commands/job-tracking.d.ts.map +1 -1
  119. package/dist/commands/job-tracking.js +25 -18
  120. package/dist/commands/job-tracking.js.map +1 -1
  121. package/dist/commands/languages.d.ts +12 -0
  122. package/dist/commands/languages.d.ts.map +1 -0
  123. package/dist/commands/languages.js +48 -0
  124. package/dist/commands/languages.js.map +1 -0
  125. package/dist/commands/mappers.d.ts +15 -3
  126. package/dist/commands/mappers.d.ts.map +1 -1
  127. package/dist/commands/mappers.js +38 -18
  128. package/dist/commands/mappers.js.map +1 -1
  129. package/dist/commands/progress-animator.d.ts +2 -1
  130. package/dist/commands/progress-animator.d.ts.map +1 -1
  131. package/dist/commands/progress-animator.js +4 -2
  132. package/dist/commands/progress-animator.js.map +1 -1
  133. package/dist/commands/translate.d.ts.map +1 -1
  134. package/dist/commands/translate.js +149 -87
  135. package/dist/commands/translate.js.map +1 -1
  136. package/dist/config/credentials.d.ts +11 -87
  137. package/dist/config/credentials.d.ts.map +1 -1
  138. package/dist/config/credentials.js +28 -87
  139. package/dist/config/credentials.js.map +1 -1
  140. package/dist/config/env-parser.d.ts.map +1 -1
  141. package/dist/config/env-parser.js +3 -2
  142. package/dist/config/env-parser.js.map +1 -1
  143. package/dist/config/file-utils.js +1 -1
  144. package/dist/config/file-utils.js.map +1 -1
  145. package/dist/config/index.d.ts +4 -7
  146. package/dist/config/index.d.ts.map +1 -1
  147. package/dist/config/index.js +6 -12
  148. package/dist/config/index.js.map +1 -1
  149. package/dist/config/schemas.d.ts +4 -33
  150. package/dist/config/schemas.d.ts.map +1 -1
  151. package/dist/config/schemas.js +14 -19
  152. package/dist/config/schemas.js.map +1 -1
  153. package/dist/config/settings.d.ts +4 -4
  154. package/dist/config/settings.d.ts.map +1 -1
  155. package/dist/config/settings.js +16 -21
  156. package/dist/config/settings.js.map +1 -1
  157. package/dist/config/toml-io.js +1 -1
  158. package/dist/config/toml-io.js.map +1 -1
  159. package/dist/constants.d.ts +10 -9
  160. package/dist/constants.d.ts.map +1 -1
  161. package/dist/constants.js +10 -9
  162. package/dist/constants.js.map +1 -1
  163. package/dist/errors/catalog.d.ts.map +1 -1
  164. package/dist/errors/catalog.js +6 -8
  165. package/dist/errors/catalog.js.map +1 -1
  166. package/dist/errors/contracts.d.ts.map +1 -1
  167. package/dist/errors/contracts.js +2 -3
  168. package/dist/errors/contracts.js.map +1 -1
  169. package/dist/i18n/cache.d.ts +0 -2
  170. package/dist/i18n/cache.d.ts.map +1 -1
  171. package/dist/i18n/cache.js +4 -4
  172. package/dist/i18n/cache.js.map +1 -1
  173. package/dist/i18n/catalog.d.ts +34 -37
  174. package/dist/i18n/catalog.d.ts.map +1 -1
  175. package/dist/i18n/catalog.js +38 -40
  176. package/dist/i18n/catalog.js.map +1 -1
  177. package/dist/i18n/index.d.ts +0 -1
  178. package/dist/i18n/index.d.ts.map +1 -1
  179. package/dist/i18n/index.js +0 -3
  180. package/dist/i18n/index.js.map +1 -1
  181. package/dist/i18n/translator-adapter.js +1 -1
  182. package/dist/i18n/translator-adapter.js.map +1 -1
  183. package/dist/i18n/translator.d.ts.map +1 -1
  184. package/dist/i18n/translator.js +1 -0
  185. package/dist/i18n/translator.js.map +1 -1
  186. package/dist/index.d.ts +1 -2
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +2 -3
  189. package/dist/index.js.map +1 -1
  190. package/dist/logging/console-handler.js +1 -1
  191. package/dist/logging/console-handler.js.map +1 -1
  192. package/dist/logging/file-handler.d.ts.map +1 -1
  193. package/dist/logging/file-handler.js +4 -5
  194. package/dist/logging/file-handler.js.map +1 -1
  195. package/dist/logging/index.d.ts +2 -2
  196. package/dist/logging/index.d.ts.map +1 -1
  197. package/dist/logging/index.js +1 -1
  198. package/dist/logging/index.js.map +1 -1
  199. package/dist/logging/logger.d.ts +18 -22
  200. package/dist/logging/logger.d.ts.map +1 -1
  201. package/dist/logging/logger.js +38 -64
  202. package/dist/logging/logger.js.map +1 -1
  203. package/dist/logging/loki-handler.js +1 -1
  204. package/dist/logging/loki-handler.js.map +1 -1
  205. package/dist/logging/setup.d.ts +4 -3
  206. package/dist/logging/setup.d.ts.map +1 -1
  207. package/dist/logging/setup.js +136 -33
  208. package/dist/logging/setup.js.map +1 -1
  209. package/dist/output/ansi-utils.d.ts +13 -0
  210. package/dist/output/ansi-utils.d.ts.map +1 -0
  211. package/dist/output/ansi-utils.js +37 -0
  212. package/dist/output/ansi-utils.js.map +1 -0
  213. package/dist/output/index.d.ts +2 -5
  214. package/dist/output/index.d.ts.map +1 -1
  215. package/dist/output/index.js +3 -2
  216. package/dist/output/index.js.map +1 -1
  217. package/dist/output/output-events.d.ts +0 -1
  218. package/dist/output/output-events.d.ts.map +1 -1
  219. package/dist/output/tables/catalog.d.ts +5 -2
  220. package/dist/output/tables/catalog.d.ts.map +1 -1
  221. package/dist/output/tables/catalog.js +65 -9
  222. package/dist/output/tables/catalog.js.map +1 -1
  223. package/dist/output/tables/evaluation.d.ts.map +1 -1
  224. package/dist/output/tables/evaluation.js +3 -0
  225. package/dist/output/tables/evaluation.js.map +1 -1
  226. package/dist/output/tables/health-status.d.ts.map +1 -1
  227. package/dist/output/tables/health-status.js +11 -7
  228. package/dist/output/tables/health-status.js.map +1 -1
  229. package/dist/output/tables/index.d.ts +3 -3
  230. package/dist/output/tables/index.d.ts.map +1 -1
  231. package/dist/output/tables/index.js +2 -2
  232. package/dist/output/tables/index.js.map +1 -1
  233. package/dist/output/tables/render.d.ts.map +1 -1
  234. package/dist/output/tables/render.js +2 -10
  235. package/dist/output/tables/render.js.map +1 -1
  236. package/dist/output/terminal.d.ts +1 -5
  237. package/dist/output/terminal.d.ts.map +1 -1
  238. package/dist/output/terminal.js +25 -24
  239. package/dist/output/terminal.js.map +1 -1
  240. package/dist/output/view-models.d.ts +28 -2
  241. package/dist/output/view-models.d.ts.map +1 -1
  242. package/dist/program.d.ts.map +1 -1
  243. package/dist/program.js +21 -29
  244. package/dist/program.js.map +1 -1
  245. package/dist/repl/controller.d.ts.map +1 -1
  246. package/dist/repl/controller.js +82 -47
  247. package/dist/repl/controller.js.map +1 -1
  248. package/dist/repl/core/output-bridge.d.ts.map +1 -1
  249. package/dist/repl/core/output-bridge.js +6 -4
  250. package/dist/repl/core/output-bridge.js.map +1 -1
  251. package/dist/repl/core/progress-types.d.ts +1 -1
  252. package/dist/repl/core/progress-types.d.ts.map +1 -1
  253. package/dist/repl/core/progress-types.js +1 -1
  254. package/dist/repl/core/progress-types.js.map +1 -1
  255. package/dist/repl/examples.d.ts +5 -7
  256. package/dist/repl/examples.d.ts.map +1 -1
  257. package/dist/repl/examples.js +27 -14
  258. package/dist/repl/examples.js.map +1 -1
  259. package/dist/repl/executor.d.ts +2 -4
  260. package/dist/repl/executor.d.ts.map +1 -1
  261. package/dist/repl/executor.js +69 -58
  262. package/dist/repl/executor.js.map +1 -1
  263. package/dist/repl/help.d.ts +10 -3
  264. package/dist/repl/help.d.ts.map +1 -1
  265. package/dist/repl/help.js +31 -4
  266. package/dist/repl/help.js.map +1 -1
  267. package/dist/repl/history/command-history.js +5 -5
  268. package/dist/repl/history/command-history.js.map +1 -1
  269. package/dist/repl/history/output-render.d.ts +1 -3
  270. package/dist/repl/history/output-render.d.ts.map +1 -1
  271. package/dist/repl/history/output-render.js +4 -6
  272. package/dist/repl/history/output-render.js.map +1 -1
  273. package/dist/repl/history/output-store.d.ts.map +1 -1
  274. package/dist/repl/history/output-store.js +6 -3
  275. package/dist/repl/history/output-store.js.map +1 -1
  276. package/dist/repl/input/autocomplete-provider.d.ts.map +1 -1
  277. package/dist/repl/input/autocomplete-provider.js +1 -2
  278. package/dist/repl/input/autocomplete-provider.js.map +1 -1
  279. package/dist/repl/input/completer.d.ts +0 -2
  280. package/dist/repl/input/completer.d.ts.map +1 -1
  281. package/dist/repl/input/completer.js +9 -7
  282. package/dist/repl/input/completer.js.map +1 -1
  283. package/dist/repl/input/ghost-text.d.ts +1 -1
  284. package/dist/repl/input/ghost-text.d.ts.map +1 -1
  285. package/dist/repl/input/ghost-text.js +1 -1
  286. package/dist/repl/input/ghost-text.js.map +1 -1
  287. package/dist/repl/input/input-handler.d.ts.map +1 -1
  288. package/dist/repl/input/input-handler.js +21 -15
  289. package/dist/repl/input/input-handler.js.map +1 -1
  290. package/dist/repl/input/keybindings.d.ts +0 -5
  291. package/dist/repl/input/keybindings.d.ts.map +1 -1
  292. package/dist/repl/input/keybindings.js +0 -65
  293. package/dist/repl/input/keybindings.js.map +1 -1
  294. package/dist/repl/loop.d.ts +1 -2
  295. package/dist/repl/loop.d.ts.map +1 -1
  296. package/dist/repl/loop.js +14 -14
  297. package/dist/repl/loop.js.map +1 -1
  298. package/dist/repl/registry.d.ts +28 -20
  299. package/dist/repl/registry.d.ts.map +1 -1
  300. package/dist/repl/registry.js +229 -171
  301. package/dist/repl/registry.js.map +1 -1
  302. package/dist/repl/service.d.ts +1 -10
  303. package/dist/repl/service.d.ts.map +1 -1
  304. package/dist/repl/service.js +15 -26
  305. package/dist/repl/service.js.map +1 -1
  306. package/dist/repl/ui/components/curl-panel.js +4 -4
  307. package/dist/repl/ui/components/curl-panel.js.map +1 -1
  308. package/dist/repl/ui/components/ghost-text-editor.d.ts +4 -0
  309. package/dist/repl/ui/components/ghost-text-editor.d.ts.map +1 -1
  310. package/dist/repl/ui/components/ghost-text-editor.js +17 -6
  311. package/dist/repl/ui/components/ghost-text-editor.js.map +1 -1
  312. package/dist/repl/ui/components/history-component.d.ts.map +1 -1
  313. package/dist/repl/ui/components/history-component.js +7 -69
  314. package/dist/repl/ui/components/history-component.js.map +1 -1
  315. package/dist/repl/ui/components/progress-bar.js.map +1 -1
  316. package/dist/repl/ui/components/status-bar-line.js +1 -1
  317. package/dist/repl/ui/components/status-bar-line.js.map +1 -1
  318. package/dist/repl/ui/data.js +3 -3
  319. package/dist/repl/ui/data.js.map +1 -1
  320. package/dist/repl/ui/hint-state.d.ts +0 -1
  321. package/dist/repl/ui/hint-state.d.ts.map +1 -1
  322. package/dist/repl/ui/hint-state.js +1 -1
  323. package/dist/repl/ui/hint-state.js.map +1 -1
  324. package/dist/repl/ui/selection-utils.d.ts +28 -0
  325. package/dist/repl/ui/selection-utils.d.ts.map +1 -0
  326. package/dist/repl/ui/selection-utils.js +70 -0
  327. package/dist/repl/ui/selection-utils.js.map +1 -0
  328. package/dist/repl/ui/status-bar.d.ts +1 -4
  329. package/dist/repl/ui/status-bar.d.ts.map +1 -1
  330. package/dist/repl/ui/status-bar.js +6 -33
  331. package/dist/repl/ui/status-bar.js.map +1 -1
  332. package/dist/runtime/async-utils.d.ts +16 -0
  333. package/dist/runtime/async-utils.d.ts.map +1 -0
  334. package/dist/runtime/async-utils.js +40 -0
  335. package/dist/runtime/async-utils.js.map +1 -0
  336. package/dist/runtime/clipboard-win32.d.ts.map +1 -1
  337. package/dist/runtime/clipboard-win32.js +2 -1
  338. package/dist/runtime/clipboard-win32.js.map +1 -1
  339. package/dist/runtime/clipboard.d.ts.map +1 -1
  340. package/dist/runtime/clipboard.js +6 -2
  341. package/dist/runtime/clipboard.js.map +1 -1
  342. package/dist/runtime/external-transport.d.ts.map +1 -1
  343. package/dist/runtime/external-transport.js +1 -1
  344. package/dist/runtime/external-transport.js.map +1 -1
  345. package/dist/runtime/file-args.d.ts +38 -0
  346. package/dist/runtime/file-args.d.ts.map +1 -0
  347. package/dist/runtime/file-args.js +133 -0
  348. package/dist/runtime/file-args.js.map +1 -0
  349. package/dist/runtime/platform.d.ts +0 -2
  350. package/dist/runtime/platform.d.ts.map +1 -1
  351. package/dist/runtime/platform.js +0 -6
  352. package/dist/runtime/platform.js.map +1 -1
  353. package/dist/tui/settings-screen.d.ts +1 -13
  354. package/dist/tui/settings-screen.d.ts.map +1 -1
  355. package/dist/tui/settings-screen.js +46 -34
  356. package/dist/tui/settings-screen.js.map +1 -1
  357. package/dist/version.d.ts.map +1 -1
  358. package/dist/version.js +3 -2
  359. package/dist/version.js.map +1 -1
  360. package/examples/sample.tmx +6 -0
  361. package/package.json +18 -7
@@ -1 +1 @@
1
- {"version":3,"file":"file-handler.js","sourceRoot":"","sources":["../../src/logging/file-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-handler.js","sourceRoot":"","sources":["../../src/logging/file-handler.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { logger, getTraceId, traceStore, getLogger } from "./logger.ts";
2
- export type { LogLevel, ModuleLogger } from "./logger.ts";
1
+ export { getTraceId, traceStore, getLogger } from "./logger.ts";
2
+ export type { ModuleLogger } from "./logger.ts";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -2,5 +2,5 @@
2
2
  //
3
3
  // IMPORTANT: This module must remain free of handler imports to avoid
4
4
  // circular dependencies. Setup logic lives in ./setup.ts.
5
- export { logger, getTraceId, traceStore, getLogger } from "./logger.js";
5
+ export { getTraceId, traceStore, getLogger } from "./logger.js";
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAE1D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAE1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1,33 +1,26 @@
1
1
  /**
2
- * Minimal structured logger with pluggable handlers.
2
+ * Structured logger powered by pino.
3
3
  *
4
- * Design: Simple handler array (no framework overhead).
5
- * Each handler receives (level, message, metadata).
6
- * AsyncLocalStorage propagates trace_id across async boundaries.
4
+ * Design: Lazy-dispatch wrappers getLogger() returns objects that
5
+ * delegate to the current _pino instance on every call. This ensures
6
+ * module-level loggers created before setupLogging() work correctly
7
+ * after initialization (pino.child() would bind to pre-init parent).
7
8
  *
8
- * Unlike Python's logging module with QueueHandler/QueueListener,
9
- * Node.js uses async fetch (fire-and-forget) — no thread needed.
9
+ * AsyncLocalStorage propagates trace_id across async boundaries via mixin.
10
10
  */
11
11
  import { AsyncLocalStorage } from "node:async_hooks";
12
- /** AsyncLocalStorage for trace_id (Node.js equivalent of Python contextvars). */
12
+ import pino from "pino";
13
+ /** AsyncLocalStorage for trace_id propagation across async boundaries. */
13
14
  export declare const traceStore: AsyncLocalStorage<string>;
14
15
  /** Get current trace_id from async context, or empty string. */
15
16
  export declare function getTraceId(): string;
16
17
  export type LogLevel = "debug" | "info" | "warn" | "error";
17
- export type LogHandler = (level: LogLevel, message: string, meta: Record<string, string>) => void;
18
- export declare const LEVEL_PRIORITY: Record<LogLevel, number>;
19
- declare class Logger {
20
- private handlers;
21
- addHandler(handler: LogHandler): void;
22
- debug(message: string, meta?: Record<string, string>): void;
23
- info(message: string, meta?: Record<string, string>): void;
24
- warn(message: string, meta?: Record<string, string>): void;
25
- error(message: string, error?: Error, meta?: Record<string, string>): void;
26
- private dispatch;
27
- }
28
- /** Singleton logger instance. */
29
- export declare const logger: Logger;
30
- /** Per-module logger context (mirrors Python logging.getLogger(__name__)). */
18
+ /**
19
+ * Replace the pino instance. Called once by setupLogging().
20
+ * All existing getLogger() wrappers immediately dispatch to the new instance.
21
+ */
22
+ export declare function initPino(instance: pino.Logger): void;
23
+ /** Per-module logger context. */
31
24
  export interface ModuleLogger {
32
25
  debug(message: string, meta?: Record<string, string>): void;
33
26
  info(message: string, meta?: Record<string, string>): void;
@@ -37,8 +30,11 @@ export interface ModuleLogger {
37
30
  /**
38
31
  * Create a per-module logger that auto-injects module name into metadata.
39
32
  *
33
+ * Returns a lazy-dispatch wrapper: each call delegates to the current _pino
34
+ * instance, NOT a pino.child() bound at creation time. This is critical
35
+ * because 13 modules create loggers at import-time before setupLogging().
36
+ *
40
37
  * @param moduleUrl - Pass `import.meta.url` to auto-detect module name.
41
38
  */
42
39
  export declare function getLogger(moduleUrl: string): ModuleLogger;
43
- export {};
44
40
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,iFAAiF;AACjF,eAAO,MAAM,UAAU,2BAAkC,CAAC;AAE1D,gEAAgE;AAChE,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAID,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;AAElG,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKnD,CAAC;AAEF,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAoB;IACpC,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAI3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAI1D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAI1D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAY1E,OAAO,CAAC,QAAQ;CAejB;AAED,iCAAiC;AACjC,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC5E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAsBzD"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,0EAA0E;AAC1E,eAAO,MAAM,UAAU,2BAAkC,CAAC;AAE1D,gEAAgE;AAChE,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAID,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAI3D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAEpD;AAED,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAqBzD"}
@@ -1,94 +1,68 @@
1
1
  /**
2
- * Minimal structured logger with pluggable handlers.
2
+ * Structured logger powered by pino.
3
3
  *
4
- * Design: Simple handler array (no framework overhead).
5
- * Each handler receives (level, message, metadata).
6
- * AsyncLocalStorage propagates trace_id across async boundaries.
4
+ * Design: Lazy-dispatch wrappers getLogger() returns objects that
5
+ * delegate to the current _pino instance on every call. This ensures
6
+ * module-level loggers created before setupLogging() work correctly
7
+ * after initialization (pino.child() would bind to pre-init parent).
7
8
  *
8
- * Unlike Python's logging module with QueueHandler/QueueListener,
9
- * Node.js uses async fetch (fire-and-forget) — no thread needed.
9
+ * AsyncLocalStorage propagates trace_id across async boundaries via mixin.
10
10
  */
11
11
  import { AsyncLocalStorage } from "node:async_hooks";
12
+ import pino from "pino";
12
13
  // --- Trace ID propagation ---
13
- /** AsyncLocalStorage for trace_id (Node.js equivalent of Python contextvars). */
14
+ /** AsyncLocalStorage for trace_id propagation across async boundaries. */
14
15
  export const traceStore = new AsyncLocalStorage();
15
16
  /** Get current trace_id from async context, or empty string. */
16
17
  export function getTraceId() {
17
18
  return traceStore.getStore() ?? "";
18
19
  }
19
- export const LEVEL_PRIORITY = {
20
- debug: 10,
21
- info: 20,
22
- warn: 30,
23
- error: 40,
24
- };
25
- class Logger {
26
- handlers = [];
27
- addHandler(handler) {
28
- this.handlers.push(handler);
29
- }
30
- debug(message, meta) {
31
- this.dispatch("debug", message, meta);
32
- }
33
- info(message, meta) {
34
- this.dispatch("info", message, meta);
35
- }
36
- warn(message, meta) {
37
- this.dispatch("warn", message, meta);
38
- }
39
- error(message, error, meta) {
40
- const errorMeta = {};
41
- if (error) {
42
- errorMeta.error_type = error.constructor.name;
43
- errorMeta.exception_message = error.message;
44
- if (error.stack) {
45
- errorMeta.stack = error.stack;
46
- }
47
- }
48
- this.dispatch("error", message, { ...errorMeta, ...meta });
49
- }
50
- dispatch(level, message, meta) {
51
- const traceId = getTraceId();
52
- const enriched = {
53
- trace_id: traceId,
54
- ...meta,
55
- };
56
- for (const handler of this.handlers) {
57
- try {
58
- handler(level, message, enriched);
59
- }
60
- catch {
61
- // Handler errors must never propagate
62
- }
63
- }
64
- }
20
+ /** Pre-init: silent logger (no output). Replaced by initPino() during setup. */
21
+ let _pino = pino({ level: "silent" });
22
+ /**
23
+ * Replace the pino instance. Called once by setupLogging().
24
+ * All existing getLogger() wrappers immediately dispatch to the new instance.
25
+ */
26
+ export function initPino(instance) {
27
+ _pino = instance;
65
28
  }
66
- /** Singleton logger instance. */
67
- export const logger = new Logger();
68
29
  /**
69
30
  * Create a per-module logger that auto-injects module name into metadata.
70
31
  *
32
+ * Returns a lazy-dispatch wrapper: each call delegates to the current _pino
33
+ * instance, NOT a pino.child() bound at creation time. This is critical
34
+ * because 13 modules create loggers at import-time before setupLogging().
35
+ *
71
36
  * @param moduleUrl - Pass `import.meta.url` to auto-detect module name.
72
37
  */
73
38
  export function getLogger(moduleUrl) {
74
- const moduleName = moduleUrl
75
- .replace(/^file:\/\/\//, "")
76
- .replace(/\\/g, "/")
77
- .split("/src/")[1]
78
- ?.replace(/\.ts$/, "") ?? "unknown";
39
+ const moduleName = parseModuleName(moduleUrl);
79
40
  return {
80
41
  debug: (msg, meta) => {
81
- logger.debug(msg, { module: moduleName, ...meta });
42
+ _pino.debug({ module: moduleName, ...meta }, msg);
82
43
  },
83
44
  info: (msg, meta) => {
84
- logger.info(msg, { module: moduleName, ...meta });
45
+ _pino.info({ module: moduleName, ...meta }, msg);
85
46
  },
86
47
  warn: (msg, meta) => {
87
- logger.warn(msg, { module: moduleName, ...meta });
48
+ _pino.warn({ module: moduleName, ...meta }, msg);
88
49
  },
89
50
  error: (msg, err, meta) => {
90
- logger.error(msg, err, { module: moduleName, ...meta });
51
+ if (err) {
52
+ _pino.error({ err, module: moduleName, ...meta }, msg);
53
+ }
54
+ else {
55
+ _pino.error({ module: moduleName, ...meta }, msg);
56
+ }
91
57
  },
92
58
  };
93
59
  }
60
+ /** Extract module name from import.meta.url (e.g. "api/sse-client"). */
61
+ function parseModuleName(moduleUrl) {
62
+ return (moduleUrl
63
+ .replace(/^file:\/\/\//, "")
64
+ .replaceAll("\\", "/")
65
+ .split("/src/")[1]
66
+ ?.replace(/\.ts$/, "") ?? "unknown");
67
+ }
94
68
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,+BAA+B;AAE/B,iFAAiF;AACjF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAE1D,gEAAgE;AAChE,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAOD,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,MAAM;IACF,QAAQ,GAAiB,EAAE,CAAC;IACpC,UAAU,CAAC,OAAmB;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA6B;QAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA6B;QACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA6B;QACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,IAA6B;QACjE,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC9C,SAAS,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC;YAC5C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEO,QAAQ,CAAC,KAAe,EAAE,OAAe,EAAE,IAA6B;QAC9E,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAA2B;YACvC,QAAQ,EAAE,OAAO;YACjB,GAAG,IAAI;SACR,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAUnC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,MAAM,UAAU,GACd,SAAS;SACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IAExC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,GAAI,EAAE,IAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,+BAA+B;AAE/B,0EAA0E;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAE1D,gEAAgE;AAChE,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAKD,gFAAgF;AAChF,IAAI,KAAK,GAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAqB;IAC5C,KAAK,GAAG,QAAQ,CAAC;AACnB,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnB,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,GAAI,EAAE,IAAK,EAAE,EAAE;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,CACL,SAAS;SACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CACtC,CAAC;AACJ,CAAC"}
@@ -28,7 +28,7 @@ export class LokiHandler {
28
28
  _inFlight = 0;
29
29
  maxInFlight = 10;
30
30
  constructor(lokiUrl, lokiKey, labels = {}, timeoutMs = 3000) {
31
- this.pushUrl = lokiUrl.replace(/\/+$/, "") + "/loki/api/v1/push";
31
+ this.pushUrl = lokiUrl.replace(/\/{1,100}$/, "") + "/loki/api/v1/push";
32
32
  this.lokiKey = lokiKey;
33
33
  this.labels = {
34
34
  service: "prompsit-cli",
@@ -1 +1 @@
1
- {"version":3,"file":"loki-handler.js","sourceRoot":"","sources":["../../src/logging/loki-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loki-handler.js","sourceRoot":"","sources":["../../src/logging/loki-handler.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  /** Silence the console handler (use in REPL mode to avoid raw stderr noise in TUI). */
2
2
  export declare function silenceConsole(): void;
3
3
  /**
4
- * Initialize logging with console, file, and optional Loki handlers.
4
+ * Initialize logging with pino multistream: console (pretty), file, and optional Loki.
5
5
  *
6
6
  * Console level follows cli.log_level from config.
7
- * File handler always captures DEBUG (full diagnostics).
7
+ * File stream always captures DEBUG (full diagnostics).
8
+ * Root pino level = "debug" (lowest stream level, required by multistream).
8
9
  */
9
10
  export declare function setupLogging(): void;
10
- /** Flush and close file handler on shutdown. */
11
+ /** Flush and close file destination on shutdown. */
11
12
  export declare function shutdownLogging(): void;
12
13
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/logging/setup.ts"],"names":[],"mappings":"AAqBA,uFAAuF;AACvF,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,IAAI,CA8CnC;AAED,gDAAgD;AAChD,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/logging/setup.ts"],"names":[],"mappings":"AAuBA,uFAAuF;AACvF,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAsEnC;AAED,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,IAAI,CAWtC"}
@@ -1,29 +1,32 @@
1
- // Logging setup: configures logger with console, file, and optional Loki handlers.
1
+ // Logging setup: configures pino with console (pretty), file, and optional Loki streams.
2
2
  //
3
3
  // Separated from index.ts to break circular dependency:
4
4
  // index.ts is a pure barrel (safe to import anywhere),
5
- // setup.ts pulls in handlers that have transitive deps on logging consumers.
5
+ // setup.ts pulls in pino-pretty and handlers with transitive deps.
6
6
  //
7
7
  // Call setupLogging() once at startup (src/index.ts).
8
+ import * as fs from "node:fs";
8
9
  import * as path from "node:path";
10
+ import { Writable } from "node:stream";
11
+ import pino from "pino";
12
+ import pinoPretty from "pino-pretty";
9
13
  import { getSettings, getSettingsDiagnostics, resolveLokiPreset } from "../config/index.js";
10
14
  import { getConfigDir } from "../config/paths.js";
11
- import { ConsoleHandler } from "./console-handler.js";
12
- import { FileHandler } from "./file-handler.js";
13
15
  import { LokiHandler } from "./loki-handler.js";
14
- import { logger } from "./logger.js";
16
+ import { getTraceId, initPino } from "./logger.js";
15
17
  let _initialized = false;
16
- let _fileHandler = null;
18
+ let _fileDestination = null;
17
19
  let _consoleEnabled = true;
18
20
  /** Silence the console handler (use in REPL mode to avoid raw stderr noise in TUI). */
19
21
  export function silenceConsole() {
20
22
  _consoleEnabled = false;
21
23
  }
22
24
  /**
23
- * Initialize logging with console, file, and optional Loki handlers.
25
+ * Initialize logging with pino multistream: console (pretty), file, and optional Loki.
24
26
  *
25
27
  * Console level follows cli.log_level from config.
26
- * File handler always captures DEBUG (full diagnostics).
28
+ * File stream always captures DEBUG (full diagnostics).
29
+ * Root pino level = "debug" (lowest stream level, required by multistream).
27
30
  */
28
31
  export function setupLogging() {
29
32
  if (_initialized)
@@ -31,43 +34,143 @@ export function setupLogging() {
31
34
  _initialized = true;
32
35
  const settings = getSettings();
33
36
  const settingsDiagnostics = getSettingsDiagnostics();
34
- const level = settings.cli.log_level;
35
- const isDebug = level === "debug";
36
- // 1. Console handler (stderr, level from config, verbose in debug mode)
37
- const consoleHandler = new ConsoleHandler(level, isDebug);
38
- logger.addHandler((lvl, msg, meta) => {
39
- if (_consoleEnabled)
40
- consoleHandler.emit(lvl, msg, meta);
37
+ const configLevel = settings.cli.log_level;
38
+ // 1. Console stream: pino-pretty → gated stderr writable
39
+ const gatedStderr = new Writable({
40
+ write(chunk, _enc, cb) {
41
+ if (_consoleEnabled) {
42
+ process.stderr.write(chunk, cb);
43
+ }
44
+ else {
45
+ cb();
46
+ }
47
+ },
41
48
  });
42
- // 2. File handler (~/.prompsit/debug.log, always all levels)
43
- const logFile = path.join(getConfigDir(), "debug.log");
44
- _fileHandler = new FileHandler(logFile);
45
- logger.addHandler((lvl, msg, meta) => {
46
- _fileHandler?.emit(lvl, msg, meta);
49
+ const prettyStream = pinoPretty({
50
+ colorize: true,
51
+ destination: gatedStderr,
52
+ sync: true,
53
+ ignore: "pid,hostname",
47
54
  });
48
- // 3. Loki telemetry (WARNING+ only, opt-in)
55
+ // 2. File stream: JSON lines to ~/.prompsit/debug.log
56
+ const logFile = path.join(getConfigDir(), "debug.log");
57
+ rotateIfNeeded(logFile);
58
+ _fileDestination = pino.destination({ dest: logFile, sync: true, mkdir: true });
59
+ const streams = [
60
+ { stream: prettyStream, level: configLevel },
61
+ { stream: _fileDestination, level: "debug" },
62
+ ];
49
63
  if (settings.telemetry.enabled) {
50
64
  const preset = resolveLokiPreset(settings);
51
65
  if (preset) {
52
66
  const lokiHandler = new LokiHandler(preset.url, preset.key, {}, settings.telemetry.loki_timeout * 1000);
53
- logger.addHandler((lvl, msg, meta) => {
54
- if (lvl === "warn" || lvl === "error") {
55
- lokiHandler.emit(lvl, msg, meta);
56
- }
57
- });
67
+ streams.push({ stream: createLokiAdapter(lokiHandler), level: "warn" });
58
68
  }
59
69
  }
70
+ // Root level = "debug" (lowest). pino filters BEFORE multistream routing.
71
+ const instance = pino({
72
+ level: "debug",
73
+ mixin() {
74
+ const traceId = getTraceId();
75
+ return traceId ? { trace_id: traceId } : {};
76
+ },
77
+ }, pino.multistream(streams));
78
+ initPino(instance);
60
79
  if (settingsDiagnostics.length > 0) {
61
- logger.warn("Invalid env overrides detected and dropped", {
62
- issues: settingsDiagnostics.join("; "),
63
- });
80
+ instance.warn({ issues: settingsDiagnostics.join("; ") }, "Invalid env overrides detected and dropped");
64
81
  }
65
82
  }
66
- /** Flush and close file handler on shutdown. */
83
+ /** Flush and close file destination on shutdown. */
67
84
  export function shutdownLogging() {
68
- if (_fileHandler) {
69
- _fileHandler.close();
70
- _fileHandler = null;
85
+ if (_fileDestination) {
86
+ // SonicBoom supports flushSync
87
+ if ("flushSync" in _fileDestination && typeof _fileDestination.flushSync === "function") {
88
+ _fileDestination.flushSync();
89
+ }
90
+ if ("end" in _fileDestination && typeof _fileDestination.end === "function") {
91
+ _fileDestination.end();
92
+ }
93
+ _fileDestination = null;
94
+ }
95
+ }
96
+ // --- File rotation ---
97
+ /** Rotate debug.log at startup if it's from a previous day. Keep 1 backup. */
98
+ function rotateIfNeeded(logPath) {
99
+ try {
100
+ if (!fs.existsSync(logPath))
101
+ return;
102
+ const stat = fs.statSync(logPath);
103
+ const fileDate = stat.mtime.toISOString().slice(0, 10);
104
+ const todayStr = new Date().toISOString().slice(0, 10);
105
+ if (fileDate === todayStr)
106
+ return;
107
+ fs.renameSync(logPath, `${logPath}.${fileDate}`);
108
+ // Cleanup: keep only 1 most recent backup
109
+ const dir = path.dirname(logPath);
110
+ const base = path.basename(logPath);
111
+ const backups = fs
112
+ .readdirSync(dir)
113
+ .filter((f) => f.startsWith(base + "."))
114
+ .toSorted((a, b) => b.localeCompare(a));
115
+ for (let i = 1; i < backups.length; i++) {
116
+ fs.unlinkSync(path.join(dir, backups[i]));
117
+ }
71
118
  }
119
+ catch {
120
+ // Ignore rotation errors
121
+ }
122
+ }
123
+ // --- Loki adapter ---
124
+ /** Writable stream that parses pino NDJSON and dispatches to LokiHandler. */
125
+ function createLokiAdapter(lokiHandler) {
126
+ return new Writable({
127
+ write(chunk, _enc, cb) {
128
+ try {
129
+ // SonicBoom may batch multiple lines — split and parse each
130
+ for (const line of chunk.toString().split("\n")) {
131
+ if (!line)
132
+ continue;
133
+ const entry = JSON.parse(line);
134
+ const numLevel = typeof entry.level === "number" ? entry.level : 30;
135
+ const lvl = pino.levels.labels[numLevel] ?? "info";
136
+ const meta = {};
137
+ if (typeof entry.module === "string")
138
+ meta.module = entry.module;
139
+ if (typeof entry.trace_id === "string")
140
+ meta.trace_id = entry.trace_id;
141
+ // Flatten pino err serializer → existing Loki metadata schema
142
+ const err = entry.err;
143
+ if (err) {
144
+ meta.error_type = typeof err.type === "string" ? err.type : "";
145
+ meta.exception_message = typeof err.message === "string" ? err.message : "";
146
+ if (typeof err.stack === "string")
147
+ meta.stack = err.stack;
148
+ }
149
+ // Pass remaining string fields (user metadata)
150
+ const excludeKeys = new Set([
151
+ "msg",
152
+ "level",
153
+ "time",
154
+ "module",
155
+ "trace_id",
156
+ "pid",
157
+ "hostname",
158
+ "err",
159
+ ]);
160
+ for (const [k, v] of Object.entries(entry)) {
161
+ if (typeof v === "string" && !excludeKeys.has(k)) {
162
+ meta[k] = v;
163
+ }
164
+ }
165
+ const msg = typeof entry.msg === "string" ? entry.msg : "";
166
+ lokiHandler.emit(lvl, msg, meta);
167
+ }
168
+ }
169
+ catch {
170
+ // Telemetry must never throw
171
+ }
172
+ cb();
173
+ },
174
+ });
72
175
  }
73
176
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/logging/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/logging/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Remove ANSI CSI escape sequences from string.
3
+ *
4
+ * Parses CSI sequences per ECMA-48: ESC [ <params> <final byte>.
5
+ * Final byte range: 0x40-0x7E (@, A-Z, a-z, [, \, ], ^, _, `, {, |, }, ~).
6
+ * This correctly handles cursor movement, SGR, and all other CSI commands.
7
+ */
8
+ export declare function stripAnsi(text: string): string;
9
+ /**
10
+ * Visible (terminal) width: Unicode code-point count after ANSI stripping.
11
+ */
12
+ export declare function visibleWidth(text: string): number;
13
+ //# sourceMappingURL=ansi-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-utils.d.ts","sourceRoot":"","sources":["../../src/output/ansi-utils.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD"}
@@ -0,0 +1,37 @@
1
+ // Shared ANSI escape sequence utilities.
2
+ // Handles all CSI sequences (final bytes 0x40-0x7E), not just SGR (*m).
3
+ /**
4
+ * Remove ANSI CSI escape sequences from string.
5
+ *
6
+ * Parses CSI sequences per ECMA-48: ESC [ <params> <final byte>.
7
+ * Final byte range: 0x40-0x7E (@, A-Z, a-z, [, \, ], ^, _, `, {, |, }, ~).
8
+ * This correctly handles cursor movement, SGR, and all other CSI commands.
9
+ */
10
+ export function stripAnsi(text) {
11
+ let result = "";
12
+ let i = 0;
13
+ while (i < text.length) {
14
+ if (text[i] === "\u001B" && text[i + 1] === "[") {
15
+ i += 2;
16
+ while (i < text.length) {
17
+ const code = text.codePointAt(i) ?? 0;
18
+ const isFinalByte = code >= 0x40 && code <= 0x7e;
19
+ i++;
20
+ if (isFinalByte)
21
+ break;
22
+ }
23
+ continue;
24
+ }
25
+ result += text[i];
26
+ i++;
27
+ }
28
+ return result;
29
+ }
30
+ /**
31
+ * Visible (terminal) width: Unicode code-point count after ANSI stripping.
32
+ */
33
+ export function visibleWidth(text) {
34
+ // eslint-disable-next-line @typescript-eslint/no-misused-spread -- intentional Unicode code-point counting
35
+ return [...stripAnsi(text)].length;
36
+ }
37
+ //# sourceMappingURL=ansi-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-utils.js","sourceRoot":"","sources":["../../src/output/ansi-utils.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,wEAAwE;AAExE;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAChD,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;gBACjD,CAAC,EAAE,CAAC;gBACJ,IAAI,WAAW;oBAAE,MAAM;YACzB,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,2GAA2G;IAC3G,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC"}
@@ -1,6 +1,3 @@
1
- export { terminal, setTerminal, clearTerminal, CliTerminal, ReplTerminal, chalk, chalkStderr, } from "./terminal.ts";
2
- export type { Terminal } from "./terminal.ts";
3
- export { renderTable, createHealthTableModel, createTranslationTableModel, createEvaluationTableModel, createEnginesTableModel, createFormatsTableModel, } from "./tables/index.ts";
4
- export type { TableModel, TableRenderContext, TableRenderMode, } from "./tables/index.ts";
5
- export type { HealthResponseVM, ServiceHealthInfoVM, TranslationResponseVM, EvaluationResponseVM, EnginePairVM, FormatInfoVM, } from "./view-models.ts";
1
+ export { terminal } from "./terminal.ts";
2
+ export { createHealthTableModel, createTranslationTableModel, createEvaluationTableModel, createLanguagesTableModel, createFormatsTableModel, createQeFormatsTableModel, createDataFormatsTableModel, createAnnotateOptionsTableModel, } from "./tables/index.ts";
6
3
  //# sourceMappingURL=index.d.ts.map