@mcsherrylabs/evolver-mcp 0.9.0 → 0.9.2
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/install.d.ts +44 -8
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +157 -29
- package/dist/install.js.map +1 -1
- package/package.json +1 -1
package/dist/install.d.ts
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
/** The bare command a global install's bin exposes (the package's `bin` name). */
|
|
2
|
+
export declare const FIXED_BIN_COMMAND = "evolver-mcp";
|
|
3
|
+
/** True when a global (or otherwise PATH-reachable) `evolver-mcp` EXECUTABLE already exists.
|
|
4
|
+
* Detects without installing: the package bin is a node script, so a same-named executable on
|
|
5
|
+
* PATH (or the well-known npm global prefix) counts. `probePrefix` is the `npm prefix -g` seam
|
|
6
|
+
* (injectable for tests). Returns false on every failure — the caller then falls back to the
|
|
7
|
+
* `npx` registration (always resolvable). */
|
|
8
|
+
export declare function hasGlobalBin(env: NodeJS.ProcessEnv, pathVar?: string, probePrefix?: () => string): boolean;
|
|
9
|
+
/** One-time ensure of a global `evolver-mcp` bin so the emitted registration launches a FIXED,
|
|
10
|
+
* PATH-resolved binary (instant, ~ms) instead of `npx -y …` (cold-resolves ~30s+ and can blow
|
|
11
|
+
* Claude's handshake timeout on first connect). Returns the entry command to register. Never fails
|
|
12
|
+
* hard: on any npm error we return the `npx` form, which always resolves. `spawn`/`probePrefix` are
|
|
13
|
+
* test seams. */
|
|
14
|
+
export declare function ensureGlobalBin(env: NodeJS.ProcessEnv, spawn?: (cmd: string, args: string[], opts: unknown) => {
|
|
15
|
+
status: number | null;
|
|
16
|
+
}, probePrefix?: () => string): string;
|
|
1
17
|
/** Host-published chain-API port (matches deploy/docker-compose.yml `EVOLVER_HOST_HTTP_PORT`). */
|
|
2
18
|
declare const LOCAL_HTTP_PORT: () => string;
|
|
3
19
|
/** Host-published content-listener port (matches `EVOLVER_HOST_CONTENT_PORT`). */
|
|
@@ -10,14 +26,30 @@ export { LOCAL_CHAIN_URL, LOCAL_CONTENT_PORT, LOCAL_HTTP_PORT };
|
|
|
10
26
|
* only the claim — goes to this funded devnet entry. Mirrors the compose's `DEVNET_API` default. */
|
|
11
27
|
declare const FAUCET_DEFAULT_URL = "https://devnet.mcsherrylabs.com";
|
|
12
28
|
export { FAUCET_DEFAULT_URL };
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
/** Result of parsing the install command line: the convenience flags, and the bootstrap-shaped
|
|
30
|
+
* argv (`[node, script, --target, local, …]`) to forward to runBootstrap. */
|
|
31
|
+
export interface InstallArgs {
|
|
32
|
+
readonly mcpHome: string | undefined;
|
|
33
|
+
readonly fresh: boolean;
|
|
34
|
+
readonly rest: string[];
|
|
35
|
+
}
|
|
36
|
+
export declare function parseInstallArgs(argv: string[]): InstallArgs;
|
|
37
|
+
/** List `evolver-mcp*` compose project names via `docker compose ls -a`. Runs the daemon CLI; returns
|
|
38
|
+
* [] on any failure (the `--new` path then falls back to a fresh N=2, still safe). */
|
|
39
|
+
export declare function listEvolverMcpProjects(): string[];
|
|
40
|
+
/** Chosen project name + host ports for this install. `project` derives N where
|
|
41
|
+
* http=8440+2*(N-1) and content=8450+2*(N-1); the `evolver-mcp` base is N=1 (default, no `--new`).
|
|
42
|
+
* `--new` scans existing `evolver-mcp*` projects and picks the next free N. */
|
|
43
|
+
export interface NodeAssignment {
|
|
44
|
+
readonly project: string;
|
|
45
|
+
readonly httpPort: string;
|
|
46
|
+
readonly contentPort: string;
|
|
47
|
+
}
|
|
48
|
+
/** Pick a free project name + port pair. With `fresh` (i.e. `--new`), scan `existing` project names
|
|
49
|
+
* and select `evolver-mcp<n>` where n = 1 + the highest existing numeric suffix (base name counts
|
|
50
|
+
* as 1), then derive host ports by the same index. Explicit env overrides (http/content port) are
|
|
51
|
+
* applied by the CALLER so the operator can still pin a specific N or ports. */
|
|
52
|
+
export declare function assignNode(fresh: boolean, existing: readonly string[], httpEnv?: string, contentEnv?: string): NodeAssignment;
|
|
21
53
|
interface InstallEnv {
|
|
22
54
|
/** Override the shipped compose file path (default: `../deploy/docker-compose.yml` beside dist). */
|
|
23
55
|
EVOLVER_INSTALL_COMPOSE?: string;
|
|
@@ -37,6 +69,10 @@ interface InstallEnv {
|
|
|
37
69
|
EVOLVER_FAUCET_URL?: string;
|
|
38
70
|
/** Explicit bootstrap state dir (overrides `--mcp-home`'s derived default). */
|
|
39
71
|
EVOLVER_MCP_STATE_DIR?: string;
|
|
72
|
+
/** Comma-separated existing `evolver-mcp*` project names (test seam) for `--new` auto-pick. */
|
|
73
|
+
EVOLVER_INSTALL_PROJECTS?: string;
|
|
74
|
+
/** Explicit compose project name (overrides the auto-picked name). */
|
|
75
|
+
COMPOSE_PROJECT_NAME?: string;
|
|
40
76
|
}
|
|
41
77
|
export interface InstallResult {
|
|
42
78
|
readonly exitCode: number;
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.js
CHANGED
|
@@ -17,10 +17,56 @@
|
|
|
17
17
|
// container. The MCP itself is a stdio server launched by Claude wherever Claude runs; it reaches
|
|
18
18
|
// the node on the shared loopback, so `claude mcp add` works on either side identically.
|
|
19
19
|
import { spawnSync } from "node:child_process";
|
|
20
|
-
import { existsSync } from "node:fs";
|
|
20
|
+
import { existsSync, statSync } from "node:fs";
|
|
21
21
|
import { dirname, join, resolve } from "node:path";
|
|
22
22
|
import { fileURLToPath } from "node:url";
|
|
23
23
|
import { runBootstrap } from "./bootstrap.js";
|
|
24
|
+
/** The name of the package's own bin (`bin.evolver-mcp`), and the fixed command the registration
|
|
25
|
+
* should launch when the globally-installed binary is preferred over `npx`. */
|
|
26
|
+
const PACKAGE_NAME = "@mcsherrylabs/evolver-mcp";
|
|
27
|
+
/** The bare command a global install's bin exposes (the package's `bin` name). */
|
|
28
|
+
export const FIXED_BIN_COMMAND = "evolver-mcp";
|
|
29
|
+
/** True when a global (or otherwise PATH-reachable) `evolver-mcp` EXECUTABLE already exists.
|
|
30
|
+
* Detects without installing: the package bin is a node script, so a same-named executable on
|
|
31
|
+
* PATH (or the well-known npm global prefix) counts. `probePrefix` is the `npm prefix -g` seam
|
|
32
|
+
* (injectable for tests). Returns false on every failure — the caller then falls back to the
|
|
33
|
+
* `npx` registration (always resolvable). */
|
|
34
|
+
export function hasGlobalBin(env, pathVar = env.PATH ?? "", probePrefix = () => {
|
|
35
|
+
const prefixProbe = spawnSync("npm", ["prefix", "-g"], { encoding: "utf8" });
|
|
36
|
+
return prefixProbe.status === 0 ? (prefixProbe.stdout || "").trim() : "";
|
|
37
|
+
}) {
|
|
38
|
+
const candidates = new Set();
|
|
39
|
+
for (const dir of pathVar.split(":")) {
|
|
40
|
+
if (dir === "")
|
|
41
|
+
continue;
|
|
42
|
+
candidates.add(join(dir, FIXED_BIN_COMMAND));
|
|
43
|
+
}
|
|
44
|
+
// npm's global prefix (even if absent from this process's PATH): the bin lands in <prefix>/bin.
|
|
45
|
+
const prefix = probePrefix();
|
|
46
|
+
if (prefix)
|
|
47
|
+
candidates.add(join(prefix, "bin", FIXED_BIN_COMMAND));
|
|
48
|
+
for (const p of candidates) {
|
|
49
|
+
try {
|
|
50
|
+
if (statSync(p).isFile())
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch { /* not present */ }
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
/** One-time ensure of a global `evolver-mcp` bin so the emitted registration launches a FIXED,
|
|
58
|
+
* PATH-resolved binary (instant, ~ms) instead of `npx -y …` (cold-resolves ~30s+ and can blow
|
|
59
|
+
* Claude's handshake timeout on first connect). Returns the entry command to register. Never fails
|
|
60
|
+
* hard: on any npm error we return the `npx` form, which always resolves. `spawn`/`probePrefix` are
|
|
61
|
+
* test seams. */
|
|
62
|
+
export function ensureGlobalBin(env, spawn = spawnSync, probePrefix) {
|
|
63
|
+
if (hasGlobalBin(env, env.PATH ?? "", probePrefix))
|
|
64
|
+
return FIXED_BIN_COMMAND;
|
|
65
|
+
const r = spawn("npm", ["install", "-g", PACKAGE_NAME], { encoding: "utf8", env: { ...process.env, ...env } });
|
|
66
|
+
if (r.status !== 0)
|
|
67
|
+
return `npx -y ${PACKAGE_NAME}`;
|
|
68
|
+
return hasGlobalBin(env, env.PATH ?? "", probePrefix) ? FIXED_BIN_COMMAND : `npx -y ${PACKAGE_NAME}`;
|
|
69
|
+
}
|
|
24
70
|
/** The node's chain-API host the install bootstrap targets, per B1 (loopback publish). */
|
|
25
71
|
const LOCAL_NODE_HOST = "127.0.0.1";
|
|
26
72
|
/** Host-published chain-API port (matches deploy/docker-compose.yml `EVOLVER_HOST_HTTP_PORT`). */
|
|
@@ -40,38 +86,91 @@ export { FAUCET_DEFAULT_URL };
|
|
|
40
86
|
* machine where `install` runs (Claude in a container with a bind-mounted `$HOME`). Unset means
|
|
41
87
|
* "same machine, same `$HOME`" — the default, and the correct non-container case. */
|
|
42
88
|
const MCP_HOME_FLAG = "--mcp-home";
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
89
|
+
/** `--new`: instead of using/creating the default `evolver-mcp` project, AUTO-PICK a free project
|
|
90
|
+
* name (`evolver-mcp<n>`) and clashing-free host ports (8440→8442→8444…, 8450→8451→8453…), so a
|
|
91
|
+
* second (or Nth) independent node needs no manual port/project typing. Explicit env vars still win. */
|
|
92
|
+
const NEW_FLAG = "--new";
|
|
93
|
+
/** `--keep-npx`: keep the `npx -y …` registration instead of installing/preferring the global
|
|
94
|
+
* `evolver-mcp` binary. Install-only; stripped before forwarding to the bootstrap. */
|
|
95
|
+
const KEEP_NPX_FLAG = "--keep-npx";
|
|
96
|
+
export function parseInstallArgs(argv) {
|
|
48
97
|
let mcpHome;
|
|
98
|
+
let fresh = false;
|
|
49
99
|
const rest = [];
|
|
50
100
|
for (let i = 0; i < argv.length; i++) {
|
|
51
101
|
const a = argv[i];
|
|
52
102
|
if (a === MCP_HOME_FLAG) {
|
|
53
103
|
mcpHome = argv[++i];
|
|
54
104
|
if (mcpHome === undefined)
|
|
55
|
-
return { mcpHome: undefined, rest: argv };
|
|
105
|
+
return { mcpHome: undefined, fresh, rest: argv };
|
|
56
106
|
continue;
|
|
57
107
|
}
|
|
58
108
|
if (a.startsWith(`${MCP_HOME_FLAG}=`)) {
|
|
59
109
|
mcpHome = a.slice(MCP_HOME_FLAG.length + 1);
|
|
60
110
|
continue;
|
|
61
111
|
}
|
|
112
|
+
if (a === NEW_FLAG) {
|
|
113
|
+
fresh = true;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (a === KEEP_NPX_FLAG)
|
|
117
|
+
continue;
|
|
62
118
|
if (a === "install")
|
|
63
119
|
continue; // the subcommand token, not a bootstrap flag
|
|
64
120
|
rest.push(a);
|
|
65
121
|
}
|
|
66
|
-
// Force the local target: install always bootstraps against the node it just started. Skip only
|
|
67
|
-
// if the operator already named one (their choice wins — but a non-local target would be wrong).
|
|
68
122
|
const targetIdx = rest.indexOf("--target");
|
|
69
123
|
const hasTarget = targetIdx >= 0 || rest.some((x) => x.startsWith("--target="));
|
|
70
124
|
if (!hasTarget) {
|
|
71
|
-
// insert after [node, script] (indices 0,1) so parseBootstrapArgs picks it up at index 2+
|
|
72
125
|
rest.splice(2, 0, "--target", "local");
|
|
73
126
|
}
|
|
74
|
-
return { mcpHome, rest };
|
|
127
|
+
return { mcpHome, fresh, rest };
|
|
128
|
+
}
|
|
129
|
+
/** List `evolver-mcp*` compose project names via `docker compose ls -a`. Runs the daemon CLI; returns
|
|
130
|
+
* [] on any failure (the `--new` path then falls back to a fresh N=2, still safe). */
|
|
131
|
+
export function listEvolverMcpProjects() {
|
|
132
|
+
const r = spawnSync("docker", ["compose", "ls", "-a"], { encoding: "utf8" });
|
|
133
|
+
if (r.status !== 0)
|
|
134
|
+
return [];
|
|
135
|
+
const out = r.stdout || "";
|
|
136
|
+
const names = [];
|
|
137
|
+
for (const line of out.split("\n")) {
|
|
138
|
+
const m = /^(evolver-mcp\d*)\s/.exec(line.trimStart());
|
|
139
|
+
if (m)
|
|
140
|
+
names.push(m[1]);
|
|
141
|
+
}
|
|
142
|
+
return names;
|
|
143
|
+
}
|
|
144
|
+
const BASE_PROJECT_NAME = "evolver-mcp";
|
|
145
|
+
const HTTP_PORT_BASE = 8440;
|
|
146
|
+
const CONTENT_PORT_BASE = 8450;
|
|
147
|
+
/** Pick a free project name + port pair. With `fresh` (i.e. `--new`), scan `existing` project names
|
|
148
|
+
* and select `evolver-mcp<n>` where n = 1 + the highest existing numeric suffix (base name counts
|
|
149
|
+
* as 1), then derive host ports by the same index. Explicit env overrides (http/content port) are
|
|
150
|
+
* applied by the CALLER so the operator can still pin a specific N or ports. */
|
|
151
|
+
export function assignNode(fresh, existing, httpEnv, contentEnv) {
|
|
152
|
+
if (httpEnv !== undefined || contentEnv !== undefined) {
|
|
153
|
+
// Operator pinned a port (or both): honor it verbatim; keep the project name decision below.
|
|
154
|
+
// A pin means they want THIS node on a specific port; still bump N if `fresh`.
|
|
155
|
+
}
|
|
156
|
+
let n = 1;
|
|
157
|
+
if (fresh) {
|
|
158
|
+
const suffixes = [1]; // the base name occupies index 1
|
|
159
|
+
const re = new RegExp(`^${BASE_PROJECT_NAME}(\\d*)$`);
|
|
160
|
+
for (const name of existing) {
|
|
161
|
+
const m = re.exec(name);
|
|
162
|
+
if (!m)
|
|
163
|
+
continue;
|
|
164
|
+
const s = m[1] === "" ? 1 : Number(m[1]);
|
|
165
|
+
if (Number.isFinite(s) && s > 0)
|
|
166
|
+
suffixes.push(s);
|
|
167
|
+
}
|
|
168
|
+
n = Math.max(...suffixes) + 1;
|
|
169
|
+
}
|
|
170
|
+
const project = n === 1 ? BASE_PROJECT_NAME : `${BASE_PROJECT_NAME}${n}`;
|
|
171
|
+
const httpPort = httpEnv?.trim() || String(HTTP_PORT_BASE + 2 * (n - 1));
|
|
172
|
+
const contentPort = contentEnv?.trim() || String(CONTENT_PORT_BASE + 2 * (n - 1));
|
|
173
|
+
return { project, httpPort, contentPort };
|
|
75
174
|
}
|
|
76
175
|
/** Translate a `--mcp-home` value into the `EVOLVER_MCP_STATE_DIR` the bootstrap should derive,
|
|
77
176
|
* i.e. `<home>/.local/state/evolver-mcp/local` (mirroring stateDirFor's default). Only a
|
|
@@ -100,18 +199,32 @@ export async function runInstall(argv, env) {
|
|
|
100
199
|
output: `install: the node compose file is missing at ${composeFile} — the published package must ship deploy/ (see package.json "files").\n`,
|
|
101
200
|
};
|
|
102
201
|
}
|
|
103
|
-
// Parse `--mcp-home` (and the `install` token / forced `--target local`) up front, so a
|
|
104
|
-
// flag fails fast instead of after the node boot.
|
|
105
|
-
const { mcpHome, rest } =
|
|
202
|
+
// Parse `--mcp-home` / `--new` (and the `install` token / forced `--target local`) up front, so a
|
|
203
|
+
// malformed flag fails fast instead of after the node boot.
|
|
204
|
+
const { mcpHome, fresh, rest } = parseInstallArgs(argv);
|
|
106
205
|
if (argv.includes(MCP_HOME_FLAG) && (mcpHome === undefined || mcpHome.trim() === "")) {
|
|
107
206
|
return { exitCode: 1, toStderr: true, output: `install: ${MCP_HOME_FLAG} needs a value (Claude's $HOME, e.g. /home/rig)\n` };
|
|
108
207
|
}
|
|
208
|
+
// Decide WHERE this node lives: default project `evolver-mcp` on 8440/8450; `--new` auto-picks the
|
|
209
|
+
// next project name + non-clashing host ports from what is already deployed. Explicit env vars
|
|
210
|
+
// (EVOLVER_HOST_HTTP_PORT / EVOLVER_HOST_CONTENT_PORT / COMPOSE_PROJECT_NAME) always override.
|
|
211
|
+
const existing = fresh ? (env.EVOLVER_INSTALL_PROJECTS?.split(",").map((s) => s.trim()).filter(Boolean) ?? listEvolverMcpProjects()) : [];
|
|
212
|
+
const assignment = assignNode(fresh, existing, env.EVOLVER_HOST_HTTP_PORT, env.EVOLVER_HOST_CONTENT_PORT);
|
|
213
|
+
// A pinned COMPOSE_PROJECT_NAME (operator-set) wins over the auto-picked project.
|
|
214
|
+
const projectName = env.COMPOSE_PROJECT_NAME?.trim() || assignment.project;
|
|
109
215
|
// 1. Start the follower node (claims its own identity on devnet, then syncs from block 0).
|
|
110
216
|
// `--build` builds the config-bearing image (deploy/Dockerfile) on first use; the config is
|
|
111
|
-
// baked in, so no host bind-mount and no checkout-path dependency.
|
|
217
|
+
// baked in, so no host bind-mount and no checkout-path dependency. The project name + host
|
|
218
|
+
// ports are the SAME values the compose file consumes, so a second node is fully self-contained.
|
|
112
219
|
const up = spawnSync("docker", ["compose", "-f", composeFile, "up", "-d", "--build", "node"], {
|
|
113
220
|
encoding: "utf8",
|
|
114
|
-
env: {
|
|
221
|
+
env: {
|
|
222
|
+
...process.env,
|
|
223
|
+
...env,
|
|
224
|
+
COMPOSE_PROJECT_NAME: projectName,
|
|
225
|
+
EVOLVER_HOST_HTTP_PORT: assignment.httpPort,
|
|
226
|
+
EVOLVER_HOST_CONTENT_PORT: assignment.contentPort,
|
|
227
|
+
},
|
|
115
228
|
});
|
|
116
229
|
if (up.status !== 0) {
|
|
117
230
|
return {
|
|
@@ -121,13 +234,14 @@ export async function runInstall(argv, env) {
|
|
|
121
234
|
};
|
|
122
235
|
}
|
|
123
236
|
// 2. Wait for the node to answer its chain API before bootstrapping against it.
|
|
124
|
-
const
|
|
237
|
+
const devHttpPort = env.EVOLVER_HOST_HTTP_PORT?.trim() || assignment.httpPort;
|
|
238
|
+
const healthUrl = env.EVOLVER_INSTALL_HEALTH_URL?.trim() || `http://${LOCAL_NODE_HOST}:${devHttpPort}${HEALTH_PATH}`;
|
|
125
239
|
const timeoutMs = Number(env.EVOLVER_INSTALL_TIMEOUT_MS ?? "120000");
|
|
126
240
|
const ok = await waitHealthy(healthUrl, timeoutMs);
|
|
127
241
|
if (!ok) {
|
|
128
242
|
const logs = spawnSync("docker", ["compose", "-f", composeFile, "logs", "--tail", "40", "node"], {
|
|
129
243
|
encoding: "utf8",
|
|
130
|
-
env: { ...process.env, ...env },
|
|
244
|
+
env: { ...process.env, ...env, COMPOSE_PROJECT_NAME: projectName },
|
|
131
245
|
});
|
|
132
246
|
return {
|
|
133
247
|
exitCode: 1,
|
|
@@ -136,20 +250,34 @@ export async function runInstall(argv, env) {
|
|
|
136
250
|
};
|
|
137
251
|
}
|
|
138
252
|
// 3. Bootstrap the SEPARATE agent identity against the local node. `--target local` +
|
|
139
|
-
// EVOLVER_NODE=http://127.0.0.1
|
|
140
|
-
// EVOLVER_CONTENT_URL=http://127.0.0.1
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
//
|
|
145
|
-
//
|
|
146
|
-
//
|
|
147
|
-
//
|
|
253
|
+
// EVOLVER_NODE=http://127.0.0.1:<httpPort> makes the bootstrap derive
|
|
254
|
+
// EVOLVER_CONTENT_URL=http://127.0.0.1:<contentPort> (the local node's content listener). Both
|
|
255
|
+
// derive from the SAME assignment the compose received, so a `--new` node bootstraps against its
|
|
256
|
+
// own non-clashing ports with no operator input.
|
|
257
|
+
const devContentPort = env.EVOLVER_HOST_CONTENT_PORT?.trim() || assignment.contentPort;
|
|
258
|
+
// Entry command (registration laziness): prefer a FIXED global bin (instant) over `npx -y …`,
|
|
259
|
+
// which cold-resolves ~30s+ and blows the Claude handshake timeout on first connect. This
|
|
260
|
+
// OVERRIDES the `npx` default cli.ts injected, so the printed `claude mcp add` names `evolver-mcp`
|
|
261
|
+
// directly. `--keep-npx` (or an explicit EVOLVER_MCP_ENTRY_COMMAND via the env) declines the global
|
|
262
|
+
// install and keeps the npx form verbatim.
|
|
263
|
+
const wantsNpx = argv.includes("--keep-npx") || env.EVOLVER_MCP_ENTRY_COMMAND?.includes("npx");
|
|
264
|
+
let entryCommand;
|
|
265
|
+
if (env.EVOLVER_MCP_ENTRY_COMMAND && env.EVOLVER_MCP_ENTRY_COMMAND !== `npx -y ${PACKAGE_NAME}`) {
|
|
266
|
+
// Operator already chose a non-default entry command; honor it exactly.
|
|
267
|
+
entryCommand = env.EVOLVER_MCP_ENTRY_COMMAND;
|
|
268
|
+
}
|
|
269
|
+
else if (wantsNpx) {
|
|
270
|
+
entryCommand = `npx -y ${PACKAGE_NAME}`;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
entryCommand = ensureGlobalBin(env);
|
|
274
|
+
}
|
|
148
275
|
const nodeEnv = {
|
|
149
276
|
...process.env,
|
|
150
277
|
...env,
|
|
151
|
-
EVOLVER_NODE: env.EVOLVER_NODE ??
|
|
152
|
-
EVOLVER_CONTENT_URL: env.EVOLVER_CONTENT_URL ?? `http://${LOCAL_NODE_HOST}:${
|
|
278
|
+
EVOLVER_NODE: env.EVOLVER_NODE ?? `http://${LOCAL_NODE_HOST}:${devHttpPort}`,
|
|
279
|
+
EVOLVER_CONTENT_URL: env.EVOLVER_CONTENT_URL ?? `http://${LOCAL_NODE_HOST}:${devContentPort}`,
|
|
280
|
+
EVOLVER_MCP_ENTRY_COMMAND: entryCommand,
|
|
153
281
|
// The claim is sponsored by the FUNDED faucet, never the fresh local node (which is empty and
|
|
154
282
|
// would refuse `node_underfunded`). An operator's explicit EVOLVER_FAUCET_URL still wins.
|
|
155
283
|
EVOLVER_FAUCET_URL: env.EVOLVER_FAUCET_URL ?? FAUCET_DEFAULT_URL,
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcsherrylabs/evolver-mcp",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "MCP server over a configurable Evolver node — read the chain, sign a transfer, administer what you own, write to a channel, submit a signed transaction. Wraps @mcsherrylabs/evolver-client; implements no wire format of its own.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|