@ken-jo/agent-connector 0.4.92 → 0.4.93
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 +44 -22
- package/dist/{action-CVIEPX4U.js → action-DOWHWEDZ.js} +9 -9
- package/dist/{amazon-q-TIT7FIW3.js → amazon-q-ETMAGY3D.js} +3 -3
- package/dist/{amp-NF3OAAUG.js → amp-67BZONGF.js} +3 -3
- package/dist/{antigravity-7LPK7QOY.js → antigravity-VXLDLTO7.js} +4 -4
- package/dist/{antigravity-cli-MDEMPPAH.js → antigravity-cli-OM6SC3PE.js} +4 -4
- package/dist/{chunk-7UT6OB52.js → chunk-2RIFORQS.js} +2 -2
- package/dist/{chunk-JFXL4HYA.js → chunk-6WZODR3Z.js} +2 -2
- package/dist/{chunk-IBLYVAWH.js → chunk-B5W3RHTI.js} +48 -20
- package/dist/{chunk-IBLYVAWH.js.map → chunk-B5W3RHTI.js.map} +1 -1
- package/dist/{chunk-447JWFZO.js → chunk-EHP7WISI.js} +5 -5
- package/dist/{chunk-FBCBHEGB.js → chunk-I5TO42QC.js} +3 -3
- package/dist/{chunk-3C5AASHM.js → chunk-JKKU2WKG.js} +2 -2
- package/dist/{chunk-AY3VFNOH.js → chunk-KJLFGQQM.js} +178 -8
- package/dist/chunk-KJLFGQQM.js.map +1 -0
- package/dist/{chunk-JVO6NBTT.js → chunk-KSPMSRVU.js} +26 -14
- package/dist/chunk-KSPMSRVU.js.map +1 -0
- package/dist/{chunk-WFEHWTLM.js → chunk-MGTDQLJJ.js} +2 -2
- package/dist/{chunk-5Z36KVU2.js → chunk-OEADFFKO.js} +18 -18
- package/dist/{chunk-L26PSQTY.js → chunk-P23RVIUY.js} +4 -4
- package/dist/{chunk-KA55FISM.js → chunk-SILKSP2Y.js} +43 -43
- package/dist/{chunk-JO2IM2JL.js → chunk-TTKSYJRY.js} +6 -6
- package/dist/{chunk-M2H7JURF.js → chunk-UMQ6NBQR.js} +2 -2
- package/dist/chunk-UMQ6NBQR.js.map +1 -0
- package/dist/{chunk-DI5S6TXJ.js → chunk-XC5SJ35F.js} +2 -2
- package/dist/{chunk-FO5CEXXN.js → chunk-ZMAJ2XFD.js} +2 -2
- package/dist/{claude-code-7RS4YVGZ.js → claude-code-DUZNOAS2.js} +6 -6
- package/dist/cli/sdk.js +5 -5
- package/dist/cli.js +1 -1
- package/dist/{cline-BZQAUYPC.js → cline-25KW25IN.js} +3 -3
- package/dist/{codebuddy-G42IKGKB.js → codebuddy-ZNYQACMF.js} +3 -3
- package/dist/{codebuff-5RLTLZAU.js → codebuff-VR6JUDIY.js} +3 -3
- package/dist/{codex-XHAMJILX.js → codex-CPNKTXG3.js} +3 -3
- package/dist/{continue-JLIB7R7X.js → continue-WU2IB5KS.js} +3 -3
- package/dist/{copilot-cli-XZSUYNQZ.js → copilot-cli-PAP377OM.js} +3 -3
- package/dist/{crush-ESERLVLT.js → crush-3AVQA4YU.js} +3 -3
- package/dist/{cursor-FUDOV5VK.js → cursor-GSLUET3V.js} +4 -4
- package/dist/define-connector-LQFJL_at.d.ts +89 -0
- package/dist/{detect-Z5BDTY6B.js → detect-DYQNUMXL.js} +4 -4
- package/dist/{devin-Y7PWKVHY.js → devin-QMEM3OFA.js} +3 -3
- package/dist/{doctor-GAP27PP2.js → doctor-H6XXAR63.js} +14 -14
- package/dist/{droid-DTO5POTK.js → droid-MOKV53J4.js} +3 -3
- package/dist/{gemini-cli-RBIG6U2F.js → gemini-cli-47ZHCOZR.js} +3 -3
- package/dist/{goose-VGNOP5J2.js → goose-4EI5MYTI.js} +3 -3
- package/dist/{grok-cli-2RFBK6J3.js → grok-cli-QYQPDSVB.js} +3 -3
- package/dist/{hermes-NUKFWZI5.js → hermes-F75OSK3Y.js} +3 -3
- package/dist/{hook-XPR3AHDI.js → hook-GIQTUDMN.js} +9 -9
- package/dist/index.d.ts +15 -88
- package/dist/index.js +13 -5
- package/dist/{install-O32TDIZP.js → install-T27662FW.js} +11 -11
- package/dist/{introspect-BkId4LGP.d.ts → introspect-D4fEGuhN.d.ts} +1 -1
- package/dist/{jetbrains-copilot-FXZ5AOTS.js → jetbrains-copilot-ZGIWI6YV.js} +3 -3
- package/dist/{junie-TSXIZSCE.js → junie-DIFN2P22.js} +3 -3
- package/dist/{kilo-JLH3KVZJ.js → kilo-EMZJBEBB.js} +3 -3
- package/dist/{kilo-cli-5W36VJQZ.js → kilo-cli-S3GXBPAE.js} +3 -3
- package/dist/{kimi-R62W7HKZ.js → kimi-IQJOIY6B.js} +3 -3
- package/dist/{kiro-AUJMGIBL.js → kiro-BYX4HEAJ.js} +3 -3
- package/dist/{leaderboard-YWMOSJBC.js → leaderboard-CIMQBOUS.js} +2 -2
- package/dist/{mimo-code-PGLFFVER.js → mimo-code-7R53QDHB.js} +3 -3
- package/dist/{mistral-vibe-36CZVQNQ.js → mistral-vibe-LHJ55FSB.js} +3 -3
- package/dist/{mux-HWL4N5KH.js → mux-NYCNGL43.js} +3 -3
- package/dist/{nemoclaw-QPHETUXM.js → nemoclaw-WSIPSE7U.js} +4 -4
- package/dist/{omp-3TFMTJ5U.js → omp-562NK5BJ.js} +3 -3
- package/dist/{open-interpreter-UTBKE2EH.js → open-interpreter-I2CNOEXY.js} +3 -3
- package/dist/{openclaw-RYFO5TLY.js → openclaw-7EYBQS4R.js} +4 -4
- package/dist/{opencode-JX7GBE5Q.js → opencode-YS4WX2E2.js} +3 -3
- package/dist/{openhands-AZW4PXJ3.js → openhands-QMYIKNOS.js} +3 -3
- package/dist/{package-2KKUGZFS.js → package-LIPZKHAQ.js} +9 -9
- package/dist/{pi-MRI3EBWU.js → pi-644FIN3A.js} +3 -3
- package/dist/{qwen-code-ISR6BEET.js → qwen-code-STDMX7EM.js} +3 -3
- package/dist/{roo-code-6TSCME4R.js → roo-code-DLPIHHQ6.js} +3 -3
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +7 -7
- package/dist/sdk/index.d.ts +4 -4
- package/dist/sdk/index.js +4 -4
- package/dist/sdk/test.d.ts +2 -2
- package/dist/sdk/test.js +7 -7
- package/dist/{serve-EPRN7F2X.js → serve-ABTO2NA2.js} +9 -9
- package/dist/{status-B2PG6YKR.js → status-J7SOUH7O.js} +7 -7
- package/dist/{statusline-5ERFMYSM.js → statusline-QF4G724E.js} +8 -8
- package/dist/{telemetry-ZMCAWBWB.js → telemetry-EICCFEIF.js} +6 -6
- package/dist/{trae-7KDCYIMN.js → trae-UOYD6JZZ.js} +3 -3
- package/dist/{types-D0RqWxT8.d.ts → types-BhcUEIJJ.d.ts} +39 -3
- package/dist/{uninstall-M76BHLTH.js → uninstall-NJNNZZZY.js} +11 -11
- package/dist/{upgrade-JLSCNAQA.js → upgrade-TIBUOQNM.js} +11 -11
- package/dist/{usage-5I72HWCR.js → usage-VEVBWPLS.js} +2 -2
- package/dist/{usage-event-HIX4ZI45.js → usage-event-GRQE7XWT.js} +8 -8
- package/dist/{vscode-copilot-LILHAPJI.js → vscode-copilot-NIMH2DGU.js} +3 -3
- package/dist/{warp-KJUCWEA3.js → warp-QYJGKURM.js} +3 -3
- package/dist/{windsurf-5TGGQR5I.js → windsurf-75LLZ37C.js} +3 -3
- package/dist/{zed-EL3JCZ25.js → zed-HKAZXEJW.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-AY3VFNOH.js.map +0 -1
- package/dist/chunk-JVO6NBTT.js.map +0 -1
- package/dist/chunk-M2H7JURF.js.map +0 -1
- /package/dist/{action-CVIEPX4U.js.map → action-DOWHWEDZ.js.map} +0 -0
- /package/dist/{amazon-q-TIT7FIW3.js.map → amazon-q-ETMAGY3D.js.map} +0 -0
- /package/dist/{amp-NF3OAAUG.js.map → amp-67BZONGF.js.map} +0 -0
- /package/dist/{antigravity-7LPK7QOY.js.map → antigravity-VXLDLTO7.js.map} +0 -0
- /package/dist/{antigravity-cli-MDEMPPAH.js.map → antigravity-cli-OM6SC3PE.js.map} +0 -0
- /package/dist/{chunk-7UT6OB52.js.map → chunk-2RIFORQS.js.map} +0 -0
- /package/dist/{chunk-JFXL4HYA.js.map → chunk-6WZODR3Z.js.map} +0 -0
- /package/dist/{chunk-447JWFZO.js.map → chunk-EHP7WISI.js.map} +0 -0
- /package/dist/{chunk-FBCBHEGB.js.map → chunk-I5TO42QC.js.map} +0 -0
- /package/dist/{chunk-3C5AASHM.js.map → chunk-JKKU2WKG.js.map} +0 -0
- /package/dist/{chunk-WFEHWTLM.js.map → chunk-MGTDQLJJ.js.map} +0 -0
- /package/dist/{chunk-5Z36KVU2.js.map → chunk-OEADFFKO.js.map} +0 -0
- /package/dist/{chunk-L26PSQTY.js.map → chunk-P23RVIUY.js.map} +0 -0
- /package/dist/{chunk-KA55FISM.js.map → chunk-SILKSP2Y.js.map} +0 -0
- /package/dist/{chunk-JO2IM2JL.js.map → chunk-TTKSYJRY.js.map} +0 -0
- /package/dist/{chunk-DI5S6TXJ.js.map → chunk-XC5SJ35F.js.map} +0 -0
- /package/dist/{chunk-FO5CEXXN.js.map → chunk-ZMAJ2XFD.js.map} +0 -0
- /package/dist/{claude-code-7RS4YVGZ.js.map → claude-code-DUZNOAS2.js.map} +0 -0
- /package/dist/{cline-BZQAUYPC.js.map → cline-25KW25IN.js.map} +0 -0
- /package/dist/{codebuddy-G42IKGKB.js.map → codebuddy-ZNYQACMF.js.map} +0 -0
- /package/dist/{codebuff-5RLTLZAU.js.map → codebuff-VR6JUDIY.js.map} +0 -0
- /package/dist/{codex-XHAMJILX.js.map → codex-CPNKTXG3.js.map} +0 -0
- /package/dist/{continue-JLIB7R7X.js.map → continue-WU2IB5KS.js.map} +0 -0
- /package/dist/{copilot-cli-XZSUYNQZ.js.map → copilot-cli-PAP377OM.js.map} +0 -0
- /package/dist/{crush-ESERLVLT.js.map → crush-3AVQA4YU.js.map} +0 -0
- /package/dist/{cursor-FUDOV5VK.js.map → cursor-GSLUET3V.js.map} +0 -0
- /package/dist/{detect-Z5BDTY6B.js.map → detect-DYQNUMXL.js.map} +0 -0
- /package/dist/{devin-Y7PWKVHY.js.map → devin-QMEM3OFA.js.map} +0 -0
- /package/dist/{doctor-GAP27PP2.js.map → doctor-H6XXAR63.js.map} +0 -0
- /package/dist/{droid-DTO5POTK.js.map → droid-MOKV53J4.js.map} +0 -0
- /package/dist/{gemini-cli-RBIG6U2F.js.map → gemini-cli-47ZHCOZR.js.map} +0 -0
- /package/dist/{goose-VGNOP5J2.js.map → goose-4EI5MYTI.js.map} +0 -0
- /package/dist/{grok-cli-2RFBK6J3.js.map → grok-cli-QYQPDSVB.js.map} +0 -0
- /package/dist/{hermes-NUKFWZI5.js.map → hermes-F75OSK3Y.js.map} +0 -0
- /package/dist/{hook-XPR3AHDI.js.map → hook-GIQTUDMN.js.map} +0 -0
- /package/dist/{install-O32TDIZP.js.map → install-T27662FW.js.map} +0 -0
- /package/dist/{jetbrains-copilot-FXZ5AOTS.js.map → jetbrains-copilot-ZGIWI6YV.js.map} +0 -0
- /package/dist/{junie-TSXIZSCE.js.map → junie-DIFN2P22.js.map} +0 -0
- /package/dist/{kilo-JLH3KVZJ.js.map → kilo-EMZJBEBB.js.map} +0 -0
- /package/dist/{kilo-cli-5W36VJQZ.js.map → kilo-cli-S3GXBPAE.js.map} +0 -0
- /package/dist/{kimi-R62W7HKZ.js.map → kimi-IQJOIY6B.js.map} +0 -0
- /package/dist/{kiro-AUJMGIBL.js.map → kiro-BYX4HEAJ.js.map} +0 -0
- /package/dist/{leaderboard-YWMOSJBC.js.map → leaderboard-CIMQBOUS.js.map} +0 -0
- /package/dist/{mimo-code-PGLFFVER.js.map → mimo-code-7R53QDHB.js.map} +0 -0
- /package/dist/{mistral-vibe-36CZVQNQ.js.map → mistral-vibe-LHJ55FSB.js.map} +0 -0
- /package/dist/{mux-HWL4N5KH.js.map → mux-NYCNGL43.js.map} +0 -0
- /package/dist/{nemoclaw-QPHETUXM.js.map → nemoclaw-WSIPSE7U.js.map} +0 -0
- /package/dist/{omp-3TFMTJ5U.js.map → omp-562NK5BJ.js.map} +0 -0
- /package/dist/{open-interpreter-UTBKE2EH.js.map → open-interpreter-I2CNOEXY.js.map} +0 -0
- /package/dist/{openclaw-RYFO5TLY.js.map → openclaw-7EYBQS4R.js.map} +0 -0
- /package/dist/{opencode-JX7GBE5Q.js.map → opencode-YS4WX2E2.js.map} +0 -0
- /package/dist/{openhands-AZW4PXJ3.js.map → openhands-QMYIKNOS.js.map} +0 -0
- /package/dist/{package-2KKUGZFS.js.map → package-LIPZKHAQ.js.map} +0 -0
- /package/dist/{pi-MRI3EBWU.js.map → pi-644FIN3A.js.map} +0 -0
- /package/dist/{qwen-code-ISR6BEET.js.map → qwen-code-STDMX7EM.js.map} +0 -0
- /package/dist/{roo-code-6TSCME4R.js.map → roo-code-DLPIHHQ6.js.map} +0 -0
- /package/dist/{serve-EPRN7F2X.js.map → serve-ABTO2NA2.js.map} +0 -0
- /package/dist/{status-B2PG6YKR.js.map → status-J7SOUH7O.js.map} +0 -0
- /package/dist/{statusline-5ERFMYSM.js.map → statusline-QF4G724E.js.map} +0 -0
- /package/dist/{telemetry-ZMCAWBWB.js.map → telemetry-EICCFEIF.js.map} +0 -0
- /package/dist/{trae-7KDCYIMN.js.map → trae-UOYD6JZZ.js.map} +0 -0
- /package/dist/{uninstall-M76BHLTH.js.map → uninstall-NJNNZZZY.js.map} +0 -0
- /package/dist/{upgrade-JLSCNAQA.js.map → upgrade-TIBUOQNM.js.map} +0 -0
- /package/dist/{usage-5I72HWCR.js.map → usage-VEVBWPLS.js.map} +0 -0
- /package/dist/{usage-event-HIX4ZI45.js.map → usage-event-GRQE7XWT.js.map} +0 -0
- /package/dist/{vscode-copilot-LILHAPJI.js.map → vscode-copilot-NIMH2DGU.js.map} +0 -0
- /package/dist/{warp-KJUCWEA3.js.map → warp-QYJGKURM.js.map} +0 -0
- /package/dist/{windsurf-5TGGQR5I.js.map → windsurf-75LLZ37C.js.map} +0 -0
- /package/dist/{zed-EL3JCZ25.js.map → zed-HKAZXEJW.js.map} +0 -0
|
@@ -8,43 +8,43 @@ var ADAPTER_REGISTRY = [
|
|
|
8
8
|
// runtime markers are checked first during host detection (fork-before-parent).
|
|
9
9
|
{
|
|
10
10
|
id: "codebuddy",
|
|
11
|
-
load: () => import("./codebuddy-
|
|
11
|
+
load: () => import("./codebuddy-ZNYQACMF.js").then((m) => m.default)
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
id: "claude-code",
|
|
15
|
-
load: () => import("./claude-code-
|
|
15
|
+
load: () => import("./claude-code-DUZNOAS2.js").then((m) => m.default)
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
id: "codex",
|
|
19
|
-
load: () => import("./codex-
|
|
19
|
+
load: () => import("./codex-CPNKTXG3.js").then((m) => m.default)
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
id: "cursor",
|
|
23
|
-
load: () => import("./cursor-
|
|
23
|
+
load: () => import("./cursor-GSLUET3V.js").then((m) => m.default)
|
|
24
24
|
},
|
|
25
25
|
// vscode-copilot after cursor: cursor is a VS Code fork, so the fork's runtime
|
|
26
26
|
// markers must be checked first during host detection.
|
|
27
27
|
{
|
|
28
28
|
id: "vscode-copilot",
|
|
29
|
-
load: () => import("./vscode-copilot-
|
|
29
|
+
load: () => import("./vscode-copilot-NIMH2DGU.js").then((m) => m.default)
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
id: "copilot-cli",
|
|
33
|
-
load: () => import("./copilot-cli-
|
|
33
|
+
load: () => import("./copilot-cli-PAP377OM.js").then((m) => m.default)
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
id: "gemini-cli",
|
|
37
|
-
load: () => import("./gemini-cli-
|
|
37
|
+
load: () => import("./gemini-cli-47ZHCOZR.js").then((m) => m.default)
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
id: "warp",
|
|
41
|
-
load: () => import("./warp-
|
|
41
|
+
load: () => import("./warp-QYJGKURM.js").then((m) => m.default)
|
|
42
42
|
},
|
|
43
43
|
// ts-plugin paradigm: OpenCode loads a generated plugin module that bridges
|
|
44
44
|
// its in-process events to the universal hook entrypoint.
|
|
45
45
|
{
|
|
46
46
|
id: "opencode",
|
|
47
|
-
load: () => import("./opencode-
|
|
47
|
+
load: () => import("./opencode-YS4WX2E2.js").then((m) => m.default)
|
|
48
48
|
},
|
|
49
49
|
// mimo-code is Xiaomi's MiMoCode (@mimo-ai/cli, bin `mimo`) — an OpenCode FORK
|
|
50
50
|
// (ts-plugin, MCP root key "mcp", ~/.config/mimocode/mimocode.json). Grouped
|
|
@@ -53,7 +53,7 @@ var ADAPTER_REGISTRY = [
|
|
|
53
53
|
// constraint vs opencode (no shared config file to disambiguate).
|
|
54
54
|
{
|
|
55
55
|
id: "mimo-code",
|
|
56
|
-
load: () => import("./mimo-code-
|
|
56
|
+
load: () => import("./mimo-code-7R53QDHB.js").then((m) => m.default)
|
|
57
57
|
},
|
|
58
58
|
// kilo-cli is the SQLite-backed OpenCode FORK command-line product (ts-plugin,
|
|
59
59
|
// loads @kilocode/plugin modules registered in kilo.jsonc's "plugin" array;
|
|
@@ -62,12 +62,12 @@ var ADAPTER_REGISTRY = [
|
|
|
62
62
|
// the "kilo" extension so there is no fork-ordering constraint between them.
|
|
63
63
|
{
|
|
64
64
|
id: "kilo-cli",
|
|
65
|
-
load: () => import("./kilo-cli-
|
|
65
|
+
load: () => import("./kilo-cli-S3GXBPAE.js").then((m) => m.default)
|
|
66
66
|
},
|
|
67
67
|
// Wave 1 — mcp-only adapters (no lifecycle hooks; MCP registration only).
|
|
68
68
|
{
|
|
69
69
|
id: "droid",
|
|
70
|
-
load: () => import("./droid-
|
|
70
|
+
load: () => import("./droid-MOKV53J4.js").then((m) => m.default)
|
|
71
71
|
},
|
|
72
72
|
// openhands is the All-Hands-AI OpenHands CLI (`openhands`, ex-OpenDevin) —
|
|
73
73
|
// a standalone json-stdio host: MCP at ~/.openhands/mcp.json ("mcpServers",
|
|
@@ -76,18 +76,18 @@ var ADAPTER_REGISTRY = [
|
|
|
76
76
|
// dir (~/.openhands) is distinct, so there is no fork-ordering constraint.
|
|
77
77
|
{
|
|
78
78
|
id: "openhands",
|
|
79
|
-
load: () => import("./openhands-
|
|
79
|
+
load: () => import("./openhands-QMYIKNOS.js").then((m) => m.default)
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
id: "roo-code",
|
|
83
|
-
load: () => import("./roo-code-
|
|
83
|
+
load: () => import("./roo-code-DLPIHHQ6.js").then((m) => m.default)
|
|
84
84
|
},
|
|
85
85
|
// kilo is the Kilo Code VS Code extension (kilocode.kilo-code) — a Roo/Cline
|
|
86
86
|
// fork, so it sits beside roo-code (mcp-only, root key "mcpServers", VS Code
|
|
87
87
|
// globalStorage / .kilocode project scope). Distinct host from "kilo-cli".
|
|
88
88
|
{
|
|
89
89
|
id: "kilo",
|
|
90
|
-
load: () => import("./kilo-
|
|
90
|
+
load: () => import("./kilo-EMZJBEBB.js").then((m) => m.default)
|
|
91
91
|
},
|
|
92
92
|
// cline is the Cline VS Code extension (saoudrizwan.claude-dev) — the most-
|
|
93
93
|
// installed AI coding extension and the PARENT that roo-code and kilo forked.
|
|
@@ -98,11 +98,11 @@ var ADAPTER_REGISTRY = [
|
|
|
98
98
|
// is NO fork-before-parent ordering constraint here; it simply sits beside them.
|
|
99
99
|
{
|
|
100
100
|
id: "cline",
|
|
101
|
-
load: () => import("./cline-
|
|
101
|
+
load: () => import("./cline-25KW25IN.js").then((m) => m.default)
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
id: "trae",
|
|
105
|
-
load: () => import("./trae-
|
|
105
|
+
load: () => import("./trae-UOYD6JZZ.js").then((m) => m.default)
|
|
106
106
|
},
|
|
107
107
|
// antigravity-cli BEFORE antigravity: the `agy` CLI is a fork of the IDE
|
|
108
108
|
// adapter with its own runtime markers (the universal hook command tags the
|
|
@@ -110,69 +110,69 @@ var ADAPTER_REGISTRY = [
|
|
|
110
110
|
// before the IDE/parent during host detection.
|
|
111
111
|
{
|
|
112
112
|
id: "antigravity-cli",
|
|
113
|
-
load: () => import("./antigravity-cli-
|
|
113
|
+
load: () => import("./antigravity-cli-OM6SC3PE.js").then((m) => m.default)
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
id: "antigravity",
|
|
117
|
-
load: () => import("./antigravity-
|
|
117
|
+
load: () => import("./antigravity-VXLDLTO7.js").then((m) => m.default)
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
id: "zed",
|
|
121
|
-
load: () => import("./zed-
|
|
121
|
+
load: () => import("./zed-HKAZXEJW.js").then((m) => m.default)
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
id: "amp",
|
|
125
|
-
load: () => import("./amp-
|
|
125
|
+
load: () => import("./amp-67BZONGF.js").then((m) => m.default)
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
id: "codebuff",
|
|
129
|
-
load: () => import("./codebuff-
|
|
129
|
+
load: () => import("./codebuff-VR6JUDIY.js").then((m) => m.default)
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
id: "mux",
|
|
133
|
-
load: () => import("./mux-
|
|
133
|
+
load: () => import("./mux-NYCNGL43.js").then((m) => m.default)
|
|
134
134
|
},
|
|
135
135
|
// Pi — mcp-only host with no writable MCP config; drives the Agent Skills
|
|
136
136
|
// surface only (writes <piDir>/skills/<name>/SKILL.md).
|
|
137
137
|
{
|
|
138
138
|
id: "pi",
|
|
139
|
-
load: () => import("./pi-
|
|
139
|
+
load: () => import("./pi-644FIN3A.js").then((m) => m.default)
|
|
140
140
|
},
|
|
141
141
|
// Wave 2 — json-stdio adapters (full hook dispatch via the universal entrypoint).
|
|
142
142
|
// jetbrains-copilot before vscode-copilot is unnecessary (distinct hosts); grouped here.
|
|
143
143
|
{
|
|
144
144
|
id: "jetbrains-copilot",
|
|
145
|
-
load: () => import("./jetbrains-copilot-
|
|
145
|
+
load: () => import("./jetbrains-copilot-ZGIWI6YV.js").then((m) => m.default)
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
148
|
id: "qwen-code",
|
|
149
|
-
load: () => import("./qwen-code-
|
|
149
|
+
load: () => import("./qwen-code-STDMX7EM.js").then((m) => m.default)
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
152
|
id: "kiro",
|
|
153
|
-
load: () => import("./kiro-
|
|
153
|
+
load: () => import("./kiro-BYX4HEAJ.js").then((m) => m.default)
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
156
|
id: "kimi",
|
|
157
|
-
load: () => import("./kimi-
|
|
157
|
+
load: () => import("./kimi-IQJOIY6B.js").then((m) => m.default)
|
|
158
158
|
},
|
|
159
159
|
{
|
|
160
160
|
id: "crush",
|
|
161
|
-
load: () => import("./crush-
|
|
161
|
+
load: () => import("./crush-3AVQA4YU.js").then((m) => m.default)
|
|
162
162
|
},
|
|
163
163
|
// Wave 3 — json-stdio adapters with YAML config (MCP in YAML; hooks per host).
|
|
164
164
|
{
|
|
165
165
|
id: "goose",
|
|
166
|
-
load: () => import("./goose-
|
|
166
|
+
load: () => import("./goose-4EI5MYTI.js").then((m) => m.default)
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
id: "hermes",
|
|
170
|
-
load: () => import("./hermes-
|
|
170
|
+
load: () => import("./hermes-F75OSK3Y.js").then((m) => m.default)
|
|
171
171
|
},
|
|
172
172
|
// Wave 4 — ts-plugin adapters (generate a bridge module to the universal entrypoint).
|
|
173
173
|
{
|
|
174
174
|
id: "omp",
|
|
175
|
-
load: () => import("./omp-
|
|
175
|
+
load: () => import("./omp-562NK5BJ.js").then((m) => m.default)
|
|
176
176
|
},
|
|
177
177
|
// nemoclaw BEFORE openclaw (fork-before-parent convention). NVIDIA NemoClaw
|
|
178
178
|
// wraps OpenClaw and DRIVES the SAME ~/.openclaw/openclaw.json, so a NemoClaw
|
|
@@ -185,11 +185,11 @@ var ADAPTER_REGISTRY = [
|
|
|
185
185
|
// lands in the wrapped openclaw.json.
|
|
186
186
|
{
|
|
187
187
|
id: "nemoclaw",
|
|
188
|
-
load: () => import("./nemoclaw-
|
|
188
|
+
load: () => import("./nemoclaw-WSIPSE7U.js").then((m) => m.default)
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
id: "openclaw",
|
|
192
|
-
load: () => import("./openclaw-
|
|
192
|
+
load: () => import("./openclaw-7EYBQS4R.js").then((m) => m.default)
|
|
193
193
|
},
|
|
194
194
|
// Wave 5 — mcp-only: Amazon Q Developer CLI. JSON MCP config under ~/.aws/amazonq/
|
|
195
195
|
// (user) and .amazonq/ (project); root key "mcpServers"; bare stdio entry
|
|
@@ -199,7 +199,7 @@ var ADAPTER_REGISTRY = [
|
|
|
199
199
|
// adapter installs MCP entries + the .amazonq/rules memory surface.
|
|
200
200
|
{
|
|
201
201
|
id: "amazon-q",
|
|
202
|
-
load: () => import("./amazon-q-
|
|
202
|
+
load: () => import("./amazon-q-ETMAGY3D.js").then((m) => m.default)
|
|
203
203
|
},
|
|
204
204
|
// Continue (the `cn` terminal agent / Continue.dev, npm @continuedev/cli) —
|
|
205
205
|
// json-stdio (Claude-compatible hooks). MCP config is YAML at ~/.continue/config.yaml (user) and
|
|
@@ -211,7 +211,7 @@ var ADAPTER_REGISTRY = [
|
|
|
211
211
|
// fork-ordering constraint vs any sibling.
|
|
212
212
|
{
|
|
213
213
|
id: "continue",
|
|
214
|
-
load: () => import("./continue-
|
|
214
|
+
load: () => import("./continue-WU2IB5KS.js").then((m) => m.default)
|
|
215
215
|
},
|
|
216
216
|
// Windsurf (Codeium / Cognition's Cascade agent) — mcp-only. USER/GLOBAL scope
|
|
217
217
|
// ONLY: MCP config is JSON at ~/.codeium/windsurf/mcp_config.json (the docs
|
|
@@ -225,7 +225,7 @@ var ADAPTER_REGISTRY = [
|
|
|
225
225
|
// memory surface. Distinct ~/.codeium marker — no fork-ordering constraint.
|
|
226
226
|
{
|
|
227
227
|
id: "windsurf",
|
|
228
|
-
load: () => import("./windsurf-
|
|
228
|
+
load: () => import("./windsurf-75LLZ37C.js").then((m) => m.default)
|
|
229
229
|
},
|
|
230
230
|
// Grok CLI (the community superagent-ai/grok-cli, npm `grok-dev`, bin `grok`,
|
|
231
231
|
// MIT) — json-stdio. Id is `grok-cli` (NOT `grok`) to stay distinct from xAI's
|
|
@@ -237,7 +237,7 @@ var ADAPTER_REGISTRY = [
|
|
|
237
237
|
// sibling.
|
|
238
238
|
{
|
|
239
239
|
id: "grok-cli",
|
|
240
|
-
load: () => import("./grok-cli-
|
|
240
|
+
load: () => import("./grok-cli-QYQPDSVB.js").then((m) => m.default)
|
|
241
241
|
},
|
|
242
242
|
// Devin CLI (Cognition) — json-stdio. A Rust binary (`devin`, installed via
|
|
243
243
|
// `curl cli.devin.ai/install.sh` → ~/.local/bin/devin). MCP + hooks live in
|
|
@@ -250,7 +250,7 @@ var ADAPTER_REGISTRY = [
|
|
|
250
250
|
// ~/.config/devin / .devin marker — no fork-ordering constraint.
|
|
251
251
|
{
|
|
252
252
|
id: "devin",
|
|
253
|
-
load: () => import("./devin-
|
|
253
|
+
load: () => import("./devin-QMEM3OFA.js").then((m) => m.default)
|
|
254
254
|
},
|
|
255
255
|
// Open Interpreter (the new Rust `interpreter` / `i` CLI) — mcp-only. It is a
|
|
256
256
|
// FORK of OpenAI's Codex (README: "Open Interpreter is a fork of OpenAI's
|
|
@@ -266,7 +266,7 @@ var ADAPTER_REGISTRY = [
|
|
|
266
266
|
// wire contract is not first-party-verified, so hooks are not claimed).
|
|
267
267
|
{
|
|
268
268
|
id: "open-interpreter",
|
|
269
|
-
load: () => import("./open-interpreter-
|
|
269
|
+
load: () => import("./open-interpreter-I2CNOEXY.js").then((m) => m.default)
|
|
270
270
|
},
|
|
271
271
|
// Junie (JetBrains' OWN LLM-agnostic coding agent — DISTINCT from
|
|
272
272
|
// jetbrains-copilot, which is GitHub Copilot in JetBrains IDEs) — mcp-only.
|
|
@@ -278,7 +278,7 @@ var ADAPTER_REGISTRY = [
|
|
|
278
278
|
// fork-ordering constraint vs any sibling.
|
|
279
279
|
{
|
|
280
280
|
id: "junie",
|
|
281
|
-
load: () => import("./junie-
|
|
281
|
+
load: () => import("./junie-DIFN2P22.js").then((m) => m.default)
|
|
282
282
|
},
|
|
283
283
|
// mistral-vibe is Mistral's coding-agent CLI — an mcp-only host. MCP config is
|
|
284
284
|
// TOML at <projectDir>/.vibe/config.toml (project, precedence) → ~/.vibe/
|
|
@@ -288,7 +288,7 @@ var ADAPTER_REGISTRY = [
|
|
|
288
288
|
// no fork-ordering constraint.
|
|
289
289
|
{
|
|
290
290
|
id: "mistral-vibe",
|
|
291
|
-
load: () => import("./mistral-vibe-
|
|
291
|
+
load: () => import("./mistral-vibe-LHJ55FSB.js").then((m) => m.default)
|
|
292
292
|
}
|
|
293
293
|
];
|
|
294
294
|
var REGISTRY_BY_ID = new Map(
|
|
@@ -314,4 +314,4 @@ export {
|
|
|
314
314
|
loadAdapter,
|
|
315
315
|
allAdapters
|
|
316
316
|
};
|
|
317
|
-
//# sourceMappingURL=chunk-
|
|
317
|
+
//# sourceMappingURL=chunk-SILKSP2Y.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
installInstructions,
|
|
4
4
|
packageConnector
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-B5W3RHTI.js";
|
|
6
6
|
import {
|
|
7
7
|
MARKETPLACE_NAME,
|
|
8
8
|
agyPluginInstalled,
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
} from "./chunk-Z2MRSS2I.js";
|
|
50
50
|
import {
|
|
51
51
|
detectInstalledPlatforms
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-ZMAJ2XFD.js";
|
|
53
53
|
import {
|
|
54
54
|
log
|
|
55
55
|
} from "./chunk-KHO5WNTP.js";
|
|
@@ -57,11 +57,11 @@ import {
|
|
|
57
57
|
deregisterConnector,
|
|
58
58
|
loadRegisteredConnector,
|
|
59
59
|
registerConnector
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-KSPMSRVU.js";
|
|
61
61
|
import {
|
|
62
62
|
REGISTERED_PLATFORM_IDS,
|
|
63
63
|
loadAdapter
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-SILKSP2Y.js";
|
|
65
65
|
import {
|
|
66
66
|
configPatchManualEdit
|
|
67
67
|
} from "./chunk-NBYKLUF6.js";
|
|
@@ -70,7 +70,7 @@ import {
|
|
|
70
70
|
} from "./chunk-BEFVJ2OE.js";
|
|
71
71
|
import {
|
|
72
72
|
hasMemoryLedger
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-UMQ6NBQR.js";
|
|
74
74
|
import {
|
|
75
75
|
connectorDir,
|
|
76
76
|
connectorsDir,
|
|
@@ -3396,4 +3396,4 @@ export {
|
|
|
3396
3396
|
upgradeViaMarketplace,
|
|
3397
3397
|
marketplaceDoctorChecks
|
|
3398
3398
|
};
|
|
3399
|
-
//# sourceMappingURL=chunk-
|
|
3399
|
+
//# sourceMappingURL=chunk-TTKSYJRY.js.map
|
|
@@ -30,7 +30,7 @@ function hashBlockContent(inner) {
|
|
|
30
30
|
return createHash("sha256").update(normalizeInner(inner), "utf8").digest("hex").slice(0, 12);
|
|
31
31
|
}
|
|
32
32
|
function defaultNotice(connectorId) {
|
|
33
|
-
return `Managed by agent-connector for "${connectorId}". Do not edit between these markers:
|
|
33
|
+
return `Managed by agent-connector for "${connectorId}". Do not edit between these markers: run your connector package's upgrade/sync command to rewrite this block; run its uninstall command to remove it (framework fallback: \`agent-connector uninstall ${connectorId}\`).`;
|
|
34
34
|
}
|
|
35
35
|
function beginLine(blockId, hash, style) {
|
|
36
36
|
return style === "hash" ? `# ${MANAGED_BLOCK_BEGIN_TOKEN} ${blockId} hash=${hash}` : `<!-- ${MANAGED_BLOCK_BEGIN_TOKEN} ${blockId} hash=${hash} -->`;
|
|
@@ -493,4 +493,4 @@ export {
|
|
|
493
493
|
hasMemoryLedger,
|
|
494
494
|
recordMemoryTarget
|
|
495
495
|
};
|
|
496
|
-
//# sourceMappingURL=chunk-
|
|
496
|
+
//# sourceMappingURL=chunk-UMQ6NBQR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/managed-block.ts"],"sourcesContent":["/**\n * core/managed-block — the marker-fenced MANAGED BLOCK engine behind the\n * `memory` content surface.\n *\n * Memory/rules files (AGENTS.md, CLAUDE.md, GEMINI.md, …) are SHARED,\n * user-authored files — unlike commands/skills/subagents, agent-connector does\n * not own them. Every write therefore goes through this one module, which\n * implements idempotent, hash-stamped, uninstall-reversible blocks:\n *\n * <!-- agent-connector:begin <connectorId>/<name> hash=<sha256-12> -->\n * <!-- Managed by agent-connector for \"<connectorId>\". Do not edit … -->\n * …guidance…\n * <!-- agent-connector:end <connectorId>/<name> -->\n *\n * Design rules (each grounded in surveyed prior art — ansible blockinfile,\n * conda init, OMC mergeClaudeMd, Ruler, doctoc):\n * • UNIQUE marker per block: the blockId (`<connectorId>/<entryName>`) lives\n * ON the marker line, so multiple connectors coexist in one file and each\n * update path only ever touches its own pair (ansible's documented\n * multi-block rule). The shared `agent-connector` namespace token lets\n * doctor/uninstall enumerate every block with one scan.\n * • `hash=` is the first 12 hex chars of sha256 over the NORMALIZED inner\n * region (CRLF→LF + trim — stable under prettier/EOL converters): O(1)\n * idempotence (unchanged → skip, no mtime/git churn) and tamper detection\n * (actual inner hash ≠ recorded ⇒ the user edited inside the block ⇒ warn,\n * never clobber without an explicit force).\n * • IN-PLACE replacement (conda semantics): zero bytes outside the marker\n * pair ever change — no move-to-top, no user blank-line reflow.\n * • Line-anchored matching that explicitly tolerates `\\r` line ends and a\n * FENCE-AWARE scanner (markers quoted inside ``` / ~~~ code fences never\n * match) — fixes the CRLF duplicate-block and quoted-marker classes.\n * • First-begin / FIRST-end-after pairing (never last-end): a missing end\n * marker must not swallow a sibling connector's block.\n * • HTML-comment markers are CORRECT for CLAUDE.md: Claude Code strips HTML\n * comments from CLAUDE.md before context injection (verified against docs\n * and the 2.1.172 binary), so the markers and the do-not-edit notice are\n * INVISIBLE to the model there while remaining fully parseable by us for\n * sync/doctor/uninstall. On AGENTS.md hosts (which inline the whole file\n * into the prompt) the short notice doubles as an in-prompt \"do not edit\"\n * instruction to the host's own agent. A `commentStyle: \"hash\"` variant\n * exists for future non-markdown targets (`#`-prefixed marker lines).\n *\n * The module also owns the per-connector MEMORY OWNERSHIP LEDGER\n * (`connectorDir(id)/memory-state.json`): the markers in the file remain the\n * source of truth for uninstall (a teammate's machine with no ledger still\n * uninstalls via the prefix scan); the ledger only adds the created-vs-modified\n * distinction (file deletion rights) and doctor diagnostics.\n */\n\nimport { createHash } from \"node:crypto\";\nimport {\n chmodSync,\n copyFileSync,\n existsSync,\n readFileSync,\n renameSync,\n rmSync,\n statSync,\n writeFileSync,\n} from \"node:fs\";\nimport { basename, dirname, join } from \"node:path\";\n\nimport { assertNoSymlinkInPath, backupsDir, connectorDir, ensureDir } from \"./paths.js\";\n\n// ─────────────────────────────────────────────────────────────────────────\n// Grammar constants (shared with defineConnector's content validation)\n// ─────────────────────────────────────────────────────────────────────────\n\n/** Literal begin token. Connector memory content MUST NOT contain it. */\nexport const MANAGED_BLOCK_BEGIN_TOKEN = \"agent-connector:begin\";\n/** Literal end token. Connector memory content MUST NOT contain it. */\nexport const MANAGED_BLOCK_END_TOKEN = \"agent-connector:end\";\n\n/** Hard cap on one memory entry's content (ConnectorConfigError above this). */\nexport const MEMORY_CONTENT_HARD_CAP_BYTES = 16 * 1024;\n/**\n * Soft per-entry budget — exceeded → install-time `warn` ChangeRecord (memory\n * files are injected into EVERY prompt of EVERY session on the host; codex\n * additionally caps combined project docs at 32 KiB).\n */\nexport const MEMORY_CONTENT_SOFT_BUDGET_BYTES = 4 * 1024;\n\n/** Marker comment style: HTML comments (default, all v1 markdown targets) or `#` lines. */\nexport type BlockCommentStyle = \"html\" | \"hash\";\n\n// ─────────────────────────────────────────────────────────────────────────\n// Hashing / rendering\n// ─────────────────────────────────────────────────────────────────────────\n\n/** CRLF/CR → LF + trim: the normalization both hashing sides use. */\nfunction normalizeInner(s: string): string {\n return s.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\").trim();\n}\n\n/** First 12 hex chars of sha256 over the NORMALIZED inner region. */\nexport function hashBlockContent(inner: string): string {\n return createHash(\"sha256\").update(normalizeInner(inner), \"utf8\").digest(\"hex\").slice(0, 12);\n}\n\n/** The conda-style in-block warning, adapted for the LLM era (see header). */\nfunction defaultNotice(connectorId: string): string {\n return (\n `Managed by agent-connector for \"${connectorId}\". Do not edit between these markers: ` +\n `run your connector package's upgrade/sync command to rewrite this block; ` +\n `run its uninstall command to remove it ` +\n `(framework fallback: \\`agent-connector uninstall ${connectorId}\\`).`\n );\n}\n\nfunction beginLine(blockId: string, hash: string, style: BlockCommentStyle): string {\n return style === \"hash\"\n ? `# ${MANAGED_BLOCK_BEGIN_TOKEN} ${blockId} hash=${hash}`\n : `<!-- ${MANAGED_BLOCK_BEGIN_TOKEN} ${blockId} hash=${hash} -->`;\n}\n\n/** END line is a fixed exact string (no hash) so a content change never strands it. */\nfunction endLine(blockId: string, style: BlockCommentStyle): string {\n return style === \"hash\"\n ? `# ${MANAGED_BLOCK_END_TOKEN} ${blockId}`\n : `<!-- ${MANAGED_BLOCK_END_TOKEN} ${blockId} -->`;\n}\n\nfunction noticeLine(notice: string, style: BlockCommentStyle): string {\n return style === \"hash\" ? `# ${notice}` : `<!-- ${notice} -->`;\n}\n\nexport interface RenderBlockOptions {\n /** `<connectorId>/<entryName>` (or the reserved `_shared/<name>` bridge prefix). */\n blockId: string;\n /** Connector id named in the default do-not-edit notice line. */\n connectorId: string;\n /** The guidance payload (plain markdown; normalized + trimmed on emit). */\n content: string;\n /** Marker comment style; default \"html\". */\n commentStyle?: BlockCommentStyle;\n /** Override the default notice line TEXT (without comment delimiters). */\n notice?: string;\n}\n\n/**\n * Render the block as LOGICAL lines (no EOL chars). The recorded `hash=`\n * covers the full inner region (notice line + content) so install and scan\n * compare like for like.\n */\nexport function renderBlockLines(opts: RenderBlockOptions): string[] {\n const style = opts.commentStyle ?? \"html\";\n const inner = [\n noticeLine(opts.notice ?? defaultNotice(opts.connectorId), style),\n ...normalizeInner(opts.content).split(\"\\n\"),\n ];\n const hash = hashBlockContent(inner.join(\"\\n\"));\n return [beginLine(opts.blockId, hash, style), ...inner, endLine(opts.blockId, style)];\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Scanning (fence-aware, line-anchored, CRLF-tolerant)\n// ─────────────────────────────────────────────────────────────────────────\n\n// Both comment styles are RECOGNIZED in one pass (a file may legitimately mix\n// styles only across rewrites; emission always uses the requested style).\nconst BEGIN_RE =\n /^(?:<!--\\s+agent-connector:begin\\s+(\\S+)\\s+hash=([0-9a-f]{12})\\s+-->|#\\s+agent-connector:begin\\s+(\\S+)\\s+hash=([0-9a-f]{12}))\\s*$/;\nconst END_RE = /^(?:<!--\\s+agent-connector:end\\s+(\\S+)\\s+-->|#\\s+agent-connector:end\\s+(\\S+))\\s*$/;\n\ninterface MarkerEvent {\n kind: \"begin\" | \"end\";\n blockId: string;\n /** Recorded hash (begin markers only). */\n hash?: string;\n /** Line index into the logical-lines array. */\n index: number;\n}\n\n/** Strip ONE trailing `\\r` — `raw.split(\"\\n\")` leaves it on CRLF files. */\nfunction stripCr(line: string): string {\n return line.endsWith(\"\\r\") ? line.slice(0, -1) : line;\n}\n\n/**\n * Scan logical lines for marker events, tracking ``` / ~~~ fence state so a\n * marker QUOTED inside a fenced code block never matches (the OMC class of\n * false positives, eliminated rather than just reduced).\n */\nfunction scanMarkers(logical: string[]): MarkerEvent[] {\n const events: MarkerEvent[] = [];\n let fence: { char: string; len: number } | null = null;\n for (let i = 0; i < logical.length; i++) {\n const line = logical[i]!;\n if (fence) {\n const close = line.match(/^ {0,3}(`{3,}|~{3,})\\s*$/);\n if (close && close[1]![0] === fence.char && close[1]!.length >= fence.len) fence = null;\n continue;\n }\n const open = line.match(/^ {0,3}(`{3,}|~{3,})/);\n if (open) {\n fence = { char: open[1]![0]!, len: open[1]!.length };\n continue;\n }\n const b = line.match(BEGIN_RE);\n if (b) {\n events.push({ kind: \"begin\", blockId: (b[1] ?? b[3])!, hash: (b[2] ?? b[4])!, index: i });\n continue;\n }\n const e = line.match(END_RE);\n if (e) events.push({ kind: \"end\", blockId: (e[1] ?? e[2])!, index: i });\n }\n return events;\n}\n\n/**\n * Logical lines of `raw` that sit OUTSIDE ``` / ~~~ code fences — for host\n * probes that must ignore quoted examples (e.g. the claude-code `@AGENTS.md`\n * import detection). Fence lines themselves are excluded.\n */\nexport function linesOutsideFences(raw: string): string[] {\n const body = raw.startsWith(\"\\uFEFF\") ? raw.slice(1) : raw;\n const logical = body.split(\"\\n\").map(stripCr);\n const out: string[] = [];\n let fence: { char: string; len: number } | null = null;\n for (const line of logical) {\n if (fence) {\n const close = line.match(/^ {0,3}(`{3,}|~{3,})\\s*$/);\n if (close && close[1]![0] === fence.char && close[1]!.length >= fence.len) fence = null;\n continue;\n }\n const open = line.match(/^ {0,3}(`{3,}|~{3,})/);\n if (open) {\n fence = { char: open[1]![0]!, len: open[1]!.length };\n continue;\n }\n out.push(line);\n }\n return out;\n}\n\ninterface BlockPair {\n blockId: string;\n begin: MarkerEvent;\n end: MarkerEvent;\n}\n\n/**\n * Pair markers per blockId: first begin, then the FIRST end at-or-after it.\n * A nested begin for the SAME id (inside an open pair) is treated as inner\n * content; unpaired markers are returned as strays. Per-id state means a\n * missing end for connector A can never swallow connector B's block.\n */\nfunction pairMarkers(events: MarkerEvent[]): { pairs: BlockPair[]; strays: MarkerEvent[] } {\n const open = new Map<string, MarkerEvent>();\n const pairs: BlockPair[] = [];\n const strays: MarkerEvent[] = [];\n for (const ev of events) {\n if (ev.kind === \"begin\") {\n if (!open.has(ev.blockId)) open.set(ev.blockId, ev);\n // else: a begin inside an open pair — inner content / abuse; the hash\n // check will flag the pair as drifted rather than guessing boundaries.\n } else {\n const b = open.get(ev.blockId);\n if (b) {\n pairs.push({ blockId: ev.blockId, begin: b, end: ev });\n open.delete(ev.blockId);\n } else {\n strays.push(ev);\n }\n }\n }\n for (const b of open.values()) strays.push(b);\n return { pairs, strays };\n}\n\n/** One discovered block (for doctor / refcount / uninstall enumeration). */\nexport interface ManagedBlockInfo {\n blockId: string;\n /** The hash recorded on the begin marker line. */\n recordedHash: string;\n /** Hash of the actual normalized inner region as found on disk. */\n actualHash: string;\n /** True when recordedHash ≠ actualHash — the user edited inside the block. */\n drifted: boolean;\n beginLine: number;\n endLine: number;\n}\n\n/** Enumerate every complete agent-connector block in `raw` (namespace scan). */\nexport function listManagedBlocks(raw: string): ManagedBlockInfo[] {\n const body = raw.startsWith(\"\\uFEFF\") ? raw.slice(1) : raw;\n const logical = body.split(\"\\n\").map(stripCr);\n const { pairs } = pairMarkers(scanMarkers(logical));\n return pairs.map((p) => {\n const inner = logical.slice(p.begin.index + 1, p.end.index).join(\"\\n\");\n const actualHash = hashBlockContent(inner);\n const recordedHash = p.begin.hash ?? \"\";\n return {\n blockId: p.blockId,\n recordedHash,\n actualHash,\n drifted: recordedHash !== actualHash,\n beginLine: p.begin.index,\n endLine: p.end.index,\n };\n });\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Pure text upsert / removal\n// ─────────────────────────────────────────────────────────────────────────\n\nexport interface UpsertBlockOptions extends RenderBlockOptions {\n /** Overwrite a USER-EDITED (drifted) block. Default false → warn + leave intact. */\n force?: boolean;\n}\n\nexport interface BlockTextResult {\n /** Resulting full text (=== input when nothing changed). */\n text: string;\n action: \"create\" | \"update\" | \"skip\" | \"warn\";\n detail: string;\n changed: boolean;\n /**\n * True when the rewrite was DESTRUCTIVE-ADJACENT (force-overwrote a drifted\n * block, collapsed duplicate pairs, or stripped stray markers) — the file\n * wrapper writes a timestamped backup before persisting such a change.\n */\n recovered: boolean;\n /** Hash of the (new) rendered inner region — recorded in the ledger. */\n hash: string;\n}\n\n/** Detect the file's dominant EOL; new/replaced lines are emitted with it. */\nfunction detectEol(body: string): \"\\n\" | \"\\r\\n\" {\n const crlf = (body.match(/\\r\\n/g) ?? []).length;\n const total = (body.match(/\\n/g) ?? []).length;\n return crlf > 0 && crlf >= total - crlf ? \"\\r\\n\" : \"\\n\";\n}\n\n/** Add `\\r` to logical lines when the file is CRLF (joined with \"\\n\" later). */\nfunction withEol(lines: string[], eol: \"\\n\" | \"\\r\\n\"): string[] {\n return eol === \"\\r\\n\" ? lines.map((l) => `${l}\\r`) : lines;\n}\n\n/**\n * Strip trailing newline(s) + whitespace-only line tails WITHOUT touching\n * trailing spaces on the last content line (bytes outside our block).\n */\nfunction trimTrailingBlank(body: string): string {\n let out = body;\n for (;;) {\n const m = out.match(/\\r?\\n[ \\t]*$/);\n if (!m) return out;\n out = out.slice(0, out.length - m[0].length);\n }\n}\n\n/** Append the rendered block at EOF with exactly ONE blank separator line. */\nfunction appendBlock(body: string, blockLines: string[], eol: \"\\n\" | \"\\r\\n\"): string {\n const blockText = blockLines.join(eol) + eol;\n if (body.trim() === \"\") return blockText;\n return trimTrailingBlank(body) + eol + eol + blockText;\n}\n\n/**\n * Idempotent upsert of one managed block into `raw` (pure; no I/O).\n * See the module header for the full algorithm contract.\n */\nexport function upsertBlockInText(raw: string, opts: UpsertBlockOptions): BlockTextResult {\n const bom = raw.startsWith(\"\\uFEFF\");\n const body = bom ? raw.slice(1) : raw;\n const eol = detectEol(body);\n const lines = body.split(\"\\n\"); // elements keep a trailing \"\\r\" on CRLF files\n const logical = lines.map(stripCr);\n\n const events = scanMarkers(logical).filter((e) => e.blockId === opts.blockId);\n const { pairs, strays } = pairMarkers(events);\n\n const newLines = renderBlockLines(opts);\n const newHash = hashBlockContent(newLines.slice(1, -1).join(\"\\n\"));\n const finish = (text: string, r: Omit<BlockTextResult, \"text\" | \"hash\">): BlockTextResult => ({\n text: bom ? `\\uFEFF${text}` : text,\n hash: newHash,\n ...r,\n });\n\n if (pairs.length > 0) {\n const { begin, end } = pairs[0]!;\n const recorded = begin.hash ?? \"\";\n const actualHash = hashBlockContent(logical.slice(begin.index + 1, end.index).join(\"\\n\"));\n const drifted = actualHash !== recorded;\n\n if (drifted && !opts.force) {\n return finish(body, {\n action: \"warn\",\n detail:\n `block ${opts.blockId} was edited inside the markers ` +\n `(recorded hash ${recorded}, found ${actualHash}); left untouched — ` +\n `re-run with --force to overwrite the in-block edits`,\n changed: false,\n recovered: false,\n });\n }\n\n const duplicates = pairs.slice(1);\n const needsWrite =\n drifted || recorded !== newHash || duplicates.length > 0 || strays.length > 0;\n if (!needsWrite) {\n return finish(body, {\n action: \"skip\",\n detail: `block ${opts.blockId} already up to date (hash ${newHash})`,\n changed: false,\n recovered: false,\n });\n }\n\n // Build the deletion set: the canonical pair region (replaced in place),\n // duplicate pairs (+ ONE adjacent blank line each), and stray marker LINES.\n const del = new Set<number>();\n for (let i = begin.index; i <= end.index; i++) del.add(i);\n for (const dup of duplicates) {\n for (let i = dup.begin.index; i <= dup.end.index; i++) del.add(i);\n reclaimBlankLine(logical, dup.begin.index, dup.end.index, del, lines.length);\n }\n for (const s of strays) del.add(s.index);\n\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n if (i === begin.index) out.push(...withEol(newLines, eol));\n if (!del.has(i)) out.push(lines[i]!);\n }\n const notes: string[] = [];\n if (drifted) notes.push(\"in-block edits overwritten (--force; backup taken)\");\n if (duplicates.length > 0) notes.push(`${duplicates.length} duplicate pair(s) collapsed`);\n if (strays.length > 0) notes.push(`${strays.length} stray marker line(s) removed`);\n return finish(out.join(\"\\n\"), {\n action: \"update\",\n detail:\n `block ${opts.blockId} updated (hash ${recorded || \"?\"} → ${newHash})` +\n (notes.length > 0 ? `; ${notes.join(\"; \")}` : \"\"),\n changed: true,\n recovered: drifted || duplicates.length > 0 || strays.length > 0,\n });\n }\n\n if (strays.length > 0) {\n // Corruption recovery: strip ONLY the stray marker line(s) (never the text\n // between guessed boundaries), then proceed as not-found.\n const del = new Set(strays.map((s) => s.index));\n const cleaned = lines.filter((_, i) => !del.has(i)).join(\"\\n\");\n return finish(appendBlock(cleaned, newLines, eol), {\n action: \"create\",\n detail:\n `block ${opts.blockId} appended after recovery: ${strays.length} stray ` +\n `marker line(s) removed (backup taken)`,\n changed: true,\n recovered: true,\n });\n }\n\n // Not found → append at EOF (one blank separator; whole file when empty).\n return finish(appendBlock(body, newLines, eol), {\n action: \"create\",\n detail: `block ${opts.blockId} appended (hash ${newHash})`,\n changed: true,\n recovered: false,\n });\n}\n\n/**\n * Mark ONE blank line adjacent to a removed begin..end region for deletion\n * (prefer the line before; never the post-final-newline \"\" sentinel).\n */\nfunction reclaimBlankLine(\n logical: string[],\n beginIdx: number,\n endIdx: number,\n del: Set<number>,\n lineCount: number,\n): void {\n const before = beginIdx - 1;\n if (before >= 0 && !del.has(before) && logical[before]!.trim() === \"\") {\n del.add(before);\n return;\n }\n const after = endIdx + 1;\n // The final \"\" element of split(\"\\n\") on a newline-terminated file is the\n // trailing-newline sentinel, not a blank line — leave it alone.\n const isSentinel = after === lineCount - 1 && logical[after] === \"\";\n if (after < lineCount && !isSentinel && !del.has(after) && logical[after]!.trim() === \"\") {\n del.add(after);\n }\n}\n\nexport interface RemoveBlocksOptions {\n /** Remove the block with EXACTLY this id… */\n blockId?: string;\n /** …or every block whose id starts with this prefix (e.g. `<connectorId>/`). */\n blockIdPrefix?: string;\n}\n\nexport interface RemoveRecord {\n blockId: string;\n action: \"remove\" | \"warn\";\n detail: string;\n}\n\nexport interface RemoveBlocksResult {\n text: string;\n changed: boolean;\n records: RemoveRecord[];\n /** True when the remaining text is whitespace-only (file-deletion candidate). */\n fileNowEmpty: boolean;\n /** True when a drifted block was removed or stray markers were stripped. */\n recovered: boolean;\n}\n\n/**\n * Remove every matching managed block (begin..end inclusive + at most ONE\n * adjacent blank separator line — no blank-line accumulation across cycles).\n * Drifted blocks are removed WITH a warn (uninstall intent is explicit; the\n * file wrapper backs the file up first). Stray matching markers are stripped\n * line-only with a warn. Pure; no I/O.\n */\nexport function removeBlocksFromText(raw: string, match: RemoveBlocksOptions): RemoveBlocksResult {\n const bom = raw.startsWith(\"\\uFEFF\");\n const body = bom ? raw.slice(1) : raw;\n const lines = body.split(\"\\n\");\n const logical = lines.map(stripCr);\n\n const matches = (id: string): boolean =>\n (match.blockId !== undefined && id === match.blockId) ||\n (match.blockIdPrefix !== undefined && id.startsWith(match.blockIdPrefix));\n\n const { pairs, strays } = pairMarkers(scanMarkers(logical));\n const targetPairs = pairs.filter((p) => matches(p.blockId));\n const targetStrays = strays.filter((s) => matches(s.blockId));\n\n if (targetPairs.length === 0 && targetStrays.length === 0) {\n return { text: raw, changed: false, records: [], fileNowEmpty: false, recovered: false };\n }\n\n const del = new Set<number>();\n const records: RemoveRecord[] = [];\n let recovered = false;\n\n for (const p of targetPairs) {\n const recorded = p.begin.hash ?? \"\";\n const actualHash = hashBlockContent(\n logical.slice(p.begin.index + 1, p.end.index).join(\"\\n\"),\n );\n for (let i = p.begin.index; i <= p.end.index; i++) del.add(i);\n reclaimBlankLine(logical, p.begin.index, p.end.index, del, lines.length);\n if (actualHash !== recorded) {\n recovered = true;\n records.push({\n blockId: p.blockId,\n action: \"warn\",\n detail:\n `block ${p.blockId} had in-block edits (recorded hash ${recorded}, found ` +\n `${actualHash}); removed anyway (backup taken)`,\n });\n }\n records.push({ blockId: p.blockId, action: \"remove\", detail: `block ${p.blockId} removed` });\n }\n for (const s of targetStrays) {\n del.add(s.index);\n recovered = true;\n records.push({\n blockId: s.blockId,\n action: \"warn\",\n detail: `stray ${s.kind} marker for ${s.blockId} removed (marker line only)`,\n });\n }\n\n const text = lines.filter((_, i) => !del.has(i)).join(\"\\n\");\n return {\n text: bom ? `\\uFEFF${text}` : text,\n changed: true,\n records,\n fileNowEmpty: text.trim() === \"\",\n recovered,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// File-level wrappers (atomic write, backups, dry-run)\n// ─────────────────────────────────────────────────────────────────────────\n\nexport interface BlockFileChange {\n action: \"create\" | \"update\" | \"skip\" | \"warn\" | \"remove\";\n path: string;\n detail: string;\n /** True when the FILE did not exist and this upsert created it (ledger fact). */\n createdFile: boolean;\n /** Set when a pre-mutation backup was written (destructive/recovery paths only). */\n backupPath?: string;\n /** Hash of the rendered inner region (ledger / doctor). */\n hash: string;\n}\n\n/** Timestamped copy into backupsDir(); best-effort (null on failure). */\nfunction backupFile(path: string): string | null {\n try {\n ensureDir(backupsDir());\n const stamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n const dest = join(backupsDir(), `memory-${stamp}-${basename(path)}`);\n copyFileSync(path, dest);\n return dest;\n } catch {\n return null;\n }\n}\n\n/**\n * Atomic write: temp file in the SAME directory + rename, preserving the\n * destination's mode. Shrinks (does not eliminate) the read-modify-write race\n * with hosts that append to memory files mid-session (Claude `#` quick-memory).\n */\nfunction atomicWriteFile(path: string, text: string): void {\n const dir = dirname(path);\n ensureDir(dir);\n const tmp = join(dir, `.${basename(path)}.ac-tmp-${process.pid}-${Date.now()}`);\n try {\n writeFileSync(tmp, text, \"utf8\");\n try {\n chmodSync(tmp, statSync(path).mode);\n } catch {\n /* destination absent — default mode is fine */\n }\n renameSync(tmp, path);\n } catch (err) {\n rmSync(tmp, { force: true });\n throw err;\n }\n}\n\n/**\n * Upsert one managed block into the file at `path` (created when absent).\n * Re-reads immediately before computing+writing; honors dryRun (the action is\n * computed and reported, nothing is written).\n */\nexport function upsertManagedBlockFile(\n path: string,\n opts: UpsertBlockOptions & { dryRun: boolean },\n): BlockFileChange {\n let raw: string | null = null;\n if (existsSync(path)) {\n try {\n raw = readFileSync(path, \"utf8\");\n } catch {\n return {\n action: \"warn\",\n path,\n detail: `cannot read ${path}; memory block ${opts.blockId} not written`,\n createdFile: false,\n hash: \"\",\n };\n }\n }\n\n if (raw === null) {\n const lines = renderBlockLines(opts);\n const hash = hashBlockContent(lines.slice(1, -1).join(\"\\n\"));\n if (!opts.dryRun) atomicWriteFile(path, `${lines.join(\"\\n\")}\\n`);\n return {\n action: \"create\",\n path,\n detail: `created ${basename(path)} with block ${opts.blockId} (hash ${hash})`,\n createdFile: true,\n hash,\n };\n }\n\n const res = upsertBlockInText(raw, opts);\n const change: BlockFileChange = {\n action: res.action,\n path,\n detail: res.detail,\n createdFile: false,\n hash: res.hash,\n };\n if (res.changed && !opts.dryRun) {\n if (res.recovered) {\n const backup = backupFile(path);\n if (backup) change.backupPath = backup;\n }\n atomicWriteFile(path, res.text);\n }\n return change;\n}\n\n/**\n * Remove every matching managed block from the file at `path`. Missing file or\n * no matching markers → a single idempotent \"skip\". When the remaining content\n * is whitespace-only AND `deleteFileIfCreated` is true (the ledger recorded\n * that agent-connector created this file), the file itself is deleted (Ruler\n * revert semantics: delete only what we created).\n */\nexport function removeManagedBlocksFile(\n path: string,\n match: RemoveBlocksOptions,\n opts: { dryRun: boolean; deleteFileIfCreated?: boolean },\n): BlockFileChange[] {\n if (!existsSync(path)) {\n return [\n {\n action: \"skip\",\n path,\n detail: `${basename(path)} absent; nothing to remove`,\n createdFile: false,\n hash: \"\",\n },\n ];\n }\n let raw: string;\n try {\n raw = readFileSync(path, \"utf8\");\n } catch {\n return [\n {\n action: \"warn\",\n path,\n detail: `cannot read ${path}; managed blocks left in place`,\n createdFile: false,\n hash: \"\",\n },\n ];\n }\n\n const res = removeBlocksFromText(raw, match);\n if (!res.changed) {\n return [\n {\n action: \"skip\",\n path,\n detail: `no agent-connector blocks matching ${match.blockId ?? match.blockIdPrefix ?? \"?\"} in ${basename(path)}`,\n createdFile: false,\n hash: \"\",\n },\n ];\n }\n\n const changes: BlockFileChange[] = [];\n let backupPath: string | undefined;\n if (!opts.dryRun) {\n if (res.recovered) backupPath = backupFile(path) ?? undefined;\n if (res.fileNowEmpty && opts.deleteFileIfCreated) {\n rmSync(path, { force: true });\n } else {\n atomicWriteFile(path, res.text);\n }\n }\n for (const r of res.records) {\n changes.push({\n action: r.action,\n path,\n detail: r.detail,\n createdFile: false,\n hash: \"\",\n ...(backupPath && r.action === \"warn\" ? { backupPath } : {}),\n });\n }\n if (res.fileNowEmpty && opts.deleteFileIfCreated) {\n changes.push({\n action: \"remove\",\n path,\n detail: `${basename(path)} deleted (agent-connector created it; only whitespace remained)`,\n createdFile: false,\n hash: \"\",\n });\n }\n return changes;\n}\n\n// ─────────────────────────────────────────────────────────────────────────\n// Memory ownership ledger — connectorDir(id)/memory-state.json\n// ─────────────────────────────────────────────────────────────────────────\n\nexport interface MemoryLedgerTarget {\n platform: string;\n scope: string;\n path: string;\n blockId: string;\n /** True when agent-connector CREATED the file (grants deletion rights). */\n createdFile: boolean;\n /** Inner-region hash we last wrote (doctor drift detection). */\n hash: string;\n}\n\nexport interface MemoryLedger {\n version: 1;\n targets: MemoryLedgerTarget[];\n}\n\nexport function memoryLedgerPath(connectorId: string): string {\n return join(connectorDir(connectorId), \"memory-state.json\");\n}\n\nexport function loadMemoryLedger(connectorId: string): MemoryLedger {\n const p = memoryLedgerPath(connectorId);\n if (!existsSync(p)) return { version: 1, targets: [] };\n try {\n const parsed = JSON.parse(readFileSync(p, \"utf8\")) as MemoryLedger;\n if (parsed && Array.isArray(parsed.targets)) return { version: 1, targets: parsed.targets };\n } catch {\n /* corrupt → fresh ledger; the markers remain the source of truth */\n }\n return { version: 1, targets: [] };\n}\n\n/** Persist the ledger; an EMPTY ledger deletes the file (no orphan state). */\nexport function saveMemoryLedger(connectorId: string, ledger: MemoryLedger): void {\n const p = memoryLedgerPath(connectorId);\n assertNoSymlinkInPath(p);\n if (ledger.targets.length === 0) {\n rmSync(p, { force: true });\n return;\n }\n ensureDir(dirname(p));\n writeFileSync(p, `${JSON.stringify(ledger, null, 2)}\\n`, \"utf8\");\n}\n\n/** True when the connector has any recorded memory targets (uninstall guard). */\nexport function hasMemoryLedger(connectorId: string): boolean {\n return loadMemoryLedger(connectorId).targets.length > 0;\n}\n\n/**\n * Upsert one ledger row (keyed by platform+scope+path+blockId). The\n * `createdFile` fact is STICKY: once we created the file, deletion rights\n * survive later syncs that found it present.\n */\nexport function recordMemoryTarget(ledger: MemoryLedger, t: MemoryLedgerTarget): void {\n const i = ledger.targets.findIndex(\n (x) =>\n x.platform === t.platform &&\n x.scope === t.scope &&\n x.path === t.path &&\n x.blockId === t.blockId,\n );\n if (i >= 0) {\n ledger.targets[i] = { ...t, createdFile: ledger.targets[i]!.createdFile || t.createdFile };\n } else {\n ledger.targets.push(t);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
BaseAdapter,
|
|
10
10
|
renderSkillMd
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MGTDQLJJ.js";
|
|
12
12
|
import {
|
|
13
13
|
buildHomeBinHookCommand,
|
|
14
14
|
buildUsageEventCommand,
|
|
@@ -687,4 +687,4 @@ export {
|
|
|
687
687
|
adapter,
|
|
688
688
|
antigravity_default
|
|
689
689
|
};
|
|
690
|
-
//# sourceMappingURL=chunk-
|
|
690
|
+
//# sourceMappingURL=chunk-XC5SJ35F.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ADAPTER_REGISTRY
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SILKSP2Y.js";
|
|
5
5
|
|
|
6
6
|
// src/adapters/detect.ts
|
|
7
7
|
async function detectInstalledPlatforms(projectDir) {
|
|
@@ -85,4 +85,4 @@ export {
|
|
|
85
85
|
detectInstalledPlatforms,
|
|
86
86
|
detectRuntimeHost
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-ZMAJ2XFD.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readRegisteredMeta
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-KSPMSRVU.js";
|
|
5
|
+
import "./chunk-KJLFGQQM.js";
|
|
6
|
+
import "./chunk-SILKSP2Y.js";
|
|
7
7
|
import {
|
|
8
8
|
addLedgerOwner,
|
|
9
9
|
configPatchManualEdit,
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
renderCommandMd,
|
|
35
35
|
renderSkillMd,
|
|
36
36
|
renderSubagentMd
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-MGTDQLJJ.js";
|
|
38
38
|
import {
|
|
39
39
|
buildHomeBinStatuslineCommand,
|
|
40
40
|
buildWrappedStdio,
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
removeManagedBlocksFile,
|
|
51
51
|
saveMemoryLedger,
|
|
52
52
|
upsertManagedBlockFile
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-UMQ6NBQR.js";
|
|
54
54
|
import {
|
|
55
55
|
backupsDir,
|
|
56
56
|
ensureDir
|
|
@@ -1493,4 +1493,4 @@ export {
|
|
|
1493
1493
|
claudeSensitiveKeyViolation,
|
|
1494
1494
|
claude_code_default as default
|
|
1495
1495
|
};
|
|
1496
|
-
//# sourceMappingURL=claude-code-
|
|
1496
|
+
//# sourceMappingURL=claude-code-DUZNOAS2.js.map
|
package/dist/cli/sdk.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
main
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-OEADFFKO.js";
|
|
5
5
|
import {
|
|
6
6
|
loadConnectorFromPath
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-KSPMSRVU.js";
|
|
8
|
+
import "../chunk-KJLFGQQM.js";
|
|
9
|
+
import "../chunk-SILKSP2Y.js";
|
|
10
10
|
import "../chunk-NBYKLUF6.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-UMQ6NBQR.js";
|
|
12
12
|
import "../chunk-GZGLCCEE.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/sdk.ts
|
package/dist/cli.js
CHANGED
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
BaseAdapter,
|
|
7
7
|
renderCommandMd,
|
|
8
8
|
renderSkillMd
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MGTDQLJJ.js";
|
|
10
10
|
import {
|
|
11
11
|
buildWrappedStdio
|
|
12
12
|
} from "./chunk-4NHXLXSD.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-UMQ6NBQR.js";
|
|
14
14
|
import "./chunk-GZGLCCEE.js";
|
|
15
15
|
|
|
16
16
|
// src/adapters/cline/index.ts
|
|
@@ -405,4 +405,4 @@ export {
|
|
|
405
405
|
adapter,
|
|
406
406
|
cline_default as default
|
|
407
407
|
};
|
|
408
|
-
//# sourceMappingURL=cline-
|
|
408
|
+
//# sourceMappingURL=cline-25KW25IN.js.map
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
renderCommandMd,
|
|
14
14
|
renderSkillMd,
|
|
15
15
|
renderSubagentMd
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-MGTDQLJJ.js";
|
|
17
17
|
import {
|
|
18
18
|
buildWrappedStdio,
|
|
19
19
|
isHomeBinHookCommand
|
|
20
20
|
} from "./chunk-4NHXLXSD.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-UMQ6NBQR.js";
|
|
22
22
|
import "./chunk-GZGLCCEE.js";
|
|
23
23
|
|
|
24
24
|
// src/adapters/codebuddy/index.ts
|
|
@@ -640,4 +640,4 @@ export {
|
|
|
640
640
|
adapter,
|
|
641
641
|
codebuddy_default as default
|
|
642
642
|
};
|
|
643
|
-
//# sourceMappingURL=codebuddy-
|
|
643
|
+
//# sourceMappingURL=codebuddy-ZNYQACMF.js.map
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
BaseAdapter,
|
|
7
7
|
renderSkillMd
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MGTDQLJJ.js";
|
|
9
9
|
import {
|
|
10
10
|
buildWrappedStdio
|
|
11
11
|
} from "./chunk-4NHXLXSD.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-UMQ6NBQR.js";
|
|
13
13
|
import "./chunk-GZGLCCEE.js";
|
|
14
14
|
|
|
15
15
|
// src/adapters/codebuff/index.ts
|
|
@@ -417,4 +417,4 @@ export {
|
|
|
417
417
|
adapter,
|
|
418
418
|
codebuff_default as default
|
|
419
419
|
};
|
|
420
|
-
//# sourceMappingURL=codebuff-
|
|
420
|
+
//# sourceMappingURL=codebuff-VR6JUDIY.js.map
|
|
@@ -17,12 +17,12 @@ import {
|
|
|
17
17
|
renderCommandMd,
|
|
18
18
|
renderSkillMd,
|
|
19
19
|
upsertInObjectMap
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-MGTDQLJJ.js";
|
|
21
21
|
import {
|
|
22
22
|
buildHomeBinHookCommand,
|
|
23
23
|
buildWrappedStdio
|
|
24
24
|
} from "./chunk-4NHXLXSD.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-UMQ6NBQR.js";
|
|
26
26
|
import {
|
|
27
27
|
ensureDir
|
|
28
28
|
} from "./chunk-GZGLCCEE.js";
|
|
@@ -762,4 +762,4 @@ export {
|
|
|
762
762
|
adapter,
|
|
763
763
|
codex_default as default
|
|
764
764
|
};
|
|
765
|
-
//# sourceMappingURL=codex-
|
|
765
|
+
//# sourceMappingURL=codex-CPNKTXG3.js.map
|