@vibesdotdev/logging 0.0.1

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 (393) hide show
  1. package/README.md +80 -0
  2. package/SPEC.md +65 -0
  3. package/dist/audit/audit.descriptor.d.ts +11 -0
  4. package/dist/audit/audit.descriptor.d.ts.map +1 -0
  5. package/dist/audit/audit.descriptor.js +40 -0
  6. package/dist/audit/audit.descriptor.js.map +1 -0
  7. package/dist/audit/audit.storage.schema.d.ts +79 -0
  8. package/dist/audit/audit.storage.schema.d.ts.map +1 -0
  9. package/dist/audit/audit.storage.schema.js +33 -0
  10. package/dist/audit/audit.storage.schema.js.map +1 -0
  11. package/dist/audit/index.d.ts +2 -0
  12. package/dist/audit/index.d.ts.map +1 -0
  13. package/dist/audit/index.js +2 -0
  14. package/dist/audit/index.js.map +1 -0
  15. package/dist/cli/logs.descriptor.d.ts +9 -0
  16. package/dist/cli/logs.descriptor.d.ts.map +1 -0
  17. package/dist/cli/logs.descriptor.js +16 -0
  18. package/dist/cli/logs.descriptor.js.map +1 -0
  19. package/dist/cli/logs.list.descriptor.d.ts +9 -0
  20. package/dist/cli/logs.list.descriptor.d.ts.map +1 -0
  21. package/dist/cli/logs.list.descriptor.js +23 -0
  22. package/dist/cli/logs.list.descriptor.js.map +1 -0
  23. package/dist/cli/logs.list.impl.d.ts +13 -0
  24. package/dist/cli/logs.list.impl.d.ts.map +1 -0
  25. package/dist/cli/logs.list.impl.js +81 -0
  26. package/dist/cli/logs.list.impl.js.map +1 -0
  27. package/dist/cli/logs.rotate.descriptor.d.ts +9 -0
  28. package/dist/cli/logs.rotate.descriptor.d.ts.map +1 -0
  29. package/dist/cli/logs.rotate.descriptor.js +34 -0
  30. package/dist/cli/logs.rotate.descriptor.js.map +1 -0
  31. package/dist/cli/logs.rotate.impl.d.ts +17 -0
  32. package/dist/cli/logs.rotate.impl.d.ts.map +1 -0
  33. package/dist/cli/logs.rotate.impl.js +48 -0
  34. package/dist/cli/logs.rotate.impl.js.map +1 -0
  35. package/dist/cli/logs.search.descriptor.d.ts +9 -0
  36. package/dist/cli/logs.search.descriptor.d.ts.map +1 -0
  37. package/dist/cli/logs.search.descriptor.js +55 -0
  38. package/dist/cli/logs.search.descriptor.js.map +1 -0
  39. package/dist/cli/logs.search.impl.d.ts +22 -0
  40. package/dist/cli/logs.search.impl.d.ts.map +1 -0
  41. package/dist/cli/logs.search.impl.js +145 -0
  42. package/dist/cli/logs.search.impl.js.map +1 -0
  43. package/dist/cli/logs.tail.descriptor.d.ts +9 -0
  44. package/dist/cli/logs.tail.descriptor.d.ts.map +1 -0
  45. package/dist/cli/logs.tail.descriptor.js +43 -0
  46. package/dist/cli/logs.tail.descriptor.js.map +1 -0
  47. package/dist/cli/logs.tail.impl.d.ts +19 -0
  48. package/dist/cli/logs.tail.impl.d.ts.map +1 -0
  49. package/dist/cli/logs.tail.impl.js +78 -0
  50. package/dist/cli/logs.tail.impl.js.map +1 -0
  51. package/dist/cli/logs.view.descriptor.d.ts +9 -0
  52. package/dist/cli/logs.view.descriptor.d.ts.map +1 -0
  53. package/dist/cli/logs.view.descriptor.js +51 -0
  54. package/dist/cli/logs.view.descriptor.js.map +1 -0
  55. package/dist/cli/logs.view.impl.d.ts +21 -0
  56. package/dist/cli/logs.view.impl.d.ts.map +1 -0
  57. package/dist/cli/logs.view.impl.js +85 -0
  58. package/dist/cli/logs.view.impl.js.map +1 -0
  59. package/dist/cli/types.d.ts +57 -0
  60. package/dist/cli/types.d.ts.map +1 -0
  61. package/dist/cli/types.js +9 -0
  62. package/dist/cli/types.js.map +1 -0
  63. package/dist/contexts/audit.d.ts +34 -0
  64. package/dist/contexts/audit.d.ts.map +1 -0
  65. package/dist/contexts/audit.js +13 -0
  66. package/dist/contexts/audit.js.map +1 -0
  67. package/dist/contexts/fallback-logger.d.ts +3 -0
  68. package/dist/contexts/fallback-logger.d.ts.map +1 -0
  69. package/dist/contexts/fallback-logger.js +67 -0
  70. package/dist/contexts/fallback-logger.js.map +1 -0
  71. package/dist/contexts/index.d.ts +8 -0
  72. package/dist/contexts/index.d.ts.map +1 -0
  73. package/dist/contexts/index.js +9 -0
  74. package/dist/contexts/index.js.map +1 -0
  75. package/dist/contexts/logger.d.ts +26 -0
  76. package/dist/contexts/logger.d.ts.map +1 -0
  77. package/dist/contexts/logger.js +88 -0
  78. package/dist/contexts/logger.js.map +1 -0
  79. package/dist/core/index.d.ts +9 -0
  80. package/dist/core/index.d.ts.map +1 -0
  81. package/dist/core/index.js +10 -0
  82. package/dist/core/index.js.map +1 -0
  83. package/dist/core/logger.d.ts +3 -0
  84. package/dist/core/logger.d.ts.map +1 -0
  85. package/dist/core/logger.js +118 -0
  86. package/dist/core/logger.js.map +1 -0
  87. package/dist/core/namespace.d.ts +69 -0
  88. package/dist/core/namespace.d.ts.map +1 -0
  89. package/dist/core/namespace.js +136 -0
  90. package/dist/core/namespace.js.map +1 -0
  91. package/dist/core/parsing.d.ts +3 -0
  92. package/dist/core/parsing.d.ts.map +1 -0
  93. package/dist/core/parsing.js +25 -0
  94. package/dist/core/parsing.js.map +1 -0
  95. package/dist/core/types.d.ts +69 -0
  96. package/dist/core/types.d.ts.map +1 -0
  97. package/dist/core/types.js +7 -0
  98. package/dist/core/types.js.map +1 -0
  99. package/dist/docs/levels.docs.descriptor.d.ts +4 -0
  100. package/dist/docs/levels.docs.descriptor.d.ts.map +1 -0
  101. package/dist/docs/levels.docs.descriptor.js +342 -0
  102. package/dist/docs/levels.docs.descriptor.js.map +1 -0
  103. package/dist/docs/structured.docs.descriptor.d.ts +4 -0
  104. package/dist/docs/structured.docs.descriptor.d.ts.map +1 -0
  105. package/dist/docs/structured.docs.descriptor.js +442 -0
  106. package/dist/docs/structured.docs.descriptor.js.map +1 -0
  107. package/dist/docs/transports.docs.descriptor.d.ts +4 -0
  108. package/dist/docs/transports.docs.descriptor.d.ts.map +1 -0
  109. package/dist/docs/transports.docs.descriptor.js +426 -0
  110. package/dist/docs/transports.docs.descriptor.js.map +1 -0
  111. package/dist/formatters/index.d.ts +7 -0
  112. package/dist/formatters/index.d.ts.map +1 -0
  113. package/dist/formatters/index.js +8 -0
  114. package/dist/formatters/index.js.map +1 -0
  115. package/dist/formatters/json/json.formatters.descriptor.d.ts +9 -0
  116. package/dist/formatters/json/json.formatters.descriptor.d.ts.map +1 -0
  117. package/dist/formatters/json/json.formatters.descriptor.js +22 -0
  118. package/dist/formatters/json/json.formatters.descriptor.js.map +1 -0
  119. package/dist/formatters/json/json.impl.d.ts +22 -0
  120. package/dist/formatters/json/json.impl.d.ts.map +1 -0
  121. package/dist/formatters/json/json.impl.js +32 -0
  122. package/dist/formatters/json/json.impl.js.map +1 -0
  123. package/dist/formatters/json5/json5.descriptor.d.ts +9 -0
  124. package/dist/formatters/json5/json5.descriptor.d.ts.map +1 -0
  125. package/dist/formatters/json5/json5.descriptor.js +22 -0
  126. package/dist/formatters/json5/json5.descriptor.js.map +1 -0
  127. package/dist/formatters/json5/json5.impl.d.ts +23 -0
  128. package/dist/formatters/json5/json5.impl.d.ts.map +1 -0
  129. package/dist/formatters/json5/json5.impl.js +34 -0
  130. package/dist/formatters/json5/json5.impl.js.map +1 -0
  131. package/dist/formatters/jsonl/jsonl.descriptor.d.ts +10 -0
  132. package/dist/formatters/jsonl/jsonl.descriptor.d.ts.map +1 -0
  133. package/dist/formatters/jsonl/jsonl.descriptor.js +23 -0
  134. package/dist/formatters/jsonl/jsonl.descriptor.js.map +1 -0
  135. package/dist/formatters/jsonl/jsonl.impl.d.ts +21 -0
  136. package/dist/formatters/jsonl/jsonl.impl.d.ts.map +1 -0
  137. package/dist/formatters/jsonl/jsonl.impl.js +30 -0
  138. package/dist/formatters/jsonl/jsonl.impl.js.map +1 -0
  139. package/dist/formatters/pretty/pretty.descriptor.d.ts +9 -0
  140. package/dist/formatters/pretty/pretty.descriptor.d.ts.map +1 -0
  141. package/dist/formatters/pretty/pretty.descriptor.js +23 -0
  142. package/dist/formatters/pretty/pretty.descriptor.js.map +1 -0
  143. package/dist/formatters/pretty/pretty.impl.cli.d.ts +23 -0
  144. package/dist/formatters/pretty/pretty.impl.cli.d.ts.map +1 -0
  145. package/dist/formatters/pretty/pretty.impl.cli.js +81 -0
  146. package/dist/formatters/pretty/pretty.impl.cli.js.map +1 -0
  147. package/dist/index.d.ts +67 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +97 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/kinds/audit.d.ts +85 -0
  152. package/dist/kinds/audit.d.ts.map +1 -0
  153. package/dist/kinds/audit.js +71 -0
  154. package/dist/kinds/audit.js.map +1 -0
  155. package/dist/kinds/contexts.d.ts +21 -0
  156. package/dist/kinds/contexts.d.ts.map +1 -0
  157. package/dist/kinds/contexts.js +8 -0
  158. package/dist/kinds/contexts.js.map +1 -0
  159. package/dist/kinds/formatter.d.ts +42 -0
  160. package/dist/kinds/formatter.d.ts.map +1 -0
  161. package/dist/kinds/formatter.js +69 -0
  162. package/dist/kinds/formatter.js.map +1 -0
  163. package/dist/kinds/index.d.ts +13 -0
  164. package/dist/kinds/index.d.ts.map +1 -0
  165. package/dist/kinds/index.js +13 -0
  166. package/dist/kinds/index.js.map +1 -0
  167. package/dist/kinds/logger.contracts.d.ts +16 -0
  168. package/dist/kinds/logger.contracts.d.ts.map +1 -0
  169. package/dist/kinds/logger.contracts.js +9 -0
  170. package/dist/kinds/logger.contracts.js.map +1 -0
  171. package/dist/kinds/logger.d.ts +15 -0
  172. package/dist/kinds/logger.d.ts.map +1 -0
  173. package/dist/kinds/logger.impl.d.ts +40 -0
  174. package/dist/kinds/logger.impl.d.ts.map +1 -0
  175. package/dist/kinds/logger.impl.js +139 -0
  176. package/dist/kinds/logger.impl.js.map +1 -0
  177. package/dist/kinds/logger.js +28 -0
  178. package/dist/kinds/logger.js.map +1 -0
  179. package/dist/kinds/logger.utils.d.ts +15 -0
  180. package/dist/kinds/logger.utils.d.ts.map +1 -0
  181. package/dist/kinds/logger.utils.js +55 -0
  182. package/dist/kinds/logger.utils.js.map +1 -0
  183. package/dist/kinds/output.contracts.d.ts +50 -0
  184. package/dist/kinds/output.contracts.d.ts.map +1 -0
  185. package/dist/kinds/output.contracts.js +10 -0
  186. package/dist/kinds/output.contracts.js.map +1 -0
  187. package/dist/kinds/output.d.ts +20 -0
  188. package/dist/kinds/output.d.ts.map +1 -0
  189. package/dist/kinds/output.impl.d.ts +22 -0
  190. package/dist/kinds/output.impl.d.ts.map +1 -0
  191. package/dist/kinds/output.impl.js +84 -0
  192. package/dist/kinds/output.impl.js.map +1 -0
  193. package/dist/kinds/output.js +29 -0
  194. package/dist/kinds/output.js.map +1 -0
  195. package/dist/kinds/output.types.d.ts +92 -0
  196. package/dist/kinds/output.types.d.ts.map +1 -0
  197. package/dist/kinds/output.types.js +7 -0
  198. package/dist/kinds/output.types.js.map +1 -0
  199. package/dist/kinds/sink.d.ts +40 -0
  200. package/dist/kinds/sink.d.ts.map +1 -0
  201. package/dist/kinds/sink.js +61 -0
  202. package/dist/kinds/sink.js.map +1 -0
  203. package/dist/logger.context.descriptor.d.ts +21 -0
  204. package/dist/logger.context.descriptor.d.ts.map +1 -0
  205. package/dist/logger.context.descriptor.js +12 -0
  206. package/dist/logger.context.descriptor.js.map +1 -0
  207. package/dist/logging.cli.plugin.d.ts +20 -0
  208. package/dist/logging.cli.plugin.d.ts.map +1 -0
  209. package/dist/logging.cli.plugin.js +39 -0
  210. package/dist/logging.cli.plugin.js.map +1 -0
  211. package/dist/logging.plugin.d.ts +16 -0
  212. package/dist/logging.plugin.d.ts.map +1 -0
  213. package/dist/logging.plugin.js +83 -0
  214. package/dist/logging.plugin.js.map +1 -0
  215. package/dist/outputs/index.d.ts +7 -0
  216. package/dist/outputs/index.d.ts.map +1 -0
  217. package/dist/outputs/index.js +8 -0
  218. package/dist/outputs/index.js.map +1 -0
  219. package/dist/outputs/remote/remote.descriptor.d.ts +10 -0
  220. package/dist/outputs/remote/remote.descriptor.d.ts.map +1 -0
  221. package/dist/outputs/remote/remote.descriptor.js +24 -0
  222. package/dist/outputs/remote/remote.descriptor.js.map +1 -0
  223. package/dist/outputs/remote/remote.impl.d.ts +50 -0
  224. package/dist/outputs/remote/remote.impl.d.ts.map +1 -0
  225. package/dist/outputs/remote/remote.impl.js +178 -0
  226. package/dist/outputs/remote/remote.impl.js.map +1 -0
  227. package/dist/outputs.context.descriptor.d.ts +19 -0
  228. package/dist/outputs.context.descriptor.d.ts.map +1 -0
  229. package/dist/outputs.context.descriptor.js +9 -0
  230. package/dist/outputs.context.descriptor.js.map +1 -0
  231. package/dist/outputs.context.impl.d.ts +9 -0
  232. package/dist/outputs.context.impl.d.ts.map +1 -0
  233. package/dist/outputs.context.impl.js +18 -0
  234. package/dist/outputs.context.impl.js.map +1 -0
  235. package/dist/paths.d.ts +8 -0
  236. package/dist/paths.d.ts.map +1 -0
  237. package/dist/paths.js +10 -0
  238. package/dist/paths.js.map +1 -0
  239. package/dist/schemas/audit.d.ts +133 -0
  240. package/dist/schemas/audit.d.ts.map +1 -0
  241. package/dist/schemas/audit.js +80 -0
  242. package/dist/schemas/audit.js.map +1 -0
  243. package/dist/schemas/entry.d.ts +74 -0
  244. package/dist/schemas/entry.d.ts.map +1 -0
  245. package/dist/schemas/entry.js +62 -0
  246. package/dist/schemas/entry.js.map +1 -0
  247. package/dist/schemas/formatter.d.ts +46 -0
  248. package/dist/schemas/formatter.d.ts.map +1 -0
  249. package/dist/schemas/formatter.js +31 -0
  250. package/dist/schemas/formatter.js.map +1 -0
  251. package/dist/schemas/index.d.ts +12 -0
  252. package/dist/schemas/index.d.ts.map +1 -0
  253. package/dist/schemas/index.js +18 -0
  254. package/dist/schemas/index.js.map +1 -0
  255. package/dist/schemas/logger.d.ts +48 -0
  256. package/dist/schemas/logger.d.ts.map +1 -0
  257. package/dist/schemas/logger.js +27 -0
  258. package/dist/schemas/logger.js.map +1 -0
  259. package/dist/schemas/output.d.ts +68 -0
  260. package/dist/schemas/output.d.ts.map +1 -0
  261. package/dist/schemas/output.js +48 -0
  262. package/dist/schemas/output.js.map +1 -0
  263. package/dist/schemas/sink.d.ts +52 -0
  264. package/dist/schemas/sink.d.ts.map +1 -0
  265. package/dist/schemas/sink.js +30 -0
  266. package/dist/schemas/sink.js.map +1 -0
  267. package/dist/sinks/buffer/buffer.descriptor.d.ts +4 -0
  268. package/dist/sinks/buffer/buffer.descriptor.d.ts.map +1 -0
  269. package/dist/sinks/buffer/buffer.descriptor.js +11 -0
  270. package/dist/sinks/buffer/buffer.descriptor.js.map +1 -0
  271. package/dist/sinks/buffer/buffer.impl.cli.d.ts +21 -0
  272. package/dist/sinks/buffer/buffer.impl.cli.d.ts.map +1 -0
  273. package/dist/sinks/buffer/buffer.impl.cli.js +34 -0
  274. package/dist/sinks/buffer/buffer.impl.cli.js.map +1 -0
  275. package/dist/sinks/console/console.descriptor.d.ts +10 -0
  276. package/dist/sinks/console/console.descriptor.d.ts.map +1 -0
  277. package/dist/sinks/console/console.descriptor.js +17 -0
  278. package/dist/sinks/console/console.descriptor.js.map +1 -0
  279. package/dist/sinks/console/console.impl.browser.d.ts +21 -0
  280. package/dist/sinks/console/console.impl.browser.d.ts.map +1 -0
  281. package/dist/sinks/console/console.impl.browser.js +57 -0
  282. package/dist/sinks/console/console.impl.browser.js.map +1 -0
  283. package/dist/sinks/console/console.impl.cli.d.ts +21 -0
  284. package/dist/sinks/console/console.impl.cli.d.ts.map +1 -0
  285. package/dist/sinks/console/console.impl.cli.js +57 -0
  286. package/dist/sinks/console/console.impl.cli.js.map +1 -0
  287. package/dist/sinks/index.d.ts +8 -0
  288. package/dist/sinks/index.d.ts.map +1 -0
  289. package/dist/sinks/index.js +8 -0
  290. package/dist/sinks/index.js.map +1 -0
  291. package/dist/sinks/memory/memory.descriptor.d.ts +10 -0
  292. package/dist/sinks/memory/memory.descriptor.d.ts.map +1 -0
  293. package/dist/sinks/memory/memory.descriptor.js +17 -0
  294. package/dist/sinks/memory/memory.descriptor.js.map +1 -0
  295. package/dist/sinks/memory/memory.impl.d.ts +50 -0
  296. package/dist/sinks/memory/memory.impl.d.ts.map +1 -0
  297. package/dist/sinks/memory/memory.impl.js +88 -0
  298. package/dist/sinks/memory/memory.impl.js.map +1 -0
  299. package/dist/sinks/stdout/stdout.descriptor.d.ts +4 -0
  300. package/dist/sinks/stdout/stdout.descriptor.d.ts.map +1 -0
  301. package/dist/sinks/stdout/stdout.descriptor.js +11 -0
  302. package/dist/sinks/stdout/stdout.descriptor.js.map +1 -0
  303. package/dist/sinks/stdout/stdout.impl.cli.d.ts +10 -0
  304. package/dist/sinks/stdout/stdout.impl.cli.d.ts.map +1 -0
  305. package/dist/sinks/stdout/stdout.impl.cli.js +21 -0
  306. package/dist/sinks/stdout/stdout.impl.cli.js.map +1 -0
  307. package/dist/sinks.context.descriptor.d.ts +19 -0
  308. package/dist/sinks.context.descriptor.d.ts.map +1 -0
  309. package/dist/sinks.context.descriptor.js +9 -0
  310. package/dist/sinks.context.descriptor.js.map +1 -0
  311. package/dist/sinks.context.impl.d.ts +9 -0
  312. package/dist/sinks.context.impl.d.ts.map +1 -0
  313. package/dist/sinks.context.impl.js +18 -0
  314. package/dist/sinks.context.impl.js.map +1 -0
  315. package/package.json +331 -0
  316. package/src/audit/audit.descriptor.ts +45 -0
  317. package/src/audit/audit.storage.schema.ts +57 -0
  318. package/src/audit/index.ts +8 -0
  319. package/src/cli/logs.descriptor.ts +19 -0
  320. package/src/cli/logs.list.descriptor.ts +28 -0
  321. package/src/cli/logs.list.impl.ts +93 -0
  322. package/src/cli/logs.rotate.descriptor.ts +40 -0
  323. package/src/cli/logs.rotate.impl.ts +61 -0
  324. package/src/cli/logs.search.descriptor.ts +61 -0
  325. package/src/cli/logs.search.impl.ts +173 -0
  326. package/src/cli/logs.tail.descriptor.ts +49 -0
  327. package/src/cli/logs.tail.impl.ts +105 -0
  328. package/src/cli/logs.view.descriptor.ts +57 -0
  329. package/src/cli/logs.view.impl.ts +108 -0
  330. package/src/cli/types.ts +59 -0
  331. package/src/contexts/audit.ts +36 -0
  332. package/src/contexts/fallback-logger.ts +80 -0
  333. package/src/contexts/index.ts +23 -0
  334. package/src/contexts/logger.ts +119 -0
  335. package/src/core/index.ts +32 -0
  336. package/src/core/logger.ts +150 -0
  337. package/src/core/namespace.ts +195 -0
  338. package/src/core/parsing.ts +21 -0
  339. package/src/core/types.ts +82 -0
  340. package/src/docs/levels.docs.descriptor.ts +344 -0
  341. package/src/docs/structured.docs.descriptor.ts +444 -0
  342. package/src/docs/transports.docs.descriptor.ts +428 -0
  343. package/src/formatters/index.ts +6 -0
  344. package/src/formatters/json/json.formatters.descriptor.ts +25 -0
  345. package/src/formatters/json/json.impl.ts +41 -0
  346. package/src/formatters/json5/json5.descriptor.ts +25 -0
  347. package/src/formatters/json5/json5.impl.ts +43 -0
  348. package/src/formatters/jsonl/jsonl.descriptor.ts +26 -0
  349. package/src/formatters/jsonl/jsonl.impl.ts +39 -0
  350. package/src/formatters/pretty/pretty.descriptor.ts +26 -0
  351. package/src/formatters/pretty/pretty.impl.cli.ts +101 -0
  352. package/src/index.ts +190 -0
  353. package/src/kinds/audit.ts +169 -0
  354. package/src/kinds/contexts.ts +22 -0
  355. package/src/kinds/formatter.ts +117 -0
  356. package/src/kinds/index.ts +25 -0
  357. package/src/kinds/logger.contracts.ts +17 -0
  358. package/src/kinds/logger.impl.ts +206 -0
  359. package/src/kinds/logger.ts +46 -0
  360. package/src/kinds/logger.utils.ts +91 -0
  361. package/src/kinds/output.contracts.ts +54 -0
  362. package/src/kinds/output.impl.ts +118 -0
  363. package/src/kinds/output.ts +59 -0
  364. package/src/kinds/output.types.ts +105 -0
  365. package/src/kinds/sink.ts +100 -0
  366. package/src/logger.context.descriptor.ts +13 -0
  367. package/src/logging.cli.plugin.ts +43 -0
  368. package/src/logging.plugin.ts +93 -0
  369. package/src/outputs/index.ts +6 -0
  370. package/src/outputs/remote/remote.descriptor.ts +27 -0
  371. package/src/outputs/remote/remote.impl.ts +218 -0
  372. package/src/outputs.context.descriptor.ts +10 -0
  373. package/src/outputs.context.impl.ts +30 -0
  374. package/src/paths.ts +10 -0
  375. package/src/schemas/audit.ts +98 -0
  376. package/src/schemas/entry.ts +88 -0
  377. package/src/schemas/formatter.ts +37 -0
  378. package/src/schemas/index.ts +80 -0
  379. package/src/schemas/logger.ts +38 -0
  380. package/src/schemas/output.ts +62 -0
  381. package/src/schemas/sink.ts +39 -0
  382. package/src/sinks/buffer/buffer.descriptor.ts +13 -0
  383. package/src/sinks/buffer/buffer.impl.cli.ts +49 -0
  384. package/src/sinks/console/console.descriptor.ts +20 -0
  385. package/src/sinks/console/console.impl.browser.ts +69 -0
  386. package/src/sinks/console/console.impl.cli.ts +71 -0
  387. package/src/sinks/index.ts +8 -0
  388. package/src/sinks/memory/memory.descriptor.ts +20 -0
  389. package/src/sinks/memory/memory.impl.ts +119 -0
  390. package/src/sinks/stdout/stdout.descriptor.ts +13 -0
  391. package/src/sinks/stdout/stdout.impl.cli.ts +27 -0
  392. package/src/sinks.context.descriptor.ts +10 -0
  393. package/src/sinks.context.impl.ts +30 -0
@@ -0,0 +1,428 @@
1
+ import type { DocsTopicDescriptor } from '@vibesdotdev/docs';
2
+
3
+ const descriptor: DocsTopicDescriptor = {
4
+ kind: 'docs/topic',
5
+ id: 'logging.transports',
6
+ title: 'Logging Transports',
7
+ summary: 'Transport layers including console, file, and remote outputs',
8
+ body: {
9
+ type: 'markdown',
10
+ sourceType: 'raw',
11
+ source: `---
12
+ title: Logging Transports
13
+ summary: Transport layers including console, file, and remote outputs
14
+ tags: [logging, transports, console, file, remote, outputs]
15
+ parent: logging
16
+ order: 2
17
+ surfaces: [cli, web, in-app]
18
+ hardware: [consumer, cloud]
19
+ ---
20
+
21
+ # Logging Transports
22
+
23
+ Transports (called "sinks" and "outputs" in the logging system) determine where log entries are written. The \`logging/sink\` and \`logging/output\` runtime kinds provide multiple transport options.
24
+
25
+ ## Transport Types
26
+
27
+ ### Console Sink
28
+
29
+ Writes to stdout/stderr:
30
+
31
+ \`\`\`ts
32
+ import { logger } from '@vibesdotdev/logging';
33
+
34
+ logger.info('Console output');
35
+ // [INFO] [app] Console output
36
+ \`\`\`
37
+
38
+ **Configuration:**
39
+ - Default for CLI and browser
40
+ - Uses pretty formatter by default
41
+ - Color-coded output
42
+
43
+ **Use cases:**
44
+ - Development debugging
45
+ - CLI applications
46
+ - Browser console
47
+
48
+ ### File Output
49
+
50
+ Writes to log files:
51
+
52
+ \`\`\`ts
53
+ import { getVibesRuntime } from '@vibesdotdev/runtime';
54
+
55
+ const runtime = getVibesRuntime();
56
+
57
+ await runtime.registerPlugin(loggingPlugin({
58
+ outputs: [{
59
+ type: 'file',
60
+ path: './logs/app.log',
61
+ format: 'jsonl',
62
+ maxSize: '10MB',
63
+ maxFiles: 5
64
+ }]
65
+ }));
66
+ \`\`\`
67
+
68
+ **Features:**
69
+ - Automatic rotation
70
+ - Compression of old files
71
+ - Timestamp-based naming
72
+
73
+ **Use cases:**
74
+ - Production logging
75
+ - Audit trails
76
+ - Long-term storage
77
+
78
+ ### Memory Sink
79
+
80
+ Buffers logs in memory:
81
+
82
+ \`\`\`ts
83
+ import { memorySinkPlugin } from '@vibesdotdev/logging';
84
+
85
+ await runtime.registerPlugin(memorySinkPlugin({
86
+ maxSize: 1000, // Keep last 1000 entries
87
+ flushOn: 'error' // Auto-flush on error level
88
+ }));
89
+ \`\`\`
90
+
91
+ **Use cases:**
92
+ - Testing
93
+ - Debug sessions
94
+ - Temporary buffering
95
+
96
+ ### Buffer Sink
97
+
98
+ Circular buffer with flush capability:
99
+
100
+ \`\`\`ts
101
+ import { bufferSinkPlugin } from '@vibesdotdev/logging';
102
+
103
+ await runtime.registerPlugin(bufferSinkPlugin({
104
+ capacity: 500,
105
+ flushInterval: 60_000 // Flush every minute
106
+ }));
107
+ \`\`\`
108
+
109
+ **Use cases:**
110
+ - Batch processing
111
+ - Network optimization
112
+ - Error context capture
113
+
114
+ ### Remote Output
115
+
116
+ Sends logs to remote service:
117
+
118
+ \`\`\`ts
119
+ import { remoteOutputPlugin } from '@vibesdotdev/logging';
120
+
121
+ await runtime.registerPlugin(remoteOutputPlugin({
122
+ endpoint: 'https://logs.vibes.dev/ingest',
123
+ apiKey: process.env.LOGS_API_KEY,
124
+ batchSize: 100,
125
+ flushInterval: 5_000
126
+ }));
127
+ \`\`\`
128
+
129
+ **Features:**
130
+ - Batched delivery
131
+ - Retry on failure
132
+ - Compression
133
+
134
+ **Use cases:**
135
+ - Centralized logging
136
+ - Log aggregation services
137
+ - Multi-app correlation
138
+
139
+ ## Configuring Transports
140
+
141
+ ### Multiple Transports
142
+
143
+ \`\`\`ts
144
+ import { loggingPlugin } from '@vibesdotdev/logging';
145
+
146
+ await runtime.registerPlugin(loggingPlugin({
147
+ sinks: ['console', 'memory'],
148
+ outputs: [{
149
+ type: 'file',
150
+ path: './logs/app.log'
151
+ }, {
152
+ type: 'remote',
153
+ endpoint: 'https://logs.vibes.dev/ingest'
154
+ }]
155
+ }));
156
+ \`\`\`
157
+
158
+ **Log flow:**
159
+ \`\`\`
160
+ Logger → Console (immediate)
161
+ → Memory (buffer)
162
+ → File (batched)
163
+ → Remote (batched, compressed)
164
+ \`\`\`
165
+
166
+ ### Transport Selection by Environment
167
+
168
+ \`\`\`ts
169
+ const loggingConfig = {
170
+ development: {
171
+ sinks: ['console'],
172
+ level: 'debug'
173
+ },
174
+ production: {
175
+ sinks: ['console', 'memory'],
176
+ outputs: [
177
+ { type: 'file', path: '/var/log/app.log' },
178
+ { type: 'remote', endpoint: 'https://logs.vibes.dev' }
179
+ ],
180
+ level: 'info'
181
+ }
182
+ };
183
+
184
+ const env = process.env.NODE_ENV || 'development';
185
+ await runtime.registerPlugin(loggingPlugin(loggingConfig[env]));
186
+ \`\`\`
187
+
188
+ ### Transport Selection by Hardware
189
+
190
+ \`\`\`ts
191
+ const loggingConfig = {
192
+ consumer: {
193
+ sinks: ['console'],
194
+ outputs: [{ type: 'file', path: '~/.logs/app.log' }]
195
+ },
196
+ cloud: {
197
+ sinks: ['stdout'],
198
+ outputs: [{ type: 'remote', endpoint: 'https://logs.vibes.dev' }]
199
+ }
200
+ };
201
+
202
+ const hardware = runtime.scope.hardware;
203
+ await runtime.registerPlugin(loggingPlugin(loggingConfig[hardware]));
204
+ \`\`\`
205
+
206
+ ## Formatter Integration
207
+
208
+ Transports use formatters to format log entries:
209
+
210
+ ### Pretty Formatter (Console)
211
+
212
+ \`\`\`ts
213
+ [INFO] [app:server] Server started on port 3000
214
+ \`\`\`
215
+
216
+ **Features:**
217
+ - Color-coded levels
218
+ - Human-readable timestamps
219
+ - Indented context objects
220
+
221
+ ### JSON Formatter
222
+
223
+ \`\`\`json
224
+ {"level":"info","namespace":"app:server","message":"Server started","port":3000,"timestamp":"2024-01-01T00:00:00.000Z"}
225
+ \`\`\`
226
+
227
+ **Features:**
228
+ - Machine-parseable
229
+ - Structured data
230
+ - Log aggregation friendly
231
+
232
+ ### JSONL Formatter
233
+
234
+ \`\`\`
235
+ {"level":"info",...}
236
+ {"level":"error",...}
237
+ {"level":"warn",...}
238
+ \`\`\`
239
+
240
+ **Features:**
241
+ - One JSON per line
242
+ - Easy streaming
243
+ - Efficient storage
244
+
245
+ ## Transport Configuration
246
+
247
+ ### Console Sink
248
+
249
+ \`\`\`ts
250
+ import { consoleSinkPlugin } from '@vibesdotdev/logging';
251
+
252
+ await runtime.registerPlugin(consoleSinkPlugin({
253
+ stderrThreshold: 'warn', // warn/error to stderr
254
+ colors: true, // ANSI colors
255
+ timestamp: true // Include timestamps
256
+ }));
257
+ \`\`\`
258
+
259
+ ### File Output
260
+
261
+ \`\`\`ts
262
+ import { fileOutputPlugin } from '@vibesdotdev/logging';
263
+
264
+ await runtime.registerPlugin(fileOutputPlugin({
265
+ path: './logs/app.log',
266
+ format: 'jsonl',
267
+ rotation: {
268
+ strategy: 'size',
269
+ maxSize: '10MB',
270
+ maxFiles: 5,
271
+ compress: true
272
+ },
273
+ schedule: {
274
+ type: 'daily',
275
+ time: '00:00' // Rotate at midnight
276
+ }
277
+ }));
278
+ \`\`\`
279
+
280
+ ### Remote Output
281
+
282
+ \`\`\`ts
283
+ import { remoteOutputPlugin } from '@vibesdotdev/logging';
284
+
285
+ await runtime.registerPlugin(remoteOutputPlugin({
286
+ endpoint: 'https://logs.vibes.dev/ingest',
287
+ method: 'POST',
288
+ headers: {
289
+ 'Authorization': \`Bearer \${process.env.LOGS_API_KEY}\`,
290
+ 'Content-Type': 'application/json'
291
+ },
292
+ batch: {
293
+ maxSize: 100,
294
+ maxWait: 5_000
295
+ },
296
+ retry: {
297
+ maxAttempts: 3,
298
+ backoff: 'exponential',
299
+ initialDelay: 1_000
300
+ },
301
+ compression: 'gzip'
302
+ }));
303
+ \`\`\`
304
+
305
+ ## Transport Lifecycle
306
+
307
+ ### Initialization
308
+
309
+ \`\`\`ts
310
+ const transport = await runtime.query('logging/sink')
311
+ .filter(d => d.id === 'console')
312
+ .resolve();
313
+
314
+ await transport.ensureReady();
315
+ \`\`\`
316
+
317
+ ### Flushing
318
+
319
+ \`\`\`ts
320
+ // Flush buffered logs
321
+ await transport.flush();
322
+
323
+ // Or auto-flush on interval
324
+ await runtime.registerPlugin(bufferSinkPlugin({
325
+ flushInterval: 60_000 // 1 minute
326
+ }));
327
+ \`\`\`
328
+
329
+ ### Cleanup
330
+
331
+ \`\`\`ts
332
+ // Close transport and release resources
333
+ await transport.close();
334
+ \`\`\`
335
+
336
+ ## Transport Resolution
337
+
338
+ ### Query by ID
339
+
340
+ \`\`\`ts
341
+ const consoleSink = await runtime.query('logging/sink')
342
+ .filter(d => d.id === 'console')
343
+ .resolve();
344
+ \`\`\`
345
+
346
+ ### Query by Hardware
347
+
348
+ \`\`\`ts
349
+ const sink = await runtime.query('logging/sink')
350
+ .forHardware('consumer')
351
+ .resolve();
352
+ \`\`\`
353
+
354
+ ### List All Transports
355
+
356
+ \`\`\`ts
357
+ const sinks = runtime.query('logging/sink').descriptors();
358
+ const outputs = runtime.query('logging/output').descriptors();
359
+
360
+ console.log('Available sinks:', sinks.map(s => s.id));
361
+ console.log('Available outputs:', outputs.map(o => o.id));
362
+ \`\`\`
363
+
364
+ ## Custom Transport
365
+
366
+ \`\`\`ts
367
+ import { createRuntimePlugin } from '@vibesdotdev/runtime';
368
+ import type { SinkImplementation } from '@vibesdotdev/logging';
369
+
370
+ class CustomSink implements SinkImplementation {
371
+ constructor(private config: CustomConfig) {}
372
+
373
+ emit(entry: LogEntry): void {
374
+ // Custom transport logic
375
+ console.log('Custom:', entry);
376
+ }
377
+
378
+ async flush(): Promise<void> {
379
+ // Flush buffered entries
380
+ }
381
+
382
+ async close(): Promise<void> {
383
+ // Cleanup resources
384
+ }
385
+ }
386
+
387
+ const descriptor: SinkDescriptor = {
388
+ kind: 'logging/sink',
389
+ id: 'logging.sink.custom',
390
+ title: 'Custom Sink'
391
+ };
392
+
393
+ export const customSinkPlugin = createRuntimePlugin({
394
+ id: 'custom-sink',
395
+ kinds: [{
396
+ id: 'logging/sink',
397
+ descriptorSchema: SinkDescriptorSchema,
398
+ defaultImplementation: CustomSink
399
+ }],
400
+ descriptors: [descriptor]
401
+ });
402
+ \`\`\`
403
+
404
+ ## Transport Best Practices
405
+
406
+ 1. **Use appropriate transports** — Console for dev, file/remote for prod
407
+ 2. **Configure rotation** — Prevent disk exhaustion
408
+ 3. **Batch remote sends** — Reduce network overhead
409
+ 4. **Handle failures gracefully** — Don't crash on log failures
410
+ 5. **Sanitize sensitive data** — Remove PII before sending
411
+ 6. **Monitor transport health** — Alert on delivery failures
412
+
413
+ :::card{title="See also"}
414
+ - [\`logging.levels\`](logging.levels) — Log levels
415
+ - [\`logging.structured\`](logging.structured) — Structured logging
416
+ - [\`config.environment\`](config.environment) — Environment configuration
417
+ :::
418
+ `
419
+ },
420
+ parent: 'logging',
421
+ order: 2,
422
+ tags: ['logging', 'transports', 'console', 'file', 'remote', 'outputs'],
423
+ surfaces: ['cli', 'web', 'in-app'],
424
+ hardware: ['consumer', 'cloud'],
425
+ enabled: true
426
+ };
427
+
428
+ export default descriptor;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Logging Formatters
3
+ *
4
+ * Descriptors and implementations are autoloaded by the runtime.
5
+ * No public types to export — formatter interfaces live in kinds/formatter.
6
+ */
@@ -0,0 +1,25 @@
1
+ /**
2
+ * JSON Formatter Descriptor
3
+ *
4
+ * Formats log entries as pretty-printed JSON.
5
+ */
6
+
7
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
8
+
9
+ export const jsonFormatterDescriptor: FormatterDescriptor = {
10
+ kind: 'logging/formatter',
11
+ id: 'json',
12
+ name: 'JSON Formatter',
13
+ description: 'Formats log entries as indented JSON',
14
+ tags: ['readable', 'debug'],
15
+ format: 'json',
16
+ options: {
17
+ indent: 2,
18
+ includeTimestamp: true,
19
+ includeNamespace: true,
20
+ includeLevel: true,
21
+ colors: false
22
+ }
23
+ };
24
+
25
+ export default jsonFormatterDescriptor;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * JSON Formatter Implementation
3
+ *
4
+ * Pretty-printed JSON with configurable indentation.
5
+ */
6
+
7
+ import type { FormatterImplementation, FormatterContext } from '../../kinds/formatter.ts';
8
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
9
+ import type { RuntimeLogEntry } from '../../schemas/entry.ts';
10
+
11
+ /**
12
+ * JSON formatter - indented JSON for readability.
13
+ */
14
+ export default class JsonFormatter implements FormatterImplementation {
15
+ readonly id: string;
16
+ readonly descriptor: FormatterDescriptor;
17
+ private readonly indent: number;
18
+
19
+ constructor(descriptor: FormatterDescriptor, _context: FormatterContext) {
20
+ this.id = descriptor.id;
21
+ this.descriptor = descriptor;
22
+ this.indent = descriptor.options?.indent ?? 2;
23
+ }
24
+
25
+ format(entry: RuntimeLogEntry): string {
26
+ return JSON.stringify(entry, null, this.indent);
27
+ }
28
+
29
+ parse(formatted: string): RuntimeLogEntry {
30
+ return JSON.parse(formatted) as RuntimeLogEntry;
31
+ }
32
+
33
+ formatBatch(entries: RuntimeLogEntry[]): string {
34
+ return JSON.stringify(entries, null, this.indent);
35
+ }
36
+
37
+ parseBatch(formatted: string): RuntimeLogEntry[] {
38
+ const parsed = JSON.parse(formatted);
39
+ return Array.isArray(parsed) ? parsed : [parsed];
40
+ }
41
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * JSON5 Formatter Descriptor
3
+ *
4
+ * Formats log entries as JSON5 (human-readable JSON with comments).
5
+ */
6
+
7
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
8
+
9
+ export const json5FormatterDescriptor: FormatterDescriptor = {
10
+ kind: 'logging/formatter',
11
+ id: 'json5',
12
+ name: 'JSON5 Formatter',
13
+ description: 'Formats log entries as JSON5 for human readability',
14
+ tags: ['readable', 'config'],
15
+ format: 'json5',
16
+ options: {
17
+ indent: 2,
18
+ includeTimestamp: true,
19
+ includeNamespace: true,
20
+ includeLevel: true,
21
+ colors: false
22
+ }
23
+ };
24
+
25
+ export default json5FormatterDescriptor;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * JSON5 Formatter Implementation
3
+ *
4
+ * Uses JSON5 for human-readable output with comments support.
5
+ * Note: For serialization, we use standard JSON since JSON5 is a superset.
6
+ */
7
+
8
+ import type { FormatterImplementation, FormatterContext } from '../../kinds/formatter.ts';
9
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
10
+ import type { RuntimeLogEntry } from '../../schemas/entry.ts';
11
+ import JSON5 from 'json5';
12
+
13
+ /**
14
+ * JSON5 formatter - human-readable JSON.
15
+ */
16
+ export default class Json5Formatter implements FormatterImplementation {
17
+ readonly id: string;
18
+ readonly descriptor: FormatterDescriptor;
19
+ private readonly indent: number;
20
+
21
+ constructor(descriptor: FormatterDescriptor, _context: FormatterContext) {
22
+ this.id = descriptor.id;
23
+ this.descriptor = descriptor;
24
+ this.indent = descriptor.options?.indent ?? 2;
25
+ }
26
+
27
+ format(entry: RuntimeLogEntry): string {
28
+ return JSON5.stringify(entry, null, this.indent);
29
+ }
30
+
31
+ parse(formatted: string): RuntimeLogEntry {
32
+ return JSON5.parse(formatted) as RuntimeLogEntry;
33
+ }
34
+
35
+ formatBatch(entries: RuntimeLogEntry[]): string {
36
+ return JSON5.stringify(entries, null, this.indent);
37
+ }
38
+
39
+ parseBatch(formatted: string): RuntimeLogEntry[] {
40
+ const parsed = JSON5.parse(formatted);
41
+ return Array.isArray(parsed) ? parsed : [parsed];
42
+ }
43
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * JSONL Formatter Descriptor
3
+ *
4
+ * Formats log entries as newline-delimited JSON.
5
+ * Default formatter for file outputs.
6
+ */
7
+
8
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
9
+
10
+ export const jsonlFormatterDescriptor: FormatterDescriptor = {
11
+ kind: 'logging/formatter',
12
+ id: 'jsonl',
13
+ name: 'JSONL Formatter',
14
+ description: 'Formats log entries as newline-delimited JSON',
15
+ tags: ['default', 'file', 'streaming'],
16
+ format: 'jsonl',
17
+ options: {
18
+ indent: 0,
19
+ includeTimestamp: true,
20
+ includeNamespace: true,
21
+ includeLevel: true,
22
+ colors: false
23
+ }
24
+ };
25
+
26
+ export default jsonlFormatterDescriptor;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * JSONL Formatter Implementation
3
+ *
4
+ * Uses Bun's native JSON serialization for performance.
5
+ */
6
+
7
+ import type { FormatterImplementation, FormatterContext } from '../../kinds/formatter.ts';
8
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
9
+ import type { RuntimeLogEntry } from '../../schemas/entry.ts';
10
+
11
+ /**
12
+ * JSONL formatter - one JSON object per line.
13
+ */
14
+ export default class JsonlFormatter implements FormatterImplementation {
15
+ readonly id: string;
16
+ readonly descriptor: FormatterDescriptor;
17
+
18
+ constructor(descriptor: FormatterDescriptor, _context: FormatterContext) {
19
+ this.id = descriptor.id;
20
+ this.descriptor = descriptor;
21
+ }
22
+
23
+ format(entry: RuntimeLogEntry): string {
24
+ return JSON.stringify(entry);
25
+ }
26
+
27
+ parse(formatted: string): RuntimeLogEntry {
28
+ return JSON.parse(formatted) as RuntimeLogEntry;
29
+ }
30
+
31
+ formatBatch(entries: RuntimeLogEntry[]): string {
32
+ return entries.map((e) => JSON.stringify(e)).join('\n');
33
+ }
34
+
35
+ parseBatch(formatted: string): RuntimeLogEntry[] {
36
+ const lines = formatted.split('\n').filter((line) => line.trim());
37
+ return lines.map((line) => JSON.parse(line) as RuntimeLogEntry);
38
+ }
39
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Pretty Formatter Descriptor
3
+ *
4
+ * Colorized, human-readable output for CLI/TUI.
5
+ */
6
+
7
+ import type { FormatterDescriptor } from '../../schemas/formatter.ts';
8
+
9
+ export const prettyFormatterDescriptor: FormatterDescriptor = {
10
+ kind: 'logging/formatter',
11
+ id: 'pretty',
12
+ name: 'Pretty Formatter',
13
+ description: 'Colorized, human-readable output for CLI/TUI',
14
+ tags: ['cli', 'tui', 'readable'],
15
+ hardware: ['consumer'],
16
+ format: 'pretty',
17
+ options: {
18
+ indent: 0,
19
+ includeTimestamp: true,
20
+ includeNamespace: true,
21
+ includeLevel: true,
22
+ colors: true
23
+ }
24
+ };
25
+
26
+ export default prettyFormatterDescriptor;