@mcsherrylabs/evolver-mcp 0.13.0 → 0.15.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/docker-compose.http.yml +45 -0
- package/deploy/docker-compose.yml +4 -1
- package/dist/application-signer.d.ts +1 -1
- package/dist/application-signer.d.ts.map +1 -1
- package/dist/attachments.d.ts +1 -1
- package/dist/attachments.d.ts.map +1 -1
- package/dist/attachments.js +2 -2
- package/dist/attachments.js.map +1 -1
- package/dist/bootstrap.d.ts +36 -4
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +35 -11
- package/dist/bootstrap.js.map +1 -1
- package/dist/content-file-tools.js +1 -1
- package/dist/content-file-tools.js.map +1 -1
- package/dist/content-files.d.ts +1 -1
- package/dist/content-files.d.ts.map +1 -1
- package/dist/content-files.js +1 -1
- package/dist/content-files.js.map +1 -1
- package/dist/content-ranges.d.ts +1 -1
- package/dist/content-ranges.d.ts.map +1 -1
- package/dist/group-crypto-tools.js +1 -1
- package/dist/group-crypto-tools.js.map +1 -1
- package/dist/group-crypto.d.ts +2 -2
- package/dist/group-crypto.d.ts.map +1 -1
- package/dist/group-crypto.js +1 -1
- package/dist/group-crypto.js.map +1 -1
- package/dist/http-transport.d.ts +87 -0
- package/dist/http-transport.d.ts.map +1 -0
- package/dist/http-transport.js +359 -0
- package/dist/http-transport.js.map +1 -0
- package/dist/inbox.d.ts +1 -1
- package/dist/inbox.d.ts.map +1 -1
- package/dist/inbox.js +1 -1
- package/dist/inbox.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +254 -115
- package/dist/index.js.map +1 -1
- package/dist/install-http.d.ts +27 -0
- package/dist/install-http.d.ts.map +1 -0
- package/dist/install-http.js +192 -0
- package/dist/install-http.js.map +1 -0
- package/dist/install.d.ts +18 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +128 -22
- package/dist/install.js.map +1 -1
- package/dist/login.d.ts +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.d.ts.map +1 -1
- package/dist/p2p.d.ts +1 -1
- package/dist/p2p.d.ts.map +1 -1
- package/dist/p2p.js +1 -1
- package/dist/p2p.js.map +1 -1
- package/dist/processor.d.ts +1 -1
- package/dist/processor.d.ts.map +1 -1
- package/dist/processor.js +1 -1
- package/dist/processor.js.map +1 -1
- package/dist/signed-http.d.ts +1 -1
- package/dist/signed-http.d.ts.map +1 -1
- package/dist/tools.d.ts +5 -3
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +34 -34
- package/dist/tools.js.map +1 -1
- package/dist/transaction-interchange-tools.js +1 -1
- package/dist/transaction-interchange-tools.js.map +1 -1
- package/dist/transaction-interchange.d.ts +5 -2
- package/dist/transaction-interchange.d.ts.map +1 -1
- package/dist/transaction-interchange.js +10 -10
- package/dist/transaction-interchange.js.map +1 -1
- package/package.json +10 -16
- package/dist/amount.d.ts +0 -23
- package/dist/amount.d.ts.map +0 -1
- package/dist/amount.js +0 -53
- package/dist/amount.js.map +0 -1
- package/dist/channel.d.ts +0 -77
- package/dist/channel.d.ts.map +0 -1
- package/dist/channel.js +0 -287
- package/dist/channel.js.map +0 -1
- package/dist/claim.d.ts +0 -48
- package/dist/claim.d.ts.map +0 -1
- package/dist/claim.js +0 -81
- package/dist/claim.js.map +0 -1
- package/dist/content.d.ts +0 -94
- package/dist/content.d.ts.map +0 -1
- package/dist/content.js +0 -215
- package/dist/content.js.map +0 -1
- package/dist/group-ownership.d.ts +0 -78
- package/dist/group-ownership.d.ts.map +0 -1
- package/dist/group-ownership.js +0 -324
- package/dist/group-ownership.js.map +0 -1
- package/dist/group.d.ts +0 -60
- package/dist/group.d.ts.map +0 -1
- package/dist/group.js +0 -204
- package/dist/group.js.map +0 -1
- package/dist/identity.d.ts +0 -87
- package/dist/identity.d.ts.map +0 -1
- package/dist/identity.js +0 -236
- package/dist/identity.js.map +0 -1
- package/dist/node-transport.d.ts +0 -14
- package/dist/node-transport.d.ts.map +0 -1
- package/dist/node-transport.js +0 -54
- package/dist/node-transport.js.map +0 -1
- package/dist/read.d.ts +0 -252
- package/dist/read.d.ts.map +0 -1
- package/dist/read.js +0 -320
- package/dist/read.js.map +0 -1
- package/dist/result.d.ts +0 -110
- package/dist/result.d.ts.map +0 -1
- package/dist/result.js +0 -97
- package/dist/result.js.map +0 -1
- package/dist/signer.d.ts +0 -37
- package/dist/signer.d.ts.map +0 -1
- package/dist/signer.js +0 -76
- package/dist/signer.js.map +0 -1
- package/dist/write.d.ts +0 -214
- package/dist/write.d.ts.map +0 -1
- package/dist/write.js +0 -399
- package/dist/write.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// Phase 1 is read-only: this file constructs a client, wires no signer, loads no key, and
|
|
5
|
-
// introduces no signing/submission path (SAFE-03).
|
|
1
|
+
// Composition root: one startup-selected identity and host capability policy, stdio by default
|
|
2
|
+
// or a bounded private HTTP listener. Signing histories, key handles and tasks belong to sessions;
|
|
3
|
+
// file/TLS resources belong to this process. Reachability of HTTP grants signing authority.
|
|
6
4
|
import { NodeClient, createApprovedRequestFetch, decodeSignedTransaction, verifySignedTransaction, addTransactionAuthorization } from "@mcsherrylabs/evolver-client";
|
|
7
5
|
import { ProcessorClient } from "@mcsherrylabs/evolver-client/processor-client";
|
|
8
6
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -10,11 +8,12 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
10
8
|
import { z } from "zod";
|
|
11
9
|
import { loadConfig } from "./config.js";
|
|
12
10
|
import { resolve } from "node:path";
|
|
11
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
13
12
|
import { fileRootFromEnv } from "./files.js";
|
|
14
|
-
import { resolveNodeTransport } from "
|
|
13
|
+
import { resolveNodeTransport } from "@mcsherrylabs/evolver-core";
|
|
15
14
|
import { toMcpResult } from "./mcp.js";
|
|
16
15
|
import { TOOLS } from "./tools.js";
|
|
17
|
-
import { loadSignerFromEnv } from "
|
|
16
|
+
import { loadSignerFromEnv, createSigningStore } from "@mcsherrylabs/evolver-core";
|
|
18
17
|
import { loadGroupKeyProviderFromEnv } from "./group-key-provider.js";
|
|
19
18
|
import { GroupCrypto } from "./group-crypto.js";
|
|
20
19
|
import { hasBootstrapFlag, runBootstrap } from "./bootstrap.js";
|
|
@@ -29,6 +28,7 @@ import { TransactionInterchange } from "./transaction-interchange.js";
|
|
|
29
28
|
import { loadTransactionPolicyFromEnv } from "./transaction-policy.js";
|
|
30
29
|
import { PUBLISHED_ATTACHMENT_SDK } from "./attachments.js";
|
|
31
30
|
import { createP2PService, p2pOriginFromEnv } from "./p2p.js";
|
|
31
|
+
import { resolveHttpAddress, resolveMaxSessions, startHttpListener } from "./http-transport.js";
|
|
32
32
|
// Startup must fit inside the host's handshake budget; ordinary tool/content requests keep the
|
|
33
33
|
// SDK's existing behavior. Each local listener gets at most 3s, including response-body parsing.
|
|
34
34
|
const STARTUP_PROBE_TIMEOUT_MS = 3000;
|
|
@@ -129,145 +129,274 @@ export async function main() {
|
|
|
129
129
|
process.stdout.write(r.output);
|
|
130
130
|
process.exit(r.exitCode);
|
|
131
131
|
}
|
|
132
|
-
const
|
|
132
|
+
const env = Object.freeze({ ...process.env });
|
|
133
|
+
const configPath = configPathFrom(process.argv, env);
|
|
133
134
|
const loaded = loadConfig(configPath ?? "");
|
|
134
135
|
if (!loaded.ok) {
|
|
135
136
|
console.error(`evolver-mcp: config error: ${loaded.error}`);
|
|
136
|
-
|
|
137
|
+
throw new Error("startup refused");
|
|
137
138
|
}
|
|
138
139
|
const config = loaded.config;
|
|
139
140
|
const f = await resolveNodeTransport(config.tls);
|
|
140
141
|
if (!f.ok) {
|
|
141
142
|
console.error(`evolver-mcp: ${f.error}`);
|
|
142
|
-
|
|
143
|
+
throw new Error("startup refused");
|
|
143
144
|
}
|
|
144
|
-
const p2pConfig = p2pOriginFromEnv(process.env);
|
|
145
|
-
if (!p2pConfig.ok) {
|
|
146
|
-
console.error(`evolver-mcp: ${p2pConfig.error}`);
|
|
147
|
-
await f.close();
|
|
148
|
-
process.exit(1);
|
|
149
|
-
}
|
|
150
|
-
// Resolve the signing key EAGERLY, before the reachability probe: the key SOURCE is the
|
|
151
|
-
// environment, never the config file (D-07), and a launch without a usable key fails fast here
|
|
152
|
-
// rather than surfacing mid-call. The error names the path, never the key bytes.
|
|
153
|
-
const signerResult = loadSignerFromEnv(process.env);
|
|
154
|
-
if (!signerResult.ok) {
|
|
155
|
-
console.error(`evolver-mcp: signer error: ${signerResult.error}`);
|
|
156
|
-
process.exit(1);
|
|
157
|
-
}
|
|
158
|
-
// Separately opt-in to encryption; never infer an unwrapper from the transaction signer.
|
|
159
|
-
const groupProvider = loadGroupKeyProviderFromEnv(process.env, config.identity);
|
|
160
|
-
if (!groupProvider.ok) {
|
|
161
|
-
console.error(`evolver-mcp: ${groupProvider.error}`);
|
|
162
|
-
process.exit(1);
|
|
163
|
-
}
|
|
164
|
-
// The node endpoint comes from the config file, never a compile-time constant (SRV-02).
|
|
165
|
-
const client = new NodeClient({ baseUrl: config.url, fetch: f.fetch });
|
|
166
|
-
const groupCrypto = groupProvider.provider ? new GroupCrypto(groupProvider.provider, client) : undefined;
|
|
167
|
-
// The CONTENT endpoint is a SEPARATE listener, resolved from a single source — the
|
|
168
|
-
// `EVOLVER_CONTENT_URL` environment variable — and never derived from `config.url` (T-5-05).
|
|
169
|
-
// A launch without it fails fast here, naming the fix, rather than surfacing a confusing 404
|
|
170
|
-
// mid-call. The content client is built from that endpoint alone; it never reuses `config.url`.
|
|
171
|
-
const contentUrl = contentUrlFromEnv(process.env);
|
|
172
|
-
if (contentUrl === undefined) {
|
|
173
|
-
console.error("evolver-mcp: EVOLVER_CONTENT_URL is unset. Content PUT/GET hit the node's content " +
|
|
174
|
-
"listener (`ce.evolver.content.http-port`), a SEPARATE port from the chain API — it " +
|
|
175
|
-
"cannot be derived from the config `url`. Set EVOLVER_CONTENT_URL to the content " +
|
|
176
|
-
"listener address (e.g. http://127.0.0.1:8441) and relaunch.");
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
const contentClient = new NodeClient({ baseUrl: contentUrl, contentBaseUrl: contentUrl,
|
|
180
|
-
fetch: f.fetch, contentUploadTls: f.contentUploadTls });
|
|
181
|
-
// ONE host-only file capability. All file consumers share its descriptor, policy and slot.
|
|
182
|
-
// Protect the actual CLI-selected config as well as env-selected credentials/trust files.
|
|
183
145
|
let fileRoot;
|
|
146
|
+
let closeSessions = async () => { };
|
|
147
|
+
let cleanupPromise;
|
|
148
|
+
let detachInput = () => { };
|
|
149
|
+
let detachSignals = () => { };
|
|
150
|
+
// Publish the promise before close callbacks may re-enter shutdown synchronously.
|
|
151
|
+
const cleanup = () => cleanupPromise ??= Promise.resolve().then(async () => {
|
|
152
|
+
detachInput();
|
|
153
|
+
// Session tasks/handles first, then their shared file/TLS capability, exactly once.
|
|
154
|
+
try {
|
|
155
|
+
await closeSessions();
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
try {
|
|
159
|
+
await fileRoot?.close();
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
await f.close();
|
|
163
|
+
detachSignals();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
console.error("evolver-mcp: process resources released");
|
|
167
|
+
});
|
|
184
168
|
try {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
169
|
+
const p2pConfig = p2pOriginFromEnv(env);
|
|
170
|
+
if (!p2pConfig.ok) {
|
|
171
|
+
console.error(`evolver-mcp: ${p2pConfig.error}`);
|
|
172
|
+
throw new Error("startup refused");
|
|
173
|
+
}
|
|
174
|
+
// Resolve the signing key EAGERLY, before the reachability probe: the key SOURCE is the
|
|
175
|
+
// environment, never the config file (D-07), and a launch without a usable key fails fast here
|
|
176
|
+
// rather than surfacing mid-call. The error names the path, never the key bytes.
|
|
177
|
+
const signerResult = loadSignerFromEnv(env);
|
|
178
|
+
if (!signerResult.ok) {
|
|
179
|
+
console.error(`evolver-mcp: signer error: ${signerResult.error}`);
|
|
180
|
+
throw new Error("startup refused");
|
|
181
|
+
}
|
|
182
|
+
// Separately opt-in to encryption; never infer an unwrapper from the transaction signer.
|
|
183
|
+
const groupProvider = loadGroupKeyProviderFromEnv(env, config.identity);
|
|
184
|
+
if (!groupProvider.ok) {
|
|
185
|
+
console.error(`evolver-mcp: ${groupProvider.error}`);
|
|
186
|
+
throw new Error("startup refused");
|
|
187
|
+
}
|
|
188
|
+
// The immutable provider is process-owned. Each session constructs its own key handles.
|
|
189
|
+
// The CONTENT endpoint is a SEPARATE listener, resolved from a single source — the
|
|
190
|
+
// `EVOLVER_CONTENT_URL` environment variable — and never derived from `config.url` (T-5-05).
|
|
191
|
+
// A launch without it fails fast here, naming the fix, rather than surfacing a confusing 404
|
|
192
|
+
// mid-call. The content client is built from that endpoint alone; it never reuses `config.url`.
|
|
193
|
+
const contentUrl = contentUrlFromEnv(env);
|
|
194
|
+
if (contentUrl === undefined) {
|
|
195
|
+
console.error("evolver-mcp: EVOLVER_CONTENT_URL is unset. Content PUT/GET hit the node's content " +
|
|
196
|
+
"listener (`ce.evolver.content.http-port`), a SEPARATE port from the chain API — it " +
|
|
197
|
+
"cannot be derived from the config `url`. Set EVOLVER_CONTENT_URL to the content " +
|
|
198
|
+
"listener address (e.g. http://127.0.0.1:8441) and relaunch.");
|
|
199
|
+
throw new Error("startup refused");
|
|
200
|
+
}
|
|
201
|
+
// ONE host-only file capability. All file consumers share its descriptor, policy and slot.
|
|
202
|
+
// Protect the actual CLI-selected config as well as env-selected credentials/trust files.
|
|
203
|
+
try {
|
|
204
|
+
fileRoot = await fileRootFromEnv(env, [configPath, env.EVOLVER_KEY_PATH, config.tls?.caFile]
|
|
205
|
+
.filter((path) => typeof path === "string" && path.length > 0).map(path => resolve(path)));
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
console.error("evolver-mcp: file access configuration refused; use a dedicated owner-only0700 root outside configured key/policy/config/trust paths.");
|
|
209
|
+
throw new Error("startup refused");
|
|
210
|
+
}
|
|
211
|
+
// GET /content/<missing key> can start a distributed search. Stats reads only local state and
|
|
212
|
+
// identifies the content listener (unlike /status or an arbitrary 404). Never follow a redirect
|
|
213
|
+
// onto a different listener; use the same TLS-aware fetch as the runtime clients.
|
|
214
|
+
try {
|
|
215
|
+
await startupProbe(async (signal) => {
|
|
216
|
+
const res = await f.fetch(`${contentUrl.replace(/\/$/, "")}/content-stats`, {
|
|
217
|
+
headers: { Accept: "application/json" }, signal, redirect: "error",
|
|
218
|
+
});
|
|
219
|
+
if (res.status !== 200)
|
|
220
|
+
throw new Error(`content-stats: expected HTTP 200, got HTTP ${res.status}`);
|
|
221
|
+
if (!contentStatsSchema.safeParse(await res.json()).success)
|
|
222
|
+
throw new Error("content-stats: invalid content stats JSON");
|
|
200
223
|
});
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const startupClient = new NodeClient({
|
|
217
|
-
baseUrl: config.url,
|
|
218
|
-
fetch: (input, init) => f.fetch(input, { ...init, signal, redirect: "error" }),
|
|
224
|
+
}
|
|
225
|
+
catch (e) {
|
|
226
|
+
const cause = e instanceof Error ? e.message : String(e);
|
|
227
|
+
console.error(`evolver-mcp: content listener unreachable at ${contentUrl}: ${cause}`);
|
|
228
|
+
throw new Error("startup refused");
|
|
229
|
+
}
|
|
230
|
+
// Keep the deadline active through nodeStatus's res.json(), not just response headers. A
|
|
231
|
+
// separate startup client prevents its abort signal/deadline leaking into ordinary tool calls.
|
|
232
|
+
try {
|
|
233
|
+
await startupProbe(async (signal) => {
|
|
234
|
+
const startupClient = new NodeClient({
|
|
235
|
+
baseUrl: config.url,
|
|
236
|
+
fetch: (input, init) => f.fetch(input, { ...init, signal, redirect: "error" }),
|
|
237
|
+
});
|
|
238
|
+
await startupClient.nodeStatus();
|
|
219
239
|
});
|
|
220
|
-
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
const cause = e instanceof Error ? e.message : String(e);
|
|
243
|
+
console.error(`evolver-mcp: node unreachable at ${config.url}: ${cause}`);
|
|
244
|
+
throw new Error("startup refused");
|
|
245
|
+
}
|
|
246
|
+
// Exactly one thin client per session. No worker, database, observation authority, subscription
|
|
247
|
+
// mutation or collector is started here; operator pairing is explicit config.
|
|
248
|
+
const processor = config.processor ? new ProcessorClient(config.processor) : undefined;
|
|
249
|
+
/** Everything a session needs that is NOT per-session, captured once at startup. */
|
|
250
|
+
const shared = {
|
|
251
|
+
config, processor, fileRoot, contentUrl, groupProvider: groupProvider.provider,
|
|
252
|
+
signer: signerResult.signer, p2pOrigin: p2pConfig.origin, fetch: f.fetch, contentUploadTls: f.contentUploadTls,
|
|
253
|
+
applicationSigner: loadApplicationSignerFromEnv(env), loginProfiles: loadLoginProfilesFromEnv(env),
|
|
254
|
+
httpProfiles: loadHttpProfilesFromEnv(env), transactionPolicy: loadTransactionPolicyFromEnv(env),
|
|
255
|
+
approvalEnv: Object.freeze({ EVOLVER_HUMAN_APPROVAL: env.EVOLVER_HUMAN_APPROVAL }),
|
|
256
|
+
};
|
|
257
|
+
// ONE identity for the whole process. The transport decides how many sessions there are, never
|
|
258
|
+
// how many identities: the key and identity are read once, above, and nothing per-request can
|
|
259
|
+
// name either.
|
|
260
|
+
const transportMode = (env.EVOLVER_MCP_TRANSPORT?.trim() || "stdio").toLowerCase();
|
|
261
|
+
const shutdown = () => { void cleanup().catch(() => { process.exitCode = 1; }); };
|
|
262
|
+
const attachSignals = () => {
|
|
263
|
+
process.on("SIGINT", shutdown);
|
|
264
|
+
process.on("SIGTERM", shutdown);
|
|
265
|
+
detachSignals = () => { process.off("SIGINT", shutdown); process.off("SIGTERM", shutdown); };
|
|
266
|
+
};
|
|
267
|
+
if (transportMode === "stdio") {
|
|
268
|
+
const server = createSessionServer(shared);
|
|
269
|
+
closeSessions = () => server.close();
|
|
270
|
+
attachSignals();
|
|
271
|
+
const previousClose = server.server.onclose;
|
|
272
|
+
server.server.onclose = () => { previousClose?.(); shutdown(); };
|
|
273
|
+
// The SDK stdio transport does not forward stdin EOF to onclose. Own that lifecycle here.
|
|
274
|
+
process.stdin.once("end", shutdown);
|
|
275
|
+
process.stdin.once("close", shutdown);
|
|
276
|
+
detachInput = () => { process.stdin.off("end", shutdown); process.stdin.off("close", shutdown); };
|
|
277
|
+
await server.connect(new StdioServerTransport());
|
|
278
|
+
if (process.stdin.readableEnded || process.stdin.destroyed)
|
|
279
|
+
shutdown();
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (transportMode !== "http") {
|
|
283
|
+
console.error(`evolver-mcp: EVOLVER_MCP_TRANSPORT "${transportMode}" is not "stdio" or "http".`);
|
|
284
|
+
throw new Error("startup refused");
|
|
285
|
+
}
|
|
286
|
+
const address = resolveHttpAddress(env);
|
|
287
|
+
if (!address.ok) {
|
|
288
|
+
console.error(`evolver-mcp: ${address.error}`);
|
|
289
|
+
throw new Error("startup refused");
|
|
290
|
+
}
|
|
291
|
+
if (address.wildcard)
|
|
292
|
+
console.error(`evolver-mcp: WARNING binding ${address.host}:${address.port}. Any process that can reach this ` +
|
|
293
|
+
`address can sign as ${config.identity}; the network around it is the only control.`);
|
|
294
|
+
// Node's listening server itself keeps the process alive; no synthetic keepalive timer.
|
|
295
|
+
const http = await startHttpListener(address.host, address.port, {
|
|
296
|
+
maxSessions: resolveMaxSessions(env),
|
|
297
|
+
createSession: (_id, signal) => createSessionServer(shared, signal),
|
|
298
|
+
closeSession: (id) => console.error(`evolver-mcp: session ${id} resources released`),
|
|
299
|
+
log: (line) => console.error(line),
|
|
300
|
+
}).catch(async (e) => {
|
|
301
|
+
console.error(`evolver-mcp: cannot listen on ${address.host}:${address.port}: ${e instanceof Error ? e.message : String(e)}`);
|
|
302
|
+
throw new Error("startup refused");
|
|
221
303
|
});
|
|
304
|
+
closeSessions = http.close;
|
|
305
|
+
attachSignals();
|
|
306
|
+
const boundPort = http.server.address().port;
|
|
307
|
+
console.error(`evolver-mcp: serving Streamable HTTP on ${address.host}:${boundPort} (stdio clients must launch their own process)`);
|
|
222
308
|
}
|
|
223
|
-
catch (
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
process.
|
|
309
|
+
catch (error) {
|
|
310
|
+
if (!(error instanceof Error && error.message === "startup refused"))
|
|
311
|
+
console.error("evolver-mcp: startup failed; check host transport/capability configuration");
|
|
312
|
+
process.exitCode = 1;
|
|
313
|
+
await cleanup();
|
|
227
314
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
315
|
+
}
|
|
316
|
+
/** One MCP session: its OWN signing store, servers and per-session services. */
|
|
317
|
+
function createSessionServer(shared, lifetime) {
|
|
318
|
+
const { config, processor, fileRoot, contentUrl, p2pOrigin, applicationSigner: startupApplicationSigner } = shared;
|
|
319
|
+
const controller = new AbortController();
|
|
320
|
+
const revoke = () => controller.abort();
|
|
321
|
+
lifetime?.addEventListener("abort", revoke, { once: true });
|
|
322
|
+
if (lifetime?.aborted)
|
|
323
|
+
revoke();
|
|
324
|
+
const requestSignal = new AsyncLocalStorage();
|
|
325
|
+
const tasks = new Set();
|
|
326
|
+
const signal = () => requestSignal.getStore() ?? controller.signal;
|
|
327
|
+
const applicationSigner = startupApplicationSigner.ok ? { ...startupApplicationSigner,
|
|
328
|
+
signer: { ...startupApplicationSigner.signer, sign: (bytes) => {
|
|
329
|
+
signal().throwIfAborted();
|
|
330
|
+
return startupApplicationSigner.signer.sign(bytes);
|
|
331
|
+
} } } : startupApplicationSigner;
|
|
332
|
+
// Clients are cheap session adapters over process-owned TLS. Every read/body and submission
|
|
333
|
+
// observes revocation; a hung read cannot keep a revoked session's tasks alive indefinitely.
|
|
334
|
+
const fetch = (input, init) => {
|
|
335
|
+
const signals = [signal(), ...(init?.signal ? [init.signal] : [])];
|
|
336
|
+
signals.forEach(s => s.throwIfAborted());
|
|
337
|
+
return shared.fetch(input, { ...init, signal: AbortSignal.any(signals) });
|
|
338
|
+
};
|
|
339
|
+
const client = new NodeClient({ baseUrl: config.url, fetch });
|
|
340
|
+
const contentClient = new NodeClient({ baseUrl: contentUrl, contentBaseUrl: contentUrl, fetch,
|
|
341
|
+
contentUploadTls: shared.contentUploadTls });
|
|
342
|
+
const signer = { ...shared.signer, sign: bytes => { signal().throwIfAborted(); return shared.signer.sign(bytes); } };
|
|
343
|
+
const groupCrypto = shared.groupProvider ? new GroupCrypto(shared.groupProvider, client) : undefined;
|
|
344
|
+
// THE per-session signing history. Two sessions never share one, so a txId signed in one is
|
|
345
|
+
// `not_signed_here` in the other — the property the HTTP transport depends on.
|
|
346
|
+
const signingStore = createSigningStore();
|
|
231
347
|
const server = new McpServer({ name: "evolver-mcp", version: "0.1.0" });
|
|
232
348
|
// One host identity/approval/attempt boundary across login and caller-described HTTP.
|
|
233
349
|
// Never inherit operational BLS or insecure node TLS for the relying-service surface.
|
|
234
|
-
const
|
|
235
|
-
const approve = createHumanApproval(server, process.env);
|
|
350
|
+
const approve = createHumanApproval(server, shared.approvalEnv);
|
|
236
351
|
const proofAttempts = createProofAttemptGuard();
|
|
237
352
|
const login = createLoginService({ identity: config.identity, reads: client,
|
|
238
|
-
profiles:
|
|
353
|
+
profiles: shared.loginProfiles, applicationSigner, approve, attempts: proofAttempts, fetch });
|
|
239
354
|
// Published root SDK factory owns fixed-origin DNS/connect/TLS/cancellation. Only immutable
|
|
240
355
|
// host profile options reach it; NEVER substitute global fetch or the node's TLS-aware fetch.
|
|
241
356
|
const signedHttp = createSignedHttpService({ identity: config.identity, reads: client,
|
|
242
|
-
profiles:
|
|
357
|
+
profiles: shared.httpProfiles, applicationSigner, approve, attempts: proofAttempts,
|
|
243
358
|
transport: createApprovedRequestFetch });
|
|
244
359
|
// Existing orchestration consumes actual public registry helpers; no parser/codec fallback.
|
|
245
360
|
const transactionInterchange = new TransactionInterchange({ identity: config.identity,
|
|
246
|
-
chainUrl: config.url, signer
|
|
247
|
-
policy:
|
|
361
|
+
chainUrl: config.url, signer, reads: client, store: signingStore,
|
|
362
|
+
policy: shared.transactionPolicy, approve: createTextHumanApproval(server, shared.approvalEnv),
|
|
248
363
|
files: fileRoot, sdk: { decodeSignedTransaction, verifySignedTransaction, addTransactionAuthorization },
|
|
249
364
|
submitTx: bytes => client.submitTx(bytes), submitTxWithDa: bytes => client.submitTxWithDa(bytes) });
|
|
250
|
-
const p2p =
|
|
251
|
-
reads: client, relay: { origin:
|
|
252
|
-
client: new NodeClient({ p2pBaseUrl:
|
|
365
|
+
const p2p = p2pOrigin ? createP2PService({ identity: config.identity, applicationSigner,
|
|
366
|
+
reads: client, relay: { origin: p2pOrigin,
|
|
367
|
+
client: new NodeClient({ p2pBaseUrl: p2pOrigin, fetch }) } }) : undefined;
|
|
253
368
|
const previousClose = server.server.onclose;
|
|
254
369
|
server.server.onclose = () => {
|
|
370
|
+
revoke();
|
|
255
371
|
previousClose?.();
|
|
256
372
|
p2p?.close();
|
|
257
373
|
groupCrypto?.handles.close();
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
374
|
+
};
|
|
375
|
+
const protocolClose = server.close.bind(server);
|
|
376
|
+
let closePromise;
|
|
377
|
+
server.close = () => {
|
|
378
|
+
revoke();
|
|
379
|
+
return closePromise ??= Promise.resolve().then(async () => {
|
|
380
|
+
try {
|
|
381
|
+
await protocolClose();
|
|
382
|
+
}
|
|
383
|
+
finally {
|
|
384
|
+
await Promise.allSettled([...tasks]);
|
|
385
|
+
lifetime?.removeEventListener("abort", revoke);
|
|
386
|
+
// No task can record after this drain. Neither records nor bytes survive a closed session.
|
|
387
|
+
signingStore.signed.clear();
|
|
388
|
+
signingStore.bytes.clear();
|
|
389
|
+
signingStore.submitted.clear();
|
|
390
|
+
signingStore.pendingOwnership.clear();
|
|
391
|
+
}
|
|
392
|
+
});
|
|
265
393
|
};
|
|
266
394
|
const ctx = {
|
|
267
395
|
client,
|
|
268
396
|
config,
|
|
269
397
|
identity: config.identity,
|
|
270
|
-
signer
|
|
398
|
+
signer,
|
|
399
|
+
signingStore,
|
|
271
400
|
submitTx: (bytes) => client.submitTx(bytes),
|
|
272
401
|
submitTxWithDa: (bytes) => client.submitTxWithDa(bytes),
|
|
273
402
|
claim: (args) => client.claimIdentityWithProofs(args),
|
|
@@ -286,16 +415,26 @@ export async function main() {
|
|
|
286
415
|
};
|
|
287
416
|
for (const tool of TOOLS) {
|
|
288
417
|
server.registerTool(tool.name, { title: tool.label, description: tool.description, inputSchema: toZod(tool.parameters) }, async (params, extra) => {
|
|
289
|
-
const
|
|
290
|
-
//
|
|
291
|
-
//
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
418
|
+
const combined = AbortSignal.any([controller.signal, extra.signal]);
|
|
419
|
+
// Check before submitSigned enters its synchronous claim/send region. Once a transport
|
|
420
|
+
// was invoked, core preserves the original id and UNKNOWN semantics; never erase its guard.
|
|
421
|
+
combined.throwIfAborted();
|
|
422
|
+
const task = requestSignal.run(combined, async () => {
|
|
423
|
+
const r = await tool.run({ ...ctx, signal: combined }, (params ?? {}));
|
|
424
|
+
if (r !== null && typeof r === "object" && "content" in r && "isError" in r)
|
|
425
|
+
return r;
|
|
426
|
+
return toMcpResult(r);
|
|
427
|
+
});
|
|
428
|
+
tasks.add(task);
|
|
429
|
+
try {
|
|
430
|
+
return await task;
|
|
431
|
+
}
|
|
432
|
+
finally {
|
|
433
|
+
tasks.delete(task);
|
|
434
|
+
}
|
|
296
435
|
});
|
|
297
436
|
}
|
|
298
|
-
|
|
437
|
+
return server;
|
|
299
438
|
}
|
|
300
439
|
// Run as the direct entry only (`node dist/index.js`). When imported as a module (e.g. by the
|
|
301
440
|
// package `bin` in dist/cli.js), the importer calls `main()` itself so it does not double-run.
|
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,27 @@
|
|
|
1
|
+
export interface InstalledHttp {
|
|
2
|
+
readonly image: string;
|
|
3
|
+
readonly port: string;
|
|
4
|
+
readonly hostPort: string;
|
|
5
|
+
readonly stateHostDir: string;
|
|
6
|
+
readonly stateClientDir: string;
|
|
7
|
+
readonly identity: string;
|
|
8
|
+
readonly clientUrl: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function absoluteDirectory(value: string, name: string): string;
|
|
11
|
+
export declare function managedUrl(value: string, name: string, path?: string): string;
|
|
12
|
+
export declare function installedHttp(env: NodeJS.ProcessEnv, identity: string | undefined, ports: readonly string[]): InstalledHttp | undefined;
|
|
13
|
+
export declare function httpComposeEnv(http: InstalledHttp): NodeJS.ProcessEnv;
|
|
14
|
+
export declare function containerConfig(identity: string, binding: {
|
|
15
|
+
chainId: string;
|
|
16
|
+
nodeId: string;
|
|
17
|
+
}): string;
|
|
18
|
+
export declare function verifyHttpService(url: string, timeoutMs?: number): Promise<void>;
|
|
19
|
+
export declare const containerConfigPath: (http: InstalledHttp) => string;
|
|
20
|
+
export declare function refuseDirectoryOverlap(agent: string, control: string): void;
|
|
21
|
+
/** Read-only preflight, repeated at publication to reject races or deliberate config changes. */
|
|
22
|
+
export declare function validateHttpConfig(file: string, expected: string): void;
|
|
23
|
+
export declare function writeHttpConfig(file: string, text: string): void;
|
|
24
|
+
/** Detached Compose up is not readiness. Bound the COMPLETE protocol check, including DELETE,
|
|
25
|
+
* then retry only until the operator's install deadline; each attempt disposes its own session. */
|
|
26
|
+
export declare function waitHttpService(url: string, timeoutMs: number): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=install-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-http.d.ts","sourceRoot":"","sources":["../src/install-http.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrE;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,MAAM,CAMzE;AACD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,GAAG,SAAS,CAkBvI;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,UAAU,CAGrE;AACD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAGtG;AAID,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpF;AACD,eAAO,MAAM,mBAAmB,GAAI,MAAM,aAAa,KAAG,MAAuD,CAAC;AAalH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK3E;AACD,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKvE;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAahE;AACD;mGACmG;AACnG,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnF"}
|