@apnex/network-adapter 0.1.2 → 0.1.6

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 +134 -4
  34. package/dist/kernel/poll-backstop.js +254 -24
  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 +70 -0
  71. package/dist/tool-manager/work-protocol/work-lease-tracker.js +146 -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":"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"}
@@ -28,12 +28,45 @@
28
28
  * window is not double-rendered when the next poll-tick sees it too.
29
29
  */
30
30
  import type { IAgentClient, AgentEvent } from "./agent-client.js";
31
+ /**
32
+ * mission-99 slice (c) / F2 — ±20% per-agent jitter fraction on the periodic
33
+ * timers (spec docs/designs/m-swarm-footer/ratified-spec.md §6 anti-stampede).
34
+ *
35
+ * WHY: every fleet agent's poll + heartbeat timers otherwise fire on the SAME
36
+ * fixed cadence. If a shared trigger aligns their phases (a fleet-wide restart,
37
+ * a Hub redeploy that reconnects everyone at once), fixed `setInterval` produces
38
+ * a SYNCHRONIZED poll burst — N agents hammering the Hub on the same tick. A
39
+ * per-fire ±20% jitter desynchronizes the phases so the load spreads across the
40
+ * window instead of spiking. The AVERAGE cadence is preserved (jitter is
41
+ * symmetric about 1.0), so the mission-75 TTL margin + the anti-pattern cadence
42
+ * guard both still hold.
43
+ *
44
+ * Implemented by rescheduling each cycle with a freshly-jittered delay (a self-
45
+ * rescheduling setTimeout loop) rather than a fixed setInterval — so the jitter
46
+ * is re-rolled every fire, not frozen at start.
47
+ */
48
+ export declare const JITTER_FRACTION = 0.2;
49
+ /**
50
+ * Apply ±`fraction` symmetric jitter to `baseMs`. `rand` is an injectable
51
+ * [0,1) source (default Math.random) for deterministic tests. Result is
52
+ * clamped to ≥ 1ms so a timer always makes forward progress.
53
+ */
54
+ export declare function jitter(baseMs: number, fraction?: number, rand?: () => number): number;
31
55
  export interface PollBackstopOptions {
32
56
  /**
33
57
  * Role this adapter polls for (e.g. "engineer", "architect"). Becomes
34
58
  * the `target.role` filter on each `list_messages` call.
59
+ *
60
+ * bug-173: accepts a `() => string` resolver in addition to a plain
61
+ * string. A host whose dispatcher is constructed at MODULE-INIT (before
62
+ * its config — and thus `config.role` — has loaded) passes a thunk that
63
+ * reads the role at USE-time, so the poll/reconcile filter tracks the
64
+ * CONFIGURED role rather than freezing the module-init env default.
65
+ * Resolved on every use via {@link resolveRole}; a plain string is
66
+ * returned as-is (the claude-shim path builds its dispatcher at runtime
67
+ * with `config.role` already known, so it stays a string — unchanged).
35
68
  */
36
- role: string;
69
+ role: string | (() => string);
37
70
  /**
38
71
  * Poll cadence in seconds. Defaults to `OIS_ADAPTER_POLL_BACKSTOP_S`
39
72
  * env var (parsed as integer), falling back to 300 (5 minutes).
@@ -58,8 +91,56 @@ export interface PollBackstopOptions {
58
91
  * `DispatcherNotificationHooks.onActionableEvent` so the dispatcher
59
92
  * can wire poll output through the same MessageRouter as the SSE
60
93
  * inline path (preserving seen-id LRU dedup across both paths).
94
+ *
95
+ * bug-53: optional when `firstTimerEnabled === false` — heartbeat-only
96
+ * hosts (claude-plugin/opencode-plugin per current SSE-driven message
97
+ * delivery) don't need the poll-side callback. Default is no-op so
98
+ * existing required-callback callers continue to work.
99
+ */
100
+ onPolledMessage?: (event: AgentEvent) => void;
101
+ /**
102
+ * bug-53: enable/disable the FIRST timer (periodic `list_messages`
103
+ * polling). Defaults to true for backwards-compat with mission-56 W3.3
104
+ * Pull-mode wiring. Set to `false` for heartbeat-only hosts (current
105
+ * shim/opencode adapters use SSE for inline message delivery; the
106
+ * first-timer's list_messages poll would introduce a second polling
107
+ * source competing with SSE — out of scope until a separate first-timer
108
+ * wiring audit per round-2 design decision).
109
+ */
110
+ firstTimerEnabled?: boolean;
111
+ /**
112
+ * mission-75 v1.0 §3.3 — heartbeat timer interval in milliseconds.
113
+ * Defaults to `TRANSPORT_HEARTBEAT_INTERVAL_MS` env var (parsed as
114
+ * integer), falling back to 30_000 (30s). Floored at 10_000 (10s)
115
+ * per Design v1.0 §3.3 minimum. Tests inject a small value (e.g.
116
+ * 100ms) to exercise cadence behaviour.
117
+ */
118
+ heartbeatIntervalMs?: number;
119
+ /**
120
+ * mission-75 v1.0 §3.3 — heartbeat timer enable flag. Defaults to
121
+ * `TRANSPORT_HEARTBEAT_ENABLED` env var (`"false"` disables; any
122
+ * other value including absence enables). Setting to `false`
123
+ * cleanly disables the timer (start() skips heartbeat scheduling).
61
124
  */
62
- onPolledMessage: (event: AgentEvent) => void;
125
+ heartbeatEnabled?: boolean;
126
+ /**
127
+ * bug-180 L2 — optional hook fired once per heartbeat cycle, BEFORE the
128
+ * `transport_heartbeat` call and independent of its success or the agent's
129
+ * connection state. Reuses the heartbeat cadence as the tool-surface
130
+ * revision-poll backstop: the host wires the ToolSurfaceReconciler here so a
131
+ * Hub redeploy that changes the surface WHILE a session stays connected is
132
+ * caught within one heartbeat interval (the case L1's identityReady
133
+ * reconcile misses — no reconnect, so no fresh identityReady). Default no-op;
134
+ * a throw is caught + logged so it never disturbs the heartbeat loop.
135
+ */
136
+ onHeartbeatTick?: () => void | Promise<void>;
137
+ /**
138
+ * mission-99 slice (c) / F2 — injectable [0,1) RNG for the ±20% per-agent
139
+ * timer jitter (spec §6 anti-stampede). Defaults to Math.random. Tests inject
140
+ * a deterministic source to assert desynchronization under a multi-agent fake
141
+ * clock (spec §14 gate 7). Production leaves it unset.
142
+ */
143
+ random?: () => number;
63
144
  }
64
145
  /**
65
146
  * Resolve the cursor file path. Defaults to
@@ -68,6 +149,16 @@ export interface PollBackstopOptions {
68
149
  * adapter instance always writes/reads the same cursor file.
69
150
  */
70
151
  export declare function defaultCursorFile(role: string, agentId: string): string;
152
+ /**
153
+ * Resolve a {@link PollBackstopOptions.role} to its current string value.
154
+ * A plain string is returned as-is; a `() => string` thunk is invoked at
155
+ * call-time (bug-173 — lets a dispatcher constructed at MODULE-INIT track
156
+ * the host's configured role once `config.role` has loaded, instead of
157
+ * freezing whatever the env default was at construction). Used by both the
158
+ * PollBackstop tick (target.role filter) and the dispatcher's idea-353
159
+ * wake/stall reconcile so the two read the SAME resolved role.
160
+ */
161
+ export declare function resolveRole(role: string | (() => string)): string;
71
162
  /**
72
163
  * Read the persisted cursor (or undefined if no cursor file exists).
73
164
  * Corruption-tolerant: returns undefined on parse failure (cold-start
@@ -92,12 +183,31 @@ export declare function writeCursor(path: string, lastSeenId: string | undefined
92
183
  export declare class PollBackstop {
93
184
  private readonly opts;
94
185
  private timer;
186
+ private heartbeatTimer;
187
+ private pollRunning;
188
+ private heartbeatRunning;
95
189
  private resolvedCursorFile;
96
190
  private inFlight;
191
+ private heartbeatInFlight;
192
+ /**
193
+ * bug-173 — the role resolved at USE-time (`this.opts.role` may be a
194
+ * `() => string` thunk for hosts that construct the dispatcher before
195
+ * config loads). Every role read (poll filter, cursor file, log) goes
196
+ * through here so a configured role propagates without re-construction.
197
+ */
198
+ private get currentRole();
97
199
  constructor(opts: PollBackstopOptions);
98
- /** Start the periodic poll. Idempotent. */
200
+ /** Next poll delay with ±20% jitter (mission-99 F2, spec §6). */
201
+ private nextPollDelayMs;
202
+ /** Next heartbeat delay with ±20% jitter (mission-99 F2, spec §6). */
203
+ private nextHeartbeatDelayMs;
204
+ /** Start the periodic poll + heartbeat (if enabled). Idempotent. */
99
205
  start(getAgent: () => IAgentClient | null): void;
100
- /** Stop the periodic poll. Idempotent. */
206
+ /** Arm the next jittered poll tick (mission-99 F2 self-rescheduling loop). */
207
+ private schedulePoll;
208
+ /** Arm the next jittered heartbeat tick (mission-99 F2 self-rescheduling loop). */
209
+ private scheduleHeartbeat;
210
+ /** Stop the periodic poll + heartbeat. Idempotent. */
101
211
  stop(): void;
102
212
  /**
103
213
  * Single poll iteration. Exposed for tests + diagnostic operators
@@ -105,4 +215,24 @@ export declare class PollBackstop {
105
215
  * — concurrent ticks coalesce on the in-flight one.
106
216
  */
107
217
  tick(getAgent: () => IAgentClient | null): Promise<void>;
218
+ /**
219
+ * mission-75 v1.0 §3.3 — single transport_heartbeat tick. Lightweight
220
+ * no-payload; the call itself is the heartbeat. Failure handling per
221
+ * Design §3.3:
222
+ * - retry once with 5s backoff;
223
+ * - skip cycle on second failure (next cycle attempts);
224
+ * - poll-backstop existing retry semantics for transient blips.
225
+ *
226
+ * Reentrant-safe via heartbeatInFlight guard. Exposed for tests
227
+ * (force-tick on demand).
228
+ */
229
+ tickHeartbeat(getAgent: () => IAgentClient | null): Promise<void>;
230
+ /**
231
+ * Send `transport_heartbeat` with one backoff retry. Gated on a streaming
232
+ * agent (the heartbeat needs the agent transport); a non-streaming agent is a
233
+ * no-op. Split out of `tickHeartbeat` so its early returns stay local — the
234
+ * caller must still settle the concurrent tick hook before releasing the
235
+ * heartbeatInFlight guard.
236
+ */
237
+ private sendHeartbeat;
108
238
  }