@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.
- package/.claude-plugin/marketplace.json +2 -3
- package/.claude-plugin/plugin.json +3 -3
- package/CONTRIBUTING.md +37 -30
- package/README.md +64 -28
- package/bin/myco-run +2 -0
- package/dist/agent-run-EFICNTAU.js +34 -0
- package/dist/agent-run-EFICNTAU.js.map +1 -0
- package/dist/agent-tasks-RXJ7Z5NG.js +180 -0
- package/dist/agent-tasks-RXJ7Z5NG.js.map +1 -0
- package/dist/chunk-2T7RPVPP.js +116 -0
- package/dist/chunk-2T7RPVPP.js.map +1 -0
- package/dist/chunk-3K5WGSJ4.js +165 -0
- package/dist/chunk-3K5WGSJ4.js.map +1 -0
- package/dist/chunk-46PWOKSI.js +26 -0
- package/dist/chunk-46PWOKSI.js.map +1 -0
- package/dist/chunk-4LPQ26CK.js +277 -0
- package/dist/chunk-4LPQ26CK.js.map +1 -0
- package/dist/chunk-5PEUFJ6U.js +92 -0
- package/dist/chunk-5PEUFJ6U.js.map +1 -0
- package/dist/chunk-5VZ52A4T.js +136 -0
- package/dist/chunk-5VZ52A4T.js.map +1 -0
- package/dist/chunk-BUSP3OJB.js +103 -0
- package/dist/chunk-BUSP3OJB.js.map +1 -0
- package/dist/chunk-D7TYRPRM.js +7312 -0
- package/dist/chunk-D7TYRPRM.js.map +1 -0
- package/dist/chunk-DCXRSSBP.js +22 -0
- package/dist/chunk-DCXRSSBP.js.map +1 -0
- package/dist/chunk-E4VLWIJC.js +2 -0
- package/dist/chunk-FFAYUQ5N.js +39 -0
- package/dist/chunk-FFAYUQ5N.js.map +1 -0
- package/dist/chunk-IB76KGBY.js +2 -0
- package/dist/chunk-JMJJEQ3P.js +486 -0
- package/dist/chunk-JMJJEQ3P.js.map +1 -0
- package/dist/{chunk-N33KUCFP.js → chunk-JTYZRPX5.js} +1 -9
- package/dist/chunk-JTYZRPX5.js.map +1 -0
- package/dist/{chunk-54WVLTKD.js → chunk-JYOOJCPQ.js} +33 -17
- package/dist/chunk-JYOOJCPQ.js.map +1 -0
- package/dist/{chunk-F7GAYVWF.js → chunk-KB4DGYIY.js} +91 -9
- package/dist/chunk-KB4DGYIY.js.map +1 -0
- package/dist/{chunk-ERG2IEWX.js → chunk-KH64DHOY.js} +3 -7413
- package/dist/chunk-KH64DHOY.js.map +1 -0
- package/dist/chunk-KV4OC4H3.js +498 -0
- package/dist/chunk-KV4OC4H3.js.map +1 -0
- package/dist/chunk-KYLDNM7H.js +66 -0
- package/dist/chunk-KYLDNM7H.js.map +1 -0
- package/dist/chunk-LPUQPDC2.js +19 -0
- package/dist/chunk-LPUQPDC2.js.map +1 -0
- package/dist/chunk-M5XWW7UI.js +97 -0
- package/dist/chunk-M5XWW7UI.js.map +1 -0
- package/dist/chunk-MHSCMET3.js +275 -0
- package/dist/chunk-MHSCMET3.js.map +1 -0
- package/dist/chunk-MYX5NCRH.js +45 -0
- package/dist/chunk-MYX5NCRH.js.map +1 -0
- package/dist/chunk-OXZSXYAT.js +877 -0
- package/dist/chunk-OXZSXYAT.js.map +1 -0
- package/dist/chunk-PB6TOLRQ.js +35 -0
- package/dist/chunk-PB6TOLRQ.js.map +1 -0
- package/dist/chunk-PT5IC642.js +162 -0
- package/dist/chunk-PT5IC642.js.map +1 -0
- package/dist/chunk-QIK2XSDQ.js +187 -0
- package/dist/chunk-QIK2XSDQ.js.map +1 -0
- package/dist/chunk-RJ6ZQKG5.js +26 -0
- package/dist/chunk-RJ6ZQKG5.js.map +1 -0
- package/dist/{chunk-4B5RO2YV.js → chunk-TRUJLI6K.js} +29 -43
- package/dist/chunk-TRUJLI6K.js.map +1 -0
- package/dist/chunk-U3IBO3O3.js +41 -0
- package/dist/chunk-U3IBO3O3.js.map +1 -0
- package/dist/{chunk-4DYD4HHG.js → chunk-UBZPD4HN.js} +2 -2
- package/dist/{chunk-HIN3UVOG.js → chunk-V7XG6V6C.js} +20 -11
- package/dist/chunk-V7XG6V6C.js.map +1 -0
- package/dist/chunk-WGTCA2NU.js +84 -0
- package/dist/chunk-WGTCA2NU.js.map +1 -0
- package/dist/{chunk-AHZN4Z34.js → chunk-XNOCTDHF.js} +2 -2
- package/dist/chunk-YDN4OM33.js +80 -0
- package/dist/chunk-YDN4OM33.js.map +1 -0
- package/dist/cli-ODLFRIYS.js +128 -0
- package/dist/cli-ODLFRIYS.js.map +1 -0
- package/dist/client-EYOTW3JU.js +19 -0
- package/dist/client-MXRNQ5FI.js +13 -0
- package/dist/{config-IBS6KOLQ.js → config-UR5BSGVX.js} +21 -34
- package/dist/config-UR5BSGVX.js.map +1 -0
- package/dist/detect-H5OPI7GD.js +17 -0
- package/dist/detect-H5OPI7GD.js.map +1 -0
- package/dist/detect-providers-Q42OD4OS.js +26 -0
- package/dist/detect-providers-Q42OD4OS.js.map +1 -0
- package/dist/doctor-JLKTXDEH.js +258 -0
- package/dist/doctor-JLKTXDEH.js.map +1 -0
- package/dist/executor-ONSDHPGX.js +1441 -0
- package/dist/executor-ONSDHPGX.js.map +1 -0
- package/dist/init-6GWY345B.js +198 -0
- package/dist/init-6GWY345B.js.map +1 -0
- package/dist/init-wizard-UONLDYLI.js +294 -0
- package/dist/init-wizard-UONLDYLI.js.map +1 -0
- package/dist/llm-BV3QNVRD.js +17 -0
- package/dist/llm-BV3QNVRD.js.map +1 -0
- package/dist/loader-SH67XD54.js +28 -0
- package/dist/loader-SH67XD54.js.map +1 -0
- package/dist/loader-XVXKZZDH.js +18 -0
- package/dist/loader-XVXKZZDH.js.map +1 -0
- package/dist/{chunk-F7PGDD2X.js → logs-QZVYF6FP.js} +74 -5
- package/dist/logs-QZVYF6FP.js.map +1 -0
- package/dist/main-BMCL7CPO.js +4393 -0
- package/dist/main-BMCL7CPO.js.map +1 -0
- package/dist/openai-embeddings-C265WRNK.js +14 -0
- package/dist/openai-embeddings-C265WRNK.js.map +1 -0
- package/dist/openrouter-U6VFCRX2.js +14 -0
- package/dist/openrouter-U6VFCRX2.js.map +1 -0
- package/dist/post-compact-OWFSOITU.js +26 -0
- package/dist/post-compact-OWFSOITU.js.map +1 -0
- package/dist/post-tool-use-DOUM7CGQ.js +56 -0
- package/dist/post-tool-use-DOUM7CGQ.js.map +1 -0
- package/dist/post-tool-use-failure-SG3C7PE6.js +28 -0
- package/dist/post-tool-use-failure-SG3C7PE6.js.map +1 -0
- package/dist/pre-compact-3J33CHXQ.js +25 -0
- package/dist/pre-compact-3J33CHXQ.js.map +1 -0
- package/dist/provider-check-3WBPZADE.js +12 -0
- package/dist/provider-check-3WBPZADE.js.map +1 -0
- package/dist/registry-J4XTWARS.js +25 -0
- package/dist/registry-J4XTWARS.js.map +1 -0
- package/dist/resolution-events-TFEQPVKS.js +12 -0
- package/dist/resolution-events-TFEQPVKS.js.map +1 -0
- package/dist/resolve-3FEUV462.js +9 -0
- package/dist/resolve-3FEUV462.js.map +1 -0
- package/dist/{restart-UIP7US4U.js → restart-2VM33WOB.js} +10 -6
- package/dist/{restart-UIP7US4U.js.map → restart-2VM33WOB.js.map} +1 -1
- package/dist/search-ZGQR5MDE.js +91 -0
- package/dist/search-ZGQR5MDE.js.map +1 -0
- package/dist/{server-43KSJ65Q.js → server-6KMBJCHZ.js} +267 -524
- package/dist/server-6KMBJCHZ.js.map +1 -0
- package/dist/session-Z2FXDDG6.js +68 -0
- package/dist/session-Z2FXDDG6.js.map +1 -0
- package/dist/session-end-FLVX32LE.js +38 -0
- package/dist/session-end-FLVX32LE.js.map +1 -0
- package/dist/session-start-UCLK7PXE.js +169 -0
- package/dist/session-start-UCLK7PXE.js.map +1 -0
- package/dist/setup-digest-4KDSXAIV.js +15 -0
- package/dist/setup-digest-4KDSXAIV.js.map +1 -0
- package/dist/setup-llm-GKMCHURK.js +81 -0
- package/dist/setup-llm-GKMCHURK.js.map +1 -0
- package/dist/src/agent/definitions/agent.yaml +35 -0
- package/dist/src/agent/definitions/tasks/digest-only.yaml +84 -0
- package/dist/src/agent/definitions/tasks/extract-only.yaml +87 -0
- package/dist/src/agent/definitions/tasks/full-intelligence.yaml +472 -0
- package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +92 -0
- package/dist/src/agent/definitions/tasks/review-session.yaml +132 -0
- package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +86 -0
- package/dist/src/agent/definitions/tasks/title-summary.yaml +88 -0
- package/dist/src/agent/prompts/agent.md +121 -0
- package/dist/src/agent/prompts/orchestrator.md +91 -0
- package/dist/src/cli.js +1 -8
- package/dist/src/cli.js.map +1 -1
- package/dist/src/daemon/main.js +1 -8
- package/dist/src/daemon/main.js.map +1 -1
- package/dist/src/hooks/post-tool-use.js +3 -50
- package/dist/src/hooks/post-tool-use.js.map +1 -1
- package/dist/src/hooks/session-end.js +3 -32
- package/dist/src/hooks/session-end.js.map +1 -1
- package/dist/src/hooks/session-start.js +2 -8
- package/dist/src/hooks/session-start.js.map +1 -1
- package/dist/src/hooks/stop.js +3 -42
- package/dist/src/hooks/stop.js.map +1 -1
- package/dist/src/hooks/user-prompt-submit.js +3 -53
- package/dist/src/hooks/user-prompt-submit.js.map +1 -1
- package/dist/src/mcp/server.js +1 -8
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/prompts/digest-system.md +1 -1
- package/dist/src/symbionts/manifests/claude-code.yaml +16 -0
- package/dist/src/symbionts/manifests/cursor.yaml +14 -0
- package/dist/stats-IUJPZSVZ.js +94 -0
- package/dist/stats-IUJPZSVZ.js.map +1 -0
- package/dist/stop-XRQLLXST.js +42 -0
- package/dist/stop-XRQLLXST.js.map +1 -0
- package/dist/stop-failure-2CAJJKRG.js +26 -0
- package/dist/stop-failure-2CAJJKRG.js.map +1 -0
- package/dist/subagent-start-MWWQTZMQ.js +26 -0
- package/dist/subagent-start-MWWQTZMQ.js.map +1 -0
- package/dist/subagent-stop-PJXYGRXB.js +28 -0
- package/dist/subagent-stop-PJXYGRXB.js.map +1 -0
- package/dist/task-completed-4LFRJVGI.js +27 -0
- package/dist/task-completed-4LFRJVGI.js.map +1 -0
- package/dist/ui/assets/index-DZrElonz.js +744 -0
- package/dist/ui/assets/index-TkeiYbZB.css +1 -0
- package/dist/ui/favicon.svg +7 -7
- package/dist/ui/fonts/Inter-Variable.woff2 +0 -0
- package/dist/ui/fonts/JetBrainsMono-Variable.woff2 +0 -0
- package/dist/ui/fonts/Newsreader-Italic-Variable.woff2 +0 -0
- package/dist/ui/fonts/Newsreader-Variable.woff2 +0 -0
- package/dist/ui/index.html +2 -2
- package/dist/user-prompt-submit-KSM3AR6P.js +59 -0
- package/dist/user-prompt-submit-KSM3AR6P.js.map +1 -0
- package/dist/{verify-X272WGBD.js → verify-UDAYVX37.js} +17 -22
- package/dist/verify-UDAYVX37.js.map +1 -0
- package/dist/{version-XE4GYTBV.js → version-KLBN4HZT.js} +3 -4
- package/dist/version-KLBN4HZT.js.map +1 -0
- package/hooks/hooks.json +82 -5
- package/package.json +6 -3
- package/skills/myco/SKILL.md +10 -10
- package/skills/myco/references/cli-usage.md +15 -13
- package/skills/myco/references/vault-status.md +3 -3
- package/skills/myco/references/wisdom.md +4 -4
- package/skills/myco-curate/SKILL.md +86 -0
- package/dist/chunk-4B5RO2YV.js.map +0 -1
- package/dist/chunk-4RMSHZE4.js +0 -107
- package/dist/chunk-4RMSHZE4.js.map +0 -1
- package/dist/chunk-54WVLTKD.js.map +0 -1
- package/dist/chunk-5LMRZDH3.js +0 -65
- package/dist/chunk-5LMRZDH3.js.map +0 -1
- package/dist/chunk-6FQISQNA.js +0 -61
- package/dist/chunk-6FQISQNA.js.map +0 -1
- package/dist/chunk-DYDBF5W6.js +0 -147
- package/dist/chunk-DYDBF5W6.js.map +0 -1
- package/dist/chunk-ERG2IEWX.js.map +0 -1
- package/dist/chunk-F7GAYVWF.js.map +0 -1
- package/dist/chunk-F7PGDD2X.js.map +0 -1
- package/dist/chunk-GENQ5QGP.js +0 -37
- package/dist/chunk-GENQ5QGP.js.map +0 -1
- package/dist/chunk-HIN3UVOG.js.map +0 -1
- package/dist/chunk-HYVT345Y.js +0 -159
- package/dist/chunk-HYVT345Y.js.map +0 -1
- package/dist/chunk-LEK6DEAE.js +0 -113
- package/dist/chunk-LEK6DEAE.js.map +0 -1
- package/dist/chunk-MDLSAFPP.js +0 -99
- package/dist/chunk-MDLSAFPP.js.map +0 -1
- package/dist/chunk-N33KUCFP.js.map +0 -1
- package/dist/chunk-O6TBHGVO.js +0 -168
- package/dist/chunk-O6TBHGVO.js.map +0 -1
- package/dist/chunk-OEGZ5YTJ.js +0 -56
- package/dist/chunk-OEGZ5YTJ.js.map +0 -1
- package/dist/chunk-P723N2LP.js +0 -147
- package/dist/chunk-P723N2LP.js.map +0 -1
- package/dist/chunk-RGVBGTD6.js +0 -21
- package/dist/chunk-RGVBGTD6.js.map +0 -1
- package/dist/chunk-TK7A4RX7.js +0 -1085
- package/dist/chunk-TK7A4RX7.js.map +0 -1
- package/dist/chunk-TWSTAVLO.js +0 -132
- package/dist/chunk-TWSTAVLO.js.map +0 -1
- package/dist/chunk-V6BJVYNH.js +0 -4423
- package/dist/chunk-V6BJVYNH.js.map +0 -1
- package/dist/chunk-XH34FX4C.js +0 -43
- package/dist/chunk-XH34FX4C.js.map +0 -1
- package/dist/chunk-YRIIBPJD.js +0 -86
- package/dist/chunk-YRIIBPJD.js.map +0 -1
- package/dist/cli-OJYHLO4Y.js +0 -97
- package/dist/cli-OJYHLO4Y.js.map +0 -1
- package/dist/client-SS3C5MF6.js +0 -12
- package/dist/config-IBS6KOLQ.js.map +0 -1
- package/dist/curate-4CKEMOPV.js +0 -78
- package/dist/curate-4CKEMOPV.js.map +0 -1
- package/dist/detect-providers-LFIVJYQO.js +0 -35
- package/dist/detect-providers-LFIVJYQO.js.map +0 -1
- package/dist/digest-ZLARHLLY.js +0 -85
- package/dist/digest-ZLARHLLY.js.map +0 -1
- package/dist/init-3LVKVQ4L.js +0 -109
- package/dist/init-3LVKVQ4L.js.map +0 -1
- package/dist/logs-6CWVP574.js +0 -84
- package/dist/logs-6CWVP574.js.map +0 -1
- package/dist/main-RB727YRP.js +0 -5836
- package/dist/main-RB727YRP.js.map +0 -1
- package/dist/rebuild-QWVVCBCZ.js +0 -64
- package/dist/rebuild-QWVVCBCZ.js.map +0 -1
- package/dist/reprocess-YG3WLUI2.js +0 -79
- package/dist/reprocess-YG3WLUI2.js.map +0 -1
- package/dist/search-BQLBW5CS.js +0 -120
- package/dist/search-BQLBW5CS.js.map +0 -1
- package/dist/server-43KSJ65Q.js.map +0 -1
- package/dist/session-F326AWCH.js +0 -44
- package/dist/session-F326AWCH.js.map +0 -1
- package/dist/session-start-6SHGT2AW.js +0 -192
- package/dist/session-start-6SHGT2AW.js.map +0 -1
- package/dist/setup-digest-X735EZSD.js +0 -15
- package/dist/setup-llm-QBSTQO7N.js +0 -15
- package/dist/src/prompts/classification.md +0 -43
- package/dist/stats-QBLIEFWL.js +0 -58
- package/dist/stats-QBLIEFWL.js.map +0 -1
- package/dist/templates-XPRBOWCE.js +0 -38
- package/dist/templates-XPRBOWCE.js.map +0 -1
- package/dist/ui/assets/index-CjWGVHhF.css +0 -1
- package/dist/ui/assets/index-Cq-H7wgE.js +0 -369
- package/dist/verify-X272WGBD.js.map +0 -1
- package/skills/setup/SKILL.md +0 -174
- package/skills/setup/references/model-recommendations.md +0 -83
- /package/dist/{client-SS3C5MF6.js.map → chunk-E4VLWIJC.js.map} +0 -0
- /package/dist/{setup-digest-X735EZSD.js.map → chunk-IB76KGBY.js.map} +0 -0
- /package/dist/{chunk-4DYD4HHG.js.map → chunk-UBZPD4HN.js.map} +0 -0
- /package/dist/{chunk-AHZN4Z34.js.map → chunk-XNOCTDHF.js.map} +0 -0
- /package/dist/{setup-llm-QBSTQO7N.js.map → client-EYOTW3JU.js.map} +0 -0
- /package/dist/{version-XE4GYTBV.js.map → client-MXRNQ5FI.js.map} +0 -0
package/dist/logs-6CWVP574.js
DELETED
|
@@ -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":[]}
|