@geohar/opencode-mcp-combiner 0.9.4 → 0.10.1

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 CHANGED
@@ -113,9 +113,21 @@ Equivalent to setting `manage: false` with an explicit `url`.
113
113
  | `OPENCODE_MCP_COMBINER_COMMAND` / `_ARGS` | Override the combiner invocation. |
114
114
  | `OPENCODE_MCP_COMBINER_CHECKOUT` | Checkout path for `uv run`. |
115
115
  | `OPENCODE_MCP_COMBINER_CONFIG` | `servers.json` path. |
116
+ | `OPENCODE_MCP_COMBINER_PORT` | Port the combiner serves on. Default `9741`. |
117
+ | `OPENCODE_MCP_COMBINER_NAME` | `sharedserver` instance name. Default `mcp-combiner`. |
118
+ | `OPENCODE_MCP_COMBINER_GRACE` | `sharedserver` grace period. Default `30m`. |
119
+ | `OPENCODE_MCP_COMBINER_LOG` | Capture the combiner's output to this path. |
116
120
  | `SHAREDSERVER_BIN` | Path to the `sharedserver` binary. |
117
121
  | `SHAREDSERVER_LOCKDIR` | `sharedserver` lock directory. |
118
122
 
123
+ Plugin options take precedence over the environment. These mirror the Claude plugin's
124
+ `CLAUDE_MCP_COMBINER_*` set, so running both clients means one namespace per client
125
+ rather than options in one place and env vars in the other.
126
+
127
+ If `mcp-combiner` is on `PATH` but older than `0.8.0`, the plugin logs **and toasts** a
128
+ warning, then falls back to a pinned release fetched with `uvx` — it will not silently
129
+ use a stale binary, nor silently route around one you installed deliberately.
130
+
119
131
  ## Relationship to `opencode-sharedserver`
120
132
 
121
133
  [`@geohar/opencode-sharedserver`](https://github.com/georgeharker/opencode-sharedserver)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA6TjD,QAAA,MAAM,iBAAiB,EAAE,MA2IxB,CAAA;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA8ajD,QAAA,MAAM,iBAAiB,EAAE,MAwLxB,CAAA;AAED,eAAe,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -16,12 +16,16 @@ import { existsSync, readFileSync } from "node:fs";
16
16
  import { homedir } from "node:os";
17
17
  import { dirname, join } from "node:path";
18
18
  import { fileURLToPath } from "node:url";
19
+ import { resolveSharedserver } from "./sharedserver-resolve.js";
19
20
  const DEFAULT_PORT = 9741;
20
21
  const DEFAULT_NAME = "mcp-combiner";
21
22
  const DEFAULT_GRACE = "30m";
22
- // The `--mcp` serve flag was introduced in combiner 0.8.0; older versions serve
23
- // with a bare `--config`. Version-gated so this plugin works across the boundary.
24
- const MIN_MCP_VERSION = [0, 8, 0];
23
+ // The `--mcp` serve flag was introduced in combiner 0.8.0; older versions serve with a
24
+ // bare `--config`. That same boundary is the floor for trusting a PATH install: below it
25
+ // we would rather fetch a known-good release via uvx than limp along on a stale one.
26
+ // Deliberately NOT the lockstep release version — it moves only when this plugin starts
27
+ // depending on newer combiner behaviour.
28
+ const MIN_COMBINER_VERSION = [0, 8, 0];
25
29
  // ── the tool-discovery directive ───────────────────────────────────
26
30
  // Appended to the system prompt so the agent knows combined tools arrive under a
27
31
  // `<server>_` prefix, and looks (the tool list, `combiner__status`) before deciding a
@@ -43,80 +47,156 @@ const COMBINER_DIRECTIVE = (() => {
43
47
  }
44
48
  })();
45
49
  // ── sharedserver binary resolution (ported from opencode-sharedserver) ──
46
- const CANDIDATE_BINARIES = [
47
- "sharedserver",
48
- join(homedir(), ".cargo", "bin", "sharedserver"),
49
- join(homedir(), ".local", "bin", "sharedserver"),
50
- "/usr/local/bin/sharedserver",
51
- "/opt/homebrew/bin/sharedserver",
52
- ];
53
- function resolveBinary(override, env) {
54
- const candidates = [override, env.SHAREDSERVER_BIN, ...CANDIDATE_BINARIES].filter((v) => typeof v === "string" && v.length > 0);
55
- for (const candidate of candidates) {
56
- if (candidate.includes("/")) {
57
- if (existsSync(candidate))
58
- return candidate;
59
- continue;
60
- }
61
- const probe = spawnSync(candidate, ["--version"], { stdio: "ignore", env });
62
- if (probe.status === 0)
63
- return candidate;
64
- }
65
- return undefined;
50
+ // Resolution lives in a module vendored byte-identical from georgeharker/sharedserver
51
+ // (scripts/sync-vendored.sh), so the Claude hook's bin/sharedserver and this plugin
52
+ // answer "which sharedserver, and why" identically. Floor-only against the latest
53
+ // release: mcp-companion consumes sharedserver rather than shipping it.
54
+ const SHAREDSERVER_MIN_VERSION = "0.6.7";
55
+ function resolveBinary(override, env, log, toast) {
56
+ return resolveSharedserver({
57
+ label: "mcp-combiner",
58
+ minVersion: SHAREDSERVER_MIN_VERSION,
59
+ installerUrl: "https://github.com/georgeharker/sharedserver/releases/latest/download/sharedserver-installer.sh",
60
+ }, override, env, log, toast);
66
61
  }
67
- function onPath(cmd, env) {
68
- return spawnSync(cmd, ["--version"], { stdio: "ignore", env }).status === 0;
62
+ /** Probe a command once for BOTH facts we need: is it runnable, and which version.
63
+ *
64
+ * Presence is "spawn did not fail", NOT "exited 0": a pre-0.8.0 mcp-combiner exits 2 on
65
+ * `--version` (the flag did not exist yet), so an exit-status test reported *absent* for
66
+ * precisely the stale install MIN_COMBINER_VERSION exists to catch. spawnSync sets `error`
67
+ * (ENOENT) when the command cannot be resolved and EACCES when it is present but not
68
+ * executable; both mean unusable, so any error counts as absent. Resolution is left to
69
+ * spawn — hand-rolling a PATH walk means reimplementing PATHEXT, exec bits and symlink
70
+ * following, for no gain.
71
+ *
72
+ * Probing uses ONLY the structural args. Folding the user's extras in here meant a single
73
+ * arg the CLI rejects in that position made a healthy install look stale AND broke the uvx
74
+ * fallbacks that carry the same extras — turning one bad option into "could not be found
75
+ * or fetched". */
76
+ function probe(cmd, env) {
77
+ const r = spawnSync(cmd.cmd, [...cmd.args, "--version"], { env });
78
+ if (r.error)
79
+ return { present: false };
80
+ if (r.status !== 0)
81
+ return { present: true };
82
+ return { present: true, version: parseVersion(`${r.stdout?.toString() ?? ""}${r.stderr?.toString() ?? ""}`) };
83
+ }
84
+ /** Probe, and accept only a combiner at or above the floor. Used for every auto-detected
85
+ * source so the guarantee is enforced rather than assumed — including the uvx tail, whose
86
+ * whole job is to be the known-good option. */
87
+ function probeUsable(cmd, env) {
88
+ const { version } = probe(cmd, env);
89
+ if (!version || !gte(version, MIN_COMBINER_VERSION))
90
+ return undefined;
91
+ return { ...cmd, version };
69
92
  }
70
93
  function splitArgs(value) {
71
94
  if (!value)
72
95
  return [];
73
96
  return value.split(/\s+/).filter((s) => s.length > 0);
74
97
  }
75
- /** Resolve how to invoke the combiner, mirroring the Claude mcp-combiner plugin's priority:
76
- * explicit option → env command → `mcp-combiner` on PATH →
77
- * `uv run --project <checkout> python -m mcp_combiner`. */
78
- function resolveCombiner(opts, env) {
98
+ function parseVersion(text) {
99
+ const m = text.match(/(\d+)\.(\d+)\.(\d+)/);
100
+ if (!m)
101
+ return undefined;
102
+ return [Number(m[1]), Number(m[2]), Number(m[3])];
103
+ }
104
+ function gte(a, b) {
105
+ for (let i = 0; i < 3; i++) {
106
+ if (a[i] !== b[i])
107
+ return a[i] > b[i];
108
+ }
109
+ return true;
110
+ }
111
+ /** This plugin's own version, which lockstep releases keep equal to the published PyPI
112
+ * mcp-combiner (scripts/bump-version.sh writes both). Used as the uvx pin — derived from
113
+ * the package manifest rather than duplicated as a constant. */
114
+ const PLUGIN_VERSION = (() => {
115
+ try {
116
+ const here = dirname(fileURLToPath(import.meta.url));
117
+ const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
118
+ return pkg.version;
119
+ }
120
+ catch {
121
+ return undefined;
122
+ }
123
+ })();
124
+ /** Resolve how to invoke the combiner, mirroring the Claude plugin's priority:
125
+ * explicit option → env command → `mcp-combiner` on PATH (only when new enough) →
126
+ * `uv run --project <checkout> python -m mcp_combiner` → a pinned release via uvx.
127
+ * The uvx tail is what makes a bare plugin install work with nothing installed by hand.
128
+ * Unlike the Claude plugin there is no legacy `mcp-bridge` branch — this package post-dates
129
+ * the rename, so nobody can be upgrading into it from that name. */
130
+ function resolveCombiner(opts, env, log, toast) {
79
131
  const extra = opts.args ?? [];
80
132
  if (opts.command)
81
- return { cmd: opts.command, args: extra };
133
+ return { cmd: opts.command, args: [], extra };
82
134
  if (env.OPENCODE_MCP_COMBINER_COMMAND) {
135
+ // $…_ARGS is part of the command spec (structural); opts.args is the user's extra.
83
136
  return {
84
137
  cmd: env.OPENCODE_MCP_COMBINER_COMMAND,
85
- args: [...splitArgs(env.OPENCODE_MCP_COMBINER_ARGS), ...extra],
138
+ args: splitArgs(env.OPENCODE_MCP_COMBINER_ARGS),
139
+ extra,
86
140
  };
87
141
  }
88
- if (onPath("mcp-combiner", env))
89
- return { cmd: "mcp-combiner", args: extra };
142
+ // A PATH install wins outright when it is new enough: explicit user choice, no fetch.
143
+ // Too old and we fall through rather than limp — the uvx tail gets a known-good
144
+ // release, so staleness self-heals instead of lingering forever.
145
+ const onPathCandidate = { cmd: "mcp-combiner", args: [] };
146
+ const pathProbe = probe(onPathCandidate, env);
147
+ if (pathProbe.present) {
148
+ if (pathProbe.version && gte(pathProbe.version, MIN_COMBINER_VERSION)) {
149
+ return { ...onPathCandidate, extra, version: pathProbe.version };
150
+ }
151
+ // Toast as well as log: this one is actionable — the user installed an
152
+ // mcp-combiner that we are now declining to use, and silently routing around it
153
+ // would be the confusing outcome. The uvx fallback below keeps them working
154
+ // meanwhile, so this is a nudge rather than an error.
155
+ const stale = `mcp-combiner on PATH reports ${pathProbe.version?.join(".") ?? "a pre-0.8.0 version"}, ` +
156
+ `older than ${MIN_COMBINER_VERSION.join(".")} — ignoring it and fetching a pinned ` +
157
+ "release instead. Upgrade with: uv tool install --upgrade mcp-combiner";
158
+ log?.("warn", stale);
159
+ toast?.("warning", stale);
160
+ }
90
161
  const checkout = opts.checkout ?? env.OPENCODE_MCP_COMBINER_CHECKOUT;
91
- if (checkout && onPath("uv", env)) {
162
+ if (checkout && existsSync(checkout) && probe({ cmd: "uv", args: [] }, env).present) {
92
163
  return {
93
164
  cmd: "uv",
94
- args: ["run", "--project", checkout, "python", "-m", "mcp_combiner", ...extra],
165
+ args: ["run", "--project", checkout, "python", "-m", "mcp_combiner"],
166
+ extra,
95
167
  };
96
168
  }
97
- return undefined;
98
- }
99
- function parseVersion(text) {
100
- const m = text.match(/(\d+)\.(\d+)\.(\d+)/);
101
- if (!m)
102
- return undefined;
103
- return [Number(m[1]), Number(m[2]), Number(m[3])];
104
- }
105
- function gte(a, b) {
106
- for (let i = 0; i < 3; i++) {
107
- if (a[i] !== b[i])
108
- return a[i] > b[i];
169
+ // Out-of-the-box path: no install required, fetch from PyPI. Pinned to this plugin's
170
+ // version so the pair moves in lockstep; if that exact release is missing (a failed
171
+ // publish, say) fall back to latest rather than failing outright. The probe both
172
+ // validates the pin and warms uv's cache, so the real spawn is a cache hit.
173
+ if (probe({ cmd: "uvx", args: [] }, env).present) {
174
+ if (PLUGIN_VERSION) {
175
+ const pinned = probeUsable({ cmd: "uvx", args: [`mcp-combiner@${PLUGIN_VERSION}`] }, env);
176
+ if (pinned)
177
+ return { ...pinned, extra };
178
+ log?.("warn", `pinned mcp-combiner@${PLUGIN_VERSION} unavailable or too old; trying latest from PyPI`);
179
+ }
180
+ const latest = probeUsable({ cmd: "uvx", args: ["mcp-combiner"] }, env);
181
+ if (latest)
182
+ return { ...latest, extra };
109
183
  }
110
- return true;
184
+ return undefined;
111
185
  }
112
- /** True if the combiner supports (needs) the `--mcp` serve flag. Unknown version
113
- * → assume yes (current releases are ≥0.8.0). */
186
+ /** True if the combiner supports (needs) the `--mcp` serve flag. Unknown version →
187
+ * assume NO, matching the Claude plugin's start.sh: a version we cannot read is a
188
+ * pre-0.8.0 build with no --version flag, and those serve on a bare --config. Bare
189
+ * --config still serves on newer releases (with a deprecation warning), so guessing
190
+ * low degrades gracefully whereas guessing high does not. */
114
191
  function combinerNeedsMcpFlag(cmd, env) {
115
- const r = spawnSync(cmd.cmd, [...cmd.args, "--version"], { env });
116
- if (r.status !== 0)
117
- return true;
118
- const ver = parseVersion(`${r.stdout?.toString() ?? ""}${r.stderr?.toString() ?? ""}`);
119
- return ver ? gte(ver, MIN_MCP_VERSION) : true;
192
+ // Auto-detected sources already recorded their version during resolution; only the
193
+ // explicit command/env override arrives unprobed, and it probes once here. The probe
194
+ // keeps cmd.args (structural) and drops cmd.extra: dropping the structural args would
195
+ // reduce `uv run --project … -m mcp_combiner` to a bare `uv --version` and read uv's
196
+ // OWN version as the combiner's, while keeping the extras is what made healthy
197
+ // installs look stale.
198
+ const ver = cmd.version ?? probe({ cmd: cmd.cmd, args: cmd.args }, env).version;
199
+ return ver ? gte(ver, MIN_COMBINER_VERSION) : false;
120
200
  }
121
201
  // ── servers.json resolution (mirrors the Claude mcp-combiner plugin probing) ──
122
202
  function resolveConfig(opts, env) {
@@ -260,12 +340,51 @@ const McpCombinerPlugin = async ({ client }, options) => {
260
340
  client.tui.showToast({ body: { title: "mcp-combiner", message, variant } }).catch(() => { });
261
341
  }, 1500).unref();
262
342
  };
263
- const port = opts.port ?? DEFAULT_PORT;
343
+ // Env knobs mirror the Claude plugin's CLAUDE_MCP_COMBINER_* set, so a user running
344
+ // both clients configures one namespace per client rather than options here and env
345
+ // vars there. Explicit plugin options still win over the environment.
346
+ const envPortRaw = process.env.OPENCODE_MCP_COMBINER_PORT;
347
+ const envPort = Number(envPortRaw);
348
+ const portExplicit = opts.port !== undefined || (envPortRaw !== undefined && envPortRaw !== "");
349
+ if (envPortRaw !== undefined && envPortRaw !== "" && !(Number.isInteger(envPort) && envPort > 0)) {
350
+ log("warn", `OPENCODE_MCP_COMBINER_PORT=${envPortRaw} is not a positive integer; using ${DEFAULT_PORT}`);
351
+ }
352
+ let port = opts.port ?? (Number.isInteger(envPort) && envPort > 0 ? envPort : DEFAULT_PORT);
264
353
  const mcpName = opts.mcpName ?? DEFAULT_NAME;
265
- const name = opts.name ?? DEFAULT_NAME;
354
+ const name = opts.name ?? process.env.OPENCODE_MCP_COMBINER_NAME ?? DEFAULT_NAME;
266
355
  const register = opts.register !== false;
267
- const hostOwnedUrl = process.env.MCP_COMPANION_COMBINER_URL;
268
- const url = opts.url ?? hostOwnedUrl ?? `http://127.0.0.1:${port}/mcp`;
356
+ // A set MCP_COMPANION_COMBINER_URL normally means the host editor owns the combiner
357
+ // and we only register. But if a port was ALSO named explicitly, the user is saying
358
+ // "I picked this port, launch here" — the same distinction the Claude plugin draws,
359
+ // kept identical so one environment behaves the same in both clients. The host never
360
+ // sets a port, so this cannot change its behaviour.
361
+ const combinerUrl = process.env.MCP_COMPANION_COMBINER_URL;
362
+ const hostOwnedUrl = combinerUrl && !portExplicit ? combinerUrl : undefined;
363
+ if (combinerUrl && portExplicit) {
364
+ // The URL wins where they disagree: it is what gets registered with OpenCode, so
365
+ // serving anywhere else would be unreachable.
366
+ let urlPort = NaN;
367
+ try {
368
+ urlPort = Number(new URL(combinerUrl).port);
369
+ }
370
+ catch {
371
+ // Malformed URL — fall through to the no-usable-port branch below, which
372
+ // reports it. Never throw here: this runs at plugin init and would take
373
+ // the whole session down over a typo'd env var.
374
+ }
375
+ if (!Number.isInteger(urlPort) || urlPort <= 0) {
376
+ const msg = `MCP_COMPANION_COMBINER_URL=${combinerUrl} has no explicit port; serving on ${port}. Use an explicit port in the URL (e.g. http://127.0.0.1:${port}/mcp).`;
377
+ log("warn", msg);
378
+ toast("warning", msg);
379
+ }
380
+ else if (urlPort !== port) {
381
+ const msg = `port ${port} disagrees with MCP_COMPANION_COMBINER_URL=${combinerUrl}; the URL is what gets registered, so serving on ${port} would be unreachable — using ${urlPort} instead. Set them to the same port.`;
382
+ log("warn", msg);
383
+ toast("warning", msg);
384
+ port = urlPort;
385
+ }
386
+ }
387
+ const url = opts.url ?? hostOwnedUrl ?? combinerUrl ?? `http://127.0.0.1:${port}/mcp`;
269
388
  // The registration half — always applied (unless disabled). OpenCode surfaces
270
389
  // connection state itself, so a briefly-absent endpoint recovers.
271
390
  const configHook = async (cfg) => {
@@ -307,16 +426,17 @@ const McpCombinerPlugin = async ({ client }, options) => {
307
426
  scheduleMcpHealthCheck(client, mcpName, log, toast, 5000);
308
427
  return hooks;
309
428
  }
310
- const binary = resolveBinary(opts.binary, env);
429
+ const binary = resolveBinary(opts.binary, env, log, toast);
311
430
  if (!binary) {
312
431
  const msg = "sharedserver binary not found; set `binary`/`$SHAREDSERVER_BIN`, or use manage:false";
313
432
  log("error", msg);
314
433
  toast("error", msg);
315
434
  return hooks;
316
435
  }
317
- const combiner = resolveCombiner(opts, env);
436
+ const combiner = resolveCombiner(opts, env, log, toast);
318
437
  if (!combiner) {
319
- const msg = "mcp-combiner command not found; install `mcp-combiner`, set `command`/`checkout`, " +
438
+ const msg = "mcp-combiner could not be found or fetched; install uv and it will be fetched from " +
439
+ "PyPI on demand, or install `mcp-combiner`, set `command`/`checkout`, " +
320
440
  "or set $OPENCODE_MCP_COMBINER_COMMAND / $OPENCODE_MCP_COMBINER_CHECKOUT";
321
441
  log("error", msg);
322
442
  toast("error", msg);
@@ -337,19 +457,25 @@ const McpCombinerPlugin = async ({ client }, options) => {
337
457
  serve.push("--config", cfgPath, "--port", String(port));
338
458
  if (opts.host)
339
459
  serve.push("--host", opts.host);
340
- const wrapped = { cmd: combiner.cmd, args: [...combiner.args, ...serve] };
460
+ // Structural args, then the user's extras, then the serve args — the extras sit
461
+ // "before the serve args" as the `args` option documents.
462
+ const wrapped = {
463
+ cmd: combiner.cmd,
464
+ args: [...combiner.args, ...(combiner.extra ?? []), ...serve],
465
+ };
341
466
  const useArgs = [
342
467
  "use",
343
468
  name,
344
469
  "--pid",
345
470
  String(process.pid),
346
471
  "--grace-period",
347
- opts.gracePeriod ?? DEFAULT_GRACE,
472
+ opts.gracePeriod ?? process.env.OPENCODE_MCP_COMBINER_GRACE ?? DEFAULT_GRACE,
348
473
  "--metadata",
349
474
  `opencode-${process.pid}`,
350
475
  ];
351
- if (opts.logFile)
352
- useArgs.push("--log-file", opts.logFile);
476
+ const logFile = opts.logFile ?? process.env.OPENCODE_MCP_COMBINER_LOG;
477
+ if (logFile)
478
+ useArgs.push("--log-file", logFile);
353
479
  useArgs.push("--", wrapped.cmd, ...wrapped.args);
354
480
  installCleanup();
355
481
  const pre = preCheck(binary, name, env);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export type LogFn = (level: "info" | "warn" | "error", message: string) => void;
2
+ export type ToastFn = (variant: "success" | "warning" | "error", message: string) => void;
3
+ export type ResolveConfig = {
4
+ /** Prefix for user-facing messages. Default "sharedserver". */
5
+ label?: string;
6
+ /** Minimum acceptable version. Defaults to pkgVersion (lockstep). */
7
+ minVersion?: string;
8
+ /** Installer to fetch. Defaults to the release pinned to pkgVersion. */
9
+ installerUrl?: string;
10
+ /** The host package's own version — only meaningful in lockstep mode. */
11
+ pkgVersion?: string;
12
+ };
13
+ /** Resolve the sharedserver binary, fetching a release when nothing usable is present.
14
+ *
15
+ * Behaviourally identical to plugins/claude/bin/sharedserver — same ladder, floor,
16
+ * lock and degrade-rather-than-die fallback, so a user running both clients gets the
17
+ * same answer to "which sharedserver am I on, and why". */
18
+ export declare function resolveSharedserver(cfg: ResolveConfig, override: string | undefined, env: NodeJS.ProcessEnv, log?: LogFn, toast?: ToastFn): string | undefined;
19
+ //# sourceMappingURL=sharedserver-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedserver-resolve.d.ts","sourceRoot":"","sources":["../src/sharedserver-resolve.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAC/E,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAEzF,MAAM,MAAM,aAAa,GAAG;IACxB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAyID;;;;4DAI4D;AAC5D,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,CAAC,EAAE,KAAK,EACX,KAAK,CAAC,EAAE,OAAO,GAChB,MAAM,GAAG,SAAS,CA4CpB"}
@@ -0,0 +1,188 @@
1
+ // Resolve the `sharedserver` binary, fetching it when none is usable.
2
+ //
3
+ // VENDORED FILE. This is copied byte-identical into the consuming OpenCode plugins
4
+ // (cribsheet, svg-mcp) by their scripts/sync-vendored.sh, so the drift check is a plain
5
+ // diff. There is no way to share it as a dependency without coupling their versions to
6
+ // sharedserver's — see plugins/claude/bin/sharedserver for the same reasoning on the
7
+ // shell side. Edit it HERE; consumers re-sync.
8
+ //
9
+ // Everything repo-specific arrives through ResolveConfig rather than being hardcoded,
10
+ // mirroring bin/sharedserver.conf.
11
+ import { spawnSync } from "node:child_process";
12
+ import { existsSync, mkdirSync, rmSync, statSync, writeFileSync } from "node:fs";
13
+ import { homedir } from "node:os";
14
+ import { join } from "node:path";
15
+ /** Oldest release these plugins are correct against: 0.5.0 added the PID-reuse guard,
16
+ * without which a recycled client PID can hold a server open indefinitely. */
17
+ const HARDCODED_FLOOR = "0.5.0";
18
+ const CANDIDATE_BINARIES = [
19
+ "sharedserver",
20
+ join(homedir(), ".cargo", "bin", "sharedserver"),
21
+ join(homedir(), ".local", "bin", "sharedserver"),
22
+ "/usr/local/bin/sharedserver",
23
+ "/opt/homebrew/bin/sharedserver",
24
+ ];
25
+ function parseVersion(text) {
26
+ const m = text.match(/(\d+)\.(\d+)\.(\d+)/);
27
+ return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : undefined;
28
+ }
29
+ function gte(a, b) {
30
+ for (let i = 0; i < 3; i++)
31
+ if (a[i] !== b[i])
32
+ return a[i] > b[i];
33
+ return true;
34
+ }
35
+ function versionOf(candidate, env) {
36
+ const r = spawnSync(candidate, ["--version"], { env });
37
+ if (r.error)
38
+ return undefined;
39
+ return parseVersion(`${r.stdout?.toString() ?? ""}${r.stderr?.toString() ?? ""}`);
40
+ }
41
+ /** Synchronous sleep — this path runs before anything can be awaited, so the lock wait
42
+ * cannot use timers. Atomics.wait blocks without spinning. */
43
+ function sleepSync(ms) {
44
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
45
+ }
46
+ /** First sharedserver found at ANY version, or undefined. */
47
+ function probeAny(override, env) {
48
+ const candidates = [override, env.SHAREDSERVER_BIN, ...CANDIDATE_BINARIES].filter((v) => typeof v === "string" && v.length > 0);
49
+ for (const candidate of candidates) {
50
+ if (candidate.includes("/")) {
51
+ if (existsSync(candidate))
52
+ return candidate;
53
+ continue;
54
+ }
55
+ // Presence is "spawn did not fail", NOT "exited 0" — a build that rejects some
56
+ // flag is still present.
57
+ if (!spawnSync(candidate, ["--version"], { stdio: "ignore", env }).error)
58
+ return candidate;
59
+ }
60
+ return undefined;
61
+ }
62
+ /** Download and run the cargo-dist installer, then re-probe. */
63
+ function installPinned(cfg, url, what, env, log, toast) {
64
+ // The SAME lock directory as the shell shim — cross-client coordination, so a
65
+ // Claude session and an OpenCode session starting together do not race.
66
+ const lockdir = join(env.TMPDIR || "/tmp", ".sharedserver-install.lock");
67
+ let haveLock = false;
68
+ try {
69
+ mkdirSync(lockdir);
70
+ haveLock = true;
71
+ }
72
+ catch {
73
+ const deadline = Date.now() + 20_000;
74
+ while (existsSync(lockdir) && Date.now() < deadline)
75
+ sleepSync(250);
76
+ const after = probeAny(undefined, env);
77
+ if (after)
78
+ return after;
79
+ try {
80
+ mkdirSync(lockdir);
81
+ haveLock = true;
82
+ }
83
+ catch {
84
+ log?.("warn", `${cfg.label}: another process is installing sharedserver and did not finish; remove the stale lock if this persists: ${lockdir}`);
85
+ return undefined;
86
+ }
87
+ }
88
+ try {
89
+ // Re-probe under the lock: the winner may have finished while we waited.
90
+ const already = probeAny(undefined, env);
91
+ const floor = parseVersion(cfg.minVersion ?? HARDCODED_FLOOR);
92
+ if (already) {
93
+ const v = versionOf(already, env);
94
+ if (v && floor && gte(v, floor))
95
+ return already;
96
+ }
97
+ // Download to a file, then run it. `curl … | sh` would report success on a 404,
98
+ // since a pipeline's status is sh's; spawnSync uses no shell, so this is exact.
99
+ const script = join(lockdir, "installer.sh");
100
+ const dl = spawnSync("curl", ["--proto", "=https", "--tlsv1.2", "-LsSf", url, "-o", script], { env });
101
+ if (dl.error || dl.status !== 0) {
102
+ const msg = `${cfg.label}: could not download the sharedserver installer (${what})`;
103
+ log?.("warn", msg);
104
+ toast?.("warning", msg);
105
+ return undefined;
106
+ }
107
+ if (!existsSync(script) || statSync(script).size === 0) {
108
+ log?.("warn", `${cfg.label}: the downloaded sharedserver installer was empty`);
109
+ return undefined;
110
+ }
111
+ // cargo-dist embeds the expected sha256 but looks up only `sha256sum` and SKIPS
112
+ // verification when missing — i.e. always, on macOS. Give it one (identical
113
+ // output) rather than execute an unverified binary.
114
+ let runEnv = env;
115
+ if (spawnSync("sh", ["-c", "command -v sha256sum"], { stdio: "ignore" }).status !== 0) {
116
+ if (spawnSync("sh", ["-c", "command -v shasum"], { stdio: "ignore" }).status !== 0) {
117
+ log?.("warn", `${cfg.label}: refusing to install sharedserver — no sha256sum or shasum to verify the download`);
118
+ return undefined;
119
+ }
120
+ writeFileSync(join(lockdir, "sha256sum"), '#!/bin/sh\nexec shasum -a 256 "$@"\n', { mode: 0o755 });
121
+ runEnv = { ...env, PATH: `${lockdir}:${env.PATH ?? ""}` };
122
+ }
123
+ const run = spawnSync("sh", [script], { env: runEnv, stdio: "ignore" });
124
+ if (run.error || run.status !== 0) {
125
+ log?.("warn", `${cfg.label}: the sharedserver installer ran but failed`);
126
+ return undefined;
127
+ }
128
+ return probeAny(undefined, env);
129
+ }
130
+ finally {
131
+ if (haveLock) {
132
+ try {
133
+ rmSync(lockdir, { recursive: true, force: true });
134
+ }
135
+ catch {
136
+ /* best effort — a leaked lock costs the next run its bounded wait */
137
+ }
138
+ }
139
+ }
140
+ }
141
+ /** Resolve the sharedserver binary, fetching a release when nothing usable is present.
142
+ *
143
+ * Behaviourally identical to plugins/claude/bin/sharedserver — same ladder, floor,
144
+ * lock and degrade-rather-than-die fallback, so a user running both clients gets the
145
+ * same answer to "which sharedserver am I on, and why". */
146
+ export function resolveSharedserver(cfg, override, env, log, toast) {
147
+ const label = cfg.label ?? "sharedserver";
148
+ const minVersion = cfg.minVersion ?? cfg.pkgVersion ?? HARDCODED_FLOOR;
149
+ const url = cfg.installerUrl ??
150
+ (cfg.pkgVersion
151
+ ? `https://github.com/georgeharker/sharedserver/releases/download/v${cfg.pkgVersion}/sharedserver-installer.sh`
152
+ : "https://github.com/georgeharker/sharedserver/releases/latest/download/sharedserver-installer.sh");
153
+ const what = cfg.installerUrl || !cfg.pkgVersion ? "the latest release" : `v${cfg.pkgVersion}`;
154
+ const resolved = { ...cfg, label, minVersion };
155
+ const floor = parseVersion(minVersion);
156
+ // An explicit binary / SHAREDSERVER_BIN is never second-guessed: the user named a
157
+ // specific one, so quietly downloading a different one is the wrong answer.
158
+ const explicit = override ?? env.SHAREDSERVER_BIN;
159
+ if (explicit) {
160
+ const present = explicit.includes("/")
161
+ ? existsSync(explicit)
162
+ : !spawnSync(explicit, ["--version"], { stdio: "ignore", env }).error;
163
+ if (present) {
164
+ const v = versionOf(explicit, env);
165
+ if (v && floor && !gte(v, floor)) {
166
+ const msg = `${label}: sharedserver at ${explicit} is ${v.join(".")}; this plugin expects >= ${minVersion}. Using it anyway because you set it explicitly.`;
167
+ log?.("warn", msg);
168
+ toast?.("warning", msg);
169
+ }
170
+ return explicit;
171
+ }
172
+ }
173
+ const found = probeAny(override, env);
174
+ if (found) {
175
+ const v = versionOf(found, env);
176
+ if (v && floor && gte(v, floor))
177
+ return found;
178
+ // Too old: fetch, but remember this one — if the download fails we would rather
179
+ // run the old binary than nothing.
180
+ const msg = `${label}: sharedserver at ${found} is ${v?.join(".") ?? "an unknown version"}; this plugin expects >= ${minVersion}. Fetching ${what}. To keep your own build, set SHAREDSERVER_BIN=${found}`;
181
+ log?.("warn", msg);
182
+ toast?.("warning", msg);
183
+ return installPinned(resolved, url, what, env, log, toast) ?? found;
184
+ }
185
+ log?.("info", `${label}: no usable sharedserver found; fetching ${what} (one time). This needs no Rust toolchain.`);
186
+ return installPinned(resolved, url, what, env, log, toast);
187
+ }
188
+ //# sourceMappingURL=sharedserver-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedserver-resolve.js","sourceRoot":"","sources":["../src/sharedserver-resolve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geohar/opencode-mcp-combiner",
3
- "version": "0.9.4",
3
+ "version": "0.10.1",
4
4
  "description": "OpenCode plugin: run the mcp-combiner MCP aggregator via sharedserver and register its endpoint with OpenCode.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",