@goondocks/myco 0.6.5 → 0.9.0

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 (287) hide show
  1. package/.claude-plugin/marketplace.json +2 -3
  2. package/.claude-plugin/plugin.json +3 -3
  3. package/CONTRIBUTING.md +37 -30
  4. package/README.md +64 -28
  5. package/bin/myco-run +2 -0
  6. package/dist/agent-run-EFICNTAU.js +34 -0
  7. package/dist/agent-run-EFICNTAU.js.map +1 -0
  8. package/dist/agent-tasks-RXJ7Z5NG.js +180 -0
  9. package/dist/agent-tasks-RXJ7Z5NG.js.map +1 -0
  10. package/dist/chunk-2T7RPVPP.js +116 -0
  11. package/dist/chunk-2T7RPVPP.js.map +1 -0
  12. package/dist/chunk-3K5WGSJ4.js +165 -0
  13. package/dist/chunk-3K5WGSJ4.js.map +1 -0
  14. package/dist/chunk-46PWOKSI.js +26 -0
  15. package/dist/chunk-46PWOKSI.js.map +1 -0
  16. package/dist/chunk-4LPQ26CK.js +277 -0
  17. package/dist/chunk-4LPQ26CK.js.map +1 -0
  18. package/dist/chunk-5PEUFJ6U.js +92 -0
  19. package/dist/chunk-5PEUFJ6U.js.map +1 -0
  20. package/dist/chunk-5VZ52A4T.js +136 -0
  21. package/dist/chunk-5VZ52A4T.js.map +1 -0
  22. package/dist/chunk-BUSP3OJB.js +103 -0
  23. package/dist/chunk-BUSP3OJB.js.map +1 -0
  24. package/dist/chunk-D7TYRPRM.js +7312 -0
  25. package/dist/chunk-D7TYRPRM.js.map +1 -0
  26. package/dist/chunk-DCXRSSBP.js +22 -0
  27. package/dist/chunk-DCXRSSBP.js.map +1 -0
  28. package/dist/chunk-E4VLWIJC.js +2 -0
  29. package/dist/chunk-FFAYUQ5N.js +39 -0
  30. package/dist/chunk-FFAYUQ5N.js.map +1 -0
  31. package/dist/chunk-IB76KGBY.js +2 -0
  32. package/dist/chunk-JMJJEQ3P.js +486 -0
  33. package/dist/chunk-JMJJEQ3P.js.map +1 -0
  34. package/dist/{chunk-N33KUCFP.js → chunk-JTYZRPX5.js} +1 -9
  35. package/dist/chunk-JTYZRPX5.js.map +1 -0
  36. package/dist/{chunk-54WVLTKD.js → chunk-JYOOJCPQ.js} +33 -17
  37. package/dist/chunk-JYOOJCPQ.js.map +1 -0
  38. package/dist/{chunk-F7GAYVWF.js → chunk-KB4DGYIY.js} +91 -9
  39. package/dist/chunk-KB4DGYIY.js.map +1 -0
  40. package/dist/{chunk-ERG2IEWX.js → chunk-KH64DHOY.js} +3 -7413
  41. package/dist/chunk-KH64DHOY.js.map +1 -0
  42. package/dist/chunk-KV4OC4H3.js +498 -0
  43. package/dist/chunk-KV4OC4H3.js.map +1 -0
  44. package/dist/chunk-KYLDNM7H.js +66 -0
  45. package/dist/chunk-KYLDNM7H.js.map +1 -0
  46. package/dist/chunk-LPUQPDC2.js +19 -0
  47. package/dist/chunk-LPUQPDC2.js.map +1 -0
  48. package/dist/chunk-M5XWW7UI.js +97 -0
  49. package/dist/chunk-M5XWW7UI.js.map +1 -0
  50. package/dist/chunk-MHSCMET3.js +275 -0
  51. package/dist/chunk-MHSCMET3.js.map +1 -0
  52. package/dist/chunk-MYX5NCRH.js +45 -0
  53. package/dist/chunk-MYX5NCRH.js.map +1 -0
  54. package/dist/chunk-OXZSXYAT.js +877 -0
  55. package/dist/chunk-OXZSXYAT.js.map +1 -0
  56. package/dist/chunk-PB6TOLRQ.js +35 -0
  57. package/dist/chunk-PB6TOLRQ.js.map +1 -0
  58. package/dist/chunk-PT5IC642.js +162 -0
  59. package/dist/chunk-PT5IC642.js.map +1 -0
  60. package/dist/chunk-QIK2XSDQ.js +187 -0
  61. package/dist/chunk-QIK2XSDQ.js.map +1 -0
  62. package/dist/chunk-RJ6ZQKG5.js +26 -0
  63. package/dist/chunk-RJ6ZQKG5.js.map +1 -0
  64. package/dist/{chunk-4B5RO2YV.js → chunk-TRUJLI6K.js} +29 -43
  65. package/dist/chunk-TRUJLI6K.js.map +1 -0
  66. package/dist/chunk-U3IBO3O3.js +41 -0
  67. package/dist/chunk-U3IBO3O3.js.map +1 -0
  68. package/dist/{chunk-4DYD4HHG.js → chunk-UBZPD4HN.js} +2 -2
  69. package/dist/{chunk-HIN3UVOG.js → chunk-V7XG6V6C.js} +20 -11
  70. package/dist/chunk-V7XG6V6C.js.map +1 -0
  71. package/dist/chunk-WGTCA2NU.js +84 -0
  72. package/dist/chunk-WGTCA2NU.js.map +1 -0
  73. package/dist/{chunk-AHZN4Z34.js → chunk-XNOCTDHF.js} +2 -2
  74. package/dist/chunk-YDN4OM33.js +80 -0
  75. package/dist/chunk-YDN4OM33.js.map +1 -0
  76. package/dist/cli-ODLFRIYS.js +128 -0
  77. package/dist/cli-ODLFRIYS.js.map +1 -0
  78. package/dist/client-EYOTW3JU.js +19 -0
  79. package/dist/client-MXRNQ5FI.js +13 -0
  80. package/dist/{config-IBS6KOLQ.js → config-UR5BSGVX.js} +21 -34
  81. package/dist/config-UR5BSGVX.js.map +1 -0
  82. package/dist/detect-H5OPI7GD.js +17 -0
  83. package/dist/detect-H5OPI7GD.js.map +1 -0
  84. package/dist/detect-providers-Q42OD4OS.js +26 -0
  85. package/dist/detect-providers-Q42OD4OS.js.map +1 -0
  86. package/dist/doctor-JLKTXDEH.js +258 -0
  87. package/dist/doctor-JLKTXDEH.js.map +1 -0
  88. package/dist/executor-ONSDHPGX.js +1441 -0
  89. package/dist/executor-ONSDHPGX.js.map +1 -0
  90. package/dist/init-6GWY345B.js +198 -0
  91. package/dist/init-6GWY345B.js.map +1 -0
  92. package/dist/init-wizard-UONLDYLI.js +294 -0
  93. package/dist/init-wizard-UONLDYLI.js.map +1 -0
  94. package/dist/llm-BV3QNVRD.js +17 -0
  95. package/dist/llm-BV3QNVRD.js.map +1 -0
  96. package/dist/loader-SH67XD54.js +28 -0
  97. package/dist/loader-SH67XD54.js.map +1 -0
  98. package/dist/loader-XVXKZZDH.js +18 -0
  99. package/dist/loader-XVXKZZDH.js.map +1 -0
  100. package/dist/{chunk-F7PGDD2X.js → logs-QZVYF6FP.js} +74 -5
  101. package/dist/logs-QZVYF6FP.js.map +1 -0
  102. package/dist/main-BMCL7CPO.js +4393 -0
  103. package/dist/main-BMCL7CPO.js.map +1 -0
  104. package/dist/openai-embeddings-C265WRNK.js +14 -0
  105. package/dist/openai-embeddings-C265WRNK.js.map +1 -0
  106. package/dist/openrouter-U6VFCRX2.js +14 -0
  107. package/dist/openrouter-U6VFCRX2.js.map +1 -0
  108. package/dist/post-compact-OWFSOITU.js +26 -0
  109. package/dist/post-compact-OWFSOITU.js.map +1 -0
  110. package/dist/post-tool-use-DOUM7CGQ.js +56 -0
  111. package/dist/post-tool-use-DOUM7CGQ.js.map +1 -0
  112. package/dist/post-tool-use-failure-SG3C7PE6.js +28 -0
  113. package/dist/post-tool-use-failure-SG3C7PE6.js.map +1 -0
  114. package/dist/pre-compact-3J33CHXQ.js +25 -0
  115. package/dist/pre-compact-3J33CHXQ.js.map +1 -0
  116. package/dist/provider-check-3WBPZADE.js +12 -0
  117. package/dist/provider-check-3WBPZADE.js.map +1 -0
  118. package/dist/registry-J4XTWARS.js +25 -0
  119. package/dist/registry-J4XTWARS.js.map +1 -0
  120. package/dist/resolution-events-TFEQPVKS.js +12 -0
  121. package/dist/resolution-events-TFEQPVKS.js.map +1 -0
  122. package/dist/resolve-3FEUV462.js +9 -0
  123. package/dist/resolve-3FEUV462.js.map +1 -0
  124. package/dist/{restart-UIP7US4U.js → restart-2VM33WOB.js} +10 -6
  125. package/dist/{restart-UIP7US4U.js.map → restart-2VM33WOB.js.map} +1 -1
  126. package/dist/search-ZGQR5MDE.js +91 -0
  127. package/dist/search-ZGQR5MDE.js.map +1 -0
  128. package/dist/{server-43KSJ65Q.js → server-6KMBJCHZ.js} +267 -524
  129. package/dist/server-6KMBJCHZ.js.map +1 -0
  130. package/dist/session-Z2FXDDG6.js +68 -0
  131. package/dist/session-Z2FXDDG6.js.map +1 -0
  132. package/dist/session-end-FLVX32LE.js +38 -0
  133. package/dist/session-end-FLVX32LE.js.map +1 -0
  134. package/dist/session-start-UCLK7PXE.js +169 -0
  135. package/dist/session-start-UCLK7PXE.js.map +1 -0
  136. package/dist/setup-digest-4KDSXAIV.js +15 -0
  137. package/dist/setup-digest-4KDSXAIV.js.map +1 -0
  138. package/dist/setup-llm-GKMCHURK.js +81 -0
  139. package/dist/setup-llm-GKMCHURK.js.map +1 -0
  140. package/dist/src/agent/definitions/agent.yaml +35 -0
  141. package/dist/src/agent/definitions/tasks/digest-only.yaml +84 -0
  142. package/dist/src/agent/definitions/tasks/extract-only.yaml +87 -0
  143. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +472 -0
  144. package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +92 -0
  145. package/dist/src/agent/definitions/tasks/review-session.yaml +132 -0
  146. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +86 -0
  147. package/dist/src/agent/definitions/tasks/title-summary.yaml +88 -0
  148. package/dist/src/agent/prompts/agent.md +121 -0
  149. package/dist/src/agent/prompts/orchestrator.md +91 -0
  150. package/dist/src/cli.js +1 -8
  151. package/dist/src/cli.js.map +1 -1
  152. package/dist/src/daemon/main.js +1 -8
  153. package/dist/src/daemon/main.js.map +1 -1
  154. package/dist/src/hooks/post-tool-use.js +3 -50
  155. package/dist/src/hooks/post-tool-use.js.map +1 -1
  156. package/dist/src/hooks/session-end.js +3 -32
  157. package/dist/src/hooks/session-end.js.map +1 -1
  158. package/dist/src/hooks/session-start.js +2 -8
  159. package/dist/src/hooks/session-start.js.map +1 -1
  160. package/dist/src/hooks/stop.js +3 -42
  161. package/dist/src/hooks/stop.js.map +1 -1
  162. package/dist/src/hooks/user-prompt-submit.js +3 -53
  163. package/dist/src/hooks/user-prompt-submit.js.map +1 -1
  164. package/dist/src/mcp/server.js +1 -8
  165. package/dist/src/mcp/server.js.map +1 -1
  166. package/dist/src/prompts/digest-system.md +1 -1
  167. package/dist/src/symbionts/manifests/claude-code.yaml +16 -0
  168. package/dist/src/symbionts/manifests/cursor.yaml +14 -0
  169. package/dist/stats-IUJPZSVZ.js +94 -0
  170. package/dist/stats-IUJPZSVZ.js.map +1 -0
  171. package/dist/stop-XRQLLXST.js +42 -0
  172. package/dist/stop-XRQLLXST.js.map +1 -0
  173. package/dist/stop-failure-2CAJJKRG.js +26 -0
  174. package/dist/stop-failure-2CAJJKRG.js.map +1 -0
  175. package/dist/subagent-start-MWWQTZMQ.js +26 -0
  176. package/dist/subagent-start-MWWQTZMQ.js.map +1 -0
  177. package/dist/subagent-stop-PJXYGRXB.js +28 -0
  178. package/dist/subagent-stop-PJXYGRXB.js.map +1 -0
  179. package/dist/task-completed-4LFRJVGI.js +27 -0
  180. package/dist/task-completed-4LFRJVGI.js.map +1 -0
  181. package/dist/ui/assets/index-DZrElonz.js +744 -0
  182. package/dist/ui/assets/index-TkeiYbZB.css +1 -0
  183. package/dist/ui/favicon.svg +7 -7
  184. package/dist/ui/fonts/Inter-Variable.woff2 +0 -0
  185. package/dist/ui/fonts/JetBrainsMono-Variable.woff2 +0 -0
  186. package/dist/ui/fonts/Newsreader-Italic-Variable.woff2 +0 -0
  187. package/dist/ui/fonts/Newsreader-Variable.woff2 +0 -0
  188. package/dist/ui/index.html +2 -2
  189. package/dist/user-prompt-submit-KSM3AR6P.js +59 -0
  190. package/dist/user-prompt-submit-KSM3AR6P.js.map +1 -0
  191. package/dist/{verify-X272WGBD.js → verify-UDAYVX37.js} +17 -22
  192. package/dist/verify-UDAYVX37.js.map +1 -0
  193. package/dist/{version-XE4GYTBV.js → version-KLBN4HZT.js} +3 -4
  194. package/dist/version-KLBN4HZT.js.map +1 -0
  195. package/hooks/hooks.json +82 -5
  196. package/package.json +6 -3
  197. package/skills/myco/SKILL.md +10 -10
  198. package/skills/myco/references/cli-usage.md +15 -13
  199. package/skills/myco/references/vault-status.md +3 -3
  200. package/skills/myco/references/wisdom.md +4 -4
  201. package/skills/myco-curate/SKILL.md +86 -0
  202. package/dist/chunk-4B5RO2YV.js.map +0 -1
  203. package/dist/chunk-4RMSHZE4.js +0 -107
  204. package/dist/chunk-4RMSHZE4.js.map +0 -1
  205. package/dist/chunk-54WVLTKD.js.map +0 -1
  206. package/dist/chunk-5LMRZDH3.js +0 -65
  207. package/dist/chunk-5LMRZDH3.js.map +0 -1
  208. package/dist/chunk-6FQISQNA.js +0 -61
  209. package/dist/chunk-6FQISQNA.js.map +0 -1
  210. package/dist/chunk-DYDBF5W6.js +0 -147
  211. package/dist/chunk-DYDBF5W6.js.map +0 -1
  212. package/dist/chunk-ERG2IEWX.js.map +0 -1
  213. package/dist/chunk-F7GAYVWF.js.map +0 -1
  214. package/dist/chunk-F7PGDD2X.js.map +0 -1
  215. package/dist/chunk-GENQ5QGP.js +0 -37
  216. package/dist/chunk-GENQ5QGP.js.map +0 -1
  217. package/dist/chunk-HIN3UVOG.js.map +0 -1
  218. package/dist/chunk-HYVT345Y.js +0 -159
  219. package/dist/chunk-HYVT345Y.js.map +0 -1
  220. package/dist/chunk-LEK6DEAE.js +0 -113
  221. package/dist/chunk-LEK6DEAE.js.map +0 -1
  222. package/dist/chunk-MDLSAFPP.js +0 -99
  223. package/dist/chunk-MDLSAFPP.js.map +0 -1
  224. package/dist/chunk-N33KUCFP.js.map +0 -1
  225. package/dist/chunk-O6TBHGVO.js +0 -168
  226. package/dist/chunk-O6TBHGVO.js.map +0 -1
  227. package/dist/chunk-OEGZ5YTJ.js +0 -56
  228. package/dist/chunk-OEGZ5YTJ.js.map +0 -1
  229. package/dist/chunk-P723N2LP.js +0 -147
  230. package/dist/chunk-P723N2LP.js.map +0 -1
  231. package/dist/chunk-RGVBGTD6.js +0 -21
  232. package/dist/chunk-RGVBGTD6.js.map +0 -1
  233. package/dist/chunk-TK7A4RX7.js +0 -1085
  234. package/dist/chunk-TK7A4RX7.js.map +0 -1
  235. package/dist/chunk-TWSTAVLO.js +0 -132
  236. package/dist/chunk-TWSTAVLO.js.map +0 -1
  237. package/dist/chunk-V6BJVYNH.js +0 -4423
  238. package/dist/chunk-V6BJVYNH.js.map +0 -1
  239. package/dist/chunk-XH34FX4C.js +0 -43
  240. package/dist/chunk-XH34FX4C.js.map +0 -1
  241. package/dist/chunk-YRIIBPJD.js +0 -86
  242. package/dist/chunk-YRIIBPJD.js.map +0 -1
  243. package/dist/cli-OJYHLO4Y.js +0 -97
  244. package/dist/cli-OJYHLO4Y.js.map +0 -1
  245. package/dist/client-SS3C5MF6.js +0 -12
  246. package/dist/config-IBS6KOLQ.js.map +0 -1
  247. package/dist/curate-4CKEMOPV.js +0 -78
  248. package/dist/curate-4CKEMOPV.js.map +0 -1
  249. package/dist/detect-providers-LFIVJYQO.js +0 -35
  250. package/dist/detect-providers-LFIVJYQO.js.map +0 -1
  251. package/dist/digest-ZLARHLLY.js +0 -85
  252. package/dist/digest-ZLARHLLY.js.map +0 -1
  253. package/dist/init-3LVKVQ4L.js +0 -109
  254. package/dist/init-3LVKVQ4L.js.map +0 -1
  255. package/dist/logs-6CWVP574.js +0 -84
  256. package/dist/logs-6CWVP574.js.map +0 -1
  257. package/dist/main-RB727YRP.js +0 -5836
  258. package/dist/main-RB727YRP.js.map +0 -1
  259. package/dist/rebuild-QWVVCBCZ.js +0 -64
  260. package/dist/rebuild-QWVVCBCZ.js.map +0 -1
  261. package/dist/reprocess-YG3WLUI2.js +0 -79
  262. package/dist/reprocess-YG3WLUI2.js.map +0 -1
  263. package/dist/search-BQLBW5CS.js +0 -120
  264. package/dist/search-BQLBW5CS.js.map +0 -1
  265. package/dist/server-43KSJ65Q.js.map +0 -1
  266. package/dist/session-F326AWCH.js +0 -44
  267. package/dist/session-F326AWCH.js.map +0 -1
  268. package/dist/session-start-6SHGT2AW.js +0 -192
  269. package/dist/session-start-6SHGT2AW.js.map +0 -1
  270. package/dist/setup-digest-X735EZSD.js +0 -15
  271. package/dist/setup-llm-QBSTQO7N.js +0 -15
  272. package/dist/src/prompts/classification.md +0 -43
  273. package/dist/stats-QBLIEFWL.js +0 -58
  274. package/dist/stats-QBLIEFWL.js.map +0 -1
  275. package/dist/templates-XPRBOWCE.js +0 -38
  276. package/dist/templates-XPRBOWCE.js.map +0 -1
  277. package/dist/ui/assets/index-CjWGVHhF.css +0 -1
  278. package/dist/ui/assets/index-Cq-H7wgE.js +0 -369
  279. package/dist/verify-X272WGBD.js.map +0 -1
  280. package/skills/setup/SKILL.md +0 -174
  281. package/skills/setup/references/model-recommendations.md +0 -83
  282. /package/dist/{client-SS3C5MF6.js.map → chunk-E4VLWIJC.js.map} +0 -0
  283. /package/dist/{setup-digest-X735EZSD.js.map → chunk-IB76KGBY.js.map} +0 -0
  284. /package/dist/{chunk-4DYD4HHG.js.map → chunk-UBZPD4HN.js.map} +0 -0
  285. /package/dist/{chunk-AHZN4Z34.js.map → chunk-XNOCTDHF.js.map} +0 -0
  286. /package/dist/{setup-llm-QBSTQO7N.js.map → client-EYOTW3JU.js.map} +0 -0
  287. /package/dist/{version-XE4GYTBV.js.map → client-MXRNQ5FI.js.map} +0 -0
@@ -1,84 +0,0 @@
1
- import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
- import {
3
- DEFAULT_LOG_TAIL,
4
- matchesFilter,
5
- queryLogs
6
- } from "./chunk-F7PGDD2X.js";
7
- import {
8
- LEVEL_ORDER
9
- } from "./chunk-O6TBHGVO.js";
10
- import {
11
- formatLogLine,
12
- parseIntFlag,
13
- parseStringFlag
14
- } from "./chunk-SAKJMNSR.js";
15
- import "./chunk-PZUWP5VK.js";
16
-
17
- // src/cli/logs.ts
18
- import fs from "fs";
19
- import path from "path";
20
- var FOLLOW_POLL_INTERVAL_MS = 500;
21
- function run(args, vaultDir) {
22
- const logDir = path.join(vaultDir, "logs");
23
- const follow = args.includes("--follow") || args.includes("-f");
24
- const limit = parseIntFlag(args, "--tail", "-n") ?? DEFAULT_LOG_TAIL;
25
- const rawLevel = parseStringFlag(args, "--level", "-l");
26
- if (rawLevel && !(rawLevel in LEVEL_ORDER)) {
27
- console.error(`Invalid level: ${rawLevel}. Valid levels: ${Object.keys(LEVEL_ORDER).join(", ")}`);
28
- process.exit(1);
29
- }
30
- const level = rawLevel;
31
- const component = parseStringFlag(args, "--component", "-c");
32
- const since = parseStringFlag(args, "--since");
33
- const until = parseStringFlag(args, "--until");
34
- const result = queryLogs(logDir, { limit, level, component, since, until });
35
- for (const e of result.entries) {
36
- process.stdout.write(formatLogLine(e) + "\n");
37
- }
38
- if (result.truncated) {
39
- process.stdout.write(` ... ${result.total - result.entries.length} earlier entries omitted
40
- `);
41
- }
42
- if (!follow) return;
43
- const followFilter = { level, component, until };
44
- const logPath = path.join(logDir, "daemon.log");
45
- let offset = 0;
46
- try {
47
- offset = fs.statSync(logPath).size;
48
- } catch {
49
- }
50
- fs.watchFile(logPath, { interval: FOLLOW_POLL_INTERVAL_MS }, (curr, prev) => {
51
- if (curr.size < prev.size || curr.ino !== prev.ino) {
52
- offset = 0;
53
- }
54
- if (curr.size <= offset) return;
55
- try {
56
- const fd = fs.openSync(logPath, "r");
57
- const buf = Buffer.alloc(curr.size - offset);
58
- fs.readSync(fd, buf, 0, buf.length, offset);
59
- fs.closeSync(fd);
60
- const text = buf.toString("utf-8");
61
- const lastNewline = text.lastIndexOf("\n");
62
- if (lastNewline < 0) return;
63
- offset += Buffer.byteLength(text.slice(0, lastNewline + 1));
64
- for (const line of text.slice(0, lastNewline).split("\n")) {
65
- if (!line.trim()) continue;
66
- try {
67
- const e = JSON.parse(line);
68
- if (!matchesFilter(e, followFilter)) continue;
69
- process.stdout.write(formatLogLine(e) + "\n");
70
- } catch {
71
- }
72
- }
73
- } catch {
74
- }
75
- });
76
- process.on("SIGINT", () => {
77
- fs.unwatchFile(logPath);
78
- process.exit(0);
79
- });
80
- }
81
- export {
82
- run
83
- };
84
- //# sourceMappingURL=logs-6CWVP574.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/logs.ts"],"sourcesContent":["import { queryLogs, matchesFilter, DEFAULT_LOG_TAIL, LEVEL_ORDER } from '../logs/reader.js';\nimport type { LogEntry, LogLevel } from '../logs/reader.js';\nimport { formatLogLine, parseIntFlag, parseStringFlag } from '../logs/format.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\n/** Polling interval for follow mode (milliseconds). */\nconst FOLLOW_POLL_INTERVAL_MS = 500;\n\nexport function run(args: string[], vaultDir: string): void {\n const logDir = path.join(vaultDir, 'logs');\n const follow = args.includes('--follow') || args.includes('-f');\n const limit = parseIntFlag(args, '--tail', '-n') ?? DEFAULT_LOG_TAIL;\n const rawLevel = parseStringFlag(args, '--level', '-l');\n if (rawLevel && !(rawLevel in LEVEL_ORDER)) {\n console.error(`Invalid level: ${rawLevel}. Valid levels: ${Object.keys(LEVEL_ORDER).join(', ')}`);\n process.exit(1);\n }\n const level = rawLevel as LogLevel | undefined;\n const component = parseStringFlag(args, '--component', '-c');\n const since = parseStringFlag(args, '--since');\n const until = parseStringFlag(args, '--until');\n\n // Show initial tail\n const result = queryLogs(logDir, { limit, level, component, since, until });\n for (const e of result.entries) {\n process.stdout.write(formatLogLine(e) + '\\n');\n }\n if (result.truncated) {\n process.stdout.write(` ... ${result.total - result.entries.length} earlier entries omitted\\n`);\n }\n\n if (!follow) return;\n\n // Follow mode: watch for new appends via stat-based polling.\n // --since is intentionally not applied to streamed lines (only the initial tail).\n const followFilter = { level, component, until };\n const logPath = path.join(logDir, 'daemon.log');\n let offset = 0;\n try {\n offset = fs.statSync(logPath).size;\n } catch {\n // File doesn't exist yet — start from 0\n }\n\n fs.watchFile(logPath, { interval: FOLLOW_POLL_INTERVAL_MS }, (curr, prev) => {\n if (curr.size < prev.size || curr.ino !== prev.ino) {\n // Rotation detected — reset to beginning of new file\n offset = 0;\n }\n if (curr.size <= offset) return;\n\n try {\n const fd = fs.openSync(logPath, 'r');\n const buf = Buffer.alloc(curr.size - offset);\n fs.readSync(fd, buf, 0, buf.length, offset);\n fs.closeSync(fd);\n\n const text = buf.toString('utf-8');\n // Only advance offset past complete lines to avoid losing partial writes\n const lastNewline = text.lastIndexOf('\\n');\n if (lastNewline < 0) return; // no complete lines yet\n offset += Buffer.byteLength(text.slice(0, lastNewline + 1));\n\n for (const line of text.slice(0, lastNewline).split('\\n')) {\n if (!line.trim()) continue;\n try {\n const e = JSON.parse(line) as LogEntry;\n if (!matchesFilter(e, followFilter)) continue;\n process.stdout.write(formatLogLine(e) + '\\n');\n } catch {\n // Malformed line\n }\n }\n } catch {\n // File read error — skip this cycle\n }\n });\n\n // fs.watchFile with persistent: true (default) keeps the event loop alive.\n // SIGINT (Ctrl+C) cleans up the watcher.\n process.on('SIGINT', () => {\n fs.unwatchFile(logPath);\n process.exit(0);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAGA,OAAO,QAAQ;AACf,OAAO,UAAU;AAGjB,IAAM,0BAA0B;AAEzB,SAAS,IAAI,MAAgB,UAAwB;AAC1D,QAAM,SAAS,KAAK,KAAK,UAAU,MAAM;AACzC,QAAM,SAAS,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS,IAAI;AAC9D,QAAM,QAAQ,aAAa,MAAM,UAAU,IAAI,KAAK;AACpD,QAAM,WAAW,gBAAgB,MAAM,WAAW,IAAI;AACtD,MAAI,YAAY,EAAE,YAAY,cAAc;AAC1C,YAAQ,MAAM,kBAAkB,QAAQ,mBAAmB,OAAO,KAAK,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE;AAChG,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,QAAQ;AACd,QAAM,YAAY,gBAAgB,MAAM,eAAe,IAAI;AAC3D,QAAM,QAAQ,gBAAgB,MAAM,SAAS;AAC7C,QAAM,QAAQ,gBAAgB,MAAM,SAAS;AAG7C,QAAM,SAAS,UAAU,QAAQ,EAAE,OAAO,OAAO,WAAW,OAAO,MAAM,CAAC;AAC1E,aAAW,KAAK,OAAO,SAAS;AAC9B,YAAQ,OAAO,MAAM,cAAc,CAAC,IAAI,IAAI;AAAA,EAC9C;AACA,MAAI,OAAO,WAAW;AACpB,YAAQ,OAAO,MAAM,SAAS,OAAO,QAAQ,OAAO,QAAQ,MAAM;AAAA,CAA4B;AAAA,EAChG;AAEA,MAAI,CAAC,OAAQ;AAIb,QAAM,eAAe,EAAE,OAAO,WAAW,MAAM;AAC/C,QAAM,UAAU,KAAK,KAAK,QAAQ,YAAY;AAC9C,MAAI,SAAS;AACb,MAAI;AACF,aAAS,GAAG,SAAS,OAAO,EAAE;AAAA,EAChC,QAAQ;AAAA,EAER;AAEA,KAAG,UAAU,SAAS,EAAE,UAAU,wBAAwB,GAAG,CAAC,MAAM,SAAS;AAC3E,QAAI,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAElD,eAAS;AAAA,IACX;AACA,QAAI,KAAK,QAAQ,OAAQ;AAEzB,QAAI;AACF,YAAM,KAAK,GAAG,SAAS,SAAS,GAAG;AACnC,YAAM,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM;AAC3C,SAAG,SAAS,IAAI,KAAK,GAAG,IAAI,QAAQ,MAAM;AAC1C,SAAG,UAAU,EAAE;AAEf,YAAM,OAAO,IAAI,SAAS,OAAO;AAEjC,YAAM,cAAc,KAAK,YAAY,IAAI;AACzC,UAAI,cAAc,EAAG;AACrB,gBAAU,OAAO,WAAW,KAAK,MAAM,GAAG,cAAc,CAAC,CAAC;AAE1D,iBAAW,QAAQ,KAAK,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,GAAG;AACzD,YAAI,CAAC,KAAK,KAAK,EAAG;AAClB,YAAI;AACF,gBAAM,IAAI,KAAK,MAAM,IAAI;AACzB,cAAI,CAAC,cAAc,GAAG,YAAY,EAAG;AACrC,kBAAQ,OAAO,MAAM,cAAc,CAAC,IAAI,IAAI;AAAA,QAC9C,QAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF,CAAC;AAID,UAAQ,GAAG,UAAU,MAAM;AACzB,OAAG,YAAY,OAAO;AACtB,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH;","names":[]}