@goondocks/myco 0.20.2 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/myco-run +68 -7
- package/dist/agent-eval-YK2VP2S4.js +356 -0
- package/dist/agent-eval-YK2VP2S4.js.map +1 -0
- package/dist/{agent-run-X25Q2A6T.js → agent-run-GEJBD2YD.js} +10 -8
- package/dist/{agent-run-X25Q2A6T.js.map → agent-run-GEJBD2YD.js.map} +1 -1
- package/dist/{agent-tasks-7B6OFERB.js → agent-tasks-5XSRGTRX.js} +10 -8
- package/dist/{agent-tasks-7B6OFERB.js.map → agent-tasks-5XSRGTRX.js.map} +1 -1
- package/dist/{chunk-OD4AA7PV.js → chunk-53RPGOEN.js} +56 -8
- package/dist/chunk-53RPGOEN.js.map +1 -0
- package/dist/chunk-54SXG5HF.js +26 -0
- package/dist/chunk-54SXG5HF.js.map +1 -0
- package/dist/{chunk-XATDZX7U.js → chunk-6ALVMIB4.js} +19 -5
- package/dist/{chunk-XATDZX7U.js.map → chunk-6ALVMIB4.js.map} +1 -1
- package/dist/{chunk-FLLBJLHM.js → chunk-6C6QZ4PM.js} +9 -5
- package/dist/chunk-6C6QZ4PM.js.map +1 -0
- package/dist/{chunk-CCRGY3QW.js → chunk-AUIXX33A.js} +24 -95
- package/dist/chunk-AUIXX33A.js.map +1 -0
- package/dist/chunk-CISWUP5W.js +101 -0
- package/dist/chunk-CISWUP5W.js.map +1 -0
- package/dist/{chunk-MYOZLMB2.js → chunk-DTWUHHFI.js} +576 -20
- package/dist/chunk-DTWUHHFI.js.map +1 -0
- package/dist/chunk-EEOJWLMP.js +582 -0
- package/dist/chunk-EEOJWLMP.js.map +1 -0
- package/dist/{chunk-XG5RRUYF.js → chunk-ENZR5NG7.js} +2 -2
- package/dist/{chunk-6RFZWV4R.js → chunk-FCJ5JV54.js} +1 -1
- package/dist/{chunk-6RFZWV4R.js.map → chunk-FCJ5JV54.js.map} +1 -1
- package/dist/{chunk-US4LNCAT.js → chunk-IPPMYQ2Y.js} +5 -1
- package/dist/chunk-IPPMYQ2Y.js.map +1 -0
- package/dist/{chunk-VVNL26WX.js → chunk-KTTSXYEK.js} +22 -10
- package/dist/chunk-KTTSXYEK.js.map +1 -0
- package/dist/chunk-LQIPXVDH.js +17 -0
- package/dist/chunk-LQIPXVDH.js.map +1 -0
- package/dist/{chunk-DCSGJ7W4.js → chunk-N2DGFACQ.js} +3 -3
- package/dist/chunk-N7Z3LUEZ.js +858 -0
- package/dist/chunk-N7Z3LUEZ.js.map +1 -0
- package/dist/{chunk-2PDWCDKY.js → chunk-NFO7BRCO.js} +10 -7
- package/dist/{chunk-2PDWCDKY.js.map → chunk-NFO7BRCO.js.map} +1 -1
- package/dist/{chunk-Q36VMZST.js → chunk-OTQH5KZW.js} +89 -38
- package/dist/chunk-OTQH5KZW.js.map +1 -0
- package/dist/chunk-OUJSQSKE.js +113 -0
- package/dist/chunk-OUJSQSKE.js.map +1 -0
- package/dist/chunk-OZ3FBAK5.js +50 -0
- package/dist/chunk-OZ3FBAK5.js.map +1 -0
- package/dist/chunk-QATYARI5.js +408 -0
- package/dist/chunk-QATYARI5.js.map +1 -0
- package/dist/{chunk-KESLPBKV.js → chunk-QDLVIW2O.js} +4 -4
- package/dist/{chunk-5XIVBO25.js → chunk-QLLBJEM7.js} +6 -2
- package/dist/chunk-QLLBJEM7.js.map +1 -0
- package/dist/{chunk-EVDQKYCG.js → chunk-RQSJLWP4.js} +13 -2
- package/dist/chunk-RQSJLWP4.js.map +1 -0
- package/dist/{chunk-BPRIYNLE.js → chunk-TKAJ3JVF.js} +3 -3
- package/dist/chunk-TSM6VESW.js +25 -0
- package/dist/chunk-TSM6VESW.js.map +1 -0
- package/dist/{chunk-6X2ERTQV.js → chunk-USVFEWYL.js} +6 -4
- package/dist/{chunk-6X2ERTQV.js.map → chunk-USVFEWYL.js.map} +1 -1
- package/dist/{chunk-JZGN33AY.js → chunk-VRI56337.js} +4 -4
- package/dist/chunk-X2IRGXGF.js +14103 -0
- package/dist/chunk-X2IRGXGF.js.map +1 -0
- package/dist/{chunk-FMRZ26U5.js → chunk-X3IGT5RV.js} +5 -2
- package/dist/{chunk-FMRZ26U5.js.map → chunk-X3IGT5RV.js.map} +1 -1
- package/dist/{chunk-KHT24OWC.js → chunk-YDUOSRGD.js} +8 -94
- package/dist/{chunk-KHT24OWC.js.map → chunk-YDUOSRGD.js.map} +1 -1
- package/dist/{chunk-NGROSFOH.js → chunk-Z66IT5KL.js} +14 -9
- package/dist/chunk-Z66IT5KL.js.map +1 -0
- package/dist/{cli-GGPWH4UO.js → cli-HSLIG7EX.js} +50 -43
- package/dist/cli-HSLIG7EX.js.map +1 -0
- package/dist/{client-YXQUTXVZ.js → client-Z43DNLJH.js} +4 -4
- package/dist/{config-OMCYHG2S.js → config-VC4ACP42.js} +6 -4
- package/dist/{config-OMCYHG2S.js.map → config-VC4ACP42.js.map} +1 -1
- package/dist/{detect-PXNM6TA7.js → detect-7NUD5B5R.js} +2 -2
- package/dist/{detect-providers-5KOPZ7J2.js → detect-providers-ILLQZROY.js} +4 -4
- package/dist/{doctor-5JXJ36KA.js → doctor-HJCWHAU4.js} +49 -16
- package/dist/doctor-HJCWHAU4.js.map +1 -0
- package/dist/executor-DO6QFC6G.js +45 -0
- package/dist/{init-LMYOVZAV.js → init-4KVK7W2E.js} +16 -14
- package/dist/{init-LMYOVZAV.js.map → init-4KVK7W2E.js.map} +1 -1
- package/dist/{installer-FS257JRZ.js → installer-N4UTEACX.js} +6 -4
- package/dist/{llm-TH4NLIRM.js → llm-AGVEF5XD.js} +5 -4
- package/dist/{loader-CQYTFHEW.js → loader-LX7TFRM6.js} +5 -3
- package/dist/{loader-NOMBJUPW.js → loader-UDNUMEDA.js} +5 -3
- package/dist/{main-YTBVRTBI.js → main-4J4QZZTZ.js} +2518 -656
- package/dist/main-4J4QZZTZ.js.map +1 -0
- package/dist/{open-HG2DX6RN.js → open-7TXJQM3H.js} +10 -8
- package/dist/{open-HG2DX6RN.js.map → open-7TXJQM3H.js.map} +1 -1
- package/dist/{post-compact-JSECI44W.js → post-compact-7AEFVCZS.js} +8 -8
- package/dist/{post-tool-use-POGPTJBA.js → post-tool-use-TZINWWDH.js} +11 -9
- package/dist/post-tool-use-TZINWWDH.js.map +1 -0
- package/dist/{post-tool-use-failure-OT7BFWQW.js → post-tool-use-failure-TCFEU2GI.js} +8 -8
- package/dist/{pre-compact-OXVODKH4.js → pre-compact-LO2VZCGR.js} +8 -8
- package/dist/{provider-check-43LAMSMH.js → provider-check-ZEV5P4KM.js} +4 -4
- package/dist/{registry-U4CHXK6R.js → registry-F3THYC5M.js} +6 -4
- package/dist/{remove-N7ZPELFU.js → remove-F77AAALE.js} +12 -10
- package/dist/{remove-N7ZPELFU.js.map → remove-F77AAALE.js.map} +1 -1
- package/dist/{restart-ADG5GBTB.js → restart-UEFDPMLT.js} +11 -9
- package/dist/{restart-ADG5GBTB.js.map → restart-UEFDPMLT.js.map} +1 -1
- package/dist/{search-AHZEUNRR.js → search-NHNVUAQQ.js} +11 -9
- package/dist/{search-AHZEUNRR.js.map → search-NHNVUAQQ.js.map} +1 -1
- package/dist/{server-AGVYZVP5.js → server-AZJSTQEK.js} +369 -270
- package/dist/server-AZJSTQEK.js.map +1 -0
- package/dist/{session-6IU4AXYP.js → session-3HLC5KOD.js} +11 -9
- package/dist/{session-6IU4AXYP.js.map → session-3HLC5KOD.js.map} +1 -1
- package/dist/{session-end-FT27DWYZ.js → session-end-FS46UARX.js} +7 -7
- package/dist/session-start-46KPFV2H.js +134 -0
- package/dist/session-start-46KPFV2H.js.map +1 -0
- package/dist/{setup-llm-77MP4I2G.js → setup-llm-JMWSNQ2C.js} +11 -9
- package/dist/{setup-llm-77MP4I2G.js.map → setup-llm-JMWSNQ2C.js.map} +1 -1
- package/dist/src/agent/definitions/agent.yaml +9 -5
- package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +115 -0
- package/dist/src/agent/definitions/tasks/cortex-prompt-builder.yaml +67 -0
- package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -1
- package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
- package/dist/src/agent/definitions/tasks/review-session.yaml +10 -39
- package/dist/src/agent/definitions/tasks/skill-evolve.yaml +181 -25
- package/dist/src/agent/definitions/tasks/skill-generate.yaml +21 -7
- package/dist/src/agent/definitions/tasks/skill-survey.yaml +2 -6
- package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
- package/dist/src/agent/definitions/tasks/title-summary.yaml +12 -19
- package/dist/src/agent/definitions/tasks/{full-intelligence.yaml → vault-evolve.yaml} +74 -129
- package/dist/src/agent/definitions/tasks/vault-seed.yaml +370 -0
- package/dist/src/agent/prompts/agent.md +12 -38
- package/dist/src/cli.js +1 -1
- package/dist/src/daemon/main.js +1 -1
- package/dist/src/hooks/post-tool-use.js +1 -1
- package/dist/src/hooks/session-end.js +1 -1
- package/dist/src/hooks/session-start.js +1 -1
- package/dist/src/hooks/stop.js +1 -1
- package/dist/src/hooks/user-prompt-submit.js +1 -1
- package/dist/src/mcp/server.js +1 -1
- package/dist/src/symbionts/manifests/claude-code.yaml +4 -0
- package/dist/src/symbionts/manifests/opencode.yaml +7 -0
- package/dist/src/symbionts/manifests/pi.yaml +22 -0
- package/dist/src/symbionts/templates/agents-starter.md +1 -1
- package/dist/src/symbionts/templates/pi/package.json +6 -0
- package/dist/src/symbionts/templates/pi/plugin.ts +559 -0
- package/dist/{stats-NVPWOYTE.js → stats-MKMETHMA.js} +11 -9
- package/dist/{stats-NVPWOYTE.js.map → stats-MKMETHMA.js.map} +1 -1
- package/dist/{stop-ZPIKVLH4.js → stop-OUEX6KA4.js} +7 -7
- package/dist/{stop-failure-2PX67YJC.js → stop-failure-2BWVNZEG.js} +8 -8
- package/dist/{subagent-start-UUE6EHQD.js → subagent-start-J4VV6DEE.js} +8 -8
- package/dist/{subagent-stop-KQWWWPE6.js → subagent-stop-JMLVEPIA.js} +8 -8
- package/dist/{task-completed-WMHOFQ7B.js → task-completed-65CHMMKA.js} +8 -8
- package/dist/{team-LRZ6GTQK.js → team-U2LDKIS4.js} +7 -5
- package/dist/{turns-YFNI5CQC.js → turns-HU2CTZAP.js} +2 -2
- package/dist/ui/assets/index-BUGor9dk.js +842 -0
- package/dist/ui/assets/index-_OP4ifzH.css +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/{update-O6V4RC4W.js → update-ZSHVXWSQ.js} +12 -10
- package/dist/{update-O6V4RC4W.js.map → update-ZSHVXWSQ.js.map} +1 -1
- package/dist/{user-prompt-submit-N36KUPHI.js → user-prompt-submit-APMO6FVU.js} +10 -9
- package/dist/{user-prompt-submit-N36KUPHI.js.map → user-prompt-submit-APMO6FVU.js.map} +1 -1
- package/dist/{verify-LXPV7NYG.js → verify-R76ZFJSZ.js} +8 -5
- package/dist/{verify-LXPV7NYG.js.map → verify-R76ZFJSZ.js.map} +1 -1
- package/dist/{version-XMPPJQHR.js → version-TXPPS3L5.js} +2 -2
- package/dist/version-TXPPS3L5.js.map +1 -0
- package/package.json +3 -1
- package/skills/myco/SKILL.md +16 -1
- package/skills/myco/references/cli-usage.md +1 -1
- package/skills/myco-rules/SKILL.md +94 -0
- package/skills/{rules → myco-rules}/references/rules-bad-example.md +1 -1
- package/skills/{rules → myco-rules}/references/rules-good-example.md +1 -1
- package/dist/chunk-4YFKBL3F.js +0 -195
- package/dist/chunk-4YFKBL3F.js.map +0 -1
- package/dist/chunk-5XIVBO25.js.map +0 -1
- package/dist/chunk-CCRGY3QW.js.map +0 -1
- package/dist/chunk-CUDIZJY7.js +0 -36
- package/dist/chunk-CUDIZJY7.js.map +0 -1
- package/dist/chunk-EVDQKYCG.js.map +0 -1
- package/dist/chunk-FLLBJLHM.js.map +0 -1
- package/dist/chunk-MYOZLMB2.js.map +0 -1
- package/dist/chunk-NGROSFOH.js.map +0 -1
- package/dist/chunk-OD4AA7PV.js.map +0 -1
- package/dist/chunk-Q36VMZST.js.map +0 -1
- package/dist/chunk-US4LNCAT.js.map +0 -1
- package/dist/chunk-UYMFCYBF.js +0 -2326
- package/dist/chunk-UYMFCYBF.js.map +0 -1
- package/dist/chunk-VVNL26WX.js.map +0 -1
- package/dist/cli-GGPWH4UO.js.map +0 -1
- package/dist/doctor-5JXJ36KA.js.map +0 -1
- package/dist/executor-HWW2QNZQ.js +0 -2472
- package/dist/executor-HWW2QNZQ.js.map +0 -1
- package/dist/main-YTBVRTBI.js.map +0 -1
- package/dist/post-tool-use-POGPTJBA.js.map +0 -1
- package/dist/server-AGVYZVP5.js.map +0 -1
- package/dist/session-start-LAFICHII.js +0 -189
- package/dist/session-start-LAFICHII.js.map +0 -1
- package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +0 -93
- package/dist/ui/assets/index-C2JuNtRB.css +0 -1
- package/dist/ui/assets/index-JLVaQKV2.js +0 -832
- package/skills/myco-curate/SKILL.md +0 -86
- package/skills/rules/SKILL.md +0 -214
- /package/dist/{chunk-XG5RRUYF.js.map → chunk-ENZR5NG7.js.map} +0 -0
- /package/dist/{chunk-DCSGJ7W4.js.map → chunk-N2DGFACQ.js.map} +0 -0
- /package/dist/{chunk-KESLPBKV.js.map → chunk-QDLVIW2O.js.map} +0 -0
- /package/dist/{chunk-BPRIYNLE.js.map → chunk-TKAJ3JVF.js.map} +0 -0
- /package/dist/{chunk-JZGN33AY.js.map → chunk-VRI56337.js.map} +0 -0
- /package/dist/{client-YXQUTXVZ.js.map → client-Z43DNLJH.js.map} +0 -0
- /package/dist/{detect-PXNM6TA7.js.map → detect-7NUD5B5R.js.map} +0 -0
- /package/dist/{detect-providers-5KOPZ7J2.js.map → detect-providers-ILLQZROY.js.map} +0 -0
- /package/dist/{installer-FS257JRZ.js.map → executor-DO6QFC6G.js.map} +0 -0
- /package/dist/{llm-TH4NLIRM.js.map → installer-N4UTEACX.js.map} +0 -0
- /package/dist/{loader-CQYTFHEW.js.map → llm-AGVEF5XD.js.map} +0 -0
- /package/dist/{loader-NOMBJUPW.js.map → loader-LX7TFRM6.js.map} +0 -0
- /package/dist/{provider-check-43LAMSMH.js.map → loader-UDNUMEDA.js.map} +0 -0
- /package/dist/{post-compact-JSECI44W.js.map → post-compact-7AEFVCZS.js.map} +0 -0
- /package/dist/{post-tool-use-failure-OT7BFWQW.js.map → post-tool-use-failure-TCFEU2GI.js.map} +0 -0
- /package/dist/{pre-compact-OXVODKH4.js.map → pre-compact-LO2VZCGR.js.map} +0 -0
- /package/dist/{registry-U4CHXK6R.js.map → provider-check-ZEV5P4KM.js.map} +0 -0
- /package/dist/{team-LRZ6GTQK.js.map → registry-F3THYC5M.js.map} +0 -0
- /package/dist/{session-end-FT27DWYZ.js.map → session-end-FS46UARX.js.map} +0 -0
- /package/dist/{stop-ZPIKVLH4.js.map → stop-OUEX6KA4.js.map} +0 -0
- /package/dist/{stop-failure-2PX67YJC.js.map → stop-failure-2BWVNZEG.js.map} +0 -0
- /package/dist/{subagent-start-UUE6EHQD.js.map → subagent-start-J4VV6DEE.js.map} +0 -0
- /package/dist/{subagent-stop-KQWWWPE6.js.map → subagent-stop-JMLVEPIA.js.map} +0 -0
- /package/dist/{task-completed-WMHOFQ7B.js.map → task-completed-65CHMMKA.js.map} +0 -0
- /package/dist/{turns-YFNI5CQC.js.map → team-U2LDKIS4.js.map} +0 -0
- /package/dist/{version-XMPPJQHR.js.map → turns-HU2CTZAP.js.map} +0 -0
|
@@ -77,18 +77,23 @@ var RegistrationSchema = external_exports.object({
|
|
|
77
77
|
mcpTarget: external_exports.string().optional(),
|
|
78
78
|
mcpFormat: external_exports.enum(["json", "toml"]).default("json"),
|
|
79
79
|
/**
|
|
80
|
-
* Optional working directory injected into the Myco MCP server entry.
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* resolves paths against the config file location.
|
|
80
|
+
* Optional working directory injected verbatim into the Myco MCP server entry.
|
|
81
|
+
* Used by symbionts (for example Codex with `.`) whose MCP child would
|
|
82
|
+
* otherwise launch with a cwd that breaks vault discovery.
|
|
84
83
|
*/
|
|
85
84
|
mcpCwd: external_exports.string().optional(),
|
|
86
85
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
86
|
+
* When true, the installer rewrites any `myco-run` references in this
|
|
87
|
+
* symbiont's templates to the project's `.myco/runtime.command` alias
|
|
88
|
+
* (e.g. `myco-dev`) at install time. Opt-in because most symbionts
|
|
89
|
+
* rely on `bin/myco-run` to read runtime.command at spawn time, which
|
|
90
|
+
* keeps the alias dynamic — change runtime.command and the next spawn
|
|
91
|
+
* picks it up with no re-install. Set this only for hosts that reorder
|
|
92
|
+
* PATH so `~/.local/bin` loses (opencode prepends `/opt/homebrew/bin`,
|
|
93
|
+
* so it can't reach the dev shim via PATH). Baking the alias at
|
|
94
|
+
* install time bypasses PATH resolution entirely for those hosts.
|
|
90
95
|
*/
|
|
91
|
-
|
|
96
|
+
substituteRuntimeCommand: external_exports.boolean().optional(),
|
|
92
97
|
/**
|
|
93
98
|
* JSON key under which MCP server entries are stored in the MCP config file.
|
|
94
99
|
* Defaults to 'mcpServers' (used by Claude Code, Cursor, etc.). opencode uses 'mcp'.
|
|
@@ -181,4 +186,4 @@ export {
|
|
|
181
186
|
detectSymbionts,
|
|
182
187
|
resolvePackageRoot
|
|
183
188
|
};
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
189
|
+
//# sourceMappingURL=chunk-Z66IT5KL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/symbionts/manifest-schema.ts","../src/symbionts/detect.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * Declarative capture rules owned per-symbiont in its YAML manifest.\n *\n * Rules let each symbiont describe how Myco should filter or rewrite\n * captured events *without* adding symbiont-specific branches inside\n * the generic hook handlers. The hook loads the rules, a generic\n * evaluator decides the action, and the hook acts on the result.\n *\n * Condition types (in `when`):\n * - `transcript_path_missing`: structural. Fires when the hook's\n * transcript_path field is absent/empty. A legitimate user-facing\n * session records a transcript; an ephemeral sub-invocation (e.g.,\n * an agent's internal title-generation call) does not. Preferred\n * over text matching because it doesn't drift as UIs evolve.\n * - `transcript_meta_field_equals`: structural. Fires when a dot-path\n * field in the transcript's first JSON line equals a specific scalar\n * value (for example, `source = \"exec\"`). Use for source-kind or mode\n * filters that are stable in transcript metadata but not represented\n * by field presence alone.\n * - `prompt_starts_with` / `prompt_contains`: text fallback. Use\n * when no structural signal is available. Document the upgrade path\n * in the YAML so future maintainers can replace it when a better\n * signal appears.\n *\n * Scope semantics:\n * - `this_agent` (default): rule fires only when the detected agent\n * matches the manifest that owns the rule. Use for behavior that\n * is specific to the symbiont and can rely on detection working.\n * - `any_agent`: rule fires regardless of detected agent. Use for\n * patterns where detection itself might fail — e.g., an internal\n * sub-invocation that omits the fields agent detection keys on.\n *\n * Events:\n * - `session_start`: fires on SessionStart, before any prompts or\n * tools are captured. The same rules are also reusable at later\n * lifecycle boundaries that could still materialize a session row\n * (for example, transcript-backed stop processing after a missed\n * SessionStart). This is the durable \"session capture rules\"\n * contract for every symbiont.\n * - `user_prompt`: fires on UserPromptSubmit. Safety net for anything\n * that slips past session_start, and the only layer where\n * `rewrite_prompt` makes sense (prompt text doesn't exist until\n * the prompt is submitted).\n *\n * Actions:\n * - `drop`: discard the event entirely. For session_start, the hook\n * skips registering the session row. For user_prompt, the hook\n * skips posting the event and cascade-deletes any session row that\n * may have been registered before the drop rule could fire.\n * - `rewrite_prompt`: replace the captured prompt with the substring\n * after `extract_after`. Only valid for `user_prompt` events.\n */\nconst CaptureRuleSchema = z.object({\n event: z.enum(['session_start', 'user_prompt']),\n scope: z.enum(['this_agent', 'any_agent']).default('this_agent'),\n when: z.object({\n prompt_starts_with: z.string().optional(),\n prompt_contains: z.string().optional(),\n /** Structural: fires when transcript_path is absent or empty. */\n transcript_path_missing: z.boolean().optional(),\n /**\n * Structural: fires when a dot-path field exists (and is truthy) in the\n * transcript's first JSON line (session_meta). Use for detecting sub-agent\n * sessions that have real transcript files but are not user-initiated.\n *\n * Example: `source.subagent` matches a Codex thread-spawn session whose\n * session_meta has `\"source\": {\"subagent\": {...}}` but would NOT match\n * a user session with `\"source\": \"vscode\"`.\n *\n * The hook handler reads the transcript and passes the parsed meta to\n * the evaluator — the evaluator itself does no file I/O.\n */\n transcript_meta_field_exists: z.string().optional(),\n /**\n * Structural: fires when a dot-path field in session_meta exactly equals\n * a scalar value (string / number / boolean / null). Use for stable\n * source-kind markers like `source = \"exec\"`.\n */\n transcript_meta_field_equals: z.object({\n path: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.null()]),\n }).optional(),\n }),\n action: z.enum(['drop', 'rewrite_prompt']),\n /** Short audit string logged when the rule matches (e.g., \"codex-internal-title-gen\"). */\n reason: z.string().optional(),\n /** For rewrite_prompt: keep only the substring after this marker (first occurrence). */\n extract_after: z.string().optional(),\n /** For rewrite_prompt: trim whitespace from the extracted substring. Default true. */\n trim: z.boolean().default(true),\n});\n\nexport type CaptureRule = z.infer<typeof CaptureRuleSchema>;\n\nconst CaptureManifestSchema = z.object({\n planDirs: z.array(z.string()).default([]),\n planTags: z.array(z.string()).default([]),\n rules: z.array(CaptureRuleSchema).default([]),\n});\n\nconst RegistrationSchema = z.object({\n hooksTarget: z.string().optional(),\n /**\n * Format of the hooks target.\n * - 'json' (default): hooks template is merged into a JSON settings file.\n * - 'plugin-file': the hooks template is a verbatim file (e.g., an opencode TS plugin)\n * copied to hooksTarget without JSON parsing. Used for agents with plugin-based hook\n * systems rather than JSON hook entries.\n */\n hooksFormat: z.enum(['json', 'plugin-file']).default('json'),\n /**\n * Optional file path for a plugin deps package.json. When set, the installer writes\n * a package.json declaring the plugin SDK dependency so the agent's package manager\n * (e.g., opencode's Bun) can install it at startup. Preserved on uninstall so\n * contributors can keep their own deps.\n */\n pluginPackageTarget: z.string().optional(),\n mcpTarget: z.string().optional(),\n mcpFormat: z.enum(['json', 'toml']).default('json'),\n /**\n * Optional working directory injected verbatim into the Myco MCP server entry.\n * Used by symbionts (for example Codex with `.`) whose MCP child would\n * otherwise launch with a cwd that breaks vault discovery.\n */\n mcpCwd: z.string().optional(),\n /**\n * When true, the installer rewrites any `myco-run` references in this\n * symbiont's templates to the project's `.myco/runtime.command` alias\n * (e.g. `myco-dev`) at install time. Opt-in because most symbionts\n * rely on `bin/myco-run` to read runtime.command at spawn time, which\n * keeps the alias dynamic — change runtime.command and the next spawn\n * picks it up with no re-install. Set this only for hosts that reorder\n * PATH so `~/.local/bin` loses (opencode prepends `/opt/homebrew/bin`,\n * so it can't reach the dev shim via PATH). Baking the alias at\n * install time bypasses PATH resolution entirely for those hosts.\n */\n substituteRuntimeCommand: z.boolean().optional(),\n /**\n * JSON key under which MCP server entries are stored in the MCP config file.\n * Defaults to 'mcpServers' (used by Claude Code, Cursor, etc.). opencode uses 'mcp'.\n */\n mcpServersKey: z.string().default('mcpServers'),\n skillsTarget: z.string().optional(),\n settingsTarget: z.string().optional(),\n /** Format of the settings file. TOML-format agents (e.g., Codex) emit top-level template keys as TOML sections. */\n settingsFormat: z.enum(['json', 'toml']).default('json'),\n /** Instruction file that stubs out to AGENTS.md. Only for agents that don't read AGENTS.md natively. */\n instructionsFile: z.string().optional(),\n});\n\nexport const SymbiontManifestSchema = z.object({\n name: z.string(),\n displayName: z.string(),\n binary: z.string(),\n configDir: z.string(),\n pluginRootEnvVar: z.string(),\n settingsPath: z.string().optional(),\n hookFields: z.object({\n sessionId: z.string(),\n transcriptPath: z.string(),\n lastResponse: z.string(),\n prompt: z.string().default('prompt'),\n toolName: z.string().default('tool_name'),\n toolInput: z.string().default('tool_input'),\n toolOutput: z.string().default('tool_output'),\n /** Env var fallback for session ID (e.g., GEMINI_SESSION_ID). */\n sessionIdEnv: z.string().optional(),\n }),\n /** Resume command template with {sessionId} placeholder. Omit for IDE-based agents. */\n resumeCommand: z.string().optional(),\n capture: CaptureManifestSchema.optional(),\n registration: RegistrationSchema.optional(),\n});\n\nexport type SymbiontManifest = z.infer<typeof SymbiontManifestSchema>;\nexport type SymbiontRegistration = z.infer<typeof RegistrationSchema>;\n","import { SymbiontManifestSchema, type SymbiontManifest } from './manifest-schema.js';\nimport { findPackageRoot } from '../utils/find-package-root.js';\nimport { execFileSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport YAML from 'yaml';\n\nexport interface DetectedSymbiont {\n manifest: SymbiontManifest;\n binaryFound: boolean;\n configDirFound: boolean;\n}\n\nconst MANIFESTS_SUBDIR = 'symbionts/manifests';\n\n/** Cached manifests — static files that never change at runtime. */\nlet manifestCache: SymbiontManifest[] | null = null;\n\n/** Load all symbiont manifests from the package's dist directory. */\nexport function loadManifests(): SymbiontManifest[] {\n if (manifestCache) return manifestCache;\n const candidates = [\n // Source layout: src/symbionts/detect.ts → src/symbionts/manifests/\n path.resolve(import.meta.dirname, MANIFESTS_SUBDIR),\n // Dist layout: dist/src/symbionts/ → dist/src/symbionts/manifests/\n // (or dist/src/daemon/ → dist/src/symbionts/manifests/)\n path.resolve(import.meta.dirname, '..', MANIFESTS_SUBDIR),\n path.resolve(import.meta.dirname, '..', '..', MANIFESTS_SUBDIR),\n // Chunk layout: dist/chunk-*.js → dist/src/symbionts/manifests/\n path.resolve(import.meta.dirname, 'src', MANIFESTS_SUBDIR),\n ];\n\n for (const dir of candidates) {\n if (!fs.existsSync(dir)) continue;\n const files = fs.readdirSync(dir).filter(f => f.endsWith('.yaml'));\n if (files.length === 0) continue;\n manifestCache = files.map(f => {\n const raw = YAML.parse(fs.readFileSync(path.join(dir, f), 'utf-8'));\n return SymbiontManifestSchema.parse(raw);\n });\n return manifestCache;\n }\n return [];\n}\n\n/** Check if a binary is available on PATH. */\nfunction isBinaryOnPath(binary: string): boolean {\n try {\n execFileSync('which', [binary], { stdio: 'pipe' });\n return true;\n } catch {\n return false;\n }\n}\n\n/** Detect which symbionts are available for a project. */\nexport function detectSymbionts(projectRoot: string): DetectedSymbiont[] {\n const manifests = loadManifests();\n return manifests.map(manifest => ({\n manifest,\n binaryFound: isBinaryOnPath(manifest.binary),\n configDirFound: fs.existsSync(path.join(projectRoot, manifest.configDir)),\n })).filter(d => d.binaryFound || d.configDirFound);\n}\n\n/** Find the Myco package root (where package.json lives). */\nexport function resolvePackageRoot(): string {\n return findPackageRoot(import.meta.dirname) ?? process.cwd();\n}\n"],"mappings":"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","names":["YAML"]}
|
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
loadEnv
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QDLVIW2O.js";
|
|
6
6
|
import "./chunk-SAKJMNSR.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-OTQH5KZW.js";
|
|
8
|
+
import "./chunk-X3IGT5RV.js";
|
|
9
|
+
import "./chunk-53RPGOEN.js";
|
|
10
|
+
import "./chunk-OUJSQSKE.js";
|
|
11
|
+
import "./chunk-POEPHBQK.js";
|
|
10
12
|
import "./chunk-MYX5NCRH.js";
|
|
11
13
|
import {
|
|
12
14
|
resolveVaultDir
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-TSM6VESW.js";
|
|
16
|
+
import "./chunk-KTTSXYEK.js";
|
|
17
|
+
import "./chunk-ENZR5NG7.js";
|
|
16
18
|
import "./chunk-LPUQPDC2.js";
|
|
17
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-6C6QZ4PM.js";
|
|
18
20
|
import "./chunk-UUHLLQXO.js";
|
|
19
21
|
import "./chunk-6LQIMRTC.js";
|
|
20
22
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -43,6 +45,7 @@ Commands:
|
|
|
43
45
|
setup-llm [options] Configure LLM and embedding providers
|
|
44
46
|
setup-digest [options] Configure digest and capture settings
|
|
45
47
|
agent [options] Run the intelligence agent
|
|
48
|
+
agent eval [options] Run an evaluation matrix across runtime/reasoning/model variants
|
|
46
49
|
task <subcommand> Manage agent task definitions
|
|
47
50
|
team <init|upgrade> Provision or upgrade team sync infrastructure
|
|
48
51
|
doctor [--fix] Check vault health and repair issues
|
|
@@ -59,29 +62,29 @@ async function main() {
|
|
|
59
62
|
process.stdout.write(USAGE);
|
|
60
63
|
return;
|
|
61
64
|
}
|
|
62
|
-
if (cmd === "init") return (await import("./init-
|
|
63
|
-
if (cmd === "detect-providers") return (await import("./detect-providers-
|
|
65
|
+
if (cmd === "init") return (await import("./init-4KVK7W2E.js")).run(args);
|
|
66
|
+
if (cmd === "detect-providers") return (await import("./detect-providers-ILLQZROY.js")).run(args);
|
|
64
67
|
if (cmd === "version" || cmd === "--version" || cmd === "-v") {
|
|
65
|
-
const { getPluginVersion } = await import("./version-
|
|
68
|
+
const { getPluginVersion } = await import("./version-TXPPS3L5.js");
|
|
66
69
|
console.log(getPluginVersion());
|
|
67
70
|
return;
|
|
68
71
|
}
|
|
69
|
-
if (cmd === "mcp") return (await import("./server-
|
|
72
|
+
if (cmd === "mcp") return (await import("./server-AZJSTQEK.js")).main();
|
|
70
73
|
if (cmd === "hook") {
|
|
71
74
|
const hookName = args[0];
|
|
72
75
|
const HOOK_DISPATCH = {
|
|
73
|
-
"session-start": () => import("./session-start-
|
|
74
|
-
"session-end": () => import("./session-end-
|
|
75
|
-
"stop": () => import("./stop-
|
|
76
|
-
"user-prompt-submit": () => import("./user-prompt-submit-
|
|
77
|
-
"post-tool-use": () => import("./post-tool-use-
|
|
78
|
-
"post-tool-use-failure": () => import("./post-tool-use-failure-
|
|
79
|
-
"subagent-start": () => import("./subagent-start-
|
|
80
|
-
"subagent-stop": () => import("./subagent-stop-
|
|
81
|
-
"stop-failure": () => import("./stop-failure-
|
|
82
|
-
"task-completed": () => import("./task-completed-
|
|
83
|
-
"pre-compact": () => import("./pre-compact-
|
|
84
|
-
"post-compact": () => import("./post-compact-
|
|
76
|
+
"session-start": () => import("./session-start-46KPFV2H.js"),
|
|
77
|
+
"session-end": () => import("./session-end-FS46UARX.js"),
|
|
78
|
+
"stop": () => import("./stop-OUEX6KA4.js"),
|
|
79
|
+
"user-prompt-submit": () => import("./user-prompt-submit-APMO6FVU.js"),
|
|
80
|
+
"post-tool-use": () => import("./post-tool-use-TZINWWDH.js"),
|
|
81
|
+
"post-tool-use-failure": () => import("./post-tool-use-failure-TCFEU2GI.js"),
|
|
82
|
+
"subagent-start": () => import("./subagent-start-J4VV6DEE.js"),
|
|
83
|
+
"subagent-stop": () => import("./subagent-stop-JMLVEPIA.js"),
|
|
84
|
+
"stop-failure": () => import("./stop-failure-2BWVNZEG.js"),
|
|
85
|
+
"task-completed": () => import("./task-completed-65CHMMKA.js"),
|
|
86
|
+
"pre-compact": () => import("./pre-compact-LO2VZCGR.js"),
|
|
87
|
+
"post-compact": () => import("./post-compact-7AEFVCZS.js")
|
|
85
88
|
};
|
|
86
89
|
const loader = HOOK_DISPATCH[hookName];
|
|
87
90
|
if (!loader) {
|
|
@@ -90,13 +93,13 @@ async function main() {
|
|
|
90
93
|
}
|
|
91
94
|
return (await loader()).main();
|
|
92
95
|
}
|
|
93
|
-
if (cmd === "daemon") return (await import("./main-
|
|
96
|
+
if (cmd === "daemon") return (await import("./main-4J4QZZTZ.js")).main();
|
|
94
97
|
if (cmd === "doctor") {
|
|
95
98
|
const vaultDir2 = resolveVaultDir();
|
|
96
|
-
return (await import("./doctor-
|
|
99
|
+
return (await import("./doctor-HJCWHAU4.js")).run(args, vaultDir2);
|
|
97
100
|
}
|
|
98
|
-
if (cmd === "update") return (await import("./update-
|
|
99
|
-
if (cmd === "remove") return (await import("./remove-
|
|
101
|
+
if (cmd === "update") return (await import("./update-ZSHVXWSQ.js")).run(args);
|
|
102
|
+
if (cmd === "remove") return (await import("./remove-F77AAALE.js")).run(args);
|
|
100
103
|
const vaultDir = resolveVaultDir();
|
|
101
104
|
if (!fs.existsSync(path.join(vaultDir, "myco.yaml"))) {
|
|
102
105
|
console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);
|
|
@@ -104,37 +107,41 @@ async function main() {
|
|
|
104
107
|
}
|
|
105
108
|
switch (cmd) {
|
|
106
109
|
case "config":
|
|
107
|
-
return (await import("./config-
|
|
110
|
+
return (await import("./config-VC4ACP42.js")).run(args, vaultDir);
|
|
108
111
|
case "verify":
|
|
109
|
-
return (await import("./verify-
|
|
112
|
+
return (await import("./verify-R76ZFJSZ.js")).run(args, vaultDir);
|
|
110
113
|
case "stats":
|
|
111
|
-
return (await import("./stats-
|
|
114
|
+
return (await import("./stats-MKMETHMA.js")).run(args, vaultDir);
|
|
112
115
|
case "search":
|
|
113
|
-
return (await import("./search-
|
|
116
|
+
return (await import("./search-NHNVUAQQ.js")).run(args, vaultDir);
|
|
114
117
|
case "vectors":
|
|
115
|
-
return (await import("./search-
|
|
118
|
+
return (await import("./search-NHNVUAQQ.js")).runVectors(args, vaultDir);
|
|
116
119
|
case "session":
|
|
117
|
-
return (await import("./session-
|
|
120
|
+
return (await import("./session-3HLC5KOD.js")).run(args, vaultDir);
|
|
118
121
|
case "setup-llm":
|
|
119
|
-
return (await import("./setup-llm-
|
|
122
|
+
return (await import("./setup-llm-JMWSNQ2C.js")).run(args, vaultDir);
|
|
120
123
|
case "setup-digest":
|
|
121
124
|
return (await import("./setup-digest-4KDSXAIV.js")).run(args, vaultDir);
|
|
122
|
-
case "agent":
|
|
123
|
-
|
|
125
|
+
case "agent": {
|
|
126
|
+
if (args[0] === "eval") {
|
|
127
|
+
return (await import("./agent-eval-YK2VP2S4.js")).run(args.slice(1), vaultDir);
|
|
128
|
+
}
|
|
129
|
+
return (await import("./agent-run-GEJBD2YD.js")).run(args, vaultDir);
|
|
130
|
+
}
|
|
124
131
|
case "task":
|
|
125
|
-
return (await import("./agent-tasks-
|
|
132
|
+
return (await import("./agent-tasks-5XSRGTRX.js")).run(args, vaultDir);
|
|
126
133
|
case "team": {
|
|
127
134
|
const sub = args[0];
|
|
128
|
-
if (sub === "init") return (await import("./team-
|
|
129
|
-
if (sub === "upgrade") return (await import("./team-
|
|
135
|
+
if (sub === "init") return (await import("./team-U2LDKIS4.js")).teamInit(vaultDir);
|
|
136
|
+
if (sub === "upgrade") return (await import("./team-U2LDKIS4.js")).teamUpgrade(vaultDir);
|
|
130
137
|
console.error("Usage: myco team <init|upgrade>");
|
|
131
138
|
process.exit(1);
|
|
132
139
|
break;
|
|
133
140
|
}
|
|
134
141
|
case "open":
|
|
135
|
-
return (await import("./open-
|
|
142
|
+
return (await import("./open-7TXJQM3H.js")).run(args, vaultDir);
|
|
136
143
|
case "restart":
|
|
137
|
-
return (await import("./restart-
|
|
144
|
+
return (await import("./restart-UEFDPMLT.js")).run(args, vaultDir);
|
|
138
145
|
case "logs":
|
|
139
146
|
return (await import("./logs-7YVGGBIS.js")).run(args, vaultDir);
|
|
140
147
|
default:
|
|
@@ -147,4 +154,4 @@ main().catch((err) => {
|
|
|
147
154
|
console.error(`myco: ${err.message}`);
|
|
148
155
|
process.exit(1);
|
|
149
156
|
});
|
|
150
|
-
//# sourceMappingURL=cli-
|
|
157
|
+
//# sourceMappingURL=cli-HSLIG7EX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { loadEnv } from './cli/shared.js';\nimport { resolveVaultDir } from './vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nloadEnv();\n\nconst USAGE = `Usage: myco <command> [args]\n\nCommands:\n init [options] Initialize a new vault\n update Update vault files and agent registration\n remove [--remove-vault] Remove Myco from this project (vault preserved by default)\n remove --symbiont <name> Unregister a single agent and remove from config\n config <get|set> [args] Get or set vault config values\n detect-providers Detect available LLM/embedding providers (JSON)\n verify Test LLM and embedding connectivity\n stats Vault health, index counts, vector count\n search <query> Combined FTS + vector search with scores\n vectors <query> Raw vector search with similarity scores\n session [id|latest] Show a session\n logs [options] View daemon logs\n setup-llm [options] Configure LLM and embedding providers\n setup-digest [options] Configure digest and capture settings\n agent [options] Run the intelligence agent\n agent eval [options] Run an evaluation matrix across runtime/reasoning/model variants\n task <subcommand> Manage agent task definitions\n team <init|upgrade> Provision or upgrade team sync infrastructure\n doctor [--fix] Check vault health and repair issues\n open Open the dashboard in your browser\n restart Restart the daemon\n version Show plugin version\n mcp Start the MCP stdio server\n hook <name> Run a hook (session-start, session-end, stop, user-prompt-submit, post-tool-use, post-tool-use-failure, subagent-start, subagent-stop, stop-failure, task-completed, pre-compact, post-compact)\n daemon --vault <dir> Start the daemon process\n`;\n\nasync function main(): Promise<void> {\n const [cmd, ...args] = process.argv.slice(2);\n if (!cmd || cmd === '--help' || cmd === '-h') {\n process.stdout.write(USAGE);\n return;\n }\n\n if (cmd === 'init') return (await import('./cli/init.js')).run(args);\n if (cmd === 'detect-providers') return (await import('./cli/detect-providers.js')).run(args);\n if (cmd === 'version' || cmd === '--version' || cmd === '-v') {\n const { getPluginVersion } = await import('./version.js');\n console.log(getPluginVersion());\n return;\n }\n if (cmd === 'mcp') return (await import('./mcp/server.js')).main();\n if (cmd === 'hook') {\n const hookName = args[0];\n const HOOK_DISPATCH: Record<string, () => Promise<{ main: () => Promise<void> }>> = {\n 'session-start': () => import('./hooks/session-start.js'),\n 'session-end': () => import('./hooks/session-end.js'),\n 'stop': () => import('./hooks/stop.js'),\n 'user-prompt-submit': () => import('./hooks/user-prompt-submit.js'),\n 'post-tool-use': () => import('./hooks/post-tool-use.js'),\n 'post-tool-use-failure': () => import('./hooks/post-tool-use-failure.js'),\n 'subagent-start': () => import('./hooks/subagent-start.js'),\n 'subagent-stop': () => import('./hooks/subagent-stop.js'),\n 'stop-failure': () => import('./hooks/stop-failure.js'),\n 'task-completed': () => import('./hooks/task-completed.js'),\n 'pre-compact': () => import('./hooks/pre-compact.js'),\n 'post-compact': () => import('./hooks/post-compact.js'),\n };\n const loader = HOOK_DISPATCH[hookName];\n if (!loader) {\n console.error(`Unknown hook: ${hookName}. Available: ${Object.keys(HOOK_DISPATCH).join(', ')}`);\n process.exit(1);\n }\n return (await loader()).main();\n }\n if (cmd === 'daemon') return (await import('./daemon/main.js')).main();\n\n if (cmd === 'doctor') {\n const vaultDir = resolveVaultDir();\n return (await import('./cli/doctor.js')).run(args, vaultDir);\n }\n\n if (cmd === 'update') return (await import('./cli/update.js')).run(args);\n if (cmd === 'remove') return (await import('./cli/remove.js')).run(args);\n\n const vaultDir = resolveVaultDir();\n if (!fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);\n process.exit(1);\n }\n\n switch (cmd) {\n case 'config': return (await import('./cli/config.js')).run(args, vaultDir);\n case 'verify': return (await import('./cli/verify.js')).run(args, vaultDir);\n case 'stats': return (await import('./cli/stats.js')).run(args, vaultDir);\n case 'search': return (await import('./cli/search.js')).run(args, vaultDir);\n case 'vectors': return (await import('./cli/search.js')).runVectors(args, vaultDir);\n case 'session': return (await import('./cli/session.js')).run(args, vaultDir);\n case 'setup-llm': return (await import('./cli/setup-llm.js')).run(args, vaultDir);\n case 'setup-digest': return (await import('./cli/setup-digest.js')).run(args, vaultDir);\n case 'agent': {\n if (args[0] === 'eval') {\n return (await import('./cli/agent-eval.js')).run(args.slice(1), vaultDir);\n }\n return (await import('./cli/agent-run.js')).run(args, vaultDir);\n }\n case 'task': return (await import('./cli/agent-tasks.js')).run(args, vaultDir);\n case 'team': {\n const sub = args[0];\n if (sub === 'init') return (await import('./cli/team.js')).teamInit(vaultDir);\n if (sub === 'upgrade') return (await import('./cli/team.js')).teamUpgrade(vaultDir);\n console.error('Usage: myco team <init|upgrade>');\n process.exit(1);\n break;\n }\n case 'open': return (await import('./cli/open.js')).run(args, vaultDir);\n case 'restart': return (await import('./cli/restart.js')).run(args, vaultDir);\n case 'logs': return (await import('./cli/logs.js')).run(args, vaultDir);\n default:\n console.error(`Unknown command: ${cmd}`);\n process.stdout.write(USAGE);\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error(`myco: ${(err as Error).message}`);\n process.exit(1);\n});\n"],"mappings":"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","names":["vaultDir"]}
|
|
@@ -2,14 +2,14 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
|
|
|
2
2
|
import {
|
|
3
3
|
DaemonClient,
|
|
4
4
|
resolveCliEntryPath
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-KTTSXYEK.js";
|
|
6
|
+
import "./chunk-ENZR5NG7.js";
|
|
7
7
|
import "./chunk-LPUQPDC2.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-6C6QZ4PM.js";
|
|
9
9
|
import "./chunk-UUHLLQXO.js";
|
|
10
10
|
import "./chunk-PZUWP5VK.js";
|
|
11
11
|
export {
|
|
12
12
|
DaemonClient,
|
|
13
13
|
resolveCliEntryPath
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=client-
|
|
15
|
+
//# sourceMappingURL=client-Z43DNLJH.js.map
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
withValue
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IPPMYQ2Y.js";
|
|
5
5
|
import {
|
|
6
6
|
loadConfig,
|
|
7
7
|
updateConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-53RPGOEN.js";
|
|
9
|
+
import "./chunk-OUJSQSKE.js";
|
|
10
|
+
import "./chunk-POEPHBQK.js";
|
|
9
11
|
import {
|
|
10
12
|
getAtPath
|
|
11
13
|
} from "./chunk-ZXZPJJN3.js";
|
|
12
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-6C6QZ4PM.js";
|
|
13
15
|
import "./chunk-UUHLLQXO.js";
|
|
14
16
|
import "./chunk-6LQIMRTC.js";
|
|
15
17
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -79,4 +81,4 @@ function parseValue(raw) {
|
|
|
79
81
|
export {
|
|
80
82
|
run
|
|
81
83
|
};
|
|
82
|
-
//# sourceMappingURL=config-
|
|
84
|
+
//# sourceMappingURL=config-VC4ACP42.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/config.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadConfig, updateConfig } from '../config/loader.js';\nimport { withValue } from '../config/updates.js';\nimport { getAtPath } from '../utils/dot-path.js';\n\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const [subcommand, key, ...rest] = args;\n\n if (subcommand === 'get') {\n if (!key) {\n console.error('Usage: myco config get <dot.path.key>');\n process.exit(1);\n }\n return configGet(key, vaultDir);\n }\n\n if (subcommand === 'set') {\n const value = rest[0];\n if (!key || value === undefined) {\n console.error('Usage: myco config set <dot.path.key> <value>');\n process.exit(1);\n }\n return configSet(key, value, vaultDir);\n }\n\n console.error('Usage: myco config <get|set> <dot.path.key> [value]');\n process.exit(1);\n}\n\nfunction configGet(dotPath: string, vaultDir: string): void {\n const config = loadConfig(vaultDir);\n const value = getAtPath(config as Record<string, unknown>, dotPath);\n if (value === undefined) {\n console.error(`Key not found: ${dotPath}`);\n process.exit(1);\n }\n console.log(typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value));\n}\n\nfunction configSet(dotPath: string, rawValue: string, vaultDir: string): void {\n const value = parseValue(rawValue);\n\n try {\n updateConfig(vaultDir, (config) => withValue(config, dotPath, value));\n } catch (err) {\n if (err instanceof Error && 'issues' in err) {\n const issues = (err as { issues: Array<{ path: (string | number)[]; message: string }> }).issues;\n console.error('Validation error:');\n for (const issue of issues) {\n console.error(` ${issue.path.join('.')}: ${issue.message}`);\n }\n process.exit(1);\n }\n throw err;\n }\n\n console.log(`Set ${dotPath} = ${JSON.stringify(value)}`);\n\n if (fs.existsSync(path.join(vaultDir, DAEMON_STATE_FILENAME))) {\n console.log('Note: restart the daemon for changes to take effect (myco restart)');\n }\n}\n\n/** Parse a string value as JSON (number, boolean, array, object), falling back to raw string. */\nfunction parseValue(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/cli/config.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadConfig, updateConfig } from '../config/loader.js';\nimport { withValue } from '../config/updates.js';\nimport { getAtPath } from '../utils/dot-path.js';\n\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const [subcommand, key, ...rest] = args;\n\n if (subcommand === 'get') {\n if (!key) {\n console.error('Usage: myco config get <dot.path.key>');\n process.exit(1);\n }\n return configGet(key, vaultDir);\n }\n\n if (subcommand === 'set') {\n const value = rest[0];\n if (!key || value === undefined) {\n console.error('Usage: myco config set <dot.path.key> <value>');\n process.exit(1);\n }\n return configSet(key, value, vaultDir);\n }\n\n console.error('Usage: myco config <get|set> <dot.path.key> [value]');\n process.exit(1);\n}\n\nfunction configGet(dotPath: string, vaultDir: string): void {\n const config = loadConfig(vaultDir);\n const value = getAtPath(config as Record<string, unknown>, dotPath);\n if (value === undefined) {\n console.error(`Key not found: ${dotPath}`);\n process.exit(1);\n }\n console.log(typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value));\n}\n\nfunction configSet(dotPath: string, rawValue: string, vaultDir: string): void {\n const value = parseValue(rawValue);\n\n try {\n updateConfig(vaultDir, (config) => withValue(config, dotPath, value));\n } catch (err) {\n if (err instanceof Error && 'issues' in err) {\n const issues = (err as { issues: Array<{ path: (string | number)[]; message: string }> }).issues;\n console.error('Validation error:');\n for (const issue of issues) {\n console.error(` ${issue.path.join('.')}: ${issue.message}`);\n }\n process.exit(1);\n }\n throw err;\n }\n\n console.log(`Set ${dotPath} = ${JSON.stringify(value)}`);\n\n if (fs.existsSync(path.join(vaultDir, DAEMON_STATE_FILENAME))) {\n console.log('Note: restart the daemon for changes to take effect (myco restart)');\n }\n}\n\n/** Parse a string value as JSON (number, boolean, array, object), falling back to raw string. */\nfunction parseValue(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAKjB,IAAM,wBAAwB;AAE9B,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,CAAC,YAAY,KAAK,GAAG,IAAI,IAAI;AAEnC,MAAI,eAAe,OAAO;AACxB,QAAI,CAAC,KAAK;AACR,cAAQ,MAAM,uCAAuC;AACrD,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO,UAAU,KAAK,QAAQ;AAAA,EAChC;AAEA,MAAI,eAAe,OAAO;AACxB,UAAM,QAAQ,KAAK,CAAC;AACpB,QAAI,CAAC,OAAO,UAAU,QAAW;AAC/B,cAAQ,MAAM,+CAA+C;AAC7D,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO,UAAU,KAAK,OAAO,QAAQ;AAAA,EACvC;AAEA,UAAQ,MAAM,qDAAqD;AACnE,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,UAAU,SAAiB,UAAwB;AAC1D,QAAM,SAAS,WAAW,QAAQ;AAClC,QAAM,QAAQ,UAAU,QAAmC,OAAO;AAClE,MAAI,UAAU,QAAW;AACvB,YAAQ,MAAM,kBAAkB,OAAO,EAAE;AACzC,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,UAAQ,IAAI,OAAO,UAAU,WAAW,KAAK,UAAU,OAAO,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC;AACxF;AAEA,SAAS,UAAU,SAAiB,UAAkB,UAAwB;AAC5E,QAAM,QAAQ,WAAW,QAAQ;AAEjC,MAAI;AACF,iBAAa,UAAU,CAAC,WAAW,UAAU,QAAQ,SAAS,KAAK,CAAC;AAAA,EACtE,SAAS,KAAK;AACZ,QAAI,eAAe,SAAS,YAAY,KAAK;AAC3C,YAAM,SAAU,IAA0E;AAC1F,cAAQ,MAAM,mBAAmB;AACjC,iBAAW,SAAS,QAAQ;AAC1B,gBAAQ,MAAM,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,EAAE;AAAA,MAC7D;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,UAAM;AAAA,EACR;AAEA,UAAQ,IAAI,OAAO,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,EAAE;AAEvD,MAAI,GAAG,WAAW,KAAK,KAAK,UAAU,qBAAqB,CAAC,GAAG;AAC7D,YAAQ,IAAI,oEAAoE;AAAA,EAClF;AACF;AAGA,SAAS,WAAW,KAAsB;AACxC,MAAI;AACF,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
detectSymbionts,
|
|
4
4
|
loadManifests,
|
|
5
5
|
resolvePackageRoot
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-Z66IT5KL.js";
|
|
7
7
|
import "./chunk-LPUQPDC2.js";
|
|
8
8
|
import "./chunk-6LQIMRTC.js";
|
|
9
9
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -14,4 +14,4 @@ export {
|
|
|
14
14
|
loadManifests,
|
|
15
15
|
resolvePackageRoot
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=detect-
|
|
17
|
+
//# sourceMappingURL=detect-7NUD5B5R.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
checkLocalProvider
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-TKAJ3JVF.js";
|
|
5
|
+
import "./chunk-X3IGT5RV.js";
|
|
6
|
+
import "./chunk-6C6QZ4PM.js";
|
|
7
7
|
import "./chunk-UUHLLQXO.js";
|
|
8
8
|
import "./chunk-PZUWP5VK.js";
|
|
9
9
|
|
|
@@ -23,4 +23,4 @@ async function run(_args) {
|
|
|
23
23
|
export {
|
|
24
24
|
run
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=detect-providers-
|
|
26
|
+
//# sourceMappingURL=detect-providers-ILLQZROY.js.map
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
isProcessAlive
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QDLVIW2O.js";
|
|
5
5
|
import "./chunk-SAKJMNSR.js";
|
|
6
6
|
import {
|
|
7
|
-
MYCO_MCP_SERVER_NAME
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
MYCO_MCP_SERVER_NAME,
|
|
8
|
+
isMycoHookGroup
|
|
9
|
+
} from "./chunk-OTQH5KZW.js";
|
|
10
|
+
import "./chunk-X3IGT5RV.js";
|
|
11
|
+
import "./chunk-53RPGOEN.js";
|
|
12
|
+
import "./chunk-OUJSQSKE.js";
|
|
13
|
+
import "./chunk-POEPHBQK.js";
|
|
11
14
|
import "./chunk-MYX5NCRH.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-KTTSXYEK.js";
|
|
16
|
+
import "./chunk-ENZR5NG7.js";
|
|
14
17
|
import "./chunk-LPUQPDC2.js";
|
|
15
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-6C6QZ4PM.js";
|
|
16
19
|
import "./chunk-UUHLLQXO.js";
|
|
17
20
|
import "./chunk-6LQIMRTC.js";
|
|
18
21
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -27,13 +30,14 @@ var DAEMON_STATE_FILENAME = "daemon.json";
|
|
|
27
30
|
var DB_FILENAME = "myco.db";
|
|
28
31
|
var NAME_COL_WIDTH = 17;
|
|
29
32
|
var CONTINUATION_INDENT = " ".repeat(NAME_COL_WIDTH);
|
|
33
|
+
var MYCO_PLUGIN_FILE_MARKER = "myco:plugin-marker";
|
|
30
34
|
async function checkVault(vaultDir) {
|
|
31
35
|
const configPath = path.join(vaultDir, CONFIG_FILENAME);
|
|
32
36
|
if (!fs.existsSync(configPath)) {
|
|
33
37
|
return { check: { name: "Vault", status: "fail", detail: `${CONFIG_FILENAME} not found in ${vaultDir}`, fixable: false }, config: null };
|
|
34
38
|
}
|
|
35
39
|
try {
|
|
36
|
-
const { loadMergedConfig } = await import("./loader-
|
|
40
|
+
const { loadMergedConfig } = await import("./loader-LX7TFRM6.js");
|
|
37
41
|
const config = loadMergedConfig(vaultDir);
|
|
38
42
|
return { check: { name: "Vault", status: "ok", detail: `.myco/ (v${config.version})`, fixable: false }, config };
|
|
39
43
|
} catch (err) {
|
|
@@ -72,7 +76,7 @@ async function checkIntelligence(config) {
|
|
|
72
76
|
return { name: "Intelligence", status: "ok", detail: `${label} (SDK handles auth)`, fixable: false };
|
|
73
77
|
}
|
|
74
78
|
if (provider.type === "ollama" || provider.type === "lmstudio") {
|
|
75
|
-
const { checkLocalProvider } = await import("./provider-check-
|
|
79
|
+
const { checkLocalProvider } = await import("./provider-check-ZEV5P4KM.js");
|
|
76
80
|
const status = await checkLocalProvider(provider.type, provider.base_url);
|
|
77
81
|
if (!status.available) {
|
|
78
82
|
return { name: "Intelligence", status: "warn", detail: `${label} (not reachable)`, fixable: false };
|
|
@@ -86,7 +90,7 @@ async function checkIntelligence(config) {
|
|
|
86
90
|
}
|
|
87
91
|
async function checkEmbeddings(config) {
|
|
88
92
|
try {
|
|
89
|
-
const { createEmbeddingProvider } = await import("./llm-
|
|
93
|
+
const { createEmbeddingProvider } = await import("./llm-AGVEF5XD.js");
|
|
90
94
|
const provider = createEmbeddingProvider(config.embedding);
|
|
91
95
|
const available = await provider.isAvailable();
|
|
92
96
|
const label = `${config.embedding.provider} / ${config.embedding.model}`;
|
|
@@ -100,8 +104,8 @@ async function checkEmbeddings(config) {
|
|
|
100
104
|
}
|
|
101
105
|
async function checkAgents(vaultDir, config) {
|
|
102
106
|
try {
|
|
103
|
-
const { detectSymbionts } = await import("./detect-
|
|
104
|
-
const { getEnabledSymbiontNames } = await import("./loader-
|
|
107
|
+
const { detectSymbionts } = await import("./detect-7NUD5B5R.js");
|
|
108
|
+
const { getEnabledSymbiontNames } = await import("./loader-LX7TFRM6.js");
|
|
105
109
|
const projectRoot = path.dirname(vaultDir);
|
|
106
110
|
const detected = detectSymbionts(projectRoot);
|
|
107
111
|
const enabledNames = config ? getEnabledSymbiontNames(config) : null;
|
|
@@ -151,9 +155,18 @@ async function checkAgents(vaultDir, config) {
|
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
157
|
function isSymbiontRegistered(d, projectRoot) {
|
|
158
|
+
const registration = d.manifest.registration;
|
|
159
|
+
if (!registration) return false;
|
|
160
|
+
if (registration.mcpTarget) {
|
|
161
|
+
return isMcpRegistered(d, projectRoot, registration.mcpTarget);
|
|
162
|
+
}
|
|
163
|
+
if (registration.hooksTarget) {
|
|
164
|
+
return isHooksRegistered(d, projectRoot, registration.hooksTarget);
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
function isMcpRegistered(d, projectRoot, mcpTarget) {
|
|
154
169
|
try {
|
|
155
|
-
const mcpTarget = d.manifest.registration?.mcpTarget;
|
|
156
|
-
if (!mcpTarget) return false;
|
|
157
170
|
const mcpFile = path.join(projectRoot, mcpTarget);
|
|
158
171
|
const raw = fs.readFileSync(mcpFile, "utf-8");
|
|
159
172
|
if (mcpTarget.endsWith(".toml")) {
|
|
@@ -167,6 +180,25 @@ function isSymbiontRegistered(d, projectRoot) {
|
|
|
167
180
|
}
|
|
168
181
|
return false;
|
|
169
182
|
}
|
|
183
|
+
function isHooksRegistered(d, projectRoot, hooksTarget) {
|
|
184
|
+
try {
|
|
185
|
+
const hooksFile = path.join(projectRoot, hooksTarget);
|
|
186
|
+
const raw = fs.readFileSync(hooksFile, "utf-8");
|
|
187
|
+
if (d.manifest.registration?.hooksFormat === "plugin-file") {
|
|
188
|
+
return raw.includes(MYCO_PLUGIN_FILE_MARKER);
|
|
189
|
+
}
|
|
190
|
+
const config = JSON.parse(raw);
|
|
191
|
+
const hooks = config.hooks;
|
|
192
|
+
if (!hooks) return false;
|
|
193
|
+
return Object.values(hooks).some(
|
|
194
|
+
(groups) => Array.isArray(groups) && groups.some(
|
|
195
|
+
(group) => typeof group === "object" && group !== null && isMycoHookGroup(group)
|
|
196
|
+
)
|
|
197
|
+
);
|
|
198
|
+
} catch {
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
170
202
|
async function checkDaemon(vaultDir) {
|
|
171
203
|
const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);
|
|
172
204
|
if (!fs.existsSync(daemonFile)) {
|
|
@@ -272,7 +304,8 @@ async function run(args, vaultDir) {
|
|
|
272
304
|
}
|
|
273
305
|
export {
|
|
274
306
|
fix,
|
|
307
|
+
isSymbiontRegistered,
|
|
275
308
|
run,
|
|
276
309
|
runChecks
|
|
277
310
|
};
|
|
278
|
-
//# sourceMappingURL=doctor-
|
|
311
|
+
//# sourceMappingURL=doctor-HJCWHAU4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/doctor.ts"],"sourcesContent":["/**\n * CLI: myco doctor — check vault health and auto-repair fixable issues.\n *\n * Runs a series of health checks against the vault directory and reports\n * status. With --fix, attempts to repair issues it can handle automatically.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { isProcessAlive } from './shared.js';\nimport { MYCO_MCP_SERVER_NAME } from '../symbionts/installer.js';\nimport { isMycoHookGroup } from '../symbionts/install-helpers.js';\n\n// --- Named constants (no magic literals) ---\n\n\n/** Filename of the vault config file. */\nconst CONFIG_FILENAME = 'myco.yaml';\n\n/** Filename of the daemon state file. */\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\n/** Filename of the SQLite database. */\nconst DB_FILENAME = 'myco.db';\n\n/** Column width for the check name in output. */\nconst NAME_COL_WIDTH = 17;\n\n/** Prefix for indented continuation lines (e.g. multi-line agent output). */\nconst CONTINUATION_INDENT = ' '.repeat(NAME_COL_WIDTH);\n\n/** Marker embedded in Myco-managed plugin-file hook targets (Pi, opencode). */\nconst MYCO_PLUGIN_FILE_MARKER = 'myco:plugin-marker';\n\n// --- Types ---\n\nexport interface DoctorCheck {\n name: string;\n status: 'ok' | 'fail' | 'warn';\n detail: string;\n fixable: boolean;\n}\n\n// --- Checks ---\n\n/** Check that myco.yaml exists and parses. Returns the parsed config on success. */\nasync function checkVault(vaultDir: string): Promise<{ check: DoctorCheck; config: import('../config/schema.js').MycoConfig | null }> {\n const configPath = path.join(vaultDir, CONFIG_FILENAME);\n if (!fs.existsSync(configPath)) {\n return { check: { name: 'Vault', status: 'fail', detail: `${CONFIG_FILENAME} not found in ${vaultDir}`, fixable: false }, config: null };\n }\n try {\n const { loadMergedConfig } = await import('../config/loader.js');\n const config = loadMergedConfig(vaultDir);\n return { check: { name: 'Vault', status: 'ok', detail: `.myco/ (v${config.version})`, fixable: false }, config };\n } catch (err) {\n return { check: { name: 'Vault', status: 'fail', detail: `${CONFIG_FILENAME} parse error: ${(err as Error).message}`, fixable: false }, config: null };\n }\n}\n\n/** Check that the SQLite database exists and can be queried. */\nasync function checkDatabase(vaultDir: string): Promise<DoctorCheck> {\n const dbPath = path.join(vaultDir, DB_FILENAME);\n if (!fs.existsSync(dbPath)) {\n return { name: 'Database', status: 'fail', detail: `${DB_FILENAME} not found — run \\`myco init\\``, fixable: false };\n }\n try {\n const { initDatabase, closeDatabase, vaultDbPath } = await import('../db/client.js');\n const db = initDatabase(vaultDbPath(vaultDir));\n const row = db.prepare('SELECT count(*) AS cnt FROM sessions').get() as { cnt: number } | undefined;\n const count = row?.cnt ?? 0;\n closeDatabase();\n return { name: 'Database', status: 'ok', detail: `${DB_FILENAME} (${count.toLocaleString()} sessions)`, fixable: false };\n } catch (err) {\n // Ensure DB is closed even on error\n try { const { closeDatabase } = await import('../db/client.js'); closeDatabase(); } catch { /* ignore */ }\n return { name: 'Database', status: 'fail', detail: `Database error: ${(err as Error).message}`, fixable: false };\n }\n}\n\n/** Check that the intelligence (agent) provider is configured. */\nasync function checkIntelligence(config: import('../config/schema.js').MycoConfig): Promise<DoctorCheck> {\n try {\n const provider = config.agent.provider;\n\n if (!provider) {\n return { name: 'Intelligence', status: 'warn', detail: 'No agent provider configured — run `myco init` to set up', fixable: false };\n }\n\n const label = `${provider.type}${provider.model ? ` / ${provider.model}` : ''}`;\n\n if (provider.type === 'anthropic') {\n return { name: 'Intelligence', status: 'ok', detail: `${label} (SDK handles auth)`, fixable: false };\n }\n\n // Local provider — check reachability\n if (provider.type === 'ollama' || provider.type === 'lmstudio') {\n const { checkLocalProvider } = await import('../intelligence/provider-check.js');\n const status = await checkLocalProvider(provider.type, provider.base_url);\n if (!status.available) {\n return { name: 'Intelligence', status: 'warn', detail: `${label} (not reachable)`, fixable: false };\n }\n return { name: 'Intelligence', status: 'ok', detail: label, fixable: false };\n }\n\n return { name: 'Intelligence', status: 'ok', detail: label, fixable: false };\n } catch (err) {\n return { name: 'Intelligence', status: 'fail', detail: `Intelligence check failed: ${(err as Error).message}`, fixable: false };\n }\n}\n\n/** Check that the embedding provider is configured and reachable. */\nasync function checkEmbeddings(config: import('../config/schema.js').MycoConfig): Promise<DoctorCheck> {\n try {\n const { createEmbeddingProvider } = await import('../intelligence/llm.js');\n const provider = createEmbeddingProvider(config.embedding);\n const available = await provider.isAvailable();\n const label = `${config.embedding.provider} / ${config.embedding.model}`;\n if (available) {\n return { name: 'Embeddings', status: 'ok', detail: label, fixable: false };\n }\n return { name: 'Embeddings', status: 'warn', detail: `${label} (not reachable)`, fixable: false };\n } catch (err) {\n return { name: 'Embeddings', status: 'fail', detail: `Embedding check failed: ${(err as Error).message}`, fixable: false };\n }\n}\n\n/** Check symbiont detection and registration status. */\nasync function checkAgents(vaultDir: string, config: import('../config/schema.js').MycoConfig | null): Promise<DoctorCheck[]> {\n try {\n const { detectSymbionts } = await import('../symbionts/detect.js');\n const { getEnabledSymbiontNames } = await import('../config/loader.js');\n const projectRoot = path.dirname(vaultDir);\n const detected = detectSymbionts(projectRoot);\n\n const enabledNames = config ? getEnabledSymbiontNames(config) : null;\n\n if (detected.length === 0 && !enabledNames) {\n return [{ name: 'Agents', status: 'warn', detail: 'No symbionts detected', fixable: false }];\n }\n\n const checks: DoctorCheck[] = [];\n for (const d of detected) {\n const registered = isSymbiontRegistered(d, projectRoot);\n const enabled = enabledNames ? enabledNames.has(d.manifest.name) : registered;\n\n if (enabled && registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'ok',\n detail: `${d.manifest.displayName} (enabled, registered)`,\n fixable: false,\n });\n } else if (enabled && !registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'warn',\n detail: `${d.manifest.displayName} (enabled but not registered — run \\`myco update\\`)`,\n fixable: false,\n });\n } else if (!enabled && registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'warn',\n detail: `${d.manifest.displayName} (registered but not enabled — run \\`myco remove --symbiont ${d.manifest.name}\\`)`,\n fixable: false,\n });\n } else {\n // Detected but neither enabled nor registered\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'ok',\n detail: `${d.manifest.displayName} (detected, not enabled)`,\n fixable: false,\n });\n }\n }\n\n if (checks.length === 0) {\n return [{ name: 'Agents', status: 'warn', detail: 'No symbionts detected or enabled', fixable: false }];\n }\n\n return checks;\n } catch (err) {\n return [{ name: 'Agents', status: 'fail', detail: `Agent check failed: ${(err as Error).message}`, fixable: false }];\n }\n}\n\n/** Check if a symbiont has Myco registration artifacts installed. */\nexport function isSymbiontRegistered(\n d: import('../symbionts/detect.js').DetectedSymbiont,\n projectRoot: string,\n): boolean {\n const registration = d.manifest.registration;\n if (!registration) return false;\n\n // Most symbionts have native MCP registration. For agents like Pi and\n // Windsurf that intentionally omit mcpTarget, treat their hook/plugin\n // registration as the source of truth instead of forcing a false warning.\n if (registration.mcpTarget) {\n return isMcpRegistered(d, projectRoot, registration.mcpTarget);\n }\n if (registration.hooksTarget) {\n return isHooksRegistered(d, projectRoot, registration.hooksTarget);\n }\n return false;\n}\n\nfunction isMcpRegistered(\n d: import('../symbionts/detect.js').DetectedSymbiont,\n projectRoot: string,\n mcpTarget: string,\n): boolean {\n try {\n const mcpFile = path.join(projectRoot, mcpTarget);\n const raw = fs.readFileSync(mcpFile, 'utf-8');\n\n // TOML: check for section header\n if (mcpTarget.endsWith('.toml')) {\n return raw.includes(`[mcp_servers.${MYCO_MCP_SERVER_NAME}]`);\n }\n\n // JSON: check for server entry under the configured key (defaults to 'mcpServers').\n // opencode uses 'mcp' — without the manifest lookup, doctor reports opencode as\n // unregistered even after a successful install.\n const config = JSON.parse(raw) as Record<string, unknown>;\n const serversKey = d.manifest.registration?.mcpServersKey ?? 'mcpServers';\n const servers = config[serversKey] as Record<string, unknown> | undefined;\n return !!servers?.[MYCO_MCP_SERVER_NAME];\n } catch { /* config missing or malformed */ }\n return false;\n}\n\nfunction isHooksRegistered(\n d: import('../symbionts/detect.js').DetectedSymbiont,\n projectRoot: string,\n hooksTarget: string,\n): boolean {\n try {\n const hooksFile = path.join(projectRoot, hooksTarget);\n const raw = fs.readFileSync(hooksFile, 'utf-8');\n\n if (d.manifest.registration?.hooksFormat === 'plugin-file') {\n return raw.includes(MYCO_PLUGIN_FILE_MARKER);\n }\n\n const config = JSON.parse(raw) as Record<string, unknown>;\n const hooks = config.hooks as Record<string, unknown[]> | undefined;\n if (!hooks) return false;\n\n return Object.values(hooks).some((groups) =>\n Array.isArray(groups) &&\n groups.some((group) =>\n typeof group === 'object' &&\n group !== null &&\n isMycoHookGroup(group as Record<string, unknown>),\n ),\n );\n } catch { /* config missing or malformed */ }\n return false;\n}\n\n/** Check the daemon state file and process liveness. */\nasync function checkDaemon(vaultDir: string): Promise<DoctorCheck> {\n const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);\n if (!fs.existsSync(daemonFile)) {\n return { name: 'Daemon', status: 'warn', detail: 'Not running (no daemon.json)', fixable: false };\n }\n try {\n const state = JSON.parse(fs.readFileSync(daemonFile, 'utf-8')) as { pid?: number; port?: number };\n if (!state.pid) {\n return { name: 'Daemon', status: 'warn', detail: 'daemon.json exists but no PID', fixable: true };\n }\n if (isProcessAlive(state.pid)) {\n return { name: 'Daemon', status: 'ok', detail: `PID ${state.pid}, port ${state.port ?? 'unknown'}`, fixable: false };\n }\n return { name: 'Daemon', status: 'warn', detail: `Stale daemon.json (PID ${state.pid} not running)`, fixable: true };\n } catch (err) {\n return { name: 'Daemon', status: 'fail', detail: `daemon.json parse error: ${(err as Error).message}`, fixable: true };\n }\n}\n\n\n// --- Public API ---\n\n/** Run all health checks against a vault directory. */\nexport async function runChecks(vaultDir: string): Promise<DoctorCheck[]> {\n const { check: vaultCheck, config } = await checkVault(vaultDir);\n const checks: DoctorCheck[] = [vaultCheck];\n\n if (!config) {\n checks.push(\n { name: 'Database', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n { name: 'Intelligence', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n { name: 'Embeddings', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n { name: 'Agents', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n await checkDaemon(vaultDir),\n );\n return checks;\n }\n\n checks.push(await checkDatabase(vaultDir));\n checks.push(await checkIntelligence(config));\n checks.push(await checkEmbeddings(config));\n checks.push(...await checkAgents(vaultDir, config));\n checks.push(await checkDaemon(vaultDir));\n\n return checks;\n}\n\n/** Auto-repair fixable issues. Returns descriptions of actions taken. */\nexport async function fix(vaultDir: string, checks: DoctorCheck[]): Promise<string[]> {\n const actions: string[] = [];\n\n for (const check of checks) {\n if (!check.fixable || check.status === 'ok') continue;\n\n // Fix stale daemon.json\n if (check.name === 'Daemon' && check.detail.includes('Stale')) {\n const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);\n fs.unlinkSync(daemonFile);\n actions.push('Removed stale daemon.json');\n }\n\n // Fix malformed daemon.json\n if (check.name === 'Daemon' && check.detail.includes('parse error')) {\n const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);\n fs.unlinkSync(daemonFile);\n actions.push('Removed malformed daemon.json');\n }\n\n // Advise on database issues\n if (check.name === 'Database' && check.status === 'fail') {\n actions.push('Run `myco init` to initialize the database');\n }\n }\n\n return actions;\n}\n\n// --- Output formatting ---\n\n/** Status label width (visible characters). */\nconst STATUS_COL_WIDTH = 6;\n\nconst STATUS_LABELS: Record<DoctorCheck['status'], { text: string; color: string }> = {\n ok: { text: 'ok', color: '\\x1b[32m' },\n fail: { text: 'FAIL', color: '\\x1b[31m' },\n warn: { text: '!!', color: '\\x1b[33m' },\n};\n\nfunction formatCheck(check: DoctorCheck): string {\n const name = check.name ? check.name.padEnd(NAME_COL_WIDTH) : CONTINUATION_INDENT;\n const { text, color } = STATUS_LABELS[check.status];\n const paddedText = text.padEnd(STATUS_COL_WIDTH);\n return ` ${name}${color}${paddedText}\\x1b[0m${check.detail}`;\n}\n\n// --- CLI entry point ---\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const shouldFix = args.includes('--fix');\n\n console.log('\\nmyco doctor\\n');\n\n const checks = await runChecks(vaultDir);\n\n for (const check of checks) {\n console.log(formatCheck(check));\n }\n\n const issues = checks.filter(c => c.status !== 'ok');\n const fixable = issues.filter(c => c.fixable);\n\n console.log('');\n\n if (issues.length === 0) {\n console.log(' All checks passed.\\n');\n return;\n }\n\n console.log(` ${issues.length} issue(s) found.`);\n\n if (shouldFix) {\n const actions = await fix(vaultDir, checks);\n if (actions.length > 0) {\n console.log('');\n for (const action of actions) {\n console.log(` Fixed: ${action}`);\n }\n console.log('');\n } else {\n console.log(' No auto-fixable issues.\\n');\n }\n } else if (fixable.length > 0) {\n console.log(` Run \\`myco doctor --fix\\` to repair ${fixable.length} fixable issue(s).\\n`);\n } else {\n console.log('');\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
cleanupOnTaskFailure,
|
|
4
|
+
composePhasePrompt,
|
|
5
|
+
composeTaskPrompt,
|
|
6
|
+
computeWaves,
|
|
7
|
+
finalizeOnTaskSuccess,
|
|
8
|
+
resolvePhaseExecution,
|
|
9
|
+
runAgent
|
|
10
|
+
} from "./chunk-X2IRGXGF.js";
|
|
11
|
+
import "./chunk-QATYARI5.js";
|
|
12
|
+
import "./chunk-QLLBJEM7.js";
|
|
13
|
+
import "./chunk-USVFEWYL.js";
|
|
14
|
+
import "./chunk-AUIXX33A.js";
|
|
15
|
+
import "./chunk-LQIPXVDH.js";
|
|
16
|
+
import "./chunk-FCJ5JV54.js";
|
|
17
|
+
import "./chunk-U5EW2VIQ.js";
|
|
18
|
+
import "./chunk-CISWUP5W.js";
|
|
19
|
+
import "./chunk-X3IGT5RV.js";
|
|
20
|
+
import "./chunk-N7Z3LUEZ.js";
|
|
21
|
+
import "./chunk-RQSJLWP4.js";
|
|
22
|
+
import "./chunk-EEOJWLMP.js";
|
|
23
|
+
import "./chunk-DTWUHHFI.js";
|
|
24
|
+
import "./chunk-53RPGOEN.js";
|
|
25
|
+
import "./chunk-OUJSQSKE.js";
|
|
26
|
+
import "./chunk-POEPHBQK.js";
|
|
27
|
+
import "./chunk-MYX5NCRH.js";
|
|
28
|
+
import "./chunk-ENZR5NG7.js";
|
|
29
|
+
import "./chunk-LPUQPDC2.js";
|
|
30
|
+
import "./chunk-6C6QZ4PM.js";
|
|
31
|
+
import "./chunk-UUHLLQXO.js";
|
|
32
|
+
import "./chunk-6LQIMRTC.js";
|
|
33
|
+
import "./chunk-ODXLRR4U.js";
|
|
34
|
+
import "./chunk-U6PF3YII.js";
|
|
35
|
+
import "./chunk-PZUWP5VK.js";
|
|
36
|
+
export {
|
|
37
|
+
cleanupOnTaskFailure,
|
|
38
|
+
composePhasePrompt,
|
|
39
|
+
composeTaskPrompt,
|
|
40
|
+
computeWaves,
|
|
41
|
+
finalizeOnTaskSuccess,
|
|
42
|
+
resolvePhaseExecution,
|
|
43
|
+
runAgent
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=executor-DO6QFC6G.js.map
|