@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
package/package.json ADDED
@@ -0,0 +1,331 @@
1
+ {
2
+ "name": "@vibesdotdev/logging",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "bun": "./src/index.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./plugin": {
15
+ "types": "./dist/logging.plugin.d.ts",
16
+ "bun": "./src/logging.plugin.ts",
17
+ "import": "./dist/logging.plugin.js",
18
+ "default": "./dist/logging.plugin.js"
19
+ },
20
+ "./cli.plugin": {
21
+ "types": "./dist/logging.cli.plugin.d.ts",
22
+ "bun": "./src/logging.cli.plugin.ts",
23
+ "import": "./dist/logging.cli.plugin.js",
24
+ "default": "./dist/logging.cli.plugin.js"
25
+ },
26
+ "./core": {
27
+ "types": "./dist/core/index.d.ts",
28
+ "bun": "./src/core/index.ts",
29
+ "import": "./dist/core/index.js",
30
+ "default": "./dist/core/index.js"
31
+ },
32
+ "./core/logger": {
33
+ "types": "./dist/core/logger.d.ts",
34
+ "bun": "./src/core/logger.ts",
35
+ "import": "./dist/core/logger.js",
36
+ "default": "./dist/core/logger.js"
37
+ },
38
+ "./core/namespace": {
39
+ "types": "./dist/core/namespace.d.ts",
40
+ "bun": "./src/core/namespace.ts",
41
+ "import": "./dist/core/namespace.js",
42
+ "default": "./dist/core/namespace.js"
43
+ },
44
+ "./kinds": {
45
+ "types": "./dist/kinds/index.d.ts",
46
+ "bun": "./src/kinds/index.ts",
47
+ "import": "./dist/kinds/index.js",
48
+ "default": "./dist/kinds/index.js"
49
+ },
50
+ "./kinds/sink": {
51
+ "types": "./dist/kinds/sink.d.ts",
52
+ "bun": "./src/kinds/sink.ts",
53
+ "import": "./dist/kinds/sink.js",
54
+ "default": "./dist/kinds/sink.js"
55
+ },
56
+ "./kinds/formatter": {
57
+ "types": "./dist/kinds/formatter.d.ts",
58
+ "bun": "./src/kinds/formatter.ts",
59
+ "import": "./dist/kinds/formatter.js",
60
+ "default": "./dist/kinds/formatter.js"
61
+ },
62
+ "./kinds/output": {
63
+ "types": "./dist/kinds/output.d.ts",
64
+ "bun": "./src/kinds/output.ts",
65
+ "import": "./dist/kinds/output.js",
66
+ "default": "./dist/kinds/output.js"
67
+ },
68
+ "./kinds/audit": {
69
+ "types": "./dist/kinds/audit.d.ts",
70
+ "bun": "./src/kinds/audit.ts",
71
+ "import": "./dist/kinds/audit.js",
72
+ "default": "./dist/kinds/audit.js"
73
+ },
74
+ "./kinds/logger": {
75
+ "types": "./dist/kinds/logger.d.ts",
76
+ "bun": "./src/kinds/logger.ts",
77
+ "import": "./dist/kinds/logger.js",
78
+ "default": "./dist/kinds/logger.js"
79
+ },
80
+ "./kinds/logger.impl": {
81
+ "types": "./dist/kinds/logger.impl.d.ts",
82
+ "bun": "./src/kinds/logger.impl.ts",
83
+ "import": "./dist/kinds/logger.impl.js",
84
+ "default": "./dist/kinds/logger.impl.js"
85
+ },
86
+ "./paths": {
87
+ "types": "./dist/paths.d.ts",
88
+ "bun": "./src/paths.ts",
89
+ "import": "./dist/paths.js",
90
+ "default": "./dist/paths.js"
91
+ },
92
+ "./contexts": {
93
+ "types": "./dist/contexts/index.d.ts",
94
+ "bun": "./src/contexts/index.ts",
95
+ "import": "./dist/contexts/index.js",
96
+ "default": "./dist/contexts/index.js"
97
+ },
98
+ "./contexts/logger": {
99
+ "types": "./dist/contexts/logger.d.ts",
100
+ "bun": "./src/contexts/logger.ts",
101
+ "import": "./dist/contexts/logger.js",
102
+ "default": "./dist/contexts/logger.js"
103
+ },
104
+ "./contexts/audit": {
105
+ "types": "./dist/contexts/audit.d.ts",
106
+ "bun": "./src/contexts/audit.ts",
107
+ "import": "./dist/contexts/audit.js",
108
+ "default": "./dist/contexts/audit.js"
109
+ },
110
+ "./schemas": {
111
+ "types": "./dist/schemas/index.d.ts",
112
+ "bun": "./src/schemas/index.ts",
113
+ "import": "./dist/schemas/index.js",
114
+ "default": "./dist/schemas/index.js"
115
+ },
116
+ "./schemas/entry": {
117
+ "types": "./dist/schemas/entry.d.ts",
118
+ "bun": "./src/schemas/entry.ts",
119
+ "import": "./dist/schemas/entry.js",
120
+ "default": "./dist/schemas/entry.js"
121
+ },
122
+ "./schemas/sink": {
123
+ "types": "./dist/schemas/sink.d.ts",
124
+ "bun": "./src/schemas/sink.ts",
125
+ "import": "./dist/schemas/sink.js",
126
+ "default": "./dist/schemas/sink.js"
127
+ },
128
+ "./schemas/formatter": {
129
+ "types": "./dist/schemas/formatter.d.ts",
130
+ "bun": "./src/schemas/formatter.ts",
131
+ "import": "./dist/schemas/formatter.js",
132
+ "default": "./dist/schemas/formatter.js"
133
+ },
134
+ "./schemas/output": {
135
+ "types": "./dist/schemas/output.d.ts",
136
+ "bun": "./src/schemas/output.ts",
137
+ "import": "./dist/schemas/output.js",
138
+ "default": "./dist/schemas/output.js"
139
+ },
140
+ "./schemas/audit": {
141
+ "types": "./dist/schemas/audit.d.ts",
142
+ "bun": "./src/schemas/audit.ts",
143
+ "import": "./dist/schemas/audit.js",
144
+ "default": "./dist/schemas/audit.js"
145
+ },
146
+ "./schemas/logger": {
147
+ "types": "./dist/schemas/logger.d.ts",
148
+ "bun": "./src/schemas/logger.ts",
149
+ "import": "./dist/schemas/logger.js",
150
+ "default": "./dist/schemas/logger.js"
151
+ },
152
+ "./sinks": {
153
+ "types": "./dist/sinks/index.d.ts",
154
+ "bun": "./src/sinks/index.ts",
155
+ "import": "./dist/sinks/index.js",
156
+ "default": "./dist/sinks/index.js"
157
+ },
158
+ "./formatters": {
159
+ "types": "./dist/formatters/index.d.ts",
160
+ "bun": "./src/formatters/index.ts",
161
+ "import": "./dist/formatters/index.js",
162
+ "default": "./dist/formatters/index.js"
163
+ },
164
+ "./outputs": {
165
+ "types": "./dist/outputs/index.d.ts",
166
+ "bun": "./src/outputs/index.ts",
167
+ "import": "./dist/outputs/index.js",
168
+ "default": "./dist/outputs/index.js"
169
+ },
170
+ "./audit": {
171
+ "types": "./dist/audit/index.d.ts",
172
+ "bun": "./src/audit/index.ts",
173
+ "import": "./dist/audit/index.js",
174
+ "default": "./dist/audit/index.js"
175
+ },
176
+ "./audit/audit.descriptor": {
177
+ "types": "./dist/audit/audit.descriptor.d.ts",
178
+ "bun": "./src/audit/audit.descriptor.ts",
179
+ "import": "./dist/audit/audit.descriptor.js",
180
+ "default": "./dist/audit/audit.descriptor.js"
181
+ },
182
+ "./cli/types": {
183
+ "types": "./dist/cli/types.d.ts",
184
+ "bun": "./src/cli/types.ts",
185
+ "import": "./dist/cli/types.js",
186
+ "default": "./dist/cli/types.js"
187
+ },
188
+ "./cli/logs.descriptor": {
189
+ "types": "./dist/cli/logs.descriptor.d.ts",
190
+ "bun": "./src/cli/logs.descriptor.ts",
191
+ "import": "./dist/cli/logs.descriptor.js",
192
+ "default": "./dist/cli/logs.descriptor.js"
193
+ },
194
+ "./cli/logs.list.descriptor": {
195
+ "types": "./dist/cli/logs.list.descriptor.d.ts",
196
+ "bun": "./src/cli/logs.list.descriptor.ts",
197
+ "import": "./dist/cli/logs.list.descriptor.js",
198
+ "default": "./dist/cli/logs.list.descriptor.js"
199
+ },
200
+ "./cli/logs.list.impl": {
201
+ "types": "./dist/cli/logs.list.impl.d.ts",
202
+ "bun": "./src/cli/logs.list.impl.ts",
203
+ "import": "./dist/cli/logs.list.impl.js",
204
+ "default": "./dist/cli/logs.list.impl.js"
205
+ },
206
+ "./cli/logs.search.descriptor": {
207
+ "types": "./dist/cli/logs.search.descriptor.d.ts",
208
+ "bun": "./src/cli/logs.search.descriptor.ts",
209
+ "import": "./dist/cli/logs.search.descriptor.js",
210
+ "default": "./dist/cli/logs.search.descriptor.js"
211
+ },
212
+ "./cli/logs.search.impl": {
213
+ "types": "./dist/cli/logs.search.impl.d.ts",
214
+ "bun": "./src/cli/logs.search.impl.ts",
215
+ "import": "./dist/cli/logs.search.impl.js",
216
+ "default": "./dist/cli/logs.search.impl.js"
217
+ },
218
+ "./cli/logs.tail.descriptor": {
219
+ "types": "./dist/cli/logs.tail.descriptor.d.ts",
220
+ "bun": "./src/cli/logs.tail.descriptor.ts",
221
+ "import": "./dist/cli/logs.tail.descriptor.js",
222
+ "default": "./dist/cli/logs.tail.descriptor.js"
223
+ },
224
+ "./cli/logs.tail.impl": {
225
+ "types": "./dist/cli/logs.tail.impl.d.ts",
226
+ "bun": "./src/cli/logs.tail.impl.ts",
227
+ "import": "./dist/cli/logs.tail.impl.js",
228
+ "default": "./dist/cli/logs.tail.impl.js"
229
+ },
230
+ "./cli/logs.rotate.descriptor": {
231
+ "types": "./dist/cli/logs.rotate.descriptor.d.ts",
232
+ "bun": "./src/cli/logs.rotate.descriptor.ts",
233
+ "import": "./dist/cli/logs.rotate.descriptor.js",
234
+ "default": "./dist/cli/logs.rotate.descriptor.js"
235
+ },
236
+ "./cli/logs.rotate.impl": {
237
+ "types": "./dist/cli/logs.rotate.impl.d.ts",
238
+ "bun": "./src/cli/logs.rotate.impl.ts",
239
+ "import": "./dist/cli/logs.rotate.impl.js",
240
+ "default": "./dist/cli/logs.rotate.impl.js"
241
+ },
242
+ "./cli/logs.view.descriptor": {
243
+ "types": "./dist/cli/logs.view.descriptor.d.ts",
244
+ "bun": "./src/cli/logs.view.descriptor.ts",
245
+ "import": "./dist/cli/logs.view.descriptor.js",
246
+ "default": "./dist/cli/logs.view.descriptor.js"
247
+ },
248
+ "./cli/logs.view.impl": {
249
+ "types": "./dist/cli/logs.view.impl.d.ts",
250
+ "bun": "./src/cli/logs.view.impl.ts",
251
+ "import": "./dist/cli/logs.view.impl.js",
252
+ "default": "./dist/cli/logs.view.impl.js"
253
+ },
254
+ "./docs": {
255
+ "types": "./dist/docs/index.d.ts",
256
+ "bun": "./src/docs/index.ts",
257
+ "import": "./dist/docs/index.js",
258
+ "default": "./dist/docs/index.js"
259
+ },
260
+ "./docs/levels": {
261
+ "types": "./dist/docs/levels.docs.descriptor.d.ts",
262
+ "bun": "./src/docs/levels.docs.descriptor.ts",
263
+ "import": "./dist/docs/levels.docs.descriptor.js",
264
+ "default": "./dist/docs/levels.docs.descriptor.js"
265
+ },
266
+ "./docs/structured": {
267
+ "types": "./dist/docs/structured.docs.descriptor.d.ts",
268
+ "bun": "./src/docs/structured.docs.descriptor.ts",
269
+ "import": "./dist/docs/structured.docs.descriptor.js",
270
+ "default": "./dist/docs/structured.docs.descriptor.js"
271
+ },
272
+ "./docs/transports": {
273
+ "types": "./dist/docs/transports.docs.descriptor.d.ts",
274
+ "bun": "./src/docs/transports.docs.descriptor.ts",
275
+ "import": "./dist/docs/transports.docs.descriptor.js",
276
+ "default": "./dist/docs/transports.docs.descriptor.js"
277
+ }
278
+ },
279
+ "publishConfig": {
280
+ "registry": "https://registry.npmjs.org",
281
+ "access": "public"
282
+ },
283
+ "repository": {
284
+ "type": "git",
285
+ "url": "git+https://github.com/vibesdotdev/monorepo.git",
286
+ "directory": "packages/logging"
287
+ },
288
+ "peerDependencies": {
289
+ "@vibesdotdev/runtime": "0.0.1"
290
+ },
291
+ "dependencies": {
292
+ "@vibesdotdev/runtime": "0.0.1",
293
+ "zod": "^4.3.6",
294
+ "esm-env": "^1.2.2",
295
+ "ansis": "^4.3.0",
296
+ "json5": "^2.2.3"
297
+ },
298
+ "scripts": {
299
+ "test": "bun test",
300
+ "check": "bun --bun tsc -p tsconfig.json --noEmit",
301
+ "build": "tsc -p tsconfig.json && bun ../../scripts/rewrite-dist-ts-imports.ts dist"
302
+ },
303
+ "license": "MIT",
304
+ "files": [
305
+ "dist",
306
+ "src",
307
+ "bin",
308
+ "README.md",
309
+ "SPEC.md",
310
+ "LICENSE",
311
+ "!src/**/__tests__/**",
312
+ "!src/**/__stubs__/**",
313
+ "!src/**/*.test.ts",
314
+ "!src/**/*.test.tsx",
315
+ "!src/**/*.spec.ts",
316
+ "!src/**/*.spec.tsx",
317
+ "!dist/**/__tests__/**",
318
+ "!dist/**/__stubs__/**",
319
+ "!dist/**/*.test.js",
320
+ "!dist/**/*.test.js.map",
321
+ "!dist/**/*.test.d.ts",
322
+ "!dist/**/*.test.d.ts.map",
323
+ "!dist/**/*.spec.js",
324
+ "!dist/**/*.spec.js.map",
325
+ "!dist/**/*.spec.d.ts",
326
+ "!dist/**/*.spec.d.ts.map"
327
+ ],
328
+ "vibes": {
329
+ "visibility": "public-framework"
330
+ }
331
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Default Audit Descriptor
3
+ *
4
+ * Generic audit logging configuration.
5
+ */
6
+
7
+ import type { AuditDescriptor } from '../schemas/audit.ts';
8
+
9
+ export const defaultAuditDescriptor: AuditDescriptor = {
10
+ kind: 'logging/audit',
11
+ id: 'default',
12
+ name: 'Default Audit Logger',
13
+ description: 'Default audit logging for all categories',
14
+ tags: ['compliance', 'security'],
15
+ category: 'system',
16
+ severity: 'low',
17
+ retention: '90d',
18
+ immutable: true
19
+ };
20
+
21
+ export const authenticationAuditDescriptor: AuditDescriptor = {
22
+ kind: 'logging/audit',
23
+ id: 'authentication',
24
+ name: 'Authentication Audit Logger',
25
+ description: 'Audit logging for authentication events',
26
+ tags: ['auth', 'security'],
27
+ category: 'authentication',
28
+ severity: 'medium',
29
+ retention: '1y',
30
+ immutable: true
31
+ };
32
+
33
+ export const securityAuditDescriptor: AuditDescriptor = {
34
+ kind: 'logging/audit',
35
+ id: 'security',
36
+ name: 'Security Audit Logger',
37
+ description: 'Audit logging for security events',
38
+ tags: ['security', 'compliance'],
39
+ category: 'security',
40
+ severity: 'high',
41
+ retention: '2y',
42
+ immutable: true
43
+ };
44
+
45
+ export default defaultAuditDescriptor;
@@ -0,0 +1,57 @@
1
+ import * as z from 'zod/v4';
2
+ import { AuditCategorySchema, AuditEntrySchema } from '../schemas/audit.ts';
3
+
4
+ export const AuditEntryStorageSchema = AuditEntrySchema.extend({
5
+ pk: z.number().int().optional(),
6
+ createdAt: z.date().optional(),
7
+ actorId: z.string(),
8
+ actorType: z.enum(['user', 'service', 'system']),
9
+ targetId: z.string().optional(),
10
+ targetType: z.string().optional()
11
+ });
12
+ export type AuditEntryStorage = z.infer<typeof AuditEntryStorageSchema>;
13
+
14
+ export interface AuditRetentionPolicy {
15
+ category: z.infer<typeof AuditCategorySchema>;
16
+ retentionDays: number;
17
+ archive: boolean;
18
+ archivePath?: string;
19
+ }
20
+
21
+ export const DEFAULT_RETENTION_POLICIES: AuditRetentionPolicy[] = [
22
+ { category: 'authentication', retentionDays: 365, archive: true },
23
+ { category: 'authorization', retentionDays: 365, archive: true },
24
+ { category: 'security', retentionDays: 730, archive: true },
25
+ { category: 'data_access', retentionDays: 90, archive: false },
26
+ { category: 'data_modification', retentionDays: 365, archive: true },
27
+ { category: 'configuration', retentionDays: 365, archive: true },
28
+ { category: 'system', retentionDays: 90, archive: false }
29
+ ];
30
+
31
+ export interface AuditStorageConfig {
32
+ adapter: 'drizzle' | 'localdb';
33
+ tableName: string;
34
+ indexes: {
35
+ category: boolean;
36
+ severity: boolean;
37
+ actorId: boolean;
38
+ targetId: boolean;
39
+ timestamp: boolean;
40
+ action: boolean;
41
+ };
42
+ retention: AuditRetentionPolicy[];
43
+ }
44
+
45
+ export const defaultAuditStorageConfig: AuditStorageConfig = {
46
+ adapter: 'drizzle',
47
+ tableName: 'audit_entries',
48
+ indexes: {
49
+ category: true,
50
+ severity: true,
51
+ actorId: true,
52
+ targetId: true,
53
+ timestamp: true,
54
+ action: true
55
+ },
56
+ retention: DEFAULT_RETENTION_POLICIES
57
+ };
@@ -0,0 +1,8 @@
1
+ export {
2
+ AuditEntryStorageSchema,
3
+ type AuditEntryStorage,
4
+ type AuditRetentionPolicy,
5
+ DEFAULT_RETENTION_POLICIES,
6
+ type AuditStorageConfig,
7
+ defaultAuditStorageConfig
8
+ } from './audit.storage.schema';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Logs CLI Group Descriptor
3
+ *
4
+ * Root group for log management commands.
5
+ */
6
+
7
+ import type { CLIGroupAssetDescriptor } from './types.ts';
8
+
9
+ const descriptor: CLIGroupAssetDescriptor = {
10
+ kind: 'cli/group',
11
+ id: 'logs',
12
+ name: 'logs',
13
+ description: 'View and manage application logs',
14
+ surfaces: ['cli'],
15
+ hardware: ['consumer', 'cloud'],
16
+ enabled: true
17
+ };
18
+
19
+ export default descriptor;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Logs List CLI Command Descriptor
3
+ *
4
+ * Lists all registered log outputs.
5
+ */
6
+
7
+ import type { CLICommandAssetDescriptor } from './types.ts';
8
+
9
+ const descriptor: CLICommandAssetDescriptor = {
10
+ kind: 'cli/command',
11
+ id: 'logs.list',
12
+ name: 'list',
13
+ description: 'List registered log outputs and their status',
14
+ group: 'logs',
15
+
16
+ options: [
17
+ {
18
+ flags: '--json',
19
+ description: 'Output as JSON'
20
+ }
21
+ ],
22
+
23
+ surfaces: ['cli'],
24
+ hardware: ['consumer', 'cloud'],
25
+ enabled: true
26
+ };
27
+
28
+ export default descriptor;
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Logs List CLI Command Implementation
3
+ *
4
+ * Lists all registered log outputs with their status.
5
+ */
6
+
7
+ import { getVibesRuntime } from '@vibesdotdev/runtime';
8
+ import type { OutputDescriptor } from '../schemas/output.ts';
9
+ import type { OutputImplementation } from '../kinds/output.ts';
10
+
11
+ interface ListOptions {
12
+ json?: boolean;
13
+ }
14
+
15
+ export default {
16
+ async execute(_args: Record<string, unknown>, opts: ListOptions): Promise<void> {
17
+ const runtime = getVibesRuntime();
18
+
19
+ // Get all output descriptors
20
+ const descriptors = runtime
21
+ .query<OutputDescriptor, OutputImplementation>('logging/output')
22
+ .enabled()
23
+ .descriptors();
24
+
25
+ if (descriptors.length === 0) {
26
+ console.log('No log outputs registered.');
27
+ return;
28
+ }
29
+
30
+ if (opts.json) {
31
+ const items = await Promise.all(
32
+ descriptors.map(async (d) => {
33
+ try {
34
+ const output = await runtime
35
+ .query<OutputDescriptor, OutputImplementation>('logging/output')
36
+ .withId(d.id)
37
+ .resolve();
38
+ const stats = await output.stats();
39
+ return {
40
+ id: d.id,
41
+ name: d.name,
42
+ storage: d.storage,
43
+ path: d.path,
44
+ format: d.format,
45
+ hardware: d.hardware,
46
+ stats
47
+ };
48
+ } catch {
49
+ return {
50
+ id: d.id,
51
+ name: d.name,
52
+ storage: d.storage,
53
+ path: d.path,
54
+ format: d.format,
55
+ hardware: d.hardware,
56
+ stats: null
57
+ };
58
+ }
59
+ })
60
+ );
61
+ console.log(JSON.stringify(items, null, 2));
62
+ return;
63
+ }
64
+
65
+ console.log('\n Log Outputs\n');
66
+
67
+ for (const d of descriptors) {
68
+ let statsLine = '';
69
+ try {
70
+ const output = await runtime
71
+ .query<OutputDescriptor, OutputImplementation>('logging/output')
72
+ .withId(d.id)
73
+ .resolve();
74
+ const stats = await output.stats();
75
+ if (stats.exists) {
76
+ const sizeKb = (stats.size / 1024).toFixed(1);
77
+ const modified = stats.modifiedAt?.toLocaleString() ?? 'unknown';
78
+ statsLine = ` Size: ${sizeKb}KB, Modified: ${modified}`;
79
+ } else {
80
+ statsLine = ' (no file yet)';
81
+ }
82
+ } catch {
83
+ statsLine = ' (unable to get stats)';
84
+ }
85
+
86
+ console.log(` ${d.id}`);
87
+ console.log(` Storage: ${d.storage ?? 'file'} | Format: ${d.format ?? 'jsonl'}`);
88
+ console.log(` Path: ${d.path ?? 'default'}`);
89
+ console.log(statsLine);
90
+ console.log('');
91
+ }
92
+ }
93
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Logs Rotate CLI Command Descriptor
3
+ *
4
+ * Rotate a log output file.
5
+ */
6
+
7
+ import type { CLICommandAssetDescriptor } from './types.ts';
8
+
9
+ const descriptor: CLICommandAssetDescriptor = {
10
+ kind: 'cli/command',
11
+ id: 'logs.rotate',
12
+ name: 'rotate',
13
+ description: 'Rotate a log output file',
14
+ group: 'logs',
15
+
16
+ arguments: [
17
+ {
18
+ name: 'output',
19
+ description: 'Output ID to rotate',
20
+ required: true
21
+ }
22
+ ],
23
+
24
+ options: [
25
+ {
26
+ flags: '--all',
27
+ description: 'Rotate all outputs'
28
+ },
29
+ {
30
+ flags: '--cleanup',
31
+ description: 'Also run cleanup of old rotated files'
32
+ }
33
+ ],
34
+
35
+ surfaces: ['cli'],
36
+ hardware: ['consumer'],
37
+ enabled: true
38
+ };
39
+
40
+ export default descriptor;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Logs Rotate CLI Command Implementation
3
+ *
4
+ * Rotate log output files.
5
+ */
6
+
7
+ import { getVibesRuntime } from '@vibesdotdev/runtime';
8
+ import type { OutputDescriptor } from '../schemas/output.ts';
9
+ import type { OutputImplementation } from '../kinds/output.ts';
10
+
11
+ interface RotateArgs {
12
+ output?: string;
13
+ }
14
+
15
+ interface RotateOptions {
16
+ all?: boolean;
17
+ cleanup?: boolean;
18
+ }
19
+
20
+ export default {
21
+ async execute(args: RotateArgs, opts: RotateOptions): Promise<void> {
22
+ const runtime = getVibesRuntime();
23
+
24
+ // Get outputs to rotate
25
+ let outputIds: string[];
26
+ if (opts.all) {
27
+ const descriptors = runtime
28
+ .query<OutputDescriptor, OutputImplementation>('logging/output')
29
+ .enabled()
30
+ .descriptors();
31
+ outputIds = descriptors.map((d) => d.id);
32
+ } else if (args.output) {
33
+ outputIds = [args.output];
34
+ } else {
35
+ console.error('Please specify an output ID or use --all to rotate all outputs.');
36
+ process.exit(1);
37
+ }
38
+
39
+ console.log('\nšŸ”„ Rotating logs...\n');
40
+
41
+ for (const outputId of outputIds) {
42
+ try {
43
+ const output = await runtime
44
+ .query<OutputDescriptor, OutputImplementation>('logging/output')
45
+ .withId(outputId)
46
+ .resolve();
47
+
48
+ if (output.rotate) {
49
+ const { archived } = await output.rotate();
50
+ console.log(` āœ“ ${outputId} → ${archived}`);
51
+ } else {
52
+ console.log(` - ${outputId} (rotation not supported)`);
53
+ }
54
+ } catch (err) {
55
+ console.log(` āœ— ${outputId}: ${err instanceof Error ? err.message : String(err)}`);
56
+ }
57
+ }
58
+
59
+ console.log('\nDone.\n');
60
+ }
61
+ };