@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.
- package/dist/build-info.json +6 -0
- package/dist/file-logger.d.ts +42 -0
- package/dist/file-logger.js +122 -0
- package/dist/file-logger.js.map +1 -0
- package/dist/index.d.ts +37 -13
- package/dist/index.js +42 -15
- package/dist/index.js.map +1 -1
- package/dist/kernel/adapter-config.d.ts +47 -0
- package/dist/kernel/adapter-config.js +90 -0
- package/dist/kernel/adapter-config.js.map +1 -0
- package/dist/kernel/agent-client.d.ts +25 -20
- package/dist/kernel/build-identity.d.ts +24 -0
- package/dist/kernel/build-identity.js +45 -0
- package/dist/kernel/build-identity.js.map +1 -0
- package/dist/kernel/event-router.d.ts +22 -1
- package/dist/kernel/event-router.js +45 -7
- package/dist/kernel/event-router.js.map +1 -1
- package/dist/kernel/handshake.d.ts +40 -4
- package/dist/kernel/handshake.js +46 -7
- package/dist/kernel/handshake.js.map +1 -1
- package/dist/kernel/harness-manifest.d.ts +51 -0
- package/dist/kernel/harness-manifest.js +96 -0
- package/dist/kernel/harness-manifest.js.map +1 -0
- package/dist/kernel/liveness-signal.d.ts +35 -0
- package/dist/kernel/liveness-signal.js +61 -0
- package/dist/kernel/liveness-signal.js.map +1 -0
- package/dist/kernel/liveness-watchdog.d.ts +78 -0
- package/dist/kernel/liveness-watchdog.js +115 -0
- package/dist/kernel/liveness-watchdog.js.map +1 -0
- package/dist/kernel/mcp-agent-client.d.ts +2 -2
- package/dist/kernel/mcp-agent-client.js +49 -3
- package/dist/kernel/mcp-agent-client.js.map +1 -1
- package/dist/kernel/poll-backstop.d.ts +134 -4
- package/dist/kernel/poll-backstop.js +254 -24
- package/dist/kernel/poll-backstop.js.map +1 -1
- package/dist/kernel/state-sync.d.ts +2 -13
- package/dist/kernel/state-sync.js.map +1 -1
- package/dist/notification-log.d.ts +8 -0
- package/dist/notification-log.js +10 -0
- package/dist/notification-log.js.map +1 -1
- package/dist/observability.d.ts +24 -0
- package/dist/observability.js +52 -0
- package/dist/observability.js.map +1 -0
- package/dist/prompt-format.js +82 -9
- package/dist/prompt-format.js.map +1 -1
- package/dist/tool-manager/catalog/health-revision.d.ts +43 -0
- package/dist/tool-manager/catalog/health-revision.js +61 -0
- package/dist/tool-manager/catalog/health-revision.js.map +1 -0
- package/dist/tool-manager/{tool-catalog-cache.d.ts → catalog/tool-catalog-cache.d.ts} +39 -19
- package/dist/tool-manager/{tool-catalog-cache.js → catalog/tool-catalog-cache.js} +53 -26
- package/dist/tool-manager/catalog/tool-catalog-cache.js.map +1 -0
- package/dist/tool-manager/catalog/tool-surface-reconciler.d.ts +93 -0
- package/dist/tool-manager/catalog/tool-surface-reconciler.js +101 -0
- package/dist/tool-manager/catalog/tool-surface-reconciler.js.map +1 -0
- package/dist/tool-manager/contracts.d.ts +91 -0
- package/dist/tool-manager/contracts.js +20 -0
- package/dist/tool-manager/contracts.js.map +1 -0
- package/dist/tool-manager/dispatch/dispatch.d.ts +77 -0
- package/dist/tool-manager/dispatch/dispatch.js +170 -0
- package/dist/tool-manager/dispatch/dispatch.js.map +1 -0
- package/dist/tool-manager/dispatch/tool-call-policy.d.ts +32 -0
- package/dist/tool-manager/dispatch/tool-call-policy.js +56 -0
- package/dist/tool-manager/dispatch/tool-call-policy.js.map +1 -0
- package/dist/tool-manager/{dispatcher.d.ts → orchestrator/dispatcher.d.ts} +110 -31
- package/dist/tool-manager/orchestrator/dispatcher.js +559 -0
- package/dist/tool-manager/orchestrator/dispatcher.js.map +1 -0
- package/dist/tool-manager/work-protocol/claimable-digest-tracker.d.ts +60 -0
- package/dist/tool-manager/work-protocol/claimable-digest-tracker.js +66 -0
- package/dist/tool-manager/work-protocol/claimable-digest-tracker.js.map +1 -0
- package/dist/tool-manager/work-protocol/work-lease-tracker.d.ts +70 -0
- package/dist/tool-manager/work-protocol/work-lease-tracker.js +146 -0
- package/dist/tool-manager/work-protocol/work-lease-tracker.js.map +1 -0
- package/dist/wire/mcp-transport.d.ts +1 -1
- package/dist/wire/mcp-transport.js +31 -7
- package/dist/wire/mcp-transport.js.map +1 -1
- package/dist/wire/slot-gate.d.ts +40 -0
- package/dist/wire/slot-gate.js +61 -0
- package/dist/wire/slot-gate.js.map +1 -0
- package/dist/wire/transport.d.ts +18 -0
- package/package.json +6 -3
- package/dist/kernel/instance.d.ts +0 -40
- package/dist/kernel/instance.js +0 -79
- package/dist/kernel/instance.js.map +0 -1
- package/dist/tool-manager/dispatcher.js +0 -379
- package/dist/tool-manager/dispatcher.js.map +0 -1
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
}
|