@sentropic/llm-mesh 0.25.0 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +14 -0
  2. package/dist/catalog.d.ts +92 -0
  3. package/dist/catalog.d.ts.map +1 -1
  4. package/dist/catalog.js +47 -0
  5. package/dist/catalog.js.map +1 -1
  6. package/dist/enrollment/codex.d.ts +7 -0
  7. package/dist/enrollment/codex.d.ts.map +1 -1
  8. package/dist/enrollment/codex.js +74 -19
  9. package/dist/enrollment/codex.js.map +1 -1
  10. package/dist/enrollment/seat-bundle.d.ts +104 -0
  11. package/dist/enrollment/seat-bundle.d.ts.map +1 -0
  12. package/dist/enrollment/seat-bundle.js +304 -0
  13. package/dist/enrollment/seat-bundle.js.map +1 -0
  14. package/dist/errors.d.ts +19 -0
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +51 -4
  17. package/dist/errors.js.map +1 -1
  18. package/dist/execution-features.d.ts +34 -0
  19. package/dist/execution-features.d.ts.map +1 -0
  20. package/dist/execution-features.js +84 -0
  21. package/dist/execution-features.js.map +1 -0
  22. package/dist/generated-model-council.d.ts +2 -2
  23. package/dist/generated-model-council.d.ts.map +1 -1
  24. package/dist/generated-model-council.js +5 -1
  25. package/dist/generated-model-council.js.map +1 -1
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/native-messages.d.ts +130 -0
  31. package/dist/native-messages.d.ts.map +1 -0
  32. package/dist/native-messages.js +66 -0
  33. package/dist/native-messages.js.map +1 -0
  34. package/dist/node/index.d.ts +2 -0
  35. package/dist/node/index.d.ts.map +1 -1
  36. package/dist/node/index.js +1 -0
  37. package/dist/node/index.js.map +1 -1
  38. package/dist/providers.d.ts +5 -5
  39. package/dist/providers.d.ts.map +1 -1
  40. package/dist/providers.js +12 -5
  41. package/dist/providers.js.map +1 -1
  42. package/dist/responses-wire.d.ts +76 -0
  43. package/dist/responses-wire.d.ts.map +1 -0
  44. package/dist/responses-wire.js +35 -0
  45. package/dist/responses-wire.js.map +1 -0
  46. package/dist/route-attempt.d.ts +4 -0
  47. package/dist/route-attempt.d.ts.map +1 -1
  48. package/dist/route-attempt.js +8 -1
  49. package/dist/route-attempt.js.map +1 -1
  50. package/dist/route-health.d.ts +11 -0
  51. package/dist/route-health.d.ts.map +1 -1
  52. package/dist/route-health.js +32 -0
  53. package/dist/route-health.js.map +1 -1
  54. package/dist/route-planner-state.d.ts +33 -2
  55. package/dist/route-planner-state.d.ts.map +1 -1
  56. package/dist/route-planner-state.js +20 -1
  57. package/dist/route-planner-state.js.map +1 -1
  58. package/dist/route-planner.d.ts +21 -1
  59. package/dist/route-planner.d.ts.map +1 -1
  60. package/dist/route-planner.js +112 -33
  61. package/dist/route-planner.js.map +1 -1
  62. package/dist/route-quote.d.ts +16 -2
  63. package/dist/route-quote.d.ts.map +1 -1
  64. package/dist/route-quote.js +31 -5
  65. package/dist/route-quote.js.map +1 -1
  66. package/dist/route-selection.d.ts +13 -0
  67. package/dist/route-selection.d.ts.map +1 -1
  68. package/dist/route-selection.js +30 -5
  69. package/dist/route-selection.js.map +1 -1
  70. package/dist/routing-contracts.d.ts +42 -3
  71. package/dist/routing-contracts.d.ts.map +1 -1
  72. package/dist/routing-targets.d.ts +26 -0
  73. package/dist/routing-targets.d.ts.map +1 -1
  74. package/dist/routing-targets.js +96 -23
  75. package/dist/routing-targets.js.map +1 -1
  76. package/dist/service/local-account-transport-service.d.ts +9 -0
  77. package/dist/service/local-account-transport-service.d.ts.map +1 -1
  78. package/dist/service/local-account-transport-service.js +56 -9
  79. package/dist/service/local-account-transport-service.js.map +1 -1
  80. package/dist/transport/codex-runtime-client.d.ts.map +1 -1
  81. package/dist/transport/codex-runtime-client.js +24 -4
  82. package/dist/transport/codex-runtime-client.js.map +1 -1
  83. package/dist/transport/codex-runtime-wire.d.ts.map +1 -1
  84. package/dist/transport/codex-runtime-wire.js +131 -27
  85. package/dist/transport/codex-runtime-wire.js.map +1 -1
  86. package/dist/transport/mistral-runtime-client.d.ts.map +1 -1
  87. package/dist/transport/mistral-runtime-client.js +191 -9
  88. package/dist/transport/mistral-runtime-client.js.map +1 -1
  89. package/dist/transport/muse-runtime-client.d.ts.map +1 -1
  90. package/dist/transport/muse-runtime-client.js +221 -10
  91. package/dist/transport/muse-runtime-client.js.map +1 -1
  92. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"route-attempt.js","sourceRoot":"","sources":["../src/route-attempt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-attempt.js","sourceRoot":"","sources":["../src/route-attempt.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,17 @@ export declare class InMemoryRouteHealth {
8
8
  constructor(clock: Clock, maximumEntries?: number);
9
9
  record(candidate: RankedRouteCandidate, classification: RouteFailureClassification, policy: RoutePolicy): void;
10
10
  isSuppressed(candidate: RankedRouteCandidate): boolean;
11
+ /**
12
+ * True when the candidate is suppressed only by locally uncommitted
13
+ * failures (no upstream output observed before failing): as an
14
+ * availability policy a lone suppressed route may degrade instead of
15
+ * starving. This records local observation only — it cannot prove the
16
+ * provider did not execute the request. Provider rate limits are exempt:
17
+ * they carry a provider-asked Retry-After window, and redispatching a
18
+ * lone seat inside that window is a retry storm, not an availability
19
+ * gap — the suppression stands through its own TTL.
20
+ */
21
+ suppressedDegradable(candidate: RankedRouteCandidate): boolean;
11
22
  clear(candidate: RankedRouteCandidate): void;
12
23
  private evict;
13
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"route-health.d.ts","sourceRoot":"","sources":["../src/route-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAoCvD,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAGvC,KAAK,EAAE,KAAK,EACZ,cAAc,SAAQ;IAGzC,MAAM,CACJ,SAAS,EAAE,oBAAoB,EAC/B,cAAc,EAAE,0BAA0B,EAC1C,MAAM,EAAE,WAAW,GAClB,IAAI;IAaP,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO;IAStD,KAAK,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAI5C,OAAO,CAAC,KAAK;CAWd"}
1
+ {"version":3,"file":"route-health.d.ts","sourceRoot":"","sources":["../src/route-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAqCvD,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAGvC,KAAK,EAAE,KAAK,EACZ,cAAc,SAAQ;IAGzC,MAAM,CACJ,SAAS,EAAE,oBAAoB,EAC/B,cAAc,EAAE,0BAA0B,EAC1C,MAAM,EAAE,WAAW,GAClB,IAAI;IAuBP,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO;IAStD;;;;;;;;;OASG;IACH,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO;IAY9D,KAAK,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAI5C,OAAO,CAAC,KAAK;CAWd"}
@@ -34,9 +34,19 @@ export class InMemoryRouteHealth {
34
34
  const requestedTtl = classification.retryAfterMs ?? policy.negativeCacheTtlMs;
35
35
  const ttl = Math.min(Math.max(requestedTtl, 1_000), 3_600_000);
36
36
  const key = keyFor(candidate, classification.healthScope);
37
+ const now = this.clock.now().getTime();
38
+ const existing = this.entries.get(key);
39
+ if (existing && existing.expiresAt > now && existing.committed
40
+ && !(classification.committed ?? false)) {
41
+ // A later uncommitted outcome must not erase an unexpired committed
42
+ // suppression on the same key: the committed entry stands through its
43
+ // own remaining TTL.
44
+ return;
45
+ }
37
46
  this.entries.set(key, {
38
47
  key,
39
48
  reason: classification.reason,
49
+ committed: classification.committed ?? false,
40
50
  expiresAt: this.clock.now().getTime() + ttl,
41
51
  });
42
52
  this.evict();
@@ -49,6 +59,28 @@ export class InMemoryRouteHealth {
49
59
  return Boolean(entry && entry.expiresAt > now);
50
60
  });
51
61
  }
62
+ /**
63
+ * True when the candidate is suppressed only by locally uncommitted
64
+ * failures (no upstream output observed before failing): as an
65
+ * availability policy a lone suppressed route may degrade instead of
66
+ * starving. This records local observation only — it cannot prove the
67
+ * provider did not execute the request. Provider rate limits are exempt:
68
+ * they carry a provider-asked Retry-After window, and redispatching a
69
+ * lone seat inside that window is a retry storm, not an availability
70
+ * gap — the suppression stands through its own TTL.
71
+ */
72
+ suppressedDegradable(candidate) {
73
+ this.evict();
74
+ const now = this.clock.now().getTime();
75
+ const suppressing = [];
76
+ for (const key of applicableKeys(candidate)) {
77
+ const entry = this.entries.get(key);
78
+ if (entry && entry.expiresAt > now)
79
+ suppressing.push(entry);
80
+ }
81
+ return suppressing.length > 0
82
+ && suppressing.every((entry) => !entry.committed && entry.reason !== 'rate-limited');
83
+ }
52
84
  clear(candidate) {
53
85
  applicableKeys(candidate).forEach((key) => this.entries.delete(key));
54
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"route-health.js","sourceRoot":"","sources":["../src/route-health.ts"],"names":[],"mappings":"AAUA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAuC;IACxE,qBAAqB;IACrB,cAAc;IACd,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CACb,SAA+B,EAC/B,KAAgD,EACxC,EAAE;IACV,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACjE,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC7E,KAAK,gBAAgB,CAAC,CAAC,OAAO,kBAAkB,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1G,OAAO,CAAC,CAAC,OAAO;YACd,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;YAC9D,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU;SACnE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,SAA+B,EAAqB,EAAE,CAAC;IAC7E,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;IAC5B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;IAC9B,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,MAAM,OAAO,mBAAmB;IAIX;IACA;IAJF,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE1D,YACmB,KAAY,EACZ,iBAAiB,KAAK;QADtB,UAAK,GAAL,KAAK,CAAO;QACZ,mBAAc,GAAd,cAAc,CAAQ;IACtC,CAAC;IAEJ,MAAM,CACJ,SAA+B,EAC/B,cAA0C,EAC1C,MAAmB;QAEnB,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;YAAE,OAAO;QACzF,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,MAAM,CAAC,kBAAkB,CAAC;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,GAAG;YACH,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG;SAC5C,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,YAAY,CAAC,SAA+B;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAA+B;QACnC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,MAAM;gBAAE,MAAM;YACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"route-health.js","sourceRoot":"","sources":["../src/route-health.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ExecutionFeature } from './execution-features.js';
1
2
  import type { RankedRouteCandidate } from './route-selection.js';
2
3
  import type { AffinityDescription, IdFactory, RouteAvailabilityDiagnostic, RoutePlan, VerifiedRoutingSubject } from './routing-contracts.js';
3
4
  import type { RoutePolicy } from './routing-policy.js';
@@ -22,9 +23,39 @@ export interface StoredAffinity extends AffinityDescription {
22
23
  readonly workspaceId?: string;
23
24
  }
24
25
  export declare class RoutePlanError extends Error {
25
- readonly code: 'no-route' | 'unknown-model' | 'capabilities-unmet' | 'invalid-plan' | 'expired-plan' | 'stale-candidate' | 'conflict' | 'quote-mismatch';
26
+ readonly code: 'no-route' | 'unknown-model' | 'capabilities-unmet' | 'invalid-plan' | 'expired-plan' | 'stale-candidate' | 'conflict' | 'quote-mismatch' | 'native-unavailable';
26
27
  readonly diagnostic?: RouteAvailabilityDiagnostic | undefined;
27
- constructor(message: string, code: 'no-route' | 'unknown-model' | 'capabilities-unmet' | 'invalid-plan' | 'expired-plan' | 'stale-candidate' | 'conflict' | 'quote-mismatch', diagnostic?: RouteAvailabilityDiagnostic | undefined);
28
+ /**
29
+ * Every transport-matching availability entry (Lot 7): by caller
30
+ * convention `diagnostic` stays the first match for back-compat (not a
31
+ * constructor invariant — both arguments are independently optional);
32
+ * this carries the full per-transport list. Transport diagnostics
33
+ * reflect the matching entries, not necessarily every candidate or
34
+ * every failure cause.
35
+ */
36
+ readonly diagnostics?: readonly RouteAvailabilityDiagnostic[] | undefined;
37
+ /**
38
+ * Requested execution features no resolved target supports (spec §16.7
39
+ * cause for `capabilities-unmet`; absent for older constructions and
40
+ * non-execution refusals). The gateway names the first mapped one.
41
+ */
42
+ readonly unmetExecutionFeatures?: readonly ExecutionFeature[] | undefined;
43
+ constructor(message: string, code: 'no-route' | 'unknown-model' | 'capabilities-unmet' | 'invalid-plan' | 'expired-plan' | 'stale-candidate' | 'conflict' | 'quote-mismatch' | 'native-unavailable', diagnostic?: RouteAvailabilityDiagnostic | undefined,
44
+ /**
45
+ * Every transport-matching availability entry (Lot 7): by caller
46
+ * convention `diagnostic` stays the first match for back-compat (not a
47
+ * constructor invariant — both arguments are independently optional);
48
+ * this carries the full per-transport list. Transport diagnostics
49
+ * reflect the matching entries, not necessarily every candidate or
50
+ * every failure cause.
51
+ */
52
+ diagnostics?: readonly RouteAvailabilityDiagnostic[] | undefined,
53
+ /**
54
+ * Requested execution features no resolved target supports (spec §16.7
55
+ * cause for `capabilities-unmet`; absent for older constructions and
56
+ * non-execution refusals). The gateway names the first mapped one.
57
+ */
58
+ unmetExecutionFeatures?: readonly ExecutionFeature[] | undefined);
28
59
  }
29
60
  export declare const subjectRef: (subject: VerifiedRoutingSubject) => string;
30
61
  export declare const routingOwnerRef: (subject: VerifiedRoutingSubject) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"route-planner-state.d.ts","sourceRoot":"","sources":["../src/route-planner-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAC3B,SAAS,EACT,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAGrC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,oBAAoB,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,UAAU,GACjI,gBAAgB;IACpB,QAAQ,CAAC,UAAU,CAAC;gBAHpB,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,oBAAoB,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,UAAU,GACjI,gBAAgB,EACX,UAAU,CAAC,yCAA6B;CAKpD;AAED,eAAO,MAAM,UAAU,YAAa,sBAAsB,KAAG,MACJ,CAAC;AAE1D,eAAO,MAAM,eAAe,YAAa,sBAAsB,KAAG,MAC3C,CAAC;AAExB,eAAO,MAAM,WAAW,YACb,sBAAsB,eAClB,MAAM,gBACL,MAAM,KACnB,MAAmF,CAAC;AAEvF,eAAO,MAAM,gBAAgB,SACrB,WAAW,aACN,QAAQ,WAAW,CAAC,KAC9B,WAKD,CAAC;AAEH,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAK;IAErB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM;CAIvD"}
1
+ {"version":3,"file":"route-planner-state.d.ts","sourceRoot":"","sources":["../src/route-planner-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAC3B,SAAS,EACT,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAGrC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,oBAAoB,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,UAAU,GACjI,gBAAgB,GAAG,oBAAoB;IAC3C,QAAQ,CAAC,UAAU,CAAC;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,CAAC;gBAlBhC,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,oBAAoB,GAAG,cAAc,GAAG,cAAc,GAAG,iBAAiB,GAAG,UAAU,GACjI,gBAAgB,GAAG,oBAAoB,EAClC,UAAU,CAAC,yCAA6B;IACjD;;;;;;;OAOG;IACM,WAAW,CAAC,oDAAwC;IAC7D;;;;OAIG;IACM,sBAAsB,CAAC,yCAA6B;CAKhE;AAED,eAAO,MAAM,UAAU,YAAa,sBAAsB,KAAG,MACJ,CAAC;AAE1D,eAAO,MAAM,eAAe,YAAa,sBAAsB,KAAG,MAC3C,CAAC;AAExB,eAAO,MAAM,WAAW,YACb,sBAAsB,eAClB,MAAM,gBACL,MAAM,KACnB,MAAmF,CAAC;AAEvF,eAAO,MAAM,gBAAgB,SACrB,WAAW,aACN,QAAQ,WAAW,CAAC,KAC9B,WAKD,CAAC;AAEH,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAK;IAErB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM;CAIvD"}
@@ -1,10 +1,29 @@
1
1
  export class RoutePlanError extends Error {
2
2
  code;
3
3
  diagnostic;
4
- constructor(message, code, diagnostic) {
4
+ diagnostics;
5
+ unmetExecutionFeatures;
6
+ constructor(message, code, diagnostic,
7
+ /**
8
+ * Every transport-matching availability entry (Lot 7): by caller
9
+ * convention `diagnostic` stays the first match for back-compat (not a
10
+ * constructor invariant — both arguments are independently optional);
11
+ * this carries the full per-transport list. Transport diagnostics
12
+ * reflect the matching entries, not necessarily every candidate or
13
+ * every failure cause.
14
+ */
15
+ diagnostics,
16
+ /**
17
+ * Requested execution features no resolved target supports (spec §16.7
18
+ * cause for `capabilities-unmet`; absent for older constructions and
19
+ * non-execution refusals). The gateway names the first mapped one.
20
+ */
21
+ unmetExecutionFeatures) {
5
22
  super(message);
6
23
  this.code = code;
7
24
  this.diagnostic = diagnostic;
25
+ this.diagnostics = diagnostics;
26
+ this.unmetExecutionFeatures = unmetExecutionFeatures;
8
27
  this.name = 'RoutePlanError';
9
28
  }
10
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"route-planner-state.js","sourceRoot":"","sources":["../src/route-planner-state.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG5B;IAEA;IAJX,YACE,OAAe,EACN,IACW,EACX,UAAwC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CACO;QACX,eAAU,GAAV,UAAU,CAA8B;QAGjD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAA+B,EAAU,EAAE,CACpE,GAAG,OAAO,CAAC,YAAY,SAAS,OAAO,CAAC,aAAa,EAAE,CAAC;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA+B,EAAU,EAAE,CACzE,OAAO,CAAC,aAAa,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAA+B,EAC/B,WAAmB,EACnB,WAAoB,EACZ,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAiB,EACjB,QAA+B,EAClB,EAAE,CAAC,CAAC;IACjB,GAAG,IAAI;IACP,GAAG,QAAQ;IACX,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ;IAC7C,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK;CACrC,CAAC,CAAC;AAEH,MAAM,OAAO,mBAAmB;IACtB,QAAQ,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC,MAAwC;QAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"route-planner-state.js","sourceRoot":"","sources":["../src/route-planner-state.ts"],"names":[],"mappings":"AAkCA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG5B;IAEA;IASA;IAMA;IAnBX,YACE,OAAe,EACN,IACkC,EAClC,UAAwC;IACjD;;;;;;;OAOG;IACM,WAAoD;IAC7D;;;;OAIG;IACM,sBAAoD;QAE7D,KAAK,CAAC,OAAO,CAAC,CAAC;QAnBN,SAAI,GAAJ,IAAI,CAC8B;QAClC,eAAU,GAAV,UAAU,CAA8B;QASxC,gBAAW,GAAX,WAAW,CAAyC;QAMpD,2BAAsB,GAAtB,sBAAsB,CAA8B;QAG7D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAA+B,EAAU,EAAE,CACpE,GAAG,OAAO,CAAC,YAAY,SAAS,OAAO,CAAC,aAAa,EAAE,CAAC;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA+B,EAAU,EAAE,CACzE,OAAO,CAAC,aAAa,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAA+B,EAC/B,WAAmB,EACnB,WAAoB,EACZ,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAiB,EACjB,QAA+B,EAClB,EAAE,CAAC,CAAC;IACjB,GAAG,IAAI;IACP,GAAG,QAAQ;IACX,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ;IAC7C,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK;CACrC,CAAC,CAAC;AAEH,MAAM,OAAO,mBAAmB;IACtB,QAAQ,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC,MAAwC;QAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACnD,CAAC;CACF"}
@@ -1,10 +1,11 @@
1
1
  import { type ModelEquivalenceCouncil } from './equivalence-council.js';
2
- import type { AccountDirectoryPort, AffinityDescription, Clock, IdFactory, PreparedRouteAttempt, AffinityMutationEvent, RoutePlan, RoutePlanInput, RoutePlanner, VerifiedRoutingSubject, RouteModelInventoryEntry, RouteQuote, RouteQuoteInput } from './routing-contracts.js';
2
+ import type { AccountDirectoryPort, AffinityDescription, Clock, IdFactory, PreparedRouteAttempt, AffinityMutationEvent, RouteAvailabilityDiagnostic, RoutePlan, RoutePlanInput, RoutePlanner, VerifiedRoutingSubject, RouteModelInventoryEntry, RouteQuote, RouteQuoteInput } from './routing-contracts.js';
3
3
  import { InMemoryRoutePolicyProfiles } from './routing-policy.js';
4
4
  export interface InMemoryRoutePlannerOptions {
5
5
  readonly directory: AccountDirectoryPort;
6
6
  readonly council?: ModelEquivalenceCouncil;
7
7
  readonly profiles?: InMemoryRoutePolicyProfiles;
8
+ readonly nativeMessagesModelIds?: readonly string[];
8
9
  readonly clock?: Clock;
9
10
  readonly idFactory?: IdFactory;
10
11
  readonly planTtlMs?: number;
@@ -23,16 +24,35 @@ export declare class InMemoryRoutePlanner implements RoutePlanner {
23
24
  private readonly council;
24
25
  private readonly profiles;
25
26
  private readonly health;
27
+ private readonly nativeMessagesModelIds;
26
28
  private readonly planTtlMs;
27
29
  private readonly maximumPlanEntries;
28
30
  private readonly maximumAffinityEntries;
29
31
  private readonly maximumRoundRobinEntries;
30
32
  constructor(options: InMemoryRoutePlannerOptions);
31
33
  listModels(subject: VerifiedRoutingSubject): Promise<readonly RouteModelInventoryEntry[]>;
34
+ /**
35
+ * Read-only per-transport availability for a requested model (Lot 7).
36
+ * Same transport resolution as the plan no-route branch, without planning
37
+ * side effects — the budget admission path uses it to explain empty quotes.
38
+ */
39
+ describeAvailability(subject: VerifiedRoutingSubject, input: Pick<RoutePlanInput, 'requestedModel' | 'targetCandidatesOverride' | 'explicit'>): Promise<readonly RouteAvailabilityDiagnostic[]>;
40
+ private matchingAvailabilityDiagnostics;
32
41
  plan(subject: VerifiedRoutingSubject, input: RoutePlanInput): Promise<RoutePlan>;
33
42
  quote(input: RouteQuoteInput): RouteQuote;
34
43
  private assertQuoteMatches;
35
44
  private keepQuoted;
45
+ /**
46
+ * Health-filter candidates. Suppression-based failover stands, except for a
47
+ * lone quoted candidate suppressed only by locally uncommitted failures
48
+ * (no upstream output observed before failing): as an availability policy
49
+ * it degrades instead of starving the only route. This records local
50
+ * observation only — the provider may still have accepted the request
51
+ * before the connection failed. Committed failures stay strict, as does
52
+ * multi-route suppression, and provider rate limits keep their
53
+ * Retry-After window even on a lone route.
54
+ */
55
+ private visibleCandidates;
36
56
  prepareAttempt(subject: VerifiedRoutingSubject, planRef: string, candidateRef: string, requestId: string, attemptIndex: number): Promise<PreparedRouteAttempt>;
37
57
  describeAffinity(subject: VerifiedRoutingSubject, key: string, workspaceId?: string): AffinityDescription | null;
38
58
  promoteAffinity(subject: VerifiedRoutingSubject, planRef: string, candidateRef: string, expectedRevision?: number): AffinityDescription;
@@ -1 +1 @@
1
- {"version":3,"file":"route-planner.d.ts","sourceRoot":"","sources":["../src/route-planner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAQ3G,OAAO,KAAK,EACV,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EACjF,qBAAqB,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EACtF,wBAAwB,EAAE,UAAU,EAAE,eAAe,EACtD,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,2BAA2B,EAAwB,MAAM,qBAAqB,CAAC;AAExF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACjE;AACD,qBAAa,oBAAqB,YAAW,YAAY;IAiB3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAGtB;IACL,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;gBAErB,OAAO,EAAE,2BAA2B;IAc3D,UAAU,CACd,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC;IAczC,IAAI,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAyItF,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IAGzC,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,UAAU;IAQZ,cAAc,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EACzF,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsCzE,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAIhH,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EACpF,gBAAgB,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAIjD,cAAc,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EACnF,gBAAgB,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAIjD,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EACnF,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IAchC,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,IAAI;IAwBZ,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,IAAI;CAOb"}
1
+ {"version":3,"file":"route-planner.d.ts","sourceRoot":"","sources":["../src/route-planner.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { DEFAULT_MODEL_EQUIVALENCE_COUNCIL } from './equivalence-council.js';
2
2
  import { prepareStoredRouteAttempt } from './route-attempt.js';
3
3
  import { InMemoryRouteHealth } from './route-health.js';
4
4
  import { affinityRef, RoutePlanError, SequentialIdFactory, routingOwnerRef, subjectRef, } from './route-planner-state.js';
5
+ import { isNativeMessagesTarget, NATIVE_ANTHROPIC_MESSAGES_MODEL_IDS, validateNativeModelAllowlist, } from './native-messages.js';
5
6
  import { resolveRequestedTargets, selectRouteCandidates } from './route-selection.js';
6
7
  import { computeRouteQuoteRef, isQuotedRouteTarget, quoteRoute, resolveQuotePolicy } from './route-quote.js';
7
8
  import { InMemoryRoutePolicyProfiles, resolveRouteStrategy } from './routing-policy.js';
@@ -15,6 +16,7 @@ export class InMemoryRoutePlanner {
15
16
  council;
16
17
  profiles;
17
18
  health;
19
+ nativeMessagesModelIds;
18
20
  planTtlMs;
19
21
  maximumPlanEntries;
20
22
  maximumAffinityEntries;
@@ -26,6 +28,9 @@ export class InMemoryRoutePlanner {
26
28
  this.council = options.council ?? DEFAULT_MODEL_EQUIVALENCE_COUNCIL;
27
29
  this.profiles = options.profiles ?? new InMemoryRoutePolicyProfiles();
28
30
  this.health = new InMemoryRouteHealth(this.clock);
31
+ this.nativeMessagesModelIds = options.nativeMessagesModelIds !== undefined
32
+ ? validateNativeModelAllowlist(options.nativeMessagesModelIds)
33
+ : NATIVE_ANTHROPIC_MESSAGES_MODEL_IDS;
29
34
  this.planTtlMs = options.planTtlMs ?? 30_000;
30
35
  this.maximumPlanEntries = Math.max(1, options.maximumPlanEntries ?? 1_000);
31
36
  this.maximumAffinityEntries = Math.max(1, options.maximumAffinityEntries ?? 10_000);
@@ -45,6 +50,32 @@ export class InMemoryRoutePlanner {
45
50
  return [...inventory.values()].sort((left, right) => left.modelId.localeCompare(right.modelId)
46
51
  || left.providerId.localeCompare(right.providerId));
47
52
  }
53
+ /**
54
+ * Read-only per-transport availability for a requested model (Lot 7).
55
+ * Same transport resolution as the plan no-route branch, without planning
56
+ * side effects — the budget admission path uses it to explain empty quotes.
57
+ */
58
+ async describeAvailability(subject, input) {
59
+ return this.matchingAvailabilityDiagnostics(subject, input);
60
+ }
61
+ async matchingAvailabilityDiagnostics(subject, input) {
62
+ // A diagnostic is only pertinent when it belongs to the requested
63
+ // route's transports. Surfacing listDiagnostics[0] unfiltered once
64
+ // prescribed a `muse reauthenticate` for an explicit codex request.
65
+ // The model-derived resolution ignores `explicit`, so an explicit
66
+ // transport restriction wins over it here.
67
+ const explicitTransport = input.explicit?.transportProviderId;
68
+ const resolution = resolveRequestedTargets(input);
69
+ const transports = new Set(explicitTransport
70
+ ? [explicitTransport]
71
+ : resolution.kind === 'known'
72
+ ? resolution.targets
73
+ .map((target) => target.transportProviderId)
74
+ .filter((transport) => typeof transport === 'string')
75
+ : []);
76
+ const diagnostics = await this.options.directory.listDiagnostics?.(subject) ?? [];
77
+ return diagnostics.filter((entry) => transports.has(entry.transportProviderId));
78
+ }
48
79
  async plan(subject, input) {
49
80
  this.evictPlans();
50
81
  const { profile, policy: resolvedPolicy } = resolveQuotePolicy(input, this.profiles);
@@ -60,6 +91,7 @@ export class InMemoryRoutePlanner {
60
91
  const affinity = input.affinityKey
61
92
  ? this.affinities.get(affinityRef(subject, input.affinityKey, input.workspaceId))
62
93
  : undefined;
94
+ let affinityDropped = false;
63
95
  const accounts = await this.options.directory.listEligible(subject);
64
96
  const roundRobinKey = `${routingOwnerRef(subject)}\u001f${input.requestedModel}`;
65
97
  const roundRobinState = strategy.kind === 'round-robin'
@@ -79,15 +111,52 @@ export class InMemoryRoutePlanner {
79
111
  throw new RoutePlanError('Unknown requested model', 'unknown-model');
80
112
  }
81
113
  if (selection.kind === 'capabilities-unmet') {
82
- throw new RoutePlanError('Required capabilities are unavailable', 'capabilities-unmet');
114
+ throw new RoutePlanError('Required capabilities are unavailable', 'capabilities-unmet', undefined, undefined, selection.unmetExecutionFeatures);
115
+ }
116
+ if (input.nativeMessages === true) {
117
+ // Adapted from R: R also rejected exclusive launch aliases here, but W
118
+ // folds every launch alias into LAUNCH_ALIAS_ROUTE_MAPPINGS with no
119
+ // exclusive codex pin, so the native-target check alone decides.
120
+ if (!isNativeMessagesTarget({ providerId: 'anthropic', modelId: input.requestedModel }, this.nativeMessagesModelIds)) {
121
+ throw new RoutePlanError('Native Anthropic Messages execution is unavailable for this request', 'native-unavailable');
122
+ }
83
123
  }
84
124
  let candidates = selection.kind === 'candidates' ? [...selection.candidates] : [];
125
+ if (input.nativeMessages === true) {
126
+ const hadCandidates = candidates.length > 0;
127
+ candidates = candidates.filter((candidate) => candidate.account.nativeMessages?.contractVersion === 1
128
+ && candidate.account.nativeMessages.protocol === 'anthropic-messages'
129
+ && isNativeMessagesTarget(candidate.target, this.nativeMessagesModelIds)
130
+ && candidate.target.modelId === input.requestedModel);
131
+ if (hadCandidates && candidates.length === 0) {
132
+ throw new RoutePlanError('Native Anthropic Messages execution is unavailable for this request', 'native-unavailable');
133
+ }
134
+ }
85
135
  // With a quote, an affinity to an unquoted target is ignored for selection
86
136
  // (for example a sticky model the request no longer asks for).
137
+ const stickyAccount = affinity
138
+ ? accounts.find((entry) => entry.accountRef === affinity.accountRef)
139
+ : undefined;
87
140
  if (affinity && policy.stickyAccount
88
- && inQuoteTarget(affinity.target)) {
89
- const account = accounts.find((entry) => entry.accountRef === affinity.accountRef);
90
- if (!account || account.readiness !== 'ready') {
141
+ && inQuoteTarget(affinity.target)
142
+ && (!input.nativeMessages || (stickyAccount?.nativeMessages?.contractVersion === 1
143
+ && stickyAccount.nativeMessages.protocol === 'anthropic-messages'
144
+ && isNativeMessagesTarget(affinity.target, this.nativeMessagesModelIds)
145
+ && affinity.target.modelId === input.requestedModel))) {
146
+ const account = stickyAccount;
147
+ if (!account) {
148
+ // Auto-drop: the affinity account is gone (deleted) — resolve without
149
+ // the dead pin instead of failing closed on it. The dropped pin is
150
+ // cleared for the rest of planning so the stored plan carries no
151
+ // affinity revision and round-robin reservation applies to the
152
+ // replacement candidates.
153
+ if (input.affinityKey) {
154
+ this.affinities.delete(affinityRef(subject, input.affinityKey, input.workspaceId));
155
+ }
156
+ affinityDropped = true;
157
+ candidates = this.visibleCandidates(candidates, inQuote, policy);
158
+ }
159
+ else if (account.readiness !== 'ready') {
91
160
  candidates = [];
92
161
  }
93
162
  else {
@@ -100,39 +169,24 @@ export class InMemoryRoutePlanner {
100
169
  account,
101
170
  target: { ...affinity.target, requestedModel: input.requestedModel, reason: 'sticky' },
102
171
  };
103
- candidates = this.keepQuoted([sticky, ...sameAccount, ...rotated], inQuote)
104
- .filter((candidate) => !this.health.isSuppressed(candidate))
105
- .slice(0, policy.maxAttempts);
172
+ candidates = this.visibleCandidates([sticky, ...sameAccount, ...rotated], inQuote, policy);
106
173
  }
107
174
  }
108
175
  else {
109
- candidates = this.keepQuoted(candidates, inQuote)
110
- .filter((candidate) => !this.health.isSuppressed(candidate))
111
- .slice(0, policy.maxAttempts);
176
+ candidates = this.visibleCandidates(candidates, inQuote, policy);
112
177
  }
113
178
  if (candidates.length === 0) {
114
- // A diagnostic is only pertinent when it belongs to the requested
115
- // route's transports. Surfacing listDiagnostics[0] unfiltered once
116
- // prescribed a `muse reauthenticate` for an explicit codex request.
117
- // The model-derived resolution ignores `explicit`, so an explicit
118
- // transport restriction wins over it here.
119
- const explicitTransport = input.explicit?.transportProviderId;
120
- const resolution = resolveRequestedTargets(input);
121
- const transports = new Set(explicitTransport
122
- ? [explicitTransport]
123
- : resolution.kind === 'known'
124
- ? resolution.targets
125
- .map((target) => target.transportProviderId)
126
- .filter((transport) => typeof transport === 'string')
127
- : []);
128
- const diagnostics = await this.options.directory.listDiagnostics?.(subject) ?? [];
129
- const diagnostic = diagnostics.find((entry) => transports.has(entry.transportProviderId));
130
- throw new RoutePlanError(diagnostic?.message ?? 'No eligible route', 'no-route', diagnostic);
179
+ const matching = await this.matchingAvailabilityDiagnostics(subject, input);
180
+ const diagnostic = matching[0];
181
+ throw new RoutePlanError(diagnostic?.message ?? 'No eligible route', 'no-route', diagnostic, matching.length > 0 ? matching : undefined);
131
182
  }
132
183
  const planRef = this.ids.next('plan');
133
184
  const storedCandidates = candidates.map((candidate) => ({
134
185
  ...candidate, candidateRef: this.ids.next('candidate'),
135
186
  }));
187
+ // An auto-dropped pin counts as no affinity from here on: the stored
188
+ // plan carries no revision and round-robin treats this as a fresh plan.
189
+ const effectiveAffinity = affinityDropped ? undefined : affinity;
136
190
  const plan = {
137
191
  planRef,
138
192
  expiresAt: new Date(this.clock.now().getTime() + this.planTtlMs).toISOString(),
@@ -147,13 +201,13 @@ export class InMemoryRoutePlanner {
147
201
  actualModelId: candidate.target.modelId,
148
202
  actualTransportProviderId: candidate.target.transportProviderId,
149
203
  reason: candidate.target.reason,
150
- cacheContinuityRisk: Boolean(affinity && affinity.accountRef !== candidate.account.accountRef),
204
+ cacheContinuityRisk: Boolean(effectiveAffinity && effectiveAffinity.accountRef !== candidate.account.accountRef),
151
205
  })),
152
206
  };
153
207
  this.plans.set(planRef, {
154
208
  plan, subjectRef: subjectRef(subject), candidates: storedCandidates, policy,
155
- hadAffinity: Boolean(affinity),
156
- ...(affinity ? { affinityRevision: affinity.revision } : {}),
209
+ hadAffinity: Boolean(effectiveAffinity),
210
+ ...(effectiveAffinity ? { affinityRevision: effectiveAffinity.revision } : {}),
157
211
  ...(profile ? {
158
212
  policyProfileName: profile.name,
159
213
  policyProfileRevision: profile.revision,
@@ -162,9 +216,9 @@ export class InMemoryRoutePlanner {
162
216
  ? { affinityRef: affinityRef(subject, input.affinityKey, input.workspaceId) }
163
217
  : {}),
164
218
  claimedAttempts: new Set(),
165
- ...(strategy.kind === 'round-robin' && !affinity ? { roundRobinKey } : {}),
219
+ ...(strategy.kind === 'round-robin' && !effectiveAffinity ? { roundRobinKey } : {}),
166
220
  });
167
- if (strategy.kind === 'round-robin' && !affinity) {
221
+ if (strategy.kind === 'round-robin' && !effectiveAffinity) {
168
222
  const state = this.roundRobin.get(roundRobinKey) ?? {
169
223
  committedOffset: 0,
170
224
  reservations: new Set(),
@@ -176,7 +230,11 @@ export class InMemoryRoutePlanner {
176
230
  return plan;
177
231
  }
178
232
  quote(input) {
179
- return quoteRoute(input, { council: this.council, profiles: this.profiles });
233
+ return quoteRoute(input, {
234
+ council: this.council,
235
+ profiles: this.profiles,
236
+ nativeMessagesModelIds: this.nativeMessagesModelIds,
237
+ });
180
238
  }
181
239
  assertQuoteMatches(input, quote, profileName, profileRevision) {
182
240
  const { quoteRef, ...body } = quote;
@@ -195,6 +253,26 @@ export class InMemoryRoutePlanner {
195
253
  }
196
254
  return quoted;
197
255
  }
256
+ /**
257
+ * Health-filter candidates. Suppression-based failover stands, except for a
258
+ * lone quoted candidate suppressed only by locally uncommitted failures
259
+ * (no upstream output observed before failing): as an availability policy
260
+ * it degrades instead of starving the only route. This records local
261
+ * observation only — the provider may still have accepted the request
262
+ * before the connection failed. Committed failures stay strict, as does
263
+ * multi-route suppression, and provider rate limits keep their
264
+ * Retry-After window even on a lone route.
265
+ */
266
+ visibleCandidates(candidates, inQuote, policy) {
267
+ const quoted = this.keepQuoted(candidates, inQuote);
268
+ const visible = quoted.filter((candidate) => !this.health.isSuppressed(candidate));
269
+ if (visible.length > 0)
270
+ return visible.slice(0, policy.maxAttempts);
271
+ const [only] = quoted;
272
+ if (quoted.length === 1 && only && this.health.suppressedDegradable(only))
273
+ return quoted;
274
+ return [];
275
+ }
198
276
  async prepareAttempt(subject, planRef, candidateRef, requestId, attemptIndex) {
199
277
  const stored = this.plans.get(planRef);
200
278
  if (stored?.plan.councilRevision !== this.council.revision) {
@@ -211,6 +289,7 @@ export class InMemoryRoutePlanner {
211
289
  return await prepareStoredRouteAttempt({
212
290
  stored, subject, planRef, candidateRef, requestId, attemptIndex,
213
291
  directory: this.options.directory, clock: this.clock,
292
+ isNativeTarget: (target) => isNativeMessagesTarget(target, this.nativeMessagesModelIds),
214
293
  onOutcome: (activePlan, candidate, failure) => {
215
294
  this.health.record(candidate, failure, activePlan.policy);
216
295
  const terminalCandidate = activePlan.candidates.at(-1) === candidate;
@@ -1 +1 @@
1
- {"version":3,"file":"route-planner.js","sourceRoot":"","sources":["../src/route-planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-planner.js","sourceRoot":"","sources":["../src/route-planner.ts"],"names":[],"mappings":"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"}