@sentropic/h2a 0.97.2 → 0.97.4

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 (94) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/dist/bin.js +13 -0
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli.d.ts +13 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +94 -37
  8. package/dist/cli.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/mcp.d.ts +1 -1
  11. package/dist/mcp.d.ts.map +1 -1
  12. package/dist/mcp.js +2 -0
  13. package/dist/mcp.js.map +1 -1
  14. package/dist/runtime/identity/bindings.d.ts +33 -0
  15. package/dist/runtime/identity/bindings.d.ts.map +1 -1
  16. package/dist/runtime/identity/bindings.js +65 -2
  17. package/dist/runtime/identity/bindings.js.map +1 -1
  18. package/dist/runtime/identity/index.d.ts +4 -4
  19. package/dist/runtime/identity/index.d.ts.map +1 -1
  20. package/dist/runtime/identity/index.js +2 -2
  21. package/dist/runtime/identity/index.js.map +1 -1
  22. package/dist/runtime/identity/live.d.ts +63 -0
  23. package/dist/runtime/identity/live.d.ts.map +1 -1
  24. package/dist/runtime/identity/live.js +346 -65
  25. package/dist/runtime/identity/live.js.map +1 -1
  26. package/dist/runtime/identity/worker.d.ts +19 -0
  27. package/dist/runtime/identity/worker.d.ts.map +1 -0
  28. package/dist/runtime/identity/worker.js +189 -0
  29. package/dist/runtime/identity/worker.js.map +1 -0
  30. package/dist/runtime/local-files/locks.d.ts +34 -0
  31. package/dist/runtime/local-files/locks.d.ts.map +1 -1
  32. package/dist/runtime/local-files/locks.js +55 -2
  33. package/dist/runtime/local-files/locks.js.map +1 -1
  34. package/dist/runtime/local-files/store.d.ts +21 -0
  35. package/dist/runtime/local-files/store.d.ts.map +1 -1
  36. package/dist/runtime/local-files/store.js +79 -10
  37. package/dist/runtime/local-files/store.js.map +1 -1
  38. package/dist/runtime/mcp/discovery-pagination.d.ts +73 -0
  39. package/dist/runtime/mcp/discovery-pagination.d.ts.map +1 -0
  40. package/dist/runtime/mcp/discovery-pagination.js +446 -0
  41. package/dist/runtime/mcp/discovery-pagination.js.map +1 -0
  42. package/dist/runtime/mcp/frame-budget.d.ts +149 -0
  43. package/dist/runtime/mcp/frame-budget.d.ts.map +1 -0
  44. package/dist/runtime/mcp/frame-budget.js +275 -0
  45. package/dist/runtime/mcp/frame-budget.js.map +1 -0
  46. package/dist/runtime/mcp/handlers.d.ts +14 -3
  47. package/dist/runtime/mcp/handlers.d.ts.map +1 -1
  48. package/dist/runtime/mcp/handlers.js +22 -1
  49. package/dist/runtime/mcp/handlers.js.map +1 -1
  50. package/dist/runtime/mcp/identity-state.d.ts +131 -0
  51. package/dist/runtime/mcp/identity-state.d.ts.map +1 -0
  52. package/dist/runtime/mcp/identity-state.js +288 -0
  53. package/dist/runtime/mcp/identity-state.js.map +1 -0
  54. package/dist/runtime/mcp/index.d.ts +2 -0
  55. package/dist/runtime/mcp/index.d.ts.map +1 -1
  56. package/dist/runtime/mcp/index.js +2 -0
  57. package/dist/runtime/mcp/index.js.map +1 -1
  58. package/dist/runtime/mcp/notifications.d.ts +13 -1
  59. package/dist/runtime/mcp/notifications.d.ts.map +1 -1
  60. package/dist/runtime/mcp/notifications.js +36 -20
  61. package/dist/runtime/mcp/notifications.js.map +1 -1
  62. package/dist/runtime/mcp/payload-store.d.ts +67 -0
  63. package/dist/runtime/mcp/payload-store.d.ts.map +1 -0
  64. package/dist/runtime/mcp/payload-store.js +242 -0
  65. package/dist/runtime/mcp/payload-store.js.map +1 -0
  66. package/dist/runtime/mcp/phase-trace.d.ts +98 -0
  67. package/dist/runtime/mcp/phase-trace.d.ts.map +1 -0
  68. package/dist/runtime/mcp/phase-trace.js +179 -0
  69. package/dist/runtime/mcp/phase-trace.js.map +1 -0
  70. package/dist/runtime/mcp/server.d.ts +36 -1
  71. package/dist/runtime/mcp/server.d.ts.map +1 -1
  72. package/dist/runtime/mcp/server.js +162 -5
  73. package/dist/runtime/mcp/server.js.map +1 -1
  74. package/dist/runtime/mcp/sessions.d.ts +12 -2
  75. package/dist/runtime/mcp/sessions.d.ts.map +1 -1
  76. package/dist/runtime/mcp/sessions.js +15 -3
  77. package/dist/runtime/mcp/sessions.js.map +1 -1
  78. package/dist/runtime/mcp/stdio.d.ts +21 -0
  79. package/dist/runtime/mcp/stdio.d.ts.map +1 -1
  80. package/dist/runtime/mcp/stdio.js +378 -98
  81. package/dist/runtime/mcp/stdio.js.map +1 -1
  82. package/dist/runtime/mcp/tools.d.ts.map +1 -1
  83. package/dist/runtime/mcp/tools.js +47 -4
  84. package/dist/runtime/mcp/tools.js.map +1 -1
  85. package/dist/runtime/mcp-central.d.ts.map +1 -1
  86. package/dist/runtime/mcp-central.js +17 -7
  87. package/dist/runtime/mcp-central.js.map +1 -1
  88. package/dist/runtime/mcp-http/hosted-mcp-server.d.ts.map +1 -1
  89. package/dist/runtime/mcp-http/hosted-mcp-server.js +16 -6
  90. package/dist/runtime/mcp-http/hosted-mcp-server.js.map +1 -1
  91. package/dist/runtime/mcp-http/readonly-allowlist.d.ts.map +1 -1
  92. package/dist/runtime/mcp-http/readonly-allowlist.js +6 -0
  93. package/dist/runtime/mcp-http/readonly-allowlist.js.map +1 -1
  94. package/package.json +3 -3
@@ -5,6 +5,9 @@ import { SessionRegistry, type SessionRegistryOptions } from "./sessions.js";
5
5
  import { type McpToolDescriptor } from "./tools.js";
6
6
  import { type H2aRunDelegation, type H2aRunExecutor } from "./agent-launch.js";
7
7
  import type { H2ASendSigner } from "../send.js";
8
+ import { type PayloadStore } from "./payload-store.js";
9
+ import { type FrameBudget } from "./frame-budget.js";
10
+ import type { McpIdentityController } from "./identity-state.js";
8
11
  export interface CreateMcpServerOptions {
9
12
  /** Filesystem root for the backing local-files store. */
10
13
  root: string;
@@ -22,6 +25,20 @@ export interface CreateMcpServerOptions {
22
25
  store?: LocalStore;
23
26
  /** Trusted local sidecar identity used by h2a_send; never supplied by tool args. */
24
27
  sendContext?: H2ASendSigner;
28
+ /**
29
+ * L2: the asynchronous identity readiness controller. When present, mutating /
30
+ * signed / identity-requiring tools are refused with a bounded typed error
31
+ * while identity is `identity_pending` or `identity_failed`, and
32
+ * `h2a_identity_status` reports the live state. Absent → `identity_disabled`
33
+ * (the historical explicit mode) and no gating.
34
+ */
35
+ identity?: McpIdentityController;
36
+ /**
37
+ * L2: the LIVE signing identity, read on each `h2a_send` so a signer that only
38
+ * becomes available after asynchronous activation is picked up without
39
+ * rebuilding the server. Falls back to `sendContext` when absent.
40
+ */
41
+ getSendContext?: () => H2ASendSigner | undefined;
25
42
  /**
26
43
  * Optional SessionRegistry overrides. Disabled `autoHeartbeat` is the
27
44
  * sane default for in-process tests; the stdio transport enables it.
@@ -35,14 +52,32 @@ export interface CreateMcpServerOptions {
35
52
  intervalMs?: number;
36
53
  sink?: NotificationSink;
37
54
  };
55
+ /** L1: frame budget override (tests). Defaults to `resolveFrameBudget()`. */
56
+ frameBudget?: FrameBudget;
57
+ /**
58
+ * L2: when `false`, the auto-created store does NOT initialize the layout
59
+ * (no directory / sentinel / file writes) so `initialize` / `tools/list` /
60
+ * `h2a_identity_status` and every read-only tool answer on a read-only or
61
+ * not-yet-created root before identity is ready. Ignored when `store` is
62
+ * supplied. Default `true` (unchanged for existing callers).
63
+ */
64
+ storeInitialize?: boolean;
65
+ }
66
+ /** L1: optional per-call transport context (reserved for exact-id budgeting). */
67
+ export interface McpCallContext {
68
+ readonly budget?: FrameBudget;
38
69
  }
39
70
  export interface McpServer {
40
71
  listTools(): McpToolDescriptor[];
41
- callTool(name: string, args: Record<string, unknown> | undefined): McpToolResult | McpErrorResult | McpTransportResult;
72
+ callTool(name: string, args: Record<string, unknown> | undefined, context?: McpCallContext): McpToolResult | McpErrorResult | McpTransportResult;
42
73
  /** Per-server SessionRegistry, exposed for transport-layer shutdown hooks. */
43
74
  readonly sessions: SessionRegistry;
44
75
  /** Per-server NotificationDispatcher (DEC-052). */
45
76
  readonly notifications: NotificationDispatcher;
77
+ /** L1: per-root durable store for oversize output recovery. */
78
+ readonly payloadStore: PayloadStore;
79
+ /** L1: the frame budget bounding every emission of this server. */
80
+ readonly frameBudget: FrameBudget;
46
81
  }
47
82
  /** A tool result already formatted for the MCP transport (used by Track reads). */
48
83
  export interface McpTransportResult {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAsCL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,oFAAoF;IACpF,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;;OAGG;IACH,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,gBAAgB,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,iBAAiB,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,kBAAkB,CAAC;IACvH,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;CAChD;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAOhF;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CA+I1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@ import { H2A_CLI_MCP_TOOL_DESCRIPTORS } from "./tools.js";
6
6
  import { TRACK_READ_TOOL_DESCRIPTORS, callTrackReadTool } from "@sentropic/track/mcp";
7
7
  import { H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS } from "@sentropic/h2a";
8
8
  import { executeH2aRun, handleH2aRun, recordMcpRunDelegation } from "./agent-launch.js";
9
+ import { createDiscoveryPager } from "./discovery-pagination.js";
10
+ import { createPayloadStore } from "./payload-store.js";
11
+ import { resolveFrameBudget } from "./frame-budget.js";
12
+ import { PAYLOAD_MAX_READ_BYTES } from "./payload-store.js";
13
+ import { H2A_CLI_MCP_TOOL_NAMES } from "../../mcp.js";
9
14
  export function isMcpTransportResult(value) {
10
15
  return (typeof value === "object" &&
11
16
  value !== null &&
@@ -13,6 +18,70 @@ export function isMcpTransportResult(value) {
13
18
  Array.isArray(value.content));
14
19
  }
15
20
  const TRACK_READ_TOOL_NAMES = new Set(TRACK_READ_TOOL_DESCRIPTORS.map((tool) => tool.name));
21
+ /** Every tool name the server actually implements (h2a + Track read surface). */
22
+ const KNOWN_TOOL_NAMES = new Set([
23
+ ...H2A_CLI_MCP_TOOL_NAMES,
24
+ ...TRACK_READ_TOOL_NAMES
25
+ ]);
26
+ /**
27
+ * L2: the tools that stay available while identity is pending/failed — a MCP
28
+ * connection is up even though the shared identity is not yet bound. Every one
29
+ * of these is a pure READ that needs no signing identity and performs no
30
+ * implicit write; each was audited against its handler. `h2a_inbox` is allowed
31
+ * ONLY for `action:"read"` (checked at the call site). `h2a_conductor_launch_check`
32
+ * is deliberately NOT here (its read path still has effects) and every unlisted
33
+ * known tool is refused by default. Track read tools are always allowed.
34
+ */
35
+ const IDENTITY_INDEPENDENT_TOOLS = new Set([
36
+ "h2a_identity_status",
37
+ "h2a_read_payload",
38
+ "h2a_discover_instances",
39
+ "h2a_discover_sessions",
40
+ "h2a_conflict_posture",
41
+ "h2a_nhi_report",
42
+ "h2a_nhi_inventory",
43
+ "h2a_nhi_export",
44
+ "h2a_blockage_list",
45
+ "h2a_conductor",
46
+ "h2a_loop_list",
47
+ "h2a_loop_status"
48
+ ]);
49
+ /** A bounded typed error emitted for a guarded tool while identity is pending. */
50
+ function identityPendingError() {
51
+ return {
52
+ content: [
53
+ {
54
+ type: "text",
55
+ text: JSON.stringify({
56
+ error: "identity_pending",
57
+ code: "identity_pending",
58
+ message: "identity is not ready",
59
+ retryable: true,
60
+ retryAfterMs: 250
61
+ })
62
+ }
63
+ ],
64
+ isError: true
65
+ };
66
+ }
67
+ /** A bounded typed error emitted for a guarded tool after identity failed. */
68
+ function identityFailedError(cause) {
69
+ return {
70
+ content: [
71
+ {
72
+ type: "text",
73
+ text: JSON.stringify({
74
+ error: "identity_failed",
75
+ code: "identity_failed",
76
+ cause,
77
+ message: "identity initialization failed; reconnect after correcting the cause",
78
+ retryable: false
79
+ })
80
+ }
81
+ ],
82
+ isError: true
83
+ };
84
+ }
16
85
  /**
17
86
  * Build an in-process MCP server backed by the local-files runtime.
18
87
  *
@@ -21,14 +90,61 @@ const TRACK_READ_TOOL_NAMES = new Set(TRACK_READ_TOOL_DESCRIPTORS.map((tool) =>
21
90
  * unit-tested today and wrapped in a real MCP transport in a later slice.
22
91
  */
23
92
  export function createMcpServer(options) {
24
- const store = options.store ?? createLocalStore({ root: options.root });
93
+ const store = options.store ??
94
+ createLocalStore({
95
+ root: options.root,
96
+ ...(options.storeInitialize === false ? { initialize: false } : {})
97
+ });
25
98
  const sessions = new SessionRegistry(options.root, {
26
99
  autoHeartbeat: false,
27
100
  ...(options.sessions ?? {})
28
101
  });
29
102
  const notifications = new NotificationDispatcher(sessions, store, options.root, options.notifications?.sink, options.notifications?.intervalMs ??
30
103
  H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS);
31
- function callTool(name, args) {
104
+ // L1: per-root recovery store + per-server paginating discovery pager. The
105
+ // pager carries a random per-instance HMAC secret + epoch, so a cursor from a
106
+ // restarted server fails `cursor_stale` (never a silent first page).
107
+ const frameBudget = options.frameBudget ?? resolveFrameBudget();
108
+ const payloadStore = createPayloadStore(options.root);
109
+ const discoveryPager = createDiscoveryPager(store, {
110
+ budget: frameBudget,
111
+ payloadStore
112
+ });
113
+ /** L2: report the live identity readiness state (memory-only, no disk read). */
114
+ function identityStatus() {
115
+ return options.identity ? options.identity.status() : { state: "identity_disabled" };
116
+ }
117
+ /**
118
+ * L2 guard: while identity is pending/failed, refuse a KNOWN tool that is not
119
+ * identity-independent (and refuse `h2a_inbox` unless it is a read) with a
120
+ * bounded typed error. Returns undefined to let the call proceed. An UNKNOWN
121
+ * name is left to fall through to the switch's "unknown tool" error.
122
+ */
123
+ function guardIdentity(name, args) {
124
+ if (!options.identity)
125
+ return undefined;
126
+ const st = options.identity.status();
127
+ if (st.state === "identity_ready" || st.state === "identity_disabled")
128
+ return undefined;
129
+ if (!KNOWN_TOOL_NAMES.has(name))
130
+ return undefined; // unknown → switch handles it
131
+ if (TRACK_READ_TOOL_NAMES.has(name))
132
+ return undefined;
133
+ if (IDENTITY_INDEPENDENT_TOOLS.has(name))
134
+ return undefined;
135
+ if (name === "h2a_inbox" && (args?.action === "read"))
136
+ return undefined;
137
+ return st.state === "identity_pending"
138
+ ? identityPendingError()
139
+ : identityFailedError(st.cause);
140
+ }
141
+ function callTool(name, args, _context) {
142
+ if (name === "h2a_identity_status") {
143
+ return { content: [{ type: "text", text: JSON.stringify(identityStatus()) }] };
144
+ }
145
+ const guard = guardIdentity(name, args);
146
+ if (guard)
147
+ return guard;
32
148
  if (TRACK_READ_TOOL_NAMES.has(name)) {
33
149
  try {
34
150
  const result = callTrackReadTool({ cwd: options.workspaceRoot ?? process.cwd() }, name, args ?? {});
@@ -56,11 +172,13 @@ export function createMcpServer(options) {
56
172
  case "h2a_register_instance":
57
173
  return handleRegisterInstance(store, args);
58
174
  case "h2a_discover_instances":
59
- return handleDiscoverInstances(store, args);
175
+ return handleDiscoverInstances(store, args, discoveryPager);
176
+ case "h2a_read_payload":
177
+ return handleReadPayload(payloadStore, args, frameBudget);
60
178
  case "h2a_inbox":
61
179
  return handleInbox(store, args);
62
180
  case "h2a_send":
63
- return handleSend(store, options.sendContext, args);
181
+ return handleSend(store, options.getSendContext?.() ?? options.sendContext, args);
64
182
  case "h2a_append_journal":
65
183
  return handleAppendJournal(store, args);
66
184
  case "h2a_open_negotiation":
@@ -142,7 +260,46 @@ export function createMcpServer(options) {
142
260
  listTools: () => H2A_CLI_MCP_TOOL_DESCRIPTORS.slice(),
143
261
  callTool,
144
262
  sessions,
145
- notifications
263
+ notifications,
264
+ payloadStore,
265
+ frameBudget
146
266
  };
147
267
  }
268
+ /**
269
+ * L1 `h2a_read_payload`: chunked, read-only recovery of an oversize output's
270
+ * INTACT bytes (base64), so "recover" never points at another too-big response.
271
+ * Tenant-confined by the per-root store; needs no signing identity. It never
272
+ * re-runs an effectful tool — it returns already-produced bytes.
273
+ */
274
+ function handleReadPayload(payloadStore, args, budget) {
275
+ const toolError = (code, message) => ({
276
+ content: [{ type: "text", text: JSON.stringify({ code, message }) }],
277
+ isError: true
278
+ });
279
+ const ref = args?.ref;
280
+ if (typeof ref !== "string" || ref.length === 0) {
281
+ return toolError("payload_not_found", "ref is required");
282
+ }
283
+ const rawOffset = args?.offset;
284
+ if (rawOffset !== undefined && (typeof rawOffset !== "number" || !Number.isInteger(rawOffset) || rawOffset < 0)) {
285
+ return toolError("invalid_offset", "offset must be a non-negative integer");
286
+ }
287
+ const rawMax = args?.maxBytes;
288
+ if (rawMax !== undefined &&
289
+ (typeof rawMax !== "number" || !Number.isInteger(rawMax) || rawMax < 1 || rawMax > PAYLOAD_MAX_READ_BYTES)) {
290
+ return toolError("invalid_offset", "maxBytes must be an integer between 1 and 65536");
291
+ }
292
+ const offset = typeof rawOffset === "number" ? rawOffset : 0;
293
+ const requested = typeof rawMax === "number" ? rawMax : PAYLOAD_MAX_READ_BYTES;
294
+ // maxBytes is a MAXIMUM: reduce the chunk further so the FINAL serialized frame
295
+ // (base64 ≈ 4/3 expansion + the JSON envelope, double-encoded into content
296
+ // text) stays within the budget — a recovery read must never itself overflow.
297
+ const budgetChunk = Math.max(1, Math.floor((budget.maxBytes - 4096) * 3 / 4));
298
+ const maxBytes = Math.max(1, Math.min(requested, budgetChunk));
299
+ const result = payloadStore.readPayload(ref, offset, maxBytes);
300
+ if ("error" in result) {
301
+ return toolError(result.error, `payload read failed: ${result.error}`);
302
+ }
303
+ return { content: [{ type: "text", text: JSON.stringify(result) }] };
304
+ }
148
305
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -76,8 +76,18 @@ export declare class SessionRegistry {
76
76
  markActivity(sessionId: string): void;
77
77
  /** Snapshot of in-memory sessions held by this process. */
78
78
  list(): H2ASession[];
79
- /** Scan all presence files under root (own + peers), filtered by freshness. */
80
- scanFresh(now?: number): H2ASession[];
79
+ /**
80
+ * Scan all presence files under root (own + peers), filtered by freshness.
81
+ *
82
+ * L2: `sweep:false` performs a DEGRADED read that never deletes a stale/
83
+ * malformed presence file — used while identity is pending/failed (and on a
84
+ * read-only store) so a discovery / inbox-read stays a pure read and never
85
+ * attempts a write. The default (`sweep` omitted / true) keeps the historical
86
+ * best-effort cleanup.
87
+ */
88
+ scanFresh(now?: number, options?: {
89
+ sweep?: boolean;
90
+ }): H2ASession[];
81
91
  /**
82
92
  * Close every live session held by this process. Idempotent. Used by
83
93
  * mcp-serve's shutdown hook when stdin reaches EOF or a signal lands.
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AASxB,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnE,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC,yFAAyF;IACzF,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA6CD;;;;;GAKG;AACH,qBAAa,eAAe;IAOxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAGrB,IAAI,EAAE,MAAM,EAC7B,OAAO,GAAE,sBAA2B;IAQtC,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;IA2C7C,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,eAA0B,GAAG,UAAU,GAAG,SAAS;IAgBxF;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,GAChC,IAAI;IAMP;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;IAavB,6EAA6E;IAC7E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAyBhD;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC,2DAA2D;IAC3D,IAAI,IAAI,UAAU,EAAE;IAIpB,+EAA+E;IAC/E,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,UAAU,EAAE;IAIjD;;;OAGG;IACH,QAAQ,CAAC,UAAU,GAAE,eAA0B,GAAG,IAAI;CASvD"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AASxB,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnE,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC,yFAAyF;IACzF,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA6CD;;;;;GAKG;AACH,qBAAa,eAAe;IAOxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAGrB,IAAI,EAAE,MAAM,EAC7B,OAAO,GAAE,sBAA2B;IAQtC,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;IA2C7C,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,eAA0B,GAAG,UAAU,GAAG,SAAS;IAgBxF;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,GAChC,IAAI;IAMP;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;IAavB,6EAA6E;IAC7E,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAyBhD;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC,2DAA2D;IAC3D,IAAI,IAAI,UAAU,EAAE;IAIpB;;;;;;;;OAQG;IACH,SAAS,CAAC,GAAG,GAAE,MAAmB,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,EAAE;IAQhF;;;OAGG;IACH,QAAQ,CAAC,UAAU,GAAE,eAA0B,GAAG,IAAI;CASvD"}
@@ -172,9 +172,21 @@ export class SessionRegistry {
172
172
  list() {
173
173
  return Array.from(this.entries.values(), (entry) => entry.session);
174
174
  }
175
- /** Scan all presence files under root (own + peers), filtered by freshness. */
176
- scanFresh(now = Date.now()) {
177
- return listPresence(this.root, { now, expiryMs: this.expiryMs });
175
+ /**
176
+ * Scan all presence files under root (own + peers), filtered by freshness.
177
+ *
178
+ * L2: `sweep:false` performs a DEGRADED read that never deletes a stale/
179
+ * malformed presence file — used while identity is pending/failed (and on a
180
+ * read-only store) so a discovery / inbox-read stays a pure read and never
181
+ * attempts a write. The default (`sweep` omitted / true) keeps the historical
182
+ * best-effort cleanup.
183
+ */
184
+ scanFresh(now = Date.now(), options) {
185
+ return listPresence(this.root, {
186
+ now,
187
+ expiryMs: this.expiryMs,
188
+ ...(options?.sweep !== undefined ? { sweep: options.sweep } : {})
189
+ });
178
190
  }
179
191
  /**
180
192
  * Close every live session held by this process. Idempotent. Used by
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/runtime/mcp/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/runtime/mcp/sessions.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Readable, Writable } from "node:stream";
2
2
  import type { H2AWorkspaceRef } from "@sentropic/h2a";
3
3
  import { type H2ADriver } from "../drive/index.js";
4
+ import { type McpIdentityRequest, type ResolvedIdentityMessage } from "./identity-state.js";
4
5
  import type { H2aRunExecutor } from "./agent-launch.js";
5
6
  import type { H2ASendSigner } from "../send.js";
6
7
  export interface RunMcpStdioOptions {
@@ -78,6 +79,26 @@ export interface RunMcpStdioOptions {
78
79
  /** Concrete native PTY session receiving the signed self-wake line. */
79
80
  readonly nativeSessionId?: string;
80
81
  };
82
+ /**
83
+ * L2: the DEFERRED identity request. When present (and `autoOpen` is NOT),
84
+ * the transport answers `initialize` / `tools/list` / `h2a_identity_status`
85
+ * IMMEDIATELY and resolves identity asynchronously in a child worker; the
86
+ * presence session, live signer, wake and readiness ACK are published only
87
+ * once identity is really bound (state `identity_ready`). Mutually exclusive
88
+ * with the eager `autoOpen` path (kept for the existing consumers/tests).
89
+ */
90
+ identityRequest?: McpIdentityRequest;
91
+ /**
92
+ * L2: how to activate once the worker resolved a valid identity. `buildAutoOpen`
93
+ * turns the resolved identity into the presence-session config (same shape as
94
+ * `autoOpen`); `buildWake` builds the inbox-wake config from the private key
95
+ * read AFTER activation; `readiness` carries the structured-launch challenge.
96
+ * Supplied by `runMcpServe`; never a public MCP/CLI option.
97
+ */
98
+ identityActivation?: {
99
+ buildAutoOpen: (identity: ResolvedIdentityMessage) => NonNullable<RunMcpStdioOptions["autoOpen"]>;
100
+ buildWake?: (privateKeyPem: string, instance: string, host: string | undefined) => NonNullable<RunMcpStdioOptions["wake"]> | undefined;
101
+ };
81
102
  /**
82
103
  * Optional abort signal for graceful shutdown. When it aborts, the server
83
104
  * closes its sessions (presence → `closed`, so peers no longer see a
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/stdio.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4BhD,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,8DAA8D;IAC9D,KAAK,EAAE,QAAQ,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,QAAQ,CAAC;IACjB,yEAAyE;IACzE,MAAM,EAAE,QAAQ,CAAC;IACjB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACpC;;;;WAIG;QACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;QACvD,wEAAwE;QACxE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;KACpC,CAAC;IACF;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;OAMG;IACH,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,uEAAuE;QACvE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACnC,CAAC;IACF;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA2CD,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AA6FlD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoRtE"}
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/stdio.ts"],"names":[],"mappings":"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"}