@goondocks/myco 0.16.2 → 0.17.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/CONTRIBUTING.md +3 -3
- package/README.md +4 -3
- package/dist/{agent-run-MNU2QWHR.js → agent-run-ZDHXORE2.js} +7 -7
- package/dist/{agent-tasks-NCRKUU6E.js → agent-tasks-IPUWMMDZ.js} +7 -7
- package/dist/{chunk-P6C6ADBU.js → chunk-2IJ6C63F.js} +2 -2
- package/dist/{chunk-V2ZBYKDU.js → chunk-2WRXLYG6.js} +3 -3
- package/dist/{chunk-TIAYBVSI.js → chunk-4JPUC6RL.js} +170 -56
- package/dist/chunk-4JPUC6RL.js.map +1 -0
- package/dist/{chunk-34NHDRWI.js → chunk-6SDC6V3N.js} +2 -2
- package/dist/{chunk-34NHDRWI.js.map → chunk-6SDC6V3N.js.map} +1 -1
- package/dist/{chunk-6JZEAOLG.js → chunk-CPL76CYD.js} +3 -3
- package/dist/{chunk-VWXDSDJU.js → chunk-DKSQMH5X.js} +2 -2
- package/dist/{chunk-GSKXOCFG.js → chunk-EBIYONNZ.js} +21 -1
- package/dist/chunk-EBIYONNZ.js.map +1 -0
- package/dist/{chunk-XAXQ72L3.js → chunk-FEX6ALLH.js} +2 -2
- package/dist/{chunk-UILSK6DK.js → chunk-GBYLHPML.js} +2 -2
- package/dist/{chunk-DZWSHCAC.js → chunk-KGL5QSDN.js} +2 -2
- package/dist/{chunk-4JVHWBZF.js → chunk-KKEMVH6D.js} +2 -2
- package/dist/{chunk-BNAYBGPH.js → chunk-MSM775XQ.js} +6 -5
- package/dist/{chunk-BNAYBGPH.js.map → chunk-MSM775XQ.js.map} +1 -1
- package/dist/{chunk-CJ2KTRWI.js → chunk-OGNEW5CN.js} +2 -2
- package/dist/{chunk-2E7YGLLN.js → chunk-PFF4KB4O.js} +2 -2
- package/dist/{chunk-4U6X35TH.js → chunk-QBB6LX57.js} +3 -3
- package/dist/{chunk-C3GNF7RJ.js → chunk-QQ7CXA7Q.js} +5 -5
- package/dist/{chunk-I3S6L7QC.js → chunk-U3SSOSIR.js} +2 -2
- package/dist/{chunk-RJRRHTAA.js → chunk-U63GDHYJ.js} +3 -3
- package/dist/{chunk-IRSNOBGD.js → chunk-UDBCAFXS.js} +2 -2
- package/dist/{chunk-SGYYOTNM.js → chunk-VGVRBSLC.js} +2 -2
- package/dist/{chunk-W7ZOOZMK.js → chunk-VQQ57UPG.js} +3 -3
- package/dist/{chunk-ZMODJWI5.js → chunk-XVWJ273L.js} +4 -4
- package/dist/{chunk-RPILIIYT.js → chunk-Y7QCKCEJ.js} +2 -2
- package/dist/{chunk-D63XTGBV.js → chunk-YTOD6L6N.js} +6 -6
- package/dist/{chunk-D2NTFSVO.js → chunk-ZUSTCXHT.js} +3 -3
- package/dist/{cli-RYYABF2X.js → cli-BRDOPJW3.js} +40 -40
- package/dist/{client-5VXKGNN2.js → client-AQZMD3LB.js} +4 -4
- package/dist/{config-VHHCGE4F.js → config-K3CJEFFO.js} +3 -3
- package/dist/{detect-6FNYONJF.js → detect-NJ2OREDP.js} +2 -2
- package/dist/{detect-providers-R7QOB3H6.js → detect-providers-OE6HWW3M.js} +4 -4
- package/dist/{doctor-M4Q7VCDO.js → doctor-YOUCIJJY.js} +14 -13
- package/dist/doctor-YOUCIJJY.js.map +1 -0
- package/dist/{executor-ULRFWJCH.js → executor-UYNV4EOQ.js} +17 -17
- package/dist/{init-AEHAQFPK.js → init-MTMEFG4E.js} +17 -17
- package/dist/{init-wizard-SVKDS3LR.js → init-wizard-ZS3CV6CM.js} +7 -7
- package/dist/{installer-AARSFXI6.js → installer-CTWQB4RS.js} +2 -2
- package/dist/{llm-LS7U7BHC.js → llm-PGETQHZ2.js} +7 -7
- package/dist/{loader-QDWQTBX4.js → loader-AVWL7PNO.js} +3 -3
- package/dist/{loader-YQDG5GI5.js → loader-J56KP27U.js} +3 -3
- package/dist/{main-GAGOE6XB.js → main-ZIMYW2AB.js} +105 -60
- package/dist/main-ZIMYW2AB.js.map +1 -0
- package/dist/{open-4QMAL32X.js → open-77QXL7VY.js} +7 -7
- package/dist/{openai-embeddings-FUW6CSN2.js → openai-embeddings-LZKY6RV5.js} +4 -4
- package/dist/{openrouter-YSIUSUQL.js → openrouter-UTOZG6Z5.js} +4 -4
- package/dist/{post-compact-OAWEBEDK.js → post-compact-CA7O7QPL.js} +7 -7
- package/dist/{post-tool-use-B3KOEOIM.js → post-tool-use-JNXJIGNK.js} +6 -6
- package/dist/{post-tool-use-failure-2I5ELTTN.js → post-tool-use-failure-V52CZWVZ.js} +7 -7
- package/dist/{pre-compact-NOXNJ5EV.js → pre-compact-J2GSDQCJ.js} +7 -7
- package/dist/{provider-check-VEYONGNU.js → provider-check-CESRPIY5.js} +4 -4
- package/dist/{registry-5R3DLJQH.js → registry-SPKP2WLI.js} +4 -4
- package/dist/{remove-LX4G6KP7.js → remove-ODPLWK7O.js} +9 -9
- package/dist/{resolution-events-CHOKR35X.js → resolution-events-CLDXZF67.js} +4 -4
- package/dist/{restart-WSNBSALP.js → restart-6KKZODOI.js} +8 -8
- package/dist/{search-Q6N3SHKP.js → search-U6N2DSOI.js} +8 -8
- package/dist/{server-OFRKA6N7.js → server-SP4G7MY7.js} +5 -5
- package/dist/{server-OFRKA6N7.js.map → server-SP4G7MY7.js.map} +1 -1
- package/dist/{session-SKXJLJYH.js → session-6R3RNVKD.js} +9 -9
- package/dist/{session-end-5EIVRCPS.js → session-end-TCFCYDBL.js} +6 -6
- package/dist/{session-start-OL2ICLED.js → session-start-XXN2TVNI.js} +11 -11
- package/dist/{setup-llm-BRNQW7K2.js → setup-llm-GISFI73Z.js} +8 -8
- 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 +26 -0
- package/dist/src/symbionts/templates/opencode/mcp.json +6 -0
- package/dist/src/symbionts/templates/opencode/package.json +5 -0
- package/dist/src/symbionts/templates/opencode/plugin.ts +690 -0
- package/dist/src/symbionts/templates/opencode/settings.json +8 -0
- package/dist/{stats-U5FHDIR7.js → stats-MYQD4OVD.js} +9 -9
- package/dist/{stop-YUZNQBRQ.js → stop-K6TDJORY.js} +6 -6
- package/dist/{stop-failure-6WFAKH2U.js → stop-failure-U635O5A3.js} +7 -7
- package/dist/{subagent-start-GWJXAAH3.js → subagent-start-LLGQBC5Q.js} +7 -7
- package/dist/{subagent-stop-B44SMV2R.js → subagent-stop-BO3GZWXD.js} +7 -7
- package/dist/{task-completed-GIUFSRTP.js → task-completed-3ZJHSI2E.js} +7 -7
- package/dist/{team-3YI3UWB3.js → team-OJLQCVE3.js} +5 -5
- package/dist/ui/assets/{index-RYHXSJv1.js → index-2UyTdjlV.js} +12 -12
- package/dist/ui/assets/index-Cts1wLEW.css +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/{update-QPRTLGYU.js → update-HR7WMESA.js} +9 -9
- package/dist/{user-prompt-submit-FSYEPW7W.js → user-prompt-submit-NM73R4I3.js} +6 -6
- package/dist/{verify-ITBMLK67.js → verify-PSERIZPF.js} +8 -8
- package/dist/{version-VS2EDHBG.js → version-YCODQZSX.js} +2 -2
- package/package.json +1 -1
- package/skills/rules/SKILL.md +1 -1
- package/dist/chunk-GSKXOCFG.js.map +0 -1
- package/dist/chunk-TIAYBVSI.js.map +0 -1
- package/dist/doctor-M4Q7VCDO.js.map +0 -1
- package/dist/main-GAGOE6XB.js.map +0 -1
- package/dist/ui/assets/index-Bjv_ck3c.css +0 -1
- /package/dist/{agent-run-MNU2QWHR.js.map → agent-run-ZDHXORE2.js.map} +0 -0
- /package/dist/{agent-tasks-NCRKUU6E.js.map → agent-tasks-IPUWMMDZ.js.map} +0 -0
- /package/dist/{chunk-P6C6ADBU.js.map → chunk-2IJ6C63F.js.map} +0 -0
- /package/dist/{chunk-V2ZBYKDU.js.map → chunk-2WRXLYG6.js.map} +0 -0
- /package/dist/{chunk-6JZEAOLG.js.map → chunk-CPL76CYD.js.map} +0 -0
- /package/dist/{chunk-VWXDSDJU.js.map → chunk-DKSQMH5X.js.map} +0 -0
- /package/dist/{chunk-XAXQ72L3.js.map → chunk-FEX6ALLH.js.map} +0 -0
- /package/dist/{chunk-UILSK6DK.js.map → chunk-GBYLHPML.js.map} +0 -0
- /package/dist/{chunk-DZWSHCAC.js.map → chunk-KGL5QSDN.js.map} +0 -0
- /package/dist/{chunk-4JVHWBZF.js.map → chunk-KKEMVH6D.js.map} +0 -0
- /package/dist/{chunk-CJ2KTRWI.js.map → chunk-OGNEW5CN.js.map} +0 -0
- /package/dist/{chunk-2E7YGLLN.js.map → chunk-PFF4KB4O.js.map} +0 -0
- /package/dist/{chunk-4U6X35TH.js.map → chunk-QBB6LX57.js.map} +0 -0
- /package/dist/{chunk-C3GNF7RJ.js.map → chunk-QQ7CXA7Q.js.map} +0 -0
- /package/dist/{chunk-I3S6L7QC.js.map → chunk-U3SSOSIR.js.map} +0 -0
- /package/dist/{chunk-RJRRHTAA.js.map → chunk-U63GDHYJ.js.map} +0 -0
- /package/dist/{chunk-IRSNOBGD.js.map → chunk-UDBCAFXS.js.map} +0 -0
- /package/dist/{chunk-SGYYOTNM.js.map → chunk-VGVRBSLC.js.map} +0 -0
- /package/dist/{chunk-W7ZOOZMK.js.map → chunk-VQQ57UPG.js.map} +0 -0
- /package/dist/{chunk-ZMODJWI5.js.map → chunk-XVWJ273L.js.map} +0 -0
- /package/dist/{chunk-RPILIIYT.js.map → chunk-Y7QCKCEJ.js.map} +0 -0
- /package/dist/{chunk-D63XTGBV.js.map → chunk-YTOD6L6N.js.map} +0 -0
- /package/dist/{chunk-D2NTFSVO.js.map → chunk-ZUSTCXHT.js.map} +0 -0
- /package/dist/{cli-RYYABF2X.js.map → cli-BRDOPJW3.js.map} +0 -0
- /package/dist/{client-5VXKGNN2.js.map → client-AQZMD3LB.js.map} +0 -0
- /package/dist/{config-VHHCGE4F.js.map → config-K3CJEFFO.js.map} +0 -0
- /package/dist/{detect-6FNYONJF.js.map → detect-NJ2OREDP.js.map} +0 -0
- /package/dist/{detect-providers-R7QOB3H6.js.map → detect-providers-OE6HWW3M.js.map} +0 -0
- /package/dist/{executor-ULRFWJCH.js.map → executor-UYNV4EOQ.js.map} +0 -0
- /package/dist/{init-AEHAQFPK.js.map → init-MTMEFG4E.js.map} +0 -0
- /package/dist/{init-wizard-SVKDS3LR.js.map → init-wizard-ZS3CV6CM.js.map} +0 -0
- /package/dist/{installer-AARSFXI6.js.map → installer-CTWQB4RS.js.map} +0 -0
- /package/dist/{llm-LS7U7BHC.js.map → llm-PGETQHZ2.js.map} +0 -0
- /package/dist/{loader-QDWQTBX4.js.map → loader-AVWL7PNO.js.map} +0 -0
- /package/dist/{loader-YQDG5GI5.js.map → loader-J56KP27U.js.map} +0 -0
- /package/dist/{open-4QMAL32X.js.map → open-77QXL7VY.js.map} +0 -0
- /package/dist/{openai-embeddings-FUW6CSN2.js.map → openai-embeddings-LZKY6RV5.js.map} +0 -0
- /package/dist/{openrouter-YSIUSUQL.js.map → openrouter-UTOZG6Z5.js.map} +0 -0
- /package/dist/{post-compact-OAWEBEDK.js.map → post-compact-CA7O7QPL.js.map} +0 -0
- /package/dist/{post-tool-use-B3KOEOIM.js.map → post-tool-use-JNXJIGNK.js.map} +0 -0
- /package/dist/{post-tool-use-failure-2I5ELTTN.js.map → post-tool-use-failure-V52CZWVZ.js.map} +0 -0
- /package/dist/{pre-compact-NOXNJ5EV.js.map → pre-compact-J2GSDQCJ.js.map} +0 -0
- /package/dist/{provider-check-VEYONGNU.js.map → provider-check-CESRPIY5.js.map} +0 -0
- /package/dist/{registry-5R3DLJQH.js.map → registry-SPKP2WLI.js.map} +0 -0
- /package/dist/{remove-LX4G6KP7.js.map → remove-ODPLWK7O.js.map} +0 -0
- /package/dist/{resolution-events-CHOKR35X.js.map → resolution-events-CLDXZF67.js.map} +0 -0
- /package/dist/{restart-WSNBSALP.js.map → restart-6KKZODOI.js.map} +0 -0
- /package/dist/{search-Q6N3SHKP.js.map → search-U6N2DSOI.js.map} +0 -0
- /package/dist/{session-SKXJLJYH.js.map → session-6R3RNVKD.js.map} +0 -0
- /package/dist/{session-end-5EIVRCPS.js.map → session-end-TCFCYDBL.js.map} +0 -0
- /package/dist/{session-start-OL2ICLED.js.map → session-start-XXN2TVNI.js.map} +0 -0
- /package/dist/{setup-llm-BRNQW7K2.js.map → setup-llm-GISFI73Z.js.map} +0 -0
- /package/dist/{stats-U5FHDIR7.js.map → stats-MYQD4OVD.js.map} +0 -0
- /package/dist/{stop-YUZNQBRQ.js.map → stop-K6TDJORY.js.map} +0 -0
- /package/dist/{stop-failure-6WFAKH2U.js.map → stop-failure-U635O5A3.js.map} +0 -0
- /package/dist/{subagent-start-GWJXAAH3.js.map → subagent-start-LLGQBC5Q.js.map} +0 -0
- /package/dist/{subagent-stop-B44SMV2R.js.map → subagent-stop-BO3GZWXD.js.map} +0 -0
- /package/dist/{task-completed-GIUFSRTP.js.map → task-completed-3ZJHSI2E.js.map} +0 -0
- /package/dist/{team-3YI3UWB3.js.map → team-OJLQCVE3.js.map} +0 -0
- /package/dist/{update-QPRTLGYU.js.map → update-HR7WMESA.js.map} +0 -0
- /package/dist/{user-prompt-submit-FSYEPW7W.js.map → user-prompt-submit-NM73R4I3.js.map} +0 -0
- /package/dist/{verify-ITBMLK67.js.map → verify-PSERIZPF.js.map} +0 -0
- /package/dist/{version-VS2EDHBG.js.map → version-YCODQZSX.js.map} +0 -0
package/CONTRIBUTING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Contributing to Myco
|
|
2
2
|
|
|
3
|
-
Myco is a collective intelligence plugin for coding projects, supporting Claude Code and
|
|
3
|
+
Myco is a collective intelligence plugin for coding projects, supporting Claude Code, Cursor, Codex, VS Code Copilot, Gemini CLI, Windsurf, and OpenCode. This guide covers development setup and project conventions. For architecture details, see [Lifecycle docs](docs/lifecycle.md).
|
|
4
4
|
|
|
5
5
|
## Installing Myco (End Users)
|
|
6
6
|
|
|
@@ -20,7 +20,7 @@ This sets up the vault, configures your LLM backend, and starts capturing sessio
|
|
|
20
20
|
### Requirements
|
|
21
21
|
|
|
22
22
|
- Node.js 22+
|
|
23
|
-
- Claude Code or
|
|
23
|
+
- One or more supported coding agents (Claude Code, Cursor, Codex, VS Code Copilot, Gemini CLI, Windsurf, or OpenCode)
|
|
24
24
|
- **Embedding provider** (one of): [Ollama](https://ollama.com) with `bge-m3` (local, free), [OpenRouter](https://openrouter.ai), or [OpenAI](https://platform.openai.com)
|
|
25
25
|
- **Intelligence provider** (one of): Cloud (Claude), [Ollama](https://ollama.com), or [LM Studio](https://lmstudio.ai)
|
|
26
26
|
|
|
@@ -95,7 +95,7 @@ myco/
|
|
|
95
95
|
│ ├── mcp/ # MCP server + tool handlers
|
|
96
96
|
│ ├── prompts/ # LLM prompt templates (extraction, summary, title, classification)
|
|
97
97
|
│ ├── services/ # Shared service logic (used by both CLI and API)
|
|
98
|
-
│ ├── symbionts/ # Symbiont adapters (Claude Code, Cursor, Codex) — transcript discovery, parsing, and project-local registration
|
|
98
|
+
│ ├── symbionts/ # Symbiont adapters and manifests (Claude Code, Cursor, Codex, VS Code, Gemini, Windsurf, OpenCode) — transcript discovery, parsing, and project-local registration
|
|
99
99
|
│ └── vault/ # Reader, writer, Zod schemas for database records
|
|
100
100
|
├── tests/ # Mirrors src/ structure
|
|
101
101
|
├── ui/ # React + Tailwind dashboard (Vite build → dist/ui/)
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<a href="https://www.npmjs.com/package/@goondocks/myco"><img src="https://img.shields.io/npm/v/@goondocks/myco?label=npm&color=22c55e" alt="npm"></a>
|
|
13
13
|
<a href="https://github.com/goondocks-co/myco/blob/main/LICENSE"><img src="https://img.shields.io/github/license/goondocks-co/myco?color=22c55e" alt="License"></a>
|
|
14
14
|
<img src="https://img.shields.io/badge/node-%3E%3D22-22c55e" alt="Node 22+">
|
|
15
|
-
<img src="https://img.shields.io/badge/agents-Claude%20Code%20%7C%20Cursor%20%7C%20Codex%20%7C%20VS%20Code%20%7C%20Gemini%20%7C%20Windsurf-22c55e" alt="Claude Code | Cursor | Codex | VS Code | Gemini | Windsurf">
|
|
15
|
+
<img src="https://img.shields.io/badge/agents-Claude%20Code%20%7C%20Cursor%20%7C%20Codex%20%7C%20VS%20Code%20%7C%20Gemini%20%7C%20Windsurf%20%7C%20OpenCode-22c55e" alt="Claude Code | Cursor | Codex | VS Code | Gemini | Windsurf | OpenCode">
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
18
|
```bash
|
|
@@ -25,7 +25,7 @@ cd your-project
|
|
|
25
25
|
myco init
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
The wizard detects your coding agents, sets up intelligence and embedding providers, and starts capturing. Works with Claude Code, Cursor, Codex, VS Code Copilot, Gemini CLI, and
|
|
28
|
+
The wizard detects your coding agents, sets up intelligence and embedding providers, and starts capturing. Works with Claude Code, Cursor, Codex, VS Code Copilot, Gemini CLI, Windsurf, and OpenCode.
|
|
29
29
|
|
|
30
30
|
## What is Myco?
|
|
31
31
|
|
|
@@ -110,8 +110,9 @@ Myco integrates with coding agents through **symbiont** adapters — named for t
|
|
|
110
110
|
| [VS Code Copilot](https://code.visualstudio.com/docs/copilot) | `.github/hooks/` | `.vscode/mcp.json` | `.agents/skills/` | `autoApprove` | — |
|
|
111
111
|
| [Gemini CLI](https://geminicli.com) | `.gemini/settings.json` | `.gemini/settings.json` | `.agents/skills/` | `coreTools` | `.gemini/plans/` |
|
|
112
112
|
| [Windsurf](https://windsurf.com) | `.windsurf/hooks.json` | — | `.agents/skills/` | `cascadeCommandsAllowList` | `~/.windsurf/plans/` |
|
|
113
|
+
| [OpenCode](https://opencode.ai) | `.opencode/plugins/myco.ts` (plugin) | `opencode.json` (`mcp` key) | `.agents/skills/` | `permission.bash` | `.opencode/plans/` |
|
|
113
114
|
|
|
114
|
-
Skills are installed once to `.agents/skills/` (the emerging cross-agent standard) and symlinked to each agent's native skills directory. Adding a new agent requires only a YAML manifest and
|
|
115
|
+
Skills are installed once to `.agents/skills/` (the emerging cross-agent standard) and symlinked to each agent's native skills directory. Adding a new agent requires only a YAML manifest and templates — no code changes for JSON-hook agents, and a small manifest extension for plugin-based agents like OpenCode.
|
|
115
116
|
|
|
116
117
|
See the [Symbiont docs](docs/symbionts.md) for detailed setup information per agent.
|
|
117
118
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
connectToDaemon
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MSM775XQ.js";
|
|
5
5
|
import "./chunk-SAKJMNSR.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-4JPUC6RL.js";
|
|
7
|
+
import "./chunk-DKSQMH5X.js";
|
|
8
8
|
import "./chunk-MYX5NCRH.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-U63GDHYJ.js";
|
|
10
|
+
import "./chunk-PFF4KB4O.js";
|
|
11
11
|
import "./chunk-LPUQPDC2.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-6SDC6V3N.js";
|
|
13
13
|
import "./chunk-E7NUADTQ.js";
|
|
14
14
|
import "./chunk-PZUWP5VK.js";
|
|
15
15
|
|
|
@@ -32,4 +32,4 @@ async function run(args, vaultDir) {
|
|
|
32
32
|
export {
|
|
33
33
|
run
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=agent-run-
|
|
35
|
+
//# sourceMappingURL=agent-run-ZDHXORE2.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
connectToDaemon
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MSM775XQ.js";
|
|
5
5
|
import "./chunk-SAKJMNSR.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-4JPUC6RL.js";
|
|
7
|
+
import "./chunk-DKSQMH5X.js";
|
|
8
8
|
import "./chunk-MYX5NCRH.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-U63GDHYJ.js";
|
|
10
|
+
import "./chunk-PFF4KB4O.js";
|
|
11
11
|
import "./chunk-LPUQPDC2.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-6SDC6V3N.js";
|
|
13
13
|
import "./chunk-E7NUADTQ.js";
|
|
14
14
|
import "./chunk-PZUWP5VK.js";
|
|
15
15
|
|
|
@@ -178,4 +178,4 @@ async function run(args, vaultDir) {
|
|
|
178
178
|
export {
|
|
179
179
|
run
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=agent-tasks-
|
|
181
|
+
//# sourceMappingURL=agent-tasks-IPUWMMDZ.js.map
|
|
@@ -2,7 +2,7 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
|
|
|
2
2
|
import {
|
|
3
3
|
getTeamMachineId,
|
|
4
4
|
syncRow
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KKEMVH6D.js";
|
|
6
6
|
import {
|
|
7
7
|
getDatabase
|
|
8
8
|
} from "./chunk-MYX5NCRH.js";
|
|
@@ -88,4 +88,4 @@ export {
|
|
|
88
88
|
insertResolutionEvent,
|
|
89
89
|
listResolutionEvents
|
|
90
90
|
};
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-2IJ6C63F.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
loadManifests
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EBIYONNZ.js";
|
|
5
5
|
import {
|
|
6
6
|
STDIN_TIMEOUT_MS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6SDC6V3N.js";
|
|
8
8
|
|
|
9
9
|
// src/hooks/read-stdin.ts
|
|
10
10
|
function readStdin() {
|
|
@@ -80,4 +80,4 @@ export {
|
|
|
80
80
|
readStdin,
|
|
81
81
|
normalizeHookInput
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-2WRXLYG6.js.map
|
|
@@ -257,6 +257,8 @@ var HOOK_GUARD_PROJECT_PATH = `.agents/${HOOK_GUARD_INSTALLED_FILENAME}`;
|
|
|
257
257
|
var SKILLS_SUBDIR = "skills";
|
|
258
258
|
var CANONICAL_SKILLS_DIR = ".agents/skills";
|
|
259
259
|
var MYCO_MCP_SERVER_NAME = "myco";
|
|
260
|
+
var MYCO_PLUGIN_FILE_MARKER = "myco:plugin-marker";
|
|
261
|
+
var HOOKS_FORMAT_PLUGIN_FILE = "plugin-file";
|
|
260
262
|
var INSTRUCTIONS_STUB_MARKER = "Edit AGENTS.md, not this file";
|
|
261
263
|
var INSTRUCTIONS_REF_START = "<!-- myco:agents-ref:start -->";
|
|
262
264
|
var INSTRUCTIONS_REF_END = "<!-- myco:agents-ref:end -->";
|
|
@@ -271,6 +273,39 @@ var SymbiontInstaller = class {
|
|
|
271
273
|
this.projectRoot = projectRoot;
|
|
272
274
|
this.packageRoot = packageRoot;
|
|
273
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* Read a template file as raw text, checking both source and dist layouts.
|
|
278
|
+
* `relPath` is relative to `TEMPLATES_SUBDIR` — e.g. `'hook-guard.cjs'` for
|
|
279
|
+
* a shared template or `'opencode/plugin.ts'` for a per-agent template.
|
|
280
|
+
*/
|
|
281
|
+
readTemplateFile(relPath) {
|
|
282
|
+
const candidates = [
|
|
283
|
+
path3.join(this.packageRoot, TEMPLATES_SUBDIR, relPath),
|
|
284
|
+
// tsup preserves the src/ prefix under dist/, so the same subdir works in both layouts
|
|
285
|
+
path3.join(this.packageRoot, "dist", TEMPLATES_SUBDIR, relPath)
|
|
286
|
+
];
|
|
287
|
+
for (const filePath of candidates) {
|
|
288
|
+
try {
|
|
289
|
+
return fs3.readFileSync(filePath, "utf-8");
|
|
290
|
+
} catch {
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Write a Myco-managed file with a content-diff gate. Creates parent dirs as
|
|
297
|
+
* needed. Returns `true` if the file was written (new or updated), `false` if
|
|
298
|
+
* the on-disk content already matches and the write was skipped.
|
|
299
|
+
*/
|
|
300
|
+
writeManagedFile(absPath, content) {
|
|
301
|
+
try {
|
|
302
|
+
if (fs3.readFileSync(absPath, "utf-8") === content) return false;
|
|
303
|
+
} catch {
|
|
304
|
+
}
|
|
305
|
+
fs3.mkdirSync(path3.dirname(absPath), { recursive: true });
|
|
306
|
+
fs3.writeFileSync(absPath, content, "utf-8");
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
274
309
|
/**
|
|
275
310
|
* Copy the hook-guard script into .agents/myco-hook.cjs.
|
|
276
311
|
* Returns true if the file was written (or updated); false if skipped or N/A.
|
|
@@ -278,16 +313,12 @@ var SymbiontInstaller = class {
|
|
|
278
313
|
installHookGuard() {
|
|
279
314
|
const reg = this.manifest.registration;
|
|
280
315
|
if (!reg?.hooksTarget) return false;
|
|
281
|
-
const guardTemplate = this.
|
|
316
|
+
const guardTemplate = this.readTemplateFile(HOOK_GUARD_TEMPLATE_FILENAME);
|
|
282
317
|
if (!guardTemplate) return false;
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
288
|
-
fs3.mkdirSync(path3.dirname(targetPath), { recursive: true });
|
|
289
|
-
fs3.writeFileSync(targetPath, guardTemplate, "utf-8");
|
|
290
|
-
return true;
|
|
318
|
+
return this.writeManagedFile(
|
|
319
|
+
path3.join(this.projectRoot, HOOK_GUARD_PROJECT_PATH),
|
|
320
|
+
guardTemplate
|
|
321
|
+
);
|
|
291
322
|
}
|
|
292
323
|
/**
|
|
293
324
|
* Remove the hook-guard script from .agents/myco-hook.cjs.
|
|
@@ -304,34 +335,23 @@ var SymbiontInstaller = class {
|
|
|
304
335
|
return false;
|
|
305
336
|
}
|
|
306
337
|
}
|
|
307
|
-
/** Load the hook-guard template from package root. */
|
|
308
|
-
loadHookGuardTemplate() {
|
|
309
|
-
const candidates = [
|
|
310
|
-
path3.join(this.packageRoot, TEMPLATES_SUBDIR, HOOK_GUARD_TEMPLATE_FILENAME),
|
|
311
|
-
path3.join(this.packageRoot, "dist", TEMPLATES_SUBDIR, HOOK_GUARD_TEMPLATE_FILENAME)
|
|
312
|
-
];
|
|
313
|
-
for (const p of candidates) {
|
|
314
|
-
try {
|
|
315
|
-
return fs3.readFileSync(p, "utf-8");
|
|
316
|
-
} catch {
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
return null;
|
|
320
|
-
}
|
|
321
338
|
/** Load a JSON template file for this symbiont. Returns null if not found. */
|
|
322
339
|
loadTemplate(name) {
|
|
323
|
-
const
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
try {
|
|
330
|
-
return JSON.parse(fs3.readFileSync(filePath, "utf-8"));
|
|
331
|
-
} catch {
|
|
332
|
-
}
|
|
340
|
+
const raw = this.readTemplateFile(path3.join(this.manifest.name, `${name}.json`));
|
|
341
|
+
if (raw === null) return null;
|
|
342
|
+
try {
|
|
343
|
+
return JSON.parse(raw);
|
|
344
|
+
} catch {
|
|
345
|
+
return null;
|
|
333
346
|
}
|
|
334
|
-
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Load a template file verbatim (no JSON parsing).
|
|
350
|
+
* Used for plugin-file hook templates (e.g., opencode's plugin.ts) and any
|
|
351
|
+
* other template that is copied to the project without structural merging.
|
|
352
|
+
*/
|
|
353
|
+
loadTemplateRaw(filename) {
|
|
354
|
+
return this.readTemplateFile(path3.join(this.manifest.name, filename));
|
|
335
355
|
}
|
|
336
356
|
/** Run all registration steps. */
|
|
337
357
|
install() {
|
|
@@ -342,7 +362,8 @@ var SymbiontInstaller = class {
|
|
|
342
362
|
mcp: this.installMcp(),
|
|
343
363
|
skills: this.installSkills(),
|
|
344
364
|
settings: this.installSettings(),
|
|
345
|
-
instructions: this.installInstructions()
|
|
365
|
+
instructions: this.installInstructions(),
|
|
366
|
+
pluginPackage: this.installPluginPackage()
|
|
346
367
|
};
|
|
347
368
|
this.updateGitignore();
|
|
348
369
|
return result;
|
|
@@ -351,6 +372,9 @@ var SymbiontInstaller = class {
|
|
|
351
372
|
* Check if ALL non-null JSON targets share the same file (e.g., Gemini).
|
|
352
373
|
* Only batches when every target resolves to one path — partial overlaps
|
|
353
374
|
* (e.g., Claude Code: hooks+settings share but MCP is separate) use normal path.
|
|
375
|
+
*
|
|
376
|
+
* Plugin-file hooks (e.g., opencode) naturally fall out of batching because their
|
|
377
|
+
* hooksTarget is a distinct .ts file path, yielding a Set size ≥ 2.
|
|
354
378
|
*/
|
|
355
379
|
shouldBatchJsonTargets(reg) {
|
|
356
380
|
if (!reg) return false;
|
|
@@ -383,11 +407,12 @@ var SymbiontInstaller = class {
|
|
|
383
407
|
}
|
|
384
408
|
const mcpTemplate = reg.mcpTarget ? this.loadTemplate("mcp") : null;
|
|
385
409
|
if (mcpTemplate) {
|
|
386
|
-
const
|
|
410
|
+
const serversKey = reg.mcpServersKey ?? "mcpServers";
|
|
411
|
+
const servers = data[serversKey] ?? {};
|
|
387
412
|
for (const [name, def] of Object.entries(mcpTemplate)) {
|
|
388
413
|
servers[name] = def;
|
|
389
414
|
}
|
|
390
|
-
data
|
|
415
|
+
data[serversKey] = servers;
|
|
391
416
|
mcp = true;
|
|
392
417
|
}
|
|
393
418
|
const settingsTemplate = reg.settingsTarget ? this.loadTemplate("settings") : null;
|
|
@@ -401,7 +426,8 @@ var SymbiontInstaller = class {
|
|
|
401
426
|
mcp,
|
|
402
427
|
skills: this.installSkills(),
|
|
403
428
|
settings,
|
|
404
|
-
instructions: this.installInstructions()
|
|
429
|
+
instructions: this.installInstructions(),
|
|
430
|
+
pluginPackage: this.installPluginPackage()
|
|
405
431
|
};
|
|
406
432
|
}
|
|
407
433
|
/** Remove all Myco registration from this symbiont's project files. */
|
|
@@ -412,7 +438,8 @@ var SymbiontInstaller = class {
|
|
|
412
438
|
mcp: this.uninstallMcp(),
|
|
413
439
|
skills: this.uninstallSkills(),
|
|
414
440
|
settings: this.uninstallSettings(),
|
|
415
|
-
instructions: this.uninstallInstructions()
|
|
441
|
+
instructions: this.uninstallInstructions(),
|
|
442
|
+
pluginPackage: false
|
|
416
443
|
};
|
|
417
444
|
this.uninstallHookGuard();
|
|
418
445
|
this.cleanGitignore();
|
|
@@ -425,7 +452,14 @@ var SymbiontInstaller = class {
|
|
|
425
452
|
const targetPath = path3.join(this.projectRoot, reg.hooksTarget ?? reg.mcpTarget ?? reg.settingsTarget);
|
|
426
453
|
const data = readJsonFile(targetPath);
|
|
427
454
|
if (Object.keys(data).length === 0) {
|
|
428
|
-
return {
|
|
455
|
+
return {
|
|
456
|
+
hooks: false,
|
|
457
|
+
mcp: false,
|
|
458
|
+
skills: this.uninstallSkills(),
|
|
459
|
+
settings: false,
|
|
460
|
+
instructions: this.uninstallInstructions(),
|
|
461
|
+
pluginPackage: false
|
|
462
|
+
};
|
|
429
463
|
}
|
|
430
464
|
let hooks = false, mcp = false, settings = false;
|
|
431
465
|
if (reg.hooksTarget) {
|
|
@@ -445,11 +479,12 @@ var SymbiontInstaller = class {
|
|
|
445
479
|
}
|
|
446
480
|
}
|
|
447
481
|
if (reg.mcpTarget) {
|
|
448
|
-
const
|
|
482
|
+
const serversKey = reg.mcpServersKey ?? "mcpServers";
|
|
483
|
+
const servers = data[serversKey] ?? {};
|
|
449
484
|
if (servers[MYCO_MCP_SERVER_NAME]) {
|
|
450
485
|
delete servers[MYCO_MCP_SERVER_NAME];
|
|
451
|
-
if (Object.keys(servers).length === 0) delete data
|
|
452
|
-
else data
|
|
486
|
+
if (Object.keys(servers).length === 0) delete data[serversKey];
|
|
487
|
+
else data[serversKey] = servers;
|
|
453
488
|
mcp = true;
|
|
454
489
|
}
|
|
455
490
|
}
|
|
@@ -458,7 +493,14 @@ var SymbiontInstaller = class {
|
|
|
458
493
|
settings = deepRemoveSettings(data, settingsTemplate);
|
|
459
494
|
}
|
|
460
495
|
writeOrDeleteJsonFile(targetPath, data);
|
|
461
|
-
return {
|
|
496
|
+
return {
|
|
497
|
+
hooks,
|
|
498
|
+
mcp,
|
|
499
|
+
skills: this.uninstallSkills(),
|
|
500
|
+
settings,
|
|
501
|
+
instructions: this.uninstallInstructions(),
|
|
502
|
+
pluginPackage: false
|
|
503
|
+
};
|
|
462
504
|
}
|
|
463
505
|
/**
|
|
464
506
|
* Ensure the instruction file references AGENTS.md.
|
|
@@ -599,10 +641,14 @@ ${desired.join("\n")}
|
|
|
599
641
|
/**
|
|
600
642
|
* Merge hooks template into the target settings file.
|
|
601
643
|
* Replaces all Myco-owned hook groups; preserves non-Myco hooks.
|
|
644
|
+
*
|
|
645
|
+
* For plugin-file agents (e.g., opencode) this dispatches to `installPluginHookFile()`
|
|
646
|
+
* which writes a verbatim .ts plugin source to hooksTarget instead of merging JSON.
|
|
602
647
|
*/
|
|
603
648
|
installHooks() {
|
|
604
649
|
const reg = this.manifest.registration;
|
|
605
650
|
if (!reg?.hooksTarget) return false;
|
|
651
|
+
if (reg.hooksFormat === HOOKS_FORMAT_PLUGIN_FILE) return this.installPluginHookFile();
|
|
606
652
|
const template = this.loadTemplate("hooks");
|
|
607
653
|
if (!template) return false;
|
|
608
654
|
const targetPath = path3.join(this.projectRoot, reg.hooksTarget);
|
|
@@ -624,6 +670,62 @@ ${desired.join("\n")}
|
|
|
624
670
|
writeJsonFile(targetPath, settings);
|
|
625
671
|
return true;
|
|
626
672
|
}
|
|
673
|
+
/**
|
|
674
|
+
* Install a plugin-file hook target by copying a verbatim template.
|
|
675
|
+
* Used for agents whose hook system is plugin-based rather than JSON entry-based
|
|
676
|
+
* (e.g., opencode's TypeScript plugin system).
|
|
677
|
+
*/
|
|
678
|
+
installPluginHookFile() {
|
|
679
|
+
const reg = this.manifest.registration;
|
|
680
|
+
if (!reg?.hooksTarget) return false;
|
|
681
|
+
const templateContent = this.loadTemplateRaw("plugin.ts");
|
|
682
|
+
if (templateContent === null) return false;
|
|
683
|
+
return this.writeManagedFile(
|
|
684
|
+
path3.join(this.projectRoot, reg.hooksTarget),
|
|
685
|
+
templateContent
|
|
686
|
+
);
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* Remove a plugin-file hook target.
|
|
690
|
+
* Only deletes files whose content contains the Myco plugin marker — contributors
|
|
691
|
+
* who hand-edit the plugin file without removing the marker are protected.
|
|
692
|
+
*/
|
|
693
|
+
uninstallPluginHookFile() {
|
|
694
|
+
const reg = this.manifest.registration;
|
|
695
|
+
if (!reg?.hooksTarget) return false;
|
|
696
|
+
const targetPath = path3.join(this.projectRoot, reg.hooksTarget);
|
|
697
|
+
let content;
|
|
698
|
+
try {
|
|
699
|
+
content = fs3.readFileSync(targetPath, "utf-8");
|
|
700
|
+
} catch {
|
|
701
|
+
return false;
|
|
702
|
+
}
|
|
703
|
+
if (!content.includes(MYCO_PLUGIN_FILE_MARKER)) return false;
|
|
704
|
+
try {
|
|
705
|
+
fs3.unlinkSync(targetPath);
|
|
706
|
+
try {
|
|
707
|
+
fs3.rmdirSync(path3.dirname(targetPath));
|
|
708
|
+
} catch {
|
|
709
|
+
}
|
|
710
|
+
return true;
|
|
711
|
+
} catch {
|
|
712
|
+
return false;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* Install a plugin deps package.json for plugin-file agents (e.g., opencode).
|
|
717
|
+
* Writes the template verbatim so the agent's package manager can install the SDK.
|
|
718
|
+
*/
|
|
719
|
+
installPluginPackage() {
|
|
720
|
+
const reg = this.manifest.registration;
|
|
721
|
+
if (!reg?.pluginPackageTarget) return false;
|
|
722
|
+
const templateContent = this.loadTemplateRaw("package.json");
|
|
723
|
+
if (templateContent === null) return false;
|
|
724
|
+
return this.writeManagedFile(
|
|
725
|
+
path3.join(this.projectRoot, reg.pluginPackageTarget),
|
|
726
|
+
templateContent
|
|
727
|
+
);
|
|
728
|
+
}
|
|
627
729
|
/**
|
|
628
730
|
* Merge MCP server template into the target config file.
|
|
629
731
|
* Replaces the `myco` server entry; preserves other servers.
|
|
@@ -634,20 +736,26 @@ ${desired.join("\n")}
|
|
|
634
736
|
const template = this.loadTemplate("mcp");
|
|
635
737
|
if (!template) return false;
|
|
636
738
|
const targetPath = path3.join(this.projectRoot, reg.mcpTarget);
|
|
637
|
-
|
|
638
|
-
if (mcpFormat === "toml") {
|
|
739
|
+
if (reg.mcpFormat === "toml") {
|
|
639
740
|
return this.installMcpToml(targetPath, template);
|
|
640
741
|
}
|
|
641
742
|
return this.installMcpJson(targetPath, template);
|
|
642
743
|
}
|
|
643
|
-
/**
|
|
744
|
+
/**
|
|
745
|
+
* Write MCP servers to a JSON config file under the manifest-configured key.
|
|
746
|
+
* Most agents use the canonical `mcpServers` key; opencode uses `mcp`.
|
|
747
|
+
*
|
|
748
|
+
* The `?? 'mcpServers'` fallback protects against test fixtures that construct
|
|
749
|
+
* manifests as plain object literals and bypass the schema's default.
|
|
750
|
+
*/
|
|
644
751
|
installMcpJson(targetPath, template) {
|
|
752
|
+
const serversKey = this.manifest.registration.mcpServersKey ?? "mcpServers";
|
|
645
753
|
const config = readJsonFile(targetPath);
|
|
646
|
-
const servers = config
|
|
754
|
+
const servers = config[serversKey] ?? {};
|
|
647
755
|
for (const [name, def] of Object.entries(template)) {
|
|
648
756
|
servers[name] = def;
|
|
649
757
|
}
|
|
650
|
-
config
|
|
758
|
+
config[serversKey] = servers;
|
|
651
759
|
writeJsonFile(targetPath, config);
|
|
652
760
|
return true;
|
|
653
761
|
}
|
|
@@ -795,10 +903,16 @@ ${desired.join("\n")}
|
|
|
795
903
|
}
|
|
796
904
|
return true;
|
|
797
905
|
}
|
|
798
|
-
/**
|
|
906
|
+
/**
|
|
907
|
+
* Remove Myco hook groups from the target settings file.
|
|
908
|
+
*
|
|
909
|
+
* For plugin-file agents (e.g., opencode) this dispatches to `uninstallPluginHookFile()`
|
|
910
|
+
* which deletes the verbatim plugin file (guarded by the Myco plugin marker).
|
|
911
|
+
*/
|
|
799
912
|
uninstallHooks() {
|
|
800
913
|
const reg = this.manifest.registration;
|
|
801
914
|
if (!reg?.hooksTarget) return false;
|
|
915
|
+
if (reg.hooksFormat === HOOKS_FORMAT_PLUGIN_FILE) return this.uninstallPluginHookFile();
|
|
802
916
|
const targetPath = path3.join(this.projectRoot, reg.hooksTarget);
|
|
803
917
|
const settings = readJsonFile(targetPath);
|
|
804
918
|
const existingHooks = settings.hooks ?? {};
|
|
@@ -825,21 +939,21 @@ ${desired.join("\n")}
|
|
|
825
939
|
const reg = this.manifest.registration;
|
|
826
940
|
if (!reg?.mcpTarget) return false;
|
|
827
941
|
const targetPath = path3.join(this.projectRoot, reg.mcpTarget);
|
|
828
|
-
|
|
829
|
-
if (mcpFormat === "toml") {
|
|
942
|
+
if (reg.mcpFormat === "toml") {
|
|
830
943
|
return this.uninstallMcpToml(targetPath);
|
|
831
944
|
}
|
|
832
945
|
return this.uninstallMcpJson(targetPath);
|
|
833
946
|
}
|
|
834
947
|
uninstallMcpJson(targetPath) {
|
|
948
|
+
const serversKey = this.manifest.registration.mcpServersKey ?? "mcpServers";
|
|
835
949
|
const config = readJsonFile(targetPath);
|
|
836
|
-
const servers = config
|
|
950
|
+
const servers = config[serversKey] ?? {};
|
|
837
951
|
if (!servers[MYCO_MCP_SERVER_NAME]) return false;
|
|
838
952
|
delete servers[MYCO_MCP_SERVER_NAME];
|
|
839
953
|
if (Object.keys(servers).length === 0) {
|
|
840
|
-
delete config
|
|
954
|
+
delete config[serversKey];
|
|
841
955
|
} else {
|
|
842
|
-
config
|
|
956
|
+
config[serversKey] = servers;
|
|
843
957
|
}
|
|
844
958
|
writeOrDeleteJsonFile(targetPath, config);
|
|
845
959
|
return true;
|
|
@@ -989,4 +1103,4 @@ export {
|
|
|
989
1103
|
SymbiontInstaller,
|
|
990
1104
|
syncSkillSymlinks
|
|
991
1105
|
};
|
|
992
|
-
//# sourceMappingURL=chunk-
|
|
1106
|
+
//# sourceMappingURL=chunk-4JPUC6RL.js.map
|