@vibesdotdev/logging 0.0.1 → 1.0.0-rc.4

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 (700) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +89 -54
  3. package/dist/audit/audit-retention.job.descriptor.d.ts +60 -0
  4. package/dist/audit/audit-retention.job.descriptor.d.ts.map +1 -0
  5. package/dist/audit/audit-retention.job.descriptor.js +42 -0
  6. package/dist/audit/audit-retention.job.descriptor.js.map +1 -0
  7. package/dist/audit/audit-retention.job.impl.d.ts +23 -0
  8. package/dist/audit/audit-retention.job.impl.d.ts.map +1 -0
  9. package/dist/audit/audit-retention.job.impl.js +24 -0
  10. package/dist/audit/audit-retention.job.impl.js.map +1 -0
  11. package/dist/audit/audit.descriptor.d.ts +6 -0
  12. package/dist/audit/audit.descriptor.d.ts.map +1 -1
  13. package/dist/audit/audit.descriptor.js +72 -5
  14. package/dist/audit/audit.descriptor.js.map +1 -1
  15. package/dist/audit/audit.storage.schema.d.ts +3 -3
  16. package/dist/audit/index.d.ts +3 -1
  17. package/dist/audit/index.d.ts.map +1 -1
  18. package/dist/audit/index.js +4 -1
  19. package/dist/audit/index.js.map +1 -1
  20. package/dist/audit/scheduled-audit-retention.d.ts +39 -0
  21. package/dist/audit/scheduled-audit-retention.d.ts.map +1 -0
  22. package/dist/audit/scheduled-audit-retention.js +38 -0
  23. package/dist/audit/scheduled-audit-retention.js.map +1 -0
  24. package/dist/browser/capture-error.d.ts +66 -0
  25. package/dist/browser/capture-error.d.ts.map +1 -0
  26. package/dist/browser/capture-error.js +82 -0
  27. package/dist/browser/capture-error.js.map +1 -0
  28. package/dist/browser/index.d.ts +11 -0
  29. package/dist/browser/index.d.ts.map +1 -0
  30. package/dist/browser/index.js +16 -0
  31. package/dist/browser/index.js.map +1 -0
  32. package/dist/browser/logging-browser.plugin.d.ts +9 -0
  33. package/dist/browser/logging-browser.plugin.d.ts.map +1 -0
  34. package/dist/browser/logging-browser.plugin.js +26 -0
  35. package/dist/browser/logging-browser.plugin.js.map +1 -0
  36. package/dist/browser/plugin.d.ts +2 -0
  37. package/dist/browser/plugin.d.ts.map +1 -0
  38. package/dist/browser/plugin.js +2 -0
  39. package/dist/browser/plugin.js.map +1 -0
  40. package/dist/browser/read-errors.d.ts +26 -0
  41. package/dist/browser/read-errors.d.ts.map +1 -0
  42. package/dist/browser/read-errors.js +38 -0
  43. package/dist/browser/read-errors.js.map +1 -0
  44. package/dist/browser/sinks/browser/browser.browser.descriptor.d.ts +10 -0
  45. package/dist/browser/sinks/browser/browser.browser.descriptor.d.ts.map +1 -0
  46. package/dist/browser/sinks/browser/browser.browser.descriptor.js +23 -0
  47. package/dist/browser/sinks/browser/browser.browser.descriptor.js.map +1 -0
  48. package/dist/browser/sinks/browser/browser.impl.browser.d.ts +83 -0
  49. package/dist/browser/sinks/browser/browser.impl.browser.d.ts.map +1 -0
  50. package/dist/browser/sinks/browser/browser.impl.browser.js +247 -0
  51. package/dist/browser/sinks/browser/browser.impl.browser.js.map +1 -0
  52. package/dist/cli/failures.d.ts +29 -0
  53. package/dist/cli/failures.d.ts.map +1 -0
  54. package/dist/cli/failures.js +44 -0
  55. package/dist/cli/failures.js.map +1 -0
  56. package/dist/cli/flags.d.ts +24 -0
  57. package/dist/cli/flags.d.ts.map +1 -0
  58. package/dist/cli/flags.js +56 -0
  59. package/dist/cli/flags.js.map +1 -0
  60. package/dist/cli/log-line.d.ts +23 -0
  61. package/dist/cli/log-line.d.ts.map +1 -0
  62. package/dist/cli/log-line.js +39 -0
  63. package/dist/cli/log-line.js.map +1 -0
  64. package/dist/cli/logging.logs.descriptor.d.ts +9 -0
  65. package/dist/cli/logging.logs.descriptor.d.ts.map +1 -0
  66. package/dist/cli/logging.logs.descriptor.js +16 -0
  67. package/dist/cli/logging.logs.descriptor.js.map +1 -0
  68. package/dist/cli/logs.audit.cleanup.descriptor.d.ts +7 -0
  69. package/dist/cli/logs.audit.cleanup.descriptor.d.ts.map +1 -0
  70. package/dist/cli/logs.audit.cleanup.descriptor.js +21 -0
  71. package/dist/cli/logs.audit.cleanup.descriptor.js.map +1 -0
  72. package/dist/cli/logs.audit.cleanup.impl.d.ts +14 -0
  73. package/dist/cli/logs.audit.cleanup.impl.d.ts.map +1 -0
  74. package/dist/cli/logs.audit.cleanup.impl.js +60 -0
  75. package/dist/cli/logs.audit.cleanup.impl.js.map +1 -0
  76. package/dist/cli/logs.audit.descriptor.d.ts +9 -0
  77. package/dist/cli/logs.audit.descriptor.d.ts.map +1 -0
  78. package/dist/cli/logs.audit.descriptor.js +41 -0
  79. package/dist/cli/logs.audit.descriptor.js.map +1 -0
  80. package/dist/cli/logs.audit.group.descriptor.d.ts +7 -0
  81. package/dist/cli/logs.audit.group.descriptor.d.ts.map +1 -0
  82. package/dist/cli/logs.audit.group.descriptor.js +15 -0
  83. package/dist/cli/logs.audit.group.descriptor.js.map +1 -0
  84. package/dist/cli/logs.audit.impl.d.ts +19 -0
  85. package/dist/cli/logs.audit.impl.d.ts.map +1 -0
  86. package/dist/cli/logs.audit.impl.js +83 -0
  87. package/dist/cli/logs.audit.impl.js.map +1 -0
  88. package/dist/cli/logs.descriptor.d.ts +1 -8
  89. package/dist/cli/logs.descriptor.d.ts.map +1 -1
  90. package/dist/cli/logs.descriptor.js +1 -15
  91. package/dist/cli/logs.descriptor.js.map +1 -1
  92. package/dist/cli/logs.list.impl.d.ts +4 -1
  93. package/dist/cli/logs.list.impl.d.ts.map +1 -1
  94. package/dist/cli/logs.list.impl.js +60 -63
  95. package/dist/cli/logs.list.impl.js.map +1 -1
  96. package/dist/cli/logs.rotate.descriptor.d.ts.map +1 -1
  97. package/dist/cli/logs.rotate.descriptor.js +7 -3
  98. package/dist/cli/logs.rotate.descriptor.js.map +1 -1
  99. package/dist/cli/logs.rotate.impl.d.ts +3 -1
  100. package/dist/cli/logs.rotate.impl.d.ts.map +1 -1
  101. package/dist/cli/logs.rotate.impl.js +72 -33
  102. package/dist/cli/logs.rotate.impl.js.map +1 -1
  103. package/dist/cli/logs.search.descriptor.d.ts.map +1 -1
  104. package/dist/cli/logs.search.descriptor.js +4 -0
  105. package/dist/cli/logs.search.descriptor.js.map +1 -1
  106. package/dist/cli/logs.search.impl.d.ts +3 -1
  107. package/dist/cli/logs.search.impl.d.ts.map +1 -1
  108. package/dist/cli/logs.search.impl.js +114 -108
  109. package/dist/cli/logs.search.impl.js.map +1 -1
  110. package/dist/cli/logs.tail.descriptor.d.ts.map +1 -1
  111. package/dist/cli/logs.tail.descriptor.js +2 -1
  112. package/dist/cli/logs.tail.descriptor.js.map +1 -1
  113. package/dist/cli/logs.tail.impl.d.ts +4 -2
  114. package/dist/cli/logs.tail.impl.d.ts.map +1 -1
  115. package/dist/cli/logs.tail.impl.js +84 -57
  116. package/dist/cli/logs.tail.impl.js.map +1 -1
  117. package/dist/cli/logs.view.impl.d.ts +2 -6
  118. package/dist/cli/logs.view.impl.d.ts.map +1 -1
  119. package/dist/cli/logs.view.impl.js +32 -50
  120. package/dist/cli/logs.view.impl.js.map +1 -1
  121. package/dist/cli/output.d.ts +29 -0
  122. package/dist/cli/output.d.ts.map +1 -0
  123. package/dist/cli/output.js +29 -0
  124. package/dist/cli/output.js.map +1 -0
  125. package/dist/{logging.cli.plugin.d.ts → cli/plugin.d.ts} +3 -3
  126. package/dist/cli/plugin.d.ts.map +1 -0
  127. package/dist/cli/plugin.js +45 -0
  128. package/dist/cli/plugin.js.map +1 -0
  129. package/dist/cli/resolve-output.d.ts +25 -0
  130. package/dist/cli/resolve-output.d.ts.map +1 -0
  131. package/dist/cli/resolve-output.js +75 -0
  132. package/dist/cli/resolve-output.js.map +1 -0
  133. package/dist/cli/types.d.ts +13 -5
  134. package/dist/cli/types.d.ts.map +1 -1
  135. package/dist/cli/types.js +3 -3
  136. package/dist/client/logging-client.d.ts +31 -0
  137. package/dist/client/logging-client.d.ts.map +1 -0
  138. package/dist/client/logging-client.js +44 -0
  139. package/dist/client/logging-client.js.map +1 -0
  140. package/dist/config/file-rotation.d.ts +11 -0
  141. package/dist/config/file-rotation.d.ts.map +1 -0
  142. package/dist/config/file-rotation.js +18 -0
  143. package/dist/config/file-rotation.js.map +1 -0
  144. package/dist/config/load-config.d.ts +7 -0
  145. package/dist/config/load-config.d.ts.map +1 -0
  146. package/dist/config/load-config.js +68 -0
  147. package/dist/config/load-config.js.map +1 -0
  148. package/dist/config/logging.config.descriptor.d.ts +350 -0
  149. package/dist/config/logging.config.descriptor.d.ts.map +1 -0
  150. package/dist/config/logging.config.descriptor.js +208 -0
  151. package/dist/config/logging.config.descriptor.js.map +1 -0
  152. package/dist/config/otel-service.d.ts +9 -0
  153. package/dist/config/otel-service.d.ts.map +1 -0
  154. package/dist/config/otel-service.js +18 -0
  155. package/dist/config/otel-service.js.map +1 -0
  156. package/dist/contexts/bootstrap.plugin.d.ts +3 -0
  157. package/dist/contexts/bootstrap.plugin.d.ts.map +1 -0
  158. package/dist/contexts/bootstrap.plugin.js +13 -0
  159. package/dist/contexts/bootstrap.plugin.js.map +1 -0
  160. package/dist/contexts/fallback-logger.d.ts +7 -2
  161. package/dist/contexts/fallback-logger.d.ts.map +1 -1
  162. package/dist/contexts/fallback-logger.js +73 -46
  163. package/dist/contexts/fallback-logger.js.map +1 -1
  164. package/dist/contexts/index.d.ts +2 -2
  165. package/dist/contexts/index.d.ts.map +1 -1
  166. package/dist/contexts/index.js +2 -3
  167. package/dist/contexts/index.js.map +1 -1
  168. package/dist/contexts/logger.d.ts +38 -14
  169. package/dist/contexts/logger.d.ts.map +1 -1
  170. package/dist/contexts/logger.js +241 -62
  171. package/dist/contexts/logger.js.map +1 -1
  172. package/dist/core/attempt.d.ts +30 -0
  173. package/dist/core/attempt.d.ts.map +1 -0
  174. package/dist/core/attempt.js +44 -0
  175. package/dist/core/attempt.js.map +1 -0
  176. package/dist/core/emission-window.d.ts +34 -0
  177. package/dist/core/emission-window.d.ts.map +1 -0
  178. package/dist/core/emission-window.js +25 -0
  179. package/dist/core/emission-window.js.map +1 -0
  180. package/dist/core/endpoint.d.ts +54 -0
  181. package/dist/core/endpoint.d.ts.map +1 -0
  182. package/dist/core/endpoint.js +256 -0
  183. package/dist/core/endpoint.js.map +1 -0
  184. package/dist/core/entry-context.d.ts +106 -0
  185. package/dist/core/entry-context.d.ts.map +1 -0
  186. package/dist/core/entry-context.js +150 -0
  187. package/dist/core/entry-context.js.map +1 -0
  188. package/dist/core/index.d.ts +4 -0
  189. package/dist/core/index.d.ts.map +1 -1
  190. package/dist/core/index.js +5 -0
  191. package/dist/core/index.js.map +1 -1
  192. package/dist/core/logger.d.ts +6 -1
  193. package/dist/core/logger.d.ts.map +1 -1
  194. package/dist/core/logger.js +133 -67
  195. package/dist/core/logger.js.map +1 -1
  196. package/dist/core/namespace.d.ts +5 -2
  197. package/dist/core/namespace.d.ts.map +1 -1
  198. package/dist/core/namespace.js +15 -7
  199. package/dist/core/namespace.js.map +1 -1
  200. package/dist/core/normalize.d.ts +31 -0
  201. package/dist/core/normalize.d.ts.map +1 -0
  202. package/dist/core/normalize.js +67 -0
  203. package/dist/core/normalize.js.map +1 -0
  204. package/dist/core/otlp-headers.d.ts +53 -0
  205. package/dist/core/otlp-headers.d.ts.map +1 -0
  206. package/dist/core/otlp-headers.js +64 -0
  207. package/dist/core/otlp-headers.js.map +1 -0
  208. package/dist/core/otlp-partial-success.d.ts +48 -0
  209. package/dist/core/otlp-partial-success.d.ts.map +1 -0
  210. package/dist/core/otlp-partial-success.js +55 -0
  211. package/dist/core/otlp-partial-success.js.map +1 -0
  212. package/dist/core/outcome.d.ts +21 -0
  213. package/dist/core/outcome.d.ts.map +1 -0
  214. package/dist/core/outcome.js +24 -0
  215. package/dist/core/outcome.js.map +1 -0
  216. package/dist/core/output-resources.d.ts +15 -0
  217. package/dist/core/output-resources.d.ts.map +1 -0
  218. package/dist/core/output-resources.js +51 -0
  219. package/dist/core/output-resources.js.map +1 -0
  220. package/dist/core/parsing.d.ts.map +1 -1
  221. package/dist/core/parsing.js +13 -10
  222. package/dist/core/parsing.js.map +1 -1
  223. package/dist/core/redact.d.ts +161 -0
  224. package/dist/core/redact.d.ts.map +1 -0
  225. package/dist/core/redact.js +581 -0
  226. package/dist/core/redact.js.map +1 -0
  227. package/dist/core/root-identity.d.ts +13 -0
  228. package/dist/core/root-identity.d.ts.map +1 -0
  229. package/dist/core/root-identity.js +23 -0
  230. package/dist/core/root-identity.js.map +1 -0
  231. package/dist/core/types.d.ts +5 -4
  232. package/dist/core/types.d.ts.map +1 -1
  233. package/dist/docs/cli.docs.descriptor.d.ts +4 -0
  234. package/dist/docs/cli.docs.descriptor.d.ts.map +1 -0
  235. package/dist/docs/cli.docs.descriptor.js +97 -0
  236. package/dist/docs/cli.docs.descriptor.js.map +1 -0
  237. package/dist/docs/index.d.ts +7 -0
  238. package/dist/docs/index.d.ts.map +1 -0
  239. package/dist/docs/index.js +7 -0
  240. package/dist/docs/index.js.map +1 -0
  241. package/dist/docs/levels.docs.descriptor.d.ts +1 -1
  242. package/dist/docs/levels.docs.descriptor.d.ts.map +1 -1
  243. package/dist/docs/levels.docs.descriptor.js +112 -246
  244. package/dist/docs/levels.docs.descriptor.js.map +1 -1
  245. package/dist/docs/logging.docs.descriptor.d.ts +4 -0
  246. package/dist/docs/logging.docs.descriptor.d.ts.map +1 -0
  247. package/dist/docs/logging.docs.descriptor.js +105 -0
  248. package/dist/docs/logging.docs.descriptor.js.map +1 -0
  249. package/dist/docs/observability.docs.descriptor.d.ts +4 -0
  250. package/dist/docs/observability.docs.descriptor.d.ts.map +1 -0
  251. package/dist/docs/observability.docs.descriptor.js +152 -0
  252. package/dist/docs/observability.docs.descriptor.js.map +1 -0
  253. package/dist/docs/structured.docs.descriptor.d.ts +1 -1
  254. package/dist/docs/structured.docs.descriptor.d.ts.map +1 -1
  255. package/dist/docs/structured.docs.descriptor.js +111 -267
  256. package/dist/docs/structured.docs.descriptor.js.map +1 -1
  257. package/dist/docs/transports.docs.descriptor.d.ts +1 -1
  258. package/dist/docs/transports.docs.descriptor.d.ts.map +1 -1
  259. package/dist/docs/transports.docs.descriptor.js +129 -344
  260. package/dist/docs/transports.docs.descriptor.js.map +1 -1
  261. package/dist/formatters/json/json.impl.d.ts +1 -1
  262. package/dist/formatters/json/json.impl.d.ts.map +1 -1
  263. package/dist/formatters/json/json.impl.js +3 -2
  264. package/dist/formatters/json/json.impl.js.map +1 -1
  265. package/dist/formatters/json5/json5.impl.d.ts +1 -1
  266. package/dist/formatters/json5/json5.impl.d.ts.map +1 -1
  267. package/dist/formatters/json5/json5.impl.js +3 -2
  268. package/dist/formatters/json5/json5.impl.js.map +1 -1
  269. package/dist/formatters/jsonl/jsonl.impl.d.ts +1 -1
  270. package/dist/formatters/jsonl/jsonl.impl.d.ts.map +1 -1
  271. package/dist/formatters/jsonl/jsonl.impl.js +3 -2
  272. package/dist/formatters/jsonl/jsonl.impl.js.map +1 -1
  273. package/dist/formatters/pretty/{pretty.impl.cli.d.ts → pretty.impl.consumer.d.ts} +1 -1
  274. package/dist/formatters/pretty/pretty.impl.consumer.d.ts.map +1 -0
  275. package/dist/formatters/pretty/{pretty.impl.cli.js → pretty.impl.consumer.js} +1 -1
  276. package/dist/formatters/pretty/pretty.impl.consumer.js.map +1 -0
  277. package/dist/host-files/file-audit.base.d.ts +39 -0
  278. package/dist/host-files/file-audit.base.d.ts.map +1 -0
  279. package/dist/host-files/file-audit.base.js +255 -0
  280. package/dist/host-files/file-audit.base.js.map +1 -0
  281. package/dist/host-files/file-output.base.d.ts +84 -0
  282. package/dist/host-files/file-output.base.d.ts.map +1 -0
  283. package/dist/host-files/file-output.base.js +401 -0
  284. package/dist/host-files/file-output.base.js.map +1 -0
  285. package/dist/host-files/file-output.factory.base.d.ts +31 -0
  286. package/dist/host-files/file-output.factory.base.d.ts.map +1 -0
  287. package/dist/host-files/file-output.factory.base.js +82 -0
  288. package/dist/host-files/file-output.factory.base.js.map +1 -0
  289. package/dist/host-files/file-output.read.base.d.ts +7 -0
  290. package/dist/host-files/file-output.read.base.d.ts.map +1 -0
  291. package/dist/host-files/file-output.read.base.js +229 -0
  292. package/dist/host-files/file-output.read.base.js.map +1 -0
  293. package/dist/host-files/file-sink.base.d.ts +22 -0
  294. package/dist/host-files/file-sink.base.d.ts.map +1 -0
  295. package/dist/host-files/file-sink.base.js +56 -0
  296. package/dist/host-files/file-sink.base.js.map +1 -0
  297. package/dist/host-files/host-file-logging.plugin.d.ts +11 -0
  298. package/dist/host-files/host-file-logging.plugin.d.ts.map +1 -0
  299. package/dist/host-files/host-file-logging.plugin.js +63 -0
  300. package/dist/host-files/host-file-logging.plugin.js.map +1 -0
  301. package/dist/host-files/index.d.ts +19 -0
  302. package/dist/host-files/index.d.ts.map +1 -0
  303. package/dist/host-files/index.js +18 -0
  304. package/dist/host-files/index.js.map +1 -0
  305. package/dist/host-files/rotate-appended-file.base.d.ts +35 -0
  306. package/dist/host-files/rotate-appended-file.base.d.ts.map +1 -0
  307. package/dist/host-files/rotate-appended-file.base.js +104 -0
  308. package/dist/host-files/rotate-appended-file.base.js.map +1 -0
  309. package/dist/host.d.ts +38 -0
  310. package/dist/host.d.ts.map +1 -0
  311. package/dist/host.js +39 -0
  312. package/dist/host.js.map +1 -0
  313. package/dist/index.d.ts +24 -13
  314. package/dist/index.d.ts.map +1 -1
  315. package/dist/index.js +27 -23
  316. package/dist/index.js.map +1 -1
  317. package/dist/kinds/audit.d.ts +40 -8
  318. package/dist/kinds/audit.d.ts.map +1 -1
  319. package/dist/kinds/audit.js +82 -20
  320. package/dist/kinds/audit.js.map +1 -1
  321. package/dist/kinds/contexts.d.ts +4 -3
  322. package/dist/kinds/contexts.d.ts.map +1 -1
  323. package/dist/kinds/file-output.d.ts +56 -0
  324. package/dist/kinds/file-output.d.ts.map +1 -0
  325. package/dist/kinds/file-output.js +11 -0
  326. package/dist/kinds/file-output.js.map +1 -0
  327. package/dist/kinds/formatter.d.ts +4 -6
  328. package/dist/kinds/formatter.d.ts.map +1 -1
  329. package/dist/kinds/formatter.js +4 -3
  330. package/dist/kinds/formatter.js.map +1 -1
  331. package/dist/kinds/index.d.ts +3 -3
  332. package/dist/kinds/index.d.ts.map +1 -1
  333. package/dist/kinds/index.js +3 -3
  334. package/dist/kinds/index.js.map +1 -1
  335. package/dist/kinds/logger.d.ts +4 -4
  336. package/dist/kinds/logger.d.ts.map +1 -1
  337. package/dist/kinds/logger.impl.d.ts +40 -13
  338. package/dist/kinds/logger.impl.d.ts.map +1 -1
  339. package/dist/kinds/logger.impl.js +179 -87
  340. package/dist/kinds/logger.impl.js.map +1 -1
  341. package/dist/kinds/logger.js +21 -11
  342. package/dist/kinds/logger.js.map +1 -1
  343. package/dist/kinds/logger.utils.d.ts +31 -4
  344. package/dist/kinds/logger.utils.d.ts.map +1 -1
  345. package/dist/kinds/logger.utils.js +58 -18
  346. package/dist/kinds/logger.utils.js.map +1 -1
  347. package/dist/kinds/output.d.ts +5 -11
  348. package/dist/kinds/output.d.ts.map +1 -1
  349. package/dist/kinds/output.impl.d.ts +9 -7
  350. package/dist/kinds/output.impl.d.ts.map +1 -1
  351. package/dist/kinds/output.impl.js +51 -29
  352. package/dist/kinds/output.impl.js.map +1 -1
  353. package/dist/kinds/output.js +10 -5
  354. package/dist/kinds/output.js.map +1 -1
  355. package/dist/kinds/output.types.d.ts +26 -7
  356. package/dist/kinds/output.types.d.ts.map +1 -1
  357. package/dist/kinds/sink.d.ts +6 -5
  358. package/dist/kinds/sink.d.ts.map +1 -1
  359. package/dist/kinds/sink.js +14 -7
  360. package/dist/kinds/sink.js.map +1 -1
  361. package/dist/logger.context.descriptor.d.ts +15 -1
  362. package/dist/logger.context.descriptor.d.ts.map +1 -1
  363. package/dist/logger.context.descriptor.js +1 -1
  364. package/dist/logger.context.descriptor.js.map +1 -1
  365. package/dist/logging.consumer.plugin.d.ts +4 -0
  366. package/dist/logging.consumer.plugin.d.ts.map +1 -0
  367. package/dist/logging.consumer.plugin.js +17 -0
  368. package/dist/logging.consumer.plugin.js.map +1 -0
  369. package/dist/logging.plugin.d.ts +3 -3
  370. package/dist/logging.plugin.d.ts.map +1 -1
  371. package/dist/logging.plugin.js +81 -42
  372. package/dist/logging.plugin.js.map +1 -1
  373. package/dist/observability/building-host.d.ts +11 -0
  374. package/dist/observability/building-host.d.ts.map +1 -0
  375. package/dist/observability/building-host.js +11 -0
  376. package/dist/observability/building-host.js.map +1 -0
  377. package/dist/observability/config.d.ts +36 -0
  378. package/dist/observability/config.d.ts.map +1 -0
  379. package/dist/observability/config.js +46 -0
  380. package/dist/observability/config.js.map +1 -0
  381. package/dist/observability/http/instrumented-fetch.d.ts +19 -0
  382. package/dist/observability/http/instrumented-fetch.d.ts.map +1 -0
  383. package/dist/observability/http/instrumented-fetch.js +175 -0
  384. package/dist/observability/http/instrumented-fetch.js.map +1 -0
  385. package/dist/observability/index.d.ts +8 -0
  386. package/dist/observability/index.d.ts.map +1 -0
  387. package/dist/observability/index.js +10 -0
  388. package/dist/observability/index.js.map +1 -0
  389. package/dist/observability/lifecycle.d.ts +18 -0
  390. package/dist/observability/lifecycle.d.ts.map +1 -0
  391. package/dist/observability/lifecycle.js +44 -0
  392. package/dist/observability/lifecycle.js.map +1 -0
  393. package/dist/observability/observability/error-tracker.d.ts +43 -0
  394. package/dist/observability/observability/error-tracker.d.ts.map +1 -0
  395. package/dist/observability/observability/error-tracker.js +130 -0
  396. package/dist/observability/observability/error-tracker.js.map +1 -0
  397. package/dist/observability/should-keep-log.d.ts +8 -0
  398. package/dist/observability/should-keep-log.d.ts.map +1 -0
  399. package/dist/observability/should-keep-log.js +10 -0
  400. package/dist/observability/should-keep-log.js.map +1 -0
  401. package/dist/observability/telemetry/otel.d.ts +47 -0
  402. package/dist/observability/telemetry/otel.d.ts.map +1 -0
  403. package/dist/observability/telemetry/otel.js +542 -0
  404. package/dist/observability/telemetry/otel.js.map +1 -0
  405. package/dist/observability/telemetry/partial-success.d.ts +35 -0
  406. package/dist/observability/telemetry/partial-success.d.ts.map +1 -0
  407. package/dist/observability/telemetry/partial-success.js +94 -0
  408. package/dist/observability/telemetry/partial-success.js.map +1 -0
  409. package/dist/observability/telemetry/sdk-lifecycle.d.ts +37 -0
  410. package/dist/observability/telemetry/sdk-lifecycle.d.ts.map +1 -0
  411. package/dist/observability/telemetry/sdk-lifecycle.js +132 -0
  412. package/dist/observability/telemetry/sdk-lifecycle.js.map +1 -0
  413. package/dist/observability/telemetry/telemetry-root.d.ts +78 -0
  414. package/dist/observability/telemetry/telemetry-root.d.ts.map +1 -0
  415. package/dist/observability/telemetry/telemetry-root.js +79 -0
  416. package/dist/observability/telemetry/telemetry-root.js.map +1 -0
  417. package/dist/observability/telemetry-instrumentation.d.ts +76 -0
  418. package/dist/observability/telemetry-instrumentation.d.ts.map +1 -0
  419. package/dist/observability/telemetry-instrumentation.js +69 -0
  420. package/dist/observability/telemetry-instrumentation.js.map +1 -0
  421. package/dist/otel/index.d.ts +9 -0
  422. package/dist/otel/index.d.ts.map +1 -0
  423. package/dist/otel/index.js +12 -0
  424. package/dist/otel/index.js.map +1 -0
  425. package/dist/otel/logging-otel.plugin.d.ts +11 -0
  426. package/dist/otel/logging-otel.plugin.d.ts.map +1 -0
  427. package/dist/otel/logging-otel.plugin.js +27 -0
  428. package/dist/otel/logging-otel.plugin.js.map +1 -0
  429. package/dist/otel/sinks/otel/otel.descriptor.d.ts +10 -0
  430. package/dist/otel/sinks/otel/otel.descriptor.d.ts.map +1 -0
  431. package/dist/otel/sinks/otel/otel.descriptor.js +23 -0
  432. package/dist/otel/sinks/otel/otel.descriptor.js.map +1 -0
  433. package/dist/otel/sinks/otel/otel.impl.d.ts +47 -0
  434. package/dist/otel/sinks/otel/otel.impl.d.ts.map +1 -0
  435. package/dist/otel/sinks/otel/otel.impl.js +202 -0
  436. package/dist/otel/sinks/otel/otel.impl.js.map +1 -0
  437. package/dist/otel/sinks/otel/otlp-log-exporter.d.ts +76 -0
  438. package/dist/otel/sinks/otel/otlp-log-exporter.d.ts.map +1 -0
  439. package/dist/otel/sinks/otel/otlp-log-exporter.js +178 -0
  440. package/dist/otel/sinks/otel/otlp-log-exporter.js.map +1 -0
  441. package/dist/outputs/file/file.outputs.descriptor.d.ts +10 -0
  442. package/dist/outputs/file/file.outputs.descriptor.d.ts.map +1 -0
  443. package/dist/outputs/file/file.outputs.descriptor.js +32 -0
  444. package/dist/outputs/file/file.outputs.descriptor.js.map +1 -0
  445. package/dist/outputs/remote/remote.descriptor.d.ts +1 -1
  446. package/dist/outputs/remote/remote.descriptor.d.ts.map +1 -1
  447. package/dist/outputs/remote/remote.descriptor.js +1 -2
  448. package/dist/outputs/remote/remote.descriptor.js.map +1 -1
  449. package/dist/outputs/remote/remote.factory.d.ts +9 -0
  450. package/dist/outputs/remote/remote.factory.d.ts.map +1 -0
  451. package/dist/outputs/remote/remote.factory.js +16 -0
  452. package/dist/outputs/remote/remote.factory.js.map +1 -0
  453. package/dist/outputs/remote/remote.impl.d.ts +40 -4
  454. package/dist/outputs/remote/remote.impl.d.ts.map +1 -1
  455. package/dist/outputs/remote/remote.impl.js +224 -99
  456. package/dist/outputs/remote/remote.impl.js.map +1 -1
  457. package/dist/outputs.context.descriptor.d.ts +15 -1
  458. package/dist/outputs.context.descriptor.d.ts.map +1 -1
  459. package/dist/outputs.context.descriptor.js +1 -1
  460. package/dist/outputs.context.descriptor.js.map +1 -1
  461. package/dist/outputs.context.impl.d.ts +2 -1
  462. package/dist/outputs.context.impl.d.ts.map +1 -1
  463. package/dist/outputs.context.impl.js +17 -9
  464. package/dist/outputs.context.impl.js.map +1 -1
  465. package/dist/paths.d.ts +24 -3
  466. package/dist/paths.d.ts.map +1 -1
  467. package/dist/paths.js +63 -3
  468. package/dist/paths.js.map +1 -1
  469. package/dist/rotation/rotate-appended-file.d.ts +15 -0
  470. package/dist/rotation/rotate-appended-file.d.ts.map +1 -0
  471. package/dist/rotation/rotate-appended-file.js +20 -0
  472. package/dist/rotation/rotate-appended-file.js.map +1 -0
  473. package/dist/rotation/rotation-policy.d.ts +19 -0
  474. package/dist/rotation/rotation-policy.d.ts.map +1 -0
  475. package/dist/rotation/rotation-policy.js +37 -0
  476. package/dist/rotation/rotation-policy.js.map +1 -0
  477. package/dist/schemas/audit.d.ts +25 -7
  478. package/dist/schemas/audit.d.ts.map +1 -1
  479. package/dist/schemas/audit.js +10 -4
  480. package/dist/schemas/audit.js.map +1 -1
  481. package/dist/schemas/entry.d.ts +11 -5
  482. package/dist/schemas/entry.d.ts.map +1 -1
  483. package/dist/schemas/entry.js +3 -2
  484. package/dist/schemas/entry.js.map +1 -1
  485. package/dist/schemas/file-host.d.ts +86 -0
  486. package/dist/schemas/file-host.d.ts.map +1 -0
  487. package/dist/schemas/file-host.js +10 -0
  488. package/dist/schemas/file-host.js.map +1 -0
  489. package/dist/schemas/formatter.d.ts +11 -1
  490. package/dist/schemas/formatter.d.ts.map +1 -1
  491. package/dist/schemas/formatter.js +1 -1
  492. package/dist/schemas/formatter.js.map +1 -1
  493. package/dist/schemas/index.d.ts +3 -2
  494. package/dist/schemas/index.d.ts.map +1 -1
  495. package/dist/schemas/index.js +3 -2
  496. package/dist/schemas/index.js.map +1 -1
  497. package/dist/schemas/logger.d.ts +16 -1
  498. package/dist/schemas/logger.d.ts.map +1 -1
  499. package/dist/schemas/logger.js +6 -1
  500. package/dist/schemas/logger.js.map +1 -1
  501. package/dist/schemas/output-defaults.d.ts +44 -0
  502. package/dist/schemas/output-defaults.d.ts.map +1 -0
  503. package/dist/schemas/output-defaults.js +53 -0
  504. package/dist/schemas/output-defaults.js.map +1 -0
  505. package/dist/schemas/output.d.ts +25 -1
  506. package/dist/schemas/output.d.ts.map +1 -1
  507. package/dist/schemas/output.js +29 -2
  508. package/dist/schemas/output.js.map +1 -1
  509. package/dist/schemas/sink.d.ts +32 -1
  510. package/dist/schemas/sink.d.ts.map +1 -1
  511. package/dist/schemas/sink.js +17 -1
  512. package/dist/schemas/sink.js.map +1 -1
  513. package/dist/sinks/buffer/buffer.descriptor.js +1 -1
  514. package/dist/sinks/buffer/buffer.descriptor.js.map +1 -1
  515. package/dist/sinks/buffer/{buffer.impl.cli.d.ts → buffer.impl.d.ts} +3 -3
  516. package/dist/sinks/buffer/buffer.impl.d.ts.map +1 -0
  517. package/dist/sinks/buffer/buffer.impl.js +42 -0
  518. package/dist/sinks/buffer/buffer.impl.js.map +1 -0
  519. package/dist/sinks/console/console.descriptor.js +1 -1
  520. package/dist/sinks/console/console.descriptor.js.map +1 -1
  521. package/dist/sinks/console/console.impl.browser.d.ts +4 -3
  522. package/dist/sinks/console/console.impl.browser.d.ts.map +1 -1
  523. package/dist/sinks/console/console.impl.browser.js +11 -14
  524. package/dist/sinks/console/console.impl.browser.js.map +1 -1
  525. package/dist/sinks/console/{console.impl.cli.d.ts → console.impl.consumer.d.ts} +5 -4
  526. package/dist/sinks/console/console.impl.consumer.d.ts.map +1 -0
  527. package/dist/sinks/console/{console.impl.cli.js → console.impl.consumer.js} +16 -8
  528. package/dist/sinks/console/console.impl.consumer.js.map +1 -0
  529. package/dist/sinks/file/file.sinks.descriptor.d.ts +10 -0
  530. package/dist/sinks/file/file.sinks.descriptor.d.ts.map +1 -0
  531. package/dist/sinks/file/file.sinks.descriptor.js +23 -0
  532. package/dist/sinks/file/file.sinks.descriptor.js.map +1 -0
  533. package/dist/sinks/index.d.ts +1 -1
  534. package/dist/sinks/index.d.ts.map +1 -1
  535. package/dist/sinks/memory/memory.descriptor.d.ts +1 -1
  536. package/dist/sinks/memory/memory.descriptor.js +2 -2
  537. package/dist/sinks/memory/memory.descriptor.js.map +1 -1
  538. package/dist/sinks/memory/memory.impl.d.ts +5 -11
  539. package/dist/sinks/memory/memory.impl.d.ts.map +1 -1
  540. package/dist/sinks/memory/memory.impl.js +46 -21
  541. package/dist/sinks/memory/memory.impl.js.map +1 -1
  542. package/dist/sinks/stdout/stdout.descriptor.js +1 -1
  543. package/dist/sinks/stdout/stdout.descriptor.js.map +1 -1
  544. package/dist/sinks/stdout/{stdout.impl.cli.d.ts → stdout.impl.d.ts} +5 -4
  545. package/dist/sinks/stdout/stdout.impl.d.ts.map +1 -0
  546. package/dist/sinks/stdout/stdout.impl.js +29 -0
  547. package/dist/sinks/stdout/stdout.impl.js.map +1 -0
  548. package/dist/sinks.context.descriptor.d.ts +15 -1
  549. package/dist/sinks.context.descriptor.d.ts.map +1 -1
  550. package/dist/sinks.context.descriptor.js +1 -1
  551. package/dist/sinks.context.descriptor.js.map +1 -1
  552. package/dist/sinks.context.impl.d.ts +2 -1
  553. package/dist/sinks.context.impl.d.ts.map +1 -1
  554. package/dist/sinks.context.impl.js +17 -9
  555. package/dist/sinks.context.impl.js.map +1 -1
  556. package/dist/stdout-capture/mcp-frame.d.ts +23 -0
  557. package/dist/stdout-capture/mcp-frame.d.ts.map +1 -0
  558. package/dist/stdout-capture/mcp-frame.js +80 -0
  559. package/dist/stdout-capture/mcp-frame.js.map +1 -0
  560. package/dist/stdout-capture/stdout-capture.descriptor.d.ts +10 -0
  561. package/dist/stdout-capture/stdout-capture.descriptor.d.ts.map +1 -0
  562. package/dist/stdout-capture/stdout-capture.descriptor.js +17 -0
  563. package/dist/stdout-capture/stdout-capture.descriptor.js.map +1 -0
  564. package/dist/stdout-capture/stdout-capture.impl.d.ts +19 -0
  565. package/dist/stdout-capture/stdout-capture.impl.d.ts.map +1 -0
  566. package/dist/stdout-capture/stdout-capture.impl.js +49 -0
  567. package/dist/stdout-capture/stdout-capture.impl.js.map +1 -0
  568. package/dist/stdout-capture/stdout-capture.lease.d.ts +45 -0
  569. package/dist/stdout-capture/stdout-capture.lease.d.ts.map +1 -0
  570. package/dist/stdout-capture/stdout-capture.lease.js +338 -0
  571. package/dist/stdout-capture/stdout-capture.lease.js.map +1 -0
  572. package/dist/stdout-capture/stdout-capture.output.descriptor.d.ts +4 -0
  573. package/dist/stdout-capture/stdout-capture.output.descriptor.d.ts.map +1 -0
  574. package/dist/stdout-capture/stdout-capture.output.descriptor.js +18 -0
  575. package/dist/stdout-capture/stdout-capture.output.descriptor.js.map +1 -0
  576. package/dist/stdout-capture/stdout-capture.state.d.ts +29 -0
  577. package/dist/stdout-capture/stdout-capture.state.d.ts.map +1 -0
  578. package/dist/stdout-capture/stdout-capture.state.js +80 -0
  579. package/dist/stdout-capture/stdout-capture.state.js.map +1 -0
  580. package/dist/stdout-capture.d.ts +24 -0
  581. package/dist/stdout-capture.d.ts.map +1 -0
  582. package/dist/stdout-capture.js +28 -0
  583. package/dist/stdout-capture.js.map +1 -0
  584. package/dist/stdout-capture.plugin.d.ts +7 -0
  585. package/dist/stdout-capture.plugin.d.ts.map +1 -0
  586. package/dist/stdout-capture.plugin.js +28 -0
  587. package/dist/stdout-capture.plugin.js.map +1 -0
  588. package/package.json +311 -228
  589. package/SPEC.md +0 -65
  590. package/dist/contexts/audit.d.ts +0 -34
  591. package/dist/contexts/audit.d.ts.map +0 -1
  592. package/dist/contexts/audit.js +0 -13
  593. package/dist/contexts/audit.js.map +0 -1
  594. package/dist/formatters/index.d.ts +0 -7
  595. package/dist/formatters/index.d.ts.map +0 -1
  596. package/dist/formatters/index.js +0 -8
  597. package/dist/formatters/index.js.map +0 -1
  598. package/dist/formatters/pretty/pretty.impl.cli.d.ts.map +0 -1
  599. package/dist/formatters/pretty/pretty.impl.cli.js.map +0 -1
  600. package/dist/kinds/logger.contracts.d.ts +0 -16
  601. package/dist/kinds/logger.contracts.d.ts.map +0 -1
  602. package/dist/kinds/logger.contracts.js +0 -9
  603. package/dist/kinds/logger.contracts.js.map +0 -1
  604. package/dist/kinds/output.contracts.d.ts +0 -50
  605. package/dist/kinds/output.contracts.d.ts.map +0 -1
  606. package/dist/kinds/output.contracts.js +0 -10
  607. package/dist/kinds/output.contracts.js.map +0 -1
  608. package/dist/logging.cli.plugin.d.ts.map +0 -1
  609. package/dist/logging.cli.plugin.js +0 -39
  610. package/dist/logging.cli.plugin.js.map +0 -1
  611. package/dist/outputs/index.d.ts +0 -7
  612. package/dist/outputs/index.d.ts.map +0 -1
  613. package/dist/outputs/index.js +0 -8
  614. package/dist/outputs/index.js.map +0 -1
  615. package/dist/sinks/buffer/buffer.impl.cli.d.ts.map +0 -1
  616. package/dist/sinks/buffer/buffer.impl.cli.js +0 -34
  617. package/dist/sinks/buffer/buffer.impl.cli.js.map +0 -1
  618. package/dist/sinks/console/console.impl.cli.d.ts.map +0 -1
  619. package/dist/sinks/console/console.impl.cli.js.map +0 -1
  620. package/dist/sinks/stdout/stdout.impl.cli.d.ts.map +0 -1
  621. package/dist/sinks/stdout/stdout.impl.cli.js +0 -21
  622. package/dist/sinks/stdout/stdout.impl.cli.js.map +0 -1
  623. package/src/audit/audit.descriptor.ts +0 -45
  624. package/src/audit/audit.storage.schema.ts +0 -57
  625. package/src/audit/index.ts +0 -8
  626. package/src/cli/logs.descriptor.ts +0 -19
  627. package/src/cli/logs.list.descriptor.ts +0 -28
  628. package/src/cli/logs.list.impl.ts +0 -93
  629. package/src/cli/logs.rotate.descriptor.ts +0 -40
  630. package/src/cli/logs.rotate.impl.ts +0 -61
  631. package/src/cli/logs.search.descriptor.ts +0 -61
  632. package/src/cli/logs.search.impl.ts +0 -173
  633. package/src/cli/logs.tail.descriptor.ts +0 -49
  634. package/src/cli/logs.tail.impl.ts +0 -105
  635. package/src/cli/logs.view.descriptor.ts +0 -57
  636. package/src/cli/logs.view.impl.ts +0 -108
  637. package/src/cli/types.ts +0 -59
  638. package/src/contexts/audit.ts +0 -36
  639. package/src/contexts/fallback-logger.ts +0 -80
  640. package/src/contexts/index.ts +0 -23
  641. package/src/contexts/logger.ts +0 -119
  642. package/src/core/index.ts +0 -32
  643. package/src/core/logger.ts +0 -150
  644. package/src/core/namespace.ts +0 -195
  645. package/src/core/parsing.ts +0 -21
  646. package/src/core/types.ts +0 -82
  647. package/src/docs/levels.docs.descriptor.ts +0 -344
  648. package/src/docs/structured.docs.descriptor.ts +0 -444
  649. package/src/docs/transports.docs.descriptor.ts +0 -428
  650. package/src/formatters/index.ts +0 -6
  651. package/src/formatters/json/json.formatters.descriptor.ts +0 -25
  652. package/src/formatters/json/json.impl.ts +0 -41
  653. package/src/formatters/json5/json5.descriptor.ts +0 -25
  654. package/src/formatters/json5/json5.impl.ts +0 -43
  655. package/src/formatters/jsonl/jsonl.descriptor.ts +0 -26
  656. package/src/formatters/jsonl/jsonl.impl.ts +0 -39
  657. package/src/formatters/pretty/pretty.descriptor.ts +0 -26
  658. package/src/formatters/pretty/pretty.impl.cli.ts +0 -101
  659. package/src/index.ts +0 -190
  660. package/src/kinds/audit.ts +0 -169
  661. package/src/kinds/contexts.ts +0 -22
  662. package/src/kinds/formatter.ts +0 -117
  663. package/src/kinds/index.ts +0 -25
  664. package/src/kinds/logger.contracts.ts +0 -17
  665. package/src/kinds/logger.impl.ts +0 -206
  666. package/src/kinds/logger.ts +0 -46
  667. package/src/kinds/logger.utils.ts +0 -91
  668. package/src/kinds/output.contracts.ts +0 -54
  669. package/src/kinds/output.impl.ts +0 -118
  670. package/src/kinds/output.ts +0 -59
  671. package/src/kinds/output.types.ts +0 -105
  672. package/src/kinds/sink.ts +0 -100
  673. package/src/logger.context.descriptor.ts +0 -13
  674. package/src/logging.cli.plugin.ts +0 -43
  675. package/src/logging.plugin.ts +0 -93
  676. package/src/outputs/index.ts +0 -6
  677. package/src/outputs/remote/remote.descriptor.ts +0 -27
  678. package/src/outputs/remote/remote.impl.ts +0 -218
  679. package/src/outputs.context.descriptor.ts +0 -10
  680. package/src/outputs.context.impl.ts +0 -30
  681. package/src/paths.ts +0 -10
  682. package/src/schemas/audit.ts +0 -98
  683. package/src/schemas/entry.ts +0 -88
  684. package/src/schemas/formatter.ts +0 -37
  685. package/src/schemas/index.ts +0 -80
  686. package/src/schemas/logger.ts +0 -38
  687. package/src/schemas/output.ts +0 -62
  688. package/src/schemas/sink.ts +0 -39
  689. package/src/sinks/buffer/buffer.descriptor.ts +0 -13
  690. package/src/sinks/buffer/buffer.impl.cli.ts +0 -49
  691. package/src/sinks/console/console.descriptor.ts +0 -20
  692. package/src/sinks/console/console.impl.browser.ts +0 -69
  693. package/src/sinks/console/console.impl.cli.ts +0 -71
  694. package/src/sinks/index.ts +0 -8
  695. package/src/sinks/memory/memory.descriptor.ts +0 -20
  696. package/src/sinks/memory/memory.impl.ts +0 -119
  697. package/src/sinks/stdout/stdout.descriptor.ts +0 -13
  698. package/src/sinks/stdout/stdout.impl.cli.ts +0 -27
  699. package/src/sinks.context.descriptor.ts +0 -10
  700. package/src/sinks.context.impl.ts +0 -30
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Instrumented Fetch for External API Calls
3
+ *
4
+ * Wraps fetch calls with OpenTelemetry spans to track external API dependencies
5
+ */
6
+ import { getLogger } from "../../contexts/logger.js";
7
+ import * as z from 'zod/v4';
8
+ import { RedactedEndpointSchema, UNSCRUBBABLE_FAILURE_MESSAGE, UNSCRUBBABLE_TEXT, createEndpointFailureSchema, createEndpointTextSchema } from "../../core/endpoint.js";
9
+ import { attempt } from "../../core/outcome.js";
10
+ import { valueFreeFailureSchema } from "../../core/redact.js";
11
+ /** A response's `content-length` as the byte count it states; anything else (absent, or not digits) is 0. */
12
+ const ContentLengthSchema = z.string().regex(/^\d+$/).transform(Number).catch(0);
13
+ /**
14
+ * The request's headers, built once, before anything is sent, the way `fetch`
15
+ * itself builds them (`new Headers(init.headers)`, else the `Request`'s own),
16
+ * and every value as `fetch` would send it: a value is converted to its text
17
+ * however the caller wrote it (an array, an object with `toString`, a
18
+ * `[name, value]` pair, an iterable), so the failure description removes each
19
+ * one. The same `Headers` is what is sent, so a one-shot iterable is read once.
20
+ * When building them throws (a value the platform refuses, a getter, a trap),
21
+ * the failure is that throw and is described value-free: what it says may echo
22
+ * a value that was never read.
23
+ */
24
+ function readRequestHeaders(input, init) {
25
+ return attempt(() => {
26
+ const own = input instanceof Request ? input.headers : undefined;
27
+ const headers = new Headers(init?.headers ?? own);
28
+ return { headers, values: [...(own ? [...own.values()] : []), ...headers.values()] };
29
+ });
30
+ }
31
+ /** Every header value a request carries (see {@link readRequestHeaders}); `null` when they could not be read. */
32
+ function requestHeaderValues(input, init) {
33
+ const read = readRequestHeaders(input, init);
34
+ return read.failed ? null : read.value.values;
35
+ }
36
+ /** Text the peer controls (a reason phrase), scrubbed of the URL's credentials and the request's header values; none of it when those could not be read. */
37
+ function peerText(url, headerValues, text) {
38
+ return headerValues === null ? UNSCRUBBABLE_TEXT : createEndpointTextSchema(url, headerValues).parse(text);
39
+ }
40
+ /** Describes a failure with the URL's credentials and every request header value removed; value-free when the header values could not be read. */
41
+ function createRequestFailureSchema(url, headerValues) {
42
+ return headerValues === null ? valueFreeFailureSchema(UNSCRUBBABLE_FAILURE_MESSAGE) : createEndpointFailureSchema(url, headerValues);
43
+ }
44
+ /**
45
+ * Instrumented fetch that creates spans for external API calls and reports them through `runtime`'s logger
46
+ */
47
+ export async function instrumentedFetch(runtime, input, init) {
48
+ const logger = getLogger('http-client', runtime);
49
+ // The module system memoizes the import; a failure to load propagates to the caller.
50
+ const otel = await import('@opentelemetry/api');
51
+ const tracer = otel.trace.getTracer('http-client');
52
+ const url = input instanceof Request ? input.url : input instanceof URL ? input.href : input;
53
+ // What is logged or attributed about the URL: never its userinfo or query, which may carry credentials.
54
+ const echoedUrl = RedactedEndpointSchema.parse(url);
55
+ const method = init?.method || 'GET';
56
+ // Read once, before the request is sent: a header value the platform refuses must still be scrubbed from the failure it causes.
57
+ const requestHeaders = readRequestHeaders(input, init);
58
+ const headerValues = requestHeaders.failed ? null : requestHeaders.value.values;
59
+ // Host for span naming; an unparseable URL is named 'unknown'
60
+ const hostname = URL.canParse(url) ? new URL(url).hostname : 'unknown';
61
+ return tracer.startActiveSpan(`HTTP ${method} ${hostname}`, {
62
+ kind: otel.SpanKind.CLIENT,
63
+ attributes: {
64
+ 'http.method': method,
65
+ 'http.url': echoedUrl,
66
+ 'http.target': hostname,
67
+ 'http.scheme': url.startsWith('https') ? 'https' : 'http',
68
+ component: 'fetch',
69
+ 'span.kind': 'client'
70
+ }
71
+ }, async (span) => {
72
+ const startTime = performance.now();
73
+ try {
74
+ // The headers fetch would have refused fail the call here, with the platform's own error.
75
+ if (requestHeaders.failed)
76
+ throw requestHeaders.cause;
77
+ // Add trace context to the headers that were read (the same object is sent) for distributed tracing
78
+ const headers = requestHeaders.value.headers;
79
+ // Get current trace context
80
+ const spanContext = span.spanContext();
81
+ headers.set('traceparent', `00-${spanContext.traceId}-${spanContext.spanId}-01`);
82
+ // Make the actual fetch call
83
+ const response = await fetch(input, {
84
+ ...init,
85
+ headers
86
+ });
87
+ const duration = performance.now() - startTime;
88
+ // Add response attributes
89
+ // Response headers and the reason phrase are the peer's text: a length is a count or 0, and the reason phrase is scrubbed.
90
+ span.setAttributes({
91
+ 'http.status_code': response.status,
92
+ 'http.response_content_length': ContentLengthSchema.parse(response.headers.get('content-length')),
93
+ 'http.duration_ms': duration
94
+ });
95
+ // Set span status based on HTTP status
96
+ if (response.status >= 400) {
97
+ span.setStatus({
98
+ code: otel.SpanStatusCode.ERROR,
99
+ message: `HTTP ${response.status}: ${peerText(url, headerValues, response.statusText)}`
100
+ });
101
+ }
102
+ else {
103
+ span.setStatus({ code: otel.SpanStatusCode.OK });
104
+ }
105
+ // Log the external API call
106
+ const level = response.status >= 500 ? 'error' : response.status >= 400 ? 'warn' : 'debug';
107
+ logger[level](`External API call: ${method} ${hostname}`, {
108
+ method,
109
+ url: echoedUrl,
110
+ status: response.status,
111
+ duration,
112
+ traceId: spanContext.traceId,
113
+ spanId: spanContext.spanId,
114
+ category: 'external-api'
115
+ });
116
+ return response;
117
+ }
118
+ catch (error) {
119
+ // Record the exception, described with the URL's credentials and every request header value removed from
120
+ // every text it carries (the runtime's own error may repeat the userinfo, or a header value it refused).
121
+ const failure = createRequestFailureSchema(url, headerValues).parse(error);
122
+ span.recordException({ name: failure.name, message: failure.message, stack: failure.stack });
123
+ span.setStatus({
124
+ code: otel.SpanStatusCode.ERROR,
125
+ message: failure.message
126
+ });
127
+ logger.error(`External API call failed: ${method} ${hostname}`, {
128
+ error: failure,
129
+ method,
130
+ url: echoedUrl,
131
+ category: 'external-api'
132
+ });
133
+ throw error;
134
+ }
135
+ finally {
136
+ span.end();
137
+ }
138
+ });
139
+ }
140
+ /**
141
+ * Helper function for JSON API calls with instrumentation
142
+ */
143
+ export async function instrumentedJsonFetch(runtime, url, options) {
144
+ // Add query params if provided
145
+ let finalUrl = url;
146
+ if (options?.params) {
147
+ const params = new URLSearchParams(options.params);
148
+ finalUrl = `${url}?${params.toString()}`;
149
+ }
150
+ // The request's own bound, combined with (never replacing) the caller's
151
+ // signal. The platform timeout signal holds no timer the caller must clear.
152
+ const signals = [options?.signal, options?.timeout ? AbortSignal.timeout(options.timeout) : undefined].filter((signal) => signal instanceof AbortSignal);
153
+ const requestInit = {
154
+ ...options,
155
+ headers: {
156
+ 'Content-Type': 'application/json',
157
+ Accept: 'application/json',
158
+ ...options?.headers
159
+ }
160
+ };
161
+ if (signals.length > 0) {
162
+ requestInit.signal = signals.length === 1 ? signals[0] : AbortSignal.any(signals);
163
+ }
164
+ const response = await instrumentedFetch(runtime, finalUrl, requestInit);
165
+ if (!response.ok) {
166
+ // The reason phrase is the peer's text and may echo the request URL's credentials: the caller's failure carries it scrubbed.
167
+ throw new Error(`HTTP ${response.status}: ${peerText(finalUrl, requestHeaderValues(finalUrl, requestInit), response.statusText)}`);
168
+ }
169
+ // SAFETY: this helper's contract is that the caller's T names the endpoint's
170
+ // JSON response body; the body is decoded here and T is not re-validated.
171
+ return (await response.json());
172
+ }
173
+ // Default export: the instrumented fetch (it takes the Runtime whose logger reports the call first)
174
+ export default instrumentedFetch;
175
+ //# sourceMappingURL=instrumented-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumented-fetch.js","sourceRoot":"","sources":["../../../src/observability/http/instrumented-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { initializeTelemetry, isTelemetryInitialized, shutdownTelemetry, getTelemetryStatus, getTelemetryInitializationOutcome, type TelemetryInitializationOutcome, type TelemetryHeadersSource } from './telemetry/otel.ts';
2
+ export { TELEMETRY_INSTRUMENTATION_KIND, TelemetryInstrumentationDescriptorSchema, resolveTelemetryInstrumentation, resolveComposedTelemetryInstrumentations, telemetryInstrumentationKind, type TelemetryInstrumentationDescriptor, type TelemetryInstrumentationFactory, type TelemetryRuntimeQuery } from './telemetry-instrumentation.ts';
3
+ export { disposeObservability } from './lifecycle.ts';
4
+ export { ErrorTracker } from './observability/error-tracker.ts';
5
+ export type { ErrorDetails } from './observability/error-tracker.ts';
6
+ export { instrumentedFetch, instrumentedJsonFetch } from './http/instrumented-fetch.ts';
7
+ export { default as instrumentedFetchDefault } from './http/instrumented-fetch.ts';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,KAAK,8BAA8B,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC9N,OAAO,EACN,8BAA8B,EAC9B,wCAAwC,EACxC,+BAA+B,EAC/B,wCAAwC,EACxC,4BAA4B,EAC5B,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { initializeTelemetry, isTelemetryInitialized, shutdownTelemetry, getTelemetryStatus, getTelemetryInitializationOutcome } from "./telemetry/otel.js";
2
+ export { TELEMETRY_INSTRUMENTATION_KIND, TelemetryInstrumentationDescriptorSchema, resolveTelemetryInstrumentation, resolveComposedTelemetryInstrumentations, telemetryInstrumentationKind } from "./telemetry-instrumentation.js";
3
+ export { disposeObservability } from "./lifecycle.js";
4
+ export { ErrorTracker } from "./observability/error-tracker.js";
5
+ export { instrumentedFetch, instrumentedJsonFetch } from "./http/instrumented-fetch.js";
6
+ export { default as instrumentedFetchDefault } from "./http/instrumented-fetch.js";
7
+ // Vendor observability clients live in their integrations (RC09):
8
+ // `@vibesdotdev/integrations-signoz`, `-clickhouse` and `-redis`. They read
9
+ // their settings and credentials through `@vibesdotdev/logging/observability/config`.
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iCAAiC,EAAoE,MAAM,qBAAqB,CAAC;AAC9N,OAAO,EACN,8BAA8B,EAC9B,wCAAwC,EACxC,+BAA+B,EAC/B,wCAAwC,EACxC,4BAA4B,EAI5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,kEAAkE;AAClE,4EAA4E;AAC5E,sFAAsF"}
@@ -0,0 +1,18 @@
1
+ import type { RuntimeRef } from '@vibesdotdev/kernel';
2
+ interface NamedDisposer {
3
+ name: string;
4
+ dispose(): Promise<void>;
5
+ }
6
+ export declare function disposeNamedResources(disposers: readonly NamedDisposer[]): Promise<void>;
7
+ /**
8
+ * Dispose this Root's OpenTelemetry without assuming ownership of the
9
+ * process. Executable hosts call this from their lifecycle coordinator;
10
+ * runtime-backed hosts attach it to their owning plugin's `onDispose`. Vendor
11
+ * clients own their own disposal: `@vibesdotdev/integrations-redis` closes its
12
+ * connections from its plugin's `onDispose` (and exports
13
+ * `disposeRedisConnections`). Concurrent calls for one Root (the Root, its
14
+ * views or generations) share one disposal; another Root's is independent.
15
+ */
16
+ export declare function disposeObservability(runtime: RuntimeRef): Promise<void>;
17
+ export {};
18
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/observability/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,UAAU,aAAa;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAKD,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAavE"}
@@ -0,0 +1,44 @@
1
+ import { shutdownRuntimeTelemetry } from "./telemetry/telemetry-root.js";
2
+ import { loggingRootOf } from "../core/root-identity.js";
3
+ /** In-flight disposals per Root (`loggingRootOf(runtime)`): telemetry is the Root's, so its runtimes share one. */
4
+ const disposals = new WeakMap();
5
+ export async function disposeNamedResources(disposers) {
6
+ const results = await Promise.allSettled(disposers.map(({ dispose }) => dispose()));
7
+ const failures = results.flatMap((result, index) => {
8
+ if (result.status === 'fulfilled')
9
+ return [];
10
+ const name = disposers[index]?.name ?? `resource-${index + 1}`;
11
+ return [
12
+ new Error(`Failed to dispose observability resource '${name}'`, {
13
+ cause: result.reason
14
+ })
15
+ ];
16
+ });
17
+ if (failures.length > 0) {
18
+ throw new AggregateError(failures, `Observability disposal failed for ${failures.length} resource${failures.length === 1 ? '' : 's'}`);
19
+ }
20
+ }
21
+ /**
22
+ * Dispose this Root's OpenTelemetry without assuming ownership of the
23
+ * process. Executable hosts call this from their lifecycle coordinator;
24
+ * runtime-backed hosts attach it to their owning plugin's `onDispose`. Vendor
25
+ * clients own their own disposal: `@vibesdotdev/integrations-redis` closes its
26
+ * connections from its plugin's `onDispose` (and exports
27
+ * `disposeRedisConnections`). Concurrent calls for one Root (the Root, its
28
+ * views or generations) share one disposal; another Root's is independent.
29
+ */
30
+ export function disposeObservability(runtime) {
31
+ const root = loggingRootOf(runtime);
32
+ const pending = disposals.get(root);
33
+ if (pending)
34
+ return pending;
35
+ const disposeOperation = disposeNamedResources([
36
+ { name: 'opentelemetry', dispose: () => shutdownRuntimeTelemetry(runtime) }
37
+ ]).finally(() => {
38
+ if (disposals.get(root) === disposeOperation)
39
+ disposals.delete(root);
40
+ });
41
+ disposals.set(root, disposeOperation);
42
+ return disposeOperation;
43
+ }
44
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/observability/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQzD,mHAAmH;AACnH,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsC,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAmC;IAC9E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAClD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,YAAY,KAAK,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO;YACN,IAAI,KAAK,CAAC,6CAA6C,IAAI,GAAG,EAAE;gBAC/D,KAAK,EAAE,MAAM,CAAC,MAAM;aACpB,CAAC;SACF,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,cAAc,CACvB,QAAQ,EACR,qCAAqC,QAAQ,CAAC,MAAM,YAAY,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAClG,CAAC;IACH,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAmB;IACvD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;QAC9C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE;KAC3E,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACf,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,gBAAgB;YAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACtC,OAAO,gBAAgB,CAAC;AACzB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { RuntimeRef } from '@vibesdotdev/kernel';
2
+ import type { LogContext } from '../../schemas/entry.ts';
3
+ export interface ErrorDetails {
4
+ message: string;
5
+ stack?: string;
6
+ /** Logged with the error, so it takes the logger's own context contract. */
7
+ context?: LogContext;
8
+ }
9
+ /** Windowed error counts, as `ErrorTracker.getStats()` reports them. */
10
+ export interface ErrorTrackerStats {
11
+ errorTypes: string[];
12
+ totalErrors: number;
13
+ recentErrors: {
14
+ [key: string]: number;
15
+ };
16
+ }
17
+ /** The error type a tracked error counts under when its `errorType` is not a string. */
18
+ export declare const UNTYPED_ERROR = "untyped";
19
+ /** What a tracked error's `loggingError` says when its `errorType` is not a string: never the value. */
20
+ export declare const ERROR_TYPE_NOT_TEXT_MESSAGE = "A tracked error's type must be a string; it is counted as 'untyped'.";
21
+ export declare class ErrorTracker {
22
+ private static readonly ALERT_THRESHOLD;
23
+ private static readonly ALERT_WINDOW;
24
+ private static readonly ALERT_COOLDOWN;
25
+ /**
26
+ * Track an error occurrence on this Runtime
27
+ */
28
+ static trackError(runtime: RuntimeRef, errorType: string, details: ErrorDetails): Promise<void>;
29
+ private static record;
30
+ /**
31
+ * Send an alert for repeated errors
32
+ */
33
+ private static sendAlert;
34
+ /**
35
+ * Get this Runtime's current error statistics
36
+ */
37
+ static getStats(runtime: RuntimeRef): ErrorTrackerStats;
38
+ /**
39
+ * Reset this Runtime's error counts (for testing)
40
+ */
41
+ static reset(runtime: RuntimeRef): void;
42
+ }
43
+ //# sourceMappingURL=error-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-tracker.d.ts","sourceRoot":"","sources":["../../../src/observability/observability/error-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACxC;AAYD,wFAAwF;AACxF,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,wGAAwG;AACxG,eAAO,MAAM,2BAA2B,yEAAkF,CAAC;AAa3H,qBAAa,YAAY;IAGxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAU;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEhD;;OAEG;WACU,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;mBAoBhF,MAAM;IAuC3B;;OAEG;mBACkB,SAAS;IAsB9B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,iBAAiB;IAwBvD;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAMvC"}
@@ -0,0 +1,130 @@
1
+ import { getLogger } from "../../contexts/logger.js";
2
+ import { createFallbackLogger } from "../../contexts/fallback-logger.js";
3
+ import * as z from 'zod/v4';
4
+ import { LoggedErrorSchema } from "../../core/redact.js";
5
+ import { derivedLoggerMetadata, mergeCallContexts } from "../../core/entry-context.js";
6
+ import { settle } from "../../core/outcome.js";
7
+ import { loggingRootOf } from "../../core/root-identity.js";
8
+ const trackers = new WeakMap();
9
+ /** The error type a tracked error counts under when its `errorType` is not a string. */
10
+ export const UNTYPED_ERROR = 'untyped';
11
+ /** What a tracked error's `loggingError` says when its `errorType` is not a string: never the value. */
12
+ export const ERROR_TYPE_NOT_TEXT_MESSAGE = `A tracked error's type must be a string; it is counted as '${UNTYPED_ERROR}'.`;
13
+ /** A string, recognized by `typeof` alone: a schema's failure path would read a Proxy's prototype, which a trap throws from. */
14
+ const ErrorTypeSchema = z.custom((value) => typeof value === 'string');
15
+ function trackerFor(runtime) {
16
+ let state = trackers.get(loggingRootOf(runtime));
17
+ if (!state) {
18
+ state = { errorCounts: new Map(), lastAlertSent: new Map(), errorWindow: new Map() };
19
+ trackers.set(loggingRootOf(runtime), state);
20
+ }
21
+ return state;
22
+ }
23
+ export class ErrorTracker {
24
+ // Configuration
25
+ static ALERT_THRESHOLD = 5; // Number of errors before alerting
26
+ static ALERT_WINDOW = 300000; // 5 minutes
27
+ static ALERT_COOLDOWN = 300000; // 5 minutes between alerts
28
+ /**
29
+ * Track an error occurrence on this Runtime
30
+ */
31
+ static async trackError(runtime, errorType, details) {
32
+ const logger = getLogger('error-tracker', runtime);
33
+ // The caller's values are read once, through the log call's guarded context path: a getter or Proxy trap never
34
+ // throws into the caller, and what it threw is never described (it may carry the value); it rides as the `loggingError`.
35
+ const type = ErrorTypeSchema.safeParse(errorType);
36
+ const read = mergeCallContexts({}, details);
37
+ const failure = read.failure ?? (type.success ? undefined : { name: 'TypeError', message: ERROR_TYPE_NOT_TEXT_MESSAGE });
38
+ const recorded = await settle(this.record(logger, trackerFor(runtime), type.success ? type.data : UNTYPED_ERROR, derivedLoggerMetadata({ context: read.context, failure })));
39
+ // Error tracking never breaks the app: its own failure is reported, not rethrown.
40
+ if (!recorded.failed)
41
+ return;
42
+ const recordFailure = LoggedErrorSchema.parse(recorded.cause);
43
+ const reported = await settle(Promise.resolve().then(() => logger.error('Failed to track error', { errorType: type.success ? type.data : UNTYPED_ERROR, error: recordFailure })));
44
+ // The runtime's own logger is what failed: the host console is the report that remains.
45
+ if (reported.failed) {
46
+ (await createFallbackLogger('error-tracker', runtime)).error('Failed to track error, and its report through the runtime logger failed too', {
47
+ errorType: type.success ? type.data : UNTYPED_ERROR, error: recordFailure, reportError: LoggedErrorSchema.parse(reported.cause)
48
+ });
49
+ }
50
+ }
51
+ static async record(logger, tracker, errorType, details) {
52
+ const { errorWindow, errorCounts, lastAlertSent } = tracker;
53
+ const now = Date.now();
54
+ // Update error window
55
+ if (!errorWindow.has(errorType)) {
56
+ errorWindow.set(errorType, []);
57
+ }
58
+ const window = errorWindow.get(errorType);
59
+ window.push(now);
60
+ // Remove old entries outside the window
61
+ const cutoff = now - this.ALERT_WINDOW;
62
+ const filtered = window.filter((timestamp) => timestamp > cutoff);
63
+ errorWindow.set(errorType, filtered);
64
+ // Update total count
65
+ const count = (errorCounts.get(errorType) || 0) + 1;
66
+ errorCounts.set(errorType, count);
67
+ logger.warn('system.error', {
68
+ errorType,
69
+ ...details,
70
+ count,
71
+ recentCount: filtered.length
72
+ });
73
+ // Check if we should send alert
74
+ if (filtered.length >= this.ALERT_THRESHOLD) {
75
+ const lastAlert = lastAlertSent.get(errorType) || 0;
76
+ if (now - lastAlert > this.ALERT_COOLDOWN) {
77
+ await this.sendAlert(logger, errorType, filtered.length, details);
78
+ lastAlertSent.set(errorType, now);
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Send an alert for repeated errors
84
+ */
85
+ static async sendAlert(logger, errorType, count, details) {
86
+ // Log alert
87
+ logger.error(`ALERT: ${errorType} occurred ${count} times in ${this.ALERT_WINDOW / 60000} minutes`, details);
88
+ logger.error('system.error.alert', {
89
+ errorType,
90
+ severity: 'critical',
91
+ alert: true,
92
+ count,
93
+ window: `${this.ALERT_WINDOW / 60000} minutes`,
94
+ ...details
95
+ });
96
+ }
97
+ /**
98
+ * Get this Runtime's current error statistics
99
+ */
100
+ static getStats(runtime) {
101
+ const { errorWindow, errorCounts } = trackerFor(runtime);
102
+ const now = Date.now();
103
+ const cutoff = now - this.ALERT_WINDOW;
104
+ const recentErrors = {};
105
+ let totalErrors = 0;
106
+ for (const [errorType, count] of errorCounts) {
107
+ totalErrors += count;
108
+ const window = errorWindow.get(errorType) || [];
109
+ const recent = window.filter((timestamp) => timestamp > cutoff).length;
110
+ if (recent > 0) {
111
+ recentErrors[errorType] = recent;
112
+ }
113
+ }
114
+ return {
115
+ errorTypes: Array.from(errorCounts.keys()),
116
+ totalErrors,
117
+ recentErrors
118
+ };
119
+ }
120
+ /**
121
+ * Reset this Runtime's error counts (for testing)
122
+ */
123
+ static reset(runtime) {
124
+ const { errorWindow, errorCounts, lastAlertSent } = trackerFor(runtime);
125
+ errorCounts.clear();
126
+ lastAlertSent.clear();
127
+ errorWindow.clear();
128
+ }
129
+ }
130
+ //# sourceMappingURL=error-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-tracker.js","sourceRoot":"","sources":["../../../src/observability/observability/error-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Only `info` is head-sampled (`infoSamplingRate`, the fraction of `info`
3
+ * entries kept). Every other level is always kept: 10% CF head sampling made
4
+ * production incidents invisible.
5
+ */
6
+ export type SampledLogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
7
+ export declare function shouldKeepLog(level: SampledLogLevel, infoSamplingRate: number): boolean;
8
+ //# sourceMappingURL=should-keep-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"should-keep-log.d.ts","sourceRoot":"","sources":["../../src/observability/should-keep-log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5E,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAKvF"}
@@ -0,0 +1,10 @@
1
+ export function shouldKeepLog(level, infoSamplingRate) {
2
+ if (level !== 'info')
3
+ return true;
4
+ if (!Number.isFinite(infoSamplingRate) || infoSamplingRate >= 1)
5
+ return true;
6
+ if (infoSamplingRate <= 0)
7
+ return false;
8
+ return Math.random() < infoSamplingRate;
9
+ }
10
+ //# sourceMappingURL=should-keep-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"should-keep-log.js","sourceRoot":"","sources":["../../src/observability/should-keep-log.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,aAAa,CAAC,KAAsB,EAAE,gBAAwB;IAC7E,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,IAAI,gBAAgB,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC;AACzC,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * OpenTelemetry Configuration and Initialization
3
+ *
4
+ * This module initializes OpenTelemetry instrumentation for the application,
5
+ * providing tracing, metrics, and logs to SignOz/OTEL collectors.
6
+ */
7
+ import { type RuntimeRef, type VibesRuntime } from '@vibesdotdev/kernel';
8
+ import { resolveOtelHeaders, type TelemetryHeadersSource } from '../../core/otlp-headers.ts';
9
+ export { resolveOtelHeaders, type TelemetryHeadersSource };
10
+ import { type TelemetryInitializationOutcome } from './telemetry-root.ts';
11
+ export type { TelemetryInitializationOutcome };
12
+ import { type TelemetryRuntimeQuery } from '../telemetry-instrumentation.ts';
13
+ /** The typed outcome of this Runtime's last `initializeTelemetry` call. */
14
+ export declare function getTelemetryInitializationOutcome(runtime: RuntimeRef): TelemetryInitializationOutcome;
15
+ /**
16
+ * Initialize OpenTelemetry SDK on the host `runtime`: its composed provider
17
+ * instrumentations (the `observability/telemetry-instrumentation` kind — AWS
18
+ * SDK, Redis/ioredis, …) are added beside the built-in HTTP/Express/PG/undici/
19
+ * gRPC ones.
20
+ */
21
+ export declare function initializeTelemetry(runtime: TelemetryRuntimeQuery & VibesRuntime): Promise<void>;
22
+ /**
23
+ * Whether this Runtime's telemetry SDK is running
24
+ */
25
+ export declare function isTelemetryInitialized(runtime: RuntimeRef): boolean;
26
+ /**
27
+ * Shut down this Runtime's telemetry (for testing, and for hosts' lifecycle
28
+ * coordinators). It ends the Runtime's claim on the process's OpenTelemetry
29
+ * registry; another Runtime's telemetry is untouched.
30
+ */
31
+ export declare function shutdownTelemetry(runtime: RuntimeRef): Promise<void>;
32
+ /**
33
+ * Get this Runtime's telemetry configuration and state (for diagnostics)
34
+ */
35
+ export declare function getTelemetryStatus(runtime: VibesRuntime): Promise<{
36
+ initialized: boolean;
37
+ enabled: boolean;
38
+ outcome: TelemetryInitializationOutcome;
39
+ config: {
40
+ serviceName: string;
41
+ environment: string | undefined;
42
+ endpoint: string;
43
+ protocol: "grpc";
44
+ samplingRate: number;
45
+ };
46
+ }>;
47
+ //# sourceMappingURL=otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../src/observability/telemetry/otel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAmB,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAU1F,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,CAAC;AAM3D,OAAO,EAMN,KAAK,8BAA8B,EACnC,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,8BAA8B,EAAE,CAAC;AAC/C,OAAO,EAA4C,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAsBvH,2EAA2E;AAC3E,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,UAAU,GAAG,8BAA8B,CAErG;AAydD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmLtG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,YAAY;;;;;;;;;;;GAc7D"}