@vibesdotdev/logging 0.0.2 → 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 (699) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +101 -8
  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 +308 -224
  589. package/dist/contexts/audit.d.ts +0 -34
  590. package/dist/contexts/audit.d.ts.map +0 -1
  591. package/dist/contexts/audit.js +0 -13
  592. package/dist/contexts/audit.js.map +0 -1
  593. package/dist/formatters/index.d.ts +0 -7
  594. package/dist/formatters/index.d.ts.map +0 -1
  595. package/dist/formatters/index.js +0 -8
  596. package/dist/formatters/index.js.map +0 -1
  597. package/dist/formatters/pretty/pretty.impl.cli.d.ts.map +0 -1
  598. package/dist/formatters/pretty/pretty.impl.cli.js.map +0 -1
  599. package/dist/kinds/logger.contracts.d.ts +0 -16
  600. package/dist/kinds/logger.contracts.d.ts.map +0 -1
  601. package/dist/kinds/logger.contracts.js +0 -9
  602. package/dist/kinds/logger.contracts.js.map +0 -1
  603. package/dist/kinds/output.contracts.d.ts +0 -50
  604. package/dist/kinds/output.contracts.d.ts.map +0 -1
  605. package/dist/kinds/output.contracts.js +0 -10
  606. package/dist/kinds/output.contracts.js.map +0 -1
  607. package/dist/logging.cli.plugin.d.ts.map +0 -1
  608. package/dist/logging.cli.plugin.js +0 -39
  609. package/dist/logging.cli.plugin.js.map +0 -1
  610. package/dist/outputs/index.d.ts +0 -7
  611. package/dist/outputs/index.d.ts.map +0 -1
  612. package/dist/outputs/index.js +0 -8
  613. package/dist/outputs/index.js.map +0 -1
  614. package/dist/sinks/buffer/buffer.impl.cli.d.ts.map +0 -1
  615. package/dist/sinks/buffer/buffer.impl.cli.js +0 -34
  616. package/dist/sinks/buffer/buffer.impl.cli.js.map +0 -1
  617. package/dist/sinks/console/console.impl.cli.d.ts.map +0 -1
  618. package/dist/sinks/console/console.impl.cli.js.map +0 -1
  619. package/dist/sinks/stdout/stdout.impl.cli.d.ts.map +0 -1
  620. package/dist/sinks/stdout/stdout.impl.cli.js +0 -21
  621. package/dist/sinks/stdout/stdout.impl.cli.js.map +0 -1
  622. package/src/audit/audit.descriptor.ts +0 -45
  623. package/src/audit/audit.storage.schema.ts +0 -57
  624. package/src/audit/index.ts +0 -8
  625. package/src/cli/logs.descriptor.ts +0 -19
  626. package/src/cli/logs.list.descriptor.ts +0 -28
  627. package/src/cli/logs.list.impl.ts +0 -93
  628. package/src/cli/logs.rotate.descriptor.ts +0 -40
  629. package/src/cli/logs.rotate.impl.ts +0 -61
  630. package/src/cli/logs.search.descriptor.ts +0 -61
  631. package/src/cli/logs.search.impl.ts +0 -173
  632. package/src/cli/logs.tail.descriptor.ts +0 -49
  633. package/src/cli/logs.tail.impl.ts +0 -105
  634. package/src/cli/logs.view.descriptor.ts +0 -57
  635. package/src/cli/logs.view.impl.ts +0 -108
  636. package/src/cli/types.ts +0 -59
  637. package/src/contexts/audit.ts +0 -36
  638. package/src/contexts/fallback-logger.ts +0 -80
  639. package/src/contexts/index.ts +0 -23
  640. package/src/contexts/logger.ts +0 -119
  641. package/src/core/index.ts +0 -32
  642. package/src/core/logger.ts +0 -150
  643. package/src/core/namespace.ts +0 -195
  644. package/src/core/parsing.ts +0 -21
  645. package/src/core/types.ts +0 -82
  646. package/src/docs/levels.docs.descriptor.ts +0 -344
  647. package/src/docs/structured.docs.descriptor.ts +0 -444
  648. package/src/docs/transports.docs.descriptor.ts +0 -428
  649. package/src/formatters/index.ts +0 -6
  650. package/src/formatters/json/json.formatters.descriptor.ts +0 -25
  651. package/src/formatters/json/json.impl.ts +0 -41
  652. package/src/formatters/json5/json5.descriptor.ts +0 -25
  653. package/src/formatters/json5/json5.impl.ts +0 -43
  654. package/src/formatters/jsonl/jsonl.descriptor.ts +0 -26
  655. package/src/formatters/jsonl/jsonl.impl.ts +0 -39
  656. package/src/formatters/pretty/pretty.descriptor.ts +0 -26
  657. package/src/formatters/pretty/pretty.impl.cli.ts +0 -101
  658. package/src/index.ts +0 -190
  659. package/src/kinds/audit.ts +0 -169
  660. package/src/kinds/contexts.ts +0 -22
  661. package/src/kinds/formatter.ts +0 -117
  662. package/src/kinds/index.ts +0 -25
  663. package/src/kinds/logger.contracts.ts +0 -17
  664. package/src/kinds/logger.impl.ts +0 -206
  665. package/src/kinds/logger.ts +0 -46
  666. package/src/kinds/logger.utils.ts +0 -91
  667. package/src/kinds/output.contracts.ts +0 -54
  668. package/src/kinds/output.impl.ts +0 -118
  669. package/src/kinds/output.ts +0 -59
  670. package/src/kinds/output.types.ts +0 -105
  671. package/src/kinds/sink.ts +0 -100
  672. package/src/logger.context.descriptor.ts +0 -13
  673. package/src/logging.cli.plugin.ts +0 -43
  674. package/src/logging.plugin.ts +0 -93
  675. package/src/outputs/index.ts +0 -6
  676. package/src/outputs/remote/remote.descriptor.ts +0 -27
  677. package/src/outputs/remote/remote.impl.ts +0 -218
  678. package/src/outputs.context.descriptor.ts +0 -10
  679. package/src/outputs.context.impl.ts +0 -30
  680. package/src/paths.ts +0 -10
  681. package/src/schemas/audit.ts +0 -98
  682. package/src/schemas/entry.ts +0 -88
  683. package/src/schemas/formatter.ts +0 -37
  684. package/src/schemas/index.ts +0 -80
  685. package/src/schemas/logger.ts +0 -38
  686. package/src/schemas/output.ts +0 -62
  687. package/src/schemas/sink.ts +0 -39
  688. package/src/sinks/buffer/buffer.descriptor.ts +0 -13
  689. package/src/sinks/buffer/buffer.impl.cli.ts +0 -49
  690. package/src/sinks/console/console.descriptor.ts +0 -20
  691. package/src/sinks/console/console.impl.browser.ts +0 -69
  692. package/src/sinks/console/console.impl.cli.ts +0 -71
  693. package/src/sinks/index.ts +0 -8
  694. package/src/sinks/memory/memory.descriptor.ts +0 -20
  695. package/src/sinks/memory/memory.impl.ts +0 -119
  696. package/src/sinks/stdout/stdout.descriptor.ts +0 -13
  697. package/src/sinks/stdout/stdout.impl.cli.ts +0 -27
  698. package/src/sinks.context.descriptor.ts +0 -10
  699. package/src/sinks.context.impl.ts +0 -30
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Browser Sink Implementation
3
+ *
4
+ * Browser-optimized sink with:
5
+ * - localStorage buffering for persistence across reloads
6
+ * - Styled console output using CSS
7
+ * - Batched writes for performance
8
+ * - Automatic cleanup on page unload
9
+ */
10
+ import { RuntimeLogEntrySchema } from '@vibesdotdev/logging/schemas/entry';
11
+ import * as z from 'zod/v4';
12
+ import { trackLoggingResource, untrackLoggingResource } from "../../../core/output-resources.js";
13
+ import { attempt } from "../../../core/outcome.js";
14
+ import { LoggedErrorSchema } from "../../../core/redact.js";
15
+ import { CapabilityError } from '@vibesdotdev/kernel';
16
+ /** CSS styles for levels (browser devtools) */
17
+ const LEVEL_STYLES = {
18
+ debug: 'color: #6b7280', // gray-500
19
+ info: 'color: #3b82f6', // blue-500
20
+ warn: 'color: #f59e0b', // amber-500
21
+ error: 'color: #ef4444; font-weight: bold' // red-500
22
+ };
23
+ /** Namespace badge colors */
24
+ const NAMESPACE_COLORS = [
25
+ '#3b82f6', // blue
26
+ '#8b5cf6', // violet
27
+ '#ec4899', // pink
28
+ '#f97316', // orange
29
+ '#10b981', // emerald
30
+ '#06b6d4', // cyan
31
+ '#6366f1' // indigo
32
+ ];
33
+ function getNamespaceColor(namespace) {
34
+ let hash = 0;
35
+ for (let i = 0; i < namespace.length; i++) {
36
+ hash = namespace.charCodeAt(i) + ((hash << 5) - hash);
37
+ }
38
+ return NAMESPACE_COLORS[Math.abs(hash) % NAMESPACE_COLORS.length];
39
+ }
40
+ /** Default localStorage key */
41
+ const DEFAULT_STORAGE_KEY = 'vibes:log:buffer';
42
+ /** Maximum buffer size to prevent localStorage overflow */
43
+ const MAX_BUFFER_SIZE = 1000;
44
+ const BrowserSinkConfigSchema = z.object({
45
+ storageKey: z.string().min(1).default(DEFAULT_STORAGE_KEY),
46
+ maxBufferSize: z.number().int().nonnegative().default(MAX_BUFFER_SIZE),
47
+ consoleEnabled: z.boolean().default(true),
48
+ localStorageEnabled: z.boolean().default(true)
49
+ });
50
+ /** Stored buffer text parsed at the storage boundary: JSON, then wire entries. */
51
+ const StoredBufferSchema = z.string().transform((raw, context) => {
52
+ const parsed = attempt(() => JSON.parse(raw));
53
+ if (!parsed.failed)
54
+ return parsed.value;
55
+ context.addIssue({ code: 'custom', message: parsed.cause instanceof Error ? parsed.cause.message : 'The stored log buffer is not JSON.' });
56
+ return z.NEVER;
57
+ }).pipe(RuntimeLogEntrySchema.array());
58
+ /**
59
+ * Browser sink - optimized for browser environments with:
60
+ * - Styled console output with color-coded namespaces
61
+ * - localStorage buffering for persistence
62
+ * - Batched writes and automatic cleanup
63
+ */
64
+ export default class BrowserSink {
65
+ id;
66
+ descriptor;
67
+ config;
68
+ buffer = [];
69
+ /** The one-shot persist pending for the current buffer (lifecycle-owned, RC07). */
70
+ flushDisposer = null;
71
+ /** Batched persistence delay; unset when batching is off. */
72
+ batchWaitMs;
73
+ runtime;
74
+ browser;
75
+ console;
76
+ unsubscribeUnload = null;
77
+ closed = false;
78
+ lastStorageFailure = null;
79
+ constructor(descriptor, context) {
80
+ this.id = descriptor.id;
81
+ this.descriptor = descriptor;
82
+ if (!context.runtime?.lifecycle) {
83
+ throw new CapabilityError('Browser sink requires its owning runtime.', 'INVALID_INPUT', { reason: 'sink-runtime-missing' });
84
+ }
85
+ this.runtime = context.runtime;
86
+ this.browser = context['runtime/browser-host'];
87
+ this.console = context['runtime/stdio'];
88
+ if (!this.browser || !this.console) {
89
+ throw new CapabilityError('Browser sink requires descriptor-injected browser and console ports.', 'INVALID_INPUT', { reason: 'sink-host-context-missing' });
90
+ }
91
+ this.config = BrowserSinkConfigSchema.parse(context.config ?? descriptor.config ?? {});
92
+ this.batchWaitMs = descriptor.batching?.enabled ? descriptor.batching.maxWait : undefined;
93
+ this.restoreBuffer();
94
+ this.unsubscribeUnload = this.browser.subscribeBeforeUnload(() => this.persistBuffer());
95
+ trackLoggingResource(this.runtime, this);
96
+ }
97
+ emit(entry) {
98
+ if (this.closed || this.runtime.lifecycle.signal.aborted) {
99
+ throw new CapabilityError('Browser sink no longer accepts entries.', this.runtime.lifecycle.signal.aborted ? 'CANCELLED' : 'UNAVAILABLE', {
100
+ reason: this.closed ? 'sink-closed' : 'sink-runtime-disposed', retryable: false
101
+ });
102
+ }
103
+ if (this.config.consoleEnabled)
104
+ this.writeToConsole(entry);
105
+ if (!this.config.localStorageEnabled)
106
+ return;
107
+ this.buffer.push(entry);
108
+ if (this.buffer.length > this.config.maxBufferSize) {
109
+ this.buffer = this.config.maxBufferSize === 0 ? [] : this.buffer.slice(-this.config.maxBufferSize);
110
+ }
111
+ if (entry.level === 'error')
112
+ this.persistBuffer();
113
+ else
114
+ this.schedulePersist();
115
+ }
116
+ schedulePersist() {
117
+ if (this.batchWaitMs === undefined || this.flushDisposer || this.buffer.length === 0)
118
+ return;
119
+ const lifecycle = this.runtime.lifecycle;
120
+ if (lifecycle.signal.aborted) {
121
+ this.persistBuffer();
122
+ return;
123
+ }
124
+ this.flushDisposer = lifecycle.timeout(() => {
125
+ this.flushDisposer = null;
126
+ this.persistBuffer();
127
+ }, this.batchWaitMs);
128
+ }
129
+ async flush() {
130
+ this.persistBuffer();
131
+ }
132
+ async close() {
133
+ if (this.closed)
134
+ return;
135
+ this.closed = true;
136
+ this.flushDisposer?.();
137
+ this.flushDisposer = null;
138
+ this.unsubscribeUnload?.();
139
+ this.unsubscribeUnload = null;
140
+ this.persistBuffer();
141
+ untrackLoggingResource(this.runtime, this);
142
+ }
143
+ /**
144
+ * Absorb a storage failure observably: record it for {@link storageFailure}
145
+ * and report it once on the handed console when it is a new kind of failure,
146
+ * so a refused or full storage is never silent and never floods the console.
147
+ */
148
+ recordStorageFailure(failure) {
149
+ const repeated = this.lastStorageFailure?.operation === failure.operation;
150
+ this.lastStorageFailure = failure;
151
+ if (repeated)
152
+ return;
153
+ this.console.callConsole('warn', [`[logging:browser-sink] storage ${failure.operation} failed`, {
154
+ key: failure.key, error: LoggedErrorSchema.parse(failure.cause)
155
+ }]);
156
+ }
157
+ /**
158
+ * The latest absorbed storage failure, or `null` when none was recorded. A
159
+ * later successful write clears a `write` failure. See {@link BrowserStorageFailure}.
160
+ */
161
+ storageFailure() {
162
+ return this.lastStorageFailure;
163
+ }
164
+ /**
165
+ * Valid persisted wire entries. An absent buffer (or disabled storage) is
166
+ * empty; a refused read or a malformed buffer is also empty and is recorded
167
+ * on {@link storageFailure}.
168
+ */
169
+ getBufferedEntries() {
170
+ if (!this.config.localStorageEnabled)
171
+ return [];
172
+ const key = this.config.storageKey;
173
+ const read = attempt(() => this.browser.storage.getItem(key));
174
+ if (read.failed) {
175
+ this.recordStorageFailure({ operation: 'read', key, cause: read.cause });
176
+ return [];
177
+ }
178
+ if (read.value === null)
179
+ return [];
180
+ const parsed = StoredBufferSchema.safeParse(read.value);
181
+ if (parsed.success)
182
+ return parsed.data;
183
+ this.recordStorageFailure({ operation: 'malformed', key, cause: parsed.error });
184
+ return [];
185
+ }
186
+ clearBuffer() {
187
+ this.buffer = [];
188
+ if (!this.config.localStorageEnabled)
189
+ return;
190
+ const key = this.config.storageKey;
191
+ const removed = attempt(() => this.browser.storage.removeItem(key));
192
+ // The accepted memory buffer is cleared either way; a refused removal stays observable.
193
+ if (removed.failed)
194
+ this.recordStorageFailure({ operation: 'remove', key, cause: removed.cause });
195
+ }
196
+ writeToConsole(entry) {
197
+ const { level, namespace, message, context } = entry;
198
+ const payload = { ...context };
199
+ delete payload.timestamp;
200
+ delete payload.level;
201
+ delete payload.namespace;
202
+ delete payload.runtime;
203
+ const args = [
204
+ `%c${level.toUpperCase().padStart(5)}%c %c[%s]%c %s`,
205
+ LEVEL_STYLES[level],
206
+ '',
207
+ `background: ${getNamespaceColor(namespace)}; color: white; padding: 1px 4px; border-radius: 3px; font-size: 10px`,
208
+ namespace,
209
+ '',
210
+ message
211
+ ];
212
+ if (Object.keys(payload).length > 0)
213
+ args.push(payload);
214
+ this.console.callConsole(level, args);
215
+ }
216
+ persistBuffer() {
217
+ if (!this.config.localStorageEnabled || this.buffer.length === 0)
218
+ return;
219
+ const key = this.config.storageKey;
220
+ const merged = [...this.getBufferedEntries(), ...this.buffer];
221
+ const trimmed = this.config.maxBufferSize === 0 ? [] : merged.slice(-this.config.maxBufferSize);
222
+ const written = attempt(() => this.browser.storage.setItem(key, JSON.stringify(trimmed)));
223
+ if (written.failed) {
224
+ // Quota and availability failures keep accepted entries for the next explicit or batched flush.
225
+ this.recordStorageFailure({ operation: 'write', key, cause: written.cause });
226
+ return;
227
+ }
228
+ this.buffer = [];
229
+ // A successful write resolves a prior write refusal; read and malformed records stay until replaced.
230
+ if (this.lastStorageFailure?.operation === 'write')
231
+ this.lastStorageFailure = null;
232
+ }
233
+ restoreBuffer() {
234
+ const errors = this.getBufferedEntries().filter(entry => entry.level === 'error');
235
+ if (errors.length === 0 || !this.config.consoleEnabled)
236
+ return;
237
+ this.console.callConsole('groupCollapsed', [`📋 ${errors.length} error(s) from previous session`]);
238
+ try {
239
+ for (const entry of errors)
240
+ this.writeToConsole(entry);
241
+ }
242
+ finally {
243
+ this.console.callConsole('groupEnd', []);
244
+ }
245
+ }
246
+ }
247
+ //# sourceMappingURL=browser.impl.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.impl.browser.js","sourceRoot":"","sources":["../../../../src/browser/sinks/browser/browser.impl.browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * A `vibes logs` command that ran on several outputs or audit loggers reports
3
+ * each failure on its own line and keeps going, then refuses as a whole so the
4
+ * command never ends as a success after any of them failed.
5
+ */
6
+ import { CapabilityError } from '@vibesdotdev/kernel';
7
+ import * as z from 'zod/v4';
8
+ /** A raised value that is provably a `CapabilityError`, else undefined; the check never throws (a Proxy trap or a revoked Proxy is not one). */
9
+ export declare const CapabilityErrorOfSchema: z.ZodPipe<z.ZodUnknown, z.ZodTransform<CapabilityError | undefined, unknown>>;
10
+ /** One output or audit logger the command could not serve, and why. */
11
+ export interface FailedTarget {
12
+ readonly id: string;
13
+ readonly cause: unknown;
14
+ }
15
+ /** Every target a command could not serve, by kind. */
16
+ export interface FailedTargets {
17
+ readonly outputs: FailedTarget[];
18
+ readonly audits: FailedTarget[];
19
+ }
20
+ /** The message a failed target's cause carries, for its report line. */
21
+ export declare function failureMessage(target: FailedTarget): string;
22
+ /**
23
+ * The command's typed refusal naming every failed id, by the kind of target
24
+ * (`outputs`, `audits`). Every cause stays attached.
25
+ */
26
+ export declare function failedTargetsError(command: string, failed: FailedTargets): CapabilityError;
27
+ /** True when any target failed. */
28
+ export declare function anyFailed(failed: FailedTargets): boolean;
29
+ //# sourceMappingURL=failures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failures.d.ts","sourceRoot":"","sources":["../../src/cli/failures.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,gJAAgJ;AAChJ,eAAO,MAAM,uBAAuB,+EAGlC,CAAC;AAEH,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACxB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;CAChC;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,eAAe,CAgB1F;AAED,mCAAmC;AACnC,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAExD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * A `vibes logs` command that ran on several outputs or audit loggers reports
3
+ * each failure on its own line and keeps going, then refuses as a whole so the
4
+ * command never ends as a success after any of them failed.
5
+ */
6
+ import { CapabilityError } from '@vibesdotdev/kernel';
7
+ import * as z from 'zod/v4';
8
+ import { ThrownMessageSchema } from "../core/redact.js";
9
+ import { attempt } from "../core/outcome.js";
10
+ /** A raised value that is provably a `CapabilityError`, else undefined; the check never throws (a Proxy trap or a revoked Proxy is not one). */
11
+ export const CapabilityErrorOfSchema = z.unknown().transform((cause) => {
12
+ const typed = attempt(() => (cause instanceof CapabilityError ? cause : undefined));
13
+ return typed.failed ? undefined : typed.value;
14
+ });
15
+ /** The message a failed target's cause carries, for its report line. */
16
+ export function failureMessage(target) {
17
+ return ThrownMessageSchema.parse(target.cause);
18
+ }
19
+ /**
20
+ * The command's typed refusal naming every failed id, by the kind of target
21
+ * (`outputs`, `audits`). Every cause stays attached.
22
+ */
23
+ export function failedTargetsError(command, failed) {
24
+ const all = [...failed.outputs, ...failed.audits];
25
+ const named = [
26
+ failed.outputs.length > 0 ? `output(s) ${failed.outputs.map((target) => target.id).join(', ')}` : '',
27
+ failed.audits.length > 0 ? `audit logger(s) ${failed.audits.map((target) => target.id).join(', ')}` : ''
28
+ ].filter((part) => part !== '').join(' and ');
29
+ return new CapabilityError(`vibes logs ${command} failed for ${named}.`, 'UNAVAILABLE', {
30
+ reason: 'logs-command-targets-failed',
31
+ retryable: false,
32
+ details: {
33
+ command,
34
+ outputs: failed.outputs.map((target) => target.id),
35
+ audits: failed.audits.map((target) => target.id)
36
+ },
37
+ cause: all.length === 1 ? all[0].cause : new AggregateError(all.map((target) => target.cause), `vibes logs ${command}: ${all.length} targets failed.`)
38
+ });
39
+ }
40
+ /** True when any target failed. */
41
+ export function anyFailed(failed) {
42
+ return failed.outputs.length > 0 || failed.audits.length > 0;
43
+ }
44
+ //# sourceMappingURL=failures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failures.js","sourceRoot":"","sources":["../../src/cli/failures.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,gJAAgJ;AAChJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAA+B,EAAE;IACnG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,CAAC,CAAC,CAAC;AAcH,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,MAAoB;IAClD,OAAO,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,MAAqB;IACxE,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG;QACb,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACpG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;KACxG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,eAAe,CAAC,cAAc,OAAO,eAAe,KAAK,GAAG,EAAE,aAAa,EAAE;QACvF,MAAM,EAAE,6BAA6B;QACrC,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE;YACR,OAAO;YACP,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;SAChD;QACD,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,cAAc,OAAO,KAAK,GAAG,CAAC,MAAM,kBAAkB,CAAC;KACtJ,CAAC,CAAC;AACJ,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,SAAS,CAAC,MAAqB;IAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Every `vibes logs` command flag is parsed here, at the command boundary, by a
3
+ * schema. Text a flag's schema does not accept is a typed refusal naming the
4
+ * flag and the value it was given, never a default quietly substituted
5
+ * (`parseInt('5abc')`) or a filter that matches nothing (`--level bogus`).
6
+ */
7
+ import { CapabilityError } from '@vibesdotdev/kernel';
8
+ import * as z from 'zod/v4';
9
+ import { type LogLevel } from '../schemas/entry.ts';
10
+ /** The refusal for a flag whose text its schema does not accept. */
11
+ export declare function invalidFlag(flag: string, value: string, expected: string): CapabilityError;
12
+ /** A flag's text read through `schema`: omitted, `fallback`; not accepted, the refusal naming the flag. */
13
+ export declare function parseFlag<T>(flag: string, raw: string | undefined, schema: z.ZodType<T, string>, expected: string, fallback: T): T;
14
+ /** A whole count of at least `min`, written in digits only. */
15
+ export declare function countFlagSchema(min: number): z.ZodType<number, string>;
16
+ /** A count flag: digits only, at least `min`. */
17
+ export declare function parseCountFlag(flag: string, raw: string | undefined, fallback: number, min: number): number;
18
+ /** A level flag: one of the log levels, or omitted (no level filter). */
19
+ export declare function parseLevelFlag(flag: string, raw: string | undefined): LogLevel | undefined;
20
+ /** A `--since` filter: a relative age or ISO date/date-time, as epoch milliseconds; omitted, no filter. */
21
+ export declare function parseSinceFlag(flag: string, raw: string | undefined): number | undefined;
22
+ /** A `--since` bound passed on as text: an ISO 8601 date or date-time; omitted, no bound. */
23
+ export declare function parseIsoInstantFlag(flag: string, raw: string | undefined): string | undefined;
24
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/cli/flags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpE,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAI1F;AAED,2GAA2G;AAC3G,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAKlI;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtE;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3G;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAE1F;AAgBD,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAExF;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7F"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Every `vibes logs` command flag is parsed here, at the command boundary, by a
3
+ * schema. Text a flag's schema does not accept is a typed refusal naming the
4
+ * flag and the value it was given, never a default quietly substituted
5
+ * (`parseInt('5abc')`) or a filter that matches nothing (`--level bogus`).
6
+ */
7
+ import { CapabilityError } from '@vibesdotdev/kernel';
8
+ import * as z from 'zod/v4';
9
+ import { LogLevelSchema } from "../schemas/entry.js";
10
+ /** The refusal for a flag whose text its schema does not accept. */
11
+ export function invalidFlag(flag, value, expected) {
12
+ return new CapabilityError(`${flag} must be ${expected}; got ${JSON.stringify(value)}.`, 'INVALID_INPUT', {
13
+ reason: 'logs-flag-invalid', retryable: false, details: { flag, value }
14
+ });
15
+ }
16
+ /** A flag's text read through `schema`: omitted, `fallback`; not accepted, the refusal naming the flag. */
17
+ export function parseFlag(flag, raw, schema, expected, fallback) {
18
+ if (raw === undefined)
19
+ return fallback;
20
+ const parsed = schema.safeParse(raw);
21
+ if (!parsed.success)
22
+ throw invalidFlag(flag, raw, expected);
23
+ return parsed.data;
24
+ }
25
+ /** A whole count of at least `min`, written in digits only. */
26
+ export function countFlagSchema(min) {
27
+ return z.string().regex(/^\d+$/).transform(Number).pipe(z.number().int().min(min));
28
+ }
29
+ /** A count flag: digits only, at least `min`. */
30
+ export function parseCountFlag(flag, raw, fallback, min) {
31
+ return parseFlag(flag, raw, countFlagSchema(min), `a whole number of at least ${min}`, fallback);
32
+ }
33
+ /** A level flag: one of the log levels, or omitted (no level filter). */
34
+ export function parseLevelFlag(flag, raw) {
35
+ return parseFlag(flag, raw, z.string().pipe(LogLevelSchema), `one of ${LogLevelSchema.options.join(', ')}`, undefined);
36
+ }
37
+ const SINCE_UNIT_MS = { s: 1000, m: 60 * 1000, h: 60 * 60 * 1000, d: 24 * 60 * 60 * 1000 };
38
+ /** An ISO 8601 date or date-time (with or without an offset). */
39
+ const IsoInstantSchema = z.union([z.iso.datetime({ offset: true, local: true }), z.iso.date()]);
40
+ /** A relative age (`30s`, `15m`, `1h`, `2d`) or an ISO 8601 date/date-time, as the epoch milliseconds it names. */
41
+ const SinceFlagSchema = z.union([
42
+ z.string().regex(/^\d+[smhd]$/).transform((text) => {
43
+ const unit = z.enum(['s', 'm', 'h', 'd']).parse(text.slice(-1));
44
+ return Date.now() - Number(text.slice(0, -1)) * SINCE_UNIT_MS[unit];
45
+ }),
46
+ IsoInstantSchema.transform((text) => Date.parse(text)).pipe(z.number().finite())
47
+ ]);
48
+ /** A `--since` filter: a relative age or ISO date/date-time, as epoch milliseconds; omitted, no filter. */
49
+ export function parseSinceFlag(flag, raw) {
50
+ return parseFlag(flag, raw, SinceFlagSchema, 'a relative age (30s, 15m, 1h, 2d) or an ISO 8601 date or date-time', undefined);
51
+ }
52
+ /** A `--since` bound passed on as text: an ISO 8601 date or date-time; omitted, no bound. */
53
+ export function parseIsoInstantFlag(flag, raw) {
54
+ return parseFlag(flag, raw, IsoInstantSchema, 'an ISO 8601 date or date-time', undefined);
55
+ }
56
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/cli/flags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import * as z from 'zod/v4';
2
+ /** The fields the commands filter and render; every other field passes through. */
3
+ declare const LineEntrySchema: z.ZodObject<{
4
+ timestamp: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5
+ level: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6
+ namespace: z.ZodOptional<z.ZodNullable<z.ZodString>>;
7
+ message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
8
+ context: z.ZodOptional<z.ZodNullable<z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>>;
9
+ }, z.core.$loose>;
10
+ export type LineEntry = z.infer<typeof LineEntrySchema>;
11
+ export type LogLine = {
12
+ readonly kind: 'entry';
13
+ readonly entry: LineEntry;
14
+ } | {
15
+ readonly kind: 'text';
16
+ readonly cause: unknown;
17
+ };
18
+ export declare function readLogLine(line: string): LogLine;
19
+ export declare const RESET = "\u001B[0m";
20
+ /** The terminal color for a line's level; a level outside the contract renders uncolored. */
21
+ export declare function levelColor(level: string): string;
22
+ export {};
23
+ //# sourceMappingURL=log-line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-line.d.ts","sourceRoot":"","sources":["../../src/cli/log-line.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,mFAAmF;AACnF,QAAA,MAAM,eAAe;;;;;;iBAMnB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,MAAM,OAAO,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD;AASD,eAAO,MAAM,KAAK,cAAY,CAAC;AAE/B,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Output lines as the `vibes logs` commands read them.
3
+ *
4
+ * An output line is either a structured entry (a JSON object whose display
5
+ * fields are strings) or plain text. Reading a line answers which; a text line
6
+ * carries the parse failure that made it text instead of discarding it.
7
+ */
8
+ import { JsonValueSchema } from '@vibesdotdev/kernel/schemas/json';
9
+ import * as z from 'zod/v4';
10
+ import { LogLevelSchema } from "../schemas/entry.js";
11
+ import { attempt } from "../core/outcome.js";
12
+ /** The fields the commands filter and render; every other field passes through. */
13
+ const LineEntrySchema = z.looseObject({
14
+ timestamp: z.string().nullish(),
15
+ level: z.string().nullish(),
16
+ namespace: z.string().nullish(),
17
+ message: z.string().nullish(),
18
+ context: JsonValueSchema.nullish()
19
+ });
20
+ export function readLogLine(line) {
21
+ const decoded = attempt(() => JSON.parse(line));
22
+ if (decoded.failed)
23
+ return { kind: 'text', cause: decoded.cause };
24
+ const entry = LineEntrySchema.safeParse(decoded.value);
25
+ return entry.success ? { kind: 'entry', entry: entry.data } : { kind: 'text', cause: entry.error };
26
+ }
27
+ const LEVEL_COLORS = {
28
+ debug: '\x1b[90m', // gray
29
+ info: '\x1b[36m', // cyan
30
+ warn: '\x1b[33m', // yellow
31
+ error: '\x1b[31m' // red
32
+ };
33
+ export const RESET = '\x1b[0m';
34
+ /** The terminal color for a line's level; a level outside the contract renders uncolored. */
35
+ export function levelColor(level) {
36
+ const known = LogLevelSchema.safeParse(level);
37
+ return known.success ? LEVEL_COLORS[known.data] : '';
38
+ }
39
+ //# sourceMappingURL=log-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-line.js","sourceRoot":"","sources":["../../src/cli/log-line.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,mFAAmF;AACnF,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC7B,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE;CAClC,CAAC,CAAC;AAOH,MAAM,UAAU,WAAW,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,YAAY,GAAG;IACpB,KAAK,EAAE,UAAU,EAAE,OAAO;IAC1B,IAAI,EAAE,UAAU,EAAE,OAAO;IACzB,IAAI,EAAE,UAAU,EAAE,SAAS;IAC3B,KAAK,EAAE,UAAU,CAAC,MAAM;CACW,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Logs CLI Group Descriptor
3
+ *
4
+ * Root group for log management commands.
5
+ */
6
+ import type { CLIGroupAssetDescriptor } from './types.ts';
7
+ declare const descriptor: CLIGroupAssetDescriptor;
8
+ export default descriptor;
9
+ //# sourceMappingURL=logging.logs.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.logs.descriptor.d.ts","sourceRoot":"","sources":["../../src/cli/logging.logs.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,QAAA,MAAM,UAAU,EAAE,uBAQjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Logs CLI Group Descriptor
3
+ *
4
+ * Root group for log management commands.
5
+ */
6
+ const descriptor = {
7
+ kind: 'cli/group',
8
+ id: 'logs',
9
+ name: 'logs',
10
+ description: 'View and manage application logs',
11
+ surfaces: ['cli'],
12
+ hardware: ['consumer', 'cloud'],
13
+ enabled: true
14
+ };
15
+ export default descriptor;
16
+ //# sourceMappingURL=logging.logs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.logs.descriptor.js","sourceRoot":"","sources":["../../src/cli/logging.logs.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,GAA4B;IAC3C,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,kCAAkC;IAC/C,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Logs Audit Cleanup CLI Command Descriptor
3
+ */
4
+ import type { CLICommandAssetDescriptor } from './types.ts';
5
+ declare const descriptor: CLICommandAssetDescriptor;
6
+ export default descriptor;
7
+ //# sourceMappingURL=logs.audit.cleanup.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.audit.cleanup.descriptor.d.ts","sourceRoot":"","sources":["../../src/cli/logs.audit.cleanup.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,QAAA,MAAM,UAAU,EAAE,yBAiBjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Logs Audit Cleanup CLI Command Descriptor
3
+ */
4
+ const descriptor = {
5
+ kind: 'cli/command',
6
+ id: 'logs.audit.cleanup',
7
+ name: 'cleanup',
8
+ description: 'Enforce audit log retention policies for all audit loggers',
9
+ group: 'logs.audit',
10
+ options: [
11
+ {
12
+ flags: '--id <auditId>',
13
+ description: 'Only enforce retention for a single audit logger id'
14
+ }
15
+ ],
16
+ surfaces: ['cli'],
17
+ hardware: ['consumer'],
18
+ enabled: true
19
+ };
20
+ export default descriptor;
21
+ //# sourceMappingURL=logs.audit.cleanup.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.audit.cleanup.descriptor.js","sourceRoot":"","sources":["../../src/cli/logs.audit.cleanup.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,UAAU,GAA8B;IAC7C,IAAI,EAAE,aAAa;IACnB,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,4DAA4D;IACzE,KAAK,EAAE,YAAY;IAEnB,OAAO,EAAE;QACR;YACC,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,qDAAqD;SAClE;KACD;IAED,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Logs Audit Cleanup CLI Command Implementation
3
+ */
4
+ import type { CommandContext } from './types.ts';
5
+ /** `vibes logs audit cleanup` takes no positional arguments. */
6
+ type AuditCleanupArgs = Readonly<Record<string, never>>;
7
+ interface AuditCleanupOptions {
8
+ id?: string;
9
+ }
10
+ declare const _default: {
11
+ execute(_args: AuditCleanupArgs, opts: AuditCleanupOptions, context: CommandContext): Promise<void>;
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=logs.audit.cleanup.impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.audit.cleanup.impl.d.ts","sourceRoot":"","sources":["../../src/cli/logs.audit.cleanup.impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAOjD,gEAAgE;AAChE,KAAK,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAExD,UAAU,mBAAmB;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;;mBAGqB,gBAAgB,QAAQ,mBAAmB,WAAW,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;;AAD1G,wBA2DE"}