@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,10 @@
1
+ /**
2
+ * File Output Descriptor
3
+ *
4
+ * Writes logs to local files with rotation support.
5
+ * Consumer hardware only.
6
+ */
7
+ import type { OutputDescriptor } from '@vibesdotdev/logging/schemas/output';
8
+ export declare const fileOutputDescriptor: OutputDescriptor;
9
+ export default fileOutputDescriptor;
10
+ //# sourceMappingURL=file.outputs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.outputs.descriptor.d.ts","sourceRoot":"","sources":["../../../src/outputs/file/file.outputs.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,eAAO,MAAM,oBAAoB,EAAE,gBAuBlC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * File Output Descriptor
3
+ *
4
+ * Writes logs to local files with rotation support.
5
+ * Consumer hardware only.
6
+ */
7
+ export const fileOutputDescriptor = {
8
+ kind: 'logging/output',
9
+ id: 'file',
10
+ name: 'File Output',
11
+ description: 'Writes logs to local files with rotation',
12
+ tags: ['local', 'persistent'],
13
+ hardware: ['consumer'],
14
+ storage: 'file',
15
+ // This lazy backend can create absolute streams on an unbound host.
16
+ optionalContext: ['runtime/workspace-path'],
17
+ format: 'jsonl',
18
+ path: 'logs/app.log',
19
+ rotation: {
20
+ maxSize: '10MB',
21
+ maxAge: '7d',
22
+ maxFiles: 5
23
+ },
24
+ buffering: {
25
+ enabled: true,
26
+ size: 8192,
27
+ flushInterval: 1000,
28
+ maxBufferEntries: 10000
29
+ }
30
+ };
31
+ export default fileOutputDescriptor;
32
+ //# sourceMappingURL=file.outputs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.outputs.descriptor.js","sourceRoot":"","sources":["../../../src/outputs/file/file.outputs.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACrD,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,0CAA0C;IACvD,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;IAC7B,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,OAAO,EAAE,MAAM;IACf,oEAAoE;IACpE,eAAe,EAAE,CAAC,wBAAwB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE;QACT,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,CAAC;KACX;IACD,SAAS,EAAE;QACV,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,KAAK;KACvB;CACD,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Remote Output Descriptor
3
3
  *
4
4
  * Sends logs to a remote HTTP endpoint.
5
- * Cloud hardware target.
5
+ * Portable HTTP backend for consumer and cloud hosts.
6
6
  */
7
7
  import type { OutputDescriptor } from '../../schemas/output.ts';
8
8
  export declare const remoteOutputDescriptor: OutputDescriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"remote.descriptor.d.ts","sourceRoot":"","sources":["../../../src/outputs/remote/remote.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,eAAO,MAAM,sBAAsB,EAAE,gBAepC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"remote.descriptor.d.ts","sourceRoot":"","sources":["../../../src/outputs/remote/remote.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,eAAO,MAAM,sBAAsB,EAAE,gBAcpC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Remote Output Descriptor
3
3
  *
4
4
  * Sends logs to a remote HTTP endpoint.
5
- * Cloud hardware target.
5
+ * Portable HTTP backend for consumer and cloud hosts.
6
6
  */
7
7
  export const remoteOutputDescriptor = {
8
8
  kind: 'logging/output',
@@ -10,7 +10,6 @@ export const remoteOutputDescriptor = {
10
10
  name: 'Remote Output',
11
11
  description: 'Sends logs to a remote HTTP endpoint',
12
12
  tags: ['cloud', 'centralized'],
13
- hardware: ['cloud'],
14
13
  storage: 'remote',
15
14
  format: 'jsonl',
16
15
  buffering: {
@@ -1 +1 @@
1
- {"version":3,"file":"remote.descriptor.js","sourceRoot":"","sources":["../../../src/outputs/remote/remote.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACvD,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sCAAsC;IACnD,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;IACf,SAAS,EAAE;QACV,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;KACtB;CACD,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"remote.descriptor.js","sourceRoot":"","sources":["../../../src/outputs/remote/remote.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACvD,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sCAAsC;IACnD,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IAC9B,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;IACf,SAAS,EAAE;QACV,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;KACtB;CACD,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { DefaultOutputImplementation } from '../../kinds/output.impl.ts';
2
+ import type { OutputBackendFactory, OutputContext } from '../../kinds/output.types.ts';
3
+ import { type OutputDescriptor } from '../../schemas/output.ts';
4
+ import RemoteOutput from './remote.impl.ts';
5
+ /** The Runtime selects the factory; each stream retains that provider's context. A context of the same Root (its view or reload generation) is accepted; another Root's is refused. */
6
+ export default class RemoteOutputFactory extends DefaultOutputImplementation implements OutputBackendFactory {
7
+ create(descriptor: OutputDescriptor, namedContext: OutputContext): RemoteOutput;
8
+ }
9
+ //# sourceMappingURL=remote.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.factory.d.ts","sourceRoot":"","sources":["../../../src/outputs/remote/remote.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAG5C,uLAAuL;AACvL,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,2BAA4B,YAAW,oBAAoB;IAC3G,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,GAAG,YAAY;CAM/E"}
@@ -0,0 +1,16 @@
1
+ import { CapabilityError } from '@vibesdotdev/kernel';
2
+ import { DefaultOutputImplementation } from "../../kinds/output.impl.js";
3
+ import { OutputDescriptorSchema } from "../../schemas/output.js";
4
+ import RemoteOutput from "./remote.impl.js";
5
+ import { loggingRootOf } from "../../core/root-identity.js";
6
+ /** The Runtime selects the factory; each stream retains that provider's context. A context of the same Root (its view or reload generation) is accepted; another Root's is refused. */
7
+ export default class RemoteOutputFactory extends DefaultOutputImplementation {
8
+ create(descriptor, namedContext) {
9
+ if (loggingRootOf(namedContext.runtime) !== loggingRootOf(this.context.runtime))
10
+ throw new CapabilityError('A remote stream context belongs to another Root.', 'CONFLICT', {
11
+ reason: 'output-context-runtime-mismatch', retryable: false
12
+ });
13
+ return new RemoteOutput(OutputDescriptorSchema.parse(descriptor), { ...this.context, ...namedContext, runtime: this.context.runtime });
14
+ }
15
+ }
16
+ //# sourceMappingURL=remote.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.factory.js","sourceRoot":"","sources":["../../../src/outputs/remote/remote.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,yBAAyB,CAAC;AACxF,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,uLAAuL;AACvL,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,2BAA2B;IAC3E,MAAM,CAAC,UAA4B,EAAE,YAA2B;QAC/D,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,kDAAkD,EAAE,UAAU,EAAE;gBAC1K,MAAM,EAAE,iCAAiC,EAAE,SAAS,EAAE,KAAK;aAC3D,CAAC,CAAC;QACH,OAAO,IAAI,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxI,CAAC;CACD"}
@@ -4,8 +4,10 @@
4
4
  * Batched HTTP delivery to a logging endpoint.
5
5
  */
6
6
  import type { OutputImplementation, OutputContext, OutputReadOptions, OutputTailOptions, TailHandle, OutputStats } from '../../kinds/output.ts';
7
- import type { OutputDescriptor } from '../../schemas/output.ts';
7
+ import { type OutputDescriptor } from '../../schemas/output.ts';
8
8
  import type { RuntimeLogEntry } from '../../schemas/entry.ts';
9
+ /** The default deadline for one remote delivery request. */
10
+ export declare const REMOTE_DELIVERY_TIMEOUT_MS = 10000;
9
11
  /** Metrics for buffer operations */
10
12
  interface BufferMetrics {
11
13
  /** Total entries added to buffer */
@@ -24,19 +26,43 @@ export default class RemoteOutput implements OutputImplementation {
24
26
  readonly id: string;
25
27
  readonly descriptor: OutputDescriptor;
26
28
  private readonly formatter;
27
- private readonly endpoint;
29
+ private endpoint;
28
30
  private readonly buffering;
29
31
  private readonly maxBufferEntries;
30
32
  private buffer;
31
- private flushTimer;
32
- private isFlushing;
33
+ private acceptedSequence;
34
+ /** The one-shot flush pending for the current buffer (lifecycle-owned, RC07). */
35
+ private flushDisposer;
36
+ /** The output's own runtime: its lifecycle owns the flush timer. */
37
+ private readonly runtime;
38
+ private flushPromise;
39
+ private readonly pendingDiagnostics;
40
+ private readonly pendingDeliveries;
41
+ private closePromise;
42
+ private closing;
33
43
  private metrics;
34
44
  constructor(descriptor: OutputDescriptor, context: OutputContext);
45
+ /**
46
+ * One lifecycle-owned flush per non-empty buffer, `flushInterval` after the
47
+ * buffer's first entry. Once the runtime's disposal has begun no flush can be
48
+ * scheduled; `close()` flushes what remains.
49
+ */
50
+ private scheduleFlush;
35
51
  /** Get current buffer metrics */
36
52
  getMetrics(): BufferMetrics;
37
53
  /** Get current buffer size */
38
54
  getBufferSize(): number;
39
55
  private addToBuffer;
56
+ /**
57
+ * Serialize first: an entry is measured as JSON before it is accepted, so an
58
+ * entry JSON cannot carry (a bigint, a cycle, a throwing `toJSON` handed to a
59
+ * direct `write`) refuses that caller only, typed and value-free, and never
60
+ * enters the buffer, where it would fail every later write, flush and close.
61
+ */
62
+ private accept;
63
+ /** The buffer's size as one JSON array of its entries, from the sizes measured at acceptance. */
64
+ private bufferedSize;
65
+ private assertWritable;
40
66
  write(entry: RuntimeLogEntry): Promise<void>;
41
67
  writeBatch(entries: RuntimeLogEntry[]): Promise<void>;
42
68
  flush(): Promise<void>;
@@ -44,6 +70,16 @@ export default class RemoteOutput implements OutputImplementation {
44
70
  tail(_callback: (line: string) => void, _options?: OutputTailOptions): TailHandle;
45
71
  stats(): Promise<OutputStats>;
46
72
  close(): Promise<void>;
73
+ private resolveEndpoint;
74
+ private deliver;
75
+ /**
76
+ * One POST under the runtime lifecycle's deadline (no ad hoc timer). Past
77
+ * `deliveryTimeoutMs` the request is aborted and fails. When the runtime's
78
+ * disposal begins mid-request, the accepted delivery is joined, not
79
+ * abandoned: it keeps running under a finalization wait capped by the
80
+ * remaining budget, and is aborted when that runs out.
81
+ */
82
+ private request;
47
83
  private send;
48
84
  }
49
85
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"remote.impl.d.ts","sourceRoot":"","sources":["../../../src/outputs/remote/remote.impl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,oCAAoC;AACpC,UAAU,aAAa;IACtB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,oBAAoB;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAgE;gBAEnE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa;IA8BhE,iCAAiC;IACjC,UAAU,IAAI,aAAa;IAI3B,8BAA8B;IAC9B,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,WAAW;IAwBb,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,IAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3D,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,UAAU;IAK3E,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAI7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAWd,IAAI;CAsClB"}
1
+ {"version":3,"file":"remote.impl.d.ts","sourceRoot":"","sources":["../../../src/outputs/remote/remote.impl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA0B,KAAK,gBAAgB,EAAwB,MAAM,yBAAyB,CAAC;AAC9G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAa9D,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAWjD,oCAAoC;AACpC,UAAU,aAAa;IACtB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,oBAAoB;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAyB;IAC9C,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqC;IACxE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAgE;gBAEnE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa;IAiBhE;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAcrB,iCAAiC;IACjC,UAAU,IAAI,aAAa;IAI3B,8BAA8B;IAC9B,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,WAAW;IAOnB;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAcd,iGAAiG;IACjG,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAShB,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBhB,IAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3D,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,UAAU;IAK3E,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAInC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAuBR,eAAe;IAY7B,OAAO,CAAC,OAAO;IAQf;;;;;;OAMG;YACW,OAAO;YA6BP,IAAI;CA8BlB"}
@@ -3,10 +3,20 @@
3
3
  *
4
4
  * Batched HTTP delivery to a logging endpoint.
5
5
  */
6
- import { getDefaultLogger } from "../../contexts/logger.js";
7
- const logger = getDefaultLogger();
8
- /** Default remote endpoint */
9
- const DEFAULT_ENDPOINT = 'http://localhost:3000/api/logs';
6
+ import { OutputDescriptorSchema } from "../../schemas/output.js";
7
+ import * as z from 'zod/v4';
8
+ import { CapabilityError } from '@vibesdotdev/kernel';
9
+ import { loadLoggingConfig } from "../../config/load-config.js";
10
+ import { createFallbackLogger } from "../../contexts/fallback-logger.js";
11
+ import { LoggedErrorSchema, ReadableErrorNameSchema } from "../../core/redact.js";
12
+ import { RedactedEndpointSchema, createEndpointFailureSchema, createEndpointTextSchema } from "../../core/endpoint.js";
13
+ import { attempt, settle } from "../../core/outcome.js";
14
+ import JsonlFormatter from "../../formatters/jsonl/jsonl.impl.js";
15
+ import jsonlFormatterDescriptor from "../../formatters/jsonl/jsonl.descriptor.js";
16
+ import { trackLoggingResource, untrackLoggingResource } from "../../core/output-resources.js";
17
+ /** The default deadline for one remote delivery request. */
18
+ export const REMOTE_DELIVERY_TIMEOUT_MS = 10_000;
19
+ const WaitAbortedSchema = z.object({ code: z.literal('CANCELLED'), reason: z.literal('wait-aborted') });
10
20
  /**
11
21
  * Remote output - sends logs via HTTP.
12
22
  */
@@ -18,34 +28,52 @@ export default class RemoteOutput {
18
28
  buffering;
19
29
  maxBufferEntries;
20
30
  buffer = [];
21
- flushTimer = null;
22
- isFlushing = false;
31
+ acceptedSequence = 0;
32
+ /** The one-shot flush pending for the current buffer (lifecycle-owned, RC07). */
33
+ flushDisposer = null;
34
+ /** The output's own runtime: its lifecycle owns the flush timer. */
35
+ runtime;
36
+ flushPromise = null;
37
+ pendingDiagnostics = new Set();
38
+ pendingDeliveries = new Set();
39
+ closePromise = null;
40
+ closing = false;
23
41
  metrics = { added: 0, sent: 0, dropped: 0, retried: 0 };
24
42
  constructor(descriptor, context) {
25
- this.id = descriptor.id;
26
- this.descriptor = descriptor;
27
- // Use formatter from context or create default
28
- this.formatter = context.formatter ?? {
29
- format: (e) => JSON.stringify(e),
30
- parse: (s) => JSON.parse(s),
31
- formatBatch: (entries) => entries.map((e) => JSON.stringify(e)).join('\n')
32
- };
33
- // Configuration
34
- this.endpoint = descriptor.endpoint ?? DEFAULT_ENDPOINT;
35
- this.buffering = descriptor.buffering ?? {
43
+ this.descriptor = OutputDescriptorSchema.parse(descriptor);
44
+ this.id = this.descriptor.id;
45
+ this.runtime = context.runtime;
46
+ this.formatter = context.formatter ?? new JsonlFormatter(jsonlFormatterDescriptor, { runtime: context.runtime });
47
+ this.endpoint = this.descriptor.endpoint;
48
+ this.buffering = this.descriptor.buffering ?? {
36
49
  enabled: true,
37
50
  size: 16384,
38
51
  flushInterval: 5000,
39
52
  maxBufferEntries: 10000
40
53
  };
41
54
  this.maxBufferEntries = this.buffering.maxBufferEntries ?? 10000;
42
- // Start flush timer if buffering enabled
43
- if (this.buffering.enabled && this.buffering.flushInterval) {
44
- this.flushTimer = setInterval(() => {
45
- this.flush().catch((err) => logger.error('Remote output flush error', { error: err }));
46
- }, this.buffering.flushInterval);
47
- this.flushTimer.unref?.();
48
- }
55
+ trackLoggingResource(this.runtime, this);
56
+ }
57
+ /**
58
+ * One lifecycle-owned flush per non-empty buffer, `flushInterval` after the
59
+ * buffer's first entry. Once the runtime's disposal has begun no flush can be
60
+ * scheduled; `close()` flushes what remains.
61
+ */
62
+ scheduleFlush() {
63
+ if (this.closing || this.flushDisposer || !this.buffering.flushInterval || this.buffer.length === 0)
64
+ return;
65
+ if (this.runtime.lifecycle.signal.aborted)
66
+ return;
67
+ this.flushDisposer = this.runtime.lifecycle.timeout(() => {
68
+ this.flushDisposer = null;
69
+ // The scheduled flush has no caller: its failure is reported, and a failed report is close's to throw.
70
+ const diagnostics = settle(settle(this.flush()).then(async (flushed) => {
71
+ if (flushed.failed)
72
+ (await createFallbackLogger('logging:remote-output', this.runtime)).error('Remote output flush error', { error: LoggedErrorSchema.parse(flushed.cause) });
73
+ }));
74
+ this.pendingDiagnostics.add(diagnostics);
75
+ void diagnostics.then(() => this.pendingDiagnostics.delete(diagnostics));
76
+ }, this.buffering.flushInterval);
49
77
  }
50
78
  /** Get current buffer metrics */
51
79
  getMetrics() {
@@ -56,65 +84,97 @@ export default class RemoteOutput {
56
84
  return this.buffer.length;
57
85
  }
58
86
  addToBuffer(entries) {
59
- const spaceAvailable = this.maxBufferEntries - this.buffer.length;
60
- if (entries.length <= spaceAvailable) {
61
- // All entries fit
62
- this.buffer.push(...entries);
63
- this.metrics.added += entries.length;
64
- }
65
- else if (spaceAvailable > 0) {
66
- // Partial fit - add what we can, drop the oldest to make room for rest
67
- const toAdd = entries.slice(-spaceAvailable); // Keep newest entries
68
- const toDrop = entries.slice(0, entries.length - spaceAvailable);
69
- this.buffer.push(...toAdd);
70
- this.metrics.added += toAdd.length;
71
- this.metrics.dropped += toDrop.length;
72
- }
73
- else {
74
- // No space - drop oldest entries to make room for newest
75
- const dropCount = Math.min(entries.length, this.maxBufferEntries);
76
- this.buffer.splice(0, dropCount); // Remove oldest
77
- this.metrics.dropped += dropCount;
78
- this.buffer.push(...entries);
79
- this.metrics.added += entries.length;
87
+ const dropped = Math.max(0, this.buffer.length + entries.length - this.maxBufferEntries);
88
+ this.metrics.added += entries.length;
89
+ this.metrics.dropped += dropped;
90
+ this.buffer = this.buffer.concat(entries).sort((left, right) => left.order - right.order).slice(-this.maxBufferEntries);
91
+ }
92
+ /**
93
+ * Serialize first: an entry is measured as JSON before it is accepted, so an
94
+ * entry JSON cannot carry (a bigint, a cycle, a throwing `toJSON` handed to a
95
+ * direct `write`) refuses that caller only, typed and value-free, and never
96
+ * enters the buffer, where it would fail every later write, flush and close.
97
+ */
98
+ accept(entries) {
99
+ const measured = entries.map((entry, index) => {
100
+ const size = attempt(() => JSON.stringify(entry).length);
101
+ if (size.failed) {
102
+ throw new CapabilityError('The remote output cannot serialize this entry as JSON, so it was not accepted.', 'INVALID_INPUT', {
103
+ reason: 'remote-entry-unserializable', retryable: false,
104
+ details: { id: this.id, index, errorName: ReadableErrorNameSchema.parse(size.cause) }
105
+ });
106
+ }
107
+ return { entry, size: size.value };
108
+ });
109
+ return measured.map(({ entry, size }) => ({ entry, size, order: this.acceptedSequence++ }));
110
+ }
111
+ /** The buffer's size as one JSON array of its entries, from the sizes measured at acceptance. */
112
+ bufferedSize() {
113
+ return this.buffer.reduce((total, value) => total + value.size + 1, 1);
114
+ }
115
+ assertWritable() {
116
+ if (this.closing || this.runtime.lifecycle.signal.aborted) {
117
+ throw new CapabilityError('The remote output no longer accepts writes.', 'UNAVAILABLE', {
118
+ reason: this.closing ? 'output-closed' : 'output-runtime-disposed',
119
+ details: { id: this.id }, cause: this.runtime.lifecycle.signal.reason
120
+ });
80
121
  }
81
122
  }
82
123
  async write(entry) {
124
+ this.assertWritable();
125
+ const accepted = this.accept([entry]);
83
126
  if (this.buffering.enabled) {
84
- this.addToBuffer([entry]);
127
+ this.addToBuffer(accepted);
85
128
  // Flush if buffer is large enough
86
- const estimatedSize = JSON.stringify(this.buffer).length;
87
- if (estimatedSize >= this.buffering.size) {
129
+ if (this.bufferedSize() >= this.buffering.size) {
88
130
  await this.flush();
89
131
  }
132
+ else {
133
+ this.scheduleFlush();
134
+ }
90
135
  }
91
136
  else {
92
- await this.send([entry]);
137
+ await this.deliver(accepted);
93
138
  }
94
139
  }
95
140
  async writeBatch(entries) {
141
+ this.assertWritable();
142
+ const accepted = this.accept(entries);
96
143
  if (this.buffering.enabled) {
97
- this.addToBuffer(entries);
98
- const estimatedSize = JSON.stringify(this.buffer).length;
99
- if (estimatedSize >= this.buffering.size) {
144
+ this.addToBuffer(accepted);
145
+ if (this.bufferedSize() >= this.buffering.size) {
100
146
  await this.flush();
101
147
  }
148
+ else {
149
+ this.scheduleFlush();
150
+ }
102
151
  }
103
152
  else {
104
- await this.send(entries);
153
+ await this.deliver(accepted);
105
154
  }
106
155
  }
107
- async flush() {
108
- if (this.buffer.length === 0 || this.isFlushing)
109
- return;
110
- this.isFlushing = true;
111
- try {
112
- const entries = this.buffer.splice(0);
113
- await this.send(entries);
114
- }
115
- finally {
116
- this.isFlushing = false;
156
+ flush() {
157
+ if (this.flushDisposer) {
158
+ this.flushDisposer();
159
+ this.flushDisposer = null;
117
160
  }
161
+ if (this.flushPromise)
162
+ return this.flushPromise;
163
+ if (this.buffer.length === 0)
164
+ return Promise.resolve();
165
+ const entries = this.buffer.splice(0);
166
+ this.flushPromise = this.deliver(entries).catch(error => {
167
+ // Preflight failures remain the caller's original refusal, with accepted entries retained.
168
+ this.addToBuffer(entries);
169
+ this.metrics.retried += entries.length;
170
+ throw error;
171
+ }).then(sent => {
172
+ if (sent && this.buffering.enabled)
173
+ this.scheduleFlush();
174
+ }).finally(() => {
175
+ this.flushPromise = null;
176
+ });
177
+ return this.flushPromise;
118
178
  }
119
179
  async read(_options) {
120
180
  // Remote outputs do not support reading
@@ -127,52 +187,117 @@ export default class RemoteOutput {
127
187
  async stats() {
128
188
  return { size: 0, exists: true };
129
189
  }
130
- async close() {
131
- // Clear flush timer
132
- if (this.flushTimer) {
133
- clearInterval(this.flushTimer);
134
- this.flushTimer = null;
190
+ close() {
191
+ if (this.closePromise)
192
+ return this.closePromise;
193
+ this.closing = true;
194
+ if (this.flushDisposer) {
195
+ this.flushDisposer();
196
+ this.flushDisposer = null;
197
+ }
198
+ this.closePromise = (async () => {
199
+ const accepted = await Promise.all([...this.pendingDeliveries, ...this.pendingDiagnostics]);
200
+ const failures = accepted.flatMap(outcome => outcome.failed ? [outcome.cause] : []);
201
+ if (failures.length === 1)
202
+ throw failures[0];
203
+ if (failures.length > 1)
204
+ throw new AggregateError(failures, 'Accepted remote deliveries failed while closing.');
205
+ if (this.flushPromise)
206
+ await this.flushPromise;
207
+ await this.flush();
208
+ untrackLoggingResource(this.runtime, this);
209
+ // A final flush the collector refused re-buffers its entries: closing with them is a loss, never a success.
210
+ if (this.buffer.length > 0)
211
+ throw new CapabilityError('The remote output closed with entries the collector did not accept.', 'UNAVAILABLE', {
212
+ reason: 'remote-final-flush-undelivered', retryable: false, details: { id: this.id, retained: this.buffer.length }
213
+ });
214
+ })();
215
+ return this.closePromise;
216
+ }
217
+ async resolveEndpoint() {
218
+ if (this.endpoint)
219
+ return this.endpoint;
220
+ const settings = await loadLoggingConfig(this.runtime);
221
+ if (!settings.remoteEndpoint) {
222
+ throw new CapabilityError('A remote output needs an endpoint: set `endpoint` on its descriptor or `remoteEndpoint` in the logging settings.', 'INVALID_INPUT', {
223
+ reason: 'remote-endpoint-missing', retryable: false, details: { id: this.id }
224
+ });
225
+ }
226
+ this.endpoint = settings.remoteEndpoint;
227
+ return this.endpoint;
228
+ }
229
+ deliver(entries) {
230
+ const pending = this.send(entries);
231
+ const delivered = settle(pending);
232
+ this.pendingDeliveries.add(delivered);
233
+ void delivered.then(() => this.pendingDeliveries.delete(delivered));
234
+ return pending;
235
+ }
236
+ /**
237
+ * One POST under the runtime lifecycle's deadline (no ad hoc timer). Past
238
+ * `deliveryTimeoutMs` the request is aborted and fails. When the runtime's
239
+ * disposal begins mid-request, the accepted delivery is joined, not
240
+ * abandoned: it keeps running under a finalization wait capped by the
241
+ * remaining budget, and is aborted when that runs out.
242
+ */
243
+ async request(endpoint, body) {
244
+ const controller = new AbortController();
245
+ const timeoutMs = this.descriptor.deliveryTimeoutMs ?? REMOTE_DELIVERY_TIMEOUT_MS;
246
+ const reason = 'logging-remote-delivery';
247
+ // The request's own outcome is observed once here, so an aborted request
248
+ // never rejects unobserved after its wait has already settled.
249
+ const response = settle(fetch(endpoint, {
250
+ method: 'POST', headers: { 'Content-Type': 'application/x-ndjson' }, body, signal: controller.signal
251
+ }));
252
+ const answered = (outcome) => {
253
+ if (outcome.failed)
254
+ throw outcome.cause;
255
+ return outcome.value;
256
+ };
257
+ const bounded = () => this.runtime.lifecycle.wait(() => response, { timeoutMs, reason });
258
+ const first = await settle(bounded());
259
+ if (!first.failed)
260
+ return answered(first.value);
261
+ const joinable = WaitAbortedSchema.safeParse(first.cause).success && this.runtime.lifecycle.signal.aborted;
262
+ if (!joinable) {
263
+ controller.abort(first.cause);
264
+ throw first.cause;
135
265
  }
136
- // Flush remaining buffer
137
- await this.flush();
266
+ const joined = await settle(bounded());
267
+ if (joined.failed) {
268
+ controller.abort(joined.cause);
269
+ throw joined.cause;
270
+ }
271
+ return answered(joined.value);
138
272
  }
139
273
  async send(entries) {
140
274
  if (entries.length === 0)
141
- return;
275
+ return true;
276
+ const endpoint = await this.resolveEndpoint();
142
277
  const body = this.formatter.formatBatch
143
- ? this.formatter.formatBatch(entries)
144
- : entries.map((e) => this.formatter.format(e)).join('\n');
145
- try {
146
- const response = await fetch(this.endpoint, {
147
- method: 'POST',
148
- headers: {
149
- 'Content-Type': 'application/x-ndjson'
150
- },
151
- body
278
+ ? this.formatter.formatBatch(entries.map(value => value.entry))
279
+ : entries.map(value => this.formatter.format(value.entry)).join('\n');
280
+ const requested = await settle(this.request(endpoint, body));
281
+ if (requested.failed) {
282
+ this.addToBuffer(entries);
283
+ this.metrics.retried += entries.length;
284
+ (await createFallbackLogger('logging:remote-output', this.runtime)).error('Network error sending logs to remote endpoint', {
285
+ error: createEndpointFailureSchema(endpoint).parse(requested.cause), endpoint: RedactedEndpointSchema.parse(endpoint)
152
286
  });
153
- if (!response.ok) {
154
- logger.error('Failed to send logs to remote endpoint', {
155
- status: response.status,
156
- statusText: response.statusText,
157
- endpoint: this.endpoint
158
- });
159
- // Re-add failed entries to buffer for retry
160
- this.addToBuffer(entries);
161
- this.metrics.retried += entries.length;
162
- }
163
- else {
164
- this.metrics.sent += entries.length;
165
- }
287
+ return false;
166
288
  }
167
- catch (error) {
168
- logger.error('Network error sending logs to remote endpoint', {
169
- error: error instanceof Error ? error.message : String(error),
170
- endpoint: this.endpoint
171
- });
172
- // Re-add failed entries to buffer for retry
289
+ const response = requested.value;
290
+ if (!response.ok) {
291
+ // The reason phrase is the collector's text and may echo the request line, query credential included: it is scrubbed.
173
292
  this.addToBuffer(entries);
174
293
  this.metrics.retried += entries.length;
294
+ (await createFallbackLogger('logging:remote-output', this.runtime)).error('Failed to send logs to remote endpoint', {
295
+ status: response.status, statusText: createEndpointTextSchema(endpoint).parse(response.statusText), endpoint: RedactedEndpointSchema.parse(endpoint)
296
+ });
297
+ return false;
175
298
  }
299
+ this.metrics.sent += entries.length;
300
+ return true;
176
301
  }
177
302
  }
178
303
  //# sourceMappingURL=remote.impl.js.map