openmausbot 0.1.91 → 0.1.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/dist/assets/DesktopViewer-CKNR3SEW.js +5 -0
- package/dist/assets/{abnfDiagram-O67JEVCF-yP-w8pRq.js → abnfDiagram-O67JEVCF-Ckrm1I1X.js} +1 -1
- package/dist/assets/{arc-DsivfZEh.js → arc-BBdBuCgB.js} +1 -1
- package/dist/assets/{architectureDiagram-NJMV4G6O-CILw7lzT.js → architectureDiagram-NJMV4G6O-CDdA3Hjs.js} +1 -1
- package/dist/assets/{blockDiagram-BEXU5L5S-DEQUV3HF.js → blockDiagram-BEXU5L5S-AUrsx1YR.js} +1 -1
- package/dist/assets/{c4Diagram-YGBWAQC7-lSXCZoKA.js → c4Diagram-YGBWAQC7-BEqQ0Unh.js} +1 -1
- package/dist/assets/channel-BU94VpxE.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-QCD5bgWP.js → chunk-2Q5K7J3B-CEEuvd4C.js} +1 -1
- package/dist/assets/{chunk-3FUC2YCW-C5-iZJuL.js → chunk-3FUC2YCW-DyANCiHl.js} +2 -2
- package/dist/assets/{chunk-5VM5RSS4-cxsawMpY.js → chunk-5VM5RSS4-Dx_Slpw9.js} +1 -1
- package/dist/assets/{chunk-GTNCS2PH-DV8tV8H7.js → chunk-GTNCS2PH-Dl7h7iiD.js} +1 -1
- package/dist/assets/{chunk-GWA4HPMP-CJFZyfbW.js → chunk-GWA4HPMP-BLx07SPb.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-BigbMXco.js → chunk-JWPE2WC7-BMxDj3n7.js} +1 -1
- package/dist/assets/{chunk-NETBCI7D-oVxTfpDy.js → chunk-NETBCI7D-CN66PT4H.js} +1 -1
- package/dist/assets/{chunk-WEXAMYUT-CH4BiroW.js → chunk-WEXAMYUT-6HwhsDKw.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-KEDa6gax.js → chunk-XXDRQBXY-gWnLt7SN.js} +1 -1
- package/dist/assets/{classDiagram-v2-NBCMYWYE-BiPjfqVv.js → classDiagram-v2-NBCMYWYE-CMS5l2ea.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-Caxew3OY.js → cose-bilkent-JH36ORCC-CV7sQwIG.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-B_Pui369.js → cynefin-OW5HDTMX-CSyl-7vl.js} +1 -1
- package/dist/assets/{cynefinDiagram-VND7K2PF-X64ydIhP.js → cynefinDiagram-VND7K2PF-BCLKL6az.js} +1 -1
- package/dist/assets/{dagre-6A5THRUB-TqYCI1E1.js → dagre-6A5THRUB-DiaZs6S1.js} +1 -1
- package/dist/assets/{diagram-22UHCM2B-TeOt3rAQ.js → diagram-22UHCM2B-BeTtmt3I.js} +1 -1
- package/dist/assets/{diagram-3UASUU5V-D70BLhDA.js → diagram-3UASUU5V-CsdBG-QQ.js} +1 -1
- package/dist/assets/{diagram-ATOU4E4O-BbQDLwUC.js → diagram-ATOU4E4O-BczvdbR1.js} +1 -1
- package/dist/assets/{diagram-CDSNMT55-ChNJZ1u-.js → diagram-CDSNMT55-DHTTTMhi.js} +1 -1
- package/dist/assets/{diagram-MLGK6HIB-DMBl2APa.js → diagram-MLGK6HIB-RTjHyd8z.js} +1 -1
- package/dist/assets/{diagram-MPIPVDR6-CEqDchOp.js → diagram-MPIPVDR6-BDenHEH_.js} +1 -1
- package/dist/assets/{ebnfDiagram-ZINNZB2B-BVDKRp_-.js → ebnfDiagram-ZINNZB2B-BSiRSbtL.js} +1 -1
- package/dist/assets/{elk-276RUBZZ-CRkofO9B.js → elk-276RUBZZ-BCAElss-.js} +1 -1
- package/dist/assets/{erDiagram-OPXOYQCR-DruOMh5e.js → erDiagram-OPXOYQCR-C4_1ZPJe.js} +1 -1
- package/dist/assets/{flowDiagram-KWPJA3E3-8GMQeB7t.js → flowDiagram-KWPJA3E3-Bcb4Z75S.js} +1 -1
- package/dist/assets/{ganttDiagram-FUAMR5RP-ORE9jcsM.js → ganttDiagram-FUAMR5RP-BiPOzxzb.js} +1 -1
- package/dist/assets/{gitGraphDiagram-X574FWY7-BmsedsWh.js → gitGraphDiagram-X574FWY7-B1wtF3ZS.js} +1 -1
- package/dist/assets/index-Biji-bfL.css +1 -0
- package/dist/assets/{index-DKNEM8Q6.js → index-BkYwilkG.js} +1 -1
- package/dist/assets/index-DZlhoES0.js +597 -0
- package/dist/assets/{infoDiagram-VRGFBTTK-E_p7AooJ.js → infoDiagram-VRGFBTTK-A19No71U.js} +1 -1
- package/dist/assets/{ishikawaDiagram-OU5B5YK6-Y-B2mKda.js → ishikawaDiagram-OU5B5YK6-BQsqJ_cV.js} +1 -1
- package/dist/assets/{journeyDiagram-ZHPQQLJL-eA8RELcK.js → journeyDiagram-ZHPQQLJL-DAO0pVan.js} +1 -1
- package/dist/assets/{kanban-definition-PNTS6WVX-DqIL2e8e.js → kanban-definition-PNTS6WVX-NepmKEe2.js} +1 -1
- package/dist/assets/{linear-yC_29R6e.js → linear-bq1PTDTW.js} +1 -1
- package/dist/assets/{mermaid.core-VhEMkSND.js → mermaid.core-s4LTbQle.js} +5 -5
- package/dist/assets/{mindmap-definition-NLK3R4M7-oJ7kyQZy.js → mindmap-definition-NLK3R4M7-LtdbgHFH.js} +1 -1
- package/dist/assets/{pegDiagram-GJSIUBJH-BmfYcY0O.js → pegDiagram-GJSIUBJH-tdbaCxiK.js} +1 -1
- package/dist/assets/{pieDiagram-5QR66LMP-DKvgP7w9.js → pieDiagram-5QR66LMP-DvkbpW8l.js} +1 -1
- package/dist/assets/{quadrantDiagram-O4NWA36T-BEKL3W0L.js → quadrantDiagram-O4NWA36T-Do4KaH-E.js} +1 -1
- package/dist/assets/{railroadDiagram-XR7U4H2S-BEsiqR5s.js → railroadDiagram-XR7U4H2S-BQWULOAs.js} +1 -1
- package/dist/assets/{requirementDiagram-PLB6GJNP-DWBcWvAP.js → requirementDiagram-PLB6GJNP-w9kei1FU.js} +1 -1
- package/dist/assets/{sankeyDiagram-IPEJSGJF-rpZ2_O4s.js → sankeyDiagram-IPEJSGJF-D2gRy0e8.js} +1 -1
- package/dist/assets/{sequenceDiagram-PO4LG4MO-B99HQdJR.js → sequenceDiagram-PO4LG4MO-a2sO5_Eo.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-BjN0qT5T.js → sizeCapture-INFHLROL-CiPJmFEB.js} +1 -1
- package/dist/assets/{stateDiagram-v2-GCMORJYK-BbsVgGsC.js → stateDiagram-v2-GCMORJYK-DAkUUlL7.js} +1 -1
- package/dist/assets/{swimlanes-2SLR337P-DG3gKkeR.js → swimlanes-2SLR337P-DANf2R8Y.js} +1 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-CdHxG8aM.js +8 -0
- package/dist/assets/{timeline-definition-EJHVYXUP-BTHOdtF_.js → timeline-definition-EJHVYXUP-BKpQmzrT.js} +1 -1
- package/dist/assets/{usecaseDiagram-POWQR4AR-acLSLFwc.js → usecaseDiagram-POWQR4AR-BtI7qLN-.js} +1 -1
- package/dist/assets/{vennDiagram-UO4OBE2U-C5JzNX9G.js → vennDiagram-UO4OBE2U-gXJXrAG_.js} +1 -1
- package/dist/assets/{wardleyDiagram-VNRHLVJA-DL1-PrR_.js → wardleyDiagram-VNRHLVJA-GU8Po5-n.js} +1 -1
- package/dist/assets/{xychartDiagram-PMCCYNJV-Bvr1477p.js → xychartDiagram-PMCCYNJV-BF4J30g6.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/novnc-NOTICE.txt +118 -0
- package/dist-server/cloud-home-start.js +112 -14
- package/dist-server/companion/src/routes.js +24 -1
- package/dist-server/container-mcp.js +201 -16
- package/dist-server/drivers/agents-proxy.js +7 -4
- package/dist-server/enterprise/server/index.js +5 -1
- package/dist-server/index.js +10698 -4737
- package/dist-server/local-computer-proxy.js +133 -8
- package/dist-server/mcp-gate.js +16 -6
- package/dist-server/model-catalog/models-dev.snapshot.json +7299 -0
- package/dist-server/openmausbot.js +4656 -1258
- package/dist-server/pair-cli.js +4656 -1258
- package/dist-server/server/boat.js +5 -5
- package/dist-server/server/browser-engine.js +10 -1
- package/dist-server/server/browser-live.js +46 -2
- package/dist-server/server/browser-runtime.js +74 -8
- package/dist-server/server/browser-tool-shape.js +6 -4
- package/dist-server/server/chief-of-staff.js +1 -1
- package/dist-server/server/cloud-home-start.js +118 -26
- package/dist-server/server/cloud-home.js +39 -3
- package/dist-server/server/cloud-lending.js +74 -10
- package/dist-server/server/cloud-owner.js +196 -0
- package/dist-server/server/cloud-secrets-boot.js +6 -0
- package/dist-server/server/cloud-secrets.js +65 -0
- package/dist-server/server/computer-control.js +6 -0
- package/dist-server/server/config.js +187 -14
- package/dist-server/server/container-computer.js +46 -34
- package/dist-server/server/desktop-viewer-targets.js +26 -0
- package/dist-server/server/digest.js +12 -2
- package/dist-server/server/drivers/acp/core.js +339 -33
- package/dist-server/server/drivers/acp/cursor.js +13 -1
- package/dist-server/server/drivers/acp/opencode-go.js +614 -85
- package/dist-server/server/drivers/acp/quiet-status.js +257 -0
- package/dist-server/server/drivers/acp/qwen.js +18 -0
- package/dist-server/server/drivers/agents-catalog.js +6 -6
- package/dist-server/server/drivers/antigravity-acp.js +69 -11
- package/dist-server/server/drivers/antigravity-temp.js +360 -0
- package/dist-server/server/drivers/antigravity.js +21 -0
- package/dist-server/server/drivers/builtIn.js +2 -0
- package/dist-server/server/drivers/cerebras.js +108 -0
- package/dist-server/server/drivers/chat-mcp-tools.js +20 -3
- package/dist-server/server/drivers/chatgpt-plan-auth.js +481 -0
- package/dist-server/server/drivers/claude.js +329 -37
- package/dist-server/server/drivers/codex.js +228 -18
- package/dist-server/server/drivers/grok.js +2 -2
- package/dist-server/server/drivers/mistral.js +4 -3
- package/dist-server/server/drivers/openai-chat-protocol.js +4 -3
- package/dist-server/server/drivers/openai-chat.js +66 -4
- package/dist-server/server/drivers/openai-compat.js +73 -23
- package/dist-server/server/drivers/prompt-split.js +2 -0
- package/dist-server/server/engine-install.js +46 -12
- package/dist-server/server/env-path.js +21 -5
- package/dist-server/server/harness/registry.js +2 -2
- package/dist-server/server/index.js +1545 -238
- package/dist-server/server/lending-memory.js +479 -0
- package/dist-server/server/local-vm-idle.js +24 -6
- package/dist-server/server/local-vm-stop-reason.js +26 -0
- package/dist-server/server/managed-desktop.js +3 -0
- package/dist-server/server/mcp-bridge.js +5 -3
- package/dist-server/server/mcp-http.js +6 -3
- package/dist-server/server/mcp-oauth-discovery.js +133 -0
- package/dist-server/server/mcp-oauth-store.js +70 -0
- package/dist-server/server/mcp-oauth.js +550 -0
- package/dist-server/server/mcp-probe.js +14 -1
- package/dist-server/server/mcp-registry.js +43 -0
- package/dist-server/server/memory-upkeep.js +94 -84
- package/dist-server/server/model-catalog/catalog.js +374 -0
- package/dist-server/server/model-catalog/presets.js +176 -0
- package/dist-server/server/model-catalog/trim.js +219 -0
- package/dist-server/server/provider-key-check.js +5 -2
- package/dist-server/server/recent-work.js +1 -1
- package/dist-server/server/request-auth.js +23 -0
- package/dist-server/server/routes/antigravity-leftovers.js +45 -0
- package/dist-server/server/routes/bot-memory.js +31 -6
- package/dist-server/server/routes/desktop-viewer.js +238 -0
- package/dist-server/server/routine-requests.js +1 -1
- package/dist-server/server/routines.js +6 -3
- package/dist-server/server/sessions.js +56 -9
- package/dist-server/server/skills.js +25 -10
- package/dist-server/server/store.js +116 -122
- package/dist-server/server/thread-events.js +2 -0
- package/dist-server/server/thread-starters.js +33 -0
- package/dist-server/server/thread-title.js +46 -0
- package/dist-server/server/tts/fish.js +4 -5
- package/dist-server/server/tts/index.js +5 -3
- package/dist-server/server/vps-computer.js +80 -13
- package/dist-server/server/webhooks.js +18 -1
- package/dist-server/server/workspace-backup-policy.js +3 -0
- package/dist-server/server/workspace-backup.js +25 -0
- package/dist-server/server/workspace.js +66 -16
- package/dist-server/shared/approval-mode.js +1 -1
- package/dist-server/shared/redact.js +1 -0
- package/dist-server/shared/tool-name.js +22 -0
- package/dist-server/shared/workspace-backup-client.js +1 -0
- package/dist-server/src/lib/citations.js +177 -0
- package/dist-server/src/lib/composer-attachments.js +7 -1
- package/dist-server/vps-container-mcp.js +202 -16
- package/dist-server/workspace-backup.worker.js +87 -9
- package/enterprise/server/index.js +5 -1
- package/package.json +1 -1
- package/dist/assets/channel-DrfGMu7X.js +0 -1
- package/dist/assets/index-BlnCEcU6.js +0 -588
- package/dist/assets/index-DVxjOvID.css +0 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-BCZhxl7e.js +0 -8
|
@@ -84,6 +84,9 @@ function nvmBinDirs() {
|
|
|
84
84
|
return [];
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
function sealedFixture() {
|
|
88
|
+
return process.env.OMB_TEST_SEALED_PATH === "1";
|
|
89
|
+
}
|
|
87
90
|
function knownDirs() {
|
|
88
91
|
const home = homedir();
|
|
89
92
|
return [
|
|
@@ -99,10 +102,13 @@ function knownDirs() {
|
|
|
99
102
|
// opencode installer
|
|
100
103
|
join(home, ".claude", "local"),
|
|
101
104
|
// claude "local install"
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
// Machine-wide rather than under the (possibly temporary) home.
|
|
106
|
+
...sealedFixture() ? [] : [
|
|
107
|
+
"/opt/homebrew/bin",
|
|
108
|
+
// brew, Apple silicon
|
|
109
|
+
"/usr/local/bin"
|
|
110
|
+
// brew Intel / classic installs
|
|
111
|
+
],
|
|
106
112
|
join(home, ".volta", "bin"),
|
|
107
113
|
join(home, ".bun", "bin"),
|
|
108
114
|
join(home, ".asdf", "shims"),
|
|
@@ -124,6 +130,8 @@ function windowsKnownDirs() {
|
|
|
124
130
|
// x.ai installer
|
|
125
131
|
join(localAppData, "agy", "bin"),
|
|
126
132
|
// Antigravity installer
|
|
133
|
+
// Cursor installer: cursor-agent.* and its `agent` copies (MOCA-272)
|
|
134
|
+
join(localAppData, "cursor-agent"),
|
|
127
135
|
join(home, ".local", "bin"),
|
|
128
136
|
// claude native installer
|
|
129
137
|
join(home, ".claude", "local"),
|
|
@@ -131,7 +139,9 @@ function windowsKnownDirs() {
|
|
|
131
139
|
// Factory droid installer (%USERPROFILE%\bin)
|
|
132
140
|
join(home, ".bun", "bin"),
|
|
133
141
|
join(home, ".deno", "bin"),
|
|
134
|
-
join(home, "go", "bin")
|
|
142
|
+
join(home, "go", "bin"),
|
|
143
|
+
join(process.env.ProgramFiles ?? "C:\\Program Files", "Docker", "Docker", "resources", "bin")
|
|
144
|
+
// Docker Desktop installer
|
|
135
145
|
];
|
|
136
146
|
}
|
|
137
147
|
var cached = null;
|
|
@@ -154,7 +164,7 @@ function augmentedPath() {
|
|
|
154
164
|
...(process.platform === "win32" ? windowsKnownDirs() : knownDirs()).filter((d) => existsSync(d))
|
|
155
165
|
]);
|
|
156
166
|
}
|
|
157
|
-
if (!probed && !process.env.VITEST && process.platform !== "win32") {
|
|
167
|
+
if (!probed && !process.env.VITEST && !sealedFixture() && process.platform !== "win32") {
|
|
158
168
|
probed = true;
|
|
159
169
|
probeLoginShellPath();
|
|
160
170
|
}
|
|
@@ -178,6 +188,119 @@ function probeLoginShellPath() {
|
|
|
178
188
|
}
|
|
179
189
|
);
|
|
180
190
|
}
|
|
191
|
+
function splitCliString(cli) {
|
|
192
|
+
const out = [];
|
|
193
|
+
let cur = "";
|
|
194
|
+
let quote = null;
|
|
195
|
+
for (const ch of cli.trim()) {
|
|
196
|
+
if (quote) {
|
|
197
|
+
if (ch === quote) quote = null;
|
|
198
|
+
else cur += ch;
|
|
199
|
+
} else if (ch === '"' || ch === "'") {
|
|
200
|
+
quote = ch;
|
|
201
|
+
} else if (/\s/.test(ch)) {
|
|
202
|
+
if (cur) out.push(cur);
|
|
203
|
+
cur = "";
|
|
204
|
+
} else {
|
|
205
|
+
cur += ch;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (cur) out.push(cur);
|
|
209
|
+
return out;
|
|
210
|
+
}
|
|
211
|
+
function isFile(p) {
|
|
212
|
+
try {
|
|
213
|
+
return statSync(p, { throwIfNoEntry: false })?.isFile() ?? false;
|
|
214
|
+
} catch {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function whichWin(cli, env) {
|
|
219
|
+
const exts = ((env ?? process.env).PATHEXT ?? ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean);
|
|
220
|
+
const probe = (base) => {
|
|
221
|
+
const order = extname(base) ? [base, ...exts.map((e) => base + e)] : [...exts.map((e) => base + e), base];
|
|
222
|
+
return order.find(isFile) ?? null;
|
|
223
|
+
};
|
|
224
|
+
if (/[\\/]/.test(cli) || /^[a-zA-Z]:/.test(cli)) return probe(cli);
|
|
225
|
+
const path = env ? env.PATH ?? env.Path ?? "" : augmentedPath();
|
|
226
|
+
for (const dir of path.split(delimiter)) {
|
|
227
|
+
if (!dir) continue;
|
|
228
|
+
const hit = probe(join(dir, cli));
|
|
229
|
+
if (hit) return hit;
|
|
230
|
+
}
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
function nodeExe(near, env) {
|
|
234
|
+
const local = join(near, "node.exe");
|
|
235
|
+
if (isFile(local)) return local;
|
|
236
|
+
const onPath = whichWin("node.exe", env);
|
|
237
|
+
if (onPath && extname(onPath).toLowerCase() === ".exe") return onPath;
|
|
238
|
+
return process.versions.electron ? null : process.execPath;
|
|
239
|
+
}
|
|
240
|
+
function parseCmdShim(shim, env) {
|
|
241
|
+
let text;
|
|
242
|
+
try {
|
|
243
|
+
text = readFileSync(shim, "utf8");
|
|
244
|
+
} catch {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
const dir = dirname(shim);
|
|
248
|
+
const npmEntry = /^SET "NP[MX]_CLI_JS=%~dp0\\([^"]+)"/im.exec(text);
|
|
249
|
+
const targets = [...npmEntry ? [npmEntry] : [], ...text.matchAll(/"%~?dp0%?\\?([^"]+)"/g)].map((m) => join(dir, m[1])).filter((p) => isFile(p) && basename(p).toLowerCase() !== "node.exe");
|
|
250
|
+
const script = targets.find((p) => /\.[cm]?js$/i.test(p));
|
|
251
|
+
if (script) {
|
|
252
|
+
const node = nodeExe(dir, env);
|
|
253
|
+
if (node) return { command: node, args: [script] };
|
|
254
|
+
}
|
|
255
|
+
const exe = targets.find((p) => extname(p).toLowerCase() === ".exe");
|
|
256
|
+
return exe ? { command: exe, args: [] } : null;
|
|
257
|
+
}
|
|
258
|
+
function parseNodeShebang(file, env) {
|
|
259
|
+
let head = "";
|
|
260
|
+
let fd = null;
|
|
261
|
+
try {
|
|
262
|
+
fd = openSync(file, "r");
|
|
263
|
+
const buf = Buffer.alloc(128);
|
|
264
|
+
const n = readSync(fd, buf, 0, buf.length, 0);
|
|
265
|
+
head = buf.subarray(0, n).toString("utf8").split("\n", 1)[0];
|
|
266
|
+
} catch {
|
|
267
|
+
return null;
|
|
268
|
+
} finally {
|
|
269
|
+
if (fd !== null) {
|
|
270
|
+
try {
|
|
271
|
+
closeSync(fd);
|
|
272
|
+
} catch {
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (!/^#!.*\bnode(\.exe)?\b/.test(head)) return null;
|
|
277
|
+
const node = nodeExe(dirname(file), env);
|
|
278
|
+
return node ? { command: node, args: [file] } : null;
|
|
279
|
+
}
|
|
280
|
+
function resolveWord(cli, args2, env) {
|
|
281
|
+
if (process.platform !== "win32") return { command: cli, args: args2 };
|
|
282
|
+
const file = whichWin(cli, env);
|
|
283
|
+
if (!file) return { command: cli, args: args2 };
|
|
284
|
+
const ext = extname(file).toLowerCase();
|
|
285
|
+
if (ext === ".cmd" || ext === ".bat") {
|
|
286
|
+
const direct = parseCmdShim(file, env);
|
|
287
|
+
return direct ? { command: direct.command, args: [...direct.args, ...args2] } : { command: file, args: args2 };
|
|
288
|
+
}
|
|
289
|
+
if (ext === ".exe" || ext === ".com") return { command: file, args: args2 };
|
|
290
|
+
const viaNode = parseNodeShebang(file, env);
|
|
291
|
+
return viaNode ? { command: viaNode.command, args: [...viaNode.args, ...args2] } : { command: file, args: args2 };
|
|
292
|
+
}
|
|
293
|
+
function resolveCliSpawn(cli, args2, env) {
|
|
294
|
+
const trimmed = cli.trim();
|
|
295
|
+
if (trimmed.includes(" ") && existsSync(trimmed)) return resolveWord(trimmed, args2, env);
|
|
296
|
+
const split = splitCliString(cli);
|
|
297
|
+
if (split.length > 1 || split[0] !== trimmed) {
|
|
298
|
+
const [head, ...fixed] = split;
|
|
299
|
+
if (!head) return { command: cli, args: args2 };
|
|
300
|
+
return resolveWord(head, [...fixed, ...args2], env);
|
|
301
|
+
}
|
|
302
|
+
return resolveWord(cli, args2, env);
|
|
303
|
+
}
|
|
181
304
|
|
|
182
305
|
// server/mcp-tool-schema.ts
|
|
183
306
|
var ROOT_COMBINATORS = ["anyOf", "oneOf", "allOf", "not"];
|
|
@@ -401,9 +524,11 @@ function createMcpBridgeInterceptor(options) {
|
|
|
401
524
|
};
|
|
402
525
|
}
|
|
403
526
|
function runMcpBridge(options) {
|
|
404
|
-
const
|
|
527
|
+
const env = options.env ?? { ...process.env, PATH: augmentedPath() };
|
|
528
|
+
const { command: command2, args: args2 } = resolveCliSpawn(options.command, options.args, env);
|
|
529
|
+
const child = spawn(command2, args2, {
|
|
405
530
|
shell: false,
|
|
406
|
-
env
|
|
531
|
+
env,
|
|
407
532
|
stdio: ["pipe", "pipe", "pipe"]
|
|
408
533
|
});
|
|
409
534
|
child.stdin.on("error", () => {
|
package/dist-server/mcp-gate.js
CHANGED
|
@@ -17,6 +17,9 @@ function nvmBinDirs() {
|
|
|
17
17
|
return [];
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
function sealedFixture() {
|
|
21
|
+
return process.env.OMB_TEST_SEALED_PATH === "1";
|
|
22
|
+
}
|
|
20
23
|
function knownDirs() {
|
|
21
24
|
const home = homedir();
|
|
22
25
|
return [
|
|
@@ -32,10 +35,13 @@ function knownDirs() {
|
|
|
32
35
|
// opencode installer
|
|
33
36
|
join(home, ".claude", "local"),
|
|
34
37
|
// claude "local install"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
// Machine-wide rather than under the (possibly temporary) home.
|
|
39
|
+
...sealedFixture() ? [] : [
|
|
40
|
+
"/opt/homebrew/bin",
|
|
41
|
+
// brew, Apple silicon
|
|
42
|
+
"/usr/local/bin"
|
|
43
|
+
// brew Intel / classic installs
|
|
44
|
+
],
|
|
39
45
|
join(home, ".volta", "bin"),
|
|
40
46
|
join(home, ".bun", "bin"),
|
|
41
47
|
join(home, ".asdf", "shims"),
|
|
@@ -57,6 +63,8 @@ function windowsKnownDirs() {
|
|
|
57
63
|
// x.ai installer
|
|
58
64
|
join(localAppData, "agy", "bin"),
|
|
59
65
|
// Antigravity installer
|
|
66
|
+
// Cursor installer: cursor-agent.* and its `agent` copies (MOCA-272)
|
|
67
|
+
join(localAppData, "cursor-agent"),
|
|
60
68
|
join(home, ".local", "bin"),
|
|
61
69
|
// claude native installer
|
|
62
70
|
join(home, ".claude", "local"),
|
|
@@ -64,7 +72,9 @@ function windowsKnownDirs() {
|
|
|
64
72
|
// Factory droid installer (%USERPROFILE%\bin)
|
|
65
73
|
join(home, ".bun", "bin"),
|
|
66
74
|
join(home, ".deno", "bin"),
|
|
67
|
-
join(home, "go", "bin")
|
|
75
|
+
join(home, "go", "bin"),
|
|
76
|
+
join(process.env.ProgramFiles ?? "C:\\Program Files", "Docker", "Docker", "resources", "bin")
|
|
77
|
+
// Docker Desktop installer
|
|
68
78
|
];
|
|
69
79
|
}
|
|
70
80
|
var cached = null;
|
|
@@ -87,7 +97,7 @@ function augmentedPath() {
|
|
|
87
97
|
...(process.platform === "win32" ? windowsKnownDirs() : knownDirs()).filter((d) => existsSync(d))
|
|
88
98
|
]);
|
|
89
99
|
}
|
|
90
|
-
if (!probed && !process.env.VITEST && process.platform !== "win32") {
|
|
100
|
+
if (!probed && !process.env.VITEST && !sealedFixture() && process.platform !== "win32") {
|
|
91
101
|
probed = true;
|
|
92
102
|
probeLoginShellPath();
|
|
93
103
|
}
|