@mcsherrylabs/evolver-mcp 0.9.4 → 0.10.0
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/deploy/.dockerignore +8 -0
- package/deploy/Dockerfile +3 -3
- package/deploy/config/node-join.sh +32 -74
- package/deploy/config/node.conf +5 -47
- package/deploy/docker-compose.yml +97 -81
- package/deploy/processor/.dockerignore +8 -0
- package/deploy/processor/Dockerfile +14 -0
- package/deploy/processor/entrypoint.mjs +122 -0
- package/deploy/release.json +8 -0
- package/dist/bootstrap.d.ts +4 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +44 -5
- package/dist/bootstrap.js.map +1 -1
- package/dist/config.d.ts +5 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +44 -11
- package/dist/config.js.map +1 -1
- package/dist/inbox.d.ts +4 -26
- package/dist/inbox.d.ts.map +1 -1
- package/dist/inbox.js +43 -80
- package/dist/inbox.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +37 -2
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +261 -101
- package/dist/install.js.map +1 -1
- package/dist/processor.d.ts +14 -0
- package/dist/processor.d.ts.map +1 -0
- package/dist/processor.js +46 -0
- package/dist/processor.js.map +1 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +48 -13
- package/dist/tools.js.map +1 -1
- package/package.json +6 -3
package/dist/install.js
CHANGED
|
@@ -1,23 +1,16 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// devnet directly — devnet is only the faucet origin for the node's first-boot claim.
|
|
8
|
-
//
|
|
9
|
-
// Reachability (B1): the compose publishes the node's 8440/8450 loopback-only, so THIS host-side
|
|
10
|
-
// process reaches `http://127.0.0.1:8440` / `:8450`. The bootstrap then derives
|
|
11
|
-
// `EVOLVER_CONTENT_URL` from the node's content port (see bootstrap's local-target derivation).
|
|
12
|
-
//
|
|
13
|
-
// PORTABILITY: the node's config is BAKED into its image (deploy/Dockerfile), not bind-mounted.
|
|
14
|
-
// `docker compose` resolves a bind mount's host path in the DAEMON'S filesystem, which runs on the
|
|
15
|
-
// host; `install` may run inside a rig dev container whose `/workspace` is a different directory
|
|
16
|
-
// than the host's. `--build` removes the path entirely, so `install` works from the host or any
|
|
17
|
-
// container. The MCP itself is a stdio server launched by Claude wherever Claude runs; it reaches
|
|
18
|
-
// the node on the shared loopback, so `claude mcp add` works on either side identically.
|
|
1
|
+
// Managed install composition: one fixed node, one persistent zero-module shared SDK processor,
|
|
2
|
+
// and arbitrarily many thin stdio readers/control clients. Fresh initialization requires --new
|
|
3
|
+
// and provably fresh owned resources. Restarts/upgrades never seed subscription preferences.
|
|
4
|
+
// Node keys/database, subscription directory, processor state and private operator control socket
|
|
5
|
+
// have distinct mounts. A rig/remote daemon must explicitly map its host and client socket paths;
|
|
6
|
+
// baked node config cannot remove that Unix-socket filesystem requirement. No inferred authority.
|
|
19
7
|
import { spawnSync } from "node:child_process";
|
|
20
|
-
import { existsSync, statSync } from "node:fs";
|
|
8
|
+
import { existsSync, statSync, lstatSync, mkdirSync, chmodSync, readFileSync, writeFileSync, openSync, fsyncSync, closeSync, renameSync, unlinkSync } from "node:fs";
|
|
9
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
import { isValidNodeId } from "@mcsherrylabs/evolver-client";
|
|
12
|
+
import { ProcessorClient, nodeObserver } from "@mcsherrylabs/evolver-client/processor-client";
|
|
13
|
+
import { resolveConfig } from "./config.js";
|
|
21
14
|
import { dirname, join, resolve } from "node:path";
|
|
22
15
|
import { fileURLToPath } from "node:url";
|
|
23
16
|
import { runBootstrap } from "./bootstrap.js";
|
|
@@ -74,7 +67,6 @@ const LOCAL_HTTP_PORT = () => process.env.EVOLVER_HOST_HTTP_PORT?.trim() || "844
|
|
|
74
67
|
/** Host-published content-listener port (matches `EVOLVER_HOST_CONTENT_PORT`). */
|
|
75
68
|
const LOCAL_CONTENT_PORT = () => process.env.EVOLVER_HOST_CONTENT_PORT?.trim() || "8450";
|
|
76
69
|
const LOCAL_CHAIN_URL = () => `http://${LOCAL_NODE_HOST}:${LOCAL_HTTP_PORT()}`;
|
|
77
|
-
const HEALTH_PATH = "/api/explorer/blocks?limit=1";
|
|
78
70
|
export { LOCAL_CHAIN_URL, LOCAL_CONTENT_PORT, LOCAL_HTTP_PORT };
|
|
79
71
|
/** The WELL-FUNDED faucet origin that sponsors the AGENT identity claim. The node the install
|
|
80
72
|
* starts is a fresh follower with an empty wallet, so it cannot sponsor the claim (it would
|
|
@@ -189,8 +181,107 @@ export function composePathFor(env, distDir) {
|
|
|
189
181
|
export function distDirFor(importMetaUrl) {
|
|
190
182
|
return dirname(fileURLToPath(importMetaUrl));
|
|
191
183
|
}
|
|
192
|
-
|
|
193
|
-
|
|
184
|
+
const commandDefault = (command, args, env) => spawnSync(command, args, { encoding: "utf8", env });
|
|
185
|
+
const failInstall = (output) => ({ exitCode: 1, output: `install: ${output}\n`, toStderr: true });
|
|
186
|
+
function positiveId(raw, field) {
|
|
187
|
+
const n = Number(raw);
|
|
188
|
+
if (!Number.isSafeInteger(n) || n < 1 || n > 2_147_483_647)
|
|
189
|
+
throw new Error(`${field} requires an explicit non-root positive uid/gid`);
|
|
190
|
+
return n;
|
|
191
|
+
}
|
|
192
|
+
function port(raw) {
|
|
193
|
+
if (!/^[1-9][0-9]{0,4}$/.test(raw) || Number(raw) > 65535)
|
|
194
|
+
throw new Error("invalid managed host port");
|
|
195
|
+
return raw;
|
|
196
|
+
}
|
|
197
|
+
function privateDirectory(path, uid, gid, create) {
|
|
198
|
+
if (!path.startsWith("/"))
|
|
199
|
+
throw new Error("managed directories must be absolute");
|
|
200
|
+
if (create && !existsSync(path))
|
|
201
|
+
mkdirSync(path, { recursive: true, mode: 0o750 });
|
|
202
|
+
const s = lstatSync(path);
|
|
203
|
+
if (s.isSymbolicLink() || !s.isDirectory() || s.uid !== uid || s.gid !== gid || (s.mode & 0o027) !== 0)
|
|
204
|
+
throw new Error("control directory must be operator-owned, no group writes or access by others (0700/0750)");
|
|
205
|
+
}
|
|
206
|
+
function saveInstallation(file, state, fresh) {
|
|
207
|
+
const text = JSON.stringify(state, null, 2) + "\n";
|
|
208
|
+
// Fresh metadata still uses exclusive creation: never rename over an existing installation.
|
|
209
|
+
// Updates use a private, same-directory name so interrupted saves cannot block later saves.
|
|
210
|
+
const temporary = fresh ? file : `${file}.${randomBytes(16).toString("hex")}.tmp`;
|
|
211
|
+
const fd = openSync(temporary, "wx", 0o600);
|
|
212
|
+
let cleanup = !fresh; // Only remove a temporary that this call exclusively created.
|
|
213
|
+
try {
|
|
214
|
+
try {
|
|
215
|
+
writeFileSync(fd, text);
|
|
216
|
+
fsyncSync(fd);
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
closeSync(fd);
|
|
220
|
+
}
|
|
221
|
+
if (!fresh) {
|
|
222
|
+
renameSync(temporary, file);
|
|
223
|
+
cleanup = false;
|
|
224
|
+
}
|
|
225
|
+
const dir = openSync(dirname(file), "r");
|
|
226
|
+
try {
|
|
227
|
+
fsyncSync(dir);
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
closeSync(dir);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
if (cleanup) {
|
|
235
|
+
try {
|
|
236
|
+
unlinkSync(temporary);
|
|
237
|
+
}
|
|
238
|
+
catch { /* Preserve the save error; an orphan cannot block future saves. */ }
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/** Verify process health separately from ACTIVE binding/collection readiness. These are reads,
|
|
243
|
+
* never node pulls. A generic HTTP200 or a desired file alone cannot unlock generated pairing. */
|
|
244
|
+
export async function waitManagedReady(state, timeoutMs, deps = {}) {
|
|
245
|
+
const chain = `http://${LOCAL_NODE_HOST}:${state.httpPort}`;
|
|
246
|
+
const inboxUrl = `http://${LOCAL_NODE_HOST}:${state.inboxPort}`;
|
|
247
|
+
const pairing = { binding: state.binding, inboxUrl, controlSocketPath: join(state.controlClientDir, "control.sock"), timeoutMs: 5000 };
|
|
248
|
+
const client = deps.controlClient?.(pairing) ?? new ProcessorClient(pairing);
|
|
249
|
+
const observe = () => deps.observe ? deps.observe(chain, state.binding) : nodeObserver({ baseUrl: chain, binding: state.binding, timeoutMs: 5000 })();
|
|
250
|
+
const read = deps.fetch ?? fetch;
|
|
251
|
+
const sleep = deps.sleep ?? (ms => new Promise(resolve => setTimeout(resolve, ms)));
|
|
252
|
+
const deadline = Date.now() + timeoutMs;
|
|
253
|
+
let reason = "processor not ready";
|
|
254
|
+
do {
|
|
255
|
+
try {
|
|
256
|
+
const node = await observe();
|
|
257
|
+
if (node.binding.chainId !== state.binding.chainId || node.binding.nodeId !== state.binding.nodeId || !node.processing)
|
|
258
|
+
throw new Error("managed node binding/processing mismatch");
|
|
259
|
+
for (const path of ["/health", "/ready"]) {
|
|
260
|
+
const response = await read(inboxUrl + path, { redirect: "error", signal: AbortSignal.timeout(5000) });
|
|
261
|
+
if (response.status !== 200)
|
|
262
|
+
throw new Error(`${path} HTTP ${response.status}`);
|
|
263
|
+
const body = await response.json();
|
|
264
|
+
if (body.binding?.chainId !== state.binding.chainId || body.binding.nodeId !== state.binding.nodeId ||
|
|
265
|
+
(path === "/health" ? body.process !== "running" : body.collectionReady !== true))
|
|
266
|
+
throw new Error(`${path} invalid binding/readiness`);
|
|
267
|
+
}
|
|
268
|
+
const control = await client.subscriptions();
|
|
269
|
+
if (control.outcome !== "active")
|
|
270
|
+
throw new Error(`subscriptions ${control.outcome}: ${control.reason}`);
|
|
271
|
+
await client.inboxSummary(); // SDK validates independent read-origin binding too.
|
|
272
|
+
return { ...pairing, timeoutMs: 65000 };
|
|
273
|
+
}
|
|
274
|
+
catch (e) {
|
|
275
|
+
reason = e instanceof Error ? e.message : "managed readiness failed";
|
|
276
|
+
}
|
|
277
|
+
if (Date.now() >= deadline)
|
|
278
|
+
break;
|
|
279
|
+
await sleep(Math.min(1000, Math.max(0, deadline - Date.now())));
|
|
280
|
+
} while (Date.now() <= deadline);
|
|
281
|
+
throw new Error(`managed process health/collection readiness not verified: ${reason}`);
|
|
282
|
+
}
|
|
283
|
+
/** Start exactly one paired node + persistent SDK processor, then bootstrap the agent reader. */
|
|
284
|
+
export async function runInstall(argv, env, deps = {}) {
|
|
194
285
|
const composeFile = composePathFor(env, dirname(fileURLToPath(import.meta.url)));
|
|
195
286
|
if (!existsSync(composeFile)) {
|
|
196
287
|
return {
|
|
@@ -208,76 +299,161 @@ export async function runInstall(argv, env) {
|
|
|
208
299
|
// Decide WHERE this node lives: default project `evolver-mcp` on 8440/8450; `--new` auto-picks the
|
|
209
300
|
// next project name + non-clashing host ports from what is already deployed. Explicit env vars
|
|
210
301
|
// (EVOLVER_HOST_HTTP_PORT / EVOLVER_HOST_CONTENT_PORT / COMPOSE_PROJECT_NAME) always override.
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
302
|
+
const command = deps.command ?? commandDefault;
|
|
303
|
+
let state;
|
|
304
|
+
let deploymentEnv;
|
|
305
|
+
let stateFile;
|
|
306
|
+
let pairing;
|
|
307
|
+
try {
|
|
308
|
+
const timeoutMs = Number(env.EVOLVER_INSTALL_TIMEOUT_MS ?? "120000");
|
|
309
|
+
if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 600000)
|
|
310
|
+
throw new Error("invalid install readiness deadline");
|
|
311
|
+
const chosenEntry = env.EVOLVER_MCP_ENTRY_COMMAND;
|
|
312
|
+
if (argv.includes("--keep-npx") || (chosenEntry?.includes("npx") && chosenEntry !== `npx -y ${PACKAGE_NAME}`))
|
|
313
|
+
throw new Error("managed candidate requires a fixed current candidate entry command, not unversioned npx; release pins remain unresolved");
|
|
314
|
+
let existing = [];
|
|
315
|
+
if (fresh) {
|
|
316
|
+
if (env.EVOLVER_INSTALL_PROJECTS !== undefined)
|
|
317
|
+
existing = env.EVOLVER_INSTALL_PROJECTS.split(",").map(s => s.trim()).filter(Boolean);
|
|
318
|
+
else {
|
|
319
|
+
const listing = command("docker", ["compose", "ls", "-a", "--format", "json"], { ...process.env, ...env });
|
|
320
|
+
if (listing.status !== 0)
|
|
321
|
+
throw new Error("cannot inspect existing compose projects; refusing fresh-resource assumption");
|
|
322
|
+
const rows = JSON.parse(listing.stdout ?? "");
|
|
323
|
+
if (!Array.isArray(rows) || rows.some(row => !row || typeof row.Name !== "string"))
|
|
324
|
+
throw new Error("invalid compose project inventory");
|
|
325
|
+
existing = rows.map(row => row.Name);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
const assignment = assignNode(fresh, existing, env.EVOLVER_HOST_HTTP_PORT, env.EVOLVER_HOST_CONTENT_PORT);
|
|
329
|
+
const projectName = env.COMPOSE_PROJECT_NAME?.trim() || assignment.project;
|
|
330
|
+
if (!/^[a-z0-9][a-z0-9_-]{0,44}$/.test(projectName))
|
|
331
|
+
throw new Error("invalid managed compose project name");
|
|
332
|
+
const target = rest.findIndex(a => a === "--target");
|
|
333
|
+
if ((target >= 0 && rest[target + 1] !== "local") || rest.some(a => a.startsWith("--target=") && a !== "--target=local"))
|
|
334
|
+
throw new Error("managed install requires --target local; independent devnet uses --bootstrap and remains unmanaged");
|
|
335
|
+
const stateDir = env.EVOLVER_INSTALL_STATE_DIR ?? join(env.HOME ?? homedir(), ".local", "state", "evolver-mcp", "installations", projectName);
|
|
336
|
+
stateFile = join(stateDir, "deployment.json");
|
|
337
|
+
if (existsSync(stateFile)) {
|
|
338
|
+
if (fresh)
|
|
339
|
+
throw new Error("--new refuses pre-existing installation metadata/resources");
|
|
340
|
+
if (lstatSync(stateFile).isSymbolicLink())
|
|
341
|
+
throw new Error("refusing symlinked deployment metadata");
|
|
342
|
+
state = JSON.parse(readFileSync(stateFile, "utf8"));
|
|
343
|
+
if (state.version !== 1 || state.project !== projectName || !["pending", "attempted", "complete"].includes(state.initialization))
|
|
344
|
+
throw new Error("invalid saved managed installation");
|
|
345
|
+
if ((env.EVOLVER_CHAIN_ID && env.EVOLVER_CHAIN_ID !== state.binding.chainId) ||
|
|
346
|
+
(env.APP_NODE_ID && env.APP_NODE_ID !== state.binding.nodeId))
|
|
347
|
+
throw new Error("operator binding differs from saved node/genesis; refusing automatic re-pairing");
|
|
348
|
+
if (state.initialization === "attempted")
|
|
349
|
+
throw new Error("fresh initialization was interrupted/failed; inspect owned resources, never automatically reseed");
|
|
350
|
+
for (const [key, saved] of [["EVOLVER_CONTROL_HOST_DIR", state.controlHostDir], ["EVOLVER_CONTROL_CLIENT_DIR", state.controlClientDir],
|
|
351
|
+
["EVOLVER_HOST_HTTP_PORT", state.httpPort], ["EVOLVER_HOST_CONTENT_PORT", state.contentPort], ["EVOLVER_HOST_INBOX_PORT", state.inboxPort]]) {
|
|
352
|
+
if (env[key] && env[key] !== saved)
|
|
353
|
+
throw new Error(`${key} differs from saved installation; explicit topology changes require operator reconciliation`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
if (!fresh)
|
|
358
|
+
throw new Error("no managed installation metadata; use install --new for fresh owned resources. Existing host/devnet installs are unmanaged; no valued-state migration");
|
|
359
|
+
if (existing.includes(projectName))
|
|
360
|
+
throw new Error("fresh project already exists; refusing to adopt its state");
|
|
361
|
+
const volumes = command("docker", ["volume", "ls", "--filter", `label=com.docker.compose.project=${projectName}`, "--format", "{{.Name}}"], { ...process.env, ...env });
|
|
362
|
+
if (volumes.status !== 0 || volumes.stdout?.trim())
|
|
363
|
+
throw new Error("cannot prove fresh project volumes are absent; refusing initialization/adoption");
|
|
364
|
+
const clientDir = env.EVOLVER_CONTROL_CLIENT_DIR ?? join(stateDir, "control");
|
|
365
|
+
if ((env.EVOLVER_CONTROL_HOST_DIR === undefined) !== (env.EVOLVER_CONTROL_CLIENT_DIR === undefined))
|
|
366
|
+
throw new Error("cross-filesystem/rig installs must explicitly supply BOTH control daemon-host and client directories");
|
|
367
|
+
state = { version: 1, project: projectName,
|
|
368
|
+
binding: { chainId: env.EVOLVER_CHAIN_ID ?? "", nodeId: env.APP_NODE_ID ?? `evolvermcpnode${randomBytes(6).toString("hex")}` },
|
|
369
|
+
controlHostDir: env.EVOLVER_CONTROL_HOST_DIR ?? clientDir, controlClientDir: clientDir,
|
|
370
|
+
operatorUid: positiveId(env.EVOLVER_OPERATOR_UID ?? process.getuid?.(), "operator uid"),
|
|
371
|
+
operatorGid: positiveId(env.EVOLVER_OPERATOR_GID ?? process.getgid?.(), "operator gid"),
|
|
372
|
+
dockerGid: positiveId(env.EVOLVER_DOCKER_GID, "Docker socket gid"),
|
|
373
|
+
httpPort: port(assignment.httpPort), contentPort: port(assignment.contentPort),
|
|
374
|
+
inboxPort: port(env.EVOLVER_HOST_INBOX_PORT ?? String(8090 + Number(assignment.httpPort) - 8440)), initialization: "pending" };
|
|
375
|
+
}
|
|
376
|
+
if (!isValidNodeId(state.binding.nodeId))
|
|
377
|
+
throw new Error("saved node id must satisfy node identity creation policy");
|
|
378
|
+
positiveId(state.operatorUid, "operator uid");
|
|
379
|
+
positiveId(state.operatorGid, "operator gid");
|
|
380
|
+
positiveId(state.dockerGid, "Docker gid");
|
|
381
|
+
port(state.httpPort);
|
|
382
|
+
port(state.contentPort);
|
|
383
|
+
port(state.inboxPort);
|
|
384
|
+
const checked = resolveConfig({ identity: "managedInstaller", processor: { binding: state.binding,
|
|
385
|
+
inboxUrl: `http://${LOCAL_NODE_HOST}:${state.inboxPort}`, controlSocketPath: join(state.controlClientDir, "control.sock") } });
|
|
386
|
+
if (!checked.ok)
|
|
387
|
+
throw new Error(checked.error);
|
|
388
|
+
if (!state.controlHostDir.startsWith("/"))
|
|
389
|
+
throw new Error("daemon-host control path must be absolute");
|
|
390
|
+
for (const key of ["EVOLVER_NODE_IMAGE", "EVOLVER_PROCESSOR_SDK_DIR", "EVOLVER_PROCESSOR_SDK_SHA256"]) {
|
|
391
|
+
if (!env[key]?.trim())
|
|
392
|
+
throw new Error(`${key} is required: coordinated candidate artifacts, never registry SDK 0.19.1 fallback`);
|
|
393
|
+
}
|
|
394
|
+
const sha = env.EVOLVER_PROCESSOR_SDK_SHA256;
|
|
395
|
+
if (!/^[0-9a-f]{64}$/.test(sha) || sha.length !== 64)
|
|
396
|
+
throw new Error("invalid exact SDK SHA256");
|
|
397
|
+
const archive = join(env.EVOLVER_PROCESSOR_SDK_DIR, "sdk.tgz");
|
|
398
|
+
if (statSync(archive).size > 64 * 1024 * 1024 || createHash("sha256").update(readFileSync(archive)).digest("hex") !== sha)
|
|
399
|
+
throw new Error("local SDK candidate archive does not match explicit SHA256");
|
|
400
|
+
const chainUrl = `http://${LOCAL_NODE_HOST}:${state.httpPort}`;
|
|
401
|
+
if ((env.EVOLVER_NODE && env.EVOLVER_NODE !== chainUrl) || env.EVOLVER_INSTALL_HEALTH_URL)
|
|
402
|
+
throw new Error("managed installer cannot redirect node binding/health to another topology; use independent --bootstrap for unmanaged nodes");
|
|
403
|
+
deploymentEnv = { ...process.env, ...env, COMPOSE_PROJECT_NAME: projectName,
|
|
404
|
+
APP_NODE_ID: state.binding.nodeId, EVOLVER_CHAIN_ID: state.binding.chainId,
|
|
405
|
+
EVOLVER_MANAGED_NODE_CONTAINER: `${projectName}-node`, EVOLVER_MANAGED_PROCESSOR_CONTAINER: `${projectName}-processor`,
|
|
406
|
+
EVOLVER_MANAGED_NODE_IMAGE: env.EVOLVER_MANAGED_NODE_IMAGE ?? `${projectName}-node:candidate`,
|
|
407
|
+
EVOLVER_PROCESSOR_IMAGE: env.EVOLVER_PROCESSOR_IMAGE ?? `${projectName}-processor:candidate-${sha.slice(0, 12)}`,
|
|
408
|
+
EVOLVER_OPERATOR_UID: String(state.operatorUid), EVOLVER_OPERATOR_GID: String(state.operatorGid), EVOLVER_DOCKER_GID: String(state.dockerGid),
|
|
409
|
+
EVOLVER_CONTROL_HOST_DIR: state.controlHostDir,
|
|
410
|
+
EVOLVER_HOST_HTTP_PORT: state.httpPort, EVOLVER_HOST_CONTENT_PORT: state.contentPort, EVOLVER_HOST_INBOX_PORT: state.inboxPort };
|
|
411
|
+
if (!existsSync(stateFile)) {
|
|
412
|
+
mkdirSync(stateDir, { recursive: true, mode: 0o700 });
|
|
413
|
+
if (lstatSync(stateDir).isSymbolicLink())
|
|
414
|
+
throw new Error("refusing symlinked install state directory");
|
|
415
|
+
chmodSync(stateDir, 0o700);
|
|
416
|
+
privateDirectory(state.controlClientDir, state.operatorUid, state.operatorGid, true);
|
|
417
|
+
saveInstallation(stateFile, state, true);
|
|
418
|
+
}
|
|
419
|
+
privateDirectory(state.controlClientDir, state.operatorUid, state.operatorGid, false);
|
|
420
|
+
const compose = ["compose", "-f", composeFile];
|
|
421
|
+
const build = command("docker", [...compose, "build", "node", "processor"], deploymentEnv);
|
|
422
|
+
if (build.status !== 0)
|
|
423
|
+
throw new Error(`candidate node/processor build failed: ${build.stderr || build.stdout}`);
|
|
424
|
+
if (state.initialization === "pending") {
|
|
425
|
+
// Record intent DURABLY before the sole initialization attempt. A failed/interrupted attempt
|
|
426
|
+
// is never retried from a missing fragment, nor converted to a fresh migration.
|
|
427
|
+
state = { ...state, initialization: "attempted" };
|
|
428
|
+
saveInstallation(stateFile, state, false);
|
|
429
|
+
const init = command("docker", [...compose, "--profile", "initialize-only", "run", "--rm", "--no-deps", "processor-init"], deploymentEnv);
|
|
430
|
+
if (init.status !== 0)
|
|
431
|
+
throw new Error(`explicit fresh SDK initialization failed; no automatic retry/reseed: ${init.stderr || init.stdout}`);
|
|
432
|
+
state = { ...state, initialization: "complete" };
|
|
433
|
+
saveInstallation(stateFile, state, false);
|
|
434
|
+
}
|
|
435
|
+
const up = command("docker", [...compose, "up", "-d", "--no-build", "node", "processor"], deploymentEnv);
|
|
436
|
+
if (up.status !== 0)
|
|
437
|
+
throw new Error(`paired node/processor startup failed: ${up.stderr || up.stdout}`);
|
|
438
|
+
pairing = await waitManagedReady(state, timeoutMs, deps);
|
|
271
439
|
}
|
|
272
|
-
|
|
273
|
-
|
|
440
|
+
catch (e) {
|
|
441
|
+
return failInstall(e instanceof Error ? e.message : "managed installation failed");
|
|
274
442
|
}
|
|
443
|
+
const devHttpPort = state.httpPort;
|
|
444
|
+
const devContentPort = state.contentPort;
|
|
445
|
+
// Keep the current candidate CLI rather than silently resolving registry/global MCP with an
|
|
446
|
+
// older SDK. --keep-npx was refused before effects; there is no global npm install in this path.
|
|
447
|
+
const chosenEntry = env.EVOLVER_MCP_ENTRY_COMMAND;
|
|
448
|
+
const entryCommand = chosenEntry && chosenEntry !== `npx -y ${PACKAGE_NAME}`
|
|
449
|
+
? chosenEntry : `${process.execPath} ${join(dirname(fileURLToPath(import.meta.url)), "cli.js")}`;
|
|
275
450
|
const nodeEnv = {
|
|
276
451
|
...process.env,
|
|
277
452
|
...env,
|
|
278
453
|
EVOLVER_NODE: env.EVOLVER_NODE ?? `http://${LOCAL_NODE_HOST}:${devHttpPort}`,
|
|
279
454
|
EVOLVER_CONTENT_URL: env.EVOLVER_CONTENT_URL ?? `http://${LOCAL_NODE_HOST}:${devContentPort}`,
|
|
280
455
|
EVOLVER_MCP_ENTRY_COMMAND: entryCommand,
|
|
456
|
+
EVOLVER_MCP_PROCESSOR_CONFIG: JSON.stringify(pairing),
|
|
281
457
|
// The claim is sponsored by the FUNDED faucet, never the fresh local node (which is empty and
|
|
282
458
|
// would refuse `node_underfunded`). An operator's explicit EVOLVER_FAUCET_URL still wins.
|
|
283
459
|
EVOLVER_FAUCET_URL: env.EVOLVER_FAUCET_URL ?? FAUCET_DEFAULT_URL,
|
|
@@ -285,23 +461,7 @@ export async function runInstall(argv, env) {
|
|
|
285
461
|
if (mcpHome !== undefined && mcpHome.trim() !== "" && nodeEnv.EVOLVER_MCP_STATE_DIR === undefined) {
|
|
286
462
|
nodeEnv.EVOLVER_MCP_STATE_DIR = stateDirForMcpHome(mcpHome);
|
|
287
463
|
}
|
|
288
|
-
const boot = await runBootstrap(rest, nodeEnv);
|
|
464
|
+
const boot = await (deps.bootstrap ?? runBootstrap)(rest, nodeEnv);
|
|
289
465
|
return { exitCode: boot.exitCode, output: boot.output, toStderr: boot.toStderr };
|
|
290
466
|
}
|
|
291
|
-
/** Poll `url` until it answers 200 (or a healthy node's success), bounded by `timeoutMs`. */
|
|
292
|
-
async function waitHealthy(url, timeoutMs) {
|
|
293
|
-
const deadline = Date.now() + timeoutMs;
|
|
294
|
-
while (Date.now() < deadline) {
|
|
295
|
-
try {
|
|
296
|
-
const r = await fetch(url, { signal: AbortSignal.timeout(5000) });
|
|
297
|
-
if (r.ok)
|
|
298
|
-
return true;
|
|
299
|
-
}
|
|
300
|
-
catch {
|
|
301
|
-
// not up yet — retry below
|
|
302
|
-
}
|
|
303
|
-
await new Promise((r) => setTimeout(r, 2000));
|
|
304
|
-
}
|
|
305
|
-
return false;
|
|
306
|
-
}
|
|
307
467
|
//# sourceMappingURL=install.js.map
|
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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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ProcessorClient, SubscriptionState } from "@mcsherrylabs/evolver-client/processor-client";
|
|
2
|
+
import type { ToolResult } from "./result.js";
|
|
3
|
+
/** One instance is injected at startup; structural seam for ordinary adapter tests. */
|
|
4
|
+
export type ProcessorAccess = Pick<ProcessorClient, "subscriptions" | "subscribe" | "unsubscribe" | "inboxSummary" | "inboxPage">;
|
|
5
|
+
export interface ProcessorDeps {
|
|
6
|
+
readonly processor?: ProcessorAccess;
|
|
7
|
+
}
|
|
8
|
+
export declare const processorMissing: () => ToolResult<never>;
|
|
9
|
+
/** Reject malformed tool arguments before dispatch. The SDK independently validates the wire. */
|
|
10
|
+
export declare function channelArgument(value: unknown): string | ToolResult<never>;
|
|
11
|
+
export declare function processorReadError(e: unknown): ToolResult<never>;
|
|
12
|
+
export declare function subscriptions(deps: ProcessorDeps): Promise<ToolResult<SubscriptionState>>;
|
|
13
|
+
export declare function setSubscription(deps: ProcessorDeps, ledgerId: unknown, subscribed: boolean): Promise<ToolResult<unknown>>;
|
|
14
|
+
//# sourceMappingURL=processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAExG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAChD,eAAe,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC,CAAC;AAChF,MAAM,WAAW,aAAa;IAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;CAAE;AACxE,eAAO,MAAM,gBAAgB,yBAEkE,CAAC;AAEhG,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAK1E;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAEhE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAI/F;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAe/H"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Thin shared-SDK adapters only. No collection, filesystem administration or restart capability.
|
|
2
|
+
import { UnmanagedProcessorError } from "@mcsherrylabs/evolver-client/processor-client";
|
|
3
|
+
import { misconfigured, ok, partial, unreachableFrom } from "./result.js";
|
|
4
|
+
export const processorMissing = () => misconfigured("the paired processor", "configure processor.binding with the known chainId/nodeId and processor.inboxUrl for reads or " +
|
|
5
|
+
"processor.controlSocketPath for management; a chain URL (even localhost) grants no control");
|
|
6
|
+
/** Reject malformed tool arguments before dispatch. The SDK independently validates the wire. */
|
|
7
|
+
export function channelArgument(value) {
|
|
8
|
+
if (typeof value !== "string" || value.length > 128 ||
|
|
9
|
+
/^[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*$/.exec(value)?.[0] !== value || value.startsWith("ce.evolver."))
|
|
10
|
+
return partial("ledgerId", "expected a non-core channel id of at most 128 characters (letters, digits, _, -, dot-separated)");
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
export function processorReadError(e) {
|
|
14
|
+
return e instanceof UnmanagedProcessorError ? processorMissing() : unreachableFrom(e, "paired processor");
|
|
15
|
+
}
|
|
16
|
+
export async function subscriptions(deps) {
|
|
17
|
+
if (!deps.processor)
|
|
18
|
+
return processorMissing();
|
|
19
|
+
try {
|
|
20
|
+
return ok(await deps.processor.subscriptions());
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
return processorReadError(e);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function setSubscription(deps, ledgerId, subscribed) {
|
|
27
|
+
const channel = channelArgument(ledgerId);
|
|
28
|
+
if (typeof channel !== "string")
|
|
29
|
+
return channel;
|
|
30
|
+
if (!deps.processor)
|
|
31
|
+
return processorMissing();
|
|
32
|
+
try {
|
|
33
|
+
// SET semantics, reconciliation and ACTIVE verification belong to the shared owner.
|
|
34
|
+
return ok(await (subscribed ? deps.processor.subscribe(channel) : deps.processor.unsubscribe(channel)));
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
if (e instanceof UnmanagedProcessorError)
|
|
38
|
+
return processorMissing();
|
|
39
|
+
// A dropped/malformed reply cannot prove whether config/restart effects happened. Never
|
|
40
|
+
// invent desired membership, module state, an observation, or subscribed:true from that.
|
|
41
|
+
return ok({ outcome: "unknown", state: null,
|
|
42
|
+
reason: e instanceof Error ? e.message : "no verified processor reply",
|
|
43
|
+
next: "Inspect evolver_subscriptions or repeat the identical SET to reconcile; activation is not confirmed." });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,sBAAsB,EACxE,gGAAgG;IAChG,4FAA4F,CAAC,CAAC;AAEhG,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAC/C,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;QACvG,OAAO,OAAO,CAAC,UAAU,EAAE,iGAAiG,CAAC,CAAC;IAChI,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAU;IAC3C,OAAO,CAAC,YAAY,uBAAuB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC5G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,gBAAgB,EAAE,CAAC;IAC/C,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;IAAC,CAAC;IACxD,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAmB,EAAE,QAAiB,EAAE,UAAmB;IAC/F,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,gBAAgB,EAAE,CAAC;IAC/C,IAAI,CAAC;QACH,oFAAoF;QACpF,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,uBAAuB;YAAE,OAAO,gBAAgB,EAAE,CAAC;QACpE,wFAAwF;QACxF,yFAAyF;QACzF,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI;YACzC,MAAM,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B;YACtE,IAAI,EAAE,sGAAsG,EAAE,CAAC,CAAC;IACpH,CAAC;AACH,CAAC"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { ChainReads } from "./read.js";
|
|
|
3
3
|
import type { EvolverConfig } from "./config.js";
|
|
4
4
|
import type { ToolResult } from "./result.js";
|
|
5
5
|
import type { ContentDeps } from "./content.js";
|
|
6
|
+
import type { ProcessorAccess } from "./processor.js";
|
|
6
7
|
import type { Signer, SubmitResult, ClaimResult } from "@mcsherrylabs/evolver-client";
|
|
7
8
|
import type { McpResult } from "./mcp.js";
|
|
8
9
|
/** SAFE-02: the untrusted-content warning (also exported from src/mcp.ts — the tool result text
|
|
@@ -29,6 +30,8 @@ export interface ToolContext {
|
|
|
29
30
|
ed25519Pop: Uint8Array;
|
|
30
31
|
}) => Promise<ClaimResult>;
|
|
31
32
|
readonly content: ContentDeps;
|
|
33
|
+
/** Shared thin client, built once at startup. No SDK processor runtime in an MCP session. */
|
|
34
|
+
readonly processor?: ProcessorAccess;
|
|
32
35
|
}
|
|
33
36
|
export interface ToolSpec {
|
|
34
37
|
readonly name: string;
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAW9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAW9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;8DAC8D;AAC9D,eAAO,MAAM,SAAS,kHAC2F,CAAC;AAalH;;;;;;oFAMoF;AACpF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,gBAAgB,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACvK,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B;;sEAEkE;IAClE,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/G;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,EA+vB3B,CAAC"}
|