@sentropic/llm-mesh 0.24.1 → 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.
- package/README.md +192 -0
- package/dist/catalog.d.ts +92 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +47 -0
- package/dist/catalog.js.map +1 -1
- package/dist/enrollment/claude-code.d.ts +27 -5
- package/dist/enrollment/claude-code.d.ts.map +1 -1
- package/dist/enrollment/claude-code.js +224 -10
- package/dist/enrollment/claude-code.js.map +1 -1
- package/dist/enrollment/codex.d.ts +7 -0
- package/dist/enrollment/codex.d.ts.map +1 -1
- package/dist/enrollment/codex.js +74 -19
- package/dist/enrollment/codex.js.map +1 -1
- package/dist/enrollment/index.d.ts +1 -1
- package/dist/enrollment/index.d.ts.map +1 -1
- package/dist/enrollment/pkce.js +1 -1
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +51 -4
- package/dist/errors.js.map +1 -1
- package/dist/execution-features.d.ts +34 -0
- package/dist/execution-features.d.ts.map +1 -0
- package/dist/execution-features.js +84 -0
- package/dist/execution-features.js.map +1 -0
- package/dist/generated-model-council.d.ts +2 -2
- package/dist/generated-model-council.d.ts.map +1 -1
- package/dist/generated-model-council.js +5 -1
- package/dist/generated-model-council.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/native-messages.d.ts +130 -0
- package/dist/native-messages.d.ts.map +1 -0
- package/dist/native-messages.js +66 -0
- package/dist/native-messages.js.map +1 -0
- package/dist/providers.d.ts +5 -5
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +12 -5
- package/dist/providers.js.map +1 -1
- package/dist/responses-wire.d.ts +76 -0
- package/dist/responses-wire.d.ts.map +1 -0
- package/dist/responses-wire.js +35 -0
- package/dist/responses-wire.js.map +1 -0
- package/dist/route-attempt.d.ts +4 -0
- package/dist/route-attempt.d.ts.map +1 -1
- package/dist/route-attempt.js +8 -1
- package/dist/route-attempt.js.map +1 -1
- package/dist/route-health.d.ts +11 -0
- package/dist/route-health.d.ts.map +1 -1
- package/dist/route-health.js +32 -0
- package/dist/route-health.js.map +1 -1
- package/dist/route-planner-state.d.ts +33 -2
- package/dist/route-planner-state.d.ts.map +1 -1
- package/dist/route-planner-state.js +20 -1
- package/dist/route-planner-state.js.map +1 -1
- package/dist/route-planner.d.ts +21 -1
- package/dist/route-planner.d.ts.map +1 -1
- package/dist/route-planner.js +112 -33
- package/dist/route-planner.js.map +1 -1
- package/dist/route-quote.d.ts +16 -2
- package/dist/route-quote.d.ts.map +1 -1
- package/dist/route-quote.js +31 -5
- package/dist/route-quote.js.map +1 -1
- package/dist/route-selection.d.ts +13 -0
- package/dist/route-selection.d.ts.map +1 -1
- package/dist/route-selection.js +30 -5
- package/dist/route-selection.js.map +1 -1
- package/dist/routing-contracts.d.ts +42 -3
- package/dist/routing-contracts.d.ts.map +1 -1
- package/dist/routing-targets.d.ts +26 -0
- package/dist/routing-targets.d.ts.map +1 -1
- package/dist/routing-targets.js +96 -23
- package/dist/routing-targets.js.map +1 -1
- package/dist/service/facade.d.ts +3 -0
- package/dist/service/facade.d.ts.map +1 -1
- package/dist/service/facade.js +7 -1
- package/dist/service/facade.js.map +1 -1
- package/dist/service/local-account-transport-service.d.ts +18 -0
- package/dist/service/local-account-transport-service.d.ts.map +1 -1
- package/dist/service/local-account-transport-service.js +284 -46
- package/dist/service/local-account-transport-service.js.map +1 -1
- package/dist/transport/claude-code-runtime-client.d.ts +88 -0
- package/dist/transport/claude-code-runtime-client.d.ts.map +1 -0
- package/dist/transport/claude-code-runtime-client.js +305 -0
- package/dist/transport/claude-code-runtime-client.js.map +1 -0
- package/dist/transport/codex-runtime-client.d.ts.map +1 -1
- package/dist/transport/codex-runtime-client.js +24 -4
- package/dist/transport/codex-runtime-client.js.map +1 -1
- package/dist/transport/codex-runtime-wire.d.ts.map +1 -1
- package/dist/transport/codex-runtime-wire.js +131 -27
- package/dist/transport/codex-runtime-wire.js.map +1 -1
- package/dist/transport/mistral-runtime-client.d.ts.map +1 -1
- package/dist/transport/mistral-runtime-client.js +191 -9
- package/dist/transport/mistral-runtime-client.js.map +1 -1
- package/dist/transport/muse-runtime-client.d.ts.map +1 -1
- package/dist/transport/muse-runtime-client.js +221 -10
- package/dist/transport/muse-runtime-client.js.map +1 -1
- package/package.json +1 -1
package/dist/route-planner.js
CHANGED
|
@@ -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
|
-
|
|
90
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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(
|
|
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(
|
|
156
|
-
...(
|
|
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' && !
|
|
219
|
+
...(strategy.kind === 'round-robin' && !effectiveAffinity ? { roundRobinKey } : {}),
|
|
166
220
|
});
|
|
167
|
-
if (strategy.kind === 'round-robin' && !
|
|
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, {
|
|
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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"}
|
package/dist/route-quote.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/route-quote.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
155
|
-
|
|
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 =
|
|
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) {
|
package/dist/route-quote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-quote.js","sourceRoot":"","sources":["../src/route-quote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACL,iCAAiC,GAClC,MAAM,0BAA0B,CAAC;
|
|
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":"AACA,OAAO,EAA2B,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAwB,KAAK,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AAKjG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACnE;
|
|
1
|
+
{"version":3,"file":"route-selection.d.ts","sourceRoot":"","sources":["../src/route-selection.ts"],"names":[],"mappings":"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"}
|
package/dist/route-selection.js
CHANGED
|
@@ -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] && !
|
|
104
|
-
return {
|
|
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(
|
|
127
|
+
const capableTargets = targets.filter(supportsTarget);
|
|
107
128
|
if (!faithfulClaude && targets.length > 0 && capableTargets.length === 0) {
|
|
108
|
-
return {
|
|
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: {
|