@apnex/network-adapter 0.1.2 → 0.1.5

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 (86) hide show
  1. package/dist/build-info.json +6 -0
  2. package/dist/file-logger.d.ts +42 -0
  3. package/dist/file-logger.js +122 -0
  4. package/dist/file-logger.js.map +1 -0
  5. package/dist/index.d.ts +37 -13
  6. package/dist/index.js +42 -15
  7. package/dist/index.js.map +1 -1
  8. package/dist/kernel/adapter-config.d.ts +47 -0
  9. package/dist/kernel/adapter-config.js +90 -0
  10. package/dist/kernel/adapter-config.js.map +1 -0
  11. package/dist/kernel/agent-client.d.ts +25 -20
  12. package/dist/kernel/build-identity.d.ts +24 -0
  13. package/dist/kernel/build-identity.js +45 -0
  14. package/dist/kernel/build-identity.js.map +1 -0
  15. package/dist/kernel/event-router.d.ts +22 -1
  16. package/dist/kernel/event-router.js +45 -7
  17. package/dist/kernel/event-router.js.map +1 -1
  18. package/dist/kernel/handshake.d.ts +40 -4
  19. package/dist/kernel/handshake.js +46 -7
  20. package/dist/kernel/handshake.js.map +1 -1
  21. package/dist/kernel/harness-manifest.d.ts +51 -0
  22. package/dist/kernel/harness-manifest.js +96 -0
  23. package/dist/kernel/harness-manifest.js.map +1 -0
  24. package/dist/kernel/liveness-signal.d.ts +35 -0
  25. package/dist/kernel/liveness-signal.js +61 -0
  26. package/dist/kernel/liveness-signal.js.map +1 -0
  27. package/dist/kernel/liveness-watchdog.d.ts +78 -0
  28. package/dist/kernel/liveness-watchdog.js +115 -0
  29. package/dist/kernel/liveness-watchdog.js.map +1 -0
  30. package/dist/kernel/mcp-agent-client.d.ts +2 -2
  31. package/dist/kernel/mcp-agent-client.js +49 -3
  32. package/dist/kernel/mcp-agent-client.js.map +1 -1
  33. package/dist/kernel/poll-backstop.d.ts +93 -4
  34. package/dist/kernel/poll-backstop.js +193 -25
  35. package/dist/kernel/poll-backstop.js.map +1 -1
  36. package/dist/kernel/state-sync.d.ts +2 -13
  37. package/dist/kernel/state-sync.js.map +1 -1
  38. package/dist/notification-log.d.ts +8 -0
  39. package/dist/notification-log.js +10 -0
  40. package/dist/notification-log.js.map +1 -1
  41. package/dist/observability.d.ts +24 -0
  42. package/dist/observability.js +52 -0
  43. package/dist/observability.js.map +1 -0
  44. package/dist/prompt-format.js +82 -9
  45. package/dist/prompt-format.js.map +1 -1
  46. package/dist/tool-manager/catalog/health-revision.d.ts +43 -0
  47. package/dist/tool-manager/catalog/health-revision.js +61 -0
  48. package/dist/tool-manager/catalog/health-revision.js.map +1 -0
  49. package/dist/tool-manager/{tool-catalog-cache.d.ts → catalog/tool-catalog-cache.d.ts} +39 -19
  50. package/dist/tool-manager/{tool-catalog-cache.js → catalog/tool-catalog-cache.js} +53 -26
  51. package/dist/tool-manager/catalog/tool-catalog-cache.js.map +1 -0
  52. package/dist/tool-manager/catalog/tool-surface-reconciler.d.ts +93 -0
  53. package/dist/tool-manager/catalog/tool-surface-reconciler.js +101 -0
  54. package/dist/tool-manager/catalog/tool-surface-reconciler.js.map +1 -0
  55. package/dist/tool-manager/contracts.d.ts +91 -0
  56. package/dist/tool-manager/contracts.js +20 -0
  57. package/dist/tool-manager/contracts.js.map +1 -0
  58. package/dist/tool-manager/dispatch/dispatch.d.ts +77 -0
  59. package/dist/tool-manager/dispatch/dispatch.js +170 -0
  60. package/dist/tool-manager/dispatch/dispatch.js.map +1 -0
  61. package/dist/tool-manager/dispatch/tool-call-policy.d.ts +32 -0
  62. package/dist/tool-manager/dispatch/tool-call-policy.js +56 -0
  63. package/dist/tool-manager/dispatch/tool-call-policy.js.map +1 -0
  64. package/dist/tool-manager/{dispatcher.d.ts → orchestrator/dispatcher.d.ts} +110 -31
  65. package/dist/tool-manager/orchestrator/dispatcher.js +559 -0
  66. package/dist/tool-manager/orchestrator/dispatcher.js.map +1 -0
  67. package/dist/tool-manager/work-protocol/claimable-digest-tracker.d.ts +60 -0
  68. package/dist/tool-manager/work-protocol/claimable-digest-tracker.js +66 -0
  69. package/dist/tool-manager/work-protocol/claimable-digest-tracker.js.map +1 -0
  70. package/dist/tool-manager/work-protocol/work-lease-tracker.d.ts +59 -0
  71. package/dist/tool-manager/work-protocol/work-lease-tracker.js +134 -0
  72. package/dist/tool-manager/work-protocol/work-lease-tracker.js.map +1 -0
  73. package/dist/wire/mcp-transport.d.ts +1 -1
  74. package/dist/wire/mcp-transport.js +31 -7
  75. package/dist/wire/mcp-transport.js.map +1 -1
  76. package/dist/wire/slot-gate.d.ts +40 -0
  77. package/dist/wire/slot-gate.js +61 -0
  78. package/dist/wire/slot-gate.js.map +1 -0
  79. package/dist/wire/transport.d.ts +18 -0
  80. package/package.json +6 -3
  81. package/dist/kernel/instance.d.ts +0 -40
  82. package/dist/kernel/instance.js +0 -79
  83. package/dist/kernel/instance.js.map +0 -1
  84. package/dist/tool-manager/dispatcher.js +0 -379
  85. package/dist/tool-manager/dispatcher.js.map +0 -1
  86. package/dist/tool-manager/tool-catalog-cache.js.map +0 -1
@@ -0,0 +1,78 @@
1
+ /**
2
+ * LivenessWatchdog — the L1.5 application-level session-validity watchdog
3
+ * (M-Adapter-Modernization Design §4, P1c).
4
+ *
5
+ * THE GAP IT CLOSES (the lived "wedge"): transport-level liveness (SSE
6
+ * watchdog + heartbeat POST in `wire/mcp-transport.ts`) can stay GREEN while
7
+ * the Hub SESSION is dead server-side — the `keepalives-flowing-but-session-dead`
8
+ * edge. L1 reconnect only fires on a DETECTED transport drop; a server-side
9
+ * session death surfaces only as `session_invalid` on the next `call()`, which
10
+ * never happens while the agent is idle / mid-long-cognitive-node. So the dead
11
+ * session sits undetected: L1 believes connected, L2 (process-supervisor) sees a
12
+ * live process, and the OAuth-token-holding zombie wedges silently.
13
+ *
14
+ * L1.5 = a PROACTIVE, periodic session-validity probe INDEPENDENT of the
15
+ * transport keepalive (a real session-requiring Hub round-trip, injected by the
16
+ * caller). On a BOUNDED budget of consecutive probe failures — long enough to
17
+ * give L1's forever-backoff a chance to self-heal a recoverable drop — the
18
+ * watchdog declares the session UNRECOVERABLY wedged and fires `onLivenessLost`
19
+ * exactly once. The caller wires that to the EMBEDDED exit-propagation seam
20
+ * (in-process self-exit -> container/PID-1 exit so docker-L2 restarts -> fresh
21
+ * process re-handshakes + re-claims). The watchdog itself is seam-agnostic: it
22
+ * only decides "this session is wedged" and signals once.
23
+ *
24
+ * Design points:
25
+ * - INDEPENDENT of transport keepalive: the probe must exercise the server-side
26
+ * session (fail when the session is dead even though SSE flows). The caller
27
+ * supplies it; a transport-keepalive check would NOT close the edge.
28
+ * - BOUNDED budget, reset-on-success: a single failed probe during a normal
29
+ * reconnect must NOT self-exit (would fight L1). Only SUSTAINED failure
30
+ * (>= failureBudget consecutive) escalates — i.e. L1 could not recover.
31
+ * - FIRE-ONCE + stop: once liveness is declared lost the process is on its way
32
+ * out; never double-fire, never keep probing.
33
+ * - Non-overlapping ticks: a slow probe must not stack; the next tick waits.
34
+ */
35
+ export interface LivenessWatchdogOptions {
36
+ /**
37
+ * Session-validity probe. Resolves `true` when a live server-side session is
38
+ * CONFIRMED; resolves `false` or REJECTS when it cannot be confirmed (treated
39
+ * identically as one failure). MUST be a real session-requiring round-trip,
40
+ * not a transport-keepalive check.
41
+ */
42
+ probe: () => Promise<boolean>;
43
+ /** Probe cadence in ms. Independent of (and typically slower than) the 30s transport heartbeat. */
44
+ probeIntervalMs: number;
45
+ /**
46
+ * Consecutive-failure budget before declaring liveness lost. Sized so
47
+ * `failureBudget * probeIntervalMs` exceeds L1's realistic self-heal window,
48
+ * so a recoverable drop reconnects (probe succeeds -> counter resets) before
49
+ * the watchdog escalates.
50
+ */
51
+ failureBudget: number;
52
+ /** Fired exactly once when the budget is exhausted. Wire to the self-exit seam. */
53
+ onLivenessLost: (info: {
54
+ consecutiveFailures: number;
55
+ lastError?: unknown;
56
+ }) => void;
57
+ log?: (msg: string) => void;
58
+ /** Injectable timer (tests). Defaults to setInterval/clearInterval. */
59
+ setIntervalFn?: (cb: () => void, ms: number) => ReturnType<typeof setInterval>;
60
+ clearIntervalFn?: (handle: ReturnType<typeof setInterval>) => void;
61
+ }
62
+ export declare class LivenessWatchdog {
63
+ private readonly opts;
64
+ private timer;
65
+ private consecutiveFailures;
66
+ private ticking;
67
+ private fired;
68
+ constructor(options: LivenessWatchdogOptions);
69
+ /** Begin periodic probing. Idempotent: a second start() is a no-op. */
70
+ start(): void;
71
+ /** Stop probing + release the timer. Idempotent. */
72
+ stop(): void;
73
+ /** Exposed for deterministic tests: run exactly one probe cycle. */
74
+ tick(): Promise<void>;
75
+ /** Test/observability introspection. */
76
+ get failures(): number;
77
+ get hasFired(): boolean;
78
+ }
@@ -0,0 +1,115 @@
1
+ /**
2
+ * LivenessWatchdog — the L1.5 application-level session-validity watchdog
3
+ * (M-Adapter-Modernization Design §4, P1c).
4
+ *
5
+ * THE GAP IT CLOSES (the lived "wedge"): transport-level liveness (SSE
6
+ * watchdog + heartbeat POST in `wire/mcp-transport.ts`) can stay GREEN while
7
+ * the Hub SESSION is dead server-side — the `keepalives-flowing-but-session-dead`
8
+ * edge. L1 reconnect only fires on a DETECTED transport drop; a server-side
9
+ * session death surfaces only as `session_invalid` on the next `call()`, which
10
+ * never happens while the agent is idle / mid-long-cognitive-node. So the dead
11
+ * session sits undetected: L1 believes connected, L2 (process-supervisor) sees a
12
+ * live process, and the OAuth-token-holding zombie wedges silently.
13
+ *
14
+ * L1.5 = a PROACTIVE, periodic session-validity probe INDEPENDENT of the
15
+ * transport keepalive (a real session-requiring Hub round-trip, injected by the
16
+ * caller). On a BOUNDED budget of consecutive probe failures — long enough to
17
+ * give L1's forever-backoff a chance to self-heal a recoverable drop — the
18
+ * watchdog declares the session UNRECOVERABLY wedged and fires `onLivenessLost`
19
+ * exactly once. The caller wires that to the EMBEDDED exit-propagation seam
20
+ * (in-process self-exit -> container/PID-1 exit so docker-L2 restarts -> fresh
21
+ * process re-handshakes + re-claims). The watchdog itself is seam-agnostic: it
22
+ * only decides "this session is wedged" and signals once.
23
+ *
24
+ * Design points:
25
+ * - INDEPENDENT of transport keepalive: the probe must exercise the server-side
26
+ * session (fail when the session is dead even though SSE flows). The caller
27
+ * supplies it; a transport-keepalive check would NOT close the edge.
28
+ * - BOUNDED budget, reset-on-success: a single failed probe during a normal
29
+ * reconnect must NOT self-exit (would fight L1). Only SUSTAINED failure
30
+ * (>= failureBudget consecutive) escalates — i.e. L1 could not recover.
31
+ * - FIRE-ONCE + stop: once liveness is declared lost the process is on its way
32
+ * out; never double-fire, never keep probing.
33
+ * - Non-overlapping ticks: a slow probe must not stack; the next tick waits.
34
+ */
35
+ export class LivenessWatchdog {
36
+ opts;
37
+ timer = null;
38
+ consecutiveFailures = 0;
39
+ ticking = false;
40
+ fired = false;
41
+ constructor(options) {
42
+ if (options.probeIntervalMs <= 0)
43
+ throw new Error("LivenessWatchdog: probeIntervalMs must be > 0");
44
+ if (options.failureBudget < 1)
45
+ throw new Error("LivenessWatchdog: failureBudget must be >= 1");
46
+ this.opts = {
47
+ probe: options.probe,
48
+ probeIntervalMs: options.probeIntervalMs,
49
+ failureBudget: options.failureBudget,
50
+ onLivenessLost: options.onLivenessLost,
51
+ log: options.log,
52
+ setIntervalFn: options.setIntervalFn ?? ((cb, ms) => setInterval(cb, ms)),
53
+ clearIntervalFn: options.clearIntervalFn ?? ((h) => clearInterval(h)),
54
+ };
55
+ }
56
+ /** Begin periodic probing. Idempotent: a second start() is a no-op. */
57
+ start() {
58
+ if (this.timer !== null || this.fired)
59
+ return;
60
+ this.opts.log?.(`[LivenessWatchdog] started — probe every ${this.opts.probeIntervalMs}ms, budget ${this.opts.failureBudget} consecutive failures`);
61
+ this.timer = this.opts.setIntervalFn(() => {
62
+ void this.tick();
63
+ }, this.opts.probeIntervalMs);
64
+ }
65
+ /** Stop probing + release the timer. Idempotent. */
66
+ stop() {
67
+ if (this.timer !== null) {
68
+ this.opts.clearIntervalFn(this.timer);
69
+ this.timer = null;
70
+ }
71
+ }
72
+ /** Exposed for deterministic tests: run exactly one probe cycle. */
73
+ async tick() {
74
+ if (this.fired || this.ticking)
75
+ return; // never overlap; never probe after firing
76
+ this.ticking = true;
77
+ try {
78
+ let live = false;
79
+ let lastError;
80
+ try {
81
+ live = await this.opts.probe();
82
+ }
83
+ catch (err) {
84
+ live = false;
85
+ lastError = err;
86
+ }
87
+ if (live) {
88
+ if (this.consecutiveFailures > 0) {
89
+ this.opts.log?.(`[LivenessWatchdog] session re-confirmed live; failure counter reset (was ${this.consecutiveFailures})`);
90
+ }
91
+ this.consecutiveFailures = 0;
92
+ return;
93
+ }
94
+ this.consecutiveFailures += 1;
95
+ this.opts.log?.(`[LivenessWatchdog] session probe FAILED (${this.consecutiveFailures}/${this.opts.failureBudget})${lastError ? ` — ${lastError}` : ""}`);
96
+ if (this.consecutiveFailures >= this.opts.failureBudget) {
97
+ this.fired = true;
98
+ this.stop();
99
+ this.opts.log?.(`[LivenessWatchdog] LIVENESS LOST — ${this.consecutiveFailures} consecutive session-probe failures; signalling self-exit (EMBEDDED exit-propagation seam)`);
100
+ this.opts.onLivenessLost({ consecutiveFailures: this.consecutiveFailures, lastError });
101
+ }
102
+ }
103
+ finally {
104
+ this.ticking = false;
105
+ }
106
+ }
107
+ /** Test/observability introspection. */
108
+ get failures() {
109
+ return this.consecutiveFailures;
110
+ }
111
+ get hasFired() {
112
+ return this.fired;
113
+ }
114
+ }
115
+ //# sourceMappingURL=liveness-watchdog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveness-watchdog.js","sourceRoot":"","sources":["../../src/kernel/liveness-watchdog.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@
32
32
  * `McpConnectionManager` path. Until then, `McpConnectionManager` stays
33
33
  * intact and this class lives alongside it.
34
34
  */
35
- import type { IAgentClient, AgentClientConfig, AgentClientCallbacks, AgentClientMetrics, SessionState } from "./agent-client.js";
35
+ import type { IAgentClient, AgentCallOptions, AgentClientConfig, AgentClientCallbacks, AgentClientMetrics, SessionState } from "./agent-client.js";
36
36
  import type { ITransport, TransportConfig } from "../wire/transport.js";
37
37
  import type { CognitivePipeline, Tool as CognitiveTool } from "@apnex/cognitive-layer";
38
38
  export interface McpAgentClientOptions {
@@ -97,7 +97,7 @@ export declare class McpAgentClient implements IAgentClient {
97
97
  get isConnected(): boolean;
98
98
  start(): Promise<void>;
99
99
  stop(): Promise<void>;
100
- call(method: string, params: Record<string, unknown>): Promise<unknown>;
100
+ call(method: string, params: Record<string, unknown>, opts?: AgentCallOptions): Promise<unknown>;
101
101
  /**
102
102
  * Route `tools/list` through the cognitive pipeline when one is
103
103
  * configured; otherwise fall through to `transport.listToolsRaw()`
@@ -37,6 +37,7 @@ import { normalizeToILogger } from "../logger.js";
37
37
  import { parseHubEvent, classifyEvent, createDedupFilter, } from "./event-router.js";
38
38
  import { performHandshake } from "./handshake.js";
39
39
  import { HubReturnedError, isErrorEnvelope } from "../hub-error.js";
40
+ import { INTERNAL_CALL_TAG } from "@apnex/cognitive-layer";
40
41
  import { performStateSync } from "./state-sync.js";
41
42
  // Same list as McpConnectionManager. Matched case-insensitively.
42
43
  const SESSION_INVALID_PATTERNS = [
@@ -45,6 +46,20 @@ const SESSION_INVALID_PATTERNS = [
45
46
  "Session not found",
46
47
  "invalid session",
47
48
  ];
49
+ /**
50
+ * mission-75 v1.0 §3.3 — adapter-internal-tier marker. Hub prepends
51
+ * this to tool descriptions for `tier: "adapter-internal"` tools (per
52
+ * hub/src/policy/mcp-binding.ts:TIER_ANNOTATION_MARKER). The shim
53
+ * filter below removes any tool whose description carries this prefix
54
+ * before the LLM-callable catalogue is surfaced. Kept as a literal
55
+ * string here (not a cross-package import) so this package retains
56
+ * zero compile-time dependency on hub/. Interim per idea-240 Vision.
57
+ */
58
+ const ADAPTER_INTERNAL_TIER_MARKER = "[tier:adapter-internal]";
59
+ function isAdapterInternalTool(t) {
60
+ const desc = t.description;
61
+ return typeof desc === "string" && desc.startsWith(ADAPTER_INTERNAL_TIER_MARKER);
62
+ }
48
63
  function isSessionInvalidError(err) {
49
64
  const msg = String(err).toLowerCase();
50
65
  return SESSION_INVALID_PATTERNS.some((p) => msg.includes(p.toLowerCase()));
@@ -152,7 +167,7 @@ export class McpAgentClient {
152
167
  this.transition("disconnected");
153
168
  this.dedup.clear();
154
169
  }
155
- async call(method, params) {
170
+ async call(method, params, opts) {
156
171
  if (this._state !== "streaming" && this._state !== "synchronizing") {
157
172
  throw new Error(`McpAgentClient.call: session state=${this._state}`);
158
173
  }
@@ -173,6 +188,11 @@ export class McpAgentClient {
173
188
  startedAt,
174
189
  tags: {},
175
190
  };
191
+ // bug-106: propagate the internal-machinery marker into the cognitive
192
+ // context so LLM-facing result-transform middlewares (ResponseSummarizer)
193
+ // skip it — machinery (poll-backstop, heartbeat) needs the raw result.
194
+ if (opts?.internal)
195
+ ctx.tags[INTERNAL_CALL_TAG] = "true";
176
196
  try {
177
197
  return await this.cognitive.runToolCall(ctx, async (c) => {
178
198
  const result = await this.rawCall(c.tool, c.args);
@@ -216,7 +236,17 @@ export class McpAgentClient {
216
236
  */
217
237
  async listTools() {
218
238
  const raw = await this.transport.listToolsRaw();
219
- const tools = raw;
239
+ // mission-75 v1.0 §3.3 — shim-side adapter-internal-tier filter.
240
+ // Hub annotates adapter-internal tools by prepending the
241
+ // `[tier:adapter-internal]` marker to the description (per
242
+ // hub/src/policy/mcp-binding.ts:TIER_ANNOTATION_MARKER). The shim
243
+ // strips these tools from the LLM-exposed catalogue so the LLM
244
+ // never observes them. Adapter substrate code (e.g.,
245
+ // poll-backstop's heartbeat timer) calls them by name directly via
246
+ // agent.call(), bypassing the listTools surface — so this filter
247
+ // does NOT prevent adapter-side invocation.
248
+ const filtered = raw.filter((t) => !isAdapterInternalTool(t));
249
+ const tools = filtered;
220
250
  if (!this.cognitive)
221
251
  return tools;
222
252
  const ctx = {
@@ -395,12 +425,19 @@ export class McpAgentClient {
395
425
  executeTool: (n, a) => this.transport.request(n, a),
396
426
  config: {
397
427
  role: this.cfg.role,
398
- globalInstanceId: handshake.globalInstanceId,
428
+ // idea-251 D-prime Phase 2: name is the sole identity input.
429
+ name: handshake.name,
399
430
  clientInfo: handshake.getClientInfo(),
400
431
  proxyName: handshake.proxyName,
401
432
  proxyVersion: handshake.proxyVersion,
402
433
  transport: handshake.transport,
403
434
  sdkVersion: handshake.sdkVersion,
435
+ // M-Build-Identity-AdvisoryTag (idea-256): forward optional
436
+ // build-identity fields when host provided them.
437
+ proxyCommitSha: handshake.proxyCommitSha,
438
+ proxyDirty: handshake.proxyDirty,
439
+ sdkCommitSha: handshake.sdkCommitSha,
440
+ sdkDirty: handshake.sdkDirty,
404
441
  llmModel: handshake.llmModel,
405
442
  labels: this.cfg.labels,
406
443
  wakeEndpoint: handshake.wakeEndpoint,
@@ -411,6 +448,15 @@ export class McpAgentClient {
411
448
  onFatalHalt: handshake.onFatalHalt,
412
449
  });
413
450
  this.totalHandshakes++;
451
+ if (result.fatal) {
452
+ // FAIL LOUD (mission-93): register_role was REJECTED by a structured
453
+ // fatal error (e.g. role_mismatch). Do NOT degrade to streaming with a
454
+ // fallback role — that silent degrade masked the verifier cutover bug
455
+ // for an hour. Throw so runSynchronizingPhase fails clean (first-boot →
456
+ // disconnected + rethrow); onFatalHalt already fired (stops reconnect).
457
+ this.log.log("agent.handshake.registration_rejected", { role: this.cfg.role }, `[Handshake] REGISTRATION REJECTED (fatal) for role=${this.cfg.role} — HALTING, not degrading to streaming. Check role/identity config.`);
458
+ throw new Error(`register_role rejected (fatal) for role=${this.cfg.role}: handshake halted`);
459
+ }
414
460
  if (result.response) {
415
461
  this._lastEpoch = result.epoch;
416
462
  this._sessionEpoch = result.response.sessionEpoch;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-agent-client.js","sourceRoot":"","sources":["../../src/kernel/mcp-agent-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-agent-client.js","sourceRoot":"","sources":["../../src/kernel/mcp-agent-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAoBH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,iEAAiE;AACjE,MAAM,wBAAwB,GAAG;IAC/B,qBAAqB;IACrB,aAAa;IACb,mBAAmB;IACnB,iBAAiB;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAE/D,SAAS,qBAAqB,CAAC,CAAgB;IAC7C,MAAM,IAAI,GAAI,CAA+B,CAAC,WAAW,CAAC;IAC1D,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAY;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAuCD,MAAM,OAAO,cAAc;IACR,GAAG,CAAoB;IACvB,GAAG,CAAU;IACb,SAAS,CAAa;IACtB,aAAa,CAAU;IACvB,UAAU,CAAU;IACpB,KAAK,CAAuC;IAC5C,SAAS,CAAqB;IAEvC,MAAM,GAAiB,cAAc,CAAC;IACtC,SAAS,GAAyB,EAAE,CAAC;IAE7C,iEAAiE;IACjE,qCAAqC;IAC7B,UAAU,GAAiB,EAAE,CAAC;IAEtC,mEAAmE;IACnE,qEAAqE;IACrE,kBAAkB;IACV,qBAAqB,GAAG,KAAK,CAAC;IAEtC,qEAAqE;IACrE,iEAAiE;IACjE,6DAA6D;IAC7D,sCAAsC;IAC9B,mBAAmB,GAAG,KAAK,CAAC;IAEpC,iEAAiE;IACzD,OAAO,GAAG,KAAK,CAAC;IAExB,8BAA8B;IACtB,QAAQ,CAAU;IAClB,aAAa,CAAU;IACvB,UAAU,GAAG,CAAC,CAAC;IAEf,eAAe,GAAG,CAAC,CAAC;IACpB,0BAA0B,GAAG,CAAC,CAAC;IAC/B,cAAc,GAAG,CAAC,CAAC;IAE3B,gEAAgE;IAChE,8DAA8D;IAC9D,wDAAwD;IACxD,gEAAgE;IACxD,WAAW,CAAqB;IAExC,YAAY,MAAyB,EAAE,UAAiC,EAAE;QACxE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAEnC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC;gBAChC,GAAG,OAAO,CAAC,eAAe;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM;gBACvD,gEAAgE;gBAChE,+DAA+D;gBAC/D,cAAc,EACZ,OAAO,CAAC,eAAe,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;aACrE,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,uEAAuE;IAEvE,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,qBAAqB,EACrB,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EACtB,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAC1C,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,oBAAoB,EACpB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,oCAAoC,GAAG,EAAE,CAC1C,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,kEAAkE;QAClE,iEAAiE;QACjE,6DAA6D;QAC7D,gEAAgE;QAChE,6DAA6D;QAC7D,iBAAiB;QACjB,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAc,EACd,MAA+B,EAC/B,IAAuB;QAEvB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,gEAAgE;QAChE,sEAAsE;QACtE,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAoB;YAC3B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,SAAS;YACT,IAAI,EAAE,EAAE;SACT,CAAC;QACF,sEAAsE;QACtE,0EAA0E;QAC1E,uEAAuE;QACvE,IAAI,IAAI,EAAE,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClD,iEAAiE;gBACjE,6DAA6D;gBAC7D,8DAA8D;gBAC9D,uDAAuD;gBACvD,+CAA+C;gBAC/C,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAqB;gBAC/B,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG;gBACV,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,SAAS;gBACT,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;YACF,6DAA6D;YAC7D,gDAAgD;YAChD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,MAAO,IAAI,CAAC,SAA0B,CAAC,YAAY,EAAE,CAAC;QAClE,iEAAiE;QACjE,yDAAyD;QACzD,2DAA2D;QAC3D,kEAAkE;QAClE,+DAA+D;QAC/D,qDAAqD;QACrD,mEAAmE;QACnE,iEAAiE;QACjE,4CAA4C;QAC5C,MAAM,QAAQ,GAAI,GAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,QAAQ,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAElC,MAAM,GAAG,GAAqB;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI,EAAE,EAAE;SACT,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,MAA+B;QAE/B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC3C,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,6BAA6B,EAC7B,EAAE,MAAM,EAAE,EACV,QAAQ,MAAM,sCAAsC,CACrD,CAAC;YACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YAC/C,2CAA2C;YAC3C,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,SAA+B;QAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAED,UAAU;QACR,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,uEAAuE;IAE/D,UAAU,CAAC,EAAgB,EAAE,MAA+B;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,qBAAqB,EACrB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EACpB,WAAW,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,2BAA2B,EAC3B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,gCAAgC,GAAG,EAAE,CACtC,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAgB;QACtC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;oBAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO;YACT,KAAK,cAAc;gBACjB,2DAA2D;gBAC3D,wDAAwD;gBACxD,yDAAyD;gBACzD,0DAA0D;gBAC1D,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,OAAO;YACT,KAAK,aAAa;gBAChB,wDAAwD;gBACxD,kBAAkB;gBAClB,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAClC,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,mBAAmB;oBAAE,OAAO;gBACrC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAChC,OAAO;QACX,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAyB;QAC5C,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,kBAAkB;gBACrB,OAAO,kBAAkB,CAAC;YAC5B,KAAK,kBAAkB;gBACrB,OAAO,kBAAkB,CAAC;YAC5B,KAAK,cAAc,CAAC;YACpB,KAAK,aAAa,CAAC;YACnB,KAAK,YAAY,CAAC;YAClB;gBACE,OAAO,cAAc,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,uEAAuE;IAE/D,KAAK,CAAC,qBAAqB,CACjC,OAAuC,EAAE;QAEzC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,sBAAsB,EACtB,SAAS,EACT,qDAAqD,CACtD,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAEjC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,gEAAgE;gBAChE,OAAO;YACT,CAAC;YAED,iEAAiE;YACjE,4DAA4D;YAC5D,MAAM,gBAAgB,CAAC;gBACrB,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC/C,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa;gBAChD,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,mBAAmB;aAC7D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,mBAAmB,EACnB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,iCAAiC,GAAG,EAAE,CACvC,CAAC;YACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,6DAA6D;gBAC7D,8DAA8D;gBAC9D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAChC,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,gEAAgE;gBAChE,gEAAgE;gBAChE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY;QACV,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QAErC,gEAAgE;QAChE,+DAA+D;QAC/D,oEAAoE;QACpE,mEAAmE;QACnE,EAAE;QACF,gEAAgE;QAChE,oEAAoE;QACpE,+DAA+D;QAC/D,6DAA6D;QAC7D,0BAA0B;QAC1B,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,0BAA0B,EAC1B,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EACvB,iBAAiB,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CACzC,CAAC;QAEF,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACpC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;gBACnB,6DAA6D;gBAC7D,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,UAAU,EAAE,SAAS,CAAC,aAAa,EAAE;gBACrC,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,4DAA4D;gBAC5D,iDAAiD;gBACjD,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;gBACvB,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,UAAU,EAAE,SAAS,CAAC,UAAU;aACjC;YACD,aAAa,EAAE,IAAI,CAAC,UAAU;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,uCAAuC,EACvC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EACvB,sDAAsD,IAAI,CAAC,GAAG,CAAC,IAAI,qEAAqE,CACzI,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;YAClD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACxC,IAAI,SAAS,CAAC,mBAAmB,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,+BAA+B,EAC/B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,sCAAsC,GAAG,EAAE,CAC5C,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe;YAAE,OAAO;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,kBAAkB,EAClB,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAC1B,YAAY,QAAQ,CAAC,MAAM,oBAAoB,CAChD,CAAC;YACF,KAAK,MAAM,EAAE,IAAI,QAAQ;gBAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,uEAAuE;IAE/D,KAAK,CAAC,gBAAgB,CAC5B,MAA8B;QAE9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACnC,CAAC;QACD,kEAAkE;QAClE,+CAA+C;QAC/C,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAED,uEAAuE;IAE/D,cAAc,CAAC,OAAgB;QACrC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO;QACpD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAkC,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAe;YACxB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QAEF,gEAAgE;QAChE,iEAAiE;QACjE,iEAAiE;QACjE,8DAA8D;QAC9D,mCAAmC;QACnC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,kEAAkE;QAClE,4CAA4C;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAEO,UAAU,CAAC,KAAiB;QAClC,MAAM,WAAW,GAAG,aAAa,CAC/B,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,GAAG,CAAC,IAA6C,CACvD,CAAC;QACF,IAAI,CAAC;YACH,QAAQ,WAAW,EAAE,CAAC;gBACpB,KAAK,YAAY;oBACf,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC1C,OAAO;gBACT,KAAK,eAAe;oBAClB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC7C,OAAO;gBACT,KAAK,WAAW;oBACd,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,uBAAuB,EACvB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EACtB,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAClC,CAAC;oBACF,OAAO;YACX,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,2BAA2B,EAC3B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,wBAAwB,GAAG,EAAE,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -32,8 +32,17 @@ export interface PollBackstopOptions {
32
32
  /**
33
33
  * Role this adapter polls for (e.g. "engineer", "architect"). Becomes
34
34
  * the `target.role` filter on each `list_messages` call.
35
+ *
36
+ * bug-173: accepts a `() => string` resolver in addition to a plain
37
+ * string. A host whose dispatcher is constructed at MODULE-INIT (before
38
+ * its config — and thus `config.role` — has loaded) passes a thunk that
39
+ * reads the role at USE-time, so the poll/reconcile filter tracks the
40
+ * CONFIGURED role rather than freezing the module-init env default.
41
+ * Resolved on every use via {@link resolveRole}; a plain string is
42
+ * returned as-is (the claude-shim path builds its dispatcher at runtime
43
+ * with `config.role` already known, so it stays a string — unchanged).
35
44
  */
36
- role: string;
45
+ role: string | (() => string);
37
46
  /**
38
47
  * Poll cadence in seconds. Defaults to `OIS_ADAPTER_POLL_BACKSTOP_S`
39
48
  * env var (parsed as integer), falling back to 300 (5 minutes).
@@ -58,8 +67,49 @@ export interface PollBackstopOptions {
58
67
  * `DispatcherNotificationHooks.onActionableEvent` so the dispatcher
59
68
  * can wire poll output through the same MessageRouter as the SSE
60
69
  * inline path (preserving seen-id LRU dedup across both paths).
70
+ *
71
+ * bug-53: optional when `firstTimerEnabled === false` — heartbeat-only
72
+ * hosts (claude-plugin/opencode-plugin per current SSE-driven message
73
+ * delivery) don't need the poll-side callback. Default is no-op so
74
+ * existing required-callback callers continue to work.
61
75
  */
62
- onPolledMessage: (event: AgentEvent) => void;
76
+ onPolledMessage?: (event: AgentEvent) => void;
77
+ /**
78
+ * bug-53: enable/disable the FIRST timer (periodic `list_messages`
79
+ * polling). Defaults to true for backwards-compat with mission-56 W3.3
80
+ * Pull-mode wiring. Set to `false` for heartbeat-only hosts (current
81
+ * shim/opencode adapters use SSE for inline message delivery; the
82
+ * first-timer's list_messages poll would introduce a second polling
83
+ * source competing with SSE — out of scope until a separate first-timer
84
+ * wiring audit per round-2 design decision).
85
+ */
86
+ firstTimerEnabled?: boolean;
87
+ /**
88
+ * mission-75 v1.0 §3.3 — heartbeat timer interval in milliseconds.
89
+ * Defaults to `TRANSPORT_HEARTBEAT_INTERVAL_MS` env var (parsed as
90
+ * integer), falling back to 30_000 (30s). Floored at 10_000 (10s)
91
+ * per Design v1.0 §3.3 minimum. Tests inject a small value (e.g.
92
+ * 100ms) to exercise cadence behaviour.
93
+ */
94
+ heartbeatIntervalMs?: number;
95
+ /**
96
+ * mission-75 v1.0 §3.3 — heartbeat timer enable flag. Defaults to
97
+ * `TRANSPORT_HEARTBEAT_ENABLED` env var (`"false"` disables; any
98
+ * other value including absence enables). Setting to `false`
99
+ * cleanly disables the timer (start() skips heartbeat scheduling).
100
+ */
101
+ heartbeatEnabled?: boolean;
102
+ /**
103
+ * bug-180 L2 — optional hook fired once per heartbeat cycle, BEFORE the
104
+ * `transport_heartbeat` call and independent of its success or the agent's
105
+ * connection state. Reuses the heartbeat cadence as the tool-surface
106
+ * revision-poll backstop: the host wires the ToolSurfaceReconciler here so a
107
+ * Hub redeploy that changes the surface WHILE a session stays connected is
108
+ * caught within one heartbeat interval (the case L1's identityReady
109
+ * reconcile misses — no reconnect, so no fresh identityReady). Default no-op;
110
+ * a throw is caught + logged so it never disturbs the heartbeat loop.
111
+ */
112
+ onHeartbeatTick?: () => void | Promise<void>;
63
113
  }
64
114
  /**
65
115
  * Resolve the cursor file path. Defaults to
@@ -68,6 +118,16 @@ export interface PollBackstopOptions {
68
118
  * adapter instance always writes/reads the same cursor file.
69
119
  */
70
120
  export declare function defaultCursorFile(role: string, agentId: string): string;
121
+ /**
122
+ * Resolve a {@link PollBackstopOptions.role} to its current string value.
123
+ * A plain string is returned as-is; a `() => string` thunk is invoked at
124
+ * call-time (bug-173 — lets a dispatcher constructed at MODULE-INIT track
125
+ * the host's configured role once `config.role` has loaded, instead of
126
+ * freezing whatever the env default was at construction). Used by both the
127
+ * PollBackstop tick (target.role filter) and the dispatcher's idea-353
128
+ * wake/stall reconcile so the two read the SAME resolved role.
129
+ */
130
+ export declare function resolveRole(role: string | (() => string)): string;
71
131
  /**
72
132
  * Read the persisted cursor (or undefined if no cursor file exists).
73
133
  * Corruption-tolerant: returns undefined on parse failure (cold-start
@@ -92,12 +152,21 @@ export declare function writeCursor(path: string, lastSeenId: string | undefined
92
152
  export declare class PollBackstop {
93
153
  private readonly opts;
94
154
  private timer;
155
+ private heartbeatTimer;
95
156
  private resolvedCursorFile;
96
157
  private inFlight;
158
+ private heartbeatInFlight;
159
+ /**
160
+ * bug-173 — the role resolved at USE-time (`this.opts.role` may be a
161
+ * `() => string` thunk for hosts that construct the dispatcher before
162
+ * config loads). Every role read (poll filter, cursor file, log) goes
163
+ * through here so a configured role propagates without re-construction.
164
+ */
165
+ private get currentRole();
97
166
  constructor(opts: PollBackstopOptions);
98
- /** Start the periodic poll. Idempotent. */
167
+ /** Start the periodic poll + heartbeat (if enabled). Idempotent. */
99
168
  start(getAgent: () => IAgentClient | null): void;
100
- /** Stop the periodic poll. Idempotent. */
169
+ /** Stop the periodic poll + heartbeat. Idempotent. */
101
170
  stop(): void;
102
171
  /**
103
172
  * Single poll iteration. Exposed for tests + diagnostic operators
@@ -105,4 +174,24 @@ export declare class PollBackstop {
105
174
  * — concurrent ticks coalesce on the in-flight one.
106
175
  */
107
176
  tick(getAgent: () => IAgentClient | null): Promise<void>;
177
+ /**
178
+ * mission-75 v1.0 §3.3 — single transport_heartbeat tick. Lightweight
179
+ * no-payload; the call itself is the heartbeat. Failure handling per
180
+ * Design §3.3:
181
+ * - retry once with 5s backoff;
182
+ * - skip cycle on second failure (next cycle attempts);
183
+ * - poll-backstop existing retry semantics for transient blips.
184
+ *
185
+ * Reentrant-safe via heartbeatInFlight guard. Exposed for tests
186
+ * (force-tick on demand).
187
+ */
188
+ tickHeartbeat(getAgent: () => IAgentClient | null): Promise<void>;
189
+ /**
190
+ * Send `transport_heartbeat` with one backoff retry. Gated on a streaming
191
+ * agent (the heartbeat needs the agent transport); a non-streaming agent is a
192
+ * no-op. Split out of `tickHeartbeat` so its early returns stay local — the
193
+ * caller must still settle the concurrent tick hook before releasing the
194
+ * heartbeatInFlight guard.
195
+ */
196
+ private sendHeartbeat;
108
197
  }