@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.
Files changed (118) hide show
  1. package/deploy/docker-compose.http.yml +45 -0
  2. package/deploy/docker-compose.yml +4 -1
  3. package/dist/application-signer.d.ts +1 -1
  4. package/dist/application-signer.d.ts.map +1 -1
  5. package/dist/attachments.d.ts +1 -1
  6. package/dist/attachments.d.ts.map +1 -1
  7. package/dist/attachments.js +2 -2
  8. package/dist/attachments.js.map +1 -1
  9. package/dist/bootstrap.d.ts +36 -4
  10. package/dist/bootstrap.d.ts.map +1 -1
  11. package/dist/bootstrap.js +35 -11
  12. package/dist/bootstrap.js.map +1 -1
  13. package/dist/content-file-tools.js +1 -1
  14. package/dist/content-file-tools.js.map +1 -1
  15. package/dist/content-files.d.ts +1 -1
  16. package/dist/content-files.d.ts.map +1 -1
  17. package/dist/content-files.js +1 -1
  18. package/dist/content-files.js.map +1 -1
  19. package/dist/content-ranges.d.ts +1 -1
  20. package/dist/content-ranges.d.ts.map +1 -1
  21. package/dist/group-crypto-tools.js +1 -1
  22. package/dist/group-crypto-tools.js.map +1 -1
  23. package/dist/group-crypto.d.ts +2 -2
  24. package/dist/group-crypto.d.ts.map +1 -1
  25. package/dist/group-crypto.js +1 -1
  26. package/dist/group-crypto.js.map +1 -1
  27. package/dist/http-transport.d.ts +87 -0
  28. package/dist/http-transport.d.ts.map +1 -0
  29. package/dist/http-transport.js +359 -0
  30. package/dist/http-transport.js.map +1 -0
  31. package/dist/inbox.d.ts +1 -1
  32. package/dist/inbox.d.ts.map +1 -1
  33. package/dist/inbox.js +1 -1
  34. package/dist/inbox.js.map +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +254 -115
  37. package/dist/index.js.map +1 -1
  38. package/dist/install-http.d.ts +27 -0
  39. package/dist/install-http.d.ts.map +1 -0
  40. package/dist/install-http.js +192 -0
  41. package/dist/install-http.js.map +1 -0
  42. package/dist/install.d.ts +18 -0
  43. package/dist/install.d.ts.map +1 -1
  44. package/dist/install.js +128 -22
  45. package/dist/install.js.map +1 -1
  46. package/dist/login.d.ts +1 -1
  47. package/dist/login.d.ts.map +1 -1
  48. package/dist/mcp.d.ts +2 -2
  49. package/dist/mcp.d.ts.map +1 -1
  50. package/dist/p2p.d.ts +1 -1
  51. package/dist/p2p.d.ts.map +1 -1
  52. package/dist/p2p.js +1 -1
  53. package/dist/p2p.js.map +1 -1
  54. package/dist/processor.d.ts +1 -1
  55. package/dist/processor.d.ts.map +1 -1
  56. package/dist/processor.js +1 -1
  57. package/dist/processor.js.map +1 -1
  58. package/dist/signed-http.d.ts +1 -1
  59. package/dist/signed-http.d.ts.map +1 -1
  60. package/dist/tools.d.ts +5 -3
  61. package/dist/tools.d.ts.map +1 -1
  62. package/dist/tools.js +34 -34
  63. package/dist/tools.js.map +1 -1
  64. package/dist/transaction-interchange-tools.js +1 -1
  65. package/dist/transaction-interchange-tools.js.map +1 -1
  66. package/dist/transaction-interchange.d.ts +5 -2
  67. package/dist/transaction-interchange.d.ts.map +1 -1
  68. package/dist/transaction-interchange.js +10 -10
  69. package/dist/transaction-interchange.js.map +1 -1
  70. package/package.json +10 -16
  71. package/dist/amount.d.ts +0 -23
  72. package/dist/amount.d.ts.map +0 -1
  73. package/dist/amount.js +0 -53
  74. package/dist/amount.js.map +0 -1
  75. package/dist/channel.d.ts +0 -77
  76. package/dist/channel.d.ts.map +0 -1
  77. package/dist/channel.js +0 -287
  78. package/dist/channel.js.map +0 -1
  79. package/dist/claim.d.ts +0 -48
  80. package/dist/claim.d.ts.map +0 -1
  81. package/dist/claim.js +0 -81
  82. package/dist/claim.js.map +0 -1
  83. package/dist/content.d.ts +0 -94
  84. package/dist/content.d.ts.map +0 -1
  85. package/dist/content.js +0 -215
  86. package/dist/content.js.map +0 -1
  87. package/dist/group-ownership.d.ts +0 -78
  88. package/dist/group-ownership.d.ts.map +0 -1
  89. package/dist/group-ownership.js +0 -324
  90. package/dist/group-ownership.js.map +0 -1
  91. package/dist/group.d.ts +0 -60
  92. package/dist/group.d.ts.map +0 -1
  93. package/dist/group.js +0 -204
  94. package/dist/group.js.map +0 -1
  95. package/dist/identity.d.ts +0 -87
  96. package/dist/identity.d.ts.map +0 -1
  97. package/dist/identity.js +0 -236
  98. package/dist/identity.js.map +0 -1
  99. package/dist/node-transport.d.ts +0 -14
  100. package/dist/node-transport.d.ts.map +0 -1
  101. package/dist/node-transport.js +0 -54
  102. package/dist/node-transport.js.map +0 -1
  103. package/dist/read.d.ts +0 -252
  104. package/dist/read.d.ts.map +0 -1
  105. package/dist/read.js +0 -320
  106. package/dist/read.js.map +0 -1
  107. package/dist/result.d.ts +0 -110
  108. package/dist/result.d.ts.map +0 -1
  109. package/dist/result.js +0 -97
  110. package/dist/result.js.map +0 -1
  111. package/dist/signer.d.ts +0 -37
  112. package/dist/signer.d.ts.map +0 -1
  113. package/dist/signer.js +0 -76
  114. package/dist/signer.js.map +0 -1
  115. package/dist/write.d.ts +0 -214
  116. package/dist/write.d.ts.map +0 -1
  117. package/dist/write.js +0 -399
  118. package/dist/write.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,8 +1,6 @@
1
- // The stdio entrypoint: load the single config file, build the NodeClient for the configured
2
- // endpoint, prove reachability at startup, register the read tools, and serve JSON-RPC over stdio.
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 "./node-transport.js";
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 "./signer.js";
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 configPath = configPathFrom(process.argv, process.env);
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
- process.exit(1);
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
- process.exit(1);
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
- fileRoot = await fileRootFromEnv(process.env, [configPath, process.env.EVOLVER_KEY_PATH, config.tls?.caFile]
186
- .filter((path) => typeof path === "string" && path.length > 0).map(path => resolve(path)));
187
- }
188
- catch {
189
- console.error("evolver-mcp: file access configuration refused; use a dedicated owner-only0700 root outside configured key/policy/config/trust paths.");
190
- await f.close();
191
- process.exit(1);
192
- }
193
- // GET /content/<missing key> can start a distributed search. Stats reads only local state and
194
- // identifies the content listener (unlike /status or an arbitrary 404). Never follow a redirect
195
- // onto a different listener; use the same TLS-aware fetch as the runtime clients.
196
- try {
197
- await startupProbe(async (signal) => {
198
- const res = await f.fetch(`${contentUrl.replace(/\/$/, "")}/content-stats`, {
199
- headers: { Accept: "application/json" }, signal, redirect: "error",
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
- if (res.status !== 200)
202
- throw new Error(`content-stats: expected HTTP 200, got HTTP ${res.status}`);
203
- if (!contentStatsSchema.safeParse(await res.json()).success)
204
- throw new Error("content-stats: invalid content stats JSON");
205
- });
206
- }
207
- catch (e) {
208
- const cause = e instanceof Error ? e.message : String(e);
209
- console.error(`evolver-mcp: content listener unreachable at ${contentUrl}: ${cause}`);
210
- process.exit(1);
211
- }
212
- // Keep the deadline active through nodeStatus's res.json(), not just response headers. A
213
- // separate startup client prevents its abort signal/deadline leaking into ordinary tool calls.
214
- try {
215
- await startupProbe(async (signal) => {
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
- await startupClient.nodeStatus();
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 (e) {
224
- const cause = e instanceof Error ? e.message : String(e);
225
- console.error(`evolver-mcp: node unreachable at ${config.url}: ${cause}`);
226
- process.exit(1);
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
- // Exactly one thin client per stdio session. No worker, database, observation authority,
229
- // subscription mutation or collector is started here; operator pairing is explicit config.
230
- const processor = config.processor ? new ProcessorClient(config.processor) : undefined;
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 applicationSigner = loadApplicationSignerFromEnv(process.env);
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: loadLoginProfilesFromEnv(process.env), applicationSigner, approve, attempts: proofAttempts, fetch });
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: loadHttpProfilesFromEnv(process.env), applicationSigner, approve, attempts: proofAttempts,
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: signerResult.signer, reads: client,
247
- policy: loadTransactionPolicyFromEnv(process.env), approve: createTextHumanApproval(server, process.env),
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 = p2pConfig.origin ? createP2PService({ identity: config.identity, applicationSigner,
251
- reads: client, relay: { origin: p2pConfig.origin,
252
- client: new NodeClient({ p2pBaseUrl: p2pConfig.origin, fetch: f.fetch }) } }) : undefined;
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
- void (async () => { try {
259
- await fileRoot?.close();
260
- }
261
- finally {
262
- await f.close();
263
- } })()
264
- .catch(() => console.error("evolver-mcp: session resource cleanup incomplete; operator inspection may be required."));
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: signerResult.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 r = await tool.run({ ...ctx, signal: extra.signal }, (params ?? {}));
290
- // Write tools return an already-mapped MCP result (SubmissionOutcome → {content,isError});
291
- // read tools return a ToolResult, mapped here. Distinguish by shape: an MCP result carries
292
- // a `content` array.
293
- if (r !== null && typeof r === "object" && "content" in r && "isError" in r)
294
- return r;
295
- return toMcpResult(r);
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
- await server.connect(new StdioServerTransport());
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"}