instar 1.3.770 → 1.3.772
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +36 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/IntelligenceRouter.d.ts +167 -0
- package/dist/core/IntelligenceRouter.d.ts.map +1 -1
- package/dist/core/IntelligenceRouter.js +281 -1
- package/dist/core/IntelligenceRouter.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +14 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +37 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/types.d.ts +51 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/llmBenchCoverage.d.ts +63 -0
- package/dist/data/llmBenchCoverage.d.ts.map +1 -1
- package/dist/data/llmBenchCoverage.js +92 -0
- package/dist/data/llmBenchCoverage.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/data/llmBenchCoverage.ts +145 -0
- package/upgrades/1.3.771.md +53 -0
- package/upgrades/1.3.772.md +63 -0
- package/upgrades/la4-degrade-clamp-a1.eli16.md +42 -0
- package/upgrades/nature-routing-a2.eli16.md +50 -0
- package/upgrades/side-effects/la4-degrade-clamp-a1.md +77 -0
- package/upgrades/side-effects/nature-routing-a2.md +89 -0
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
import type { IntelligenceProvider, IntelligenceOptions } from './types.js';
|
|
27
27
|
import type { IntelligenceFramework } from './intelligenceProviderFactory.js';
|
|
28
28
|
import { type ComponentCategory } from './componentCategories.js';
|
|
29
|
+
import { type RoutingNature, type TaskNature, type RoutingChain, type RoutingDoor, type ChainPosition, type NatureRoutingChains } from '../data/llmBenchCoverage.js';
|
|
29
30
|
export interface ComponentFrameworksConfig {
|
|
30
31
|
/** Framework for anything not otherwise specified. Defaults to the router's defaultFramework. */
|
|
31
32
|
default?: IntelligenceFramework;
|
|
@@ -157,6 +158,23 @@ export interface IntelligenceRouterOptions {
|
|
|
157
158
|
/** Bound (ms) for a single enqueued deferrable call so a stuck/abandoned one self-terminates. */
|
|
158
159
|
queueAttemptTimeoutMs?: number;
|
|
159
160
|
};
|
|
161
|
+
/**
|
|
162
|
+
* S4 A2 — the live, dev-gate-RESOLVED view of `sessions.natureRouting` (read on EVERY
|
|
163
|
+
* call so the kill switch is hot). `enabled` is already the gate-resolved boolean
|
|
164
|
+
* (resolved at the construction boundary, like `ladder`). Absent OR `enabled:false`
|
|
165
|
+
* ⇒ the nature router is inert and routing is BYTE-IDENTICAL to today. When enabled +
|
|
166
|
+
* dryRun (the dev-agent default) the resolver OBSERVES (computes + logs the plan via
|
|
167
|
+
* `onNatureRoutePlan`) and still passes through to today's selection. Enforcing
|
|
168
|
+
* selection (dryRun:false) is a tracked A2.2 remainder.
|
|
169
|
+
*/
|
|
170
|
+
resolveNatureRouting?: () => NatureRoutingRuntime | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* S4 A2 — the dryRun observation sink (FD11 readable canary). Invoked with the resolved
|
|
173
|
+
* plan when nature routing is enabled + dryRun. No-op downstream by default; the router
|
|
174
|
+
* calls it freely. The durable `logs/nature-routing.jsonl` + `GET /intelligence/routing`
|
|
175
|
+
* surfaces that consume this are a tracked A2.2 remainder.
|
|
176
|
+
*/
|
|
177
|
+
onNatureRoutePlan?: (plan: NatureRoutePlan) => void;
|
|
160
178
|
}
|
|
161
179
|
/**
|
|
162
180
|
* resolveSwapCap — per-TARGET swap-attempt cap resolution
|
|
@@ -201,6 +219,139 @@ export declare function clampClaudeCliSwapModel(target: IntelligenceFramework, r
|
|
|
201
219
|
model: IntelligenceOptions['model'] | undefined;
|
|
202
220
|
clamped: boolean;
|
|
203
221
|
};
|
|
222
|
+
/**
|
|
223
|
+
* Resolve a component's static routing nature from the merged S1 map
|
|
224
|
+
* (`LLM_ROUTING_NATURE`). Mirrors `categoryForComponent`'s per-operation key
|
|
225
|
+
* handling (FD3): an exact key (incl. a "/segment" operation suffix) wins, else the
|
|
226
|
+
* base component name (`split('/')[0]`, `server:` prefix stripped) is the fallback.
|
|
227
|
+
* Returns `undefined` for an unmapped component. Pure map lookup — always available,
|
|
228
|
+
* independent of `sessions.natureRouting`.
|
|
229
|
+
*/
|
|
230
|
+
export declare function routingNatureFor(component: string | undefined): RoutingNature | undefined;
|
|
231
|
+
/**
|
|
232
|
+
* LA4 (S4 A1) degrade-path safety predicate (FD4 / codex CR6-3). A binary-missing
|
|
233
|
+
* degrade to the default door is a bounded/gating call — and so must be clamped OFF
|
|
234
|
+
* the Opus-via-Claude-CLI landing — iff either:
|
|
235
|
+
* (a) the caller declared `attribution.gating === true`, OR
|
|
236
|
+
* (b) the component maps to a NON-`WRITE` chain in `LLM_ROUTING_NATURE`
|
|
237
|
+
* (mapped nature A/B, or D-non-WRITE — all bounded/gating).
|
|
238
|
+
* A `WRITE`-chain component (Opus-via-CLI is its legitimate open-ended-writing quality
|
|
239
|
+
* lane) or an unmapped, non-gating call is left UNCHANGED — the clamp stays exactly as
|
|
240
|
+
* narrow as bench rules R1/R2. This is a pure lookup over `attribution` + the static
|
|
241
|
+
* map, so it never depends on `sessions.natureRouting` being set.
|
|
242
|
+
*/
|
|
243
|
+
export declare function isBoundedGatingDegrade(component: string | undefined, options?: IntelligenceOptions): boolean;
|
|
244
|
+
/**
|
|
245
|
+
* The critical-gate fail-closed outcome (spec CR10-3/CR8-4): a DISTINCT typed error
|
|
246
|
+
* so a caller can never mistake it for an ordinary model failure. A mapped FD6
|
|
247
|
+
* critical gate whose chain has NO available door throws this; the caller applies its
|
|
248
|
+
* existing gating fail-closed semantics (block/deny). The low-stakes empty-set case is
|
|
249
|
+
* deliberately the ordinary non-gating error instead ('no-route'), typed apart on purpose.
|
|
250
|
+
*/
|
|
251
|
+
export declare class RouterFailClosedError extends Error {
|
|
252
|
+
readonly component: string | undefined;
|
|
253
|
+
readonly resolvedChain: RoutingChain;
|
|
254
|
+
constructor(component: string | undefined, resolvedChain: RoutingChain);
|
|
255
|
+
}
|
|
256
|
+
/** A chain position resolved to a concrete model id, after the FD4 allowlist clamp. */
|
|
257
|
+
export interface ResolvedRoutePosition {
|
|
258
|
+
readonly door: RoutingDoor;
|
|
259
|
+
/** The original benchmark label / tier hint from the chain position. */
|
|
260
|
+
readonly label: string;
|
|
261
|
+
/** The concrete model id the door should be asked for (post-registry, post-clamp). */
|
|
262
|
+
readonly modelId: string;
|
|
263
|
+
/** Whether the FD4 harness-door allowlist clamp rewrote this position to the reserve id. */
|
|
264
|
+
readonly clamped: boolean;
|
|
265
|
+
}
|
|
266
|
+
/** The four load-bearing `resolveRoute` outcomes (verifier r7 — never collapse them). */
|
|
267
|
+
export type RouteResolution = {
|
|
268
|
+
outcome: 'route';
|
|
269
|
+
resolvedNature: TaskNature;
|
|
270
|
+
resolvedChain: RoutingChain;
|
|
271
|
+
primary: ResolvedRoutePosition;
|
|
272
|
+
swapTail: ResolvedRoutePosition[];
|
|
273
|
+
} | {
|
|
274
|
+
outcome: 'fall-through';
|
|
275
|
+
} | {
|
|
276
|
+
outcome: 'no-route';
|
|
277
|
+
};
|
|
278
|
+
/**
|
|
279
|
+
* FD3 — resolve `{ resolvedNature, resolvedChain }` from the component's static map row
|
|
280
|
+
* and an optional caller-declared `attribution.nature`. The component's OWN map row
|
|
281
|
+
* `{nature, chain}` is authoritative by default (preserving a per-component A/FAST vs
|
|
282
|
+
* A/SORT choice a pure nature→chain function could not). A caller-declared nature that
|
|
283
|
+
* TIGHTENS (strictly raises the tier) replaces the chain with the deterministically
|
|
284
|
+
* safe `JUDGE`; anything else is ignored. Returns `undefined` for an unmapped component.
|
|
285
|
+
* Pure — always available, independent of `sessions.natureRouting`.
|
|
286
|
+
*/
|
|
287
|
+
export declare function resolveNatureAndChain(component: string | undefined, declaredNature?: unknown): {
|
|
288
|
+
resolvedNature: TaskNature;
|
|
289
|
+
resolvedChain: RoutingChain;
|
|
290
|
+
} | undefined;
|
|
291
|
+
/**
|
|
292
|
+
* FD-LABEL / FD4.1 — resolve a chain position's `model` label to a concrete model id via
|
|
293
|
+
* `ROUTING_LABEL_TO_MODEL_ID`. A label absent from the registry (a tier hint like `fast`
|
|
294
|
+
* / `capable`) passes through unchanged and is resolved downstream by the existing
|
|
295
|
+
* per-adapter tier map. Pure.
|
|
296
|
+
*/
|
|
297
|
+
export declare function resolvePositionModelId(pos: ChainPosition): string;
|
|
298
|
+
/**
|
|
299
|
+
* FD4 place 3 — the harness-door ALLOWLIST clamp (deny-by-default), the nature-routing
|
|
300
|
+
* RUNTIME safety guarantee. For a bounded/gating (FAST/SORT/JUDGE) chain, the ONLY
|
|
301
|
+
* permitted `claude-code` position is the single sanctioned CONCRETE reserve id
|
|
302
|
+
* (`CLAUDE_CODE_RESERVE_MODEL_ID`); any OTHER claude-code id is clamped down to it. This
|
|
303
|
+
* is an allowlist, NOT a denylist — a future/unrecognized capable Claude id can never
|
|
304
|
+
* slip past. `WRITE` is exempt (its Opus-via-CLI quality lane is legitimate), and every
|
|
305
|
+
* non-claude-code door passes through.
|
|
306
|
+
*
|
|
307
|
+
* DELIBERATELY SEPARATE from A1's `clampClaudeCliSwapModel` (which returns the `balanced`
|
|
308
|
+
* TIER token and fires UNCONDITIONALLY on the always-on degrade/swap path): touching that
|
|
309
|
+
* function would change A1's shipped, byte-identical-when-off behavior. This clamp is
|
|
310
|
+
* nature-routing-scoped and concrete-id-based (FD4.1), applied only inside `resolveRoute`.
|
|
311
|
+
*/
|
|
312
|
+
export declare function clampToReserveOnCleanDoor(pos: ResolvedRoutePosition, resolvedChain: RoutingChain): ResolvedRoutePosition;
|
|
313
|
+
/**
|
|
314
|
+
* The PURE nature-routing fold (spec §Resolver, steps 1–7). Deps are injected so the
|
|
315
|
+
* function is side-effect-free + trivially testable: `isDoorReachable` reports CLI-door
|
|
316
|
+
* reachability (the class wraps its provider cache). Metered doors are ALWAYS skipped in
|
|
317
|
+
* Increment A. The empty-`available` branch splits by authority class (CR6-2/CR3-1):
|
|
318
|
+
* unmapped → 'fall-through'; low-stakes mapped → 'no-route'; FD6 critical gate → throw
|
|
319
|
+
* RouterFailClosedError. (The R6 doc-tree refuse-to-author branch is a tracked A2.2
|
|
320
|
+
* remainder; until it lands a `claudeBanned` component falls into the low-stakes 'no-route'
|
|
321
|
+
* path — never onto Claude, since resolveRoute never emits a claude-code position for it
|
|
322
|
+
* unless its chain contains one, and R6 chains are authored off-Claude.)
|
|
323
|
+
*/
|
|
324
|
+
export declare function resolveRoute(component: string | undefined, declaredNature: unknown, chains: NatureRoutingChains, deps: {
|
|
325
|
+
isDoorReachable: (door: RoutingDoor) => boolean;
|
|
326
|
+
}): RouteResolution;
|
|
327
|
+
/**
|
|
328
|
+
* Merge an operator's partial `chains` override (config) over the built-in v3 defaults,
|
|
329
|
+
* per-chain. A chain the operator did not override keeps its default. (The FD4.3
|
|
330
|
+
* resolve-time validation that REJECTS a harness-door-violating override → defaults +
|
|
331
|
+
* notice is a tracked A2.2 remainder; the FD4 place-3 runtime clamp above already keeps
|
|
332
|
+
* the banned route closed on every resolved position regardless.)
|
|
333
|
+
*/
|
|
334
|
+
export declare function mergeNatureRoutingChains(override: Partial<Record<RoutingChain, ReadonlyArray<ChainPosition>>> | undefined): NatureRoutingChains;
|
|
335
|
+
/**
|
|
336
|
+
* The dev-gate-resolved live view of `sessions.natureRouting` the router reads per call.
|
|
337
|
+
* `enabled` is ALREADY gate-resolved at the construction boundary (like `ladder`), so the
|
|
338
|
+
* router just reads the boolean. Absent ⇒ feature off ⇒ byte-identical routing.
|
|
339
|
+
*/
|
|
340
|
+
export interface NatureRoutingRuntime {
|
|
341
|
+
enabled: boolean;
|
|
342
|
+
/** Observe-only (default true on first enable): compute + log the plan, do NOT re-route. */
|
|
343
|
+
dryRun: boolean;
|
|
344
|
+
chains?: Partial<Record<RoutingChain, ReadonlyArray<ChainPosition>>>;
|
|
345
|
+
}
|
|
346
|
+
/** The dryRun observation record handed to `onNatureRoutePlan` (FD11 readable canary). */
|
|
347
|
+
export interface NatureRoutePlan {
|
|
348
|
+
component: string | undefined;
|
|
349
|
+
category: ComponentCategory;
|
|
350
|
+
dryRun: boolean;
|
|
351
|
+
resolution?: RouteResolution;
|
|
352
|
+
/** Set when the resolver would FAIL CLOSED (critical-gate empty set). */
|
|
353
|
+
failClosed?: boolean;
|
|
354
|
+
}
|
|
204
355
|
export declare class IntelligenceRouter implements IntelligenceProvider {
|
|
205
356
|
private readonly opts;
|
|
206
357
|
private readonly cache;
|
|
@@ -238,6 +389,22 @@ export declare class IntelligenceRouter implements IntelligenceProvider {
|
|
|
238
389
|
private providerFor;
|
|
239
390
|
/** Default framework → shared provider; else the cached per-framework provider (null if binary missing). */
|
|
240
391
|
private resolveProvider;
|
|
392
|
+
/** Already warned that nature-routing enforcing mode is not yet wired (warn ONCE). */
|
|
393
|
+
private warnedNatureEnforceNotWired;
|
|
394
|
+
/**
|
|
395
|
+
* S4 A2 — CLI-door reachability probe for the nature router (FD5 availability walk).
|
|
396
|
+
* CLI doors coincide 1:1 with `IntelligenceFramework`. `resolveRoute` skips metered
|
|
397
|
+
* doors before ever calling this, so `door` is always a CLI door. The default framework
|
|
398
|
+
* is always reachable (shared provider); a non-default door is reachable iff its provider
|
|
399
|
+
* builds (binary present). Result is cached by `providerFor`.
|
|
400
|
+
*/
|
|
401
|
+
private isCliDoorReachable;
|
|
402
|
+
/**
|
|
403
|
+
* S4 A2 — enforcing-mode honesty guard. Flipping `dryRun:false` in A2.1 does NOT re-route
|
|
404
|
+
* (the selection integration is a tracked A2.2 remainder); routing stays byte-identical.
|
|
405
|
+
* Warn ONCE so the flip is an honest no-op rather than a silent dead switch.
|
|
406
|
+
*/
|
|
407
|
+
private warnNatureEnforceNotWired;
|
|
241
408
|
evaluate(prompt: string, options?: IntelligenceOptions): Promise<string>;
|
|
242
409
|
/**
|
|
243
410
|
* Queue rung (Resilient Degradation Ladder §3b.3) — DEFERRABLE calls only. Enqueue the SAME
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntelligenceRouter.d.ts","sourceRoot":"","sources":["../../src/core/IntelligenceRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"IntelligenceRouter.d.ts","sourceRoot":"","sources":["../../src/core/IntelligenceRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* outage's worth of calls onto Claude all at once.
|
|
25
25
|
*/
|
|
26
26
|
import { isComponentCategory, categoryForComponent, } from './componentCategories.js';
|
|
27
|
+
import { LLM_ROUTING_NATURE, NATURE_ROUTING_DEFAULT_CHAINS, ROUTING_LABEL_TO_MODEL_ID, CLAUDE_CODE_RESERVE_MODEL_ID, METERED_ROUTING_DOORS, NATURE_ROUTING_CRITICAL_GATES, } from '../data/llmBenchCoverage.js';
|
|
27
28
|
/**
|
|
28
29
|
* Runtime framework ids for the unknown-key hygiene warning on
|
|
29
30
|
* `swapAttemptTimeoutMsByFramework` (per-target-swap-timeout-spec.md, change
|
|
@@ -136,6 +137,206 @@ export function clampClaudeCliSwapModel(target, requested) {
|
|
|
136
137
|
}
|
|
137
138
|
return { model: requested, clamped: false };
|
|
138
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Resolve a component's static routing nature from the merged S1 map
|
|
142
|
+
* (`LLM_ROUTING_NATURE`). Mirrors `categoryForComponent`'s per-operation key
|
|
143
|
+
* handling (FD3): an exact key (incl. a "/segment" operation suffix) wins, else the
|
|
144
|
+
* base component name (`split('/')[0]`, `server:` prefix stripped) is the fallback.
|
|
145
|
+
* Returns `undefined` for an unmapped component. Pure map lookup — always available,
|
|
146
|
+
* independent of `sessions.natureRouting`.
|
|
147
|
+
*/
|
|
148
|
+
export function routingNatureFor(component) {
|
|
149
|
+
if (!component)
|
|
150
|
+
return undefined;
|
|
151
|
+
const exact = LLM_ROUTING_NATURE[component];
|
|
152
|
+
if (exact)
|
|
153
|
+
return exact;
|
|
154
|
+
const base = component.split('/')[0].replace(/^server:/, '').trim();
|
|
155
|
+
return LLM_ROUTING_NATURE[base];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* LA4 (S4 A1) degrade-path safety predicate (FD4 / codex CR6-3). A binary-missing
|
|
159
|
+
* degrade to the default door is a bounded/gating call — and so must be clamped OFF
|
|
160
|
+
* the Opus-via-Claude-CLI landing — iff either:
|
|
161
|
+
* (a) the caller declared `attribution.gating === true`, OR
|
|
162
|
+
* (b) the component maps to a NON-`WRITE` chain in `LLM_ROUTING_NATURE`
|
|
163
|
+
* (mapped nature A/B, or D-non-WRITE — all bounded/gating).
|
|
164
|
+
* A `WRITE`-chain component (Opus-via-CLI is its legitimate open-ended-writing quality
|
|
165
|
+
* lane) or an unmapped, non-gating call is left UNCHANGED — the clamp stays exactly as
|
|
166
|
+
* narrow as bench rules R1/R2. This is a pure lookup over `attribution` + the static
|
|
167
|
+
* map, so it never depends on `sessions.natureRouting` being set.
|
|
168
|
+
*/
|
|
169
|
+
export function isBoundedGatingDegrade(component, options) {
|
|
170
|
+
if (options?.attribution?.gating === true)
|
|
171
|
+
return true;
|
|
172
|
+
const row = routingNatureFor(component);
|
|
173
|
+
if (!row)
|
|
174
|
+
return false; // unmapped + not gating ⇒ out of R1's scope, unchanged
|
|
175
|
+
return row.chain !== 'WRITE'; // WRITE is the sanctioned Opus-CLI lane; everything else is bounded/gating
|
|
176
|
+
}
|
|
177
|
+
/* ────────────────────────────────────────────────────────────────────────────
|
|
178
|
+
* S4 Increment A2 — the nature-axis routing RESOLVER (dark/dryRun mechanism).
|
|
179
|
+
*
|
|
180
|
+
* `resolveRoute` is a PURE, side-effect-free evaluator (spec CR2-5): a stateless
|
|
181
|
+
* fold `component → resolvedNature → ordered eligible positions → { primary, swapTail }
|
|
182
|
+
* | 'fall-through' | 'no-route' | throw`. It owns no retry/backoff/breaker/budget
|
|
183
|
+
* machinery — those stay in the existing IntelligenceRouter primitives. Wired into
|
|
184
|
+
* `evaluate()` ONLY when `sessions.natureRouting.enabled` (dev-gated dark). In dryRun
|
|
185
|
+
* (the dev-agent default) it OBSERVES: computes + logs the plan, then passes through to
|
|
186
|
+
* today's routing (byte-identical selection). Enforcing selection (dryRun:false) is a
|
|
187
|
+
* tracked A2.2 remainder — see the honest guard in `evaluate()`.
|
|
188
|
+
* Spec: docs/specs/nature-axis-routing.md §Resolver / FD3 / FD4 / FD9.
|
|
189
|
+
* ──────────────────────────────────────────────────────────────────────────── */
|
|
190
|
+
/**
|
|
191
|
+
* The critical-gate fail-closed outcome (spec CR10-3/CR8-4): a DISTINCT typed error
|
|
192
|
+
* so a caller can never mistake it for an ordinary model failure. A mapped FD6
|
|
193
|
+
* critical gate whose chain has NO available door throws this; the caller applies its
|
|
194
|
+
* existing gating fail-closed semantics (block/deny). The low-stakes empty-set case is
|
|
195
|
+
* deliberately the ordinary non-gating error instead ('no-route'), typed apart on purpose.
|
|
196
|
+
*/
|
|
197
|
+
export class RouterFailClosedError extends Error {
|
|
198
|
+
component;
|
|
199
|
+
resolvedChain;
|
|
200
|
+
constructor(component, resolvedChain) {
|
|
201
|
+
super(`RouterFailClosedError: critical gate '${component ?? '(none)'}' has no available door on ` +
|
|
202
|
+
`chain ${resolvedChain} — failing closed (never legacy category routing, never the harness door)`);
|
|
203
|
+
this.component = component;
|
|
204
|
+
this.resolvedChain = resolvedChain;
|
|
205
|
+
this.name = 'RouterFailClosedError';
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Tier ordering for the FD3 nature tighten rule `E, B ≥ D ≥ A`. E and B are
|
|
210
|
+
* EQUIVALENT (both JUDGE-tier). A caller-declared nature may only ever RAISE the tier
|
|
211
|
+
* (tighten, the safe direction); a same-tier or lower declared nature is ignored (map
|
|
212
|
+
* wins), and a value outside {A,B,D,E} is ignored.
|
|
213
|
+
*/
|
|
214
|
+
const NATURE_TIER_RANK = { A: 0, D: 1, B: 2, E: 2 };
|
|
215
|
+
function isTaskNature(v) {
|
|
216
|
+
return v === 'A' || v === 'B' || v === 'D' || v === 'E';
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* FD3 — resolve `{ resolvedNature, resolvedChain }` from the component's static map row
|
|
220
|
+
* and an optional caller-declared `attribution.nature`. The component's OWN map row
|
|
221
|
+
* `{nature, chain}` is authoritative by default (preserving a per-component A/FAST vs
|
|
222
|
+
* A/SORT choice a pure nature→chain function could not). A caller-declared nature that
|
|
223
|
+
* TIGHTENS (strictly raises the tier) replaces the chain with the deterministically
|
|
224
|
+
* safe `JUDGE`; anything else is ignored. Returns `undefined` for an unmapped component.
|
|
225
|
+
* Pure — always available, independent of `sessions.natureRouting`.
|
|
226
|
+
*/
|
|
227
|
+
export function resolveNatureAndChain(component, declaredNature) {
|
|
228
|
+
const row = routingNatureFor(component);
|
|
229
|
+
if (!row)
|
|
230
|
+
return undefined;
|
|
231
|
+
const tightened = isTaskNature(declaredNature) && NATURE_TIER_RANK[declaredNature] > NATURE_TIER_RANK[row.nature];
|
|
232
|
+
if (tightened) {
|
|
233
|
+
// A tightened nature is always B or E (you only tighten UP a tier) → JUDGE ladder.
|
|
234
|
+
return { resolvedNature: declaredNature, resolvedChain: 'JUDGE' };
|
|
235
|
+
}
|
|
236
|
+
return { resolvedNature: row.nature, resolvedChain: row.chain };
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* FD-LABEL / FD4.1 — resolve a chain position's `model` label to a concrete model id via
|
|
240
|
+
* `ROUTING_LABEL_TO_MODEL_ID`. A label absent from the registry (a tier hint like `fast`
|
|
241
|
+
* / `capable`) passes through unchanged and is resolved downstream by the existing
|
|
242
|
+
* per-adapter tier map. Pure.
|
|
243
|
+
*/
|
|
244
|
+
export function resolvePositionModelId(pos) {
|
|
245
|
+
return ROUTING_LABEL_TO_MODEL_ID[pos.door]?.[pos.model] ?? pos.model;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* FD4 place 3 — the harness-door ALLOWLIST clamp (deny-by-default), the nature-routing
|
|
249
|
+
* RUNTIME safety guarantee. For a bounded/gating (FAST/SORT/JUDGE) chain, the ONLY
|
|
250
|
+
* permitted `claude-code` position is the single sanctioned CONCRETE reserve id
|
|
251
|
+
* (`CLAUDE_CODE_RESERVE_MODEL_ID`); any OTHER claude-code id is clamped down to it. This
|
|
252
|
+
* is an allowlist, NOT a denylist — a future/unrecognized capable Claude id can never
|
|
253
|
+
* slip past. `WRITE` is exempt (its Opus-via-CLI quality lane is legitimate), and every
|
|
254
|
+
* non-claude-code door passes through.
|
|
255
|
+
*
|
|
256
|
+
* DELIBERATELY SEPARATE from A1's `clampClaudeCliSwapModel` (which returns the `balanced`
|
|
257
|
+
* TIER token and fires UNCONDITIONALLY on the always-on degrade/swap path): touching that
|
|
258
|
+
* function would change A1's shipped, byte-identical-when-off behavior. This clamp is
|
|
259
|
+
* nature-routing-scoped and concrete-id-based (FD4.1), applied only inside `resolveRoute`.
|
|
260
|
+
*/
|
|
261
|
+
export function clampToReserveOnCleanDoor(pos, resolvedChain) {
|
|
262
|
+
if (resolvedChain === 'WRITE')
|
|
263
|
+
return pos; // WRITE is the sole Opus-via-CLI-exempt lane
|
|
264
|
+
if (pos.door !== 'claude-code')
|
|
265
|
+
return pos; // the ban applies only to the harness door
|
|
266
|
+
if (pos.modelId === CLAUDE_CODE_RESERVE_MODEL_ID)
|
|
267
|
+
return pos; // allowlisted — the sanctioned reserve
|
|
268
|
+
return { ...pos, modelId: CLAUDE_CODE_RESERVE_MODEL_ID, clamped: true }; // deny-by-default → reserve
|
|
269
|
+
}
|
|
270
|
+
/** The base component key (strip a "/segment" operation suffix + a `server:` prefix). */
|
|
271
|
+
function baseComponentKey(component) {
|
|
272
|
+
if (!component)
|
|
273
|
+
return undefined;
|
|
274
|
+
return component.split('/')[0].replace(/^server:/, '').trim();
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* The PURE nature-routing fold (spec §Resolver, steps 1–7). Deps are injected so the
|
|
278
|
+
* function is side-effect-free + trivially testable: `isDoorReachable` reports CLI-door
|
|
279
|
+
* reachability (the class wraps its provider cache). Metered doors are ALWAYS skipped in
|
|
280
|
+
* Increment A. The empty-`available` branch splits by authority class (CR6-2/CR3-1):
|
|
281
|
+
* unmapped → 'fall-through'; low-stakes mapped → 'no-route'; FD6 critical gate → throw
|
|
282
|
+
* RouterFailClosedError. (The R6 doc-tree refuse-to-author branch is a tracked A2.2
|
|
283
|
+
* remainder; until it lands a `claudeBanned` component falls into the low-stakes 'no-route'
|
|
284
|
+
* path — never onto Claude, since resolveRoute never emits a claude-code position for it
|
|
285
|
+
* unless its chain contains one, and R6 chains are authored off-Claude.)
|
|
286
|
+
*/
|
|
287
|
+
export function resolveRoute(component, declaredNature, chains, deps) {
|
|
288
|
+
const nc = resolveNatureAndChain(component, declaredNature);
|
|
289
|
+
if (!nc)
|
|
290
|
+
return { outcome: 'fall-through' }; // unmapped ⇒ legacy category routing (LA5 byte-identical)
|
|
291
|
+
const positions = chains[nc.resolvedChain] ?? NATURE_ROUTING_DEFAULT_CHAINS[nc.resolvedChain];
|
|
292
|
+
const available = [];
|
|
293
|
+
for (const p of positions) {
|
|
294
|
+
// Increment A: metered-API doors are DEFINED but always unavailable (skipped) until Increment B.
|
|
295
|
+
if (METERED_ROUTING_DOORS.has(p.door))
|
|
296
|
+
continue;
|
|
297
|
+
if (!deps.isDoorReachable(p.door))
|
|
298
|
+
continue;
|
|
299
|
+
const resolved = {
|
|
300
|
+
door: p.door,
|
|
301
|
+
label: p.model,
|
|
302
|
+
modelId: resolvePositionModelId(p),
|
|
303
|
+
clamped: false,
|
|
304
|
+
};
|
|
305
|
+
available.push(clampToReserveOnCleanDoor(resolved, nc.resolvedChain));
|
|
306
|
+
}
|
|
307
|
+
if (available.length === 0) {
|
|
308
|
+
// FD6 critical gate with no door ⇒ FAIL CLOSED (distinct typed error). NEVER legacy routing.
|
|
309
|
+
if (NATURE_ROUTING_CRITICAL_GATES.has(baseComponentKey(component) ?? '')) {
|
|
310
|
+
throw new RouterFailClosedError(component, nc.resolvedChain);
|
|
311
|
+
}
|
|
312
|
+
// Low-stakes mapped ⇒ the caller's own non-gating heuristic (the ordinary provider-down contract).
|
|
313
|
+
return { outcome: 'no-route' };
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
outcome: 'route',
|
|
317
|
+
resolvedNature: nc.resolvedNature,
|
|
318
|
+
resolvedChain: nc.resolvedChain,
|
|
319
|
+
primary: available[0],
|
|
320
|
+
swapTail: available.slice(1),
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Merge an operator's partial `chains` override (config) over the built-in v3 defaults,
|
|
325
|
+
* per-chain. A chain the operator did not override keeps its default. (The FD4.3
|
|
326
|
+
* resolve-time validation that REJECTS a harness-door-violating override → defaults +
|
|
327
|
+
* notice is a tracked A2.2 remainder; the FD4 place-3 runtime clamp above already keeps
|
|
328
|
+
* the banned route closed on every resolved position regardless.)
|
|
329
|
+
*/
|
|
330
|
+
export function mergeNatureRoutingChains(override) {
|
|
331
|
+
if (!override)
|
|
332
|
+
return NATURE_ROUTING_DEFAULT_CHAINS;
|
|
333
|
+
return {
|
|
334
|
+
FAST: override.FAST ?? NATURE_ROUTING_DEFAULT_CHAINS.FAST,
|
|
335
|
+
SORT: override.SORT ?? NATURE_ROUTING_DEFAULT_CHAINS.SORT,
|
|
336
|
+
JUDGE: override.JUDGE ?? NATURE_ROUTING_DEFAULT_CHAINS.JUDGE,
|
|
337
|
+
WRITE: override.WRITE ?? NATURE_ROUTING_DEFAULT_CHAINS.WRITE,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
139
340
|
export class IntelligenceRouter {
|
|
140
341
|
opts;
|
|
141
342
|
cache = new Map();
|
|
@@ -218,6 +419,32 @@ export class IntelligenceRouter {
|
|
|
218
419
|
resolveProvider(framework) {
|
|
219
420
|
return framework === this.opts.defaultFramework ? this.opts.defaultProvider : this.providerFor(framework);
|
|
220
421
|
}
|
|
422
|
+
/** Already warned that nature-routing enforcing mode is not yet wired (warn ONCE). */
|
|
423
|
+
warnedNatureEnforceNotWired = false;
|
|
424
|
+
/**
|
|
425
|
+
* S4 A2 — CLI-door reachability probe for the nature router (FD5 availability walk).
|
|
426
|
+
* CLI doors coincide 1:1 with `IntelligenceFramework`. `resolveRoute` skips metered
|
|
427
|
+
* doors before ever calling this, so `door` is always a CLI door. The default framework
|
|
428
|
+
* is always reachable (shared provider); a non-default door is reachable iff its provider
|
|
429
|
+
* builds (binary present). Result is cached by `providerFor`.
|
|
430
|
+
*/
|
|
431
|
+
isCliDoorReachable(door) {
|
|
432
|
+
return this.resolveProvider(door) !== null;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* S4 A2 — enforcing-mode honesty guard. Flipping `dryRun:false` in A2.1 does NOT re-route
|
|
436
|
+
* (the selection integration is a tracked A2.2 remainder); routing stays byte-identical.
|
|
437
|
+
* Warn ONCE so the flip is an honest no-op rather than a silent dead switch.
|
|
438
|
+
*/
|
|
439
|
+
warnNatureEnforceNotWired() {
|
|
440
|
+
if (this.warnedNatureEnforceNotWired)
|
|
441
|
+
return;
|
|
442
|
+
this.warnedNatureEnforceNotWired = true;
|
|
443
|
+
console.warn('IntelligenceRouter: sessions.natureRouting.dryRun is false, but nature-routing ENFORCING ' +
|
|
444
|
+
'selection is not wired in this build (Increment A2.1 ships the dark/dryRun observation ' +
|
|
445
|
+
'mechanism; enforcing selection is the tracked A2.2 remainder). Routing stays byte-identical — ' +
|
|
446
|
+
'the resolver plan is logged but not applied.');
|
|
447
|
+
}
|
|
221
448
|
async evaluate(prompt, options) {
|
|
222
449
|
const component = options?.attribution?.component;
|
|
223
450
|
const explicitCategory = options?.attribution?.category;
|
|
@@ -225,6 +452,31 @@ export class IntelligenceRouter {
|
|
|
225
452
|
? explicitCategory
|
|
226
453
|
: categoryForComponent(component);
|
|
227
454
|
const cfg = this.opts.resolveConfig();
|
|
455
|
+
// ── S4 A2 — nature-axis routing OBSERVATION (dev-gated dark; dryRun-first). ──
|
|
456
|
+
// Byte-identical when unset/off: when the feature is absent OR `enabled:false` this
|
|
457
|
+
// whole block is skipped and NOTHING about selection changes. In dryRun (the dev-agent
|
|
458
|
+
// default) it OBSERVES only — computes + logs the plan via `onNatureRoutePlan` — and
|
|
459
|
+
// still falls through to today's selection below. Enforcing SELECTION (dryRun:false) is
|
|
460
|
+
// a tracked A2.2 remainder; guarded here so a flip is an HONEST no-op, never a silent
|
|
461
|
+
// dead switch and never a mis-route. A resolver error can never break routing here.
|
|
462
|
+
const natureRt = this.opts.resolveNatureRouting?.();
|
|
463
|
+
if (natureRt?.enabled) {
|
|
464
|
+
const dryRun = natureRt.dryRun !== false; // default true on first enable
|
|
465
|
+
try {
|
|
466
|
+
const resolution = resolveRoute(component, options?.attribution?.nature, mergeNatureRoutingChains(natureRt.chains), { isDoorReachable: (d) => this.isCliDoorReachable(d) });
|
|
467
|
+
this.opts.onNatureRoutePlan?.({ component, category, dryRun, resolution });
|
|
468
|
+
}
|
|
469
|
+
catch (e) {
|
|
470
|
+
if (e instanceof RouterFailClosedError) {
|
|
471
|
+
this.opts.onNatureRoutePlan?.({ component, category, dryRun, failClosed: true });
|
|
472
|
+
}
|
|
473
|
+
else {
|
|
474
|
+
this.opts.onNatureRoutePlan?.({ component, category, dryRun });
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
if (!dryRun)
|
|
478
|
+
this.warnNatureEnforceNotWired();
|
|
479
|
+
}
|
|
228
480
|
// Unconfigured ⇒ exactly today's behavior.
|
|
229
481
|
if (!cfg)
|
|
230
482
|
return this.opts.defaultProvider.evaluate(prompt, options);
|
|
@@ -243,7 +495,35 @@ export class IntelligenceRouter {
|
|
|
243
495
|
to: this.opts.defaultFramework,
|
|
244
496
|
reason: `framework '${framework}' unavailable (binary missing / not built) — degraded to default`,
|
|
245
497
|
});
|
|
246
|
-
|
|
498
|
+
// LA4 (S4 A1) — UNCONDITIONAL degrade-path safety clamp. This degrade lands on
|
|
499
|
+
// `defaultFramework`; if that door is `claude-code` and the requested tier is
|
|
500
|
+
// `capable`, the landing is Opus-via-Claude-CLI — the one MEASURED-BANNED route for a
|
|
501
|
+
// bounded/gating verdict (81.7% vs 99.1% API; missed canonical STOPs at 73%). The
|
|
502
|
+
// shipped router leaves this exit UNCLAMPED (the S2 clamp only guards the failure-swap
|
|
503
|
+
// loop), so a binary-missing bounded/gating `capable` degrade with a `claude-code`
|
|
504
|
+
// default fails OPEN onto Opus-via-CLI. Clamp it to the Sonnet-4.6-CLI reserve
|
|
505
|
+
// (`balanced`, the SAME reserve `clampClaudeCliSwapModel` already uses) for
|
|
506
|
+
// bounded/gating calls ONLY — `WRITE` keeps its legitimate Opus-CLI quality lane, and
|
|
507
|
+
// an unmapped non-gating call is out of R1's scope. This fires REGARDLESS of
|
|
508
|
+
// `sessions.natureRouting`: it is a standalone safety narrowing, NOT gated on the S4
|
|
509
|
+
// feature flag (FD4 LA4-r2). Strictly the safe direction (a measured-worse route → the
|
|
510
|
+
// sanctioned reserve) — never an upgrade, never a block.
|
|
511
|
+
let degradeOptions = options;
|
|
512
|
+
if (isBoundedGatingDegrade(component, options)) {
|
|
513
|
+
const { model: clampedModel, clamped } = clampClaudeCliSwapModel(this.opts.defaultFramework, options?.model);
|
|
514
|
+
if (clamped) {
|
|
515
|
+
degradeOptions = { ...(options ?? {}), model: clampedModel };
|
|
516
|
+
this.opts.onDegrade?.({
|
|
517
|
+
component: component ?? '(none)',
|
|
518
|
+
category,
|
|
519
|
+
from: framework,
|
|
520
|
+
to: this.opts.defaultFramework,
|
|
521
|
+
reason: `degrade-path-model-clamp (LA4): '${this.opts.defaultFramework}' capable→balanced ` +
|
|
522
|
+
`(Opus-via-Claude-CLI is banned for bounded/gating verdicts — R1/R2; unconditional)`,
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return this.opts.defaultProvider.evaluate(prompt, degradeOptions);
|
|
247
527
|
}
|
|
248
528
|
// Failure-swap: ONLY a safety-gating call with configured failureSwap targets
|
|
249
529
|
// swaps on a RUNTIME failure (rate-limit / circuit-open / error). Non-gating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntelligenceRouter.js","sourceRoot":"","sources":["../../src/core/IntelligenceRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAEL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AA4IlC;;;;;GAKG;AACH,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5G,mGAAmG;AACnG,MAAM,mCAAmC,GAAG,OAAO,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC;;;;;GAKG;AACH,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA6B,EAC7B,SAA6B,EAC7B,WAAuE,EACvE,MAA0B;IAE1B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mCAAmC,CAAC;IAChF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,eAAe,CAAI,OAAmB,EAAE,KAAa,EAAE,MAAc;IAClF,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,OAAO;YACP,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,MAAM,KAAK,KAAK,KAAK,CAAC,CAAC,EACvE,KAAK,CACN,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,CAAU;IAClC,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,qDAAqD,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9G,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAA6B,EAC7B,SAAmD;IAEnD,IAAI,MAAM,KAAK,aAAa,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,kBAAkB;IAMA;IALZ,KAAK,GAAG,IAAI,GAAG,EAA0C,CAAC;IAE3E,yFAAyF;IACjF,oBAAoB,CAAe;IAE3C,YAA6B,IAA+B;QAA/B,SAAI,GAAJ,IAAI,CAA2B;IAAG,CAAC;IAEhE;;;;;;OAMG;IACK,sBAAsB,CAC5B,WAAuE;QAEvE,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACxC,IAAI,CAAC,IAAI,CAAC,oBAAoB;gBAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;YACtE,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACjD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,8CAA8C,GAAG,yCAAyC;gBACxF,0EAA0E,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACpC,CAAC;IAED,8EAA8E;IAC9E,gBAAgB,CACd,SAA6B,EAC7B,QAA2B,EAC3B,GAA0C;QAE1C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,SAAiB,EAAE,gBAAoC;QAMzD,MAAM,QAAQ,GAAG,gBAAgB,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;QACzG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACvD,CAAC;IAED,+FAA+F;IACvF,WAAW,CAAC,SAAgC;QAClD,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACnC,IAAI,QAAQ,GAAgC,IAAI,CAAC;QACjD,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC,CAAC,oDAAoD;QACvE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,4GAA4G;IACpG,eAAe,CAAC,SAAgC;QACtD,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5G,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,OAA6B;QAC1D,MAAM,SAAS,GAAG,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;QAClD,MAAM,gBAAgB,GAAI,OAAO,EAAE,WAAkD,EAAE,QAAQ,CAAC;QAChG,MAAM,QAAQ,GAAsB,mBAAmB,CAAC,gBAAgB,CAAC;YACvE,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,2CAA2C;QAC3C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEhD,mFAAmF;QACnF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CACb,kCAAkC,SAAS,oBAAoB,SAAS,IAAI,QAAQ,IAAI;oBACtF,wCAAwC,CAC3C,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,SAAS,EAAE,SAAS,IAAI,QAAQ;gBAChC,QAAQ;gBACR,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC9B,MAAM,EAAE,cAAc,SAAS,kEAAkE;aAClG,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QAED,8EAA8E;QAC9E,6EAA6E;QAC7E,gFAAgF;QAChF,iFAAiF;QACjF,+EAA+E;QAC/E,8EAA8E;QAC9E,MAAM,MAAM,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;QACrD,mGAAmG;QACnG,6FAA6F;QAC7F,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,OAAO,EAAE,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,0FAA0F;QAC1F,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,4FAA4F;QAC5F,iGAAiG;QACjG,MAAM,gBAAgB,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjG,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,oDAAoD;YAC9G,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,GAAG,GAAG,QAAQ,CAAC;YACf,2FAA2F;YAC3F,4FAA4F;YAC5F,6FAA6F;YAC7F,8CAA8C;YAC9C,IAAI,UAAU,IAAI,MAAM,EAAE,cAAc,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;gBACzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;oBACxF,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACnG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,sCAAsC;wBAChG,OAAO,QAAQ,CAAC;oBAClB,CAAC;oBAAC,OAAO,QAAQ,EAAE,CAAC;wBAClB,GAAG,GAAG,QAAQ,CAAC;wBACf,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;4BAAE,MAAM,CAAC,8CAA8C;oBACxF,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,+FAA+F;gBAC/F,8FAA8F;gBAC9F,6DAA6D;gBAC7D,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC9G,IAAI,CAAC,CAAC,EAAE;wBAAE,OAAO,CAAC,CAAC,MAAM,CAAC;gBAC5B,CAAC;gBACD,0FAA0F;gBAC1F,yEAAyE;gBACzE,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAClF,MAAM,GAAG,CAAC,CAAC,kEAAkE;YAC/E,CAAC;YACD,iEAAiE;YACjE,4EAA4E;YAC5E,wEAAwE;YACxE,4EAA4E;YAC5E,4EAA4E;YAC5E,+EAA+E;YAC/E,+EAA+E;YAC/E,gFAAgF;YAChF,+EAA+E;YAC/E,mFAAmF;YACnF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC;YAC9D,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;YACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YAClG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC;YACrC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,0FAA0F;gBAC1F,2FAA2F;gBAC3F,6DAA6D;gBAC7D,IAAI,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB;oBAAE,MAAM;gBAC3E,IAAI,MAAM,KAAK,SAAS;oBAAE,SAAS,CAAC,6CAA6C;gBACjF,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE;oBAAE,SAAS,CAAC,+BAA+B;gBAClD,IAAI,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;oBAC9D,2EAA2E;oBAC3E,IAAI,SAAS,IAAI,4BAA4B;wBAAE,MAAM;oBACrD,wEAAwE;oBACxE,oEAAoE;oBACpE,yEAAyE;oBACzE,mEAAmE;oBACnE,GAAG,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACjE,CAAC;gBACD,2EAA2E;gBAC3E,gFAAgF;gBAChF,+EAA+E;gBAC/E,wEAAwE;gBACxE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,uBAAuB,CAC5E,MAAM,EACN,OAAO,EAAE,KAAK,CACf,CAAC;gBACF,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACpB,SAAS,EAAE,SAAS,IAAI,QAAQ;wBAChC,QAAQ;wBACR,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,MAAM;wBACV,MAAM,EACJ,8BAA8B,MAAM,qBAAqB;4BACzD,qEAAqE;qBACxE,CAAC,CAAC;gBACL,CAAC;gBACD,4EAA4E;gBAC5E,+EAA+E;gBAC/E,MAAM,cAAc,GAClB,GAAG,KAAK,SAAS,IAAI,YAAY;oBAC/B,CAAC,CAAC;wBACE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;wBAClB,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjD;oBACH,CAAC,CAAC,OAAO,CAAC;gBACd,IAAI,CAAC;oBACH,qEAAqE;oBACrE,0EAA0E;oBAC1E,uEAAuE;oBACvE,uEAAuE;oBACvE,wEAAwE;oBACxE,8CAA8C;oBAC9C,MAAM,MAAM,GACV,GAAG,KAAK,SAAS;wBACf,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;wBACzE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBAChD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACpB,SAAS,EAAE,SAAS,IAAI,QAAQ;wBAChC,QAAQ;wBACR,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,MAAM;wBACV,MAAM,EAAE,kBAAkB,SAAS,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,iBAAiB,MAAM,GAAG;qBACvH,CAAC,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,sCAAsC;oBAChG,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,2EAA2E;oBAC3E,2EAA2E;oBAC3E,qEAAqE;oBACrE,IACE,UAAU,YAAY,KAAK;wBAC3B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,EACtD,CAAC;wBACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;4BACpB,SAAS,EAAE,SAAS,IAAI,QAAQ;4BAChC,QAAQ;4BACR,IAAI,EAAE,SAAS;4BACf,EAAE,EAAE,MAAM;4BACV,MAAM,EAAE,yBAAyB,MAAM,EAAE;yBAC1C,CAAC,CAAC;oBACL,CAAC;oBACD,SAAS,CAAC,uEAAuE;gBACnF,CAAC;YACH,CAAC;YACD,8FAA8F;YAC9F,6FAA6F;YAC7F,4FAA4F;YAC5F,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC9G,IAAI,CAAC,CAAC,EAAE;oBAAE,OAAO,CAAC,CAAC,MAAM,CAAC;YAC5B,CAAC;YACD,iFAAiF;YACjF,8FAA8F;YAC9F,yFAAyF;YACzF,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClF,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,kBAAkB,CAC9B,OAA6B,EAC7B,MAAc,EACd,OAAwC,EACxC,SAAiB,EACjB,SAAgC,EAChC,QAA2B;QAE3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAChD,MAAM,cAAc,GAClB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,SAAS;gBACT,QAAQ;gBACR,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,SAAS;gBACb,MAAM,EAAE,6EAA6E;aACtF,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,6CAA6C;YAC3F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,SAAS;gBACT,QAAQ;gBACR,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,SAAS;gBACb,MAAM,EAAE,0GAA0G;aACnH,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"IntelligenceRouter.js","sourceRoot":"","sources":["../../src/core/IntelligenceRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -150,6 +150,20 @@ export declare function migrateConfigConversationFollowThroughDevGate(config: Re
|
|
|
150
150
|
* shape → safe no-op). Idempotent + existence-checked.
|
|
151
151
|
*/
|
|
152
152
|
export declare function migrateConfigActionClaimSlackDevGate(config: Record<string, unknown>): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* S4 Nature-Axis Routing (docs/specs/nature-axis-routing.md, § Migration Parity): SEED
|
|
155
|
+
* `sessions.natureRouting` DARK on existing agents so the update path reaches deployed
|
|
156
|
+
* agents (not only new agents via init). Adds the block ONLY when ABSENT — an operator/agent
|
|
157
|
+
* that already configured it is never clobbered (existence-checked, idempotent).
|
|
158
|
+
*
|
|
159
|
+
* CRITICAL — `enabled` is DELIBERATELY OMITTED (enable-path integrity, the #1001 pattern):
|
|
160
|
+
* the construction boundary resolves it via `resolveDevAgentGate(cfg.enabled, config)`, so a
|
|
161
|
+
* seeded `enabled:false` would force-dark even a development agent. `dryRun:true` is the
|
|
162
|
+
* observe-only canary; `metered.goLive:false` keeps Increment B inert. Chain defaults live in
|
|
163
|
+
* CODE (`NATURE_ROUTING_DEFAULT_CHAINS`) — the seed stays small and a future chain reslot
|
|
164
|
+
* reaches agents on a `schemaVersion` bump, not by writing a chain blob into every config.
|
|
165
|
+
*/
|
|
166
|
+
export declare function migrateConfigNatureRoutingDark(config: Record<string, unknown>): boolean;
|
|
153
167
|
/**
|
|
154
168
|
* "Self-Unblock Before Escalating" (docs/specs/self-unblock-before-escalating.md):
|
|
155
169
|
* the two nested blockerLedger sub-features — selfUnblockChecklist + durableVaultSession
|