@oh-my-pi/pi-catalog 18.4.5 → 18.4.8
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/CHANGELOG.md +11 -0
- package/dist/types/types.d.ts +13 -0
- package/package.json +4 -4
- package/src/build.ts +2 -0
- package/src/compat/axes.ts +1 -1
- package/src/compat/resolve.ts +1 -0
- package/src/compat/rules/README.md +4 -2
- package/src/compat/rules/classes/anthropic.kdl +186 -79
- package/src/compat/rules/providers/commandcode.kdl +21 -5
- package/src/compat/rules/runtime/behavior.kdl +21 -4
- package/src/compat/rules.json +1 -1
- package/src/models.json +1 -1
- package/src/types.ts +13 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [18.4.6] - 2026-10-01
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added configurable catalog cache-warming lifetimes for cache-capable Claude models on Amazon Bedrock Converse, Bedrock Runtime, and Mantle, with 5-minute defaults and a 1-hour Converse option where supported.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Fixed forced tool calls for Claude Opus 5.5 and Sonnet 5.5 on Amazon Bedrock Converse.
|
|
14
|
+
- Fixed the thinking-off setting for Command Code models served through the Responses API so they no longer produce reasoning when disabled.
|
|
15
|
+
|
|
5
16
|
## [18.4.5] - 2026-09-30
|
|
6
17
|
|
|
7
18
|
### Added
|
package/dist/types/types.d.ts
CHANGED
|
@@ -651,6 +651,12 @@ export interface BedrockCompat {
|
|
|
651
651
|
* `PI_OPENAI_STREAM_IDLE_TIMEOUT_MS` alias, then the 300s default.
|
|
652
652
|
*/
|
|
653
653
|
streamIdleTimeoutMs?: number;
|
|
654
|
+
/**
|
|
655
|
+
* Whether the model accepts a forced `toolChoice` (`any` / `tool`). Claude
|
|
656
|
+
* Opus/Sonnet 5.5 reject it outright; the request builder downgrades forced
|
|
657
|
+
* choices to `auto` when this is false. Default: true.
|
|
658
|
+
*/
|
|
659
|
+
supportsForcedToolChoice?: boolean;
|
|
654
660
|
}
|
|
655
661
|
/** Fully-resolved Bedrock Converse prompt-cache capabilities, materialized once by `buildModel`. */
|
|
656
662
|
export interface ResolvedBedrockCompat {
|
|
@@ -660,6 +666,7 @@ export interface ResolvedBedrockCompat {
|
|
|
660
666
|
supportsLongPromptCacheRetention: boolean;
|
|
661
667
|
promptCacheMinimumTokens: number;
|
|
662
668
|
promptCacheMaximumCheckpoints: number;
|
|
669
|
+
supportsForcedToolChoice: boolean;
|
|
663
670
|
/**
|
|
664
671
|
* Stream-watchdog idle-timeout fallback in ms for hosts with no keepalive
|
|
665
672
|
* events; 0 disables the idle watchdog. Undefined defers to
|
|
@@ -1194,6 +1201,12 @@ export interface Model<TApi extends Api = Api> {
|
|
|
1194
1201
|
* Custom models and provider overrides opt in via models.yml `promptCache`.
|
|
1195
1202
|
*/
|
|
1196
1203
|
promptCache?: ModelPromptCache;
|
|
1204
|
+
/**
|
|
1205
|
+
* Verbatim configured lifetimes (models.yml, `modelOverrides`, runtime
|
|
1206
|
+
* registrations). `buildModel` applies them over catalog `prompt-cache`
|
|
1207
|
+
* rules on every rebuild; `{}` keeps warming disabled.
|
|
1208
|
+
*/
|
|
1209
|
+
promptCacheConfig?: ModelPromptCache;
|
|
1197
1210
|
/**
|
|
1198
1211
|
* Interpretation of an all-zero token-rate card. Omitted zero-rate cards
|
|
1199
1212
|
* are unknown; any non-zero rate is always treated as fixed pricing.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-my-pi/pi-catalog",
|
|
3
|
-
"version": "18.4.
|
|
3
|
+
"version": "18.4.8",
|
|
4
4
|
"description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -93,12 +93,12 @@
|
|
|
93
93
|
"gen:proto": "bun scripts/generate-protocols.ts"
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
|
-
"@oh-my-pi/omptype": "18.4.
|
|
97
|
-
"@oh-my-pi/pi-utils": "18.4.
|
|
96
|
+
"@oh-my-pi/omptype": "18.4.8",
|
|
97
|
+
"@oh-my-pi/pi-utils": "18.4.8"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
100
|
"@bgotink/kdl": "0.4.0",
|
|
101
|
-
"@oh-my-pi/pi-ai": "18.4.
|
|
101
|
+
"@oh-my-pi/pi-ai": "18.4.8",
|
|
102
102
|
"@types/bun": "^1.3.14"
|
|
103
103
|
},
|
|
104
104
|
"engines": {
|
package/src/build.ts
CHANGED
|
@@ -363,5 +363,7 @@ export function buildModel<TApi extends Api>(spec: ModelSpec<TApi>): Model<TApi>
|
|
|
363
363
|
};
|
|
364
364
|
applyCatalogAssignments(model, policy.catalog);
|
|
365
365
|
applyCatalogCorrections(model, policy.catalog);
|
|
366
|
+
// Configured lifetimes replace catalog lifetimes rather than merging with them.
|
|
367
|
+
if (spec.promptCacheConfig !== undefined) model.promptCache = { ...spec.promptCacheConfig };
|
|
366
368
|
return model;
|
|
367
369
|
}
|
package/src/compat/axes.ts
CHANGED
|
@@ -292,7 +292,7 @@ export const AXES: Readonly<Record<string, AxisDef>> = {
|
|
|
292
292
|
"stream-first-event-timeout-ms": wire("streamFirstEventTimeoutMs", [...OAI, "google"]),
|
|
293
293
|
"stream-idle-timeout-ms": wire("streamIdleTimeoutMs", [...OAI, "anthropic", "bedrock", "google"]),
|
|
294
294
|
"strip-image-input": wire("stripImageInput", [...OAI, "anthropic", "google"]),
|
|
295
|
-
"supports-forced-tool-choice": wire("supportsForcedToolChoice", [...OAI, "anthropic"]),
|
|
295
|
+
"supports-forced-tool-choice": wire("supportsForcedToolChoice", [...OAI, "anthropic", "bedrock"]),
|
|
296
296
|
"supports-sampling-params": wire("supportsSamplingParams", [...OAI, "anthropic"]),
|
|
297
297
|
"thinking-loop-guard": wire("thinkingLoopGuard", [...OAI, "anthropic", "google"], "scalar", [
|
|
298
298
|
"gemini",
|
package/src/compat/resolve.ts
CHANGED
|
@@ -935,6 +935,7 @@ function resolveBedrockPolicy(spec: ModelSpec<"bedrock-converse-stream">, axes:
|
|
|
935
935
|
supportsLongPromptCacheRetention: false,
|
|
936
936
|
promptCacheMinimumTokens: 0,
|
|
937
937
|
promptCacheMaximumCheckpoints: 0,
|
|
938
|
+
supportsForcedToolChoice: true,
|
|
938
939
|
};
|
|
939
940
|
// Reasoning capability is a mechanism gate; adaptive-lineage duration is rule-owned.
|
|
940
941
|
compat.streamIdleTimeoutMs = compatReasoning(spec, axes) ? BEDROCK_REASONING_STREAM_IDLE_TIMEOUT_MS : undefined;
|
|
@@ -183,8 +183,8 @@ provider "openrouter" {
|
|
|
183
183
|
| ---------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
184
184
|
| `class` | `class "id" { ... }` | Exact class ID. At document root it may contain `on`, `on-api`, `family`, `revision`, and `models`. Under `provider` it may contain `family`, `revision`, and `models`. |
|
|
185
185
|
| `provider` | `provider "id" { ... }` | Exact provider ID. It is root-only and may contain `class`, `on-api`, and `models`. |
|
|
186
|
-
| `on` | `on "provider-a" "provider-b" { ... }` | One or more provider IDs, combined as OR. It is allowed
|
|
187
|
-
| `on-api` | `on-api "adapter-a" "adapter-b" { ... }` | One or more request adapter IDs, combined as OR. At document root it may contain `class` and `models`; under a root `class` or `provider` it may contain `family`, `revision`, and `models`. |
|
|
186
|
+
| `on` | `on "provider-a" "provider-b" { ... }` | One or more provider IDs, combined as OR. It is allowed under a root `class`, and may contain `on-api` to conjoin an API scope plus `family`, `revision`, and `models`. |
|
|
187
|
+
| `on-api` | `on-api "adapter-a" "adapter-b" { ... }` | One or more request adapter IDs, combined as OR. At document root it may contain `class` and `models`; under a root `class` (directly or nested inside `on`) or `provider` it may contain `family`, `revision`, and `models`. |
|
|
188
188
|
| `family` | `family "id" { ... }` | Exact classified family ID. It may contain `revision` and `models`. A target with no family does not match. |
|
|
189
189
|
| `revision` | `revision ">=2.5 <4" { ... }` | A non-empty, whitespace-separated conjunction of comparisons. It may contain `models`. A target with no revision does not match. |
|
|
190
190
|
| `models` | `models "id" "vendor/*" { ... }` | One or more alternatives, combined as OR. It may contain only `on-upstream`. `token="name"` matches an ASCII-case-insensitive token bounded by non-alphanumerics. |
|
|
@@ -192,6 +192,8 @@ provider "openrouter" {
|
|
|
192
192
|
|
|
193
193
|
Every selector scope may additionally contain `on-upstream`; it cannot replace an already constrained upstream. Class, provider/`on`, `on-api`, `on-upstream`, and family values are compared exactly and case-sensitively to the structured resolve target. Revision operators are `>=`, `>`, `<=`, `<`, and `=`; operands have one to three dot-separated unsigned 8-bit components, omitted components zero.
|
|
194
194
|
|
|
195
|
+
An `on-api` nested inside `on` under a class requires both the selected provider and request adapter; values within each selector remain alternatives.
|
|
196
|
+
|
|
195
197
|
A `models` string without `*` is an exact, case-sensitive match against the provider-relative model identifier. A string containing `*` is an anchored, ASCII-case-insensitive wildcard match. Prefer taxonomy ranks; retain exact/glob lists only when they isolate the census member set exactly, and keep a `// residue:` comment explaining why ranks do not.
|
|
196
198
|
|
|
197
199
|
`priority=N` is an optional signed integer property on the block that owns axis assignments. Its default is zero. Use it only to resolve an intentional equal-specificity overlap; do not use it to encode declaration order.
|
|
@@ -49,8 +49,9 @@ class "anthropic" {
|
|
|
49
49
|
// Opus 5.5 rejects forced tool selection the way Fable/Mythos do — a
|
|
50
50
|
// `tool_choice` of `tool` or `any` fails the request with 400
|
|
51
51
|
// `invalid_request_error`: `tool_choice: type "tool" and "any" are not
|
|
52
|
-
// supported for this model`.
|
|
53
|
-
// `
|
|
52
|
+
// supported for this model`. This holds on every route, including Bedrock
|
|
53
|
+
// Converse (`toolChoice: {any: {}}`). The transports downgrade the selector
|
|
54
|
+
// to `auto` so the tool stays offered instead of the turn dying.
|
|
54
55
|
//
|
|
55
56
|
// Upper-bounded on purpose: separator-collapsed ids parse their revision
|
|
56
57
|
// as a whole number (`claude-opus-45` is Opus 4.5, revision 45), so an
|
|
@@ -281,27 +282,11 @@ class "anthropic" {
|
|
|
281
282
|
}
|
|
282
283
|
}
|
|
283
284
|
}
|
|
284
|
-
// AWS Bedrock Converse prompt-cache checkpoints, from the AWS model cards
|
|
285
|
-
// (docs.aws.amazon.com/bedrock/latest/userguide/model-cards.html); cache
|
|
286
|
-
// pricing is deliberately not used to infer these request shapes.
|
|
287
285
|
on "amazon-bedrock" {
|
|
286
|
+
// Model metadata applies to every Bedrock request adapter.
|
|
287
|
+
// Upstream metadata is stale for cache pricing and context.
|
|
288
288
|
family "opus" {
|
|
289
|
-
revision ">=4 <4.5" {
|
|
290
|
-
prompt-cache-mode "explicit"
|
|
291
|
-
prompt-cache-minimum-tokens 1024
|
|
292
|
-
prompt-cache-maximum-checkpoints 4
|
|
293
|
-
}
|
|
294
|
-
revision "=4.5" {
|
|
295
|
-
prompt-cache-mode "explicit"
|
|
296
|
-
prompt-cache-minimum-tokens 4096
|
|
297
|
-
prompt-cache-maximum-checkpoints 4
|
|
298
|
-
supports-long-prompt-cache-retention #true
|
|
299
|
-
}
|
|
300
289
|
revision "=4.6" {
|
|
301
|
-
prompt-cache-mode "explicit"
|
|
302
|
-
prompt-cache-minimum-tokens 4096
|
|
303
|
-
prompt-cache-maximum-checkpoints 4
|
|
304
|
-
// Upstream metadata is stale for cache pricing and context.
|
|
305
290
|
cost-patch {
|
|
306
291
|
cache-read 0.5
|
|
307
292
|
cache-write 6.25
|
|
@@ -311,74 +296,196 @@ class "anthropic" {
|
|
|
311
296
|
max-tokens 128000
|
|
312
297
|
}
|
|
313
298
|
}
|
|
314
|
-
revision ">=4.7 <5" {
|
|
315
|
-
prompt-cache-mode "explicit"
|
|
316
|
-
prompt-cache-minimum-tokens 4096
|
|
317
|
-
prompt-cache-maximum-checkpoints 4
|
|
318
|
-
supports-long-prompt-cache-retention #true
|
|
319
|
-
}
|
|
320
|
-
revision ">=5" {
|
|
321
|
-
prompt-cache-mode "explicit"
|
|
322
|
-
prompt-cache-minimum-tokens 512
|
|
323
|
-
prompt-cache-maximum-checkpoints 4
|
|
324
|
-
supports-long-prompt-cache-retention #true
|
|
325
|
-
}
|
|
326
299
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
300
|
+
// AWS Bedrock Converse prompt-cache checkpoints, from the AWS model cards
|
|
301
|
+
// (docs.aws.amazon.com/bedrock/latest/userguide/model-cards.html); cache
|
|
302
|
+
// pricing is deliberately not used to infer these request shapes. Keep the
|
|
303
|
+
// provider and adapter conjunctive so this policy stays on Converse.
|
|
304
|
+
on-api "bedrock-converse-stream" {
|
|
305
|
+
family "opus" {
|
|
306
|
+
revision ">=4 <4.5" {
|
|
307
|
+
prompt-cache-mode "explicit"
|
|
308
|
+
prompt-cache-minimum-tokens 1024
|
|
309
|
+
prompt-cache-maximum-checkpoints 4
|
|
310
|
+
prompt-cache {
|
|
311
|
+
short 300
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
revision "=4.5" {
|
|
315
|
+
prompt-cache-mode "explicit"
|
|
316
|
+
prompt-cache-minimum-tokens 4096
|
|
317
|
+
prompt-cache-maximum-checkpoints 4
|
|
318
|
+
prompt-cache {
|
|
319
|
+
short 300
|
|
320
|
+
long 3600
|
|
321
|
+
}
|
|
322
|
+
supports-long-prompt-cache-retention #true
|
|
323
|
+
}
|
|
324
|
+
revision "=4.6" {
|
|
325
|
+
prompt-cache-mode "explicit"
|
|
326
|
+
prompt-cache-minimum-tokens 4096
|
|
327
|
+
prompt-cache-maximum-checkpoints 4
|
|
328
|
+
prompt-cache {
|
|
329
|
+
short 300
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
revision ">=4.7 <5" {
|
|
333
|
+
prompt-cache-mode "explicit"
|
|
334
|
+
prompt-cache-minimum-tokens 4096
|
|
335
|
+
prompt-cache-maximum-checkpoints 4
|
|
336
|
+
supports-long-prompt-cache-retention #true
|
|
337
|
+
prompt-cache {
|
|
338
|
+
short 300
|
|
339
|
+
long 3600
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
revision ">=5" {
|
|
343
|
+
prompt-cache-mode "explicit"
|
|
344
|
+
prompt-cache-minimum-tokens 512
|
|
345
|
+
prompt-cache-maximum-checkpoints 4
|
|
346
|
+
supports-long-prompt-cache-retention #true
|
|
347
|
+
prompt-cache {
|
|
348
|
+
short 300
|
|
349
|
+
long 3600
|
|
350
|
+
}
|
|
351
|
+
}
|
|
334
352
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
353
|
+
family "sonnet" {
|
|
354
|
+
revision "=3.5" {
|
|
355
|
+
models "*3-5-sonnet-20241022-v2*" {
|
|
356
|
+
prompt-cache-mode "explicit"
|
|
357
|
+
prompt-cache-minimum-tokens 1024
|
|
358
|
+
prompt-cache-maximum-checkpoints 4
|
|
359
|
+
prompt-cache {
|
|
360
|
+
short 300
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
revision "=3.7" {
|
|
365
|
+
prompt-cache-mode "explicit"
|
|
366
|
+
prompt-cache-minimum-tokens 1024
|
|
367
|
+
prompt-cache-maximum-checkpoints 4
|
|
368
|
+
prompt-cache {
|
|
369
|
+
short 300
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
revision ">=4 <4.5" {
|
|
373
|
+
prompt-cache-mode "explicit"
|
|
374
|
+
prompt-cache-minimum-tokens 1024
|
|
375
|
+
prompt-cache-maximum-checkpoints 4
|
|
376
|
+
prompt-cache {
|
|
377
|
+
short 300
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
revision "=4.5" {
|
|
381
|
+
prompt-cache-mode "explicit"
|
|
382
|
+
prompt-cache-minimum-tokens 4096
|
|
383
|
+
prompt-cache-maximum-checkpoints 4
|
|
384
|
+
supports-long-prompt-cache-retention #true
|
|
385
|
+
prompt-cache {
|
|
386
|
+
short 300
|
|
387
|
+
long 3600
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
revision "=4.6" {
|
|
391
|
+
prompt-cache-mode "explicit"
|
|
392
|
+
prompt-cache-minimum-tokens 1024
|
|
393
|
+
prompt-cache-maximum-checkpoints 4
|
|
394
|
+
prompt-cache {
|
|
395
|
+
short 300
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
revision ">=5" {
|
|
399
|
+
prompt-cache-mode "explicit"
|
|
400
|
+
prompt-cache-minimum-tokens 4096
|
|
401
|
+
prompt-cache-maximum-checkpoints 4
|
|
402
|
+
supports-long-prompt-cache-retention #true
|
|
403
|
+
prompt-cache {
|
|
404
|
+
short 300
|
|
405
|
+
long 3600
|
|
406
|
+
}
|
|
407
|
+
}
|
|
339
408
|
}
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
409
|
+
family "haiku" {
|
|
410
|
+
revision "=3.5" {
|
|
411
|
+
prompt-cache-mode "explicit"
|
|
412
|
+
prompt-cache-minimum-tokens 2048
|
|
413
|
+
prompt-cache-maximum-checkpoints 4
|
|
414
|
+
prompt-cache {
|
|
415
|
+
short 300
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
revision ">=4.5" {
|
|
419
|
+
prompt-cache-mode "explicit"
|
|
420
|
+
prompt-cache-minimum-tokens 4096
|
|
421
|
+
prompt-cache-maximum-checkpoints 4
|
|
422
|
+
supports-long-prompt-cache-retention #true
|
|
423
|
+
prompt-cache {
|
|
424
|
+
short 300
|
|
425
|
+
long 3600
|
|
426
|
+
}
|
|
427
|
+
}
|
|
344
428
|
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
429
|
+
family "fable" {
|
|
430
|
+
revision ">=5" {
|
|
431
|
+
prompt-cache-mode "explicit"
|
|
432
|
+
prompt-cache-minimum-tokens 1024
|
|
433
|
+
prompt-cache-maximum-checkpoints 4
|
|
434
|
+
supports-long-prompt-cache-retention #true
|
|
435
|
+
prompt-cache {
|
|
436
|
+
short 300
|
|
437
|
+
long 3600
|
|
438
|
+
}
|
|
439
|
+
}
|
|
350
440
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
// Messages routes on Bedrock Runtime and Mantle use the Anthropic five-minute
|
|
444
|
+
// cache lifetime. Require both the AWS provider and Messages API: model IDs
|
|
445
|
+
// alone do not distinguish Bedrock from gateways or other API lanes.
|
|
446
|
+
on "amazon-bedrock" "bedrock-mantle" {
|
|
447
|
+
on-api "anthropic-messages" {
|
|
448
|
+
family "opus" {
|
|
449
|
+
revision ">=4.7" {
|
|
450
|
+
prompt-cache {
|
|
451
|
+
short 300
|
|
452
|
+
}
|
|
453
|
+
}
|
|
355
454
|
}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
455
|
+
family "sonnet" {
|
|
456
|
+
revision ">=4.6" {
|
|
457
|
+
prompt-cache {
|
|
458
|
+
short 300
|
|
459
|
+
}
|
|
460
|
+
}
|
|
361
461
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
462
|
+
family "haiku" {
|
|
463
|
+
revision ">=4.5" {
|
|
464
|
+
prompt-cache {
|
|
465
|
+
short 300
|
|
466
|
+
}
|
|
467
|
+
}
|
|
368
468
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
469
|
+
family "fable" {
|
|
470
|
+
revision ">=5" {
|
|
471
|
+
prompt-cache {
|
|
472
|
+
short 300
|
|
473
|
+
}
|
|
474
|
+
}
|
|
374
475
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
476
|
+
family "mythos" {
|
|
477
|
+
// The Mythos Preview id has no numeric revision to select.
|
|
478
|
+
models "*mythos-preview*" {
|
|
479
|
+
prompt-cache {
|
|
480
|
+
short 300
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
revision ">=5" {
|
|
485
|
+
prompt-cache {
|
|
486
|
+
short 300
|
|
487
|
+
}
|
|
488
|
+
}
|
|
382
489
|
}
|
|
383
490
|
}
|
|
384
491
|
}
|
|
@@ -54,6 +54,24 @@ provider "commandcode" {
|
|
|
54
54
|
supports-eager-tool-input-streaming #false
|
|
55
55
|
supports-long-cache-retention #false
|
|
56
56
|
}
|
|
57
|
+
// Endpoint contract for every id `api-routes provider="commandcode"` sends to
|
|
58
|
+
// Responses. Responses accepts `reasoning.effort: "none"` while chat
|
|
59
|
+
// completions rejects it (low|medium|high|xhigh|max only), so thinking-off
|
|
60
|
+
// disables reasoning instead of clamping to the lowest effort. Ids without
|
|
61
|
+
// an effort ladder stay inert through provider-level
|
|
62
|
+
// `supports-reasoning-effort #false`. The Responses endpoint also rejects an
|
|
63
|
+
// object `tool_choice` (verified 2026-09-29), so named choices degrade to
|
|
64
|
+
// `"required"`.
|
|
65
|
+
on-api "openai-responses" {
|
|
66
|
+
reasoning-disable-mode "none-effort"
|
|
67
|
+
supports-named-tool-choice #false
|
|
68
|
+
}
|
|
69
|
+
// First-party OpenAI grants `none` only to the 5.6 generation
|
|
70
|
+
// (`providers/openai.kdl`); the gateway may forward `reasoning.effort`
|
|
71
|
+
// unchanged, so the other GPT ids keep the first-party lowest-effort off.
|
|
72
|
+
models "gpt-5.3-codex" "gpt-5.4" "gpt-5.4-mini" "gpt-5.5" "gpt-6-astra" "gpt-6-luna" "gpt-6-sol" {
|
|
73
|
+
reasoning-disable-mode "lowest-effort"
|
|
74
|
+
}
|
|
57
75
|
models "typesafe/jev" {
|
|
58
76
|
kind "judge"
|
|
59
77
|
}
|
|
@@ -154,15 +172,13 @@ provider "commandcode" {
|
|
|
154
172
|
max-tokens 65536
|
|
155
173
|
}
|
|
156
174
|
}
|
|
157
|
-
// Command Code's Responses endpoint
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
// degrade to `"required"`. Hosted web search still works with a string `tool_choice`.
|
|
175
|
+
// Command Code's Responses endpoint returns no bytes from `image_generation`
|
|
176
|
+
// (verified 2026-09-29), so the openai class's hosted-image and image-model
|
|
177
|
+
// grants do not apply. Hosted web search still works with a string `tool_choice`.
|
|
161
178
|
models "gpt-5.3-codex" "gpt-5.4" "gpt-5.4-mini" "gpt-5.5" "gpt-5.6-luna" "gpt-5.6-sol" \
|
|
162
179
|
"gpt-5.6-terra" "gpt-6-astra" "gpt-6-luna" "gpt-6-sol" {
|
|
163
180
|
hosted-image #false
|
|
164
181
|
image-model #false
|
|
165
|
-
supports-named-tool-choice #false
|
|
166
182
|
}
|
|
167
183
|
// ---------------------------------------------------------------------------
|
|
168
184
|
// This table prices every model id that GET /provider/v1/models serves.
|
|
@@ -212,14 +212,31 @@ behavior {
|
|
|
212
212
|
route "openai-responses" prefix="grok-4." prefix="gpt-5" prefix="gpt-6" prefix="oswe" prefix="mai-"
|
|
213
213
|
}
|
|
214
214
|
// Command Code serves Claude ids through its Anthropic-compatible Messages
|
|
215
|
-
// endpoint
|
|
216
|
-
// `
|
|
217
|
-
//
|
|
215
|
+
// endpoint and everything else through chat completions or Responses
|
|
216
|
+
// (`supported_endpoints` on /provider/v1/models). Chat completions rejects
|
|
217
|
+
// `reasoning_effort: "none"` (low|medium|high|xhigh|max only), while
|
|
218
|
+
// Responses accepts `reasoning.effort: "none"`. Every id with a reviewed
|
|
219
|
+
// effort ladder that lists `/responses` therefore rides Responses, so
|
|
220
|
+
// thinking-off actually disables reasoning instead of clamping to the
|
|
221
|
+
// lowest effort. Ladder ids without `/responses` (deepseek-v4-flash-fast,
|
|
222
|
+
// gemini-3.7-flash, Qwen3.8-Flash, Qwen3.8-Max-0902, hy4-preview,
|
|
223
|
+
// space-bunny-alpha), the Qwen3.8 ids (chat already disables them through
|
|
224
|
+
// `enable_thinking: false`), and non-reasoning ids stay on chat completions.
|
|
218
225
|
api-routes provider="commandcode" default="openai-completions" {
|
|
219
226
|
route "anthropic-messages" prefix="claude-"
|
|
220
227
|
route "openai-responses" exact="gpt-5.3-codex" exact="gpt-5.4" exact="gpt-5.4-mini" exact="gpt-5.5" \
|
|
221
228
|
exact="gpt-5.6-luna" exact="gpt-5.6-sol" exact="gpt-5.6-terra" exact="gpt-6-astra" \
|
|
222
|
-
exact="gpt-6-luna" exact="gpt-6-sol"
|
|
229
|
+
exact="gpt-6-luna" exact="gpt-6-sol" \
|
|
230
|
+
exact="deepseek/deepseek-v4-flash" exact="deepseek/deepseek-v4-flash-vision-exp" \
|
|
231
|
+
exact="deepseek/deepseek-v4-pro" exact="deepseek/deepseek-v4.1-flash" \
|
|
232
|
+
exact="deepseek/deepseek-v4.1-flash-fast" exact="moonshotai/Kimi-K3" \
|
|
233
|
+
exact="z-ai/glm-5.3-flash" exact="z-ai/glm-5.3-flashx" exact="zai-org/GLM-5.2" \
|
|
234
|
+
exact="zai-org/GLM-5.3" exact="google/gemini-3.1-flash-lite" exact="google/gemini-3.5-flash" \
|
|
235
|
+
exact="google/gemini-3.5-flash-lite" exact="google/gemini-3.6-flash" \
|
|
236
|
+
exact="google/gemini-3.8-flash" exact="MiniMaxAI/MiniMax-M3" exact="stepfun/Step-5-Preview" \
|
|
237
|
+
exact="xai/grok-4.5" exact="xai/grok-4.6" exact="xai/grok-4.7" exact="meta/muse-spark-1.1" \
|
|
238
|
+
exact="meta/muse-spark-1.2" exact="meta/muse-spark-1.2-contributor" exact="meta/muse-spark-1.3" \
|
|
239
|
+
exact="meta/muse-spark-1.3-contributor" exact="stealth/pixel-canary" exact="sakana/fugu-ultra"
|
|
223
240
|
}
|
|
224
241
|
// ZenMux fronts Anthropic ids on a dedicated Messages endpoint; every
|
|
225
242
|
// other namespace stays on chat completions.
|