@ken-jo/agent-connector 0.4.75 → 0.4.91
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 +3 -3
- package/dist/{action-TCKBTTZX.js → action-L44DXFHT.js} +14 -14
- package/dist/{amazon-q-CB4XFX7T.js → amazon-q-B52EY2SV.js} +5 -5
- package/dist/{amp-6Q5OYHNW.js → amp-UXABVUKC.js} +5 -5
- package/dist/{antigravity-WIK3XBN5.js → antigravity-RZHN53VB.js} +6 -6
- package/dist/antigravity-cli-JO6GUTV7.js +436 -0
- package/dist/antigravity-cli-JO6GUTV7.js.map +1 -0
- package/dist/{chunk-Q5LECKZL.js → chunk-25CPWJA7.js} +116 -36
- package/dist/chunk-25CPWJA7.js.map +1 -0
- package/dist/{chunk-D6ZJS4ND.js → chunk-4FWETID5.js} +2 -2
- package/dist/{chunk-Q42SEI7W.js → chunk-4HVQ7IUM.js} +3 -3
- package/dist/{chunk-IU42THN7.js → chunk-4NSU3KWX.js} +2 -2
- package/dist/{chunk-7CZKXXBD.js → chunk-56R2ER7K.js} +2 -2
- package/dist/{chunk-HKM3HUOK.js → chunk-7HUUINPB.js} +18 -18
- package/dist/{chunk-TZ5KGCE2.js → chunk-AY3RGRTT.js} +2 -2
- package/dist/{chunk-MHDQWZ4A.js → chunk-BLTVZACS.js} +23 -13
- package/dist/chunk-BLTVZACS.js.map +1 -0
- package/dist/{chunk-7ITLLYWB.js → chunk-G4CEELKO.js} +5 -5
- package/dist/{chunk-TO57WYBB.js → chunk-HORHRHNG.js} +9 -3
- package/dist/chunk-HORHRHNG.js.map +1 -0
- package/dist/{chunk-2HCJV6UO.js → chunk-IXOQDZWC.js} +9 -2
- package/dist/chunk-IXOQDZWC.js.map +1 -0
- package/dist/{chunk-2L6LTQ6L.js → chunk-KIRCPLM4.js} +21 -10
- package/dist/chunk-KIRCPLM4.js.map +1 -0
- package/dist/{chunk-24K6JOKV.js → chunk-LAIITCMW.js} +8 -8
- package/dist/{chunk-OEQJGBBW.js → chunk-LF76VPGQ.js} +9 -9
- package/dist/{chunk-7QRUZAUG.js → chunk-LN76OGNR.js} +2 -2
- package/dist/{chunk-DI6OWKH2.js → chunk-NBUEL74R.js} +3 -3
- package/dist/{chunk-IRUYJD23.js → chunk-NLE2J5P4.js} +1 -1
- package/dist/{chunk-5LAFKXFM.js → chunk-NWLRJNXM.js} +3 -3
- package/dist/{chunk-ECSRTK4M.js → chunk-QARPXSIV.js} +4 -4
- package/dist/{chunk-AXAHW2KU.js → chunk-QKLJU4JX.js} +2 -2
- package/dist/{chunk-MDZG5QHB.js → chunk-R6LML2YS.js} +2 -2
- package/dist/{chunk-FUXUEXDP.js → chunk-UBB7T54N.js} +3 -3
- package/dist/{chunk-NUGMVVV2.js → chunk-VVFDU4IX.js} +4 -4
- package/dist/{chunk-ALVXORZM.js → chunk-YYNXIUR2.js} +2 -2
- package/dist/{chunk-TW4DVR4V.js → chunk-ZMLVR4J7.js} +7 -2
- package/dist/chunk-ZMLVR4J7.js.map +1 -0
- package/dist/{claude-code-HFBAAVWS.js → claude-code-WS4NAGZT.js} +9 -9
- package/dist/cli/sdk.js +7 -7
- package/dist/cli.js +1 -1
- package/dist/{cline-26W4FEZ6.js → cline-NNMVCECA.js} +5 -5
- package/dist/codebuddy-RBEZGXBG.js +643 -0
- package/dist/codebuddy-RBEZGXBG.js.map +1 -0
- package/dist/{codebuff-J5KEEBIL.js → codebuff-RJIDSEU3.js} +5 -5
- package/dist/{codex-JKQ6TLRI.js → codex-ZZ434GYR.js} +8 -8
- package/dist/{continue-KQSJUSWX.js → continue-MNM7YVJY.js} +6 -6
- package/dist/{copilot-cli-YBNKLYUB.js → copilot-cli-SMTX5F65.js} +5 -5
- package/dist/{crush-JTWTZIPB.js → crush-NYDBHIJE.js} +5 -5
- package/dist/{cursor-2NIZSDZ4.js → cursor-AOELDNZU.js} +6 -6
- package/dist/{detect-CWEIQCRC.js → detect-3S46RUMK.js} +4 -4
- package/dist/devin-PRJY2TTD.js +510 -0
- package/dist/devin-PRJY2TTD.js.map +1 -0
- package/dist/{doctor-AC437ZAW.js → doctor-3CUBPQKU.js} +22 -22
- package/dist/{droid-HF2AIFB2.js → droid-PTCH2K7Y.js} +5 -5
- package/dist/{gemini-cli-2EOK26S2.js → gemini-cli-QGLN2UMS.js} +5 -5
- package/dist/{goose-55JOTXS5.js → goose-DQ6GSZ5O.js} +6 -6
- package/dist/grok-cli-5QD235UB.js +482 -0
- package/dist/grok-cli-5QD235UB.js.map +1 -0
- package/dist/{hermes-QVZOZU4B.js → hermes-E47IG63A.js} +6 -6
- package/dist/{hook-VYD3OCLM.js → hook-P6EKDINW.js} +14 -14
- package/dist/index.d.ts +2 -2
- package/dist/index.js +5 -5
- package/dist/{install-S6BYIJ62.js → install-7DMK53SB.js} +18 -18
- package/dist/{introspect-5o5ick0_.d.ts → introspect-DYOIX8Ov.d.ts} +1 -1
- package/dist/{jetbrains-copilot-DZ2ATXFN.js → jetbrains-copilot-T2EPKROP.js} +13 -7
- package/dist/jetbrains-copilot-T2EPKROP.js.map +1 -0
- package/dist/junie-SQ4SDLGK.js +227 -0
- package/dist/junie-SQ4SDLGK.js.map +1 -0
- package/dist/{kilo-GJNSBWVV.js → kilo-OU2ZLZKB.js} +8 -8
- package/dist/{kilo-cli-2CCB3DBI.js → kilo-cli-NMWGYF4F.js} +8 -8
- package/dist/{kimi-YRPCSB6N.js → kimi-Z7L2LEEI.js} +5 -5
- package/dist/{kiro-BUOQFASX.js → kiro-4IN5IH46.js} +81 -6
- package/dist/kiro-4IN5IH46.js.map +1 -0
- package/dist/{leaderboard-SUSUDKHR.js → leaderboard-LF5SP6X2.js} +7 -7
- package/dist/{mimo-code-V4FP5PUJ.js → mimo-code-G2CBZ4M6.js} +5 -5
- package/dist/mistral-vibe-TRQDHAWV.js +300 -0
- package/dist/mistral-vibe-TRQDHAWV.js.map +1 -0
- package/dist/{mux-CMJSM42O.js → mux-JNM3F2NW.js} +5 -5
- package/dist/{nemoclaw-VP56PGKC.js → nemoclaw-SHA4IUML.js} +6 -6
- package/dist/{omp-OOFGD3GG.js → omp-OOVUNXME.js} +5 -5
- package/dist/open-interpreter-4PKL56AA.js +264 -0
- package/dist/open-interpreter-4PKL56AA.js.map +1 -0
- package/dist/openclaw-BD56E5MV.js +17 -0
- package/dist/{opencode-MKLHSQRD.js → opencode-W2RK4M7G.js} +5 -5
- package/dist/openhands-5LNH3BKB.js +384 -0
- package/dist/openhands-5LNH3BKB.js.map +1 -0
- package/dist/{package-KOAAVKHH.js → package-2EAIYSJ4.js} +13 -13
- package/dist/{pi-NMVL7OFL.js → pi-BUADR5MJ.js} +143 -6
- package/dist/pi-BUADR5MJ.js.map +1 -0
- package/dist/{qwen-code-2XE2T6F4.js → qwen-code-TUJNHKNI.js} +9 -9
- package/dist/{roo-code-YJOIKCCS.js → roo-code-L5F7S6QH.js} +5 -5
- package/dist/runtime/index.d.ts +12 -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-BU23QUSJ.js → serve-K62FW3V7.js} +24 -17
- package/dist/serve-K62FW3V7.js.map +1 -0
- package/dist/{status-N5LCQQ3R.js → status-E5MCFZM6.js} +11 -11
- package/dist/{statusline-442XOF7R.js → statusline-LIPF2KVP.js} +13 -13
- package/dist/{telemetry-V4YQL2NU.js → telemetry-4OC56NTM.js} +10 -10
- package/dist/{trae-QSV2JZFT.js → trae-Z7CQ2A2Q.js} +5 -5
- package/dist/{types-D6RWGXm1.d.ts → types-C4qMgbJn.d.ts} +10 -9
- package/dist/{uninstall-WGEKTCDZ.js → uninstall-2YYKN5DX.js} +18 -18
- package/dist/{upgrade-IH7CKPTO.js → upgrade-55AFPJEF.js} +18 -18
- package/dist/{usage-DI7XRCKM.js → usage-3PB3WZSL.js} +3 -3
- package/dist/{usage-event-2FCU55AN.js → usage-event-KD5FW6W4.js} +13 -13
- package/dist/{vscode-copilot-R23RTVST.js → vscode-copilot-LU5NC4ZS.js} +5 -5
- package/dist/{warp-B72XSQ5G.js → warp-4PPG5LOM.js} +5 -5
- package/dist/{windsurf-642VBMQ2.js → windsurf-3T3RVXKM.js} +5 -5
- package/dist/{zed-6UJS7JKB.js → zed-ZF2OQ75O.js} +123 -7
- package/dist/zed-ZF2OQ75O.js.map +1 -0
- package/package.json +1 -1
- package/dist/antigravity-cli-L3RZMF6V.js +0 -87
- package/dist/antigravity-cli-L3RZMF6V.js.map +0 -1
- package/dist/chunk-2HCJV6UO.js.map +0 -1
- package/dist/chunk-2L6LTQ6L.js.map +0 -1
- package/dist/chunk-MHDQWZ4A.js.map +0 -1
- package/dist/chunk-Q5LECKZL.js.map +0 -1
- package/dist/chunk-TO57WYBB.js.map +0 -1
- package/dist/chunk-TW4DVR4V.js.map +0 -1
- package/dist/jetbrains-copilot-DZ2ATXFN.js.map +0 -1
- package/dist/kiro-BUOQFASX.js.map +0 -1
- package/dist/openclaw-V73XHPXP.js +0 -17
- package/dist/pi-NMVL7OFL.js.map +0 -1
- package/dist/serve-BU23QUSJ.js.map +0 -1
- package/dist/zed-6UJS7JKB.js.map +0 -1
- /package/dist/{action-TCKBTTZX.js.map → action-L44DXFHT.js.map} +0 -0
- /package/dist/{amazon-q-CB4XFX7T.js.map → amazon-q-B52EY2SV.js.map} +0 -0
- /package/dist/{amp-6Q5OYHNW.js.map → amp-UXABVUKC.js.map} +0 -0
- /package/dist/{antigravity-WIK3XBN5.js.map → antigravity-RZHN53VB.js.map} +0 -0
- /package/dist/{chunk-D6ZJS4ND.js.map → chunk-4FWETID5.js.map} +0 -0
- /package/dist/{chunk-Q42SEI7W.js.map → chunk-4HVQ7IUM.js.map} +0 -0
- /package/dist/{chunk-IU42THN7.js.map → chunk-4NSU3KWX.js.map} +0 -0
- /package/dist/{chunk-7CZKXXBD.js.map → chunk-56R2ER7K.js.map} +0 -0
- /package/dist/{chunk-HKM3HUOK.js.map → chunk-7HUUINPB.js.map} +0 -0
- /package/dist/{chunk-TZ5KGCE2.js.map → chunk-AY3RGRTT.js.map} +0 -0
- /package/dist/{chunk-7ITLLYWB.js.map → chunk-G4CEELKO.js.map} +0 -0
- /package/dist/{chunk-24K6JOKV.js.map → chunk-LAIITCMW.js.map} +0 -0
- /package/dist/{chunk-OEQJGBBW.js.map → chunk-LF76VPGQ.js.map} +0 -0
- /package/dist/{chunk-7QRUZAUG.js.map → chunk-LN76OGNR.js.map} +0 -0
- /package/dist/{chunk-DI6OWKH2.js.map → chunk-NBUEL74R.js.map} +0 -0
- /package/dist/{chunk-IRUYJD23.js.map → chunk-NLE2J5P4.js.map} +0 -0
- /package/dist/{chunk-5LAFKXFM.js.map → chunk-NWLRJNXM.js.map} +0 -0
- /package/dist/{chunk-ECSRTK4M.js.map → chunk-QARPXSIV.js.map} +0 -0
- /package/dist/{chunk-AXAHW2KU.js.map → chunk-QKLJU4JX.js.map} +0 -0
- /package/dist/{chunk-MDZG5QHB.js.map → chunk-R6LML2YS.js.map} +0 -0
- /package/dist/{chunk-FUXUEXDP.js.map → chunk-UBB7T54N.js.map} +0 -0
- /package/dist/{chunk-NUGMVVV2.js.map → chunk-VVFDU4IX.js.map} +0 -0
- /package/dist/{chunk-ALVXORZM.js.map → chunk-YYNXIUR2.js.map} +0 -0
- /package/dist/{claude-code-HFBAAVWS.js.map → claude-code-WS4NAGZT.js.map} +0 -0
- /package/dist/{cline-26W4FEZ6.js.map → cline-NNMVCECA.js.map} +0 -0
- /package/dist/{codebuff-J5KEEBIL.js.map → codebuff-RJIDSEU3.js.map} +0 -0
- /package/dist/{codex-JKQ6TLRI.js.map → codex-ZZ434GYR.js.map} +0 -0
- /package/dist/{continue-KQSJUSWX.js.map → continue-MNM7YVJY.js.map} +0 -0
- /package/dist/{copilot-cli-YBNKLYUB.js.map → copilot-cli-SMTX5F65.js.map} +0 -0
- /package/dist/{crush-JTWTZIPB.js.map → crush-NYDBHIJE.js.map} +0 -0
- /package/dist/{cursor-2NIZSDZ4.js.map → cursor-AOELDNZU.js.map} +0 -0
- /package/dist/{detect-CWEIQCRC.js.map → detect-3S46RUMK.js.map} +0 -0
- /package/dist/{doctor-AC437ZAW.js.map → doctor-3CUBPQKU.js.map} +0 -0
- /package/dist/{droid-HF2AIFB2.js.map → droid-PTCH2K7Y.js.map} +0 -0
- /package/dist/{gemini-cli-2EOK26S2.js.map → gemini-cli-QGLN2UMS.js.map} +0 -0
- /package/dist/{goose-55JOTXS5.js.map → goose-DQ6GSZ5O.js.map} +0 -0
- /package/dist/{hermes-QVZOZU4B.js.map → hermes-E47IG63A.js.map} +0 -0
- /package/dist/{hook-VYD3OCLM.js.map → hook-P6EKDINW.js.map} +0 -0
- /package/dist/{install-S6BYIJ62.js.map → install-7DMK53SB.js.map} +0 -0
- /package/dist/{kilo-GJNSBWVV.js.map → kilo-OU2ZLZKB.js.map} +0 -0
- /package/dist/{kilo-cli-2CCB3DBI.js.map → kilo-cli-NMWGYF4F.js.map} +0 -0
- /package/dist/{kimi-YRPCSB6N.js.map → kimi-Z7L2LEEI.js.map} +0 -0
- /package/dist/{leaderboard-SUSUDKHR.js.map → leaderboard-LF5SP6X2.js.map} +0 -0
- /package/dist/{mimo-code-V4FP5PUJ.js.map → mimo-code-G2CBZ4M6.js.map} +0 -0
- /package/dist/{mux-CMJSM42O.js.map → mux-JNM3F2NW.js.map} +0 -0
- /package/dist/{nemoclaw-VP56PGKC.js.map → nemoclaw-SHA4IUML.js.map} +0 -0
- /package/dist/{omp-OOFGD3GG.js.map → omp-OOVUNXME.js.map} +0 -0
- /package/dist/{openclaw-V73XHPXP.js.map → openclaw-BD56E5MV.js.map} +0 -0
- /package/dist/{opencode-MKLHSQRD.js.map → opencode-W2RK4M7G.js.map} +0 -0
- /package/dist/{package-KOAAVKHH.js.map → package-2EAIYSJ4.js.map} +0 -0
- /package/dist/{qwen-code-2XE2T6F4.js.map → qwen-code-TUJNHKNI.js.map} +0 -0
- /package/dist/{roo-code-YJOIKCCS.js.map → roo-code-L5F7S6QH.js.map} +0 -0
- /package/dist/{status-N5LCQQ3R.js.map → status-E5MCFZM6.js.map} +0 -0
- /package/dist/{statusline-442XOF7R.js.map → statusline-LIPF2KVP.js.map} +0 -0
- /package/dist/{telemetry-V4YQL2NU.js.map → telemetry-4OC56NTM.js.map} +0 -0
- /package/dist/{trae-QSV2JZFT.js.map → trae-Z7CQ2A2Q.js.map} +0 -0
- /package/dist/{uninstall-WGEKTCDZ.js.map → uninstall-2YYKN5DX.js.map} +0 -0
- /package/dist/{upgrade-IH7CKPTO.js.map → upgrade-55AFPJEF.js.map} +0 -0
- /package/dist/{usage-DI7XRCKM.js.map → usage-3PB3WZSL.js.map} +0 -0
- /package/dist/{usage-event-2FCU55AN.js.map → usage-event-KD5FW6W4.js.map} +0 -0
- /package/dist/{vscode-copilot-R23RTVST.js.map → vscode-copilot-LU5NC4ZS.js.map} +0 -0
- /package/dist/{warp-B72XSQ5G.js.map → warp-4PPG5LOM.js.map} +0 -0
- /package/dist/{windsurf-642VBMQ2.js.map → windsurf-3T3RVXKM.js.map} +0 -0
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
BaseAdapter,
|
|
10
10
|
renderOpenCodeSubagentMd,
|
|
11
11
|
renderSkillMd
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VVFDU4IX.js";
|
|
13
13
|
import {
|
|
14
14
|
buildWrappedStdio
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-HORHRHNG.js";
|
|
16
|
+
import "./chunk-YYNXIUR2.js";
|
|
17
|
+
import "./chunk-IXOQDZWC.js";
|
|
18
18
|
|
|
19
19
|
// src/adapters/mimo-code/index.ts
|
|
20
20
|
import { existsSync } from "fs";
|
|
@@ -716,4 +716,4 @@ export {
|
|
|
716
716
|
adapter,
|
|
717
717
|
mimo_code_default as default
|
|
718
718
|
};
|
|
719
|
-
//# sourceMappingURL=mimo-code-
|
|
719
|
+
//# sourceMappingURL=mimo-code-G2CBZ4M6.js.map
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveEnvRefsDeep
|
|
4
|
+
} from "./chunk-BEFVJ2OE.js";
|
|
5
|
+
import {
|
|
6
|
+
BaseAdapter
|
|
7
|
+
} from "./chunk-VVFDU4IX.js";
|
|
8
|
+
import {
|
|
9
|
+
buildWrappedStdio
|
|
10
|
+
} from "./chunk-HORHRHNG.js";
|
|
11
|
+
import "./chunk-YYNXIUR2.js";
|
|
12
|
+
import {
|
|
13
|
+
ensureDir
|
|
14
|
+
} from "./chunk-IXOQDZWC.js";
|
|
15
|
+
|
|
16
|
+
// src/adapters/mistral-vibe/index.ts
|
|
17
|
+
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
18
|
+
import { homedir } from "os";
|
|
19
|
+
import { dirname, join } from "path";
|
|
20
|
+
import TOML from "@iarna/toml";
|
|
21
|
+
var HOST = "mistral-vibe";
|
|
22
|
+
var MCP_ROOT_KEY = "mcp_servers";
|
|
23
|
+
var MistralVibeAdapter = class extends BaseAdapter {
|
|
24
|
+
id = HOST;
|
|
25
|
+
name = "Mistral Vibe";
|
|
26
|
+
paradigm = "mcp-only";
|
|
27
|
+
capabilities = {
|
|
28
|
+
// mcp-only: no hook layer wired (experimental host hooks are not
|
|
29
|
+
// byte-confirmed — see header HONEST CEILING). No memory/content surfaces
|
|
30
|
+
// wired either; only the MCP server is installed. Every hook capability is
|
|
31
|
+
// false.
|
|
32
|
+
preToolUse: false,
|
|
33
|
+
postToolUse: false,
|
|
34
|
+
preCompact: false,
|
|
35
|
+
sessionStart: false,
|
|
36
|
+
sessionEnd: false,
|
|
37
|
+
userPromptSubmit: false,
|
|
38
|
+
stop: false,
|
|
39
|
+
notification: false,
|
|
40
|
+
canModifyArgs: false,
|
|
41
|
+
canModifyOutput: false,
|
|
42
|
+
canInjectSessionContext: false,
|
|
43
|
+
// Mistral Vibe registers stdio + remote (http / streamable-http) MCP
|
|
44
|
+
// servers. The framework's `http` transport maps to Vibe's "http"; `sse`
|
|
45
|
+
// maps to Vibe's "streamable-http" (its closest remote form).
|
|
46
|
+
transports: ["stdio", "http", "sse"]
|
|
47
|
+
};
|
|
48
|
+
// ── Detection ────────────────────────────────────────────────────────────
|
|
49
|
+
detectInstalled(projectDir) {
|
|
50
|
+
const userDir = this.userConfigDir();
|
|
51
|
+
const userCfg = join(userDir, "config.toml");
|
|
52
|
+
const projDir = join(projectDir, ".vibe");
|
|
53
|
+
const projCfg = join(projDir, "config.toml");
|
|
54
|
+
const userInstalled = existsSync(userDir) || existsSync(userCfg);
|
|
55
|
+
const projInstalled = existsSync(projDir) || existsSync(projCfg);
|
|
56
|
+
const installed = userInstalled || projInstalled;
|
|
57
|
+
const scope = projInstalled && !userInstalled ? "project" : "user";
|
|
58
|
+
const configPath = scope === "project" ? projCfg : userCfg;
|
|
59
|
+
return {
|
|
60
|
+
id: this.id,
|
|
61
|
+
name: this.name,
|
|
62
|
+
installed,
|
|
63
|
+
paradigm: this.paradigm,
|
|
64
|
+
capabilities: this.capabilities,
|
|
65
|
+
configPath,
|
|
66
|
+
scope,
|
|
67
|
+
reason: installed ? `found Mistral Vibe config (${scope}) at ${configPath}` : `no .vibe config at ${userDir} or ${projDir}`,
|
|
68
|
+
confidence: installed ? "high" : "low"
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// ── Native paths ─────────────────────────────────────────────────────────
|
|
72
|
+
/** ~/.vibe (user) or <projectDir>/.vibe (project). */
|
|
73
|
+
getConfigDir(ctx) {
|
|
74
|
+
return ctx.scope === "project" ? join(ctx.projectDir, ".vibe") : this.userConfigDir();
|
|
75
|
+
}
|
|
76
|
+
/** MCP config: config.toml under the per-scope .vibe dir. */
|
|
77
|
+
getServerConfigPath(ctx) {
|
|
78
|
+
return join(this.getConfigDir(ctx), "config.toml");
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Mistral Vibe has no AC-wired hook file (mcp-only — see header). The hook
|
|
82
|
+
* "config path" is the same config.toml so the generic doctor/backup behave
|
|
83
|
+
* sensibly (mirrors warp/zed).
|
|
84
|
+
*/
|
|
85
|
+
getHookConfigPath(ctx) {
|
|
86
|
+
return this.getServerConfigPath(ctx);
|
|
87
|
+
}
|
|
88
|
+
/** ~/.vibe — homedir() covers %USERPROFILE% on Windows. */
|
|
89
|
+
userConfigDir() {
|
|
90
|
+
return join(homedir(), ".vibe");
|
|
91
|
+
}
|
|
92
|
+
// ── TOML config IO ─────────────────────────────────────────────────────────
|
|
93
|
+
readToml(path) {
|
|
94
|
+
if (!existsSync(path)) return {};
|
|
95
|
+
try {
|
|
96
|
+
return TOML.parse(readFileSync(path, "utf8"));
|
|
97
|
+
} catch {
|
|
98
|
+
return {};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
writeToml(path, data, dryRun) {
|
|
102
|
+
if (dryRun) return;
|
|
103
|
+
ensureDir(dirname(path));
|
|
104
|
+
writeFileSync(path, TOML.stringify(data), "utf8");
|
|
105
|
+
}
|
|
106
|
+
// ── MCP server install / uninstall (TOML — ARRAY-OF-TABLES, by `name`) ──────
|
|
107
|
+
installServer(ctx) {
|
|
108
|
+
const { connector, dryRun } = ctx;
|
|
109
|
+
const path = this.getServerConfigPath(ctx);
|
|
110
|
+
const server = this.effectiveServer(ctx);
|
|
111
|
+
if (!server) {
|
|
112
|
+
return [
|
|
113
|
+
{
|
|
114
|
+
platform: this.id,
|
|
115
|
+
action: "skip",
|
|
116
|
+
path,
|
|
117
|
+
detail: connector.server ? "server registration disabled for mistral-vibe" : "connector declares no MCP server"
|
|
118
|
+
}
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
const symlink = this.symlinkPathWarning(path);
|
|
122
|
+
if (symlink) return [symlink];
|
|
123
|
+
const entry = this.renderServerEntry(ctx, server);
|
|
124
|
+
const cfg = this.readToml(path);
|
|
125
|
+
const existingRoot = cfg[MCP_ROOT_KEY];
|
|
126
|
+
if (existingRoot !== void 0 && !Array.isArray(existingRoot)) {
|
|
127
|
+
return [
|
|
128
|
+
{
|
|
129
|
+
platform: this.id,
|
|
130
|
+
action: "skip",
|
|
131
|
+
path,
|
|
132
|
+
detail: `${MCP_ROOT_KEY} is not a TOML array \u2014 left untouched (manual fix needed)`
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
}
|
|
136
|
+
const list = Array.isArray(existingRoot) ? existingRoot : [];
|
|
137
|
+
const idx = list.findIndex((e) => this.entryName(e) === connector.id);
|
|
138
|
+
let action;
|
|
139
|
+
if (idx < 0) {
|
|
140
|
+
list.push(entry);
|
|
141
|
+
action = "create";
|
|
142
|
+
} else if (JSON.stringify(list[idx]) === JSON.stringify(entry)) {
|
|
143
|
+
action = "skip";
|
|
144
|
+
} else {
|
|
145
|
+
list[idx] = entry;
|
|
146
|
+
action = "update";
|
|
147
|
+
}
|
|
148
|
+
if (action !== "skip") {
|
|
149
|
+
cfg[MCP_ROOT_KEY] = list;
|
|
150
|
+
this.writeToml(path, cfg, dryRun);
|
|
151
|
+
}
|
|
152
|
+
return [{ platform: this.id, action, path, detail: `${MCP_ROOT_KEY}[name=${connector.id}]` }];
|
|
153
|
+
}
|
|
154
|
+
uninstallServer(ctx) {
|
|
155
|
+
const { connector, dryRun } = ctx;
|
|
156
|
+
const path = this.getServerConfigPath(ctx);
|
|
157
|
+
const symlink = this.symlinkPathWarning(path);
|
|
158
|
+
if (symlink) return [symlink];
|
|
159
|
+
const cfg = this.readToml(path);
|
|
160
|
+
const rawList = cfg[MCP_ROOT_KEY];
|
|
161
|
+
if (!Array.isArray(rawList)) {
|
|
162
|
+
return [
|
|
163
|
+
{
|
|
164
|
+
platform: this.id,
|
|
165
|
+
action: "skip",
|
|
166
|
+
path,
|
|
167
|
+
detail: `${MCP_ROOT_KEY}[name=${connector.id}] absent`
|
|
168
|
+
}
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
const list = rawList;
|
|
172
|
+
const kept = list.filter((e) => this.entryName(e) !== connector.id);
|
|
173
|
+
if (kept.length === list.length) {
|
|
174
|
+
return [
|
|
175
|
+
{
|
|
176
|
+
platform: this.id,
|
|
177
|
+
action: "skip",
|
|
178
|
+
path,
|
|
179
|
+
detail: `${MCP_ROOT_KEY}[name=${connector.id}] absent`
|
|
180
|
+
}
|
|
181
|
+
];
|
|
182
|
+
}
|
|
183
|
+
cfg[MCP_ROOT_KEY] = kept;
|
|
184
|
+
this.writeToml(path, cfg, dryRun);
|
|
185
|
+
return [
|
|
186
|
+
{ platform: this.id, action: "remove", path, detail: `${MCP_ROOT_KEY}[name=${connector.id}]` }
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Render a normalized ServerDef into Mistral Vibe's native mcp_servers entry.
|
|
191
|
+
* TOML has no native ${env:VAR} token — resolve every reference to a literal at
|
|
192
|
+
* install time (the safe path, matching codex/droid). Honors the telemetry
|
|
193
|
+
* serve-wrapper for stdio.
|
|
194
|
+
*/
|
|
195
|
+
renderServerEntry(ctx, server) {
|
|
196
|
+
const transport = server.transport;
|
|
197
|
+
if (transport === "stdio") {
|
|
198
|
+
let command = server.command ?? "";
|
|
199
|
+
let args = [...server.args ?? []];
|
|
200
|
+
({ command, args } = buildWrappedStdio(ctx, server, this.id, command, args));
|
|
201
|
+
command = resolveEnvRefsDeep(command);
|
|
202
|
+
args = resolveEnvRefsDeep(args);
|
|
203
|
+
const entry2 = {
|
|
204
|
+
name: ctx.connector.id,
|
|
205
|
+
transport: "stdio",
|
|
206
|
+
command
|
|
207
|
+
};
|
|
208
|
+
if (args.length > 0) entry2.args = args;
|
|
209
|
+
const env = this.renderEnv(server.env);
|
|
210
|
+
if (env) entry2.env = env;
|
|
211
|
+
return entry2;
|
|
212
|
+
}
|
|
213
|
+
const vibeTransport = transport === "http" ? "http" : "streamable-http";
|
|
214
|
+
const entry = {
|
|
215
|
+
name: ctx.connector.id,
|
|
216
|
+
transport: vibeTransport,
|
|
217
|
+
url: resolveEnvRefsDeep(server.url ?? "")
|
|
218
|
+
};
|
|
219
|
+
const headers = this.renderEnv(server.headers);
|
|
220
|
+
if (headers) entry.headers = headers;
|
|
221
|
+
return entry;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Render env/header values. Resolve `${env:VAR}` references to literals at
|
|
225
|
+
* install time (TOML cannot interpolate).
|
|
226
|
+
*/
|
|
227
|
+
renderEnv(env) {
|
|
228
|
+
if (!env || Object.keys(env).length === 0) return void 0;
|
|
229
|
+
const out = {};
|
|
230
|
+
for (const [k, v] of Object.entries(resolveEnvRefsDeep({ ...env }))) {
|
|
231
|
+
out[k] = String(v);
|
|
232
|
+
}
|
|
233
|
+
return out;
|
|
234
|
+
}
|
|
235
|
+
// ── Hooks (unavailable — Mistral Vibe is mcp-only) ───────────────────────
|
|
236
|
+
// HONEST CEILING: Vibe ships only an experimental hook surface with no
|
|
237
|
+
// byte-confirmed format/event-name contract, so AC wires no hooks here.
|
|
238
|
+
installHooks(_ctx) {
|
|
239
|
+
return [
|
|
240
|
+
{
|
|
241
|
+
platform: this.id,
|
|
242
|
+
action: "skip",
|
|
243
|
+
detail: "hooks unavailable (Mistral Vibe is mcp-only)"
|
|
244
|
+
}
|
|
245
|
+
];
|
|
246
|
+
}
|
|
247
|
+
uninstallHooks(_ctx) {
|
|
248
|
+
return [
|
|
249
|
+
{
|
|
250
|
+
platform: this.id,
|
|
251
|
+
action: "skip",
|
|
252
|
+
detail: "hooks unavailable (Mistral Vibe is mcp-only)"
|
|
253
|
+
}
|
|
254
|
+
];
|
|
255
|
+
}
|
|
256
|
+
// ── Diagnostics ──────────────────────────────────────────────────────────
|
|
257
|
+
getHealthChecks(ctx) {
|
|
258
|
+
const path = this.getServerConfigPath(ctx);
|
|
259
|
+
const id = ctx.connector.id;
|
|
260
|
+
return [
|
|
261
|
+
{
|
|
262
|
+
name: `${this.name}: config.toml present`,
|
|
263
|
+
check: () => existsSync(path) ? { status: "OK", detail: path } : { status: "FAIL", detail: `not found: ${path}` }
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
name: `${this.name}: ${MCP_ROOT_KEY}[name=${id}] registered`,
|
|
267
|
+
check: () => {
|
|
268
|
+
if (!ctx.connector.server) return { status: "OK", detail: "no MCP server declared" };
|
|
269
|
+
const cfg = this.readToml(path);
|
|
270
|
+
const list = cfg[MCP_ROOT_KEY];
|
|
271
|
+
const present = Array.isArray(list) && list.some((e) => this.entryName(e) === id);
|
|
272
|
+
return present ? { status: "OK", detail: `${MCP_ROOT_KEY}[name=${id}]` } : { status: "FAIL", detail: `${MCP_ROOT_KEY}[name=${id}] not found in ${path}` };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
];
|
|
276
|
+
}
|
|
277
|
+
// ── Internal helpers ──────────────────────────────────────────────────────
|
|
278
|
+
/** The `name` of an array entry, or undefined when it is not a named object. */
|
|
279
|
+
entryName(entry) {
|
|
280
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) return void 0;
|
|
281
|
+
const name = entry.name;
|
|
282
|
+
return typeof name === "string" ? name : void 0;
|
|
283
|
+
}
|
|
284
|
+
/** Resolve the per-platform server override into an effective ServerDef. */
|
|
285
|
+
effectiveServer(ctx) {
|
|
286
|
+
const override = ctx.connector.platforms[this.id]?.server;
|
|
287
|
+
if (override === false) return void 0;
|
|
288
|
+
const base = ctx.connector.server;
|
|
289
|
+
if (!base) return void 0;
|
|
290
|
+
return override && typeof override === "object" ? { ...base, ...override } : base;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
var adapter = new MistralVibeAdapter();
|
|
294
|
+
var mistral_vibe_default = adapter;
|
|
295
|
+
export {
|
|
296
|
+
MistralVibeAdapter,
|
|
297
|
+
adapter,
|
|
298
|
+
mistral_vibe_default as default
|
|
299
|
+
};
|
|
300
|
+
//# sourceMappingURL=mistral-vibe-TRQDHAWV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapters/mistral-vibe/index.ts"],"sourcesContent":["/**\n * adapters/mistral-vibe — Mistral Vibe (Mistral's coding-agent CLI) adapter.\n *\n * Mistral Vibe is an **mcp-only** host: it registers MCP servers but exposes no\n * user-installable lifecycle-hook surface AC can wire today. Its native config\n * is TOML, with a two-level lookup order (project precedes user):\n * 1. <projectDir>/.vibe/config.toml (PROJECT — takes precedence)\n * 2. ~/.vibe/config.toml (USER)\n *\n * MCP shape — byte-confirmed from the OFFICIAL repo README\n * (github.com/mistralai/mistral-vibe) + docs (docs.mistral.ai/vibe/code/cli/\n * configuration + /mcp-servers): the root key `mcp_servers` is a TOML\n * ARRAY-OF-TABLES (`[[mcp_servers]]`), NOT codex's table-keyed\n * `[mcp_servers.<name>]`. Each entry carries a REQUIRED short-alias `name` field\n * — AC writes the CONNECTOR ID there and keys ownership on it (the array-by-name\n * merge the `continue` adapter uses for YAML, applied over TOML):\n *\n * [[mcp_servers]]\n * name = \"fetch_server\"\n * transport = \"stdio\"\n * command = \"uvx\"\n * args = [\"mcp-server-fetch\"]\n * env = { \"DEBUG\" = \"1\", \"LOG_LEVEL\" = \"info\" }\n *\n * [[mcp_servers]]\n * name = \"my_http_server\"\n * transport = \"http\"\n * url = \"http://localhost:8000\"\n * headers = { \"Authorization\" = \"Bearer my_token\" }\n * api_key_env = \"MY_API_KEY_ENV_VAR\"\n *\n * Per-entry fields:\n * - name (required short alias — the connector id)\n * - transport (\"stdio\" | \"http\" | \"streamable-http\")\n * - stdio → command / args / env\n * - http/sse → url / headers / api_key_env / api_key_header / api_key_format\n * - optional startup_timeout_sec / tool_timeout_sec\n *\n * TOML has NO native interpolation token, so every `${env:VAR}` is resolved to a\n * literal at install time (the safe path matching codex/droid). The stdio entry\n * is routed through the telemetry serve-wrapper (`<homeBin> serve --connector\n * <id> -- <command> <args...>`); remote transports are registered but never\n * wrapped (they cannot be intercepted).\n *\n * HOOKS: HONEST CEILING — Mistral Vibe ships only an experimental, unstable hook\n * surface (no byte-confirmed format/event-name contract), so AC wires NO hooks\n * here. The capability flags stay unset and the host is reported mcp-only (the\n * generic installHooks reports \"hooks unavailable\"). When a first-party hook\n * contract is byte-confirmed this becomes a normal capability addition.\n */\n\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join } from \"node:path\";\n\nimport TOML from \"@iarna/toml\";\n\nimport type {\n ChangeRecord,\n DetectedPlatform,\n HealthCheck,\n HookParadigm,\n PlatformCapabilities,\n PlatformId,\n ServerDef,\n Transport,\n} from \"../../core/types.js\";\nimport { ensureDir } from \"../../core/paths.js\";\nimport { resolveEnvRefsDeep } from \"../../core/interpolate.js\";\nimport { buildWrappedStdio } from \"../../core/spawn.js\";\nimport { BaseAdapter } from \"../base.js\";\nimport type { Adapter, InstallContext } from \"../spi.js\";\n\nconst HOST: PlatformId = \"mistral-vibe\";\n/** Root key under which Mistral Vibe stores MCP servers — a TOML ARRAY-OF-TABLES. */\nconst MCP_ROOT_KEY = \"mcp_servers\";\n\n/**\n * Native Mistral Vibe MCP server entry shapes. `name` is the required short\n * alias (we key ownership on it). A stdio entry carries an explicit\n * `transport: \"stdio\"` + command/args/env; a remote entry carries the chosen\n * transport + url/headers. NO api_key_* / *_timeout_sec unless declared.\n */\ninterface VibeStdioServer {\n name: string;\n transport: \"stdio\";\n command: string;\n args?: string[];\n env?: Record<string, string>;\n}\ninterface VibeRemoteServer {\n name: string;\n transport: \"http\" | \"streamable-http\";\n url: string;\n headers?: Record<string, string>;\n}\ntype VibeServer = VibeStdioServer | VibeRemoteServer;\n\nexport class MistralVibeAdapter extends BaseAdapter implements Adapter {\n readonly id: PlatformId = HOST;\n readonly name = \"Mistral Vibe\";\n readonly paradigm: HookParadigm = \"mcp-only\";\n\n readonly capabilities: PlatformCapabilities = {\n // mcp-only: no hook layer wired (experimental host hooks are not\n // byte-confirmed — see header HONEST CEILING). No memory/content surfaces\n // wired either; only the MCP server is installed. Every hook capability is\n // false.\n preToolUse: false,\n postToolUse: false,\n preCompact: false,\n sessionStart: false,\n sessionEnd: false,\n userPromptSubmit: false,\n stop: false,\n notification: false,\n canModifyArgs: false,\n canModifyOutput: false,\n canInjectSessionContext: false,\n // Mistral Vibe registers stdio + remote (http / streamable-http) MCP\n // servers. The framework's `http` transport maps to Vibe's \"http\"; `sse`\n // maps to Vibe's \"streamable-http\" (its closest remote form).\n transports: [\"stdio\", \"http\", \"sse\"],\n };\n\n // ── Detection ────────────────────────────────────────────────────────────\n\n detectInstalled(projectDir: string): DetectedPlatform {\n const userDir = this.userConfigDir();\n const userCfg = join(userDir, \"config.toml\");\n const projDir = join(projectDir, \".vibe\");\n const projCfg = join(projDir, \"config.toml\");\n\n const userInstalled = existsSync(userDir) || existsSync(userCfg);\n const projInstalled = existsSync(projDir) || existsSync(projCfg);\n const installed = userInstalled || projInstalled;\n // Project config.toml takes precedence in Vibe's lookup order, so a\n // project-only install reports project scope.\n const scope = projInstalled && !userInstalled ? \"project\" : \"user\";\n const configPath = scope === \"project\" ? projCfg : userCfg;\n\n return {\n id: this.id,\n name: this.name,\n installed,\n paradigm: this.paradigm,\n capabilities: this.capabilities,\n configPath,\n scope,\n reason: installed\n ? `found Mistral Vibe config (${scope}) at ${configPath}`\n : `no .vibe config at ${userDir} or ${projDir}`,\n confidence: installed ? \"high\" : \"low\",\n };\n }\n\n // ── Native paths ─────────────────────────────────────────────────────────\n\n /** ~/.vibe (user) or <projectDir>/.vibe (project). */\n override getConfigDir(ctx: InstallContext): string {\n return ctx.scope === \"project\"\n ? join(ctx.projectDir, \".vibe\")\n : this.userConfigDir();\n }\n\n /** MCP config: config.toml under the per-scope .vibe dir. */\n override getServerConfigPath(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"config.toml\");\n }\n\n /**\n * Mistral Vibe has no AC-wired hook file (mcp-only — see header). The hook\n * \"config path\" is the same config.toml so the generic doctor/backup behave\n * sensibly (mirrors warp/zed).\n */\n override getHookConfigPath(ctx: InstallContext): string {\n return this.getServerConfigPath(ctx);\n }\n\n /** ~/.vibe — homedir() covers %USERPROFILE% on Windows. */\n private userConfigDir(): string {\n return join(homedir(), \".vibe\");\n }\n\n // ── TOML config IO ─────────────────────────────────────────────────────────\n\n private readToml(path: string): Record<string, unknown> {\n if (!existsSync(path)) return {};\n try {\n return TOML.parse(readFileSync(path, \"utf8\")) as Record<string, unknown>;\n } catch {\n return {};\n }\n }\n\n private writeToml(path: string, data: Record<string, unknown>, dryRun: boolean): void {\n if (dryRun) return;\n ensureDir(dirname(path));\n // @iarna/toml's stringify type wants its JsonMap; our object is structurally compatible.\n writeFileSync(path, TOML.stringify(data as never), \"utf8\");\n }\n\n // ── MCP server install / uninstall (TOML — ARRAY-OF-TABLES, by `name`) ──────\n\n override installServer(ctx: InstallContext): ChangeRecord[] {\n const { connector, dryRun } = ctx;\n const path = this.getServerConfigPath(ctx);\n const server = this.effectiveServer(ctx);\n\n if (!server) {\n return [\n {\n platform: this.id,\n action: \"skip\",\n path,\n detail: connector.server\n ? \"server registration disabled for mistral-vibe\"\n : \"connector declares no MCP server\",\n },\n ];\n }\n\n const symlink = this.symlinkPathWarning(path);\n if (symlink) return [symlink];\n\n const entry = this.renderServerEntry(ctx, server);\n\n // Merge into existing TOML, preserving every other config key + sibling\n // mcp_servers entry. mcp_servers is a TOML ARRAY-OF-TABLES; we key on `name`.\n const cfg = this.readToml(path);\n // NEVER clobber a malformed `mcp_servers`: if it exists and is not an array,\n // skip-and-warn (symmetric with uninstallServer) rather than silently\n // replacing the user's hand-written value.\n const existingRoot = cfg[MCP_ROOT_KEY];\n if (existingRoot !== undefined && !Array.isArray(existingRoot)) {\n return [\n {\n platform: this.id,\n action: \"skip\",\n path,\n detail: `${MCP_ROOT_KEY} is not a TOML array — left untouched (manual fix needed)`,\n },\n ];\n }\n\n const list = Array.isArray(existingRoot) ? (existingRoot as VibeServer[]) : [];\n const idx = list.findIndex((e) => this.entryName(e) === connector.id);\n\n let action: ChangeRecord[\"action\"];\n if (idx < 0) {\n list.push(entry);\n action = \"create\";\n } else if (JSON.stringify(list[idx]) === JSON.stringify(entry)) {\n action = \"skip\";\n } else {\n list[idx] = entry;\n action = \"update\";\n }\n\n if (action !== \"skip\") {\n cfg[MCP_ROOT_KEY] = list;\n this.writeToml(path, cfg, dryRun);\n }\n return [{ platform: this.id, action, path, detail: `${MCP_ROOT_KEY}[name=${connector.id}]` }];\n }\n\n override uninstallServer(ctx: InstallContext): ChangeRecord[] {\n const { connector, dryRun } = ctx;\n const path = this.getServerConfigPath(ctx);\n const symlink = this.symlinkPathWarning(path);\n if (symlink) return [symlink];\n\n const cfg = this.readToml(path);\n const rawList = cfg[MCP_ROOT_KEY];\n if (!Array.isArray(rawList)) {\n return [\n {\n platform: this.id,\n action: \"skip\",\n path,\n detail: `${MCP_ROOT_KEY}[name=${connector.id}] absent`,\n },\n ];\n }\n\n const list = rawList as VibeServer[];\n const kept = list.filter((e) => this.entryName(e) !== connector.id);\n if (kept.length === list.length) {\n return [\n {\n platform: this.id,\n action: \"skip\",\n path,\n detail: `${MCP_ROOT_KEY}[name=${connector.id}] absent`,\n },\n ];\n }\n\n cfg[MCP_ROOT_KEY] = kept;\n this.writeToml(path, cfg, dryRun);\n return [\n { platform: this.id, action: \"remove\", path, detail: `${MCP_ROOT_KEY}[name=${connector.id}]` },\n ];\n }\n\n /**\n * Render a normalized ServerDef into Mistral Vibe's native mcp_servers entry.\n * TOML has no native ${env:VAR} token — resolve every reference to a literal at\n * install time (the safe path, matching codex/droid). Honors the telemetry\n * serve-wrapper for stdio.\n */\n private renderServerEntry(ctx: InstallContext, server: ServerDef): VibeServer {\n const transport: Transport = server.transport;\n\n if (transport === \"stdio\") {\n let command = server.command ?? \"\";\n let args = [...(server.args ?? [])];\n\n ({ command, args } = buildWrappedStdio(ctx, server, this.id, command, args));\n\n command = resolveEnvRefsDeep(command);\n args = resolveEnvRefsDeep(args);\n\n const entry: VibeStdioServer = {\n name: ctx.connector.id,\n transport: \"stdio\",\n command,\n };\n if (args.length > 0) entry.args = args;\n const env = this.renderEnv(server.env);\n if (env) entry.env = env;\n return entry;\n }\n\n // Remote (sse / http / ws) — Vibe registers an explicit transport + url. The\n // framework's `http` transport maps to Vibe's \"http\"; `sse` maps to\n // \"streamable-http\" (ws has no Vibe analog → also \"streamable-http\", the\n // closest documented remote form).\n const vibeTransport: VibeRemoteServer[\"transport\"] =\n transport === \"http\" ? \"http\" : \"streamable-http\";\n const entry: VibeRemoteServer = {\n name: ctx.connector.id,\n transport: vibeTransport,\n url: resolveEnvRefsDeep(server.url ?? \"\"),\n };\n const headers = this.renderEnv(server.headers);\n if (headers) entry.headers = headers;\n return entry;\n }\n\n /**\n * Render env/header values. Resolve `${env:VAR}` references to literals at\n * install time (TOML cannot interpolate).\n */\n private renderEnv(\n env: Record<string, string> | undefined,\n ): Record<string, string> | undefined {\n if (!env || Object.keys(env).length === 0) return undefined;\n const out: Record<string, string> = {};\n for (const [k, v] of Object.entries(resolveEnvRefsDeep({ ...env }))) {\n out[k] = String(v);\n }\n return out;\n }\n\n // ── Hooks (unavailable — Mistral Vibe is mcp-only) ───────────────────────\n // HONEST CEILING: Vibe ships only an experimental hook surface with no\n // byte-confirmed format/event-name contract, so AC wires no hooks here.\n\n installHooks(_ctx: InstallContext): ChangeRecord[] {\n return [\n {\n platform: this.id,\n action: \"skip\",\n detail: \"hooks unavailable (Mistral Vibe is mcp-only)\",\n },\n ];\n }\n\n uninstallHooks(_ctx: InstallContext): ChangeRecord[] {\n return [\n {\n platform: this.id,\n action: \"skip\",\n detail: \"hooks unavailable (Mistral Vibe is mcp-only)\",\n },\n ];\n }\n\n // ── Diagnostics ──────────────────────────────────────────────────────────\n\n override getHealthChecks(ctx: InstallContext): readonly HealthCheck[] {\n const path = this.getServerConfigPath(ctx);\n const id = ctx.connector.id;\n return [\n {\n name: `${this.name}: config.toml present`,\n check: () =>\n existsSync(path)\n ? { status: \"OK\", detail: path }\n : { status: \"FAIL\", detail: `not found: ${path}` },\n },\n {\n name: `${this.name}: ${MCP_ROOT_KEY}[name=${id}] registered`,\n check: () => {\n if (!ctx.connector.server) return { status: \"OK\", detail: \"no MCP server declared\" };\n const cfg = this.readToml(path);\n const list = cfg[MCP_ROOT_KEY];\n const present =\n Array.isArray(list) &&\n (list as VibeServer[]).some((e) => this.entryName(e) === id);\n return present\n ? { status: \"OK\", detail: `${MCP_ROOT_KEY}[name=${id}]` }\n : { status: \"FAIL\", detail: `${MCP_ROOT_KEY}[name=${id}] not found in ${path}` };\n },\n },\n ];\n }\n\n // ── Internal helpers ──────────────────────────────────────────────────────\n\n /** The `name` of an array entry, or undefined when it is not a named object. */\n private entryName(entry: unknown): string | undefined {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) return undefined;\n const name = (entry as { name?: unknown }).name;\n return typeof name === \"string\" ? name : undefined;\n }\n\n /** Resolve the per-platform server override into an effective ServerDef. */\n private effectiveServer(ctx: InstallContext): ServerDef | undefined {\n const override = ctx.connector.platforms[this.id]?.server;\n if (override === false) return undefined;\n const base = ctx.connector.server;\n if (!base) return undefined;\n return override && typeof override === \"object\" ? { ...base, ...override } : base;\n }\n}\n\nexport const adapter = new MistralVibeAdapter();\nexport default adapter;\n"],"mappings":"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","names":["entry"]}
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
BaseAdapter,
|
|
8
8
|
renderSkillMd
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VVFDU4IX.js";
|
|
10
10
|
import {
|
|
11
11
|
buildWrappedStdio
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-HORHRHNG.js";
|
|
13
|
+
import "./chunk-YYNXIUR2.js";
|
|
14
|
+
import "./chunk-IXOQDZWC.js";
|
|
15
15
|
|
|
16
16
|
// src/adapters/mux/index.ts
|
|
17
17
|
import { existsSync, statSync } from "fs";
|
|
@@ -319,4 +319,4 @@ export {
|
|
|
319
319
|
adapter,
|
|
320
320
|
mux_default as default
|
|
321
321
|
};
|
|
322
|
-
//# sourceMappingURL=mux-
|
|
322
|
+
//# sourceMappingURL=mux-JNM3F2NW.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
OpenClawAdapter
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UBB7T54N.js";
|
|
5
5
|
import "./chunk-BEFVJ2OE.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-VVFDU4IX.js";
|
|
7
|
+
import "./chunk-HORHRHNG.js";
|
|
8
|
+
import "./chunk-YYNXIUR2.js";
|
|
9
|
+
import "./chunk-IXOQDZWC.js";
|
|
10
10
|
|
|
11
11
|
// src/adapters/nemoclaw/index.ts
|
|
12
12
|
import { existsSync } from "fs";
|
|
@@ -54,4 +54,4 @@ export {
|
|
|
54
54
|
adapter,
|
|
55
55
|
nemoclaw_default as default
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=nemoclaw-
|
|
57
|
+
//# sourceMappingURL=nemoclaw-SHA4IUML.js.map
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
} from "./chunk-BEFVJ2OE.js";
|
|
8
8
|
import {
|
|
9
9
|
BaseAdapter
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VVFDU4IX.js";
|
|
11
11
|
import {
|
|
12
12
|
buildWrappedStdio
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-HORHRHNG.js";
|
|
14
|
+
import "./chunk-YYNXIUR2.js";
|
|
15
|
+
import "./chunk-IXOQDZWC.js";
|
|
16
16
|
|
|
17
17
|
// src/adapters/omp/index.ts
|
|
18
18
|
import { existsSync } from "fs";
|
|
@@ -652,4 +652,4 @@ export {
|
|
|
652
652
|
adapter,
|
|
653
653
|
omp_default as default
|
|
654
654
|
};
|
|
655
|
-
//# sourceMappingURL=omp-
|
|
655
|
+
//# sourceMappingURL=omp-OOVUNXME.js.map
|