@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
package/LICENSE ADDED
@@ -0,0 +1,18 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 VIBES DEV LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6
+ associated documentation files (the "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
9
+ following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all copies or substantial
12
+ portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15
+ LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
16
+ EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
18
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,80 +1,115 @@
1
1
  # @vibesdotdev/logging
2
2
 
3
- Universal logging core for vibes. Defines the runtime kinds, the core logger,
4
- isomorphic sinks/formatters, and the audit kind. Environment-specific sinks
5
- (file, browser, OTEL) live in sibling packages.
3
+ Structured logging for Vibes. Code logs through `getLogger(namespace, runtime)`; the Vibes runtime decides where entries go by resolving the sinks, formatters and outputs registered for the current host. The package also ships a browser sink, an OpenTelemetry log sink, server observability helpers, an audit log, the `vibes logs` CLI commands, and the portable contract (`@vibesdotdev/logging/host`) that a host package implements for file logging.
6
4
 
7
- ## Quickstart
5
+ The package root runs anywhere: Bun, Node, workerd and the browser. It never writes to stdout, so it is safe inside MCP stdio servers and CLIs that print machine-readable output.
8
6
 
9
- ```ts
10
- import { getLogger, getDefaultLogger } from '@vibesdotdev/logging';
7
+ ## Install
11
8
 
12
- const logger = getLogger('myapp');
13
- logger.info('Started', { version: '1.0.0' });
14
- logger.error('Failed', { error: err.message });
9
+ ```sh
10
+ bun add @vibesdotdev/logging @vibesdotdev/kernel
11
+ # or
12
+ npm install @vibesdotdev/logging @vibesdotdev/kernel
13
+ ```
15
14
 
16
- const child = logger.child('database');
17
- child.debug('Connected');
15
+ ## Log something
18
16
 
19
- const contextual = logger.withRequestContext({
20
- requestId: 'req-123',
21
- userId: 'user-456',
17
+ ```ts
18
+ import { bootstrapVibesRuntime } from '@vibesdotdev/kernel';
19
+ import loggingPlugin from '@vibesdotdev/logging/plugin';
20
+ import loggingConsumerPlugin from '@vibesdotdev/logging/consumer/plugin';
21
+ import { getLogger } from '@vibesdotdev/logging';
22
+
23
+ // `environment` is your host's environment plugin (on Bun, from @vibesdotdev/host-bun).
24
+ const runtime = await bootstrapVibesRuntime({
25
+ environment,
26
+ composition: { kind: 'literal', plugins: [async () => loggingPlugin, async () => loggingConsumerPlugin] }
22
27
  });
23
- contextual.info('Request handled');
28
+
29
+ const log = getLogger('myapp:db', runtime);
30
+ log.info('connected', { host: 'localhost', port: 5432 });
31
+
32
+ const request = log.withRequestContext({ requestId: 'req-1' });
33
+ request.warn('slow query', { durationMs: 850 });
34
+ ```
35
+
36
+ Filter output with environment keys read through the runtime:
37
+
38
+ ```sh
39
+ VIBES_LOG_LEVEL=debug VIBES_LOG='myapp:*,-myapp:noisy' bun run app.ts
24
40
  ```
25
41
 
26
- ### Audit
42
+ ## Pick the surfaces your host needs
43
+
44
+ Register each extra plugin after `@vibesdotdev/logging/plugin`. File sinks, outputs and the file-backed audit log are host code: `@vibesdotdev/host-node/logging`'s `nodeLoggingPlugin` implements `@vibesdotdev/logging/host`. The Bun host (`@vibesdotdev/host-bun`) registers it with its environment (opt out with its `logging: { files: false }` option), and so does the declared Node test host; a production Node composition registers `nodeLoggingPlugin` itself.
45
+
46
+ | Plugin | Host | Adds |
47
+ | --- | --- | --- |
48
+ | `@vibesdotdev/logging/consumer/plugin` | Terminal consumer | Colorized console sink and pretty formatter |
49
+ | `@vibesdotdev/logging/browser/plugin` | Browser | Styled console sink with localStorage buffering |
50
+ | `@vibesdotdev/logging/otel/plugin` | Server | OTLP/HTTP log export |
51
+ | `@vibesdotdev/logging/cli/plugin` | CLI | `vibes logs list \| view \| tail \| search \| rotate` and `vibes logs audit list \| cleanup` |
52
+
53
+ The example composes terminal rendering explicitly. Browser and cloud bundles use
54
+ `./plugin` without the consumer slice: JSON formatters, memory/buffer sinks,
55
+ stdout through the runtime's stderr port, remote output and browser console
56
+ remain universal. The optional browser slice adds persistence. Scope filtering
57
+ does not isolate bundles; the consumer imports live in their own plugin.
58
+
59
+ `@vibesdotdev/logging/plugin` also registers the `logging` `runtime/client`. Resolve it with `getVibesClient('logging', runtime)`, or peek it synchronously with `tryGetVibesClient('logging', runtime)` (both from `@vibesdotdev/kernel/client`). See [SPEC.md](SPEC.md#runtime-client) and [Composition](SPEC.md#composition).
60
+
61
+ For traces and metrics on a server, call `initializeTelemetry(runtime)` from `@vibesdotdev/logging/observability` after your runtime environment is registered, and report `getTelemetryStatus(runtime)` from a health endpoint.
62
+
63
+ ## Buffer retention
64
+
65
+ The universal `buffer` sink retains all accepted entries until drained, cleared
66
+ or closed. Set an optional positive integer `capacity` on its registered
67
+ `SinkDescriptor` to bound storage. At capacity it refuses the incoming entry
68
+ before changing retained entries (`CapabilityError`: `UNAVAILABLE`,
69
+ `buffer-capacity-exceeded`, retryable), without including entry contents in the
70
+ failure. The logger delivers refused entries through its fallback and reports
71
+ the failure. Drain or clear to restore capacity; `flush()` keeps entries and
72
+ `close()` or runtime disposal clears them. This buffer is not durable storage.
73
+
74
+ ## Memory retention
75
+
76
+ The queryable `memory` sink retains all entries by default until clear, close
77
+ or runtime disposal. Its registered `SinkDescriptor.maxEntries` optionally
78
+ sets a nonnegative integer bound: zero disables retention; positive bounds
79
+ deliberately evict oldest entries. `setMaxEntries(number)` changes the bound
80
+ and trims immediately. Invalid setter bounds refuse `INVALID_INPUT`,
81
+ `memory-entry-limit-invalid`. Buffer capacity instead refuses incoming entries.
82
+ Queries return independent array snapshots in emission order, with level,
83
+ namespace, message and date filters; `limit` selects the newest matches and
84
+ accepts zero. Invalid queries refuse `INVALID_INPUT`, `memory-query-invalid`.
85
+ `MemorySinkQueryOptions` remains exported from `./sinks`; its schemas and
86
+ inferred types live in `./schemas/sink` and `./schemas`.
87
+
88
+ ## Audit
27
89
 
28
90
  ```ts
29
- import { auditLog } from '@vibesdotdev/logging/audit';
91
+ import { auditLog } from '@vibesdotdev/logging';
30
92
 
31
93
  await auditLog({
32
94
  category: 'authentication',
33
95
  severity: 'medium',
34
96
  action: 'login',
35
- actor: { id: 'user-123', type: 'user' },
97
+ actor: { id: 'user-1', type: 'user' },
36
98
  outcome: 'success',
37
- });
38
- ```
39
-
40
- ### Filter via env
41
-
42
- ```bash
43
- VIBES_LOG='vibes:pm:*,-vibes:pm:verbose' \
44
- VIBES_LOG_LEVEL=debug \
45
- bun run app
46
- ```
47
-
48
- ## CLI
49
-
50
- ```bash
51
- vibes logs list
52
- vibes logs view <output>
53
- vibes logs tail <output>
54
- vibes logs search <pattern>
55
- vibes logs rotate <output>
99
+ context: { apiKey: 'redacted before it is written' }
100
+ }, runtime);
56
101
  ```
57
102
 
58
- ## Sinks
103
+ `auditLog(input, runtime)` (also exported from `@vibesdotdev/logging/audit`) validates the entry, redacts credential-like context keys and writes it to the handed runtime's stderr. To persist entries, resolve a `logging/audit` implementation from the runtime (`runtime.query('logging/audit')`): wherever `nodeLoggingPlugin` is registered (the Bun host, the declared Node test host, or a Node composition that adds it) there is a file-backed one with retention by category.
59
104
 
60
- Core ships isomorphic sinks only:
61
- - `console` — colorized stderr
62
- - `buffer` — in-memory startup buffer
63
- - `memory` — testable in-memory store
64
- - `stdout` — raw stderr (MCP-safe)
105
+ ## Docs
65
106
 
66
- Environment-specific sinks load from sibling packages (apps choose what to load):
67
- - [`@vibesdotdev/logging-fs`](../logging-fs/) — file sink, file output, stdout-capture, file-backed audit
68
- - [`@vibesdotdev/logging-browser`](../logging-browser/) — browser sink
69
- - [`@vibesdotdev/logging-otel`](../logging-otel/) — OpenTelemetry sink
107
+ `vibes docs show logging` covers `logging.levels`, `logging.structured`, `logging.transports`, `logging.cli` and `logging.observability`. [SPEC.md](SPEC.md) is the full contract: what the package owns, its hard rules, every entrypoint and every configuration key.
70
108
 
71
- ## Test
109
+ ## Development
72
110
 
73
- ```bash
74
- bun test
75
- ```
111
+ `bun run check` typechecks all source TypeScript and TSX, including tests, without emitting. `bun run test` runs the in-process suite. `bun run build` uses `tsconfig.build.json` to emit production JavaScript and declarations with rewritten relative imports; tests, test support and the Svelte surface are excluded from emission. `tsconfig.check.json` remains a compatible alias for the all-source project.
76
112
 
77
- ## Docs
113
+ ## License
78
114
 
79
- - [SPEC.md](./SPEC.md) — package contract, owned surfaces, hard rules, migration debt
80
- - [runtime](../runtime/SPEC.md), [runtime-plugin](../runtime-plugin/SPEC.md)
115
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Audit Retention Job Descriptor
3
+ *
4
+ * The scheduled enforcement of every file-backed audit logger's retention,
5
+ * run by Workers (RC11, D19). Declared as data so logging takes no package
6
+ * edge on `@vibesdotdev/workers` (Workers depends on logging); the runtime
7
+ * holds it until the `workers/job` kind registers.
8
+ */
9
+ import * as z from 'zod/v4';
10
+ export declare const AUDIT_RETENTION_JOB_ID = "logging.audit-retention";
11
+ export declare const AuditRetentionJobOutputSchema: z.ZodObject<{
12
+ success: z.ZodBoolean;
13
+ results: z.ZodArray<z.ZodObject<{
14
+ id: z.ZodString;
15
+ deleted: z.ZodNumber;
16
+ archived: z.ZodNumber;
17
+ retentionDays: z.ZodNumber;
18
+ }, z.core.$strip>>;
19
+ failures: z.ZodArray<z.ZodObject<{
20
+ id: z.ZodString;
21
+ error: z.ZodString;
22
+ }, z.core.$strip>>;
23
+ }, z.core.$strip>;
24
+ export type AuditRetentionJobOutput = z.infer<typeof AuditRetentionJobOutputSchema>;
25
+ export declare const auditRetentionJobDescriptor: {
26
+ kind: "workers/job";
27
+ id: string;
28
+ name: string;
29
+ description: string;
30
+ queue: string;
31
+ dispatch: "background";
32
+ type: "scheduled";
33
+ schedule: string;
34
+ retries: {
35
+ maxAttempts: number;
36
+ backoff: "exponential";
37
+ delay: number;
38
+ };
39
+ hardware: readonly ["consumer"];
40
+ schemas: {
41
+ input: z.ZodPrefault<z.ZodObject<{}, z.core.$strip>>;
42
+ output: z.ZodObject<{
43
+ success: z.ZodBoolean;
44
+ results: z.ZodArray<z.ZodObject<{
45
+ id: z.ZodString;
46
+ deleted: z.ZodNumber;
47
+ archived: z.ZodNumber;
48
+ retentionDays: z.ZodNumber;
49
+ }, z.core.$strip>>;
50
+ failures: z.ZodArray<z.ZodObject<{
51
+ id: z.ZodString;
52
+ error: z.ZodString;
53
+ }, z.core.$strip>>;
54
+ }, z.core.$strip>;
55
+ };
56
+ tags: string[];
57
+ enabled: true;
58
+ };
59
+ export default auditRetentionJobDescriptor;
60
+ //# sourceMappingURL=audit-retention.job.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-retention.job.descriptor.d.ts","sourceRoot":"","sources":["../../src/audit/audit-retention.job.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAEhE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAWxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBtC,CAAC;AAEH,eAAe,2BAA2B,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Audit Retention Job Descriptor
3
+ *
4
+ * The scheduled enforcement of every file-backed audit logger's retention,
5
+ * run by Workers (RC11, D19). Declared as data so logging takes no package
6
+ * edge on `@vibesdotdev/workers` (Workers depends on logging); the runtime
7
+ * holds it until the `workers/job` kind registers.
8
+ */
9
+ import * as z from 'zod/v4';
10
+ import { createRuntimeAsset } from '@vibesdotdev/kernel';
11
+ export const AUDIT_RETENTION_JOB_ID = 'logging.audit-retention';
12
+ export const AuditRetentionJobOutputSchema = z.object({
13
+ success: z.boolean(),
14
+ results: z.array(z.object({
15
+ id: z.string(),
16
+ deleted: z.number(),
17
+ archived: z.number(),
18
+ retentionDays: z.number()
19
+ })),
20
+ failures: z.array(z.object({ id: z.string(), error: z.string() }))
21
+ });
22
+ export const auditRetentionJobDescriptor = createRuntimeAsset({
23
+ kind: 'workers/job',
24
+ id: AUDIT_RETENTION_JOB_ID,
25
+ name: 'Audit Retention',
26
+ description: 'Enforce the retention policy of every file-backed audit logger',
27
+ queue: 'maintenance-jobs',
28
+ dispatch: 'background',
29
+ type: 'scheduled',
30
+ // Daily, as the former 24-hour interval was.
31
+ schedule: '20 3 * * *',
32
+ retries: { maxAttempts: 2, backoff: 'exponential', delay: 60_000 },
33
+ hardware: ['consumer'],
34
+ schemas: {
35
+ input: z.object({}).prefault({}),
36
+ output: AuditRetentionJobOutputSchema
37
+ },
38
+ tags: ['logging', 'audit', 'retention', 'housekeeping'],
39
+ enabled: true
40
+ });
41
+ export default auditRetentionJobDescriptor;
42
+ //# sourceMappingURL=audit-retention.job.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-retention.job.descriptor.js","sourceRoot":"","sources":["../../src/audit/audit-retention.job.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEhE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;QACR,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB,CAAC,CACF;IACD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAClE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC;IAC7D,IAAI,EAAE,aAAa;IACnB,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,gEAAgE;IAC7E,KAAK,EAAE,kBAAkB;IACzB,QAAQ,EAAE,YAAqB;IAC/B,IAAI,EAAE,WAAoB;IAC1B,6CAA6C;IAC7C,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,aAAsB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3E,QAAQ,EAAE,CAAC,UAAU,CAAU;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,6BAA6B;KACrC;IACD,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC;IACvD,OAAO,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,eAAe,2BAA2B,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Audit Retention Job Implementation — runs `enforceAllAuditRetention` on the
3
+ * runtime the Workers consumer constructed it with. A logger that fails is
4
+ * reported in the output and marks the run unsuccessful; it never disappears.
5
+ */
6
+ import type { AuditRetentionRuntime } from './scheduled-audit-retention.ts';
7
+ import type { AuditRetentionJobOutput } from './audit-retention.job.descriptor.ts';
8
+ interface JobDescriptorLike {
9
+ id: string;
10
+ }
11
+ export declare class AuditRetentionJob {
12
+ readonly id: string;
13
+ readonly descriptor: JobDescriptorLike;
14
+ readonly type: "scheduled";
15
+ readonly isolation: "inline";
16
+ private readonly runtime;
17
+ constructor(descriptor: JobDescriptorLike, context: {
18
+ runtime: AuditRetentionRuntime;
19
+ });
20
+ handle(): Promise<AuditRetentionJobOutput>;
21
+ }
22
+ export default AuditRetentionJob;
23
+ //# sourceMappingURL=audit-retention.job.impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-retention.job.impl.d.ts","sourceRoot":"","sources":["../../src/audit/audit-retention.job.impl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,UAAU,iBAAiB;IAC1B,EAAE,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,iBAAiB;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,SAAS,EAAG,QAAQ,CAAU;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEpC,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,qBAAqB,CAAA;KAAE;IAMhF,MAAM,IAAI,OAAO,CAAC,uBAAuB,CAAC;CAIhD;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Audit Retention Job Implementation — runs `enforceAllAuditRetention` on the
3
+ * runtime the Workers consumer constructed it with. A logger that fails is
4
+ * reported in the output and marks the run unsuccessful; it never disappears.
5
+ */
6
+ import { enforceAllAuditRetention } from "./scheduled-audit-retention.js";
7
+ export class AuditRetentionJob {
8
+ id;
9
+ descriptor;
10
+ type = 'scheduled';
11
+ isolation = 'inline';
12
+ runtime;
13
+ constructor(descriptor, context) {
14
+ this.id = descriptor.id;
15
+ this.descriptor = descriptor;
16
+ this.runtime = context.runtime;
17
+ }
18
+ async handle() {
19
+ const { results, failures } = await enforceAllAuditRetention(this.runtime);
20
+ return { success: failures.length === 0, results, failures };
21
+ }
22
+ }
23
+ export default AuditRetentionJob;
24
+ //# sourceMappingURL=audit-retention.job.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-retention.job.impl.js","sourceRoot":"","sources":["../../src/audit/audit-retention.job.impl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAO1E,MAAM,OAAO,iBAAiB;IACpB,EAAE,CAAS;IACX,UAAU,CAAoB;IAC9B,IAAI,GAAG,WAAoB,CAAC;IAC5B,SAAS,GAAG,QAAiB,CAAC;IAEtB,OAAO,CAAwB;IAEhD,YAAY,UAA6B,EAAE,OAA2C;QACrF,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM;QACX,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC9D,CAAC;CACD;AAED,eAAe,iBAAiB,CAAC"}
@@ -7,5 +7,11 @@ import type { AuditDescriptor } from '../schemas/audit.ts';
7
7
  export declare const defaultAuditDescriptor: AuditDescriptor;
8
8
  export declare const authenticationAuditDescriptor: AuditDescriptor;
9
9
  export declare const securityAuditDescriptor: AuditDescriptor;
10
+ export declare const authorizationAuditDescriptor: AuditDescriptor;
11
+ export declare const dataAccessAuditDescriptor: AuditDescriptor;
12
+ export declare const dataModificationAuditDescriptor: AuditDescriptor;
13
+ export declare const configurationAuditDescriptor: AuditDescriptor;
14
+ /** Every built-in audit descriptor, one per {@link AuditCategory}. */
15
+ export declare const ALL_AUDIT_DESCRIPTORS: AuditDescriptor[];
10
16
  export default defaultAuditDescriptor;
11
17
  //# sourceMappingURL=audit.descriptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.descriptor.d.ts","sourceRoot":"","sources":["../../src/audit/audit.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,eAAO,MAAM,sBAAsB,EAAE,eAUpC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,eAU3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAUrC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"audit.descriptor.d.ts","sourceRoot":"","sources":["../../src/audit/audit.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,eAAO,MAAM,sBAAsB,EAAE,eAWpC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,eAW3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAWrC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,eAW1C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,eAWvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,eAW7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,eAW1C,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,EAAE,eAAe,EAQlD,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -3,6 +3,12 @@
3
3
  *
4
4
  * Generic audit logging configuration.
5
5
  */
6
+ /**
7
+ * A file audit (the host's) writes under the bound workspace. Optional, so on
8
+ * an unbound host it still selects and its writes refuse `workspace-unbound`
9
+ * typed, never skipped (C092).
10
+ */
11
+ const AUDIT_OPTIONAL_CONTEXT = ['runtime/workspace-path'];
6
12
  export const defaultAuditDescriptor = {
7
13
  kind: 'logging/audit',
8
14
  id: 'default',
@@ -12,7 +18,8 @@ export const defaultAuditDescriptor = {
12
18
  category: 'system',
13
19
  severity: 'low',
14
20
  retention: '90d',
15
- immutable: true
21
+ immutable: true,
22
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
16
23
  };
17
24
  export const authenticationAuditDescriptor = {
18
25
  kind: 'logging/audit',
@@ -22,8 +29,9 @@ export const authenticationAuditDescriptor = {
22
29
  tags: ['auth', 'security'],
23
30
  category: 'authentication',
24
31
  severity: 'medium',
25
- retention: '1y',
26
- immutable: true
32
+ retention: '365d',
33
+ immutable: true,
34
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
27
35
  };
28
36
  export const securityAuditDescriptor = {
29
37
  kind: 'logging/audit',
@@ -33,8 +41,67 @@ export const securityAuditDescriptor = {
33
41
  tags: ['security', 'compliance'],
34
42
  category: 'security',
35
43
  severity: 'high',
36
- retention: '2y',
37
- immutable: true
44
+ retention: '730d',
45
+ immutable: true,
46
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
47
+ };
48
+ export const authorizationAuditDescriptor = {
49
+ kind: 'logging/audit',
50
+ id: 'authorization',
51
+ name: 'Authorization Audit Logger',
52
+ description: 'Audit logging for authorization and permission checks',
53
+ tags: ['auth', 'security', 'access-control'],
54
+ category: 'authorization',
55
+ severity: 'medium',
56
+ retention: '365d',
57
+ immutable: true,
58
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
59
+ };
60
+ export const dataAccessAuditDescriptor = {
61
+ kind: 'logging/audit',
62
+ id: 'data_access',
63
+ name: 'Data Access Audit Logger',
64
+ description: 'Audit logging for data access events',
65
+ tags: ['compliance', 'privacy', 'data'],
66
+ category: 'data_access',
67
+ severity: 'low',
68
+ retention: '90d',
69
+ immutable: true,
70
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
71
+ };
72
+ export const dataModificationAuditDescriptor = {
73
+ kind: 'logging/audit',
74
+ id: 'data_modification',
75
+ name: 'Data Modification Audit Logger',
76
+ description: 'Audit logging for data create/update/delete events',
77
+ tags: ['compliance', 'data', 'integrity'],
78
+ category: 'data_modification',
79
+ severity: 'medium',
80
+ retention: '365d',
81
+ immutable: true,
82
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
83
+ };
84
+ export const configurationAuditDescriptor = {
85
+ kind: 'logging/audit',
86
+ id: 'configuration',
87
+ name: 'Configuration Audit Logger',
88
+ description: 'Audit logging for configuration changes',
89
+ tags: ['ops', 'compliance', 'configuration'],
90
+ category: 'configuration',
91
+ severity: 'medium',
92
+ retention: '365d',
93
+ immutable: true,
94
+ optionalContext: AUDIT_OPTIONAL_CONTEXT
38
95
  };
96
+ /** Every built-in audit descriptor, one per {@link AuditCategory}. */
97
+ export const ALL_AUDIT_DESCRIPTORS = [
98
+ defaultAuditDescriptor,
99
+ authenticationAuditDescriptor,
100
+ securityAuditDescriptor,
101
+ authorizationAuditDescriptor,
102
+ dataAccessAuditDescriptor,
103
+ dataModificationAuditDescriptor,
104
+ configurationAuditDescriptor
105
+ ];
39
106
  export default defaultAuditDescriptor;
40
107
  //# sourceMappingURL=audit.descriptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.descriptor.js","sourceRoot":"","sources":["../../src/audit/audit.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACtD,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,0CAA0C;IACvD,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;IAChC,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,IAAI;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAoB;IAC7D,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,yCAAyC;IACtD,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACvD,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,mCAAmC;IAChD,IAAI,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IAChC,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;CACf,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"audit.descriptor.js","sourceRoot":"","sources":["../../src/audit/audit.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACtD,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,0CAA0C;IACvD,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;IAChC,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAoB;IAC7D,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,yCAAyC;IACtD,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACvD,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,mCAAmC;IAChD,IAAI,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IAChC,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAoB;IAC5D,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,uDAAuD;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACzD,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,sCAAsC;IACnD,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;IACvC,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAoB;IAC/D,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE,oDAAoD;IACjE,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC;IACzC,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAoB;IAC5D,IAAI,EAAE,eAAe;IACrB,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,yCAAyC;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC;IAC5C,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,sBAAsB;CACvC,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACvD,sBAAsB;IACtB,6BAA6B;IAC7B,uBAAuB;IACvB,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;IAC/B,4BAA4B;CAC5B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -4,9 +4,9 @@ export declare const AuditEntryStorageSchema: z.ZodObject<{
4
4
  id: z.ZodString;
5
5
  timestamp: z.ZodString;
6
6
  category: z.ZodEnum<{
7
+ authorization: "authorization";
7
8
  system: "system";
8
9
  authentication: "authentication";
9
- authorization: "authorization";
10
10
  data_access: "data_access";
11
11
  data_modification: "data_modification";
12
12
  configuration: "configuration";
@@ -23,8 +23,8 @@ export declare const AuditEntryStorageSchema: z.ZodObject<{
23
23
  id: z.ZodString;
24
24
  type: z.ZodEnum<{
25
25
  user: "user";
26
- system: "system";
27
26
  service: "service";
27
+ system: "system";
28
28
  }>;
29
29
  name: z.ZodOptional<z.ZodString>;
30
30
  ip: z.ZodOptional<z.ZodString>;
@@ -48,8 +48,8 @@ export declare const AuditEntryStorageSchema: z.ZodObject<{
48
48
  actorId: z.ZodString;
49
49
  actorType: z.ZodEnum<{
50
50
  user: "user";
51
- system: "system";
52
51
  service: "service";
52
+ system: "system";
53
53
  }>;
54
54
  targetId: z.ZodOptional<z.ZodString>;
55
55
  targetType: z.ZodOptional<z.ZodString>;
@@ -1,2 +1,4 @@
1
- export { AuditEntryStorageSchema, type AuditEntryStorage, type AuditRetentionPolicy, DEFAULT_RETENTION_POLICIES, type AuditStorageConfig, defaultAuditStorageConfig } from './audit.storage.schema';
1
+ export { AuditEntryStorageSchema, type AuditEntryStorage, type AuditRetentionPolicy, DEFAULT_RETENTION_POLICIES, type AuditStorageConfig, defaultAuditStorageConfig } from './audit.storage.schema.ts';
2
+ export { defaultAuditDescriptor, authenticationAuditDescriptor, securityAuditDescriptor, authorizationAuditDescriptor, dataAccessAuditDescriptor, dataModificationAuditDescriptor, configurationAuditDescriptor, ALL_AUDIT_DESCRIPTORS } from './audit.descriptor.ts';
3
+ export { auditLog, buildAuditEntry, redactAuditContext, emitAuditEntry, type AuditLogInput } from '../kinds/audit.ts';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,yBAAyB,EACzB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,qBAAqB,EACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,2 +1,5 @@
1
- export { AuditEntryStorageSchema, DEFAULT_RETENTION_POLICIES, defaultAuditStorageConfig } from './audit.storage.schema.js';
1
+ export { AuditEntryStorageSchema, DEFAULT_RETENTION_POLICIES, defaultAuditStorageConfig } from "./audit.storage.schema.js";
2
+ export { defaultAuditDescriptor, authenticationAuditDescriptor, securityAuditDescriptor, authorizationAuditDescriptor, dataAccessAuditDescriptor, dataModificationAuditDescriptor, configurationAuditDescriptor, ALL_AUDIT_DESCRIPTORS } from "./audit.descriptor.js";
3
+ // Audit emission: shape, redact and write one entry to the handed runtime's stderr.
4
+ export { auditLog, buildAuditEntry, redactAuditContext, emitAuditEntry } from "../kinds/audit.js";
2
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EAGvB,0BAA0B,EAE1B,yBAAyB,EACzB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,uBAAuB,EAGvB,0BAA0B,EAE1B,yBAAyB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,qBAAqB,EACrB,MAAM,uBAAuB,CAAC;AAE/B,oFAAoF;AACpF,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Audit retention enforcement for file-backed audit loggers.
3
+ *
4
+ * The periodic run is a Workers job (`logging.audit-retention`,
5
+ * `audit-retention.job.descriptor.ts`): schedules belong to Workers (RC11,
6
+ * D19), so this module holds no timer. Its former env knobs moved with it:
7
+ * the interval is the job's declared `schedule`, and an operator switches it
8
+ * off through the Workers settings (`schedules['logging.audit-retention']
9
+ * .enabled = false`), not an environment variable.
10
+ */
11
+ import type { AuditDescriptor } from '@vibesdotdev/logging/schemas/audit';
12
+ export interface AuditRetentionRuntime {
13
+ hasKind(kind: string): boolean;
14
+ query(kind: string): {
15
+ descriptors(): AuditDescriptor[];
16
+ withId(id: string): {
17
+ resolve<T>(): Promise<T>;
18
+ };
19
+ };
20
+ }
21
+ export interface AuditRetentionResult {
22
+ id: string;
23
+ deleted: number;
24
+ archived: number;
25
+ retentionDays: number;
26
+ }
27
+ export interface AuditRetentionFailure {
28
+ id: string;
29
+ error: string;
30
+ }
31
+ /**
32
+ * Enforce retention on every registered audit logger that supports it. One
33
+ * logger's failure does not stop the others; every failure is returned, named.
34
+ */
35
+ export declare function enforceAllAuditRetention(runtime: AuditRetentionRuntime): Promise<{
36
+ results: AuditRetentionResult[];
37
+ failures: AuditRetentionFailure[];
38
+ }>;
39
+ //# sourceMappingURL=scheduled-audit-retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-audit-retention.d.ts","sourceRoot":"","sources":["../../src/audit/scheduled-audit-retention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAI1E,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG;QACpB,WAAW,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG;YAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;SAAE,CAAC;KACjD,CAAC;CACF;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;CAAE,CAAC,CAmBjF"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Audit retention enforcement for file-backed audit loggers.
3
+ *
4
+ * The periodic run is a Workers job (`logging.audit-retention`,
5
+ * `audit-retention.job.descriptor.ts`): schedules belong to Workers (RC11,
6
+ * D19), so this module holds no timer. Its former env knobs moved with it:
7
+ * the interval is the job's declared `schedule`, and an operator switches it
8
+ * off through the Workers settings (`schedules['logging.audit-retention']
9
+ * .enabled = false`), not an environment variable.
10
+ */
11
+ import { attempt } from "../core/attempt.js";
12
+ import { ThrownMessageSchema } from "../core/redact.js";
13
+ /**
14
+ * Enforce retention on every registered audit logger that supports it. One
15
+ * logger's failure does not stop the others; every failure is returned, named.
16
+ */
17
+ export async function enforceAllAuditRetention(runtime) {
18
+ const results = [];
19
+ const failures = [];
20
+ if (!runtime.hasKind('logging/audit'))
21
+ return { results, failures };
22
+ for (const descriptor of runtime.query('logging/audit').descriptors()) {
23
+ const enforced = await attempt(async () => {
24
+ const auditor = await runtime.query('logging/audit').withId(descriptor.id).resolve();
25
+ return auditor.enforceRetention ? await auditor.enforceRetention() : null;
26
+ });
27
+ if ('failure' in enforced) {
28
+ // The job output is serialized, so a failure is returned by its message.
29
+ const { cause } = enforced.failure;
30
+ failures.push({ id: descriptor.id, error: ThrownMessageSchema.parse(cause) });
31
+ }
32
+ else if (enforced.value) {
33
+ results.push({ id: descriptor.id, ...enforced.value });
34
+ }
35
+ }
36
+ return { results, failures };
37
+ }
38
+ //# sourceMappingURL=scheduled-audit-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-audit-retention.js","sourceRoot":"","sources":["../../src/audit/scheduled-audit-retention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAsBxD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,OAA8B;IAE9B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpE,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,EAAuB,CAAC;YAC1G,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC3B,yEAAyE;YACzE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}