@sentropic/llm-mesh 0.25.0 → 0.26.0

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 (83) hide show
  1. package/dist/catalog.d.ts +92 -0
  2. package/dist/catalog.d.ts.map +1 -1
  3. package/dist/catalog.js +47 -0
  4. package/dist/catalog.js.map +1 -1
  5. package/dist/enrollment/codex.d.ts +7 -0
  6. package/dist/enrollment/codex.d.ts.map +1 -1
  7. package/dist/enrollment/codex.js +74 -19
  8. package/dist/enrollment/codex.js.map +1 -1
  9. package/dist/errors.d.ts +19 -0
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +51 -4
  12. package/dist/errors.js.map +1 -1
  13. package/dist/execution-features.d.ts +34 -0
  14. package/dist/execution-features.d.ts.map +1 -0
  15. package/dist/execution-features.js +84 -0
  16. package/dist/execution-features.js.map +1 -0
  17. package/dist/generated-model-council.d.ts +2 -2
  18. package/dist/generated-model-council.d.ts.map +1 -1
  19. package/dist/generated-model-council.js +5 -1
  20. package/dist/generated-model-council.js.map +1 -1
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/native-messages.d.ts +130 -0
  26. package/dist/native-messages.d.ts.map +1 -0
  27. package/dist/native-messages.js +66 -0
  28. package/dist/native-messages.js.map +1 -0
  29. package/dist/providers.d.ts +5 -5
  30. package/dist/providers.d.ts.map +1 -1
  31. package/dist/providers.js +12 -5
  32. package/dist/providers.js.map +1 -1
  33. package/dist/responses-wire.d.ts +76 -0
  34. package/dist/responses-wire.d.ts.map +1 -0
  35. package/dist/responses-wire.js +35 -0
  36. package/dist/responses-wire.js.map +1 -0
  37. package/dist/route-attempt.d.ts +4 -0
  38. package/dist/route-attempt.d.ts.map +1 -1
  39. package/dist/route-attempt.js +8 -1
  40. package/dist/route-attempt.js.map +1 -1
  41. package/dist/route-health.d.ts +11 -0
  42. package/dist/route-health.d.ts.map +1 -1
  43. package/dist/route-health.js +32 -0
  44. package/dist/route-health.js.map +1 -1
  45. package/dist/route-planner-state.d.ts +33 -2
  46. package/dist/route-planner-state.d.ts.map +1 -1
  47. package/dist/route-planner-state.js +20 -1
  48. package/dist/route-planner-state.js.map +1 -1
  49. package/dist/route-planner.d.ts +21 -1
  50. package/dist/route-planner.d.ts.map +1 -1
  51. package/dist/route-planner.js +112 -33
  52. package/dist/route-planner.js.map +1 -1
  53. package/dist/route-quote.d.ts +16 -2
  54. package/dist/route-quote.d.ts.map +1 -1
  55. package/dist/route-quote.js +31 -5
  56. package/dist/route-quote.js.map +1 -1
  57. package/dist/route-selection.d.ts +13 -0
  58. package/dist/route-selection.d.ts.map +1 -1
  59. package/dist/route-selection.js +30 -5
  60. package/dist/route-selection.js.map +1 -1
  61. package/dist/routing-contracts.d.ts +42 -3
  62. package/dist/routing-contracts.d.ts.map +1 -1
  63. package/dist/routing-targets.d.ts +26 -0
  64. package/dist/routing-targets.d.ts.map +1 -1
  65. package/dist/routing-targets.js +96 -23
  66. package/dist/routing-targets.js.map +1 -1
  67. package/dist/service/local-account-transport-service.d.ts +9 -0
  68. package/dist/service/local-account-transport-service.d.ts.map +1 -1
  69. package/dist/service/local-account-transport-service.js +56 -9
  70. package/dist/service/local-account-transport-service.js.map +1 -1
  71. package/dist/transport/codex-runtime-client.d.ts.map +1 -1
  72. package/dist/transport/codex-runtime-client.js +24 -4
  73. package/dist/transport/codex-runtime-client.js.map +1 -1
  74. package/dist/transport/codex-runtime-wire.d.ts.map +1 -1
  75. package/dist/transport/codex-runtime-wire.js +131 -27
  76. package/dist/transport/codex-runtime-wire.js.map +1 -1
  77. package/dist/transport/mistral-runtime-client.d.ts.map +1 -1
  78. package/dist/transport/mistral-runtime-client.js +191 -9
  79. package/dist/transport/mistral-runtime-client.js.map +1 -1
  80. package/dist/transport/muse-runtime-client.d.ts.map +1 -1
  81. package/dist/transport/muse-runtime-client.js +221 -10
  82. package/dist/transport/muse-runtime-client.js.map +1 -1
  83. package/package.json +1 -1
@@ -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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"}
@@ -1,16 +1,30 @@
1
1
  import { type ModelEquivalenceCouncil } from './equivalence-council.js';
2
+ import type { ExecutionFeature } from './execution-features.js';
2
3
  import type { PlannedRouteTarget, RoutePlanInput, RouteQuote, RouteQuoteErrorCode, RouteQuoteInput } from './routing-contracts.js';
3
4
  import { InMemoryRoutePolicyProfiles, type RoutePolicy, type RoutePolicyProfile } from './routing-policy.js';
4
5
  export declare const MAX_ROUTE_QUOTE_CANDIDATES = 16;
5
6
  export declare class RouteQuoteError extends Error {
6
7
  readonly code: RouteQuoteErrorCode;
7
- constructor(message: string, code: RouteQuoteErrorCode);
8
+ /**
9
+ * Requested execution features no resolved target supports (spec §16.7
10
+ * cause for `capabilities-unmet`; absent for older constructions and
11
+ * non-execution refusals). The gateway names the first mapped one.
12
+ */
13
+ readonly unmetExecutionFeatures?: readonly ExecutionFeature[] | undefined;
14
+ constructor(message: string, code: RouteQuoteErrorCode,
15
+ /**
16
+ * Requested execution features no resolved target supports (spec §16.7
17
+ * cause for `capabilities-unmet`; absent for older constructions and
18
+ * non-execution refusals). The gateway names the first mapped one.
19
+ */
20
+ unmetExecutionFeatures?: readonly ExecutionFeature[] | undefined);
8
21
  }
9
22
  export interface RouteQuoteOptions {
10
23
  readonly council?: ModelEquivalenceCouncil;
11
24
  readonly profiles?: InMemoryRoutePolicyProfiles;
25
+ readonly nativeMessagesModelIds?: readonly string[];
12
26
  }
13
- type QuoteRouteFields = Pick<RoutePlanInput, 'targetCandidatesOverride' | 'intent' | 'requiredCapabilities' | 'policyProfile' | 'policyOverride' | 'explicit'>;
27
+ type QuoteRouteFields = Pick<RoutePlanInput, 'targetCandidatesOverride' | 'intent' | 'requiredCapabilities' | 'requiredExecutionFeatures' | 'policyProfile' | 'policyOverride' | 'explicit' | 'nativeMessages'>;
14
28
  type QuoteBody = Omit<RouteQuote, 'quoteRef'>;
15
29
  /** Resolves the policy exactly as `plan()` does, without touching any account. */
16
30
  export declare const resolveQuotePolicy: (input: RoutePlanInput, profiles: InMemoryRoutePolicyProfiles) => {
@@ -1 +1 @@
1
- {"version":3,"file":"route-quote.d.ts","sourceRoot":"","sources":["../src/route-quote.ts"],"names":[],"mappings":"AACA,OAAO,EAC8B,KAAK,uBAAuB,EAChE,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EACV,kBAAkB,EAAwB,cAAc,EAAE,UAAU,EAAE,mBAAmB,EACzF,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACiB,2BAA2B,EACjD,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAC1C,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAK7C,qBAAa,eAAgB,SAAQ,KAAK;IACX,QAAQ,CAAC,IAAI,EAAE,mBAAmB;gBAAnD,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,mBAAmB;CAIhE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;CACjD;AAED,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,0BAA0B,GAAG,QAAQ,GAC9E,sBAAsB,GAAG,eAAe,GAAG,gBAAgB,GAAG,UAAU,CAAC,CAAC;AAC9E,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AA0B9C,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,UACtB,cAAc,YACX,2BAA2B,KACpC;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAUvE,CAAC;AAuBF,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB,UACxB,gBAAgB,qBACJ,MAAM,GAAG,SAAS,QAC/B,SAAS,KACd,MAmBG,CAAC;AAEP,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,UACvB,UAAU,UACT,KAAK,kBAAkB,EAAE,YAAY,GAAG,SAAS,GAAG,qBAAqB,CAAC,KACjF,OAIkE,CAAC;AAmEtE;;;;GAIG;AACH,eAAO,MAAM,UAAU,UAAW,eAAe,YAAW,iBAAiB,KAAQ,UAiDpF,CAAC"}
1
+ {"version":3,"file":"route-quote.d.ts","sourceRoot":"","sources":["../src/route-quote.ts"],"names":[],"mappings":"AACA,OAAO,EAC8B,KAAK,uBAAuB,EAChE,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE,OAAO,KAAK,EACV,kBAAkB,EAAwB,cAAc,EAAE,UAAU,EAAE,mBAAmB,EACzF,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACiB,2BAA2B,EACjD,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAC1C,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAK7C,qBAAa,eAAgB,SAAQ,KAAK;IAGtC,QAAQ,CAAC,IAAI,EAAE,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,CAAC;gBAPhC,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,mBAAmB;IAClC;;;;OAIG;IACM,sBAAsB,CAAC,yCAA6B;CAKhE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrD;AAED,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,0BAA0B,GAAG,QAAQ,GAC9E,sBAAsB,GAAG,2BAA2B,GAAG,eAAe,GAAG,gBAAgB,GAAG,UAAU,GAAG,gBAAgB,CAAC,CAAC;AAC/H,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AA0B9C,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,UACtB,cAAc,YACX,2BAA2B,KACpC;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAUvE,CAAC;AAuBF,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB,UACxB,gBAAgB,qBACJ,MAAM,GAAG,SAAS,QAC/B,SAAS,KACd,MAuBG,CAAC;AAEP,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,UACvB,UAAU,UACT,KAAK,kBAAkB,EAAE,YAAY,GAAG,SAAS,GAAG,qBAAqB,CAAC,KACjF,OAIkE,CAAC;AAoEtE;;;;GAIG;AACH,eAAO,MAAM,UAAU,UAAW,eAAe,YAAW,iBAAiB,KAAQ,UAqEpF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { modelProfiles, providerProfiles } from './catalog.js';
2
2
  import { DEFAULT_MODEL_EQUIVALENCE_COUNCIL, } from './equivalence-council.js';
3
+ import { isNativeMessagesTarget, NATIVE_ANTHROPIC_MESSAGES_MODEL_IDS, validateNativeModelAllowlist, } from './native-messages.js';
3
4
  import { mergeRoutePolicy, RoutePlanError } from './route-planner-state.js';
4
5
  import { resolveRouteTargets } from './route-selection.js';
5
6
  import { DEFAULT_ROUTE_POLICY, InMemoryRoutePolicyProfiles, resolveRoutePolicy, validateRoutePolicy, } from './routing-policy.js';
@@ -9,9 +10,17 @@ export const MAX_ROUTE_QUOTE_CANDIDATES = 16;
9
10
  const OUTPUT_CEILING_UNENFORCED_TRANSPORTS = ['codex'];
10
11
  export class RouteQuoteError extends Error {
11
12
  code;
12
- constructor(message, code) {
13
+ unmetExecutionFeatures;
14
+ constructor(message, code,
15
+ /**
16
+ * Requested execution features no resolved target supports (spec §16.7
17
+ * cause for `capabilities-unmet`; absent for older constructions and
18
+ * non-execution refusals). The gateway names the first mapped one.
19
+ */
20
+ unmetExecutionFeatures) {
13
21
  super(message);
14
22
  this.code = code;
23
+ this.unmetExecutionFeatures = unmetExecutionFeatures;
15
24
  this.name = 'RouteQuoteError';
16
25
  }
17
26
  }
@@ -69,9 +78,13 @@ export const computeRouteQuoteRef = (input, policyProfileName, body) => `quote_$
69
78
  // Order-insensitive: the capability filter is a conjunction.
70
79
  requiredCapabilities: input.requiredCapabilities
71
80
  ?.map((entry) => JSON.stringify(canonical(entry))).sort(),
81
+ // Order-insensitive: the execution-feature filter is a conjunction.
82
+ requiredExecutionFeatures: input.requiredExecutionFeatures
83
+ ? [...input.requiredExecutionFeatures].sort() : undefined,
72
84
  policyProfile: input.policyProfile,
73
85
  policyOverride: input.policyOverride,
74
86
  explicit: input.explicit,
87
+ nativeMessages: input.nativeMessages,
75
88
  },
76
89
  policyProfileName: policyProfileName ?? null,
77
90
  requestedModel: body.requestedModel,
@@ -109,7 +122,7 @@ const resolveQuoteTargets = (input, policy, council) => {
109
122
  throw new RouteQuoteError('Unknown requested model', 'unknown-model');
110
123
  }
111
124
  if (resolution.kind === 'capabilities-unmet') {
112
- throw new RouteQuoteError('Required capabilities are unavailable', 'capabilities-unmet');
125
+ throw new RouteQuoteError('Required capabilities are unavailable', 'capabilities-unmet', resolution.unmetExecutionFeatures);
113
126
  }
114
127
  // Account-independent part of an explicit selector; the account selector only narrows plan().
115
128
  const explicit = input.explicit;
@@ -151,11 +164,24 @@ export const quoteRoute = (input, options = {}) => {
151
164
  const council = options.council ?? DEFAULT_MODEL_EQUIVALENCE_COUNCIL;
152
165
  const { profile, policy } = resolveQuotePolicy(input, options.profiles ?? new InMemoryRoutePolicyProfiles());
153
166
  const targets = resolveQuoteTargets(input, policy, council);
154
- if (targets.length > MAX_ROUTE_QUOTE_CANDIDATES) {
155
- throw new RouteQuoteError(`Route has ${targets.length} candidates; the quote limit is ${MAX_ROUTE_QUOTE_CANDIDATES}`, 'too-many-candidates');
167
+ const nativeModelIds = options.nativeMessagesModelIds !== undefined
168
+ ? validateNativeModelAllowlist(options.nativeMessagesModelIds)
169
+ : NATIVE_ANTHROPIC_MESSAGES_MODEL_IDS;
170
+ let candidateTargets = targets;
171
+ if (input.nativeMessages === true) {
172
+ if (!isNativeMessagesTarget({ providerId: 'anthropic', modelId: input.requestedModel }, nativeModelIds)) {
173
+ throw new RouteQuoteError('Native Anthropic Messages execution is unavailable for this request', 'native-unavailable');
174
+ }
175
+ candidateTargets = targets.filter((target) => isNativeMessagesTarget(target, nativeModelIds) && target.modelId === input.requestedModel);
176
+ if (candidateTargets.length === 0) {
177
+ throw new RouteQuoteError('Native Anthropic Messages execution is unavailable for this request', 'native-unavailable');
178
+ }
179
+ }
180
+ if (candidateTargets.length > MAX_ROUTE_QUOTE_CANDIDATES) {
181
+ throw new RouteQuoteError(`Route has ${candidateTargets.length} candidates; the quote limit is ${MAX_ROUTE_QUOTE_CANDIDATES}`, 'too-many-candidates');
156
182
  }
157
183
  const { ceiling } = input;
158
- const candidates = targets.map((target) => {
184
+ const candidates = candidateTargets.map((target) => {
159
185
  const modelCapabilities = profileFor(target)?.capabilities;
160
186
  const contextWindow = modelCapabilities?.contextWindowTokens;
161
187
  if (contextWindow !== undefined && ceiling.inputTokens > contextWindow) {
@@ -1 +1 @@
1
- {"version":3,"file":"route-quote.js","sourceRoot":"","sources":["../src/route-quote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-quote.js","sourceRoot":"","sources":["../src/route-quote.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type ModelEquivalenceCouncil } from './equivalence-council.js';
2
+ import { type ExecutionFeature } from './execution-features.js';
2
3
  import type { EligibleAccountDescriptor, PlannedRouteTarget, RoutePlanInput } from './routing-contracts.js';
3
4
  import { type RoutePolicy } from './routing-policy.js';
4
5
  export interface RankedRouteCandidate {
@@ -14,6 +15,12 @@ export type RouteCandidateSelection = {
14
15
  } | {
15
16
  readonly kind: 'capabilities-unmet';
16
17
  readonly requestedModel: string;
18
+ /**
19
+ * Requested execution features no resolved target supports (spec §16.7:
20
+ * the gateway names the first mapped one as the refusal field path).
21
+ * Empty when the refusal comes from the capability filter instead.
22
+ */
23
+ readonly unmetExecutionFeatures: readonly ExecutionFeature[];
17
24
  } | {
18
25
  readonly kind: 'no-eligible-account';
19
26
  readonly requestedModel: string;
@@ -54,6 +61,12 @@ export type RouteTargetResolution = {
54
61
  } | {
55
62
  readonly kind: 'capabilities-unmet';
56
63
  readonly requestedModel: string;
64
+ /**
65
+ * Requested execution features no resolved target supports (spec §16.7:
66
+ * the gateway names the first mapped one as the refusal field path).
67
+ * Empty when the refusal comes from the capability filter instead.
68
+ */
69
+ readonly unmetExecutionFeatures: readonly ExecutionFeature[];
57
70
  };
58
71
  /**
59
72
  * Account-independent target resolution shared by planning and quoting:
@@ -1 +1 @@
1
- {"version":3,"file":"route-selection.d.ts","sourceRoot":"","sources":["../src/route-selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-selection.d.ts","sourceRoot":"","sources":["../src/route-selection.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { modelProfiles } from './catalog.js';
2
2
  import { modelSupportsCapability } from './equivalence-council.js';
3
+ import { transportSupportsExecutionFeatures } from './execution-features.js';
3
4
  import { resolveRouteStrategy } from './routing-policy.js';
4
5
  import { createCanonicalTargetCandidatesResolver, resolveTargetCapabilitySource, } from './routing-targets.js';
5
6
  const resolveCanonicalTargets = createCanonicalTargetCandidatesResolver();
@@ -50,6 +51,18 @@ export const resolveRequestedTargets = (request) => {
50
51
  useFaithfulAnthropicTarget: Boolean(useFaithfulAnthropicTarget),
51
52
  };
52
53
  };
54
+ /**
55
+ * Requested execution features no candidate target supports. A target with an
56
+ * unpinned transport is kept for the plan-time account check, so it never
57
+ * marks a feature unmet here. In request order; empty when execution
58
+ * features are not (one of) the refusal cause(s).
59
+ */
60
+ const unmetExecutionFeatures = (request, targets) => {
61
+ const required = request.requiredExecutionFeatures;
62
+ if (!required || required.length === 0 || targets.length === 0)
63
+ return [];
64
+ return required.filter((feature) => !targets.some((target) => transportSupportsExecutionFeatures(target.transportProviderId, [feature])));
65
+ };
53
66
  /**
54
67
  * Account-independent target resolution shared by planning and quoting:
55
68
  * requested targets, council equivalents fresh at `now`, capability filter and
@@ -98,14 +111,25 @@ export const resolveRouteTargets = (request, policy, council, now) => {
98
111
  && profile.modelId === capabilitySource.model);
99
112
  return supportsCapabilities(targetProfile, request.requiredCapabilities);
100
113
  };
114
+ // Execution-feature eligibility of the actual model/transport pair (spec
115
+ // §16.3): account-independent here (mesh-known table; unpinned stays for
116
+ // the plan-time account check). Shared by planning and quoting.
117
+ const supportsTargetExecution = (target) => transportSupportsExecutionFeatures(target.transportProviderId, request.requiredExecutionFeatures);
118
+ const supportsTarget = (target) => supportsTargetCapabilities(target) && supportsTargetExecution(target);
101
119
  const faithfulClaude = request.requestedModel.startsWith('claude-')
102
120
  && resolution.useFaithfulAnthropicTarget;
103
- if (faithfulClaude && targets[0] && !supportsTargetCapabilities(targets[0])) {
104
- return { kind: 'capabilities-unmet', requestedModel: request.requestedModel };
121
+ if (faithfulClaude && targets[0] && !supportsTarget(targets[0])) {
122
+ return {
123
+ kind: 'capabilities-unmet', requestedModel: request.requestedModel,
124
+ unmetExecutionFeatures: unmetExecutionFeatures(request, [targets[0]]),
125
+ };
105
126
  }
106
- const capableTargets = targets.filter(supportsTargetCapabilities);
127
+ const capableTargets = targets.filter(supportsTarget);
107
128
  if (!faithfulClaude && targets.length > 0 && capableTargets.length === 0) {
108
- return { kind: 'capabilities-unmet', requestedModel: request.requestedModel };
129
+ return {
130
+ kind: 'capabilities-unmet', requestedModel: request.requestedModel,
131
+ unmetExecutionFeatures: unmetExecutionFeatures(request, targets),
132
+ };
109
133
  }
110
134
  return { kind: 'targets', targets, capableTargets, faithfulClaude };
111
135
  };
@@ -119,7 +143,8 @@ export const selectRouteCandidates = (input) => {
119
143
  && account.targetProviderId === target.providerId
120
144
  && account.supportedModelIds.includes(target.modelId)
121
145
  && (!target.transportProviderId
122
- || target.transportProviderId === account.transportProviderId))
146
+ || target.transportProviderId === account.transportProviderId)
147
+ && transportSupportsExecutionFeatures(account.transportProviderId, input.request.requiredExecutionFeatures, account.supportedExecutionFeatures))
123
148
  .map((account) => ({
124
149
  account,
125
150
  target: {