@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,401 @@
1
+ /**
2
+ * The `file` output (and each named file stream it creates) over the host's
3
+ * file primitives (`LoggingFileHost`): buffered ordered appends, size and age
4
+ * rotation, retention, reads, tails and the copy-truncate rotation of a file
5
+ * another process appends to. `fileOutputFor(host)` is the class a host
6
+ * registers; every stream it creates is that same class.
7
+ */
8
+ import { OutputDescriptorSchema, resolveFileOutputRotation, resolveOutputBuffering, JsonlFormatter, jsonlFormatterDescriptor, createFallbackLogger, LoggedErrorSchema, trackLoggingResource, untrackLoggingResource, getCapturedLoggingConfig, parseSize, parseDuration, attempt, isMissingPath } from "../host.js";
9
+ import { CapabilityError } from '@vibesdotdev/kernel';
10
+ import { readLines, tailFile } from "./file-output.read.base.js";
11
+ import { rotateAppendedFileOn } from "./rotate-appended-file.base.js";
12
+ const ARCHIVE_SUFFIX = /^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-\d{3}Z(?:\.\d+)?$/;
13
+ const encoder = new TextEncoder();
14
+ export class FileOutputBase {
15
+ id;
16
+ host;
17
+ descriptor;
18
+ formatter;
19
+ filePath;
20
+ rotation;
21
+ buffering;
22
+ runtime;
23
+ context;
24
+ buffer = [];
25
+ bufferBytes = 0;
26
+ file = null;
27
+ flushPromise = null;
28
+ closePromise = null;
29
+ closing = false;
30
+ tails = new Set();
31
+ acceptedLines = new Set();
32
+ pendingDiagnostics = new Set();
33
+ diagnosticFailures = [];
34
+ rotationSequence = 0;
35
+ /** The one-shot flush pending for the current buffer (lifecycle-owned). */
36
+ flushDisposer = null;
37
+ /** The retention tick on a persistent host (lifecycle-owned). */
38
+ retentionDisposer = null;
39
+ currentSize = 0;
40
+ writeQueue = Promise.resolve();
41
+ constructor(host, descriptor, context) {
42
+ this.host = host;
43
+ this.descriptor = OutputDescriptorSchema.parse(descriptor);
44
+ this.id = this.descriptor.id;
45
+ const runtime = context.runtime;
46
+ this.runtime = runtime;
47
+ this.context = context;
48
+ this.formatter = context.formatter ?? new JsonlFormatter(jsonlFormatterDescriptor, { runtime });
49
+ // Only a relative file destination needs the host's bound workspace root.
50
+ if (descriptor.path && host.isAbsolute(descriptor.path)) {
51
+ this.filePath = descriptor.path;
52
+ }
53
+ else {
54
+ const basePath = context['runtime/workspace-path'];
55
+ if (!basePath)
56
+ throw new CapabilityError('A relative file output requires its descriptor-injected workspace.', 'NOT_FOUND', {
57
+ reason: 'workspace-unbound', details: { kind: 'context', id: 'runtime/workspace-path' }, retryable: false
58
+ });
59
+ this.filePath = host.join(basePath, descriptor.path ?? 'logs/app.log');
60
+ }
61
+ this.rotation = resolveFileOutputRotation(runtime, descriptor);
62
+ this.buffering = resolveOutputBuffering(descriptor.buffering);
63
+ // Retention runs as a lifecycle-owned tick only on a persistent host. A
64
+ // finite host starts no background work (`lifecycle.interval` refuses
65
+ // it); its rotated files are bounded at every rotation instead.
66
+ if (runtime.scope.lifecycle !== 'finite') {
67
+ const cleanupIntervalMs = getCapturedLoggingConfig(runtime).retentionCleanupIntervalMs;
68
+ this.retentionDisposer = runtime.lifecycle.interval(() => {
69
+ this.diagnose(this.enforceRetention().then(() => undefined), 'Retention failed', { path: this.filePath });
70
+ }, cleanupIntervalMs);
71
+ }
72
+ trackLoggingResource(runtime, this);
73
+ }
74
+ /**
75
+ * Report a background operation's failure through the fallback logger. A
76
+ * failure that cannot be reported is kept and raised by `close`.
77
+ */
78
+ diagnose(operation, message, context) {
79
+ const completed = attempt(() => operation).then(async (settled) => {
80
+ if (!('failure' in settled))
81
+ return;
82
+ const failure = settled.failure.cause;
83
+ const reported = await attempt(async () => {
84
+ (await createFallbackLogger('logging:file-output', this.runtime)).error(message, {
85
+ ...context, error: LoggedErrorSchema.parse(failure)
86
+ });
87
+ });
88
+ if ('failure' in reported)
89
+ this.diagnosticFailures.push(LoggedErrorSchema.parse(reported.failure.cause));
90
+ });
91
+ this.pendingDiagnostics.add(completed);
92
+ void completed.then(() => this.pendingDiagnostics.delete(completed));
93
+ }
94
+ assertWritable() {
95
+ if (this.closing || this.runtime.lifecycle.signal.aborted) {
96
+ throw new CapabilityError('The file output no longer accepts writes.', 'UNAVAILABLE', {
97
+ reason: this.closing ? 'output-closed' : 'output-runtime-disposed',
98
+ details: { id: this.id }, cause: this.runtime.lifecycle.signal.reason
99
+ });
100
+ }
101
+ }
102
+ async write(entry) {
103
+ this.assertWritable();
104
+ await this.enqueue(`${this.formatter.format(entry)}\n`);
105
+ }
106
+ async writeBatch(entries) {
107
+ this.assertWritable();
108
+ for (const entry of entries)
109
+ await this.write(entry);
110
+ }
111
+ async enqueue(chunk) {
112
+ if (!this.buffering.enabled) {
113
+ await this.writeChunk(chunk);
114
+ return;
115
+ }
116
+ if (this.buffer.length >= this.buffering.maxBufferEntries) {
117
+ await this.flush();
118
+ this.assertWritable();
119
+ return this.enqueue(chunk);
120
+ }
121
+ this.buffer.push(chunk);
122
+ this.bufferBytes += encoder.encode(chunk).byteLength;
123
+ if (this.bufferBytes >= this.buffering.size || this.buffer.length >= this.buffering.maxBufferEntries) {
124
+ await this.flush();
125
+ return;
126
+ }
127
+ this.scheduleFlush();
128
+ }
129
+ /** One lifecycle-owned flush per non-empty buffer, `flushInterval` after its first write. */
130
+ scheduleFlush() {
131
+ if (this.closing || this.flushDisposer || this.flushPromise || !this.buffering.flushInterval || this.buffer.length === 0)
132
+ return;
133
+ if (this.runtime.lifecycle.signal.aborted)
134
+ return;
135
+ this.flushDisposer = this.runtime.lifecycle.timeout(() => {
136
+ this.flushDisposer = null;
137
+ this.diagnose(this.flush(), 'Flush failed', { path: this.filePath });
138
+ }, this.buffering.flushInterval);
139
+ }
140
+ flush() {
141
+ this.flushDisposer?.();
142
+ this.flushDisposer = null;
143
+ if (this.flushPromise)
144
+ return this.flushPromise;
145
+ if (this.buffer.length === 0)
146
+ return Promise.resolve();
147
+ const count = this.buffer.length;
148
+ this.flushPromise = (async () => {
149
+ for (let index = 0; index < count; index++) {
150
+ const chunk = this.buffer[0];
151
+ if (chunk === undefined)
152
+ break;
153
+ await this.writeChunk(chunk);
154
+ this.buffer.shift();
155
+ this.bufferBytes -= encoder.encode(chunk).byteLength;
156
+ }
157
+ })().then(() => {
158
+ this.flushPromise = null;
159
+ this.scheduleFlush();
160
+ }, error => {
161
+ this.flushPromise = null;
162
+ throw error;
163
+ });
164
+ return this.flushPromise;
165
+ }
166
+ close() {
167
+ if (this.closePromise)
168
+ return this.closePromise;
169
+ this.closing = true;
170
+ this.flushDisposer?.();
171
+ this.flushDisposer = null;
172
+ this.retentionDisposer?.();
173
+ this.retentionDisposer = null;
174
+ const tails = [...this.tails].map(tail => tail.close());
175
+ this.tails.clear();
176
+ this.closePromise = (async () => {
177
+ const drained = await Promise.allSettled([...tails, ...this.acceptedLines, ...this.pendingDiagnostics, (async () => {
178
+ if (this.flushPromise)
179
+ await this.flushPromise;
180
+ await this.flush();
181
+ })()]);
182
+ const ended = await Promise.allSettled([this.serialized(() => this.endFile())]);
183
+ const failures = [...drained, ...ended].filter(result => result.status === 'rejected').map(result => result.reason).concat(this.diagnosticFailures);
184
+ if (failures.length === 1)
185
+ throw failures[0];
186
+ if (failures.length > 1)
187
+ throw new AggregateError(failures, 'File output cleanup failed.');
188
+ untrackLoggingResource(this.runtime, this);
189
+ })();
190
+ return this.closePromise;
191
+ }
192
+ /** Run `work` in write order, after every write queued before it. */
193
+ serialized(work) {
194
+ const run = this.writeQueue.then(work);
195
+ // The queue only orders work: the next item waits for this one to
196
+ // settle, and this item's failure reaches its caller through `run`.
197
+ this.writeQueue = Promise.allSettled([run]).then(() => undefined);
198
+ return run;
199
+ }
200
+ async endFile() {
201
+ const file = this.file;
202
+ if (!file)
203
+ return;
204
+ this.file = null;
205
+ await file.close();
206
+ }
207
+ /** Close the active file, archive it as `<file>.<timestamp>` and bound the archives; `null` when there was no active file. */
208
+ async rotate() {
209
+ this.assertWritable();
210
+ await this.flush();
211
+ return this.serialized(() => this.rotateActiveFile());
212
+ }
213
+ /** Rotation itself; runs only inside the write queue, so it never flushes back into it. */
214
+ async rotateActiveFile() {
215
+ await this.endFile();
216
+ // Only a rotation that happened is reported: with no active file there is nothing archived.
217
+ let archived = null;
218
+ if (this.host.exists(this.filePath)) {
219
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
220
+ archived = `${this.filePath}.${timestamp}.${String(this.rotationSequence++).padStart(12, '0')}`;
221
+ await this.host.rename(this.filePath, archived);
222
+ }
223
+ await this.cleanupOldFiles();
224
+ return { archived };
225
+ }
226
+ async enforceRetention() {
227
+ this.assertWritable();
228
+ await this.maybeRotateStaleActiveFile();
229
+ return this.serialized(async () => ({ removed: await this.cleanupOldFiles() }));
230
+ }
231
+ async read(options) {
232
+ return readLines(this.host, this.filePath, options);
233
+ }
234
+ tail(callback, options) {
235
+ this.assertWritable();
236
+ const native = tailFile(this.host, this.filePath, callback, options, async (error) => {
237
+ (await createFallbackLogger('logging:file-tail', this.runtime)).error('File tail failed', { path: this.filePath, error });
238
+ });
239
+ this.tails.add(native);
240
+ return {
241
+ close: () => {
242
+ this.diagnose(native.close().then(() => { this.tails.delete(native); }), 'Tail cleanup failed', { id: this.id });
243
+ }
244
+ };
245
+ }
246
+ async stats() {
247
+ const statted = await attempt(() => this.host.stat(this.filePath));
248
+ if ('failure' in statted) {
249
+ if (isMissingPath(statted.failure))
250
+ return { size: 0, exists: false };
251
+ throw statted.failure.cause;
252
+ }
253
+ return { size: statted.value.size, modifiedAt: statted.value.mtime, exists: true };
254
+ }
255
+ async writeLine(line) {
256
+ this.assertWritable();
257
+ // Admission occurs before waiting for a captured fragment to be classified.
258
+ // Disposal joins this accepted work; it cannot admit another reservation.
259
+ const accepted = (async () => {
260
+ const chunk = await line;
261
+ if (chunk === null)
262
+ return;
263
+ await this.flush();
264
+ await this.writeChunk(chunk);
265
+ })();
266
+ this.acceptedLines.add(accepted);
267
+ try {
268
+ await accepted;
269
+ }
270
+ finally {
271
+ this.acceptedLines.delete(accepted);
272
+ }
273
+ }
274
+ /** A separately configured file stream on this output's Runtime. */
275
+ async create(descriptor, namedContext) {
276
+ if (namedContext.runtime.lifecycle !== this.runtime.lifecycle)
277
+ throw new CapabilityError('A file stream context belongs to another Runtime.', 'CONFLICT', {
278
+ reason: 'output-context-runtime-mismatch', retryable: false
279
+ });
280
+ return new (fileOutputFor(this.host))(OutputDescriptorSchema.parse(descriptor), { ...this.context, ...namedContext, runtime: this.runtime });
281
+ }
282
+ /** Admit a line now; write it once classified (`null` writes nothing). */
283
+ async writeReservedLine(line) {
284
+ return this.writeLine(line);
285
+ }
286
+ /** Copy-truncate rotation for a file another process appends to (L1). */
287
+ async rotateAppendedFile(path, policy) {
288
+ return rotateAppendedFileOn(this.host, path, policy);
289
+ }
290
+ async writeChunk(chunk) {
291
+ const bytes = encoder.encode(chunk).byteLength;
292
+ await this.serialized(async () => {
293
+ let file = await this.ensureFile();
294
+ if (this.shouldRotateBySize(bytes)) {
295
+ await this.rotateActiveFile();
296
+ file = await this.ensureFile();
297
+ }
298
+ await file.writeFile(chunk);
299
+ this.currentSize += bytes;
300
+ });
301
+ }
302
+ async ensureFile() {
303
+ if (this.file)
304
+ return this.file;
305
+ await this.host.mkdirRecursive(this.host.dirname(this.filePath));
306
+ const file = await this.host.open(this.filePath, 'a');
307
+ try {
308
+ this.currentSize = (await file.stat()).size;
309
+ }
310
+ catch (error) {
311
+ await file.close();
312
+ throw error;
313
+ }
314
+ this.file = file;
315
+ return file;
316
+ }
317
+ shouldRotateBySize(additionalBytes) {
318
+ const maxBytes = parseSize(this.rotation.maxSize);
319
+ // An empty file never rotates: a single chunk larger than the cap is
320
+ // written whole rather than rotating forever.
321
+ return this.currentSize > 0 && this.currentSize + additionalBytes > maxBytes;
322
+ }
323
+ async maybeRotateStaleActiveFile() {
324
+ if (!this.rotation.maxAge)
325
+ return;
326
+ const statted = await attempt(() => this.host.stat(this.filePath));
327
+ if ('failure' in statted) {
328
+ if (isMissingPath(statted.failure))
329
+ return;
330
+ throw statted.failure.cause;
331
+ }
332
+ const fileStats = statted.value;
333
+ if (fileStats.size === 0)
334
+ return;
335
+ const maxAgeMs = parseDuration(this.rotation.maxAge);
336
+ if (Date.now() - fileStats.mtimeMs >= maxAgeMs) {
337
+ await this.rotate();
338
+ }
339
+ }
340
+ async cleanupOldFiles() {
341
+ const dir = this.host.dirname(this.filePath);
342
+ const name = this.host.basename(this.filePath);
343
+ const prefix = `${name}.`;
344
+ let removed = 0;
345
+ const listed = await attempt(() => this.host.readdir(dir));
346
+ if ('failure' in listed) {
347
+ if (isMissingPath(listed.failure))
348
+ return 0;
349
+ throw listed.failure.cause;
350
+ }
351
+ const rotatedFiles = listed.value
352
+ .filter((file) => file.startsWith(prefix) && ARCHIVE_SUFFIX.test(file.slice(prefix.length)))
353
+ .sort()
354
+ .reverse();
355
+ const removedFiles = new Set();
356
+ const removeRotated = async (file) => {
357
+ const unlinked = await attempt(() => this.host.unlink(this.host.join(dir, file)));
358
+ if ('value' in unlinked)
359
+ removed++;
360
+ // A missing archive means another process's cleanup got there first.
361
+ else if (!isMissingPath(unlinked.failure))
362
+ throw unlinked.failure.cause;
363
+ removedFiles.add(file);
364
+ };
365
+ for (const file of rotatedFiles.slice(this.rotation.maxFiles)) {
366
+ await removeRotated(file);
367
+ }
368
+ if (this.rotation.maxAge) {
369
+ const maxAgeMs = parseDuration(this.rotation.maxAge);
370
+ const cutoff = Date.now() - maxAgeMs;
371
+ for (const file of rotatedFiles) {
372
+ if (removedFiles.has(file))
373
+ continue;
374
+ const statted = await attempt(() => this.host.stat(this.host.join(dir, file)));
375
+ if ('failure' in statted) {
376
+ if (isMissingPath(statted.failure))
377
+ continue;
378
+ throw statted.failure.cause;
379
+ }
380
+ if (statted.value.mtimeMs < cutoff)
381
+ await removeRotated(file);
382
+ }
383
+ }
384
+ return removed;
385
+ }
386
+ }
387
+ const fileOutputClasses = new WeakMap();
388
+ /** The file output class over `host`, one per host, so every stream it creates is the same class. */
389
+ export function fileOutputFor(host) {
390
+ let bound = fileOutputClasses.get(host);
391
+ if (!bound) {
392
+ bound = class FileOutput extends FileOutputBase {
393
+ constructor(descriptor, context) {
394
+ super(host, descriptor, context);
395
+ }
396
+ };
397
+ fileOutputClasses.set(host, bound);
398
+ }
399
+ return bound;
400
+ }
401
+ //# sourceMappingURL=file-output.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.base.js","sourceRoot":"","sources":["../../src/host-files/file-output.base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type RuntimeLogEntry, DefaultOutputImplementation, type FileOutputImplementation, type AppendedFileRotation, type AppendedFileRotationPolicy, type OutputContext, type OutputDescriptor } from '../host.ts';
2
+ import type { LoggingFileHost } from '../schemas/file-host.ts';
3
+ import { type FileOutputBase } from './file-output.base.ts';
4
+ /** The Runtime selects the factory before any stream opens a file. */
5
+ export declare class FileOutputFactoryBase extends DefaultOutputImplementation implements FileOutputImplementation {
6
+ private readonly host;
7
+ /** This backend's own stream: the one file stream its write, read and rotation methods share. */
8
+ private stream;
9
+ private opening;
10
+ constructor(host: LoggingFileHost, ...backend: ConstructorParameters<typeof DefaultOutputImplementation>);
11
+ create(descriptor: OutputDescriptor, namedContext: OutputContext): Promise<FileOutputBase>;
12
+ /** The backend's own stream, created from its declared descriptor: typed, never narrowed at run time. */
13
+ protected getDelegatePromise(): Promise<FileOutputBase>;
14
+ private getFileDelegate;
15
+ writeBatch(entries: RuntimeLogEntry[]): Promise<void>;
16
+ writeLine(line: string): Promise<void>;
17
+ writeReservedLine(line: Promise<string | null>): Promise<void>;
18
+ /** Rotates a path another process appends to; it opens no stream. */
19
+ rotateAppendedFile(path: string, policy: AppendedFileRotationPolicy): Promise<AppendedFileRotation>;
20
+ rotate(): Promise<{
21
+ archived: string | null;
22
+ }>;
23
+ enforceRetention(): Promise<{
24
+ removed: number;
25
+ }>;
26
+ }
27
+ type FileOutputFactoryClass = new (...backend: ConstructorParameters<typeof DefaultOutputImplementation>) => FileOutputFactoryBase;
28
+ /** The `file` output backend class over `host`, one per host. */
29
+ export declare function fileOutputFactoryFor(host: LoggingFileHost): FileOutputFactoryClass;
30
+ export {};
31
+ //# sourceMappingURL=file-output.factory.base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.factory.base.d.ts","sourceRoot":"","sources":["../../src/host-files/file-output.factory.base.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,KAAK,eAAe,EACpB,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAElB,KAAK,gBAAgB,EAErB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG3E,sEAAsE;AACtE,qBAAa,qBAAsB,SAAQ,2BAA4B,YAAW,wBAAwB;IACzG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,iGAAiG;IACjG,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAwC;gBAE3C,IAAI,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC;IAKlG,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAQhG,yGAAyG;cACtF,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAchE,OAAO,CAAC,eAAe;IAIjB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,qEAAqE;IAC/D,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAInG,MAAM,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAI9C,gBAAgB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAGtD;AAED,KAAK,sBAAsB,GAAG,KAAK,GAAG,OAAO,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC,KAAK,qBAAqB,CAAC;AAInI,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,sBAAsB,CAWlF"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * The `file` output backend the Runtime selects (and the `mcp-stdout-capture`
3
+ * storage it backs), over the host's file primitives: it creates the host's
4
+ * file streams (`fileOutputFor(host)`) and rotates appended files.
5
+ * `fileOutputFactoryFor(host)` is the class a host registers.
6
+ */
7
+ import { CapabilityError } from '@vibesdotdev/kernel';
8
+ import { DefaultOutputImplementation, OutputDescriptorSchema, captureLoggingConfig } from "../host.js";
9
+ import { fileOutputFor } from "./file-output.base.js";
10
+ import { rotateAppendedFileOn } from "./rotate-appended-file.base.js";
11
+ /** The Runtime selects the factory before any stream opens a file. */
12
+ export class FileOutputFactoryBase extends DefaultOutputImplementation {
13
+ host;
14
+ /** This backend's own stream: the one file stream its write, read and rotation methods share. */
15
+ stream = null;
16
+ opening = null;
17
+ constructor(host, ...backend) {
18
+ super(...backend);
19
+ this.host = host;
20
+ }
21
+ async create(descriptor, namedContext) {
22
+ if (namedContext.runtime.lifecycle !== this.context.runtime.lifecycle)
23
+ throw new CapabilityError('A file stream context belongs to another Runtime.', 'CONFLICT', {
24
+ reason: 'output-context-runtime-mismatch', retryable: false
25
+ });
26
+ await captureLoggingConfig(this.context.runtime);
27
+ return new (fileOutputFor(this.host))(OutputDescriptorSchema.parse(descriptor), { ...this.context, ...namedContext, runtime: this.context.runtime });
28
+ }
29
+ /** The backend's own stream, created from its declared descriptor: typed, never narrowed at run time. */
30
+ getDelegatePromise() {
31
+ if (this.stream)
32
+ return Promise.resolve(this.stream);
33
+ if (!this.opening) {
34
+ const opening = this.create(this.descriptor, this.context).then((stream) => {
35
+ this.stream = stream;
36
+ return stream;
37
+ }).finally(() => {
38
+ if (this.opening === opening)
39
+ this.opening = null;
40
+ });
41
+ this.opening = opening;
42
+ }
43
+ return this.opening;
44
+ }
45
+ getFileDelegate() {
46
+ return this.getDelegatePromise();
47
+ }
48
+ async writeBatch(entries) {
49
+ return (await this.getFileDelegate()).writeBatch(entries);
50
+ }
51
+ async writeLine(line) {
52
+ return (await this.getFileDelegate()).writeLine(line);
53
+ }
54
+ async writeReservedLine(line) {
55
+ return (await this.getFileDelegate()).writeReservedLine(line);
56
+ }
57
+ /** Rotates a path another process appends to; it opens no stream. */
58
+ async rotateAppendedFile(path, policy) {
59
+ return rotateAppendedFileOn(this.host, path, policy);
60
+ }
61
+ async rotate() {
62
+ return (await this.getFileDelegate()).rotate();
63
+ }
64
+ async enforceRetention() {
65
+ return (await this.getFileDelegate()).enforceRetention();
66
+ }
67
+ }
68
+ const factoryClasses = new WeakMap();
69
+ /** The `file` output backend class over `host`, one per host. */
70
+ export function fileOutputFactoryFor(host) {
71
+ let bound = factoryClasses.get(host);
72
+ if (!bound) {
73
+ bound = class FileOutputFactory extends FileOutputFactoryBase {
74
+ constructor(...backend) {
75
+ super(host, ...backend);
76
+ }
77
+ };
78
+ factoryClasses.set(host, bound);
79
+ }
80
+ return bound;
81
+ }
82
+ //# sourceMappingURL=file-output.factory.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.factory.base.js","sourceRoot":"","sources":["../../src/host-files/file-output.factory.base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { OutputReadOptions, OutputTailOptions } from '../kinds/output.types.ts';
2
+ import { type LoggedError } from '../core/redact.ts';
3
+ import type { FileTailHandle, LoggingFileHost } from '../schemas/file-host.ts';
4
+ export declare function readLines(host: LoggingFileHost, filePath: string, options?: OutputReadOptions): Promise<string[]>;
5
+ /** Native directory events follow both appends and replacement of the active file. */
6
+ export declare function tailFile(host: LoggingFileHost, filePath: string, callback: (line: string) => void, options: OutputTailOptions | undefined, reportError: (error: LoggedError) => Promise<void>): FileTailHandle;
7
+ //# sourceMappingURL=file-output.read.base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.read.base.d.ts","sourceRoot":"","sources":["../../src/host-files/file-output.read.base.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,KAAK,EAAE,cAAc,EAA4C,eAAe,EAAE,MAAM,yBAAyB,CAAC;AA4BzH,wBAAsB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBvH;AAMD,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,SAAS,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CA+I9M"}