@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
@@ -0,0 +1,304 @@
1
+ // @sentropic/llm-mesh/enrollment/seat-bundle.ts
2
+ //
3
+ // SeatBundleV1: frozen five-CLI seat envelope and source contract.
4
+ // Lot L0a, synthetic first: types plus static validators only.
5
+ // This module performs no home, keyring, network or provider access.
6
+ // Native profile variants stay UNVERIFIED until observed; fixtures are invented.
7
+ export const SEAT_BUNDLE_SCHEMA_VERSION = 1;
8
+ /** GitHub repository-secret snapshot limit; each serialized bundle must fit. */
9
+ export const SEAT_BUNDLE_MAX_BYTES = 48 * 1024;
10
+ /** Package enrollment identity per CLI; agy enrolls as cloud-code. */
11
+ export const SEAT_PACKAGE_PROVIDER_ID = {
12
+ agy: 'cloud-code',
13
+ codex: 'codex',
14
+ vibe: 'mistral-vibe',
15
+ muse: 'muse',
16
+ claude: 'claude-code',
17
+ };
18
+ /** Application receiver tuple for agy; application cloud-code targets gemini and is refused. */
19
+ export const SEAT_AGY_APPLICATION_TUPLE = {
20
+ transportProviderId: 'antigravity',
21
+ targetProviderId: 'cloudcode-pa',
22
+ productAccountSource: 'antigravity',
23
+ };
24
+ /** Channel rank: a bundle claim above the granted channel is an escalation. */
25
+ const AUTHORITY_RANK = { consumer: 0, 'native-store': 1, custodian: 2 };
26
+ /** Refresh-capable key pattern, matched case-insensitively against every key. */
27
+ const REFRESH_KEY_PATTERN = /refresh|session.?token|device.?(code|token)/i;
28
+ const TOP_LEVEL_KEYS = [
29
+ 'identity', 'provenance', 'authority', 'credentialClass',
30
+ 'lifecycle', 'canonical', 'nativeUse', 'meshUse',
31
+ ];
32
+ const IDENTITY_KEYS = [
33
+ 'schemaVersion', 'seatRef', 'refreshFamilyRef', 'ownerScope', 'cli',
34
+ 'packageProviderId', 'issuingClientRef', 'endpointFamily',
35
+ 'credentialFormatVersion', 'nativeCliVersion', 'os',
36
+ ];
37
+ const PROVENANCE_KEYS = ['enrollmentSource', 'accountBinding', 'entitlementClass'];
38
+ const LIFECYCLE_KEYS = [
39
+ 'epoch', 'generation', 'operationId', 'issuedAt',
40
+ 'providerExpiry', 'localExpiryPolicy', 'refreshAuthority',
41
+ ];
42
+ const CANONICAL_KEYS = ['kind', 'materialRef'];
43
+ const PROJECTION_KEYS = ['kind', 'accessRef', 'reason'];
44
+ function fail(code, detail) {
45
+ return { ok: false, code, detail };
46
+ }
47
+ function isRecord(value) {
48
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
49
+ }
50
+ function unknownKey(value, allowed) {
51
+ return Object.keys(value).find((k) => !allowed.includes(k)) ?? null;
52
+ }
53
+ function findRefreshKey(value, depth) {
54
+ if (Array.isArray(value)) {
55
+ for (const item of value) {
56
+ const hit = findRefreshKey(item, depth + 1);
57
+ if (hit)
58
+ return hit;
59
+ }
60
+ return null;
61
+ }
62
+ if (!isRecord(value))
63
+ return null;
64
+ for (const key of Object.keys(value)) {
65
+ if (REFRESH_KEY_PATTERN.test(key))
66
+ return { key, depth };
67
+ const hit = findRefreshKey(value[key], depth + 1);
68
+ if (hit)
69
+ return hit;
70
+ }
71
+ return null;
72
+ }
73
+ function nonEmpty(value) {
74
+ return typeof value === 'string' && value.length > 0;
75
+ }
76
+ function validDate(value) {
77
+ return typeof value === 'string' && !Number.isNaN(Date.parse(value));
78
+ }
79
+ function validInt(value, min) {
80
+ return typeof value === 'number' && Number.isInteger(value) && value >= min;
81
+ }
82
+ /** Structural validation of one bundle; predecessor comparison stays in isStaleGeneration. */
83
+ export function validateSeatBundle(bundle, ctx) {
84
+ let serialized = '';
85
+ try {
86
+ serialized = JSON.stringify(bundle) ?? '';
87
+ }
88
+ catch {
89
+ return fail('schema-mismatch', 'bundle is not JSON-serializable');
90
+ }
91
+ if (new TextEncoder().encode(serialized).length > SEAT_BUNDLE_MAX_BYTES) {
92
+ return fail('size-exceeded', 'bundle exceeds 48 KiB');
93
+ }
94
+ if (!isRecord(bundle))
95
+ return fail('schema-mismatch', 'bundle must be an object');
96
+ const badTop = unknownKey(bundle, TOP_LEVEL_KEYS);
97
+ if (badTop)
98
+ return fail('unknown-field', `unknown top-level field: ${badTop}`);
99
+ const { identity, provenance, authority, credentialClass, lifecycle, canonical, nativeUse, meshUse } = bundle;
100
+ if (!isRecord(identity))
101
+ return fail('schema-mismatch', 'identity must be an object');
102
+ if (!isRecord(provenance))
103
+ return fail('schema-mismatch', 'provenance must be an object');
104
+ if (!isRecord(lifecycle))
105
+ return fail('schema-mismatch', 'lifecycle must be an object');
106
+ if (!isRecord(meshUse))
107
+ return fail('schema-mismatch', 'meshUse must be an object');
108
+ const badIdentity = unknownKey(identity, IDENTITY_KEYS);
109
+ if (badIdentity)
110
+ return fail('unknown-field', `unknown identity field: ${badIdentity}`);
111
+ const badProvenance = unknownKey(provenance, PROVENANCE_KEYS);
112
+ if (badProvenance)
113
+ return fail('unknown-field', `unknown provenance field: ${badProvenance}`);
114
+ const badLifecycle = unknownKey(lifecycle, LIFECYCLE_KEYS);
115
+ if (badLifecycle)
116
+ return fail('unknown-field', `unknown lifecycle field: ${badLifecycle}`);
117
+ if (identity['schemaVersion'] !== SEAT_BUNDLE_SCHEMA_VERSION) {
118
+ return fail('schema-mismatch', 'identity.schemaVersion must be 1');
119
+ }
120
+ const cli = identity['cli'];
121
+ if (cli !== 'agy' && cli !== 'codex' && cli !== 'vibe' && cli !== 'muse' && cli !== 'claude') {
122
+ return fail('client-mismatch', 'identity.cli must be one of the five seat CLIs');
123
+ }
124
+ if (identity['packageProviderId'] !== SEAT_PACKAGE_PROVIDER_ID[cli]) {
125
+ return fail('client-mismatch', `identity.packageProviderId must be ${SEAT_PACKAGE_PROVIDER_ID[cli]}`);
126
+ }
127
+ if (!nonEmpty(identity['issuingClientRef'])) {
128
+ return fail('client-mismatch', 'identity.issuingClientRef must be non-empty');
129
+ }
130
+ if (!nonEmpty(identity['endpointFamily'])) {
131
+ return fail('client-mismatch', 'identity.endpointFamily must be non-empty');
132
+ }
133
+ if (ctx?.issuingClientRef !== undefined && identity['issuingClientRef'] !== ctx.issuingClientRef) {
134
+ return fail('client-mismatch', 'identity.issuingClientRef does not match the expected client');
135
+ }
136
+ if (ctx?.endpointFamily !== undefined && identity['endpointFamily'] !== ctx.endpointFamily) {
137
+ return fail('client-mismatch', 'identity.endpointFamily does not match the expected family');
138
+ }
139
+ if (!nonEmpty(identity['seatRef']))
140
+ return fail('schema-mismatch', 'identity.seatRef must be non-empty');
141
+ if (!nonEmpty(identity['ownerScope']))
142
+ return fail('schema-mismatch', 'identity.ownerScope must be non-empty');
143
+ if (!nonEmpty(identity['credentialFormatVersion'])) {
144
+ return fail('schema-mismatch', 'identity.credentialFormatVersion must be non-empty');
145
+ }
146
+ if (identity['os'] !== undefined &&
147
+ identity['os'] !== 'linux' &&
148
+ identity['os'] !== 'macos' &&
149
+ identity['os'] !== 'windows') {
150
+ return fail('schema-mismatch', 'identity.os must be linux, macos or windows');
151
+ }
152
+ if (ctx?.ownerScope !== undefined && identity['ownerScope'] !== ctx.ownerScope) {
153
+ return fail('owner-mismatch', 'identity.ownerScope does not match the verified owner');
154
+ }
155
+ if (provenance['enrollmentSource'] !== 'cli')
156
+ return fail('schema-mismatch', 'provenance.enrollmentSource must be cli');
157
+ if (!nonEmpty(provenance['accountBinding']))
158
+ return fail('schema-mismatch', 'provenance.accountBinding must be non-empty');
159
+ if (!nonEmpty(provenance['entitlementClass'])) {
160
+ return fail('schema-mismatch', 'provenance.entitlementClass must be non-empty');
161
+ }
162
+ if (!validInt(lifecycle['epoch'], 1))
163
+ return fail('invalid-lifecycle', 'lifecycle.epoch must be an integer >= 1');
164
+ if (!validInt(lifecycle['generation'], 0)) {
165
+ return fail('invalid-lifecycle', 'lifecycle.generation must be an integer >= 0');
166
+ }
167
+ if (!nonEmpty(lifecycle['operationId']))
168
+ return fail('invalid-lifecycle', 'lifecycle.operationId must be non-empty');
169
+ if (!validDate(lifecycle['issuedAt']))
170
+ return fail('invalid-lifecycle', 'lifecycle.issuedAt must be a valid date');
171
+ if (!nonEmpty(lifecycle['localExpiryPolicy'])) {
172
+ return fail('invalid-lifecycle', 'lifecycle.localExpiryPolicy must be non-empty');
173
+ }
174
+ if (lifecycle['refreshAuthority'] !== 'custody' && lifecycle['refreshAuthority'] !== 'none') {
175
+ return fail('invalid-lifecycle', 'lifecycle.refreshAuthority must be custody or none');
176
+ }
177
+ if (lifecycle['providerExpiry'] !== undefined && !validDate(lifecycle['providerExpiry'])) {
178
+ return fail('invalid-lifecycle', 'lifecycle.providerExpiry must be a valid date');
179
+ }
180
+ if (authority !== 'custodian' && authority !== 'consumer' && authority !== 'native-store') {
181
+ return fail('schema-mismatch', 'authority must be custodian, consumer or native-store');
182
+ }
183
+ const effective = resolveEffectiveAuthority(authority, ctx?.trustedAuthority ?? 'consumer');
184
+ if (AUTHORITY_RANK[authority] > AUTHORITY_RANK[effective]) {
185
+ return fail('authority-escalation', 'bundle claims more authority than the channel grants');
186
+ }
187
+ const credClass = credentialClass;
188
+ if (credClass !== 'renewable' && credClass !== 'static-key' && credClass !== 'access-only' && credClass !== 'store-reference') {
189
+ return fail('schema-mismatch', 'credentialClass must be a known class');
190
+ }
191
+ if (credClass === 'static-key' && identity['refreshFamilyRef'] !== undefined) {
192
+ return fail('schema-mismatch', 'a static key carries no refresh family');
193
+ }
194
+ if (credClass !== 'static-key' && !nonEmpty(identity['refreshFamilyRef'])) {
195
+ return fail('schema-mismatch', 'a non-static seat requires refreshFamilyRef');
196
+ }
197
+ if (effective === 'custodian' && credClass === 'renewable' && lifecycle['refreshAuthority'] !== 'custody') {
198
+ return fail('invalid-lifecycle', 'a custodian renewable bundle holds custody refresh authority');
199
+ }
200
+ if (effective !== 'custodian') {
201
+ if (lifecycle['refreshAuthority'] !== 'none') {
202
+ return fail('authority-escalation', 'only the custodian holds refresh authority');
203
+ }
204
+ if (credClass === 'renewable') {
205
+ return fail('authority-escalation', 'only the custodian carries renewable credentials');
206
+ }
207
+ if (credClass === 'store-reference' && effective !== 'native-store') {
208
+ return fail('authority-escalation', 'store references are accepted on the native-store channel only');
209
+ }
210
+ if (canonical !== undefined) {
211
+ return fail('authority-escalation', 'a non-custodian payload cannot carry canonical material');
212
+ }
213
+ }
214
+ for (const [name, projection] of [['nativeUse', nativeUse], ['meshUse', meshUse]]) {
215
+ if (projection === undefined)
216
+ continue;
217
+ if (!isRecord(projection))
218
+ return fail('schema-mismatch', `${name} must be an object`);
219
+ if (projection['kind'] !== 'access' && projection['kind'] !== 'static-key' && projection['kind'] !== 'unavailable') {
220
+ return fail('schema-mismatch', `${name}.kind must be access, static-key or unavailable`);
221
+ }
222
+ if (projection['accessRef'] !== undefined && typeof projection['accessRef'] !== 'string') {
223
+ return fail('schema-mismatch', `${name}.accessRef must be a string`);
224
+ }
225
+ if (projection['reason'] !== undefined && typeof projection['reason'] !== 'string') {
226
+ return fail('schema-mismatch', `${name}.reason must be a string`);
227
+ }
228
+ const hit = findRefreshKey(projection, 0);
229
+ if (hit) {
230
+ return hit.depth === 0
231
+ ? fail('refresh-material-present', `${name} carries refresh material: ${hit.key}`)
232
+ : fail('nested-refresh-field', `${name} hides a nested renewal field: ${hit.key}`);
233
+ }
234
+ const bad = unknownKey(projection, PROJECTION_KEYS);
235
+ if (bad)
236
+ return fail('unknown-field', `unknown ${name} field: ${bad}`);
237
+ }
238
+ if (canonical !== undefined) {
239
+ if (!isRecord(canonical))
240
+ return fail('schema-mismatch', 'canonical must be an object');
241
+ if (canonical['kind'] !== 'renewable-material' && canonical['kind'] !== 'static-key-material') {
242
+ return fail('schema-mismatch', 'canonical.kind must be a known material kind');
243
+ }
244
+ if (!nonEmpty(canonical['materialRef'])) {
245
+ return fail('schema-mismatch', 'canonical.materialRef must be a non-empty string');
246
+ }
247
+ const bad = unknownKey(canonical, CANONICAL_KEYS);
248
+ if (bad)
249
+ return fail('unknown-field', `unknown canonical field: ${bad}`);
250
+ }
251
+ if (ctx?.predecessor !== undefined) {
252
+ const transition = classifyTransition(ctx.predecessor, {
253
+ epoch: lifecycle['epoch'],
254
+ generation: lifecycle['generation'],
255
+ operationId: lifecycle['operationId'],
256
+ });
257
+ if (transition === 'stale')
258
+ return fail('stale-generation', 'incoming tuple is older than current');
259
+ if (transition === 'conflict')
260
+ return fail('generation-conflict', 'same generation with a different operation');
261
+ if (transition === 'epoch-replacement-required') {
262
+ return fail('epoch-replacement-required', 'a new epoch requires the controlled replacement operation');
263
+ }
264
+ if (transition === 'idempotent')
265
+ return { ok: true, bundle: bundle, idempotentReimport: true };
266
+ }
267
+ return { ok: true, bundle: bundle };
268
+ }
269
+ /** Five-way lineage classification against the current tuple. */
270
+ export function classifyTransition(current, incoming) {
271
+ if (incoming.epoch !== current.epoch) {
272
+ return incoming.epoch < current.epoch ? 'stale' : 'epoch-replacement-required';
273
+ }
274
+ if (incoming.generation !== current.generation) {
275
+ return incoming.generation < current.generation ? 'stale' : 'forward';
276
+ }
277
+ return incoming.operationId === current.operationId ? 'idempotent' : 'conflict';
278
+ }
279
+ /** True when the incoming tuple is older than current; same epoch/generation reimports idempotently. */
280
+ export function isStaleGeneration(current, incoming) {
281
+ return classifyTransition({ ...current, operationId: '' }, { ...incoming, operationId: '' }) === 'stale';
282
+ }
283
+ /** True for a same-tuple reimport that must not mutate the receiving account. */
284
+ export function isIdempotentReimport(current, incoming) {
285
+ return classifyTransition(current, incoming) === 'idempotent';
286
+ }
287
+ /** The trusted path authority wins; a JSON field claiming an owner is not authorization. */
288
+ export function resolveEffectiveAuthority(_claimed, trustedPathAuthority) {
289
+ return trustedPathAuthority;
290
+ }
291
+ /** Credential-free receipt; carries metadata only, never credential bytes. */
292
+ export function createReceipt(bundle, outcome, reason, checkedAt) {
293
+ return {
294
+ seatRef: bundle.identity.seatRef,
295
+ cli: bundle.identity.cli,
296
+ epoch: bundle.lifecycle.epoch,
297
+ generation: bundle.lifecycle.generation,
298
+ operationId: bundle.lifecycle.operationId,
299
+ outcome,
300
+ ...(reason !== undefined ? { reason } : {}),
301
+ checkedAt: checkedAt ?? new Date().toISOString(),
302
+ };
303
+ }
304
+ //# sourceMappingURL=seat-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seat-bundle.js","sourceRoot":"","sources":["../../src/enrollment/seat-bundle.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,22 @@
1
1
  import type { ProviderId } from './providers.js';
2
+ /** Trusted transport measurement; never derive numbers from provider prose or caller headers. */
3
+ export interface RequestSizeDetail {
4
+ readonly requestBytes: number;
5
+ readonly limitBytes?: number;
6
+ readonly sizeIsLowerBound?: boolean;
7
+ readonly source: 'gateway' | 'upstream';
8
+ }
9
+ export declare const readRequestSizeDetail: (value: unknown) => RequestSizeDetail | undefined;
10
+ export declare class RequestTooLargeError extends Error {
11
+ readonly status = 413;
12
+ readonly code = "request_too_large";
13
+ readonly requestSize: RequestSizeDetail;
14
+ constructor(detail: RequestSizeDetail);
15
+ }
16
+ /** Bounded cause traversal retains typed size evidence across runtime/SDK wrappers. */
17
+ export declare const requestTooLargeDetail: (error: unknown) => {
18
+ requestSize?: RequestSizeDetail;
19
+ } | undefined;
2
20
  export type ProviderErrorRetryReason = 'rate_limit' | 'timeout' | 'server_error' | 'network' | 'overloaded' | 'unknown';
3
21
  export interface NormalizedProviderError {
4
22
  providerId: ProviderId;
@@ -10,6 +28,7 @@ export interface NormalizedProviderError {
10
28
  statusCode?: number;
11
29
  cause?: unknown;
12
30
  metadata?: Record<string, unknown>;
31
+ requestSize?: RequestSizeDetail;
13
32
  }
14
33
  export interface ProviderErrorNormalizationOptions {
15
34
  defaultMessage?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,wBAAwB,GAChC,YAAY,GACZ,SAAS,GACT,cAAc,GACd,SAAS,GACT,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iCAAiC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AA6CD,eAAO,MAAM,wBAAwB,eACvB,MAAM,GAAG,SAAS,QACxB,MAAM,GAAG,SAAS,YACf,iCAAiC,KACzC,OAYF,CAAC;AAEF,eAAO,MAAM,sBAAsB,eACrB,UAAU,SACf,OAAO,YACL,iCAAiC,KACzC,uBAsCF,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;CACzC;AAED,eAAO,MAAM,qBAAqB,UAAW,OAAO,KAAG,iBAAiB,GAAG,SAS1E,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;gBAC5B,MAAM,EAAE,iBAAiB;CAOtC;AAED,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,UAAW,OAAO,KAAG;IAAE,WAAW,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,SAgB5F,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC,YAAY,GACZ,SAAS,GACT,cAAc,GACd,SAAS,GACT,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,iCAAiC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AA6CD,eAAO,MAAM,wBAAwB,eACvB,MAAM,GAAG,SAAS,QACxB,MAAM,GAAG,SAAS,YACf,iCAAiC,KACzC,OAcF,CAAC;AAEF,eAAO,MAAM,sBAAsB,eACrB,UAAU,SACf,OAAO,YACL,iCAAiC,KACzC,uBAwCF,CAAC"}
package/dist/errors.js CHANGED
@@ -1,3 +1,45 @@
1
+ export const readRequestSizeDetail = (value) => {
2
+ const detail = value;
3
+ if (!detail || typeof detail !== 'object' || !Number.isSafeInteger(detail.requestBytes)
4
+ || detail.requestBytes < 0 || (detail.source !== 'gateway' && detail.source !== 'upstream')
5
+ || (detail.limitBytes !== undefined && (!Number.isSafeInteger(detail.limitBytes) || detail.limitBytes <= 0))
6
+ || (detail.sizeIsLowerBound !== undefined && typeof detail.sizeIsLowerBound !== 'boolean'))
7
+ return undefined;
8
+ return Object.freeze({ requestBytes: detail.requestBytes, source: detail.source,
9
+ ...(detail.limitBytes !== undefined ? { limitBytes: detail.limitBytes } : {}),
10
+ ...(detail.sizeIsLowerBound !== undefined ? { sizeIsLowerBound: detail.sizeIsLowerBound } : {}) });
11
+ };
12
+ export class RequestTooLargeError extends Error {
13
+ status = 413;
14
+ code = 'request_too_large';
15
+ requestSize;
16
+ constructor(detail) {
17
+ super('Request body is too large');
18
+ this.name = 'RequestTooLargeError';
19
+ const safe = readRequestSizeDetail(detail);
20
+ if (!safe)
21
+ throw new TypeError('Invalid request size measurement');
22
+ this.requestSize = safe;
23
+ }
24
+ }
25
+ /** Bounded cause traversal retains typed size evidence across runtime/SDK wrappers. */
26
+ export const requestTooLargeDetail = (error) => {
27
+ let current = error;
28
+ let detected = false;
29
+ let requestSize;
30
+ const seen = new Set();
31
+ for (let depth = 0; depth < 8 && current && typeof current === 'object' && !seen.has(current); depth++) {
32
+ seen.add(current);
33
+ const record = current;
34
+ const metadata = record.metadata;
35
+ requestSize ??= readRequestSizeDetail(record.requestSize) ?? readRequestSizeDetail(metadata?.requestSize);
36
+ detected ||= record.status === 413 || record.statusCode === 413 || record.kind === 'request-too-large'
37
+ || [record.code, record.type].some(value => typeof value === 'string'
38
+ && ['request_too_large', 'request-too-large'].includes(value.toLowerCase()));
39
+ current = record.cause ?? record.error ?? record.response;
40
+ }
41
+ return detected ? { ...(requestSize ? { requestSize } : {}) } : undefined;
42
+ };
1
43
  const defaultRetryableStatusCodes = [408, 409, 425, 429, 500, 502, 503, 504];
2
44
  const defaultRetryableCodes = [
3
45
  'rate_limit',
@@ -37,6 +79,9 @@ const inferRetryReason = (statusCode, code) => {
37
79
  return undefined;
38
80
  };
39
81
  export const isRetryableProviderError = (statusCode, code, options = {}) => {
82
+ if (statusCode === 413 || code?.toLowerCase() === 'request_too_large'
83
+ || code?.toLowerCase() === 'request-too-large')
84
+ return false;
40
85
  const retryableStatusCodes = options.retryableStatusCodes ?? defaultRetryableStatusCodes;
41
86
  const retryableCodes = options.retryableCodes ?? defaultRetryableCodes;
42
87
  const nonRetryableCodes = options.nonRetryableCodes ?? [];
@@ -52,15 +97,16 @@ export const isRetryableProviderError = (statusCode, code, options = {}) => {
52
97
  export const normalizeProviderError = (providerId, error, options = {}) => {
53
98
  const record = asRecord(error);
54
99
  const nested = nestedErrorRecord(record);
55
- const statusCode = readNumber(record, 'statusCode') ||
100
+ const tooLarge = requestTooLargeDetail(error);
101
+ const statusCode = (tooLarge ? 413 : undefined) || readNumber(record, 'statusCode') ||
56
102
  readNumber(record, 'status') ||
57
103
  readNumber(nested, 'statusCode') ||
58
104
  readNumber(nested, 'status');
59
- const code = readString(record, 'code') ||
105
+ const code = (tooLarge ? 'request_too_large' : undefined) || readString(record, 'code') ||
60
106
  readString(record, 'type') ||
61
107
  readString(nested, 'code') ||
62
108
  readString(nested, 'status');
63
- const message = readString(record, 'message') ||
109
+ const message = (tooLarge ? 'Request body is too large' : undefined) || readString(record, 'message') ||
64
110
  readString(nested, 'message') ||
65
111
  (error instanceof Error && error.message) ||
66
112
  options.defaultMessage ||
@@ -77,7 +123,8 @@ export const normalizeProviderError = (providerId, error, options = {}) => {
77
123
  retryable,
78
124
  ...(code ? { code } : {}),
79
125
  ...(retryReason ? { retryReason } : {}),
80
- ...(retryAfterMs ? { retryAfterMs } : {}),
126
+ ...(!tooLarge && retryAfterMs ? { retryAfterMs } : {}),
127
+ ...(tooLarge?.requestSize ? { requestSize: tooLarge.requestSize } : {}),
81
128
  ...(typeof statusCode === 'number' ? { statusCode } : {}),
82
129
  ...(error instanceof Error || record ? { cause: error } : {}),
83
130
  };
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Execution features (spec §16.3): request requirements finer than the
3
+ * existing `requiredCapabilities`, derived by the gateway from validated
4
+ * Responses input — never from a caller-supplied feature list:
5
+ * named/parallel tool control, strict schema, structured output, reasoning
6
+ * controls, native reasoning replay, verbosity and an explicit output
7
+ * ceiling.
8
+ *
9
+ * This module holds capability facts only: the feature taxonomy, the
10
+ * mesh-known per-transport support table and one pure predicate. It copies
11
+ * no route map (keyed by transport, never by model, account or affinity).
12
+ * Unknown support is not support: a transport with no proven declaration
13
+ * for a required feature is ineligible, before acquisition.
14
+ *
15
+ * Two taxonomy items are bounded extensions from pinned CLI captures
16
+ * (spec §16.9): `reasoning-context` (Codex `reasoning.context`, a
17
+ * server-side retention semantic only native Codex execution can honor)
18
+ * and `custom-tools` (Codex freeform tools, carried opaquely for native
19
+ * execution only). Translated adapters never declare them.
20
+ */
21
+ export type ExecutionFeature = 'named-tool-choice' | 'parallel-tool-control' | 'strict-schema' | 'structured-output' | 'reasoning-controls' | 'reasoning-context' | 'custom-tools' | 'native-reasoning-replay' | 'verbosity' | 'explicit-output-ceiling';
22
+ export declare const EXECUTION_FEATURES: readonly ExecutionFeature[];
23
+ /** Mesh-known support for a transport; empty when unknown (fail closed). */
24
+ export declare const declaredExecutionFeatures: (transportProviderId: string) => readonly ExecutionFeature[];
25
+ /**
26
+ * Pure eligibility of one actual model/transport pair. Shared by planning
27
+ * and quoting, including quote identity/revalidation:
28
+ * - no required features: eligible (no behavior change for existing wires);
29
+ * - unpinned transport: kept — the plan-time account check decides;
30
+ * - pinned transport: every required feature must be in the trusted
31
+ * declaration (per-account override when supplied, else the mesh table).
32
+ */
33
+ export declare const transportSupportsExecutionFeatures: (transportProviderId: string | undefined, required: readonly ExecutionFeature[] | undefined, declared?: readonly ExecutionFeature[] | undefined) => boolean;
34
+ //# sourceMappingURL=execution-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-features.d.ts","sourceRoot":"","sources":["../src/execution-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,gBAAgB,GACxB,mBAAmB,GACnB,uBAAuB,GACvB,eAAe,GACf,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,cAAc,GACd,yBAAyB,GACzB,WAAW,GACX,yBAAyB,CAAC;AAE9B,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAWzD,CAAC;AAoCF,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,wBACf,MAAM,KAC1B,SAAS,gBAAgB,EAC6B,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,kCAAkC,wBACxB,MAAM,GAAG,SAAS,YAC7B,SAAS,gBAAgB,EAAE,GAAG,SAAS,aACtC,SAAS,gBAAgB,EAAE,GAAG,SAAS,KACjD,OAOF,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Execution features (spec §16.3): request requirements finer than the
3
+ * existing `requiredCapabilities`, derived by the gateway from validated
4
+ * Responses input — never from a caller-supplied feature list:
5
+ * named/parallel tool control, strict schema, structured output, reasoning
6
+ * controls, native reasoning replay, verbosity and an explicit output
7
+ * ceiling.
8
+ *
9
+ * This module holds capability facts only: the feature taxonomy, the
10
+ * mesh-known per-transport support table and one pure predicate. It copies
11
+ * no route map (keyed by transport, never by model, account or affinity).
12
+ * Unknown support is not support: a transport with no proven declaration
13
+ * for a required feature is ineligible, before acquisition.
14
+ *
15
+ * Two taxonomy items are bounded extensions from pinned CLI captures
16
+ * (spec §16.9): `reasoning-context` (Codex `reasoning.context`, a
17
+ * server-side retention semantic only native Codex execution can honor)
18
+ * and `custom-tools` (Codex freeform tools, carried opaquely for native
19
+ * execution only). Translated adapters never declare them.
20
+ */
21
+ export const EXECUTION_FEATURES = [
22
+ 'named-tool-choice',
23
+ 'parallel-tool-control',
24
+ 'strict-schema',
25
+ 'structured-output',
26
+ 'reasoning-controls',
27
+ 'reasoning-context',
28
+ 'custom-tools',
29
+ 'native-reasoning-replay',
30
+ 'verbosity',
31
+ 'explicit-output-ceiling',
32
+ ];
33
+ /**
34
+ * Mesh-known execution support per account transport. Populated only with
35
+ * proven adapter controls as their fixes land with tests (D16-C); a
36
+ * transport absent here has unknown support and is ineligible for any
37
+ * required feature. Never a model route map — transport keys only.
38
+ *
39
+ * D16-C proofs: Codex projects named choice, parallel control, reasoning
40
+ * (including `reasoning.context`), strict schemas, `text.verbosity`,
41
+ * `prompt_cache_key`, custom tools with their namespace and completed
42
+ * reasoning items natively (it cannot enforce an explicit output ceiling —
43
+ * no `max_output_tokens` slot, spec §16.4). The translated Chat clients
44
+ * project named choice and parallel control with tests; Mistral
45
+ * additionally forwards the Vibe-proven `reasoning_effort` slot. Meta has
46
+ * no proven reasoning slot on the Chat egress (spec §16.4, R5-MAJ-1):
47
+ * unauthenticated probes are auth-first (401 for every variant), Meta 400s
48
+ * unknown params (`max_output_tokens` precedent), and the binary
49
+ * `reasoningEffort` belongs to the native TBH `/responses` transport, not
50
+ * this OpenAI-compat shim — so `muse` declares no `reasoning-controls` and
51
+ * reasoning requests fail closed until a slot is proven by an authenticated
52
+ * probe. `max_tokens` is projected, so `explicit-output-ceiling` holds.
53
+ * Both translated clients forward the validated `strict` flag on function
54
+ * tools (standard OpenAI function shape); a provider that rejects it fails
55
+ * visibly as a provider 400, never as a silent drop.
56
+ */
57
+ const TRANSPORT_EXECUTION_FEATURES = {
58
+ codex: ['named-tool-choice', 'parallel-tool-control', 'reasoning-controls', 'strict-schema',
59
+ 'reasoning-context', 'custom-tools', 'verbosity'],
60
+ muse: ['named-tool-choice', 'parallel-tool-control', 'explicit-output-ceiling',
61
+ 'strict-schema'],
62
+ 'mistral-vibe': ['named-tool-choice', 'parallel-tool-control', 'reasoning-controls', 'strict-schema'],
63
+ };
64
+ /** Mesh-known support for a transport; empty when unknown (fail closed). */
65
+ export const declaredExecutionFeatures = (transportProviderId) => TRANSPORT_EXECUTION_FEATURES[transportProviderId] ?? [];
66
+ /**
67
+ * Pure eligibility of one actual model/transport pair. Shared by planning
68
+ * and quoting, including quote identity/revalidation:
69
+ * - no required features: eligible (no behavior change for existing wires);
70
+ * - unpinned transport: kept — the plan-time account check decides;
71
+ * - pinned transport: every required feature must be in the trusted
72
+ * declaration (per-account override when supplied, else the mesh table).
73
+ */
74
+ export const transportSupportsExecutionFeatures = (transportProviderId, required, declared) => {
75
+ if (!required || required.length === 0)
76
+ return true;
77
+ if (transportProviderId === undefined)
78
+ return true;
79
+ const support = declared
80
+ ?? TRANSPORT_EXECUTION_FEATURES[transportProviderId]
81
+ ?? [];
82
+ return required.every((feature) => support.includes(feature));
83
+ };
84
+ //# sourceMappingURL=execution-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-features.js","sourceRoot":"","sources":["../src/execution-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,mBAAmB;IACnB,uBAAuB;IACvB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,cAAc;IACd,yBAAyB;IACzB,WAAW;IACX,yBAAyB;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,4BAA4B,GAE9B;IACF,KAAK,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,eAAe;QACzF,mBAAmB,EAAE,cAAc,EAAE,WAAW,CAAC;IACnD,IAAI,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,yBAAyB;QAC5E,eAAe,CAAC;IAClB,cAAc,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,eAAe,CAAC;CACtG,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,mBAA2B,EACE,EAAE,CAC/B,4BAA4B,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,mBAAuC,EACvC,QAAiD,EACjD,QAAkD,EACzC,EAAE;IACX,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,mBAAmB,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,OAAO,GAAG,QAAQ;WACnB,4BAA4B,CAAC,mBAAmB,CAAC;WACjD,EAAE,CAAC;IACR,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  export declare const GENERATED_MODEL_COUNCIL_SOURCE: {
2
2
  readonly revision: "2026-10-07.1";
3
- readonly digest: "sha256:d5dddbf432757b74860febd7bd8721d343a08d804b747e09b2d712d56a78da7e";
3
+ readonly digest: "sha256:7b77e4f444f9ee6cfaf69ac320a6ac264b24bc527a518e9d2e795acdccc6814a";
4
4
  readonly expiresAt: "2027-03-03T00:00:00.000Z";
5
5
  readonly reason: "No pinned benchmark evidence authorizes automatic substitution.";
6
6
  readonly reviewer: "GPT-6.1 Sol catalog owner directive";
7
7
  readonly provenance: "feat/llm-mesh-mistral-vibe-glm53 owner task; inherited capabilities unverified; no benchmark evidence";
8
- readonly excludedModelKeys: readonly ["anthropic:claude-fable-5", "anthropic:claude-fable-5-1", "anthropic:claude-opus-4-8", "anthropic:claude-opus-5", "anthropic:claude-sonnet-5", "cohere:command-a-03-2025", "cohere:command-a-reasoning-08-2025", "gcp:anthropic/claude-opus-4-6@gcp", "gcp:anthropic/claude-sonnet-4-6@gcp", "gcp:google/gemini-3.1-flash-lite@gcp", "gcp:google/gemini-3.5-flash@gcp", "gemini:gemini-3.1-flash-lite", "gemini:gemini-3.5-flash", "gemini:gemini-3.7-flash", "gemini:gemini-3.8-flash", "mistral:magistral-medium-2509", "mistral:mistral-large-4", "mistral:mistral-small-2603", "mistral:zai-glm-5-3", "muse:muse-spark-1.3", "muse:muse-spark-1.3-contributor", "openai:gpt-4.1-nano", "openai:gpt-5.4-nano", "openai:gpt-5.5", "openai:gpt-5.6-luna", "openai:gpt-5.6-sol", "openai:gpt-5.6-terra", "openai:gpt-6-astra", "openai:gpt-6-luna", "openai:gpt-6-sol", "openai:gpt-6.1-sol"];
8
+ readonly excludedModelKeys: readonly ["anthropic:claude-fable-5", "anthropic:claude-fable-5-1", "anthropic:claude-opus-4-8", "anthropic:claude-opus-5", "anthropic:claude-sonnet-5", "cohere:command-a-03-2025", "cohere:command-a-reasoning-08-2025", "gcp:anthropic/claude-opus-4-6@gcp", "gcp:anthropic/claude-sonnet-4-6@gcp", "gcp:google/gemini-3.1-flash-lite@gcp", "gcp:google/gemini-3.5-flash@gcp", "gemini:gemini-3.1-flash-lite", "gemini:gemini-3.5-flash", "gemini:gemini-3.7-flash", "gemini:gemini-3.8-flash", "gemini:gemini-4-argon", "mistral:magistral-medium-2509", "mistral:mistral-large-4", "mistral:mistral-medium-3.5", "mistral:mistral-small-2603", "mistral:zai-glm-5-3", "muse:muse-spark-1.3", "muse:muse-spark-1.3-contributor", "muse:muse-wonder-1.0", "muse:muse-wonder-full-1.0", "openai:gpt-4.1-nano", "openai:gpt-5.4-nano", "openai:gpt-5.5", "openai:gpt-5.6-luna", "openai:gpt-5.6-sol", "openai:gpt-5.6-terra", "openai:gpt-6-astra", "openai:gpt-6-luna", "openai:gpt-6-sol", "openai:gpt-6.1-sol"];
9
9
  };
10
10
  //# sourceMappingURL=generated-model-council.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-model-council.d.ts","sourceRoot":"","sources":["../src/generated-model-council.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,8BAA8B;;;;;;;;CAwCjC,CAAC"}
1
+ {"version":3,"file":"generated-model-council.d.ts","sourceRoot":"","sources":["../src/generated-model-council.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,8BAA8B;;;;;;;;CA4CjC,CAAC"}