@ken-jo/agent-connector 0.4.79 → 0.4.92
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/README.md +302 -561
- package/dist/{action-OHGFVKMC.js → action-CVIEPX4U.js} +14 -14
- package/dist/{amazon-q-B52EY2SV.js → amazon-q-TIT7FIW3.js} +5 -5
- package/dist/{amp-UXABVUKC.js → amp-NF3OAAUG.js} +5 -5
- package/dist/{antigravity-RZHN53VB.js → antigravity-7LPK7QOY.js} +6 -6
- package/dist/antigravity-cli-MDEMPPAH.js +467 -0
- package/dist/antigravity-cli-MDEMPPAH.js.map +1 -0
- package/dist/{chunk-QKLJU4JX.js → chunk-2Y2MZRLP.js} +56 -2
- package/dist/chunk-2Y2MZRLP.js.map +1 -0
- package/dist/{chunk-UBB7T54N.js → chunk-3C5AASHM.js} +3 -3
- package/dist/{chunk-LKAVD4HP.js → chunk-447JWFZO.js} +12 -12
- package/dist/{chunk-HORHRHNG.js → chunk-4NHXLXSD.js} +2 -2
- package/dist/chunk-5Z36KVU2.js +590 -0
- package/dist/chunk-5Z36KVU2.js.map +1 -0
- package/dist/{chunk-AY3RGRTT.js → chunk-6TF7MHG5.js} +2 -2
- package/dist/{chunk-AMK2K6XZ.js → chunk-7UT6OB52.js} +2 -2
- package/dist/{chunk-PZHB5TVA.js → chunk-AY3VFNOH.js} +5 -5
- package/dist/{chunk-4HVQ7IUM.js → chunk-DI5S6TXJ.js} +17 -4
- package/dist/chunk-DI5S6TXJ.js.map +1 -0
- package/dist/{chunk-ZXX5DVSE.js → chunk-FBCBHEGB.js} +8 -8
- package/dist/{chunk-4NSU3KWX.js → chunk-FJCUKXGX.js} +2 -2
- package/dist/{chunk-S4E6QQEM.js → chunk-FO5CEXXN.js} +7 -2
- package/dist/chunk-FO5CEXXN.js.map +1 -0
- package/dist/{chunk-IXOQDZWC.js → chunk-GZGLCCEE.js} +5 -1
- package/dist/chunk-GZGLCCEE.js.map +1 -0
- package/dist/{chunk-UYZ53KWS.js → chunk-IBLYVAWH.js} +31 -9
- package/dist/chunk-IBLYVAWH.js.map +1 -0
- package/dist/{chunk-4FWETID5.js → chunk-IVAWP6HH.js} +2 -2
- package/dist/{chunk-NBUEL74R.js → chunk-JFXL4HYA.js} +3 -3
- package/dist/{chunk-VD4EG6SG.js → chunk-JO2IM2JL.js} +538 -226
- package/dist/chunk-JO2IM2JL.js.map +1 -0
- package/dist/{chunk-7NXEHZAK.js → chunk-JVO6NBTT.js} +3 -3
- package/dist/{chunk-X457NOFE.js → chunk-KA55FISM.js} +116 -36
- package/dist/chunk-KA55FISM.js.map +1 -0
- package/dist/{chunk-YJP3KGLM.js → chunk-L26PSQTY.js} +4 -4
- package/dist/{chunk-YYNXIUR2.js → chunk-M2H7JURF.js} +2 -2
- package/dist/{chunk-56R2ER7K.js → chunk-NBYKLUF6.js} +2 -2
- package/dist/{chunk-IRUYJD23.js → chunk-NLE2J5P4.js} +1 -1
- package/dist/{chunk-VVFDU4IX.js → chunk-WFEHWTLM.js} +12 -5
- package/dist/{chunk-VVFDU4IX.js.map → chunk-WFEHWTLM.js.map} +1 -1
- package/dist/{chunk-LN76OGNR.js → chunk-Z2MRSS2I.js} +2 -2
- package/dist/{claude-code-T6ZRCMA7.js → claude-code-7RS4YVGZ.js} +9 -9
- package/dist/cli/sdk.js +7 -7
- package/dist/cli.js +1 -1
- package/dist/{cline-NNMVCECA.js → cline-BZQAUYPC.js} +5 -5
- package/dist/codebuddy-G42IKGKB.js +643 -0
- package/dist/codebuddy-G42IKGKB.js.map +1 -0
- package/dist/{codebuff-RJIDSEU3.js → codebuff-5RLTLZAU.js} +5 -5
- package/dist/{codex-RHKQKNNG.js → codex-XHAMJILX.js} +14 -8
- package/dist/{codex-RHKQKNNG.js.map → codex-XHAMJILX.js.map} +1 -1
- package/dist/{continue-MNM7YVJY.js → continue-JLIB7R7X.js} +6 -6
- package/dist/{copilot-cli-SMTX5F65.js → copilot-cli-XZSUYNQZ.js} +5 -5
- package/dist/{crush-NYDBHIJE.js → crush-ESERLVLT.js} +5 -5
- package/dist/{cursor-AOELDNZU.js → cursor-FUDOV5VK.js} +6 -6
- package/dist/{detect-ALAKE54S.js → detect-Z5BDTY6B.js} +4 -4
- package/dist/devin-Y7PWKVHY.js +510 -0
- package/dist/devin-Y7PWKVHY.js.map +1 -0
- package/dist/{doctor-UNF7FCF4.js → doctor-GAP27PP2.js} +27 -23
- package/dist/doctor-GAP27PP2.js.map +1 -0
- package/dist/{droid-PTCH2K7Y.js → droid-DTO5POTK.js} +5 -5
- package/dist/{gemini-cli-QGLN2UMS.js → gemini-cli-RBIG6U2F.js} +5 -5
- package/dist/{goose-DQ6GSZ5O.js → goose-VGNOP5J2.js} +6 -6
- package/dist/grok-cli-2RFBK6J3.js +482 -0
- package/dist/grok-cli-2RFBK6J3.js.map +1 -0
- package/dist/{hermes-E47IG63A.js → hermes-NUKFWZI5.js} +6 -6
- package/dist/{hook-GM2IDA3C.js → hook-XPR3AHDI.js} +14 -14
- package/dist/index.d.ts +2 -2
- package/dist/index.js +5 -5
- package/dist/install-O32TDIZP.js +382 -0
- package/dist/install-O32TDIZP.js.map +1 -0
- package/dist/{introspect-5o5ick0_.d.ts → introspect-BkId4LGP.d.ts} +1 -1
- package/dist/{jetbrains-copilot-4IOT3I2Y.js → jetbrains-copilot-FXZ5AOTS.js} +31 -9
- package/dist/jetbrains-copilot-FXZ5AOTS.js.map +1 -0
- package/dist/junie-TSXIZSCE.js +227 -0
- package/dist/junie-TSXIZSCE.js.map +1 -0
- package/dist/{kilo-TAHOPT2Q.js → kilo-JLH3KVZJ.js} +8 -8
- package/dist/{kilo-cli-X4NPJWGX.js → kilo-cli-5W36VJQZ.js} +8 -8
- package/dist/{kimi-Z7L2LEEI.js → kimi-R62W7HKZ.js} +5 -5
- package/dist/{kiro-YZ4TTZGD.js → kiro-AUJMGIBL.js} +81 -6
- package/dist/kiro-AUJMGIBL.js.map +1 -0
- package/dist/{leaderboard-DVW4WYJ6.js → leaderboard-YWMOSJBC.js} +7 -7
- package/dist/{mimo-code-G2CBZ4M6.js → mimo-code-PGLFFVER.js} +5 -5
- package/dist/mistral-vibe-36CZVQNQ.js +300 -0
- package/dist/mistral-vibe-36CZVQNQ.js.map +1 -0
- package/dist/{mux-JNM3F2NW.js → mux-HWL4N5KH.js} +5 -5
- package/dist/{nemoclaw-SHA4IUML.js → nemoclaw-QPHETUXM.js} +6 -6
- package/dist/{omp-OOVUNXME.js → omp-3TFMTJ5U.js} +5 -5
- package/dist/open-interpreter-UTBKE2EH.js +264 -0
- package/dist/open-interpreter-UTBKE2EH.js.map +1 -0
- package/dist/openclaw-RYFO5TLY.js +17 -0
- package/dist/{opencode-W2RK4M7G.js → opencode-JX7GBE5Q.js} +5 -5
- package/dist/openhands-AZW4PXJ3.js +384 -0
- package/dist/openhands-AZW4PXJ3.js.map +1 -0
- package/dist/{package-H5V3AZHR.js → package-2KKUGZFS.js} +13 -13
- package/dist/{pi-I7BLL4EI.js → pi-MRI3EBWU.js} +143 -6
- package/dist/pi-MRI3EBWU.js.map +1 -0
- package/dist/{qwen-code-JG7AF442.js → qwen-code-ISR6BEET.js} +9 -9
- package/dist/{roo-code-L5F7S6QH.js → roo-code-6TSCME4R.js} +5 -5
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +12 -12
- package/dist/sdk/index.d.ts +3 -3
- package/dist/sdk/index.js +6 -6
- package/dist/sdk/test.d.ts +2 -2
- package/dist/sdk/test.js +10 -10
- package/dist/{serve-WMO2TUW3.js → serve-EPRN7F2X.js} +14 -14
- package/dist/{status-WRLBTBRE.js → status-B2PG6YKR.js} +11 -11
- package/dist/{statusline-EUD4DMIP.js → statusline-5ERFMYSM.js} +13 -13
- package/dist/{telemetry-U3LGMR3D.js → telemetry-ZMCAWBWB.js} +10 -10
- package/dist/{trae-Z7CQ2A2Q.js → trae-7KDCYIMN.js} +5 -5
- package/dist/{types-D6RWGXm1.d.ts → types-D0RqWxT8.d.ts} +53 -9
- package/dist/{uninstall-TWPUEJEC.js → uninstall-M76BHLTH.js} +37 -27
- package/dist/uninstall-M76BHLTH.js.map +1 -0
- package/dist/{upgrade-EM6Y7QLH.js → upgrade-JLSCNAQA.js} +25 -19
- package/dist/upgrade-JLSCNAQA.js.map +1 -0
- package/dist/{usage-3HQDTXGY.js → usage-5I72HWCR.js} +3 -3
- package/dist/{usage-event-DWIGKO7V.js → usage-event-HIX4ZI45.js} +13 -13
- package/dist/{vscode-copilot-LU5NC4ZS.js → vscode-copilot-LILHAPJI.js} +20 -5
- package/dist/vscode-copilot-LILHAPJI.js.map +1 -0
- package/dist/{warp-4PPG5LOM.js → warp-KJUCWEA3.js} +5 -5
- package/dist/{windsurf-3T3RVXKM.js → windsurf-5TGGQR5I.js} +5 -5
- package/dist/{zed-LLOAUXSA.js → zed-EL3JCZ25.js} +123 -7
- package/dist/zed-EL3JCZ25.js.map +1 -0
- package/package.json +1 -1
- package/dist/antigravity-cli-KODEKUTM.js +0 -87
- package/dist/antigravity-cli-KODEKUTM.js.map +0 -1
- package/dist/chunk-4HVQ7IUM.js.map +0 -1
- package/dist/chunk-IXOQDZWC.js.map +0 -1
- package/dist/chunk-QKLJU4JX.js.map +0 -1
- package/dist/chunk-S4E6QQEM.js.map +0 -1
- package/dist/chunk-UYZ53KWS.js.map +0 -1
- package/dist/chunk-VD4EG6SG.js.map +0 -1
- package/dist/chunk-VKRGQLY4.js +0 -201
- package/dist/chunk-VKRGQLY4.js.map +0 -1
- package/dist/chunk-X457NOFE.js.map +0 -1
- package/dist/doctor-UNF7FCF4.js.map +0 -1
- package/dist/install-7O4XWH7T.js +0 -96
- package/dist/install-7O4XWH7T.js.map +0 -1
- package/dist/jetbrains-copilot-4IOT3I2Y.js.map +0 -1
- package/dist/kiro-YZ4TTZGD.js.map +0 -1
- package/dist/openclaw-BD56E5MV.js +0 -17
- package/dist/pi-I7BLL4EI.js.map +0 -1
- package/dist/uninstall-TWPUEJEC.js.map +0 -1
- package/dist/upgrade-EM6Y7QLH.js.map +0 -1
- package/dist/vscode-copilot-LU5NC4ZS.js.map +0 -1
- package/dist/zed-LLOAUXSA.js.map +0 -1
- /package/dist/{action-OHGFVKMC.js.map → action-CVIEPX4U.js.map} +0 -0
- /package/dist/{amazon-q-B52EY2SV.js.map → amazon-q-TIT7FIW3.js.map} +0 -0
- /package/dist/{amp-UXABVUKC.js.map → amp-NF3OAAUG.js.map} +0 -0
- /package/dist/{antigravity-RZHN53VB.js.map → antigravity-7LPK7QOY.js.map} +0 -0
- /package/dist/{chunk-UBB7T54N.js.map → chunk-3C5AASHM.js.map} +0 -0
- /package/dist/{chunk-LKAVD4HP.js.map → chunk-447JWFZO.js.map} +0 -0
- /package/dist/{chunk-HORHRHNG.js.map → chunk-4NHXLXSD.js.map} +0 -0
- /package/dist/{chunk-AY3RGRTT.js.map → chunk-6TF7MHG5.js.map} +0 -0
- /package/dist/{chunk-AMK2K6XZ.js.map → chunk-7UT6OB52.js.map} +0 -0
- /package/dist/{chunk-PZHB5TVA.js.map → chunk-AY3VFNOH.js.map} +0 -0
- /package/dist/{chunk-ZXX5DVSE.js.map → chunk-FBCBHEGB.js.map} +0 -0
- /package/dist/{chunk-4NSU3KWX.js.map → chunk-FJCUKXGX.js.map} +0 -0
- /package/dist/{chunk-4FWETID5.js.map → chunk-IVAWP6HH.js.map} +0 -0
- /package/dist/{chunk-NBUEL74R.js.map → chunk-JFXL4HYA.js.map} +0 -0
- /package/dist/{chunk-7NXEHZAK.js.map → chunk-JVO6NBTT.js.map} +0 -0
- /package/dist/{chunk-YJP3KGLM.js.map → chunk-L26PSQTY.js.map} +0 -0
- /package/dist/{chunk-YYNXIUR2.js.map → chunk-M2H7JURF.js.map} +0 -0
- /package/dist/{chunk-56R2ER7K.js.map → chunk-NBYKLUF6.js.map} +0 -0
- /package/dist/{chunk-IRUYJD23.js.map → chunk-NLE2J5P4.js.map} +0 -0
- /package/dist/{chunk-LN76OGNR.js.map → chunk-Z2MRSS2I.js.map} +0 -0
- /package/dist/{claude-code-T6ZRCMA7.js.map → claude-code-7RS4YVGZ.js.map} +0 -0
- /package/dist/{cline-NNMVCECA.js.map → cline-BZQAUYPC.js.map} +0 -0
- /package/dist/{codebuff-RJIDSEU3.js.map → codebuff-5RLTLZAU.js.map} +0 -0
- /package/dist/{continue-MNM7YVJY.js.map → continue-JLIB7R7X.js.map} +0 -0
- /package/dist/{copilot-cli-SMTX5F65.js.map → copilot-cli-XZSUYNQZ.js.map} +0 -0
- /package/dist/{crush-NYDBHIJE.js.map → crush-ESERLVLT.js.map} +0 -0
- /package/dist/{cursor-AOELDNZU.js.map → cursor-FUDOV5VK.js.map} +0 -0
- /package/dist/{detect-ALAKE54S.js.map → detect-Z5BDTY6B.js.map} +0 -0
- /package/dist/{droid-PTCH2K7Y.js.map → droid-DTO5POTK.js.map} +0 -0
- /package/dist/{gemini-cli-QGLN2UMS.js.map → gemini-cli-RBIG6U2F.js.map} +0 -0
- /package/dist/{goose-DQ6GSZ5O.js.map → goose-VGNOP5J2.js.map} +0 -0
- /package/dist/{hermes-E47IG63A.js.map → hermes-NUKFWZI5.js.map} +0 -0
- /package/dist/{hook-GM2IDA3C.js.map → hook-XPR3AHDI.js.map} +0 -0
- /package/dist/{kilo-TAHOPT2Q.js.map → kilo-JLH3KVZJ.js.map} +0 -0
- /package/dist/{kilo-cli-X4NPJWGX.js.map → kilo-cli-5W36VJQZ.js.map} +0 -0
- /package/dist/{kimi-Z7L2LEEI.js.map → kimi-R62W7HKZ.js.map} +0 -0
- /package/dist/{leaderboard-DVW4WYJ6.js.map → leaderboard-YWMOSJBC.js.map} +0 -0
- /package/dist/{mimo-code-G2CBZ4M6.js.map → mimo-code-PGLFFVER.js.map} +0 -0
- /package/dist/{mux-JNM3F2NW.js.map → mux-HWL4N5KH.js.map} +0 -0
- /package/dist/{nemoclaw-SHA4IUML.js.map → nemoclaw-QPHETUXM.js.map} +0 -0
- /package/dist/{omp-OOVUNXME.js.map → omp-3TFMTJ5U.js.map} +0 -0
- /package/dist/{openclaw-BD56E5MV.js.map → openclaw-RYFO5TLY.js.map} +0 -0
- /package/dist/{opencode-W2RK4M7G.js.map → opencode-JX7GBE5Q.js.map} +0 -0
- /package/dist/{package-H5V3AZHR.js.map → package-2KKUGZFS.js.map} +0 -0
- /package/dist/{qwen-code-JG7AF442.js.map → qwen-code-ISR6BEET.js.map} +0 -0
- /package/dist/{roo-code-L5F7S6QH.js.map → roo-code-6TSCME4R.js.map} +0 -0
- /package/dist/{serve-WMO2TUW3.js.map → serve-EPRN7F2X.js.map} +0 -0
- /package/dist/{status-WRLBTBRE.js.map → status-B2PG6YKR.js.map} +0 -0
- /package/dist/{statusline-EUD4DMIP.js.map → statusline-5ERFMYSM.js.map} +0 -0
- /package/dist/{telemetry-U3LGMR3D.js.map → telemetry-ZMCAWBWB.js.map} +0 -0
- /package/dist/{trae-Z7CQ2A2Q.js.map → trae-7KDCYIMN.js.map} +0 -0
- /package/dist/{usage-3HQDTXGY.js.map → usage-5I72HWCR.js.map} +0 -0
- /package/dist/{usage-event-DWIGKO7V.js.map → usage-event-HIX4ZI45.js.map} +0 -0
- /package/dist/{warp-4PPG5LOM.js.map → warp-KJUCWEA3.js.map} +0 -0
- /package/dist/{windsurf-3T3RVXKM.js.map → windsurf-5TGGQR5I.js.map} +0 -0
|
@@ -23,23 +23,24 @@
|
|
|
23
23
|
* exposes no writable MCP config to install into. The registry-completeness test
|
|
24
24
|
* (tests/adapters/registry-completeness.test.ts) allowlists it for this reason.
|
|
25
25
|
*/
|
|
26
|
-
type PlatformId = "claude-code" | "codex" | "cursor" | "vscode-copilot" | "jetbrains-copilot" | "copilot-cli" | "gemini-cli" | "opencode" | "mimo-code" | "kilo" | "kilo-cli" | "warp" | "hermes" | "nemoclaw" | "openclaw" | "zed" | "antigravity" | "antigravity-cli" | "kiro" | "qwen-code" | "kimi" | "pi" | "omp" | "droid" | "roo-code" | "cline" | "trae" | "amp" | "codebuff" | "mux" | "crush" | "goose" | "amazon-q" | "continue" | "windsurf" | "synthetic" | "unknown";
|
|
26
|
+
type PlatformId = "claude-code" | "codebuddy" | "codex" | "cursor" | "vscode-copilot" | "jetbrains-copilot" | "copilot-cli" | "gemini-cli" | "opencode" | "mimo-code" | "kilo" | "kilo-cli" | "warp" | "hermes" | "nemoclaw" | "openclaw" | "zed" | "antigravity" | "antigravity-cli" | "kiro" | "qwen-code" | "kimi" | "pi" | "omp" | "droid" | "openhands" | "roo-code" | "cline" | "trae" | "amp" | "codebuff" | "mux" | "crush" | "goose" | "amazon-q" | "continue" | "windsurf" | "grok-cli" | "devin" | "open-interpreter" | "junie" | "mistral-vibe" | "synthetic" | "unknown";
|
|
27
27
|
/**
|
|
28
28
|
* Hook I/O paradigm — the deepest cross-platform divergence (report §4).
|
|
29
29
|
* Canonical shipped sets (keep in sync with src/adapters/registry.ts — this
|
|
30
30
|
* comment once drifted and seeded a docs-wide misclassification):
|
|
31
|
-
* - "json-stdio" (
|
|
32
|
-
* JSON/exit-code back — Claude Code,
|
|
33
|
-
*
|
|
34
|
-
* Droid (Factory), Antigravity (+
|
|
35
|
-
* universal entrypoint binary handles
|
|
31
|
+
* - "json-stdio" (19): host pipes JSON to a command on stdin, reads
|
|
32
|
+
* JSON/exit-code back — Claude Code, CodeBuddy (Tencent, a Claude Code
|
|
33
|
+
* fork), Codex, Cursor, VS Code/JetBrains Copilot, Copilot CLI, Gemini CLI,
|
|
34
|
+
* Qwen, Kiro, Kimi, Crush, Goose, Hermes, Droid (Factory), Antigravity (+
|
|
35
|
+
* the agy CLI), Continue, Amazon Q. One universal entrypoint binary handles
|
|
36
|
+
* all of them.
|
|
36
37
|
* - "ts-plugin" (8): host loads a JS/TS module exporting lifecycle functions
|
|
37
38
|
* — OpenCode, MiMoCode (an OpenCode fork), Kilo CLI, Kilo, OMP, OpenClaw,
|
|
38
39
|
* NemoClaw (an OpenClaw wrapper/fork), Amp (.amp/plugins/*.ts). Framework
|
|
39
40
|
* generates the module.
|
|
40
|
-
* - "mcp-only" (
|
|
41
|
-
* Codebuff, Mux, Pi, Windsurf. Only the MCP server (or skills
|
|
42
|
-
* installed; hooks are reported unavailable.
|
|
41
|
+
* - "mcp-only" (10): no hook layer at all — Warp, Roo Code, Cline, Trae, Zed,
|
|
42
|
+
* Codebuff, Mux, Pi, Windsurf, Mistral Vibe. Only the MCP server (or skills
|
|
43
|
+
* surface) is installed; hooks are reported unavailable.
|
|
43
44
|
*/
|
|
44
45
|
type HookParadigm = "json-stdio" | "ts-plugin" | "mcp-only";
|
|
45
46
|
/**
|
|
@@ -572,6 +573,7 @@ interface SkillDef {
|
|
|
572
573
|
disableModelInvocation?: boolean;
|
|
573
574
|
/** Extra files bundled beside SKILL.md, relative path → contents. */
|
|
574
575
|
resources?: Record<string, string>;
|
|
576
|
+
/** Verbatim per-platform frontmatter additions (escape hatch). */
|
|
575
577
|
extra?: Record<string, unknown>;
|
|
576
578
|
}
|
|
577
579
|
/** A named subagent (system-prompt + tool/model scoping). */
|
|
@@ -587,6 +589,13 @@ interface SubagentDef {
|
|
|
587
589
|
model?: string;
|
|
588
590
|
/** Coarse permission knob → Cursor readonly, opencode/kilo permission map. */
|
|
589
591
|
readonly?: boolean;
|
|
592
|
+
/**
|
|
593
|
+
* Verbatim per-platform subagent manifest additions (escape hatch).
|
|
594
|
+
*
|
|
595
|
+
* Markdown/frontmatter hosts merge these as frontmatter. Hosts whose subagent
|
|
596
|
+
* files are native config/manifests merge them only when that native format is
|
|
597
|
+
* itself an extensible subagent surface.
|
|
598
|
+
*/
|
|
590
599
|
extra?: Record<string, unknown>;
|
|
591
600
|
}
|
|
592
601
|
/**
|
|
@@ -1060,6 +1069,41 @@ interface InstallResult {
|
|
|
1060
1069
|
dryRun: boolean;
|
|
1061
1070
|
changes: ChangeRecord[];
|
|
1062
1071
|
warnings: string[];
|
|
1072
|
+
/**
|
|
1073
|
+
* Render-only digest of the resolved connector (id/version/server/hooks/
|
|
1074
|
+
* telemetry/surface counts), threaded in by the CLI command so the friendly
|
|
1075
|
+
* renderer can print a connector header. OPTIONAL: the core install/uninstall
|
|
1076
|
+
* functions never populate it (they don't shape presentation) — the CLI
|
|
1077
|
+
* attaches it from the {@link ResolvedConnector} it already loaded. The
|
|
1078
|
+
* `--json` machine contract does NOT include it; see cli/app
|
|
1079
|
+
* buildConnectorSummary / renderInstallResult.
|
|
1080
|
+
*/
|
|
1081
|
+
connector?: ConnectorSummary;
|
|
1082
|
+
}
|
|
1083
|
+
/**
|
|
1084
|
+
* A minimal, presentation-only digest of a {@link ResolvedConnector} used by the
|
|
1085
|
+
* CLI's friendly install/uninstall/upgrade output. Lives here (not in cli/) so
|
|
1086
|
+
* {@link InstallResult} can reference it without a CLI→core import cycle; it is
|
|
1087
|
+
* BUILT by cli/app buildConnectorSummary. Render-only: never part of any machine
|
|
1088
|
+
* (JSON) contract.
|
|
1089
|
+
*/
|
|
1090
|
+
interface ConnectorSummary {
|
|
1091
|
+
id: string;
|
|
1092
|
+
version: string;
|
|
1093
|
+
displayName?: string;
|
|
1094
|
+
/** stdio command line / remote URL; absent ⇒ hooks-only connector. */
|
|
1095
|
+
server?: {
|
|
1096
|
+
transport: string;
|
|
1097
|
+
command: string;
|
|
1098
|
+
};
|
|
1099
|
+
hookEvents: string[];
|
|
1100
|
+
telemetryEnabled: boolean;
|
|
1101
|
+
commands: number;
|
|
1102
|
+
skills: number;
|
|
1103
|
+
subagents: number;
|
|
1104
|
+
memory: number;
|
|
1105
|
+
hasStatusline: boolean;
|
|
1106
|
+
actions: number;
|
|
1063
1107
|
}
|
|
1064
1108
|
interface DiagnosticResult {
|
|
1065
1109
|
check: string;
|
|
@@ -5,49 +5,51 @@ import {
|
|
|
5
5
|
resolveUninstallTargets,
|
|
6
6
|
uninstallConnector,
|
|
7
7
|
uninstallViaMarketplace
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-JO2IM2JL.js";
|
|
9
|
+
import "./chunk-IBLYVAWH.js";
|
|
10
10
|
import {
|
|
11
11
|
marketplaceEvidence,
|
|
12
12
|
readMarketplaceInstalls
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-2Y2MZRLP.js";
|
|
14
|
+
import "./chunk-UM5S7DKK.js";
|
|
15
|
+
import "./chunk-JFXL4HYA.js";
|
|
16
|
+
import "./chunk-OPXAP3AC.js";
|
|
15
17
|
import {
|
|
18
|
+
buildConnectorSummary,
|
|
16
19
|
fail,
|
|
20
|
+
maybePrintBanner,
|
|
17
21
|
parseScope,
|
|
18
22
|
parseTargets,
|
|
19
23
|
print,
|
|
20
24
|
renderInstallResult
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-5Z36KVU2.js";
|
|
26
|
+
import "./chunk-Z2MRSS2I.js";
|
|
27
|
+
import "./chunk-FO5CEXXN.js";
|
|
24
28
|
import "./chunk-KHO5WNTP.js";
|
|
25
29
|
import {
|
|
26
30
|
findConnectorConfig,
|
|
27
31
|
loadConnectorFromPath
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-OPXAP3AC.js";
|
|
33
|
-
import "./chunk-UM5S7DKK.js";
|
|
32
|
+
} from "./chunk-JVO6NBTT.js";
|
|
33
|
+
import "./chunk-AY3VFNOH.js";
|
|
34
|
+
import "./chunk-KA55FISM.js";
|
|
35
|
+
import "./chunk-NBYKLUF6.js";
|
|
34
36
|
import "./chunk-H53QZQJI.js";
|
|
35
37
|
import "./chunk-BEFVJ2OE.js";
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-WFEHWTLM.js";
|
|
39
|
+
import "./chunk-4NHXLXSD.js";
|
|
40
|
+
import "./chunk-M2H7JURF.js";
|
|
39
41
|
import {
|
|
40
42
|
assertConnectorId
|
|
41
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-GZGLCCEE.js";
|
|
42
44
|
|
|
43
45
|
// src/cli/commands/uninstall.ts
|
|
44
46
|
import { parseArgs } from "util";
|
|
45
47
|
async function resolveConnectorId(explicitId, connectorPath, projectDir) {
|
|
46
|
-
if (explicitId && explicitId.trim() !== "") return explicitId;
|
|
48
|
+
if (explicitId && explicitId.trim() !== "") return { id: explicitId };
|
|
47
49
|
const configPath = connectorPath ?? findConnectorConfig(projectDir);
|
|
48
50
|
if (!configPath) return null;
|
|
49
51
|
const { connector } = await loadConnectorFromPath(configPath);
|
|
50
|
-
return connector.id;
|
|
52
|
+
return { id: connector.id, connector };
|
|
51
53
|
}
|
|
52
54
|
async function run(argv) {
|
|
53
55
|
const { values } = parseArgs({
|
|
@@ -60,10 +62,13 @@ async function run(argv) {
|
|
|
60
62
|
"connector-id": { type: "string" },
|
|
61
63
|
project: { type: "string" },
|
|
62
64
|
"dry-run": { type: "boolean", default: false },
|
|
63
|
-
purge: { type: "boolean", default: false }
|
|
65
|
+
purge: { type: "boolean", default: false },
|
|
66
|
+
// Decorative-banner suppressor (no effect on command output bytes).
|
|
67
|
+
quiet: { type: "boolean", default: false }
|
|
64
68
|
},
|
|
65
69
|
allowPositionals: false
|
|
66
70
|
});
|
|
71
|
+
maybePrintBanner({ quiet: values.quiet });
|
|
67
72
|
const method = parseUninstallMethod(values.method);
|
|
68
73
|
if (method == null) {
|
|
69
74
|
return fail(`invalid --method "${values.method}" (use auto|direct|marketplace)`);
|
|
@@ -71,16 +76,18 @@ async function run(argv) {
|
|
|
71
76
|
const projectDir = values.project ?? process.cwd();
|
|
72
77
|
const scope = parseScope(values.scope);
|
|
73
78
|
if (scope == null) return fail(`invalid --scope "${values.scope}" (use user|project)`);
|
|
74
|
-
const
|
|
79
|
+
const resolved = await resolveConnectorId(
|
|
75
80
|
values["connector-id"],
|
|
76
81
|
values.connector,
|
|
77
82
|
projectDir
|
|
78
83
|
);
|
|
79
|
-
if (!
|
|
84
|
+
if (!resolved) {
|
|
80
85
|
return fail(
|
|
81
86
|
"could not determine connector id. Pass --connector-id <id>, --connector <path>, or run inside a project with an agent-connector config."
|
|
82
87
|
);
|
|
83
88
|
}
|
|
89
|
+
const connectorId = resolved.id;
|
|
90
|
+
const summary = resolved.connector ? buildConnectorSummary(resolved.connector) : void 0;
|
|
84
91
|
try {
|
|
85
92
|
assertConnectorId(connectorId);
|
|
86
93
|
} catch (err) {
|
|
@@ -97,19 +104,20 @@ async function run(argv) {
|
|
|
97
104
|
...targets ? { targets } : {}
|
|
98
105
|
});
|
|
99
106
|
if (values.purge) purgeFrameworkState(connectorId, dryRun, result);
|
|
107
|
+
result.connector = summary;
|
|
100
108
|
print(renderInstallResult(result, "uninstall"));
|
|
101
109
|
return result.changes.some((c) => c.action === "warn") ? 1 : 0;
|
|
102
110
|
}
|
|
103
111
|
let marketplaceTargets = [];
|
|
104
112
|
let directTargets = [];
|
|
105
113
|
if (method === "auto") {
|
|
106
|
-
const
|
|
114
|
+
const resolvedTargets = await resolveUninstallTargets(connectorId, targets, projectDir);
|
|
107
115
|
const recorded = targets ? [] : Object.keys(readMarketplaceInstalls(connectorId));
|
|
108
|
-
const candidates = [.../* @__PURE__ */ new Set([...
|
|
116
|
+
const candidates = [.../* @__PURE__ */ new Set([...resolvedTargets, ...recorded])];
|
|
109
117
|
marketplaceTargets = candidates.filter(
|
|
110
118
|
(id) => marketplaceEvidence(connectorId, id) != null
|
|
111
119
|
);
|
|
112
|
-
directTargets =
|
|
120
|
+
directTargets = resolvedTargets.filter((id) => !marketplaceTargets.includes(id));
|
|
113
121
|
}
|
|
114
122
|
if (marketplaceTargets.length === 0) {
|
|
115
123
|
const result = await uninstallConnector({
|
|
@@ -120,6 +128,7 @@ async function run(argv) {
|
|
|
120
128
|
purge: values.purge,
|
|
121
129
|
...targets ? { targets } : {}
|
|
122
130
|
});
|
|
131
|
+
result.connector = summary;
|
|
123
132
|
print(renderInstallResult(result, "uninstall"));
|
|
124
133
|
return result.changes.some((c) => c.action === "warn") ? 1 : 0;
|
|
125
134
|
}
|
|
@@ -165,7 +174,8 @@ async function run(argv) {
|
|
|
165
174
|
connectorId,
|
|
166
175
|
dryRun,
|
|
167
176
|
changes: results.flatMap((r) => r.changes),
|
|
168
|
-
warnings: results.flatMap((r) => r.warnings)
|
|
177
|
+
warnings: results.flatMap((r) => r.warnings),
|
|
178
|
+
connector: summary
|
|
169
179
|
};
|
|
170
180
|
print(renderInstallResult(merged, "uninstall"));
|
|
171
181
|
return merged.changes.some((c) => c.action === "warn") ? 1 : 0;
|
|
@@ -173,4 +183,4 @@ async function run(argv) {
|
|
|
173
183
|
export {
|
|
174
184
|
run
|
|
175
185
|
};
|
|
176
|
-
//# sourceMappingURL=uninstall-
|
|
186
|
+
//# sourceMappingURL=uninstall-M76BHLTH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/uninstall.ts"],"sourcesContent":["/**\n * cli/commands/uninstall — strip a connector's registrations, method-aware.\n *\n * The connector id is taken from --connector-id, or inferred from the local\n * connector config (--connector <path> / findConnectorConfig).\n *\n * --method auto (default) reverses WHATEVER is actually there, per target:\n * targets with marketplace evidence (the state record, or the host's own plugin\n * state) get the HOST plugin uninstall; everything else gets the existing\n * direct adapter strip. Install chooses a method (a user decision); uninstall\n * reverses what exists (a state decision) — and since the double-install guard\n * enforces exactly one method per (connector, host, scope), auto is\n * unambiguous. Explicit --method direct|marketplace forces one path for every\n * target. Config removal vs plugin uninstall is therefore method-resolved:\n * never both, never neither.\n *\n * --purge additionally removes the framework-state this connector left behind:\n * its DATA-dir connector record (connectorDir(id)), the empty marketplace\n * staging root, and, when no connectors remain, the shared home-bin launcher.\n * Without --purge those linger so the connector can be re-synced without\n * re-registering.\n */\n\nimport { parseArgs } from \"node:util\";\n\nimport {\n purgeFrameworkState,\n resolveUninstallTargets,\n uninstallConnector,\n} from \"../../core/installer.js\";\nimport {\n marketplaceEvidence,\n parseUninstallMethod,\n uninstallViaMarketplace,\n} from \"../../core/marketplace.js\";\nimport { readMarketplaceInstalls } from \"../../core/marketplace-state.js\";\nimport { assertConnectorId } from \"../../core/ids.js\";\nimport { findConnectorConfig, loadConnectorFromPath } from \"../../core/load-connector.js\";\nimport type {\n ConnectorSummary,\n InstallResult,\n PlatformId,\n ResolvedConnector,\n} from \"../../core/types.js\";\nimport {\n buildConnectorSummary,\n fail,\n maybePrintBanner,\n parseScope,\n parseTargets,\n print,\n renderInstallResult,\n} from \"../app.js\";\n\n/**\n * Resolve the connector id from flags, then from a local config file. When the\n * id was inferred by LOADING a config, the resolved connector is returned too so\n * the caller can build a header summary; an explicit `--connector-id` yields no\n * connector (id-only uninstall), and the renderer degrades to an id-only header.\n */\nasync function resolveConnectorId(\n explicitId: string | undefined,\n connectorPath: string | undefined,\n projectDir: string,\n): Promise<{ id: string; connector?: ResolvedConnector } | null> {\n if (explicitId && explicitId.trim() !== \"\") return { id: explicitId };\n const configPath = connectorPath ?? findConnectorConfig(projectDir);\n if (!configPath) return null;\n const { connector } = await loadConnectorFromPath(configPath);\n return { id: connector.id, connector };\n}\n\nexport async function run(argv: string[]): Promise<number> {\n const { values } = parseArgs({\n args: argv,\n options: {\n method: { type: \"string\", default: \"auto\" },\n scope: { type: \"string\", default: \"user\" },\n targets: { type: \"string\" },\n connector: { type: \"string\" },\n \"connector-id\": { type: \"string\" },\n project: { type: \"string\" },\n \"dry-run\": { type: \"boolean\", default: false },\n purge: { type: \"boolean\", default: false },\n // Decorative-banner suppressor (no effect on command output bytes).\n quiet: { type: \"boolean\", default: false },\n },\n allowPositionals: false,\n });\n\n maybePrintBanner({ quiet: values.quiet });\n\n const method = parseUninstallMethod(values.method);\n if (method == null) {\n return fail(`invalid --method \"${values.method}\" (use auto|direct|marketplace)`);\n }\n\n const projectDir = values.project ?? process.cwd();\n\n const scope = parseScope(values.scope);\n if (scope == null) return fail(`invalid --scope \"${values.scope}\" (use user|project)`);\n\n const resolved = await resolveConnectorId(\n values[\"connector-id\"],\n values.connector,\n projectDir,\n );\n if (!resolved) {\n return fail(\n \"could not determine connector id. Pass --connector-id <id>, \" +\n \"--connector <path>, or run inside a project with an agent-connector config.\",\n );\n }\n const connectorId = resolved.id;\n // Header summary when a connector config was actually loaded; id-only\n // (--connector-id) uninstalls have no connector → the renderer degrades to an\n // id-only header.\n const summary: ConnectorSummary | undefined = resolved.connector\n ? buildConnectorSummary(resolved.connector)\n : undefined;\n\n // Single choke-point: validate the id BEFORE any path is built or any delete\n // runs. Every branch below (explicit --method marketplace, --method auto, and\n // the direct strip) constructs record / staging-root paths from this id —\n // including the explicit --targets marketplace path, which reaches\n // driver.finishUninstall(id) → rmSync(join(stagingRoot, id)) without otherwise\n // routing the raw id through connectorDir's validation. Failing loud here closes\n // the `--connector-id ../../x` traversal window for ALL of them at once.\n try {\n assertConnectorId(connectorId);\n } catch (err) {\n return fail(err instanceof Error ? err.message : String(err));\n }\n\n const targets = parseTargets(values.targets);\n const dryRun = values[\"dry-run\"];\n\n // ── Explicit --method marketplace: every target goes to the marketplace path\n // (targets default to the recorded installs); framework purge runs here since\n // no direct pass follows.\n if (method === \"marketplace\") {\n const result = await uninstallViaMarketplace({\n connectorId,\n projectDir,\n dryRun,\n purge: values.purge,\n ...(targets ? { targets } : {}),\n });\n if (values.purge) purgeFrameworkState(connectorId, dryRun, result);\n result.connector = summary;\n print(renderInstallResult(result, \"uninstall\"));\n return result.changes.some((c) => c.action === \"warn\") ? 1 : 0;\n }\n\n // ── --method auto: partition the resolved targets by marketplace evidence.\n // (--method direct keeps every target on the adapter strip — today's path.)\n let marketplaceTargets: PlatformId[] = [];\n let directTargets: PlatformId[] = [];\n if (method === \"auto\") {\n const resolvedTargets = await resolveUninstallTargets(connectorId, targets, projectDir);\n // With no explicit --targets, recorded marketplace platforms are unioned\n // in: the state record IS the authority for what we installed, and host\n // detection can miss a host whose probe-able config dir was relocated.\n // An explicit --targets list is always respected as-is.\n const recorded = targets\n ? []\n : (Object.keys(readMarketplaceInstalls(connectorId)) as PlatformId[]);\n const candidates = [...new Set([...resolvedTargets, ...recorded])];\n marketplaceTargets = candidates.filter(\n (id) => marketplaceEvidence(connectorId, id) != null,\n );\n directTargets = resolvedTargets.filter((id) => !marketplaceTargets.includes(id));\n }\n\n // No marketplace evidence anywhere (or --method direct): exactly today's\n // single-orchestration path, byte-for-byte — zero behavior change for users\n // who never touched the marketplace method.\n if (marketplaceTargets.length === 0) {\n const result = await uninstallConnector({\n connectorId,\n scope,\n projectDir,\n dryRun,\n purge: values.purge,\n ...(targets ? { targets } : {}),\n });\n result.connector = summary;\n print(renderInstallResult(result, \"uninstall\"));\n return result.changes.some((c) => c.action === \"warn\") ? 1 : 0;\n }\n\n const results: InstallResult[] = [\n await uninstallViaMarketplace({\n connectorId,\n projectDir,\n targets: marketplaceTargets,\n dryRun,\n purge: values.purge,\n }),\n ];\n\n // The direct strip runs only for its partition (never both methods on one\n // target). When every target was marketplace-routed, --purge still runs the\n // framework purge (the marketplace records were just cleared, so it can\n // proceed to the connector record + home-bin).\n if (directTargets.length > 0) {\n results.push(\n await uninstallConnector({\n connectorId,\n scope,\n projectDir,\n dryRun,\n purge: values.purge,\n targets: directTargets,\n }),\n );\n } else if (values.purge) {\n const purgeResult: InstallResult = {\n connectorId,\n dryRun,\n changes: [],\n warnings: [],\n };\n if (dryRun) {\n // On a real run the marketplace records are removed BEFORE this purge;\n // calling purgeFrameworkState now would false-refuse on records that the\n // marketplace pass only PLANNED to remove. Report the plan instead.\n purgeResult.changes.push({\n platform: connectorId as PlatformId,\n action: \"remove\",\n detail:\n \"would purge framework state (connector record; home-bin when no connectors remain)\",\n });\n } else {\n purgeFrameworkState(connectorId, dryRun, purgeResult);\n }\n results.push(purgeResult);\n }\n\n const merged: InstallResult = {\n connectorId,\n dryRun,\n changes: results.flatMap((r) => r.changes),\n warnings: results.flatMap((r) => r.warnings),\n connector: summary,\n };\n print(renderInstallResult(merged, \"uninstall\"));\n return merged.changes.some((c) => c.action === \"warn\") ? 1 : 0;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,SAAS,iBAAiB;AAqC1B,eAAe,mBACb,YACA,eACA,YAC+D;AAC/D,MAAI,cAAc,WAAW,KAAK,MAAM,GAAI,QAAO,EAAE,IAAI,WAAW;AACpE,QAAM,aAAa,iBAAiB,oBAAoB,UAAU;AAClE,MAAI,CAAC,WAAY,QAAO;AACxB,QAAM,EAAE,UAAU,IAAI,MAAM,sBAAsB,UAAU;AAC5D,SAAO,EAAE,IAAI,UAAU,IAAI,UAAU;AACvC;AAEA,eAAsB,IAAI,MAAiC;AACzD,QAAM,EAAE,OAAO,IAAI,UAAU;AAAA,IAC3B,MAAM;AAAA,IACN,SAAS;AAAA,MACP,QAAQ,EAAE,MAAM,UAAU,SAAS,OAAO;AAAA,MAC1C,OAAO,EAAE,MAAM,UAAU,SAAS,OAAO;AAAA,MACzC,SAAS,EAAE,MAAM,SAAS;AAAA,MAC1B,WAAW,EAAE,MAAM,SAAS;AAAA,MAC5B,gBAAgB,EAAE,MAAM,SAAS;AAAA,MACjC,SAAS,EAAE,MAAM,SAAS;AAAA,MAC1B,WAAW,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,MAC7C,OAAO,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA;AAAA,MAEzC,OAAO,EAAE,MAAM,WAAW,SAAS,MAAM;AAAA,IAC3C;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AAED,mBAAiB,EAAE,OAAO,OAAO,MAAM,CAAC;AAExC,QAAM,SAAS,qBAAqB,OAAO,MAAM;AACjD,MAAI,UAAU,MAAM;AAClB,WAAO,KAAK,qBAAqB,OAAO,MAAM,iCAAiC;AAAA,EACjF;AAEA,QAAM,aAAa,OAAO,WAAW,QAAQ,IAAI;AAEjD,QAAM,QAAQ,WAAW,OAAO,KAAK;AACrC,MAAI,SAAS,KAAM,QAAO,KAAK,oBAAoB,OAAO,KAAK,sBAAsB;AAErF,QAAM,WAAW,MAAM;AAAA,IACrB,OAAO,cAAc;AAAA,IACrB,OAAO;AAAA,IACP;AAAA,EACF;AACA,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,MACL;AAAA,IAEF;AAAA,EACF;AACA,QAAM,cAAc,SAAS;AAI7B,QAAM,UAAwC,SAAS,YACnD,sBAAsB,SAAS,SAAS,IACxC;AASJ,MAAI;AACF,sBAAkB,WAAW;AAAA,EAC/B,SAAS,KAAK;AACZ,WAAO,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,EAC9D;AAEA,QAAM,UAAU,aAAa,OAAO,OAAO;AAC3C,QAAM,SAAS,OAAO,SAAS;AAK/B,MAAI,WAAW,eAAe;AAC5B,UAAM,SAAS,MAAM,wBAAwB;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC/B,CAAC;AACD,QAAI,OAAO,MAAO,qBAAoB,aAAa,QAAQ,MAAM;AACjE,WAAO,YAAY;AACnB,UAAM,oBAAoB,QAAQ,WAAW,CAAC;AAC9C,WAAO,OAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,MAAM,IAAI,IAAI;AAAA,EAC/D;AAIA,MAAI,qBAAmC,CAAC;AACxC,MAAI,gBAA8B,CAAC;AACnC,MAAI,WAAW,QAAQ;AACrB,UAAM,kBAAkB,MAAM,wBAAwB,aAAa,SAAS,UAAU;AAKtF,UAAM,WAAW,UACb,CAAC,IACA,OAAO,KAAK,wBAAwB,WAAW,CAAC;AACrD,UAAM,aAAa,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAC;AACjE,yBAAqB,WAAW;AAAA,MAC9B,CAAC,OAAO,oBAAoB,aAAa,EAAE,KAAK;AAAA,IAClD;AACA,oBAAgB,gBAAgB,OAAO,CAAC,OAAO,CAAC,mBAAmB,SAAS,EAAE,CAAC;AAAA,EACjF;AAKA,MAAI,mBAAmB,WAAW,GAAG;AACnC,UAAM,SAAS,MAAM,mBAAmB;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC/B,CAAC;AACD,WAAO,YAAY;AACnB,UAAM,oBAAoB,QAAQ,WAAW,CAAC;AAC9C,WAAO,OAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,MAAM,IAAI,IAAI;AAAA,EAC/D;AAEA,QAAM,UAA2B;AAAA,IAC/B,MAAM,wBAAwB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,OAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH;AAMA,MAAI,cAAc,SAAS,GAAG;AAC5B,YAAQ;AAAA,MACN,MAAM,mBAAmB;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,OAAO;AAAA,QACd,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF,WAAW,OAAO,OAAO;AACvB,UAAM,cAA6B;AAAA,MACjC;AAAA,MACA;AAAA,MACA,SAAS,CAAC;AAAA,MACV,UAAU,CAAC;AAAA,IACb;AACA,QAAI,QAAQ;AAIV,kBAAY,QAAQ,KAAK;AAAA,QACvB,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QACE;AAAA,MACJ,CAAC;AAAA,IACH,OAAO;AACL,0BAAoB,aAAa,QAAQ,WAAW;AAAA,IACtD;AACA,YAAQ,KAAK,WAAW;AAAA,EAC1B;AAEA,QAAM,SAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,SAAS,QAAQ,QAAQ,CAAC,MAAM,EAAE,OAAO;AAAA,IACzC,UAAU,QAAQ,QAAQ,CAAC,MAAM,EAAE,QAAQ;AAAA,IAC3C,WAAW;AAAA,EACb;AACA,QAAM,oBAAoB,QAAQ,WAAW,CAAC;AAC9C,SAAO,OAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,MAAM,IAAI,IAAI;AAC/D;","names":[]}
|
|
@@ -4,38 +4,40 @@ import {
|
|
|
4
4
|
resolveCliEntry,
|
|
5
5
|
syncConnector,
|
|
6
6
|
upgradeViaMarketplace
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-JO2IM2JL.js";
|
|
8
|
+
import "./chunk-IBLYVAWH.js";
|
|
9
|
+
import "./chunk-2Y2MZRLP.js";
|
|
10
|
+
import "./chunk-UM5S7DKK.js";
|
|
11
|
+
import "./chunk-JFXL4HYA.js";
|
|
12
|
+
import "./chunk-OPXAP3AC.js";
|
|
11
13
|
import {
|
|
14
|
+
buildConnectorSummary,
|
|
12
15
|
fail,
|
|
16
|
+
maybePrintBanner,
|
|
13
17
|
parseScope,
|
|
14
18
|
parseTargets,
|
|
15
19
|
print,
|
|
16
20
|
renderInstallResult
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-5Z36KVU2.js";
|
|
22
|
+
import "./chunk-Z2MRSS2I.js";
|
|
23
|
+
import "./chunk-FO5CEXXN.js";
|
|
20
24
|
import "./chunk-KHO5WNTP.js";
|
|
21
25
|
import {
|
|
22
26
|
findConnectorConfig,
|
|
23
27
|
loadConnectorFromPath
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-OPXAP3AC.js";
|
|
29
|
-
import "./chunk-UM5S7DKK.js";
|
|
28
|
+
} from "./chunk-JVO6NBTT.js";
|
|
29
|
+
import "./chunk-AY3VFNOH.js";
|
|
30
|
+
import "./chunk-KA55FISM.js";
|
|
31
|
+
import "./chunk-NBYKLUF6.js";
|
|
30
32
|
import "./chunk-H53QZQJI.js";
|
|
31
33
|
import "./chunk-BEFVJ2OE.js";
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-WFEHWTLM.js";
|
|
35
|
+
import "./chunk-4NHXLXSD.js";
|
|
36
|
+
import "./chunk-M2H7JURF.js";
|
|
35
37
|
import {
|
|
36
38
|
ensureHomeBin,
|
|
37
39
|
homeBinPath
|
|
38
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-GZGLCCEE.js";
|
|
39
41
|
|
|
40
42
|
// src/cli/commands/upgrade.ts
|
|
41
43
|
import { parseArgs } from "util";
|
|
@@ -53,10 +55,13 @@ async function run(argv) {
|
|
|
53
55
|
targets: { type: "string" },
|
|
54
56
|
connector: { type: "string" },
|
|
55
57
|
project: { type: "string" },
|
|
56
|
-
"dry-run": { type: "boolean", default: false }
|
|
58
|
+
"dry-run": { type: "boolean", default: false },
|
|
59
|
+
// Decorative-banner suppressor (no effect on command output bytes).
|
|
60
|
+
quiet: { type: "boolean", default: false }
|
|
57
61
|
},
|
|
58
62
|
allowPositionals: false
|
|
59
63
|
});
|
|
64
|
+
maybePrintBanner({ quiet: values.quiet });
|
|
60
65
|
const channel = values.channel;
|
|
61
66
|
if (channel !== "stable" && channel !== "latest") {
|
|
62
67
|
return fail(`invalid --channel "${channel}" (use stable|latest)`);
|
|
@@ -88,6 +93,7 @@ async function run(argv) {
|
|
|
88
93
|
...targets ? { targets } : {}
|
|
89
94
|
};
|
|
90
95
|
const result = method === "marketplace" ? await upgradeViaMarketplace(opts) : await syncConnector(opts);
|
|
96
|
+
result.connector = buildConnectorSummary(connector);
|
|
91
97
|
print(renderInstallResult(result, "upgrade"));
|
|
92
98
|
if (result.changes.some((c) => c.action === "warn")) hadWarn = true;
|
|
93
99
|
print("");
|
|
@@ -127,4 +133,4 @@ Refreshed home binary pointer: ${binPath}`);
|
|
|
127
133
|
export {
|
|
128
134
|
run
|
|
129
135
|
};
|
|
130
|
-
//# sourceMappingURL=upgrade-
|
|
136
|
+
//# sourceMappingURL=upgrade-JLSCNAQA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/upgrade.ts"],"sourcesContent":["/**\n * cli/commands/upgrade — bring an agent-connector install current.\n *\n * `upgrade` (aliases: `update`, `sync`) consolidates the two former verbs into\n * ONE the way npm/brew pair `install` + `upgrade`, so there is a single verb to\n * learn for \"make everything current\". It:\n *\n * 1. re-renders the connector's config into every target host idempotently\n * (identical entries report \"skip\"), exactly like the old `sync` — this is\n * also the self-heal path: run `upgrade` to repair a drifted install; then\n * 2. refreshes the stable home-bin pointer and prints managed (never-silent)\n * update guidance for the chosen channel, exactly like the old `update`.\n *\n * When no connector config is resolvable it still does step 2, so `upgrade`\n * works as a pure tool-refresh from anywhere. By design agent-connector NEVER\n * silently auto-updates (docs/ARCHITECTURE.md §3 R1).\n */\n\nimport { parseArgs } from \"node:util\";\n\nimport { resolveCliEntry, syncConnector } from \"../../core/installer.js\";\nimport { parseInstallMethod, upgradeViaMarketplace } from \"../../core/marketplace.js\";\nimport { findConnectorConfig, loadConnectorFromPath } from \"../../core/load-connector.js\";\nimport { ensureHomeBin, homeBinPath } from \"../../core/paths.js\";\nimport {\n buildConnectorSummary,\n fail,\n maybePrintBanner,\n parseScope,\n parseTargets,\n print,\n renderInstallResult,\n} from \"../app.js\";\n\ntype Channel = \"stable\" | \"latest\";\n\n/** Heuristic: does the running CLI live under an npm-style node_modules tree? */\nfunction looksNpmManaged(): boolean {\n const entry = resolveCliEntry().replace(/\\\\/g, \"/\");\n return entry.includes(\"/node_modules/\");\n}\n\nexport async function run(argv: string[]): Promise<number> {\n const { values } = parseArgs({\n args: argv,\n options: {\n channel: { type: \"string\", default: \"stable\" },\n method: { type: \"string\", default: \"direct\" },\n scope: { type: \"string\", default: \"user\" },\n targets: { type: \"string\" },\n connector: { type: \"string\" },\n project: { type: \"string\" },\n \"dry-run\": { type: \"boolean\", default: false },\n // Decorative-banner suppressor (no effect on command output bytes).\n quiet: { type: \"boolean\", default: false },\n },\n allowPositionals: false,\n });\n\n maybePrintBanner({ quiet: values.quiet });\n\n const channel = values.channel;\n if (channel !== \"stable\" && channel !== \"latest\") {\n return fail(`invalid --channel \"${channel}\" (use stable|latest)`);\n }\n const ch: Channel = channel;\n\n const method = parseInstallMethod(values.method);\n if (method == null) {\n return fail(`invalid --method \"${values.method}\" (use direct|marketplace)`);\n }\n\n const scope = parseScope(values.scope);\n if (scope == null) return fail(`invalid --scope \"${values.scope}\" (use user|project)`);\n if (method === \"marketplace\" && scope !== \"user\") {\n return fail(\n \"--method marketplace supports --scope user only (project-scope plugin installs are deferred)\",\n );\n }\n\n let hadWarn = false;\n\n // ── Step 1: bring the connector's deploys current (former `sync`):\n // direct — idempotent re-render into every target host.\n // marketplace — re-stage the bundle + catalog in place, then drive the\n // host's update verb (claude `plugin update`, with a recorded\n // uninstall+install fallback); warns when connector.version is\n // unchanged since the recorded install (Claude caches a\n // versioned copy, so a same-version update silently no-ops).\n const projectDir = values.project ?? process.cwd();\n const configPath = values.connector ?? findConnectorConfig(projectDir);\n if (configPath) {\n const { connector, modulePath } = await loadConnectorFromPath(configPath);\n const targets = parseTargets(values.targets);\n const opts = {\n connector,\n modulePath,\n scope,\n projectDir,\n dryRun: values[\"dry-run\"],\n ...(targets ? { targets } : {}),\n };\n const result =\n method === \"marketplace\"\n ? await upgradeViaMarketplace(opts)\n : await syncConnector(opts);\n result.connector = buildConnectorSummary(connector);\n print(renderInstallResult(result, \"upgrade\"));\n if (result.changes.some((c) => c.action === \"warn\")) hadWarn = true;\n print(\"\");\n } else {\n print(\"upgrade: no connector config found — refreshing the tool only.\");\n print(\n \"(pass --connector <path> or run inside a project to also re-render host config.)\\n\",\n );\n }\n\n // ── Step 2: managed update guidance + home-bin pointer refresh (former `update`). ──\n print(\"agent-connector uses managed (explicit) updates — never silent\");\n print(\"auto-update — so one bad release can't break every project at once.\\n\");\n\n const dist = ch === \"stable\" ? \"latest\" : \"next\";\n if (looksNpmManaged()) {\n print(`To update the ${ch} channel, run:`);\n print(` npm i -g @ken-jo/agent-connector@${dist}`);\n } else {\n print(\n `This install does not look npm-managed. Update it the way you installed it,`,\n );\n print(`then re-run \\`agent-connector upgrade\\` to refresh the home pointer.`);\n print(`(npm installs would use: npm i -g @ken-jo/agent-connector@${dist})`);\n }\n\n // Refresh the stable home-bin pointer so hosts keep execing a working CLI.\n if (!values[\"dry-run\"]) {\n try {\n const binPath = ensureHomeBin(resolveCliEntry());\n print(`\\nRefreshed home binary pointer: ${binPath}`);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n print(`\\n[warn] could not refresh home binary at ${homeBinPath()}: ${message}`);\n return 1;\n }\n }\n\n return hadWarn ? 1 : 0;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
formatHostLeaderboard,
|
|
4
4
|
hostLeaderboard,
|
|
5
5
|
scanUsage
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NLE2J5P4.js";
|
|
7
7
|
import {
|
|
8
8
|
aggregateBy,
|
|
9
9
|
sumTokens
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
fail,
|
|
13
13
|
print
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-5Z36KVU2.js";
|
|
15
15
|
|
|
16
16
|
// src/cli/commands/usage.ts
|
|
17
17
|
import { writeFileSync } from "fs";
|
|
@@ -321,4 +321,4 @@ export {
|
|
|
321
321
|
parseSince,
|
|
322
322
|
run
|
|
323
323
|
};
|
|
324
|
-
//# sourceMappingURL=usage-
|
|
324
|
+
//# sourceMappingURL=usage-5I72HWCR.js.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runUsageEvent
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-447JWFZO.js";
|
|
5
5
|
import "./chunk-OP4KBXUO.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-4FWETID5.js";
|
|
6
|
+
import "./chunk-Z2MRSS2I.js";
|
|
7
|
+
import "./chunk-FO5CEXXN.js";
|
|
8
|
+
import "./chunk-FBCBHEGB.js";
|
|
10
9
|
import "./chunk-KHO5WNTP.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-IVAWP6HH.js";
|
|
11
|
+
import "./chunk-JVO6NBTT.js";
|
|
12
|
+
import "./chunk-AY3VFNOH.js";
|
|
13
|
+
import "./chunk-KA55FISM.js";
|
|
14
|
+
import "./chunk-NBYKLUF6.js";
|
|
15
|
+
import "./chunk-4NHXLXSD.js";
|
|
16
|
+
import "./chunk-M2H7JURF.js";
|
|
17
|
+
import "./chunk-GZGLCCEE.js";
|
|
18
18
|
|
|
19
19
|
// src/cli/commands/usage-event.ts
|
|
20
20
|
import { parseArgs } from "util";
|
|
@@ -50,4 +50,4 @@ async function run(argv) {
|
|
|
50
50
|
export {
|
|
51
51
|
run
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=usage-event-
|
|
53
|
+
//# sourceMappingURL=usage-event-HIX4ZI45.js.map
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
BaseAdapter,
|
|
10
10
|
renderSkillMd,
|
|
11
11
|
renderSubagentMd
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WFEHWTLM.js";
|
|
13
13
|
import {
|
|
14
14
|
buildHomeBinHookCommand,
|
|
15
15
|
buildWrappedStdio,
|
|
16
16
|
isHomeBinHookCommand
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-4NHXLXSD.js";
|
|
18
|
+
import "./chunk-M2H7JURF.js";
|
|
19
|
+
import "./chunk-GZGLCCEE.js";
|
|
20
20
|
|
|
21
21
|
// src/adapters/vscode-copilot/index.ts
|
|
22
22
|
import { existsSync } from "fs";
|
|
@@ -202,6 +202,15 @@ var VSCodeCopilotAdapter = class extends BaseAdapter {
|
|
|
202
202
|
if (connector.hookEvents.length === 0) {
|
|
203
203
|
return [{ platform: this.id, action: "skip", detail: "connector declares no hooks" }];
|
|
204
204
|
}
|
|
205
|
+
if (ctx.scope === "user") {
|
|
206
|
+
return [
|
|
207
|
+
{
|
|
208
|
+
platform: this.id,
|
|
209
|
+
action: "warn",
|
|
210
|
+
detail: "VS Code Copilot hooks are workspace-scoped (.github/hooks); rerun with --scope project to install hooks."
|
|
211
|
+
}
|
|
212
|
+
];
|
|
213
|
+
}
|
|
205
214
|
const hooksPath = this.getHookConfigPath(ctx);
|
|
206
215
|
const symlink = this.symlinkPathWarning(hooksPath);
|
|
207
216
|
if (symlink) return [symlink];
|
|
@@ -507,6 +516,12 @@ var VSCodeCopilotAdapter = class extends BaseAdapter {
|
|
|
507
516
|
if (hookEvents.length === 0) {
|
|
508
517
|
return { status: "OK", detail: "no hooks declared" };
|
|
509
518
|
}
|
|
519
|
+
if (ctx.scope === "user") {
|
|
520
|
+
return {
|
|
521
|
+
status: "OK",
|
|
522
|
+
detail: "hooks are workspace-scoped; install them with --scope project"
|
|
523
|
+
};
|
|
524
|
+
}
|
|
510
525
|
const file = this.readJson(hooksPath);
|
|
511
526
|
if (!file) return { status: "FAIL", detail: `not found: ${hooksPath}` };
|
|
512
527
|
if (file.version !== VSCODE_HOOKS_VERSION) {
|
|
@@ -748,4 +763,4 @@ export {
|
|
|
748
763
|
adapter,
|
|
749
764
|
vscode_copilot_default as default
|
|
750
765
|
};
|
|
751
|
-
//# sourceMappingURL=vscode-copilot-
|
|
766
|
+
//# sourceMappingURL=vscode-copilot-LILHAPJI.js.map
|