@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.
- package/dist/build-info.json +3 -3
- package/dist/index.d.ts +3 -2
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/kernel/state-sync.js +6 -2
- package/dist/kernel/state-sync.js.map +1 -1
- package/dist/prompt-format.js +22 -1
- package/dist/prompt-format.js.map +1 -1
- package/dist/tool-manager/catalog/tool-catalog-cache.d.ts +20 -12
- package/dist/tool-manager/catalog/tool-catalog-cache.js +22 -12
- package/dist/tool-manager/catalog/tool-catalog-cache.js.map +1 -1
- package/dist/tool-manager/catalog/tool-surface-reconciler.d.ts +120 -50
- package/dist/tool-manager/catalog/tool-surface-reconciler.js +179 -59
- package/dist/tool-manager/catalog/tool-surface-reconciler.js.map +1 -1
- package/dist/tool-manager/orchestrator/dispatcher.d.ts +16 -0
- package/dist/tool-manager/orchestrator/dispatcher.js +96 -8
- package/dist/tool-manager/orchestrator/dispatcher.js.map +1 -1
- package/dist/tool-manager/work-protocol/claimable-digest-tracker.d.ts +37 -0
- package/dist/tool-manager/work-protocol/claimable-digest-tracker.js +61 -6
- package/dist/tool-manager/work-protocol/claimable-digest-tracker.js.map +1 -1
- package/dist/tool-manager/work-protocol/work-lease-tracker.d.ts +29 -0
- package/dist/tool-manager/work-protocol/work-lease-tracker.js +56 -3
- package/dist/tool-manager/work-protocol/work-lease-tracker.js.map +1 -1
- package/package.json +1 -1
package/dist/build-info.json
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export { McpTransport } from "./wire/mcp-transport.js";
|
|
|
3
3
|
export { McpAgentClient } from "./kernel/mcp-agent-client.js";
|
|
4
4
|
export type { McpAgentClientOptions } from "./kernel/mcp-agent-client.js";
|
|
5
5
|
export type { IAgentClient, AgentClientConfig, AgentClientCallbacks, AgentClientMetrics, AgentHandshakeConfig, } from "./kernel/agent-client.js";
|
|
6
|
-
export
|
|
6
|
+
export { NotificationCoalescer } from "@apnex/message-router";
|
|
7
|
+
export type { AgentEvent, SessionState, SessionReconnectReason, DrainedPendingAction, CoalescedNotification, } from "@apnex/message-router";
|
|
7
8
|
export type { HubEventType, HubEvent, EventDisposition, DrainedActionReconstruction, } from "./kernel/event-router.js";
|
|
8
9
|
export { classifyEvent, parseHubEvent, createDedupFilter, isPulseEvent, PULSE_KINDS, reconstructDrainedAction, } from "./kernel/event-router.js";
|
|
9
10
|
export { FATAL_CODES, parseHandshakeError, parseHandshakeResponse, buildHandshakePayload, performHandshake, makeStdioFatalHalt, readRequiredAgentName, } from "./kernel/handshake.js";
|
|
@@ -36,7 +37,7 @@ export type { DispatcherClientInfo, DispatcherNotificationHooks, SharedDispatche
|
|
|
36
37
|
export { CATALOG_SCHEMA_VERSION, cachePathFor, readCache, writeCache, isCacheValid, } from "./tool-manager/catalog/tool-catalog-cache.js";
|
|
37
38
|
export type { ToolCatalog, CachedCatalog, } from "./tool-manager/catalog/tool-catalog-cache.js";
|
|
38
39
|
export { ToolSurfaceReconciler } from "./tool-manager/catalog/tool-surface-reconciler.js";
|
|
39
|
-
export type { ToolSurfaceReconcilerDeps, ReconcileOutcome, } from "./tool-manager/catalog/tool-surface-reconciler.js";
|
|
40
|
+
export type { ToolSurfaceReconcilerDeps, ReconcileOutcome, RepairOutcome, RepairFailureClass, ReconcilerCatalog, } from "./tool-manager/catalog/tool-surface-reconciler.js";
|
|
40
41
|
export { makeFetchLiveToolSurfaceRevision } from "./tool-manager/catalog/health-revision.js";
|
|
41
42
|
export type { FetchLiveToolSurfaceRevisionOptions } from "./tool-manager/catalog/health-revision.js";
|
|
42
43
|
export { ClaimableDigestTracker } from "./tool-manager/work-protocol/claimable-digest-tracker.js";
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
export { McpTransport } from "./wire/mcp-transport.js";
|
|
3
3
|
// ── Layer 1b: Kernel (handshake / session FSM / agent client) ──────
|
|
4
4
|
export { McpAgentClient } from "./kernel/mcp-agent-client.js";
|
|
5
|
+
// bug-160 — the Message-union payload contract (AgentEvent / SessionState /
|
|
6
|
+
// SessionReconnectReason / DrainedPendingAction) was relocated DOWN to
|
|
7
|
+
// @apnex/message-router to break the L2↔L4 source cycle; re-exported here so
|
|
8
|
+
// consumers importing them from @apnex/network-adapter are unaffected.
|
|
9
|
+
export { NotificationCoalescer } from "@apnex/message-router";
|
|
5
10
|
export { classifyEvent, parseHubEvent, createDedupFilter, isPulseEvent, PULSE_KINDS, reconstructDrainedAction, } from "./kernel/event-router.js";
|
|
6
11
|
// idea-251 D-prime Phase 2: instance.ts deleted. Identity now flows from
|
|
7
12
|
// OIS_AGENT_NAME env → handshake.name → Hub-side fingerprint(name).
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAYtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,sEAAsE;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAYtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,sEAAsE;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAW9D,4EAA4E;AAC5E,uEAAuE;AACvE,6EAA6E;AAC7E,uEAAuE;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAgB9D,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,yEAAyE;AACzE,oEAAoE;AACpE,qEAAqE;AAErE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAY/B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,WAAW,EACX,MAAM,EACN,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAGnC,2EAA2E;AAC3E,wEAAwE;AACxE,8EAA8E;AAC9E,2EAA2E;AAC3E,sEAAsE;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAGrC,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,8BAA8B,CAAC;AAuBtC,0EAA0E;AAC1E,sEAAsE;AACtE,4EAA4E;AAC5E,iFAAiF;AACjF,2EAA2E;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAMtE,iFAAiF;AACjF,4EAA4E;AAC5E,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,2CAA2C,CAAC;AAQnD,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,GACb,MAAM,8CAA8C,CAAC;AAMtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAS1F,gFAAgF;AAChF,6EAA6E;AAC7E,oBAAoB;AACpB,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAG7F,yDAAyD;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAKlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AAGtF,uEAAuE;AAEvE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAInE,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAMzF,uEAAuE;AACvE,yDAAyD;AACzD,iEAAiE;AACjE,gEAAgE;AAChE,4DAA4D;AAE5D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
|
|
@@ -16,9 +16,13 @@ export async function performStateSync(ctx) {
|
|
|
16
16
|
// ADR-017 additive: drain_pending_actions runs alongside the legacy
|
|
17
17
|
// surface. Hubs that don't expose the tool yet (pre-ADR-017) return
|
|
18
18
|
// an error here which we swallow — the other two calls still land.
|
|
19
|
+
// work-162 (A1): the legacy `get_task` directive-fetch is retired with the
|
|
20
|
+
// Task subsystem. `list_missions` ([Any]) replaces it as the sync-phase
|
|
21
|
+
// liveness read-probe — a benign read every role can issue, so the
|
|
22
|
+
// dispatcher records a read-success and the agent transitions to online.
|
|
19
23
|
const [directive, pendingActions, drainedRaw] = await Promise.all([
|
|
20
|
-
ctx.executeTool("
|
|
21
|
-
log.log("agent.sync.
|
|
24
|
+
ctx.executeTool("list_missions", {}).catch((err) => {
|
|
25
|
+
log.log("agent.sync.list_missions.failed", { error: String(err) }, `[StateSync] list_missions: ${err}`);
|
|
22
26
|
return null;
|
|
23
27
|
}),
|
|
24
28
|
ctx.executeTool("get_pending_actions", {}).catch((err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-sync.js","sourceRoot":"","sources":["../../src/kernel/state-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA6BlD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAqB;IAC1D,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACrD,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,EAAE,oCAAoC,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,oEAAoE;QACpE,oEAAoE;QACpE,mEAAmE;QACnE,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChE,GAAG,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"state-sync.js","sourceRoot":"","sources":["../../src/kernel/state-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/prompt-format.js
CHANGED
|
@@ -189,6 +189,22 @@ function renderMessageArrived(data, cfg) {
|
|
|
189
189
|
`OR a short status reply on the active coord-thread). ` +
|
|
190
190
|
`Message ID: ${msgId}.`);
|
|
191
191
|
}
|
|
192
|
+
// work-54 (PR #480 verifier finding): a Hub system notification — an
|
|
193
|
+
// external-injection carrying `notificationEvent` (work/deploy/workflow/PR
|
|
194
|
+
// vocabulary) — renders its Hub-composed body instead of falling through to
|
|
195
|
+
// the generic "Message arrived" prompt. Prefer the OUTER data.body (the
|
|
196
|
+
// canonical Hub-side peek-line render attached by augmentDataWithRenderFields,
|
|
197
|
+
// incl. [source-class] prefix + actionability marker); fall back to the inner
|
|
198
|
+
// payload.body for an envelope an older Hub pushed without the outer render.
|
|
199
|
+
if (kind === "external-injection" && typeof payload.notificationEvent === "string") {
|
|
200
|
+
const outerBody = data.body;
|
|
201
|
+
if (typeof outerBody === "string" && outerBody.length > 0) {
|
|
202
|
+
return `${outerBody} (Message ID: ${msgId}.)`;
|
|
203
|
+
}
|
|
204
|
+
if (typeof payload.body === "string" && payload.body.length > 0) {
|
|
205
|
+
return `[Hub] ${payload.body} (Message ID: ${msgId}.)`;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
192
208
|
if (payload.event && typeof payload.event === "string") {
|
|
193
209
|
return (`[Hub] Hub event injected: ${payload.event}. ` +
|
|
194
210
|
`${getActionText(payload.event, payload.data ?? {})}. ` +
|
|
@@ -220,9 +236,14 @@ function renderWorkClaimableDigest(data, cfg) {
|
|
|
220
236
|
const newCount = typeof data.newCount === "number" ? data.newCount : count;
|
|
221
237
|
const noun = count === 1 ? "item" : "items";
|
|
222
238
|
const newClause = newCount > 0 && newCount < count ? ` (${newCount} new)` : "";
|
|
239
|
+
// bug-226: the level-triggered marker — an idle-ENTRY re-surface of standing
|
|
240
|
+
// work (claimable while you were busy), vs the edge (newly-appeared) wake.
|
|
241
|
+
const basis = data.trigger === "level"
|
|
242
|
+
? "surfaced on idle-entry — this work was already claimable while you were busy"
|
|
243
|
+
: "surfaced because you are idle and newly-claimable work appeared";
|
|
223
244
|
return (`[Hub] ${count} ${noun} now claimable for the ${role} role${newClause}. ` +
|
|
224
245
|
`Call ${p}list_ready_work to view, then ${p}claim_work to pick one up. ` +
|
|
225
|
-
`(Idle-wake digest:
|
|
246
|
+
`(Idle-wake digest: ${basis}.)`);
|
|
226
247
|
}
|
|
227
248
|
function renderWorkLeaseStall(data, cfg) {
|
|
228
249
|
// idea-353 W2 — outbound stall-prompt: the gentle first rung below the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-format.js","sourceRoot":"","sources":["../src/prompt-format.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompt-format.js","sourceRoot":"","sources":["../src/prompt-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,23 +81,31 @@ export declare function readCache(workDir: string, log?: (msg: string) => void):
|
|
|
81
81
|
/**
|
|
82
82
|
* Persist the catalog atomically. Writes a sibling tmp file then
|
|
83
83
|
* renames — so a crash mid-write leaves either the previous cache
|
|
84
|
-
* intact OR the new cache fully landed. Best-effort
|
|
85
|
-
*
|
|
84
|
+
* intact OR the new cache fully landed. Best-effort on the primary
|
|
85
|
+
* ListTools flow (never throws), but mission-106 (F5) needs the
|
|
86
|
+
* outcome: returns `true` iff the atomic rename landed, `false` on any
|
|
87
|
+
* failure (dir/write/rename). The reconciler's disk-repair path uses
|
|
88
|
+
* this to decide convergence — a failed write must NOT be counted as
|
|
89
|
+
* repaired (the stale disk stays visible for the next reconcile tick).
|
|
86
90
|
*/
|
|
87
|
-
export declare function writeCache(workDir: string, catalog: ToolCatalog, toolSurfaceRevision: string, log?: (msg: string) => void):
|
|
91
|
+
export declare function writeCache(workDir: string, catalog: ToolCatalog, toolSurfaceRevision: string, log?: (msg: string) => void): boolean;
|
|
88
92
|
/**
|
|
89
93
|
* Check cache validity against the current Hub tool-surface revision.
|
|
90
94
|
*
|
|
91
|
-
*
|
|
95
|
+
* mission-106 (F4 — fail CLOSED on unknown revision): validity means a
|
|
96
|
+
* DEFINITIVE equal revision, nothing else.
|
|
92
97
|
* - currentRevision is a non-empty string: strict equality vs
|
|
93
|
-
* cached.toolSurfaceRevision. Mismatch →
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* (probe-friendly
|
|
99
|
-
*
|
|
100
|
-
*
|
|
98
|
+
* cached.toolSurfaceRevision. Mismatch → NOT valid.
|
|
99
|
+
* - currentRevision is null/undefined/empty: the caller does not yet know
|
|
100
|
+
* the live revision (the /health warm is fire-and-forget — shim.ts — and
|
|
101
|
+
* loses the race to the host's startup tools/list). Unknown freshness is
|
|
102
|
+
* NOT validity → return false. Pre-mission-106 this returned `true`
|
|
103
|
+
* (probe-friendly "trust the cache"), which rubber-stamped a stale cache
|
|
104
|
+
* as valid and served it FOREVER (the frozen-catalog defect). The caller
|
|
105
|
+
* (dispatcher) still keeps the probe path fast, but treats a false result
|
|
106
|
+
* as a LABELED-STALE serve (serve warm cache + log STALE + schedule an
|
|
107
|
+
* out-of-band repair), never a silent "valid" serve — correctness comes
|
|
108
|
+
* from the reconciler's disk repair, not from trusting an unknown revision.
|
|
101
109
|
*
|
|
102
110
|
* Schema-version check is enforced inside readCache, so isCacheValid
|
|
103
111
|
* never sees a wrong-schema cached object.
|
|
@@ -106,8 +106,12 @@ export function readCache(workDir, log) {
|
|
|
106
106
|
/**
|
|
107
107
|
* Persist the catalog atomically. Writes a sibling tmp file then
|
|
108
108
|
* renames — so a crash mid-write leaves either the previous cache
|
|
109
|
-
* intact OR the new cache fully landed. Best-effort
|
|
110
|
-
*
|
|
109
|
+
* intact OR the new cache fully landed. Best-effort on the primary
|
|
110
|
+
* ListTools flow (never throws), but mission-106 (F5) needs the
|
|
111
|
+
* outcome: returns `true` iff the atomic rename landed, `false` on any
|
|
112
|
+
* failure (dir/write/rename). The reconciler's disk-repair path uses
|
|
113
|
+
* this to decide convergence — a failed write must NOT be counted as
|
|
114
|
+
* repaired (the stale disk stays visible for the next reconcile tick).
|
|
111
115
|
*/
|
|
112
116
|
export function writeCache(workDir, catalog, toolSurfaceRevision, log) {
|
|
113
117
|
const path = cachePathFor(workDir);
|
|
@@ -124,6 +128,7 @@ export function writeCache(workDir, catalog, toolSurfaceRevision, log) {
|
|
|
124
128
|
mkdirSync(dir, { recursive: true });
|
|
125
129
|
writeFileSync(tmpPath, JSON.stringify(body), { encoding: "utf8" });
|
|
126
130
|
renameSync(tmpPath, path);
|
|
131
|
+
return true;
|
|
127
132
|
}
|
|
128
133
|
catch (err) {
|
|
129
134
|
log?.(`[tool-catalog-cache] writeCache: failed at ${path}: ${err.message ?? err} — cache will not populate this run`);
|
|
@@ -134,21 +139,26 @@ export function writeCache(workDir, catalog, toolSurfaceRevision, log) {
|
|
|
134
139
|
catch {
|
|
135
140
|
/* ignore */
|
|
136
141
|
}
|
|
142
|
+
return false;
|
|
137
143
|
}
|
|
138
144
|
}
|
|
139
145
|
/**
|
|
140
146
|
* Check cache validity against the current Hub tool-surface revision.
|
|
141
147
|
*
|
|
142
|
-
*
|
|
148
|
+
* mission-106 (F4 — fail CLOSED on unknown revision): validity means a
|
|
149
|
+
* DEFINITIVE equal revision, nothing else.
|
|
143
150
|
* - currentRevision is a non-empty string: strict equality vs
|
|
144
|
-
* cached.toolSurfaceRevision. Mismatch →
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* (probe-friendly
|
|
150
|
-
*
|
|
151
|
-
*
|
|
151
|
+
* cached.toolSurfaceRevision. Mismatch → NOT valid.
|
|
152
|
+
* - currentRevision is null/undefined/empty: the caller does not yet know
|
|
153
|
+
* the live revision (the /health warm is fire-and-forget — shim.ts — and
|
|
154
|
+
* loses the race to the host's startup tools/list). Unknown freshness is
|
|
155
|
+
* NOT validity → return false. Pre-mission-106 this returned `true`
|
|
156
|
+
* (probe-friendly "trust the cache"), which rubber-stamped a stale cache
|
|
157
|
+
* as valid and served it FOREVER (the frozen-catalog defect). The caller
|
|
158
|
+
* (dispatcher) still keeps the probe path fast, but treats a false result
|
|
159
|
+
* as a LABELED-STALE serve (serve warm cache + log STALE + schedule an
|
|
160
|
+
* out-of-band repair), never a silent "valid" serve — correctness comes
|
|
161
|
+
* from the reconciler's disk repair, not from trusting an unknown revision.
|
|
152
162
|
*
|
|
153
163
|
* Schema-version check is enforced inside readCache, so isCacheValid
|
|
154
164
|
* never sees a wrong-schema cached object.
|
|
@@ -157,7 +167,7 @@ export function isCacheValid(cached, currentRevision) {
|
|
|
157
167
|
if (currentRevision === null ||
|
|
158
168
|
currentRevision === undefined ||
|
|
159
169
|
currentRevision === "") {
|
|
160
|
-
return
|
|
170
|
+
return false;
|
|
161
171
|
}
|
|
162
172
|
return cached.toolSurfaceRevision === currentRevision;
|
|
163
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-catalog-cache.js","sourceRoot":"","sources":["../../../src/tool-manager/catalog/tool-catalog-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAqBxC,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,OAAe,EACf,GAA2B;IAE3B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACzD,IACE,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;YACxC,MAAM,CAAC,aAAa,KAAK,sBAAsB;YAC/C,OAAO,MAAM,CAAC,mBAAmB,KAAK,QAAQ;YAC9C,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YACpC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAC9B,CAAC;YACD,GAAG,EAAE,CACH,4EAA4E,IAAI,qCAAqC,CACtH,CAAC;YACF,gEAAgE;YAChE,kEAAkE;YAClE,6CAA6C;YAC7C,gEAAgE;YAChE,mEAAmE;YACnE,mBAAmB;YACnB,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,GAAG,EAAE,CACH,8DAA+D,SAAmB,CAAC,OAAO,IAAI,SAAS,EAAE,CAC1G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,EAAE,CACH,kDAAkD,IAAI,KAAM,GAAa,CAAC,OAAO,IAAI,GAAG,EAAE,CAC3F,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"tool-catalog-cache.js","sourceRoot":"","sources":["../../../src/tool-manager/catalog/tool-catalog-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,93 +1,163 @@
|
|
|
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
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
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
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
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
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
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
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
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
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
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
|
*/
|
|
50
|
+
/** MCP tool catalog entry shape — opaque, mirrors tool-catalog-cache.ToolCatalog. */
|
|
51
|
+
export type ReconcilerCatalog = unknown[];
|
|
52
|
+
/** Failure taxonomy for a repair attempt (F5 — each class logged + metriced). */
|
|
53
|
+
export type RepairFailureClass = "fetch-failed" | "zero-tool" | "revision-moved" | "write-failed" | "write-threw";
|
|
54
|
+
export interface RepairOutcome {
|
|
55
|
+
/** True iff the on-disk cache was atomically rewritten to the live revision. */
|
|
56
|
+
ok: boolean;
|
|
57
|
+
/** Present on failure — which class (F5). */
|
|
58
|
+
klass?: RepairFailureClass;
|
|
59
|
+
/** Optional human detail for logs. */
|
|
60
|
+
detail?: string;
|
|
61
|
+
/** Consecutive repair failures INCLUDING this attempt (0 on success). */
|
|
62
|
+
consecutiveFailures: number;
|
|
63
|
+
}
|
|
46
64
|
export interface ToolSurfaceReconcilerDeps {
|
|
47
65
|
/**
|
|
48
66
|
* Resolve the Hub's live tool-surface revision (the /health
|
|
49
67
|
* `toolSurfaceRevision` ETag). Returns null when the fetch fails or the Hub
|
|
50
68
|
* doesn't return the field — the reconcile then no-ops (fail-safe: never
|
|
51
|
-
*
|
|
69
|
+
* repair or emit against an unknown live state).
|
|
52
70
|
*/
|
|
53
71
|
fetchLiveRevision: () => Promise<string | null>;
|
|
54
72
|
/**
|
|
55
|
-
* The revision the
|
|
56
|
-
*
|
|
57
|
-
* baseline on the first reconcile (the pre-identity probe served this).
|
|
58
|
-
* null when no cache exists (fresh install bootstrapped live → no drift).
|
|
73
|
+
* The revision the on-disk cache currently serves — read FRESH every pass
|
|
74
|
+
* (this IS the level; F1). null when no cache file exists.
|
|
59
75
|
*/
|
|
60
76
|
readServedRevision: () => string | null;
|
|
61
|
-
/** Emit `notifications/tools/list_changed` to the host. */
|
|
77
|
+
/** Emit `notifications/tools/list_changed` to the host (BEST-EFFORT; clause 3). */
|
|
62
78
|
emitListChanged: () => void;
|
|
79
|
+
/**
|
|
80
|
+
* mission-106 repair deps (OPTIONAL). Present ⇒ this host has disk-repair
|
|
81
|
+
* authority (clause 1). Absent ⇒ emit-only fallback (degraded; no disk repair).
|
|
82
|
+
*/
|
|
83
|
+
/** Re-fetch the live tool catalog for a repair write. */
|
|
84
|
+
fetchLiveCatalog?: () => Promise<ReconcilerCatalog>;
|
|
85
|
+
/** Atomically persist the catalog@revision to disk; returns write success (F5/D1). */
|
|
86
|
+
writeServedCatalog?: (catalog: ReconcilerCatalog, revision: string) => boolean;
|
|
87
|
+
/** Observe every repair attempt (metrics/escalation; F5). */
|
|
88
|
+
onRepairOutcome?: (outcome: RepairOutcome) => void;
|
|
89
|
+
/** Consecutive repair failures before an escalation log fires (F5). Default 3. */
|
|
90
|
+
repairFailureBound?: number;
|
|
63
91
|
/** Diagnostic logger. No-op default. */
|
|
64
92
|
log?: (msg: string) => void;
|
|
65
93
|
}
|
|
66
94
|
export interface ReconcileOutcome {
|
|
67
|
-
/** True iff
|
|
95
|
+
/** True iff `list_changed` was emitted this pass. */
|
|
68
96
|
emitted: boolean;
|
|
69
97
|
/** The live revision resolved this pass (null on fetch failure). */
|
|
70
98
|
live: string | null;
|
|
99
|
+
/** True iff the on-disk cache was repaired (rewritten to live) this pass. */
|
|
100
|
+
repaired: boolean;
|
|
101
|
+
/** True iff the disk already serves (or was repaired to) the live revision. */
|
|
102
|
+
converged: boolean;
|
|
71
103
|
}
|
|
72
104
|
export declare class ToolSurfaceReconciler {
|
|
73
105
|
private readonly deps;
|
|
74
106
|
/**
|
|
75
|
-
* The
|
|
76
|
-
* the
|
|
107
|
+
* The emit baseline/marker: the revision we last emitted `list_changed` for
|
|
108
|
+
* (repair path) OR the seeded baseline (emit-only path). mission-106 (F1): in
|
|
109
|
+
* the REPAIR path this is ONLY emit-dedup and is NEVER the convergence
|
|
110
|
+
* decision — convergence there is `readServedRevision() === live` (a real disk
|
|
111
|
+
* read, every pass). In the emit-only fallback (a host with no on-disk cache /
|
|
112
|
+
* no repair authority — e.g. pi/opencode) it is the pre-mission-106
|
|
113
|
+
* baseline+latch, which is safe there precisely because there is no disk for it
|
|
114
|
+
* to mask.
|
|
77
115
|
*/
|
|
78
116
|
private appliedRevision;
|
|
117
|
+
private consecutiveRepairFailures;
|
|
79
118
|
private readonly log;
|
|
119
|
+
private readonly repairFailureBound;
|
|
80
120
|
constructor(deps: ToolSurfaceReconcilerDeps);
|
|
81
|
-
/** Test/diagnostic accessor
|
|
121
|
+
/** Test/diagnostic accessor — consecutive repair failures (F5 observability). */
|
|
122
|
+
getConsecutiveRepairFailures(): number;
|
|
123
|
+
/**
|
|
124
|
+
* Diagnostic accessor — the revision we last EMITTED `list_changed` for (the
|
|
125
|
+
* emit-throttle marker). mission-106 (F1): this is NOT the convergence level
|
|
126
|
+
* and MUST NOT be read as "the disk is fresh" — convergence is decided solely
|
|
127
|
+
* by `readServedRevision() === live` on each pass. Retained for observability
|
|
128
|
+
* + existing emit-cadence assertions.
|
|
129
|
+
*/
|
|
82
130
|
getAppliedRevision(): string | null;
|
|
83
131
|
/**
|
|
84
|
-
* One reconcile pass. Idempotent and safe
|
|
85
|
-
* 1. Resolve
|
|
86
|
-
* 2.
|
|
87
|
-
*
|
|
88
|
-
* 3. On
|
|
89
|
-
*
|
|
90
|
-
*
|
|
132
|
+
* One reconcile pass. Idempotent and safe from any trigger:
|
|
133
|
+
* 1. Resolve live; no-op on unknown (fetch failed — fail-safe).
|
|
134
|
+
* 2. Read the DISK-served revision (the level; F1). If served === live →
|
|
135
|
+
* converged, no-op.
|
|
136
|
+
* 3. On drift: REPAIR the disk (refetch + coherent + atomic rewrite) when
|
|
137
|
+
* repair deps are wired; else emit-only fallback. Converge ONLY on a
|
|
138
|
+
* successful atomic write; a failed repair stays visible (retry next tick)
|
|
139
|
+
* and escalates after `repairFailureBound` consecutive failures.
|
|
91
140
|
*/
|
|
92
141
|
reconcile(reason?: string): Promise<ReconcileOutcome>;
|
|
142
|
+
/**
|
|
143
|
+
* Refetch + coherent + atomic rewrite (D1 tmp+rename via writeServedCatalog).
|
|
144
|
+
* F3: bind catalog + revision COHERENTLY — re-confirm the live revision AFTER
|
|
145
|
+
* fetching the catalog; if it moved mid-fetch, skip (retry next tick with the
|
|
146
|
+
* new live) rather than persist catalog@oldRevision. Never persist a zero-tool
|
|
147
|
+
* catalog (would poison the disk).
|
|
148
|
+
*/
|
|
149
|
+
private repair;
|
|
150
|
+
/**
|
|
151
|
+
* Operator escape-hatch (S2b / idea-456) — UNCONDITIONALLY emit
|
|
152
|
+
* `notifications/tools/list_changed`, bypassing the drift check, to hand an
|
|
153
|
+
* already-stale live host a fresh re-enumeration trigger on demand. With
|
|
154
|
+
* mission-106 disk-repair this is rarely needed (a reconcile pass repairs the
|
|
155
|
+
* disk), but retained as the manual host-kick + a deterministic test trigger.
|
|
156
|
+
*/
|
|
157
|
+
forceEmit(reason?: string): Promise<ReconcileOutcome>;
|
|
158
|
+
/** Emit once per live revision (repair-path emit-dedup ONLY — never a
|
|
159
|
+
* convergence marker; convergence is the disk read). */
|
|
160
|
+
private maybeEmit;
|
|
161
|
+
/** Emit to the host, never letting a host-emit failure escape the loop. */
|
|
162
|
+
private safeEmit;
|
|
93
163
|
}
|