@mcsherrylabs/evolver-mcp 0.8.9 → 0.9.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.
@@ -75,17 +75,24 @@ services:
75
75
  retries: 30
76
76
  start_period: 30s
77
77
  # ⚠️ PUBLISHED LOOPBACK-ONLY (B1: the frictionless single-box install path). The host-side
78
- # `npx … install` bootstrap reaches the node at http://127.0.0.1:8440 (chain API) and
79
- # http://127.0.0.1:8450 (content) after `up -d node`. Nothing leaves the machine: `host_ip:
80
- # 127.0.0.1` keeps both listeners local, and the node's p2p/TLS listeners stay unpublished
81
- # (they are for PEERS, reached over the compose network's DNS).
78
+ # `npx … install` bootstrap reaches the node at http://127.0.0.1:${EVOLVER_HOST_HTTP_PORT:-8440}
79
+ # (chain API) and http://127.0.0.1:${EVOLVER_HOST_CONTENT_PORT:-8450} (content) after `up -d
80
+ # node`. Nothing leaves the machine: `host_ip: 127.0.0.1` keeps both listeners local, and the
81
+ # node's p2p/TLS listeners stay unpublished (they are for PEERS, reached over the compose
82
+ # network's DNS).
83
+ #
84
+ # TWO NODES ON ONE HOST: the node ALWAYS binds 8440/8450 internally (node.conf, baked into the
85
+ # image — not env-overridable), so `target` stays fixed at those; only the PUBLISHED host port
86
+ # varies. Give a second install non-clashing host ports via
87
+ # EVOLVER_HOST_HTTP_PORT=8442 EVOLVER_HOST_CONTENT_PORT=8451 COMPOSE_PROJECT_NAME=evolver-mcp2
88
+ # and `install` must be run with the SAME two values (it polls + bootstraps against them).
82
89
  ports:
83
90
  - target: 8440
84
- published: "8440"
91
+ published: "${EVOLVER_HOST_HTTP_PORT:-8440}"
85
92
  host_ip: 127.0.0.1
86
93
  protocol: tcp
87
94
  - target: 8450
88
- published: "8450"
95
+ published: "${EVOLVER_HOST_CONTENT_PORT:-8450}"
89
96
  host_ip: 127.0.0.1
90
97
  protocol: tcp
91
98
 
package/dist/install.d.ts CHANGED
@@ -1,17 +1,39 @@
1
+ /** Host-published chain-API port (matches deploy/docker-compose.yml `EVOLVER_HOST_HTTP_PORT`). */
2
+ declare const LOCAL_HTTP_PORT: () => string;
3
+ /** Host-published content-listener port (matches `EVOLVER_HOST_CONTENT_PORT`). */
4
+ declare const LOCAL_CONTENT_PORT: () => string;
5
+ declare const LOCAL_CHAIN_URL: () => string;
6
+ export { LOCAL_CHAIN_URL, LOCAL_CONTENT_PORT, LOCAL_HTTP_PORT };
1
7
  /** The WELL-FUNDED faucet origin that sponsors the AGENT identity claim. The node the install
2
8
  * starts is a fresh follower with an empty wallet, so it cannot sponsor the claim (it would
3
9
  * answer `node_underfunded`, need 5100 tokens). Chain reads go to the local node; the CLAIM — and
4
10
  * only the claim — goes to this funded devnet entry. Mirrors the compose's `DEVNET_API` default. */
5
11
  declare const FAUCET_DEFAULT_URL = "https://devnet.mcsherrylabs.com";
6
12
  export { FAUCET_DEFAULT_URL };
7
- /** Split `--mcp-home <dir>` / `--mcp-home=<dir>` out of argv, returning the value (or undefined)
8
- * and the argv with the flag + its value removed (so the forwarded bootstrap never sees it). Also
9
- * drops the `install` subcommand token and forces `--target local`, yielding bootstrap-shaped argv
10
- * (`[node, script, --target, local, …]`) the forwarded runBootstrap parses from index 2. */
11
- export declare function parseMcpHome(argv: string[]): {
12
- mcpHome: string | undefined;
13
- rest: string[];
14
- };
13
+ /** Result of parsing the install command line: the convenience flags, and the bootstrap-shaped
14
+ * argv (`[node, script, --target, local, …]`) to forward to runBootstrap. */
15
+ export interface InstallArgs {
16
+ readonly mcpHome: string | undefined;
17
+ readonly fresh: boolean;
18
+ readonly rest: string[];
19
+ }
20
+ export declare function parseInstallArgs(argv: string[]): InstallArgs;
21
+ /** List `evolver-mcp*` compose project names via `docker compose ls -a`. Runs the daemon CLI; returns
22
+ * [] on any failure (the `--new` path then falls back to a fresh N=2, still safe). */
23
+ export declare function listEvolverMcpProjects(): string[];
24
+ /** Chosen project name + host ports for this install. `project` derives N where
25
+ * http=8440+2*(N-1) and content=8450+2*(N-1); the `evolver-mcp` base is N=1 (default, no `--new`).
26
+ * `--new` scans existing `evolver-mcp*` projects and picks the next free N. */
27
+ export interface NodeAssignment {
28
+ readonly project: string;
29
+ readonly httpPort: string;
30
+ readonly contentPort: string;
31
+ }
32
+ /** Pick a free project name + port pair. With `fresh` (i.e. `--new`), scan `existing` project names
33
+ * and select `evolver-mcp<n>` where n = 1 + the highest existing numeric suffix (base name counts
34
+ * as 1), then derive host ports by the same index. Explicit env overrides (http/content port) are
35
+ * applied by the CALLER so the operator can still pin a specific N or ports. */
36
+ export declare function assignNode(fresh: boolean, existing: readonly string[], httpEnv?: string, contentEnv?: string): NodeAssignment;
15
37
  interface InstallEnv {
16
38
  /** Override the shipped compose file path (default: `../deploy/docker-compose.yml` beside dist). */
17
39
  EVOLVER_INSTALL_COMPOSE?: string;
@@ -21,10 +43,20 @@ interface InstallEnv {
21
43
  EVOLVER_INSTALL_HEALTH_URL?: string;
22
44
  /** Chain-API URL the bootstrap reads from (default LOCAL_CHAIN_URL = local node loopback). */
23
45
  EVOLVER_NODE?: string;
46
+ /** Content-listener URL the bootstrap derives (default loopback content port). */
47
+ EVOLVER_CONTENT_URL?: string;
48
+ /** Host-published chain-API port for THIS node (default 8440; vary for a 2nd node). */
49
+ EVOLVER_HOST_HTTP_PORT?: string;
50
+ /** Host-published content port for THIS node (default 8450; vary for a 2nd node). */
51
+ EVOLVER_HOST_CONTENT_PORT?: string;
24
52
  /** Funded faucet origin for the AGENT identity claim (default devnet). */
25
53
  EVOLVER_FAUCET_URL?: string;
26
54
  /** Explicit bootstrap state dir (overrides `--mcp-home`'s derived default). */
27
55
  EVOLVER_MCP_STATE_DIR?: string;
56
+ /** Comma-separated existing `evolver-mcp*` project names (test seam) for `--new` auto-pick. */
57
+ EVOLVER_INSTALL_PROJECTS?: string;
58
+ /** Explicit compose project name (overrides the auto-picked name). */
59
+ COMPOSE_PROJECT_NAME?: string;
28
60
  }
29
61
  export interface InstallResult {
30
62
  readonly exitCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AA+BA;;;qGAGqG;AACrG,QAAA,MAAM,kBAAkB,oCAAoC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAO9B;;;6FAG6F;AAC7F,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,GACb;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CA0BjD;AASD,UAAU,UAAU;IAClB,oGAAoG;IACpG,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kDAAkD;IAClD,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kGAAkG;IAClG,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,6FAA6F;AAC7F,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAClC,OAAO,CAAC,aAAa,CAAC,CAsExB"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AA4BA,kGAAkG;AAClG,QAAA,MAAM,eAAe,cAA6D,CAAC;AACnF,kFAAkF;AAClF,QAAA,MAAM,kBAAkB,cAAgE,CAAC;AACzF,QAAA,MAAM,eAAe,cAAyD,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC;AAEhE;;;qGAGqG;AACrG,QAAA,MAAM,kBAAkB,oCAAoC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAY9B;8EAC8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;CACzB;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAyB5D;AAED;uFACuF;AACvF,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAUjD;AAMD;;gFAEgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;iFAGiF;AACjF,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAqBhB;AASD,UAAU,UAAU;IAClB,oGAAoG;IACpG,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kDAAkD;IAClD,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kGAAkG;IAClG,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qFAAqF;IACrF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,6FAA6F;AAC7F,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAClC,OAAO,CAAC,aAAa,CAAC,CA0FxB"}
package/dist/install.js CHANGED
@@ -23,8 +23,13 @@ import { fileURLToPath } from "node:url";
23
23
  import { runBootstrap } from "./bootstrap.js";
24
24
  /** The node's chain-API host the install bootstrap targets, per B1 (loopback publish). */
25
25
  const LOCAL_NODE_HOST = "127.0.0.1";
26
- const LOCAL_CHAIN_URL = `http://${LOCAL_NODE_HOST}:8440`;
26
+ /** Host-published chain-API port (matches deploy/docker-compose.yml `EVOLVER_HOST_HTTP_PORT`). */
27
+ const LOCAL_HTTP_PORT = () => process.env.EVOLVER_HOST_HTTP_PORT?.trim() || "8440";
28
+ /** Host-published content-listener port (matches `EVOLVER_HOST_CONTENT_PORT`). */
29
+ const LOCAL_CONTENT_PORT = () => process.env.EVOLVER_HOST_CONTENT_PORT?.trim() || "8450";
30
+ const LOCAL_CHAIN_URL = () => `http://${LOCAL_NODE_HOST}:${LOCAL_HTTP_PORT()}`;
27
31
  const HEALTH_PATH = "/api/explorer/blocks?limit=1";
32
+ export { LOCAL_CHAIN_URL, LOCAL_CONTENT_PORT, LOCAL_HTTP_PORT };
28
33
  /** The WELL-FUNDED faucet origin that sponsors the AGENT identity claim. The node the install
29
34
  * starts is a fresh follower with an empty wallet, so it cannot sponsor the claim (it would
30
35
  * answer `node_underfunded`, need 5100 tokens). Chain reads go to the local node; the CLAIM — and
@@ -35,38 +40,86 @@ export { FAUCET_DEFAULT_URL };
35
40
  * machine where `install` runs (Claude in a container with a bind-mounted `$HOME`). Unset means
36
41
  * "same machine, same `$HOME`" — the default, and the correct non-container case. */
37
42
  const MCP_HOME_FLAG = "--mcp-home";
38
- /** Split `--mcp-home <dir>` / `--mcp-home=<dir>` out of argv, returning the value (or undefined)
39
- * and the argv with the flag + its value removed (so the forwarded bootstrap never sees it). Also
40
- * drops the `install` subcommand token and forces `--target local`, yielding bootstrap-shaped argv
41
- * (`[node, script, --target, local, …]`) the forwarded runBootstrap parses from index 2. */
42
- export function parseMcpHome(argv) {
43
+ /** `--new`: instead of using/creating the default `evolver-mcp` project, AUTO-PICK a free project
44
+ * name (`evolver-mcp<n>`) and clashing-free host ports (8440→8442→8444…, 8450→8451→8453…), so a
45
+ * second (or Nth) independent node needs no manual port/project typing. Explicit env vars still win. */
46
+ const NEW_FLAG = "--new";
47
+ export function parseInstallArgs(argv) {
43
48
  let mcpHome;
49
+ let fresh = false;
44
50
  const rest = [];
45
51
  for (let i = 0; i < argv.length; i++) {
46
52
  const a = argv[i];
47
53
  if (a === MCP_HOME_FLAG) {
48
54
  mcpHome = argv[++i];
49
55
  if (mcpHome === undefined)
50
- return { mcpHome: undefined, rest: argv }; // leave to install's error path
56
+ return { mcpHome: undefined, fresh, rest: argv };
51
57
  continue;
52
58
  }
53
59
  if (a.startsWith(`${MCP_HOME_FLAG}=`)) {
54
60
  mcpHome = a.slice(MCP_HOME_FLAG.length + 1);
55
61
  continue;
56
62
  }
63
+ if (a === NEW_FLAG) {
64
+ fresh = true;
65
+ continue;
66
+ }
57
67
  if (a === "install")
58
68
  continue; // the subcommand token, not a bootstrap flag
59
69
  rest.push(a);
60
70
  }
61
- // Force the local target: install always bootstraps against the node it just started. Skip only
62
- // if the operator already named one (their choice wins — but a non-local target would be wrong).
63
71
  const targetIdx = rest.indexOf("--target");
64
72
  const hasTarget = targetIdx >= 0 || rest.some((x) => x.startsWith("--target="));
65
73
  if (!hasTarget) {
66
- // insert after [node, script] (indices 0,1) so parseBootstrapArgs picks it up at index 2+
67
74
  rest.splice(2, 0, "--target", "local");
68
75
  }
69
- return { mcpHome, rest };
76
+ return { mcpHome, fresh, rest };
77
+ }
78
+ /** List `evolver-mcp*` compose project names via `docker compose ls -a`. Runs the daemon CLI; returns
79
+ * [] on any failure (the `--new` path then falls back to a fresh N=2, still safe). */
80
+ export function listEvolverMcpProjects() {
81
+ const r = spawnSync("docker", ["compose", "ls", "-a"], { encoding: "utf8" });
82
+ if (r.status !== 0)
83
+ return [];
84
+ const out = r.stdout || "";
85
+ const names = [];
86
+ for (const line of out.split("\n")) {
87
+ const m = /^(evolver-mcp\d*)\s/.exec(line.trimStart());
88
+ if (m)
89
+ names.push(m[1]);
90
+ }
91
+ return names;
92
+ }
93
+ const BASE_PROJECT_NAME = "evolver-mcp";
94
+ const HTTP_PORT_BASE = 8440;
95
+ const CONTENT_PORT_BASE = 8450;
96
+ /** Pick a free project name + port pair. With `fresh` (i.e. `--new`), scan `existing` project names
97
+ * and select `evolver-mcp<n>` where n = 1 + the highest existing numeric suffix (base name counts
98
+ * as 1), then derive host ports by the same index. Explicit env overrides (http/content port) are
99
+ * applied by the CALLER so the operator can still pin a specific N or ports. */
100
+ export function assignNode(fresh, existing, httpEnv, contentEnv) {
101
+ if (httpEnv !== undefined || contentEnv !== undefined) {
102
+ // Operator pinned a port (or both): honor it verbatim; keep the project name decision below.
103
+ // A pin means they want THIS node on a specific port; still bump N if `fresh`.
104
+ }
105
+ let n = 1;
106
+ if (fresh) {
107
+ const suffixes = [1]; // the base name occupies index 1
108
+ const re = new RegExp(`^${BASE_PROJECT_NAME}(\\d*)$`);
109
+ for (const name of existing) {
110
+ const m = re.exec(name);
111
+ if (!m)
112
+ continue;
113
+ const s = m[1] === "" ? 1 : Number(m[1]);
114
+ if (Number.isFinite(s) && s > 0)
115
+ suffixes.push(s);
116
+ }
117
+ n = Math.max(...suffixes) + 1;
118
+ }
119
+ const project = n === 1 ? BASE_PROJECT_NAME : `${BASE_PROJECT_NAME}${n}`;
120
+ const httpPort = httpEnv?.trim() || String(HTTP_PORT_BASE + 2 * (n - 1));
121
+ const contentPort = contentEnv?.trim() || String(CONTENT_PORT_BASE + 2 * (n - 1));
122
+ return { project, httpPort, contentPort };
70
123
  }
71
124
  /** Translate a `--mcp-home` value into the `EVOLVER_MCP_STATE_DIR` the bootstrap should derive,
72
125
  * i.e. `<home>/.local/state/evolver-mcp/local` (mirroring stateDirFor's default). Only a
@@ -95,18 +148,32 @@ export async function runInstall(argv, env) {
95
148
  output: `install: the node compose file is missing at ${composeFile} — the published package must ship deploy/ (see package.json "files").\n`,
96
149
  };
97
150
  }
98
- // Parse `--mcp-home` (and the `install` token / forced `--target local`) up front, so a malformed
99
- // flag fails fast instead of after the node boot.
100
- const { mcpHome, rest } = parseMcpHome(argv);
151
+ // Parse `--mcp-home` / `--new` (and the `install` token / forced `--target local`) up front, so a
152
+ // malformed flag fails fast instead of after the node boot.
153
+ const { mcpHome, fresh, rest } = parseInstallArgs(argv);
101
154
  if (argv.includes(MCP_HOME_FLAG) && (mcpHome === undefined || mcpHome.trim() === "")) {
102
155
  return { exitCode: 1, toStderr: true, output: `install: ${MCP_HOME_FLAG} needs a value (Claude's $HOME, e.g. /home/rig)\n` };
103
156
  }
157
+ // Decide WHERE this node lives: default project `evolver-mcp` on 8440/8450; `--new` auto-picks the
158
+ // next project name + non-clashing host ports from what is already deployed. Explicit env vars
159
+ // (EVOLVER_HOST_HTTP_PORT / EVOLVER_HOST_CONTENT_PORT / COMPOSE_PROJECT_NAME) always override.
160
+ const existing = fresh ? (env.EVOLVER_INSTALL_PROJECTS?.split(",").map((s) => s.trim()).filter(Boolean) ?? listEvolverMcpProjects()) : [];
161
+ const assignment = assignNode(fresh, existing, env.EVOLVER_HOST_HTTP_PORT, env.EVOLVER_HOST_CONTENT_PORT);
162
+ // A pinned COMPOSE_PROJECT_NAME (operator-set) wins over the auto-picked project.
163
+ const projectName = env.COMPOSE_PROJECT_NAME?.trim() || assignment.project;
104
164
  // 1. Start the follower node (claims its own identity on devnet, then syncs from block 0).
105
165
  // `--build` builds the config-bearing image (deploy/Dockerfile) on first use; the config is
106
- // baked in, so no host bind-mount and no checkout-path dependency.
166
+ // baked in, so no host bind-mount and no checkout-path dependency. The project name + host
167
+ // ports are the SAME values the compose file consumes, so a second node is fully self-contained.
107
168
  const up = spawnSync("docker", ["compose", "-f", composeFile, "up", "-d", "--build", "node"], {
108
169
  encoding: "utf8",
109
- env: { ...process.env, ...env },
170
+ env: {
171
+ ...process.env,
172
+ ...env,
173
+ COMPOSE_PROJECT_NAME: projectName,
174
+ EVOLVER_HOST_HTTP_PORT: assignment.httpPort,
175
+ EVOLVER_HOST_CONTENT_PORT: assignment.contentPort,
176
+ },
110
177
  });
111
178
  if (up.status !== 0) {
112
179
  return {
@@ -116,13 +183,14 @@ export async function runInstall(argv, env) {
116
183
  };
117
184
  }
118
185
  // 2. Wait for the node to answer its chain API before bootstrapping against it.
119
- const healthUrl = env.EVOLVER_INSTALL_HEALTH_URL?.trim() || LOCAL_CHAIN_URL + HEALTH_PATH;
186
+ const devHttpPort = env.EVOLVER_HOST_HTTP_PORT?.trim() || assignment.httpPort;
187
+ const healthUrl = env.EVOLVER_INSTALL_HEALTH_URL?.trim() || `http://${LOCAL_NODE_HOST}:${devHttpPort}${HEALTH_PATH}`;
120
188
  const timeoutMs = Number(env.EVOLVER_INSTALL_TIMEOUT_MS ?? "120000");
121
189
  const ok = await waitHealthy(healthUrl, timeoutMs);
122
190
  if (!ok) {
123
191
  const logs = spawnSync("docker", ["compose", "-f", composeFile, "logs", "--tail", "40", "node"], {
124
192
  encoding: "utf8",
125
- env: { ...process.env, ...env },
193
+ env: { ...process.env, ...env, COMPOSE_PROJECT_NAME: projectName },
126
194
  });
127
195
  return {
128
196
  exitCode: 1,
@@ -131,17 +199,16 @@ export async function runInstall(argv, env) {
131
199
  };
132
200
  }
133
201
  // 3. Bootstrap the SEPARATE agent identity against the local node. `--target local` +
134
- // EVOLVER_NODE=http://127.0.0.1:8440 makes the bootstrap derive
135
- // EVOLVER_CONTENT_URL=http://127.0.0.1:8450 (the local node's content listener).
136
- //
137
- // `--mcp-home` (if given) names Claude's `$HOME` and is translated into a default
138
- // EVOLVER_MCP_STATE_DIR so the printed `claude mcp add` line carries paths Claude can read.
139
- // Unset → no translation: the bootstrap defaults to THIS process's `$HOME`, which is exactly
140
- // right when Claude runs on the same machine as `install`.
202
+ // EVOLVER_NODE=http://127.0.0.1:<httpPort> makes the bootstrap derive
203
+ // EVOLVER_CONTENT_URL=http://127.0.0.1:<contentPort> (the local node's content listener). Both
204
+ // derive from the SAME assignment the compose received, so a `--new` node bootstraps against its
205
+ // own non-clashing ports with no operator input.
206
+ const devContentPort = env.EVOLVER_HOST_CONTENT_PORT?.trim() || assignment.contentPort;
141
207
  const nodeEnv = {
142
208
  ...process.env,
143
209
  ...env,
144
- EVOLVER_NODE: env.EVOLVER_NODE ?? LOCAL_CHAIN_URL,
210
+ EVOLVER_NODE: env.EVOLVER_NODE ?? `http://${LOCAL_NODE_HOST}:${devHttpPort}`,
211
+ EVOLVER_CONTENT_URL: env.EVOLVER_CONTENT_URL ?? `http://${LOCAL_NODE_HOST}:${devContentPort}`,
145
212
  // The claim is sponsored by the FUNDED faucet, never the fresh local node (which is empty and
146
213
  // would refuse `node_underfunded`). An operator's explicit EVOLVER_FAUCET_URL still wins.
147
214
  EVOLVER_FAUCET_URL: env.EVOLVER_FAUCET_URL ?? FAUCET_DEFAULT_URL,
@@ -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.8.9",
3
+ "version": "0.9.1",
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",