@apnex/network-adapter 0.1.6 → 0.1.9

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.
@@ -1,101 +1,221 @@
1
1
  /**
2
2
  * tool-surface-reconciler.ts — declared-vs-applied reconcile for the Hub
3
- * MCP tool surface (bug-180 / FR-21).
3
+ * MCP tool surface (bug-180 / FR-21; mission-106 hardening).
4
4
  *
5
5
  * Problem this closes: the host (e.g. Claude Code) enumerates `tools/list`
6
6
  * ONCE at startup. On the pre-identity probe path the dispatcher serves the
7
7
  * persisted on-disk catalog (tool-catalog-cache). When a Hub redeploy changes
8
- * the tool surface, the in-memory catalog the host holds goes stale and
9
- * nothing re-enumerates it neither a client hard-reset nor /reload-plugins,
10
- * because the long-lived proxy process never re-fetches and the redeploy emits
11
- * no in-life `notifications/tools/list_changed` to already-connected hosts.
8
+ * the tool surface, the on-disk catalog goes stale and pre-mission-106
9
+ * NOTHING rewrote it: the reconciler only EMITTED `tools/list_changed` and bet
10
+ * on the host re-enumerating. A host that ignores the notification (observed:
11
+ * 33 emits, disk frozen for days) never refreshes, and a RESTART cannot help
12
+ * because the fresh process reads the same frozen disk on its own pre-identity
13
+ * probe. Disk-self-heal is therefore MANDATORY.
12
14
  *
13
- * The fix treats tool-surface delivery as a reconcile, mirroring the storage
14
- * substrate's SchemaDef-reconciler:
15
- * - desired-state = the Hub's tool surface, versioned by `toolSurfaceRevision`
16
- * (a deterministic hash of the registered tool set, served
17
- * on /health; Hub-side since bug-114).
18
- * - applied-state = the revision the host most recently enumerated.
19
- * - watch/notify = MCP `notifications/tools/list_changed` (the Hub already
20
- * advertises `tools.listChanged: true`).
15
+ * The mission-106 invariant (level-triggered, NOT edge-triggered idea-451):
16
+ * > A running harness's reachable tool surface CONVERGES to the hub's
17
+ * > advertised surface within bounded latency of any change, and a
18
+ * > revision-mismatched cache is NEVER served without a repair action.
21
19
  *
22
- * On drift between applied and desired, emit `list_changed`; the host re-calls
23
- * `tools/list` and identity now resolved the dispatcher serves the live
24
- * surface (it skips the probe-cache path once identityReady is true).
20
+ * Correctness rests on comparing the LEVEL (the disk-served revision vs the
21
+ * live revision) and REPAIRING the disk, never on catching an EDGE (a
22
+ * `list_changed` broadcast the host may miss). Contract clauses:
23
+ * 1. Repair authority belongs to drift-detection — on drift the reconciler
24
+ * re-fetches the catalog and atomically REWRITES the on-disk cache.
25
+ * 2. Validation fails CLOSED on an unknown revision (see isCacheValid).
26
+ * 3. `list_changed` is BEST-EFFORT acceleration of the live host surface, NOT
27
+ * the correctness mechanism (host re-enumeration is unverified — F2).
28
+ * 4. No silent stale serve (the dispatcher logs it; see serve path).
25
29
  *
26
- * This class owns ONLY the reconcile decision + the applied-revision marker.
27
- * All I/O is injected so it is unit-testable without a live Hub:
28
- * - fetchLiveRevision: resolve the Hub's current /health `toolSurfaceRevision`
29
- * (null on fetch failure / a Hub that doesn't return the field).
30
- * - readServedRevision: the revision the host's startup enumeration was
31
- * served from the on-disk cache's `toolSurfaceRevision` (null when no
32
- * cache exists, i.e. a fresh install that bootstrapped live).
33
- * - emitListChanged: emit `notifications/tools/list_changed` to the host.
30
+ * F1 (deepest): the LEVEL is the DISK-served revision — `readServedRevision()`
31
+ * read fresh EVERY pass never an optimistic in-memory `appliedRevision`
32
+ * latch. An in-memory advance after emit could mask a stale disk forever (next
33
+ * tick believes applied==live while the disk is still old). Convergence is
34
+ * marked ONLY after the atomic repair write succeeds; a failed/racing repair
35
+ * keeps the mismatch visible for the next tick.
34
36
  *
35
- * Two trigger points share one `reconcile()`:
36
- * - L1 (primary): on the shim's `identityReady` event — catches the
37
- * redeploy-then-reconnect case that caused bug-180.
38
- * - L2 (backstop): on the existing PollBackstop heartbeat cadence catches
39
- * a redeploy WHILE a session stays connected (no reconnect, so no fresh
40
- * identityReady).
37
+ * All I/O is injected so the class is unit-testable without a live Hub. The
38
+ * repair deps (fetchLiveCatalog / writeServedCatalog / onRepairOutcome) are
39
+ * OPTIONAL: a host that wires them gets full disk-repair authority; a host that
40
+ * does not falls back to emit-only (the pre-mission-106 degraded behavior,
41
+ * throttled so it does not spam).
41
42
  *
42
- * The applied-revision baseline is established on the first successful
43
- * reconcile (whichever trigger fires first), seeded from the on-disk cache so
44
- * a stale-cache-vs-live delta is detected even if L2 races ahead of L1.
43
+ * Two trigger points share one `reconcile()`:
44
+ * - L1 (primary): the shim's `identityReady` event.
45
+ * - L2 (backstop): the PollBackstop heartbeat cadence (~30s) the
46
+ * level-triggered floor that catches a redeploy while a session stays up.
47
+ * - L3 (serve-kick): the dispatcher's stale-serve path fire-and-forgets a
48
+ * `reconcile()` when it serves a labeled-stale cache (D3).
45
49
  */
46
50
  export class ToolSurfaceReconciler {
47
51
  deps;
48
52
  /**
49
- * The revision the host is believed to currently have applied. null until
50
- * the first successful reconcile establishes the baseline.
53
+ * The emit baseline/marker: the revision we last emitted `list_changed` for
54
+ * (repair path) OR the seeded baseline (emit-only path). mission-106 (F1): in
55
+ * the REPAIR path this is ONLY emit-dedup and is NEVER the convergence
56
+ * decision — convergence there is `readServedRevision() === live` (a real disk
57
+ * read, every pass). In the emit-only fallback (a host with no on-disk cache /
58
+ * no repair authority — e.g. pi/opencode) it is the pre-mission-106
59
+ * baseline+latch, which is safe there precisely because there is no disk for it
60
+ * to mask.
51
61
  */
52
62
  appliedRevision = null;
63
+ consecutiveRepairFailures = 0;
53
64
  log;
65
+ repairFailureBound;
54
66
  constructor(deps) {
55
67
  this.deps = deps;
56
68
  this.log = deps.log ?? (() => { });
69
+ this.repairFailureBound = deps.repairFailureBound ?? 3;
57
70
  }
58
- /** Test/diagnostic accessor for the current applied-state marker. */
71
+ /** Test/diagnostic accessor consecutive repair failures (F5 observability). */
72
+ getConsecutiveRepairFailures() {
73
+ return this.consecutiveRepairFailures;
74
+ }
75
+ /**
76
+ * Diagnostic accessor — the revision we last EMITTED `list_changed` for (the
77
+ * emit-throttle marker). mission-106 (F1): this is NOT the convergence level
78
+ * and MUST NOT be read as "the disk is fresh" — convergence is decided solely
79
+ * by `readServedRevision() === live` on each pass. Retained for observability
80
+ * + existing emit-cadence assertions.
81
+ */
59
82
  getAppliedRevision() {
60
83
  return this.appliedRevision;
61
84
  }
62
85
  /**
63
- * One reconcile pass. Idempotent and safe to call from either trigger:
64
- * 1. Resolve the live revision; no-op on unknown (fetch failed).
65
- * 2. On first pass, seed the applied baseline from the on-disk cache
66
- * (what the host's startup probe served) — or from live if no cache.
67
- * 3. On applied-vs-live drift, emit `list_changed` + advance the baseline.
68
- *
69
- * @param reason short label for logs (e.g. "identityReady", "heartbeat").
86
+ * One reconcile pass. Idempotent and safe from any trigger:
87
+ * 1. Resolve live; no-op on unknown (fetch failed — fail-safe).
88
+ * 2. Read the DISK-served revision (the level; F1). If served === live →
89
+ * converged, no-op.
90
+ * 3. On drift: REPAIR the disk (refetch + coherent + atomic rewrite) when
91
+ * repair deps are wired; else emit-only fallback. Converge ONLY on a
92
+ * successful atomic write; a failed repair stays visible (retry next tick)
93
+ * and escalates after `repairFailureBound` consecutive failures.
70
94
  */
71
95
  async reconcile(reason = "reconcile") {
72
96
  const live = await this.deps.fetchLiveRevision();
73
97
  if (live === null) {
74
- this.log(`[tool-surface-reconcile] ${reason}: live revision unknown — skipping (cache trusted)`);
75
- return { emitted: false, live: null };
98
+ this.log(`[tool-surface-reconcile] ${reason}: live revision unknown — skipping (no repair/emit against unknown live)`);
99
+ return { emitted: false, live: null, repaired: false, converged: false };
76
100
  }
77
- // Establish the applied-state baseline on the first successful pass. Prefer
78
- // the on-disk cache revision (the surface the pre-identity probe served);
79
- // fall back to live when no cache exists (fresh install already enumerated
80
- // live, so there is nothing to reconcile against).
101
+ const served = this.deps.readServedRevision();
102
+ const repairCapable = Boolean(this.deps.fetchLiveCatalog && this.deps.writeServedCatalog);
103
+ // ── REPAIR path (clause 1 / D1 / F3 / F5). F1: the level is the DISK-served
104
+ // revision, read fresh every pass; convergence is a real disk read, never an
105
+ // in-memory latch. ──
106
+ if (repairCapable) {
107
+ if (served === live) {
108
+ this.consecutiveRepairFailures = 0;
109
+ return { emitted: false, live, repaired: false, converged: true };
110
+ }
111
+ this.log(`[tool-surface-reconcile] ${reason}: DRIFT served=${served ?? "none"} → live=${live} — repairing disk`);
112
+ const outcome = await this.repair(live);
113
+ this.deps.onRepairOutcome?.(outcome);
114
+ if (outcome.ok) {
115
+ this.consecutiveRepairFailures = 0;
116
+ // Disk now serves `live` (correctness holds). Emit is best-effort
117
+ // acceleration of the LIVE in-memory host surface only (clause 3 / F2).
118
+ const emitted = this.maybeEmit(reason, live);
119
+ return { emitted, live, repaired: true, converged: true };
120
+ }
121
+ // F5: repair failed — LOUD, keep the mismatch visible, retry next tick.
122
+ this.consecutiveRepairFailures = outcome.consecutiveFailures;
123
+ this.log(`[tool-surface-reconcile] ${reason}: REPAIR FAILED (${outcome.klass}${outcome.detail ? `: ${outcome.detail}` : ""}) — consecutive=${this.consecutiveRepairFailures}; disk stays stale, retry next tick`);
124
+ if (this.consecutiveRepairFailures >= this.repairFailureBound) {
125
+ this.log(`[tool-surface-reconcile] ${reason}: ESCALATION — ${this.consecutiveRepairFailures} consecutive repair failures (>= ${this.repairFailureBound}); tool surface cannot converge (served=${served ?? "none"}, live=${live}) — operator/architect intervention required`);
126
+ }
127
+ return { emitted: false, live, repaired: false, converged: false };
128
+ }
129
+ // ── EMIT-ONLY fallback (no repair authority / no on-disk cache — the
130
+ // pre-mission-106 behavior, retained for hosts like pi/opencode). Seed the
131
+ // baseline on the first pass WITHOUT emitting (the host already enumerated
132
+ // live at bootstrap — a fresh install has nothing stale to signal); emit +
133
+ // advance only on a genuine change. F1-safe: with no disk to repair, this
134
+ // latch masks nothing. ──
81
135
  if (this.appliedRevision === null) {
82
- const served = this.deps.readServedRevision();
83
136
  this.appliedRevision = served ?? live;
84
137
  this.log(`[tool-surface-reconcile] ${reason}: baseline applied=${this.appliedRevision} (served=${served ?? "none"}, live=${live})`);
85
138
  }
86
139
  if (live !== this.appliedRevision) {
87
140
  this.log(`[tool-surface-reconcile] ${reason}: drift applied=${this.appliedRevision} → live=${live} — emitting tools/list_changed`);
88
- try {
89
- this.deps.emitListChanged();
90
- }
91
- catch (err) {
92
- // Never let a host-emit failure escape the reconcile loop.
93
- this.log(`[tool-surface-reconcile] ${reason}: emitListChanged threw (non-fatal): ${err?.message ?? String(err)}`);
94
- }
141
+ this.safeEmit(reason);
95
142
  this.appliedRevision = live;
96
- return { emitted: true, live };
143
+ return { emitted: true, live, repaired: false, converged: false };
144
+ }
145
+ return { emitted: false, live, repaired: false, converged: false };
146
+ }
147
+ /**
148
+ * Refetch + coherent + atomic rewrite (D1 tmp+rename via writeServedCatalog).
149
+ * F3: bind catalog + revision COHERENTLY — re-confirm the live revision AFTER
150
+ * fetching the catalog; if it moved mid-fetch, skip (retry next tick with the
151
+ * new live) rather than persist catalog@oldRevision. Never persist a zero-tool
152
+ * catalog (would poison the disk).
153
+ */
154
+ async repair(live) {
155
+ const nextFail = (klass, detail) => ({
156
+ ok: false,
157
+ klass,
158
+ detail,
159
+ consecutiveFailures: this.consecutiveRepairFailures + 1,
160
+ });
161
+ let catalog;
162
+ try {
163
+ catalog = await this.deps.fetchLiveCatalog();
164
+ }
165
+ catch (err) {
166
+ return nextFail("fetch-failed", err?.message ?? String(err));
167
+ }
168
+ if (!Array.isArray(catalog) || catalog.length === 0) {
169
+ return nextFail("zero-tool");
170
+ }
171
+ // F3 coherence gate: confirm the revision the catalog belongs to is still live.
172
+ const revAfter = await this.deps.fetchLiveRevision();
173
+ if (revAfter !== live) {
174
+ return nextFail("revision-moved", `live moved ${live} → ${revAfter ?? "unknown"} mid-fetch`);
175
+ }
176
+ let wrote;
177
+ try {
178
+ wrote = this.deps.writeServedCatalog(catalog, live);
179
+ }
180
+ catch (err) {
181
+ return nextFail("write-threw", err?.message ?? String(err));
182
+ }
183
+ if (!wrote)
184
+ return nextFail("write-failed");
185
+ return { ok: true, consecutiveFailures: 0 };
186
+ }
187
+ /**
188
+ * Operator escape-hatch (S2b / idea-456) — UNCONDITIONALLY emit
189
+ * `notifications/tools/list_changed`, bypassing the drift check, to hand an
190
+ * already-stale live host a fresh re-enumeration trigger on demand. With
191
+ * mission-106 disk-repair this is rarely needed (a reconcile pass repairs the
192
+ * disk), but retained as the manual host-kick + a deterministic test trigger.
193
+ */
194
+ async forceEmit(reason = "force-emit") {
195
+ const live = await this.deps.fetchLiveRevision();
196
+ this.log(`[tool-surface-reconcile] ${reason}: FORCE emit tools/list_changed (unconditional; live=${live ?? "unknown"})`);
197
+ this.safeEmit(reason);
198
+ if (live !== null)
199
+ this.appliedRevision = live;
200
+ return { emitted: true, live, repaired: false, converged: false };
201
+ }
202
+ /** Emit once per live revision (repair-path emit-dedup ONLY — never a
203
+ * convergence marker; convergence is the disk read). */
204
+ maybeEmit(reason, live) {
205
+ if (this.appliedRevision === live)
206
+ return false;
207
+ this.safeEmit(reason);
208
+ this.appliedRevision = live;
209
+ return true;
210
+ }
211
+ /** Emit to the host, never letting a host-emit failure escape the loop. */
212
+ safeEmit(reason) {
213
+ try {
214
+ this.deps.emitListChanged();
215
+ }
216
+ catch (err) {
217
+ this.log(`[tool-surface-reconcile] ${reason}: emitListChanged threw (non-fatal): ${err?.message ?? String(err)}`);
97
218
  }
98
- return { emitted: false, live };
99
219
  }
100
220
  }
101
221
  //# sourceMappingURL=tool-surface-reconciler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-surface-reconciler.js","sourceRoot":"","sources":["../../../src/tool-manager/catalog/tool-surface-reconciler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAiCH,MAAM,OAAO,qBAAqB;IAQH;IAP7B;;;OAGG;IACK,eAAe,GAAkB,IAAI,CAAC;IAC7B,GAAG,CAAwB;IAE5C,YAA6B,IAA+B;QAA/B,SAAI,GAAJ,IAAI,CAA2B;QAC1D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,qEAAqE;IACrE,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CACN,4BAA4B,MAAM,oDAAoD,CACvF,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;QAED,4EAA4E;QAC5E,0EAA0E;QAC1E,2EAA2E;QAC3E,mDAAmD;QACnD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,IAAI,CAAC;YACtC,IAAI,CAAC,GAAG,CACN,4BAA4B,MAAM,sBAAsB,IAAI,CAAC,eAAe,YAAY,MAAM,IAAI,MAAM,UAAU,IAAI,GAAG,CAC1H,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CACN,4BAA4B,MAAM,mBAAmB,IAAI,CAAC,eAAe,WAAW,IAAI,gCAAgC,CACzH,CAAC;YACF,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,2DAA2D;gBAC3D,IAAI,CAAC,GAAG,CACN,4BAA4B,MAAM,wCAAyC,GAAa,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CACnH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"tool-surface-reconciler.js","sourceRoot":"","sources":["../../../src/tool-manager/catalog/tool-surface-reconciler.ts"],"names":[],"mappings":"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"}
@@ -126,6 +126,14 @@ export interface SharedDispatcherOptions {
126
126
  * to enable tool-surface-revision-keyed validity.
127
127
  */
128
128
  isCacheValid?: (cached: CachedCatalog, currentRevision: string | null | undefined) => boolean;
129
+ /**
130
+ * mission-106 (D3) — kick an out-of-band reconcile when the serve path
131
+ * serves a LABELED-STALE cache (isCacheValid false: unknown or mismatched
132
+ * revision). Fire-and-forget: the serve path stays sub-50ms and NEVER awaits
133
+ * this; correctness (a fresh disk for the next enumeration) comes from the
134
+ * reconciler's disk repair, not from the serve path. Omit to disable the kick.
135
+ */
136
+ scheduleRepair?: () => void;
129
137
  /**
130
138
  * Universal Adapter notification contract. Host shim attaches its
131
139
  * render-surface bindings here.
@@ -170,6 +178,14 @@ export interface SharedDispatcherOptions {
170
178
  * When omitted, the dispatcher constructs its own (MCP hosts — unchanged).
171
179
  */
172
180
  sharedWorkLeases?: WorkLeaseTracker;
181
+ /**
182
+ * work-164 (idea-395) — override the auto-heartbeat's active-work recency window
183
+ * (ms). Defaults to RECENT_ACTIVITY_WINDOW_MS (env OIS_ADAPTER_ACTIVE_WORK_WINDOW_MS
184
+ * or 5min). Primarily a test seam: a small value makes an agent read "stalled" soon
185
+ * after its last tool call (exercising the stall-prompt + sweeper fallback), a large
186
+ * one keeps it "active" (exercising the auto-renew). Prod leaves it default.
187
+ */
188
+ activeWorkWindowMs?: number;
173
189
  }
174
190
  export interface SharedDispatcher {
175
191
  /** ADR-017 queueItemId tracking map. Keyed by `${dispatchType}:${entityRef}`. */
@@ -39,6 +39,15 @@ export { TOOL_CALL_SIGNAL_SKIP, pendingKey, injectQueueItemId };
39
39
  // hold the heartbeat cadence (heartbeatInFlight) and resource use. On timeout
40
40
  // the read is treated as a failed read (AC3 — tracker skipped, no false replay).
41
41
  const WAKE_STALL_READ_TIMEOUT_MS = 10_000;
42
+ // work-164 (idea-395): the auto-heartbeat's active-work recency window. An agent is
43
+ // treated as "genuinely working the node" if a tool-call boundary happened within
44
+ // this window (OR a call is in flight / the host reports non-idle). MUST be > the
45
+ // heartbeat tick interval (30s) AND > a plausible inter-tool REASONING gap (so a
46
+ // long mid-turn between tool calls does not read idle and get reaped — the case the
47
+ // architect flagged), yet < the lease TTL (15min) so a genuinely dead/silent holder
48
+ // falls out of "active" and is left to the stall-prompt + sweeper reap. 5 min sits in
49
+ // that band. Tunable via env for ops.
50
+ const RECENT_ACTIVITY_WINDOW_MS = Number(process.env.OIS_ADAPTER_ACTIVE_WORK_WINDOW_MS ?? 5 * 60_000);
42
51
  function withTimeout(p, ms, label) {
43
52
  let timer;
44
53
  const timeout = new Promise((_, reject) => {
@@ -57,6 +66,14 @@ export function createSharedDispatcher(opts) {
57
66
  // (list_ready_work etc.) do NOT pass through this handler, so an idle poll
58
67
  // never self-gates.
59
68
  let activeCallCount = 0;
69
+ // work-164 (idea-395): epoch-ms of the most recent host-driven tool-call boundary
70
+ // (start OR end). The auto-heartbeat's active-work signal reads this so a claim
71
+ // held by an agent that is mid-a-long-REASONING-turn (between tool calls at the
72
+ // tick instant, so activeCallCount===0) is still recognised as genuinely working
73
+ // and gets auto-renewed — the mid-turn survival case. Instantaneous
74
+ // activeCallCount alone would read "idle" here and reap live work (the bug one
75
+ // layer down). 0 until the first call.
76
+ let lastToolActivityMs = 0;
60
77
  let capturedClientInfo = {
61
78
  name: "unknown",
62
79
  version: "0.0.0",
@@ -237,6 +254,10 @@ export function createSharedDispatcher(opts) {
237
254
  // always 0 for it). MCP hosts leave externalIdle undefined → counter wins.
238
255
  const idle = opts.externalIdle ? opts.externalIdle() : activeCallCount === 0;
239
256
  const nowMs = Date.now();
257
+ // work-165 (idea-358): drop expired leases up front, so both the W2 stall
258
+ // scan and the W3 size()-based "holding" status below see only live leases
259
+ // (a reaped-but-unclosed lease would otherwise linger + mis-report).
260
+ workLeases.prune(nowMs);
240
261
  let claimableCount = 0;
241
262
  // W1 — inbound claimable digest. Read the CALLER-CLAIMABLE set via the
242
263
  // stable list_ready_work contract with scopeToCaller (idea-353 WI-2.1 /
@@ -247,6 +268,9 @@ export function createSharedDispatcher(opts) {
247
268
  // false 0→N replay (AC3).
248
269
  try {
249
270
  const raw = await withTimeout(agent.call("list_ready_work", { role, scopeToCaller: true }, { internal: true }), WAKE_STALL_READ_TIMEOUT_MS, "list_ready_work wake/stall read");
271
+ // work-165 (idea-358): the read returned (didn't throw/timeout) — the wake
272
+ // is alive, so clear any consecutive-failure streak + re-arm the degraded latch.
273
+ claimableDigest.recordReadSuccess();
250
274
  const items = raw?.items;
251
275
  if (Array.isArray(items)) {
252
276
  const claimableIds = items
@@ -259,20 +283,63 @@ export function createSharedDispatcher(opts) {
259
283
  kind: "notification.actionable",
260
284
  event: {
261
285
  event: "work_claimable_digest",
262
- data: { role, count: decision.count, newCount: decision.newCount },
286
+ data: { role, count: decision.count, newCount: decision.newCount, trigger: decision.trigger },
263
287
  },
264
288
  });
265
- log(`[idea-353] inbound digest emitted — ${decision.count} claimable (${decision.newCount} new) for ${role}`);
289
+ log(`[idea-353] inbound digest emitted — ${decision.count} claimable (${decision.newCount} new, ${decision.trigger}-triggered) for ${role}`);
266
290
  }
267
291
  }
268
292
  }
269
293
  catch (err) {
270
- log(`[idea-353] list_ready_work tick failed (non-fatal): ${err?.message ?? err}`);
294
+ // work-165 (idea-358): a failed read skips the tracker (AC3) but a RUN of
295
+ // failures silently kills the inbound wake (no reconcile ever runs). Count
296
+ // them; once the streak crosses the threshold, emit ONE degraded-mode
297
+ // notification so the dead wake is visible instead of silent.
298
+ const rf = claimableDigest.recordReadFailure();
299
+ log(`[idea-353] list_ready_work tick failed (non-fatal, ${rf.consecutiveFailures} consecutive): ${err?.message ?? err}`);
300
+ if (rf.degraded) {
301
+ router.route({
302
+ kind: "notification.actionable",
303
+ event: {
304
+ event: "wake_degraded",
305
+ data: { role, consecutiveFailures: rf.consecutiveFailures },
306
+ },
307
+ });
308
+ log(`[idea-358] WAKE DEGRADED — ${rf.consecutiveFailures} consecutive list_ready_work read failures; the inbound claimable-digest wake is silently dead until reads recover (check the Hub connection / restart the stream)`);
309
+ }
310
+ }
311
+ // work-164 (idea-395) — the ACTIVE-WORK signal. NOT the instantaneous
312
+ // activeCallCount: an agent mid-a-long reasoning turn sits BETWEEN tool calls
313
+ // at the tick instant (activeCallCount===0) yet is genuinely working — reaping
314
+ // it would be the same bug one layer down. So active = host reports non-idle
315
+ // (a call is in flight now) OR a tool-call boundary happened within
316
+ // RECENT_ACTIVITY_WINDOW_MS (covers the inter-tool reasoning gap).
317
+ const activeWindowMs = opts.activeWorkWindowMs ?? RECENT_ACTIVITY_WINDOW_MS;
318
+ const activeWork = !idle || nowMs - lastToolActivityMs < activeWindowMs;
319
+ // W1.5 — AUTO-HEARTBEAT (idea-395 centerpiece / the work-155 incident). While
320
+ // genuinely working, renew due leases on the holder's behalf so a long
321
+ // cognitive turn is never silently reaped mid-work. Crash-safe by construction:
322
+ // a stalled/dead holder (no activity within the window and not in a call) is
323
+ // NOT active → skipped here and left to the stall-prompt + sweeper below, so
324
+ // this never keeps a dead agent's lease alive.
325
+ if (activeWork) {
326
+ for (const due of workLeases.dueForRenew(nowMs)) {
327
+ try {
328
+ const renewResult = await withTimeout(agent.call("renew_lease", { workId: due.workId, leaseToken: due.token }, { internal: true }), WAKE_STALL_READ_TIMEOUT_MS, "auto-heartbeat renew_lease");
329
+ // Feed the renew result back so the tracker resets the window (the
330
+ // internal call bypasses the CallTool observe path in dispatch.ts).
331
+ workLeases.observe("renew_lease", { workId: due.workId }, renewResult, Date.now());
332
+ log(`[work-164] auto-heartbeat renewed ${due.workId} (was ~${Math.round(due.msUntilExpiry / 60000)}m to expiry; active work in progress)`);
333
+ }
334
+ catch (err) {
335
+ log(`[work-164] auto-heartbeat renew failed for ${due.workId} (non-fatal, retries next tick): ${err?.message ?? err}`);
336
+ }
337
+ }
271
338
  }
272
- // W2 — outbound stall-prompt. Idle-gated: never pester a visibly-
273
- // progressing holder (an in-flight CallTool = active progress). A held
274
- // lease past ~60% of its window without a renew gets ONE nudge.
275
- if (idle) {
339
+ // W2 — outbound stall-prompt. Fires only when NOT actively working (the
340
+ // fallback for a genuinely stalled holder the auto-heartbeat left alone): a
341
+ // held lease past ~60% of its window gets ONE gentle nudge before the sweeper.
342
+ if (!activeWork) {
276
343
  for (const due of workLeases.dueForStallPrompt(nowMs)) {
277
344
  router.route({
278
345
  kind: "notification.actionable",
@@ -410,7 +477,26 @@ export function createSharedDispatcher(opts) {
410
477
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
411
478
  return { tools: cached.catalog };
412
479
  }
413
- log(`[ListTools] cache stale (cached.toolSurfaceRevision=${cached.toolSurfaceRevision}, current=${currentRevision ?? "unknown"}) bootstrapping`);
480
+ // mission-106 (F4/D3) NOT valid (unknown OR mismatched revision).
481
+ // Preserve the probe-safe sub-50ms path: serve the warm cache as an
482
+ // EXPLICIT labeled-stale fallback (never a silent "valid" serve —
483
+ // clause 4) and fire-and-forget an out-of-band reconcile to repair the
484
+ // on-disk cache (clause 1 / D3). We do NOT block-await /health and do
485
+ // NOT bootstrap here — that would defeat the zero-round-trip probe path
486
+ // (D2/D3). Correctness comes from the repaired disk being served on the
487
+ // NEXT enumeration; the reconciler's L1/L2 triggers repair reliably even
488
+ // if this kick no-ops (e.g. the agent isn't usable pre-identity yet).
489
+ log(`[Cache] STALE served (rev ${cached.toolSurfaceRevision} != live ${currentRevision ?? "unknown"}) — repair scheduled`);
490
+ if (opts.scheduleRepair) {
491
+ try {
492
+ opts.scheduleRepair();
493
+ }
494
+ catch (err) {
495
+ log(`[ListTools] scheduleRepair hook threw (non-fatal): ${err.message ?? err}`);
496
+ }
497
+ }
498
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
499
+ return { tools: cached.catalog };
414
500
  }
415
501
  else {
416
502
  log("[ListTools] no cache (bootstrapping cache from Hub)");
@@ -489,9 +575,11 @@ export function createSharedDispatcher(opts) {
489
575
  workLeases,
490
576
  onCallStart: () => {
491
577
  activeCallCount++;
578
+ lastToolActivityMs = Date.now(); // work-164: stamp active-work recency
492
579
  },
493
580
  onCallEnd: () => {
494
581
  activeCallCount--;
582
+ lastToolActivityMs = Date.now(); // work-164: a just-completed call is recent activity
495
583
  },
496
584
  callToolGate: opts.callToolGate,
497
585
  callToolGateTimeoutMs: opts.callToolGateTimeoutMs,
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../src/tool-manager/orchestrator/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../src/tool-manager/orchestrator/dispatcher.ts"],"names":[],"mappings":"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"}