@oh-my-pi/pi-catalog 17.2.5 → 17.2.7
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 +17 -0
- package/dist/types/provider-models/descriptor-types.d.ts +2 -0
- package/dist/types/provider-models/descriptors.d.ts +6 -0
- package/dist/types/provider-models/openai-compat.d.ts +7 -0
- package/package.json +4 -4
- package/src/compat/openai.ts +22 -3
- package/src/discovery/antigravity.ts +1 -1
- package/src/discovery/codex.ts +1 -1
- package/src/discovery/cursor.ts +1 -1
- package/src/discovery/gemini.ts +1 -1
- package/src/discovery/openai-compatible.ts +1 -1
- package/src/models.json +151 -149
- package/src/provider-models/descriptor-types.ts +7 -1
- package/src/provider-models/descriptors.ts +8 -0
- package/src/provider-models/openai-compat.ts +147 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [17.2.7] - 2026-08-03
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Fixed an issue where setting `thinking-level: off` failed to disable reasoning on direct DeepSeek V4 requests.
|
|
10
|
+
|
|
11
|
+
## [17.2.6] - 2026-08-03
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Added the `bedrock-mantle` provider with authenticated model discovery for OpenAI GPT-5.4, GPT-5.5, and GPT-5.6 models (including Luna and Terra variants with corrected pricing) served through Amazon Bedrock's Responses endpoint.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Fixed dynamic discovery for the `deepseek-v4` model family (such as `deepseek-v4-flash-0731`) under `alibaba-token-plan` missing reasoning configuration and maximum thinking effort.
|
|
20
|
+
- Fixed GitHub Copilot dynamic discovery retaining stale bundled prices for default-context models instead of using the provider's reported default-tier prices.
|
|
21
|
+
|
|
5
22
|
## [17.2.5] - 2026-08-03
|
|
6
23
|
|
|
7
24
|
### Fixed
|
|
@@ -5,6 +5,8 @@ export type ModelManagerConfig = {
|
|
|
5
5
|
apiKey?: string;
|
|
6
6
|
baseUrl?: string;
|
|
7
7
|
fetch?: FetchImpl;
|
|
8
|
+
/** The supplied fetch already applies provider-specific authentication. */
|
|
9
|
+
authenticated?: boolean;
|
|
8
10
|
};
|
|
9
11
|
/** Catalog discovery configuration for providers that support endpoint-based model listing. */
|
|
10
12
|
export interface CatalogDiscoveryConfig {
|
|
@@ -53,6 +53,12 @@ export declare const CATALOG_PROVIDERS: readonly [{
|
|
|
53
53
|
}, {
|
|
54
54
|
readonly id: "amazon-bedrock";
|
|
55
55
|
readonly defaultModel: "us.anthropic.claude-opus-4-8";
|
|
56
|
+
}, {
|
|
57
|
+
readonly id: "bedrock-mantle";
|
|
58
|
+
readonly defaultModel: "openai.gpt-5.6-terra";
|
|
59
|
+
readonly envVars: readonly ["AWS_BEARER_TOKEN_BEDROCK"];
|
|
60
|
+
readonly createModelManagerOptions: (config: ModelManagerConfig) => import("../index.js").ModelManagerOptions<"openai-responses", unknown>;
|
|
61
|
+
readonly dynamicModelsAuthoritative: true;
|
|
56
62
|
}, {
|
|
57
63
|
readonly id: "anthropic";
|
|
58
64
|
readonly defaultModel: "claude-opus-4-8";
|
|
@@ -2,6 +2,7 @@ import type { ModelManagerOptions } from "../model-manager.js";
|
|
|
2
2
|
import { getBundledModels } from "../models.js";
|
|
3
3
|
import type { Api, FetchImpl, ModelSpec, Provider } from "../types.js";
|
|
4
4
|
import { ALIBABA_TOKEN_PLAN_BASE_URL } from "../wire/alibaba-token-plan.js";
|
|
5
|
+
import type { ModelManagerConfig } from "./descriptor-types.js";
|
|
5
6
|
export interface ModelsDevModel {
|
|
6
7
|
id?: string;
|
|
7
8
|
name?: string;
|
|
@@ -424,6 +425,12 @@ export interface CoreWeaveModelManagerConfig {
|
|
|
424
425
|
}
|
|
425
426
|
export declare function coreWeaveModelManagerOptions(config?: CoreWeaveModelManagerConfig): ModelManagerOptions<"openai-completions">;
|
|
426
427
|
export declare const META_MUSE_STATIC_MODELS: readonly ModelSpec<"openai-responses">[];
|
|
428
|
+
/**
|
|
429
|
+
* OpenAI frontier models served exclusively through Bedrock Mantle's Responses
|
|
430
|
+
* endpoint. Pricing is per million tokens from the Amazon Bedrock pricing page.
|
|
431
|
+
*/
|
|
432
|
+
export declare const BEDROCK_MANTLE_STATIC_MODELS: readonly ModelSpec<"openai-responses">[];
|
|
433
|
+
export declare function bedrockMantleModelManagerOptions(config?: ModelManagerConfig): ModelManagerOptions<"openai-responses">;
|
|
427
434
|
export interface MetaModelManagerConfig {
|
|
428
435
|
apiKey?: string;
|
|
429
436
|
baseUrl?: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oh-my-pi/pi-catalog",
|
|
4
|
-
"version": "17.2.
|
|
4
|
+
"version": "17.2.7",
|
|
5
5
|
"description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
6
6
|
"homepage": "https://omp.sh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@bufbuild/protobuf": "^2.12.1",
|
|
38
|
-
"@oh-my-pi/
|
|
39
|
-
"
|
|
38
|
+
"@oh-my-pi/omptype": "17.2.7",
|
|
39
|
+
"@oh-my-pi/pi-utils": "17.2.7",
|
|
40
40
|
"zod": "^4"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@oh-my-pi/pi-ai": "17.2.
|
|
43
|
+
"@oh-my-pi/pi-ai": "17.2.7",
|
|
44
44
|
"@types/bun": "^1.3.14"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|
package/src/compat/openai.ts
CHANGED
|
@@ -583,7 +583,7 @@ export function buildOpenAICompat(spec: ModelSpec<"openai-completions">): Resolv
|
|
|
583
583
|
wireModelIdMode,
|
|
584
584
|
isVercelGatewayHost: isVercelGateway,
|
|
585
585
|
supportsStrictMode: detectStrictModeSupport(provider, baseUrl),
|
|
586
|
-
extraBody:
|
|
586
|
+
extraBody: undefined,
|
|
587
587
|
toolStrictMode: isCerebras ? "all_strict" : "mixed",
|
|
588
588
|
// Kimi-family ids trigger MFJS on any host, not just native base URLs:
|
|
589
589
|
// proxies (OpenRouter, custom gateways) forward `tools.function.parameters`
|
|
@@ -604,10 +604,24 @@ export function buildOpenAICompat(spec: ModelSpec<"openai-completions">): Resolv
|
|
|
604
604
|
};
|
|
605
605
|
|
|
606
606
|
applyCompatOverrides(compat, spec.compat);
|
|
607
|
+
const deepseekThinking = compat.extraBody?.thinking;
|
|
608
|
+
if (
|
|
609
|
+
isDirectDeepseekReasoning &&
|
|
610
|
+
typeof deepseekThinking === "object" &&
|
|
611
|
+
deepseekThinking !== null &&
|
|
612
|
+
"type" in deepseekThinking &&
|
|
613
|
+
deepseekThinking.type === "enabled"
|
|
614
|
+
) {
|
|
615
|
+
const extraBody = { ...compat.extraBody };
|
|
616
|
+
delete extraBody.thinking;
|
|
617
|
+
compat.extraBody = Object.keys(extraBody).length > 0 ? extraBody : undefined;
|
|
618
|
+
}
|
|
607
619
|
if (spec.compat?.reasoningDisableMode === undefined) {
|
|
608
620
|
compat.reasoningDisableMode = requiresEnabledThinking
|
|
609
621
|
? "omit"
|
|
610
|
-
:
|
|
622
|
+
: isDirectDeepseekReasoning
|
|
623
|
+
? "zai-thinking-disabled"
|
|
624
|
+
: resolveReasoningDisableMode(compat.thinkingFormat);
|
|
611
625
|
}
|
|
612
626
|
if (spec.compat?.omitReasoningEffort === undefined && !compat.supportsReasoningEffort) {
|
|
613
627
|
compat.omitReasoningEffort = true;
|
|
@@ -615,7 +629,12 @@ export function buildOpenAICompat(spec: ModelSpec<"openai-completions">): Resolv
|
|
|
615
629
|
mergeModelReasoningEffortMap(compat, spec.id, isMimoReasoningEffortModel);
|
|
616
630
|
|
|
617
631
|
const whenThinkingPolicy =
|
|
618
|
-
spec.compat?.whenThinking ??
|
|
632
|
+
spec.compat?.whenThinking ??
|
|
633
|
+
(isDirectDeepseekReasoning
|
|
634
|
+
? { extraBody: { ...compat.extraBody, thinking: { type: "enabled" } } }
|
|
635
|
+
: isOpenCodeProvider && spec.reasoning
|
|
636
|
+
? OPENCODE_WHEN_THINKING
|
|
637
|
+
: undefined);
|
|
619
638
|
if (whenThinkingPolicy) {
|
|
620
639
|
const variant: ResolvedOpenAICompat = { ...compat };
|
|
621
640
|
applyCompatOverrides(variant, whenThinkingPolicy);
|
package/src/discovery/codex.ts
CHANGED
package/src/discovery/cursor.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as http2 from "node:http2";
|
|
2
2
|
import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
3
|
-
import { type } from "
|
|
3
|
+
import { type } from "@oh-my-pi/omptype";
|
|
4
4
|
import { isKimiK3ModelId } from "../identity";
|
|
5
5
|
import { bareModelId, parseGlmModel, semverGte } from "../identity/classify";
|
|
6
6
|
import { getBundledModels } from "../models";
|
package/src/discovery/gemini.ts
CHANGED
package/src/models.json
CHANGED
|
@@ -10186,155 +10186,6 @@
|
|
|
10186
10186
|
]
|
|
10187
10187
|
}
|
|
10188
10188
|
},
|
|
10189
|
-
"openai.gpt-5.4": {
|
|
10190
|
-
"id": "openai.gpt-5.4",
|
|
10191
|
-
"name": "GPT-5.4",
|
|
10192
|
-
"api": "bedrock-converse-stream",
|
|
10193
|
-
"provider": "amazon-bedrock",
|
|
10194
|
-
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
|
|
10195
|
-
"reasoning": true,
|
|
10196
|
-
"input": [
|
|
10197
|
-
"text",
|
|
10198
|
-
"image"
|
|
10199
|
-
],
|
|
10200
|
-
"cost": {
|
|
10201
|
-
"input": 2.75,
|
|
10202
|
-
"output": 16.5,
|
|
10203
|
-
"cacheRead": 0.275,
|
|
10204
|
-
"cacheWrite": 0
|
|
10205
|
-
},
|
|
10206
|
-
"contextWindow": 272000,
|
|
10207
|
-
"maxTokens": 128000,
|
|
10208
|
-
"thinking": {
|
|
10209
|
-
"mode": "budget",
|
|
10210
|
-
"efforts": [
|
|
10211
|
-
"low",
|
|
10212
|
-
"medium",
|
|
10213
|
-
"high",
|
|
10214
|
-
"xhigh"
|
|
10215
|
-
]
|
|
10216
|
-
}
|
|
10217
|
-
},
|
|
10218
|
-
"openai.gpt-5.5": {
|
|
10219
|
-
"id": "openai.gpt-5.5",
|
|
10220
|
-
"name": "GPT-5.5",
|
|
10221
|
-
"api": "bedrock-converse-stream",
|
|
10222
|
-
"provider": "amazon-bedrock",
|
|
10223
|
-
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
|
|
10224
|
-
"reasoning": true,
|
|
10225
|
-
"input": [
|
|
10226
|
-
"text",
|
|
10227
|
-
"image"
|
|
10228
|
-
],
|
|
10229
|
-
"cost": {
|
|
10230
|
-
"input": 5.5,
|
|
10231
|
-
"output": 33,
|
|
10232
|
-
"cacheRead": 0.55,
|
|
10233
|
-
"cacheWrite": 0
|
|
10234
|
-
},
|
|
10235
|
-
"contextWindow": 272000,
|
|
10236
|
-
"maxTokens": 128000,
|
|
10237
|
-
"thinking": {
|
|
10238
|
-
"mode": "budget",
|
|
10239
|
-
"efforts": [
|
|
10240
|
-
"low",
|
|
10241
|
-
"medium",
|
|
10242
|
-
"high",
|
|
10243
|
-
"xhigh"
|
|
10244
|
-
]
|
|
10245
|
-
},
|
|
10246
|
-
"contextPromotionTarget": "amazon-bedrock/openai.gpt-5.4"
|
|
10247
|
-
},
|
|
10248
|
-
"openai.gpt-5.6-luna": {
|
|
10249
|
-
"id": "openai.gpt-5.6-luna",
|
|
10250
|
-
"name": "GPT-5.6 Luna",
|
|
10251
|
-
"api": "bedrock-converse-stream",
|
|
10252
|
-
"provider": "amazon-bedrock",
|
|
10253
|
-
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
|
|
10254
|
-
"reasoning": true,
|
|
10255
|
-
"input": [
|
|
10256
|
-
"text",
|
|
10257
|
-
"image"
|
|
10258
|
-
],
|
|
10259
|
-
"cost": {
|
|
10260
|
-
"input": 0.22,
|
|
10261
|
-
"output": 1.32,
|
|
10262
|
-
"cacheRead": 0.022,
|
|
10263
|
-
"cacheWrite": 0.275
|
|
10264
|
-
},
|
|
10265
|
-
"contextWindow": 272000,
|
|
10266
|
-
"maxTokens": 128000,
|
|
10267
|
-
"thinking": {
|
|
10268
|
-
"mode": "budget",
|
|
10269
|
-
"efforts": [
|
|
10270
|
-
"low",
|
|
10271
|
-
"medium",
|
|
10272
|
-
"high",
|
|
10273
|
-
"xhigh",
|
|
10274
|
-
"max"
|
|
10275
|
-
]
|
|
10276
|
-
}
|
|
10277
|
-
},
|
|
10278
|
-
"openai.gpt-5.6-sol": {
|
|
10279
|
-
"id": "openai.gpt-5.6-sol",
|
|
10280
|
-
"name": "GPT-5.6 Sol",
|
|
10281
|
-
"api": "bedrock-converse-stream",
|
|
10282
|
-
"provider": "amazon-bedrock",
|
|
10283
|
-
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
|
|
10284
|
-
"reasoning": true,
|
|
10285
|
-
"input": [
|
|
10286
|
-
"text",
|
|
10287
|
-
"image"
|
|
10288
|
-
],
|
|
10289
|
-
"cost": {
|
|
10290
|
-
"input": 5.5,
|
|
10291
|
-
"output": 33,
|
|
10292
|
-
"cacheRead": 0.55,
|
|
10293
|
-
"cacheWrite": 6.88
|
|
10294
|
-
},
|
|
10295
|
-
"contextWindow": 272000,
|
|
10296
|
-
"maxTokens": 128000,
|
|
10297
|
-
"thinking": {
|
|
10298
|
-
"mode": "budget",
|
|
10299
|
-
"efforts": [
|
|
10300
|
-
"low",
|
|
10301
|
-
"medium",
|
|
10302
|
-
"high",
|
|
10303
|
-
"xhigh",
|
|
10304
|
-
"max"
|
|
10305
|
-
]
|
|
10306
|
-
}
|
|
10307
|
-
},
|
|
10308
|
-
"openai.gpt-5.6-terra": {
|
|
10309
|
-
"id": "openai.gpt-5.6-terra",
|
|
10310
|
-
"name": "GPT-5.6 Terra",
|
|
10311
|
-
"api": "bedrock-converse-stream",
|
|
10312
|
-
"provider": "amazon-bedrock",
|
|
10313
|
-
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
|
|
10314
|
-
"reasoning": true,
|
|
10315
|
-
"input": [
|
|
10316
|
-
"text",
|
|
10317
|
-
"image"
|
|
10318
|
-
],
|
|
10319
|
-
"cost": {
|
|
10320
|
-
"input": 2.2,
|
|
10321
|
-
"output": 13.2,
|
|
10322
|
-
"cacheRead": 0.22,
|
|
10323
|
-
"cacheWrite": 2.75
|
|
10324
|
-
},
|
|
10325
|
-
"contextWindow": 272000,
|
|
10326
|
-
"maxTokens": 128000,
|
|
10327
|
-
"thinking": {
|
|
10328
|
-
"mode": "budget",
|
|
10329
|
-
"efforts": [
|
|
10330
|
-
"low",
|
|
10331
|
-
"medium",
|
|
10332
|
-
"high",
|
|
10333
|
-
"xhigh",
|
|
10334
|
-
"max"
|
|
10335
|
-
]
|
|
10336
|
-
}
|
|
10337
|
-
},
|
|
10338
10189
|
"openai.gpt-oss-120b": {
|
|
10339
10190
|
"id": "openai.gpt-oss-120b",
|
|
10340
10191
|
"name": "gpt-oss-120b",
|
|
@@ -13666,6 +13517,157 @@
|
|
|
13666
13517
|
"supportsComputerUseConfig": false
|
|
13667
13518
|
}
|
|
13668
13519
|
},
|
|
13520
|
+
"bedrock-mantle": {
|
|
13521
|
+
"openai.gpt-5.4": {
|
|
13522
|
+
"id": "openai.gpt-5.4",
|
|
13523
|
+
"name": "GPT-5.4",
|
|
13524
|
+
"api": "openai-responses",
|
|
13525
|
+
"provider": "bedrock-mantle",
|
|
13526
|
+
"baseUrl": "https://bedrock-mantle.{region}.api.aws/openai/v1",
|
|
13527
|
+
"reasoning": true,
|
|
13528
|
+
"input": [
|
|
13529
|
+
"text",
|
|
13530
|
+
"image"
|
|
13531
|
+
],
|
|
13532
|
+
"cost": {
|
|
13533
|
+
"input": 2.75,
|
|
13534
|
+
"output": 16.5,
|
|
13535
|
+
"cacheRead": 0.275,
|
|
13536
|
+
"cacheWrite": 0
|
|
13537
|
+
},
|
|
13538
|
+
"contextWindow": 272000,
|
|
13539
|
+
"maxTokens": 128000,
|
|
13540
|
+
"thinking": {
|
|
13541
|
+
"mode": "effort",
|
|
13542
|
+
"efforts": [
|
|
13543
|
+
"low",
|
|
13544
|
+
"medium",
|
|
13545
|
+
"high",
|
|
13546
|
+
"xhigh"
|
|
13547
|
+
]
|
|
13548
|
+
}
|
|
13549
|
+
},
|
|
13550
|
+
"openai.gpt-5.5": {
|
|
13551
|
+
"id": "openai.gpt-5.5",
|
|
13552
|
+
"name": "GPT-5.5",
|
|
13553
|
+
"api": "openai-responses",
|
|
13554
|
+
"provider": "bedrock-mantle",
|
|
13555
|
+
"baseUrl": "https://bedrock-mantle.{region}.api.aws/openai/v1",
|
|
13556
|
+
"reasoning": true,
|
|
13557
|
+
"input": [
|
|
13558
|
+
"text",
|
|
13559
|
+
"image"
|
|
13560
|
+
],
|
|
13561
|
+
"cost": {
|
|
13562
|
+
"input": 5.5,
|
|
13563
|
+
"output": 33,
|
|
13564
|
+
"cacheRead": 0.55,
|
|
13565
|
+
"cacheWrite": 0
|
|
13566
|
+
},
|
|
13567
|
+
"contextWindow": 272000,
|
|
13568
|
+
"maxTokens": 128000,
|
|
13569
|
+
"thinking": {
|
|
13570
|
+
"mode": "effort",
|
|
13571
|
+
"efforts": [
|
|
13572
|
+
"low",
|
|
13573
|
+
"medium",
|
|
13574
|
+
"high",
|
|
13575
|
+
"xhigh"
|
|
13576
|
+
]
|
|
13577
|
+
},
|
|
13578
|
+
"contextPromotionTarget": "bedrock-mantle/openai.gpt-5.4"
|
|
13579
|
+
},
|
|
13580
|
+
"openai.gpt-5.6-luna": {
|
|
13581
|
+
"id": "openai.gpt-5.6-luna",
|
|
13582
|
+
"name": "GPT-5.6 Luna",
|
|
13583
|
+
"api": "openai-responses",
|
|
13584
|
+
"provider": "bedrock-mantle",
|
|
13585
|
+
"baseUrl": "https://bedrock-mantle.{region}.api.aws/openai/v1",
|
|
13586
|
+
"reasoning": true,
|
|
13587
|
+
"input": [
|
|
13588
|
+
"text",
|
|
13589
|
+
"image"
|
|
13590
|
+
],
|
|
13591
|
+
"cost": {
|
|
13592
|
+
"input": 0.22,
|
|
13593
|
+
"output": 1.32,
|
|
13594
|
+
"cacheRead": 0.022,
|
|
13595
|
+
"cacheWrite": 0.275
|
|
13596
|
+
},
|
|
13597
|
+
"contextWindow": 272000,
|
|
13598
|
+
"maxTokens": 128000,
|
|
13599
|
+
"thinking": {
|
|
13600
|
+
"mode": "effort",
|
|
13601
|
+
"efforts": [
|
|
13602
|
+
"low",
|
|
13603
|
+
"medium",
|
|
13604
|
+
"high",
|
|
13605
|
+
"xhigh",
|
|
13606
|
+
"max"
|
|
13607
|
+
]
|
|
13608
|
+
}
|
|
13609
|
+
},
|
|
13610
|
+
"openai.gpt-5.6-sol": {
|
|
13611
|
+
"id": "openai.gpt-5.6-sol",
|
|
13612
|
+
"name": "GPT-5.6 Sol",
|
|
13613
|
+
"api": "openai-responses",
|
|
13614
|
+
"provider": "bedrock-mantle",
|
|
13615
|
+
"baseUrl": "https://bedrock-mantle.{region}.api.aws/openai/v1",
|
|
13616
|
+
"reasoning": true,
|
|
13617
|
+
"input": [
|
|
13618
|
+
"text",
|
|
13619
|
+
"image"
|
|
13620
|
+
],
|
|
13621
|
+
"cost": {
|
|
13622
|
+
"input": 5.5,
|
|
13623
|
+
"output": 33,
|
|
13624
|
+
"cacheRead": 0.55,
|
|
13625
|
+
"cacheWrite": 6.88
|
|
13626
|
+
},
|
|
13627
|
+
"contextWindow": 272000,
|
|
13628
|
+
"maxTokens": 128000,
|
|
13629
|
+
"thinking": {
|
|
13630
|
+
"mode": "effort",
|
|
13631
|
+
"efforts": [
|
|
13632
|
+
"low",
|
|
13633
|
+
"medium",
|
|
13634
|
+
"high",
|
|
13635
|
+
"xhigh",
|
|
13636
|
+
"max"
|
|
13637
|
+
]
|
|
13638
|
+
}
|
|
13639
|
+
},
|
|
13640
|
+
"openai.gpt-5.6-terra": {
|
|
13641
|
+
"id": "openai.gpt-5.6-terra",
|
|
13642
|
+
"name": "GPT-5.6 Terra",
|
|
13643
|
+
"api": "openai-responses",
|
|
13644
|
+
"provider": "bedrock-mantle",
|
|
13645
|
+
"baseUrl": "https://bedrock-mantle.{region}.api.aws/openai/v1",
|
|
13646
|
+
"reasoning": true,
|
|
13647
|
+
"input": [
|
|
13648
|
+
"text",
|
|
13649
|
+
"image"
|
|
13650
|
+
],
|
|
13651
|
+
"cost": {
|
|
13652
|
+
"input": 2.2,
|
|
13653
|
+
"output": 13.2,
|
|
13654
|
+
"cacheRead": 0.22,
|
|
13655
|
+
"cacheWrite": 2.75
|
|
13656
|
+
},
|
|
13657
|
+
"contextWindow": 272000,
|
|
13658
|
+
"maxTokens": 128000,
|
|
13659
|
+
"thinking": {
|
|
13660
|
+
"mode": "effort",
|
|
13661
|
+
"efforts": [
|
|
13662
|
+
"low",
|
|
13663
|
+
"medium",
|
|
13664
|
+
"high",
|
|
13665
|
+
"xhigh",
|
|
13666
|
+
"max"
|
|
13667
|
+
]
|
|
13668
|
+
}
|
|
13669
|
+
}
|
|
13670
|
+
},
|
|
13669
13671
|
"cerebras": {
|
|
13670
13672
|
"gemma-4-31b": {
|
|
13671
13673
|
"id": "gemma-4-31b",
|
|
@@ -2,7 +2,13 @@ import type { ModelManagerOptions } from "../model-manager";
|
|
|
2
2
|
import type { Api, FetchImpl } from "../types";
|
|
3
3
|
|
|
4
4
|
/** Config passed to a provider's runtime model-manager factory. */
|
|
5
|
-
export type ModelManagerConfig = {
|
|
5
|
+
export type ModelManagerConfig = {
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
fetch?: FetchImpl;
|
|
9
|
+
/** The supplied fetch already applies provider-specific authentication. */
|
|
10
|
+
authenticated?: boolean;
|
|
11
|
+
};
|
|
6
12
|
|
|
7
13
|
/** Catalog discovery configuration for providers that support endpoint-based model listing. */
|
|
8
14
|
export interface CatalogDiscoveryConfig {
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
alibabaTokenPlanModelManagerOptions,
|
|
16
16
|
anthropicModelManagerOptions,
|
|
17
17
|
basetenModelManagerOptions,
|
|
18
|
+
bedrockMantleModelManagerOptions,
|
|
18
19
|
cerebrasModelManagerOptions,
|
|
19
20
|
cloudflareAiGatewayModelManagerOptions,
|
|
20
21
|
coreWeaveModelManagerOptions,
|
|
@@ -109,6 +110,13 @@ export const CATALOG_PROVIDERS = [
|
|
|
109
110
|
id: "amazon-bedrock",
|
|
110
111
|
defaultModel: "us.anthropic.claude-opus-4-8",
|
|
111
112
|
},
|
|
113
|
+
{
|
|
114
|
+
id: "bedrock-mantle",
|
|
115
|
+
defaultModel: "openai.gpt-5.6-terra",
|
|
116
|
+
envVars: ["AWS_BEARER_TOKEN_BEDROCK"],
|
|
117
|
+
createModelManagerOptions: (config: ModelManagerConfig) => bedrockMantleModelManagerOptions(config),
|
|
118
|
+
dynamicModelsAuthoritative: true,
|
|
119
|
+
},
|
|
112
120
|
{
|
|
113
121
|
id: "anthropic",
|
|
114
122
|
defaultModel: "claude-opus-4-8",
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
} from "../wire/github-copilot";
|
|
32
32
|
import { createBundledReferenceMap, createReferenceResolver, toModelSpec } from "./bundled-references";
|
|
33
33
|
import { getDefaultModelDiscoveryBaseUrl, resolveModelCacheProviderId } from "./cache-provider-id";
|
|
34
|
+
import type { ModelManagerConfig } from "./descriptor-types";
|
|
34
35
|
|
|
35
36
|
const MODELS_DEV_URL = "https://catalog.stencil.so/models.json.zstd";
|
|
36
37
|
|
|
@@ -2878,15 +2879,27 @@ export function alibabaTokenPlanModelManagerOptions(
|
|
|
2878
2879
|
filterModel: (_entry, model) => isAlibabaTokenPlanChatModelId(model.id),
|
|
2879
2880
|
mapModel: (_entry, defaults) => {
|
|
2880
2881
|
const reference = ALIBABA_TOKEN_PLAN_STATIC_MODELS.find(model => model.id === defaults.id);
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2882
|
+
if (reference) {
|
|
2883
|
+
return {
|
|
2884
|
+
...reference,
|
|
2885
|
+
id: defaults.id,
|
|
2886
|
+
api: defaults.api,
|
|
2887
|
+
provider: defaults.provider,
|
|
2888
|
+
baseUrl: defaults.baseUrl,
|
|
2889
|
+
};
|
|
2890
|
+
}
|
|
2891
|
+
// DeepSeek V4 family models discovered dynamically need reasoning config
|
|
2892
|
+
if (defaults.id.startsWith("deepseek-v4")) {
|
|
2893
|
+
return {
|
|
2894
|
+
...defaults,
|
|
2895
|
+
reasoning: true,
|
|
2896
|
+
thinking: {
|
|
2897
|
+
mode: "effort" as const,
|
|
2898
|
+
efforts: [Effort.High, Effort.Max],
|
|
2899
|
+
},
|
|
2900
|
+
};
|
|
2901
|
+
}
|
|
2902
|
+
return defaults;
|
|
2890
2903
|
},
|
|
2891
2904
|
fetch: config?.fetch,
|
|
2892
2905
|
}),
|
|
@@ -3622,6 +3635,126 @@ export const META_MUSE_STATIC_MODELS: readonly ModelSpec<"openai-responses">[] =
|
|
|
3622
3635
|
},
|
|
3623
3636
|
];
|
|
3624
3637
|
|
|
3638
|
+
// ---------------------------------------------------------------------------
|
|
3639
|
+
// 15.76 Amazon Bedrock Mantle
|
|
3640
|
+
// ---------------------------------------------------------------------------
|
|
3641
|
+
|
|
3642
|
+
const BEDROCK_MANTLE_BASE_URL = "https://bedrock-mantle.{region}.api.aws/openai/v1";
|
|
3643
|
+
const BEDROCK_MANTLE_GPT_5_X_THINKING: ThinkingConfig = {
|
|
3644
|
+
mode: "effort",
|
|
3645
|
+
efforts: [Effort.Low, Effort.Medium, Effort.High, Effort.XHigh],
|
|
3646
|
+
};
|
|
3647
|
+
const BEDROCK_MANTLE_GPT_5_6_THINKING: ThinkingConfig = {
|
|
3648
|
+
mode: "effort",
|
|
3649
|
+
efforts: [Effort.Low, Effort.Medium, Effort.High, Effort.XHigh, Effort.Max],
|
|
3650
|
+
};
|
|
3651
|
+
|
|
3652
|
+
/**
|
|
3653
|
+
* OpenAI frontier models served exclusively through Bedrock Mantle's Responses
|
|
3654
|
+
* endpoint. Pricing is per million tokens from the Amazon Bedrock pricing page.
|
|
3655
|
+
*/
|
|
3656
|
+
export const BEDROCK_MANTLE_STATIC_MODELS: readonly ModelSpec<"openai-responses">[] = [
|
|
3657
|
+
{
|
|
3658
|
+
id: "openai.gpt-5.4",
|
|
3659
|
+
name: "GPT-5.4",
|
|
3660
|
+
api: "openai-responses",
|
|
3661
|
+
provider: "bedrock-mantle",
|
|
3662
|
+
baseUrl: BEDROCK_MANTLE_BASE_URL,
|
|
3663
|
+
reasoning: true,
|
|
3664
|
+
input: ["text", "image"],
|
|
3665
|
+
cost: { input: 2.75, output: 16.5, cacheRead: 0.275, cacheWrite: 0 },
|
|
3666
|
+
contextWindow: 272_000,
|
|
3667
|
+
maxTokens: 128_000,
|
|
3668
|
+
thinking: BEDROCK_MANTLE_GPT_5_X_THINKING,
|
|
3669
|
+
},
|
|
3670
|
+
{
|
|
3671
|
+
id: "openai.gpt-5.5",
|
|
3672
|
+
name: "GPT-5.5",
|
|
3673
|
+
api: "openai-responses",
|
|
3674
|
+
provider: "bedrock-mantle",
|
|
3675
|
+
baseUrl: BEDROCK_MANTLE_BASE_URL,
|
|
3676
|
+
reasoning: true,
|
|
3677
|
+
input: ["text", "image"],
|
|
3678
|
+
cost: { input: 5.5, output: 33, cacheRead: 0.55, cacheWrite: 0 },
|
|
3679
|
+
contextWindow: 272_000,
|
|
3680
|
+
maxTokens: 128_000,
|
|
3681
|
+
thinking: BEDROCK_MANTLE_GPT_5_X_THINKING,
|
|
3682
|
+
},
|
|
3683
|
+
{
|
|
3684
|
+
id: "openai.gpt-5.6-luna",
|
|
3685
|
+
name: "GPT-5.6 Luna",
|
|
3686
|
+
api: "openai-responses",
|
|
3687
|
+
provider: "bedrock-mantle",
|
|
3688
|
+
baseUrl: BEDROCK_MANTLE_BASE_URL,
|
|
3689
|
+
reasoning: true,
|
|
3690
|
+
input: ["text", "image"],
|
|
3691
|
+
cost: { input: 0.22, output: 1.32, cacheRead: 0.022, cacheWrite: 0.275 },
|
|
3692
|
+
contextWindow: 272_000,
|
|
3693
|
+
maxTokens: 128_000,
|
|
3694
|
+
thinking: BEDROCK_MANTLE_GPT_5_6_THINKING,
|
|
3695
|
+
},
|
|
3696
|
+
{
|
|
3697
|
+
id: "openai.gpt-5.6-sol",
|
|
3698
|
+
name: "GPT-5.6 Sol",
|
|
3699
|
+
api: "openai-responses",
|
|
3700
|
+
provider: "bedrock-mantle",
|
|
3701
|
+
baseUrl: BEDROCK_MANTLE_BASE_URL,
|
|
3702
|
+
reasoning: true,
|
|
3703
|
+
input: ["text", "image"],
|
|
3704
|
+
cost: { input: 5.5, output: 33, cacheRead: 0.55, cacheWrite: 6.88 },
|
|
3705
|
+
contextWindow: 272_000,
|
|
3706
|
+
maxTokens: 128_000,
|
|
3707
|
+
thinking: BEDROCK_MANTLE_GPT_5_6_THINKING,
|
|
3708
|
+
},
|
|
3709
|
+
{
|
|
3710
|
+
id: "openai.gpt-5.6-terra",
|
|
3711
|
+
name: "GPT-5.6 Terra",
|
|
3712
|
+
api: "openai-responses",
|
|
3713
|
+
provider: "bedrock-mantle",
|
|
3714
|
+
baseUrl: BEDROCK_MANTLE_BASE_URL,
|
|
3715
|
+
reasoning: true,
|
|
3716
|
+
input: ["text", "image"],
|
|
3717
|
+
cost: { input: 2.2, output: 13.2, cacheRead: 0.22, cacheWrite: 2.75 },
|
|
3718
|
+
contextWindow: 272_000,
|
|
3719
|
+
maxTokens: 128_000,
|
|
3720
|
+
thinking: BEDROCK_MANTLE_GPT_5_6_THINKING,
|
|
3721
|
+
},
|
|
3722
|
+
];
|
|
3723
|
+
|
|
3724
|
+
const BEDROCK_MANTLE_MODEL_BY_ID: Partial<Record<string, ModelSpec<"openai-responses">>> = Object.fromEntries(
|
|
3725
|
+
BEDROCK_MANTLE_STATIC_MODELS.map(model => [model.id, model]),
|
|
3726
|
+
);
|
|
3727
|
+
|
|
3728
|
+
export function bedrockMantleModelManagerOptions(
|
|
3729
|
+
config: ModelManagerConfig = {},
|
|
3730
|
+
): ModelManagerOptions<"openai-responses"> {
|
|
3731
|
+
const inferenceBaseUrl = config.baseUrl ?? BEDROCK_MANTLE_BASE_URL;
|
|
3732
|
+
const discoveryBaseUrl = inferenceBaseUrl.replace(/\/openai\/v1\/?$/, "/v1");
|
|
3733
|
+
return {
|
|
3734
|
+
providerId: "bedrock-mantle",
|
|
3735
|
+
staticModels: BEDROCK_MANTLE_STATIC_MODELS,
|
|
3736
|
+
// The bearer-scoped /v1/models response lists only the models enabled for
|
|
3737
|
+
// the account; a successful fetch replaces the static seed instead of
|
|
3738
|
+
// merging, so disabled models are not selectable.
|
|
3739
|
+
dynamicModelsAuthoritative: true,
|
|
3740
|
+
...(config.authenticated && {
|
|
3741
|
+
fetchDynamicModels: () =>
|
|
3742
|
+
fetchOpenAICompatibleModels({
|
|
3743
|
+
api: "openai-responses",
|
|
3744
|
+
provider: "bedrock-mantle",
|
|
3745
|
+
baseUrl: discoveryBaseUrl,
|
|
3746
|
+
fetch: config.fetch,
|
|
3747
|
+
mapModel: (entry, defaults) =>
|
|
3748
|
+
mapWithBundledReference(
|
|
3749
|
+
entry,
|
|
3750
|
+
{ ...defaults, baseUrl: BEDROCK_MANTLE_BASE_URL },
|
|
3751
|
+
BEDROCK_MANTLE_MODEL_BY_ID[defaults.id],
|
|
3752
|
+
),
|
|
3753
|
+
}),
|
|
3754
|
+
}),
|
|
3755
|
+
};
|
|
3756
|
+
}
|
|
3757
|
+
|
|
3625
3758
|
export interface MetaModelManagerConfig {
|
|
3626
3759
|
apiKey?: string;
|
|
3627
3760
|
baseUrl?: string;
|
|
@@ -5050,6 +5183,11 @@ export function githubCopilotModelManagerOptions(config?: GithubCopilotModelMana
|
|
|
5050
5183
|
}
|
|
5051
5184
|
: {}),
|
|
5052
5185
|
};
|
|
5186
|
+
const defaultCost = copilotTierCost(tokenPrices.defaultTier);
|
|
5187
|
+
if (defaultCost) {
|
|
5188
|
+
// Cache writes are not reported per tier; retain the bundled provider rate.
|
|
5189
|
+
base.cost = { ...defaultCost, cacheWrite: base.cost.cacheWrite };
|
|
5190
|
+
}
|
|
5053
5191
|
const variant = createCopilotLongContextVariant(
|
|
5054
5192
|
base,
|
|
5055
5193
|
contextWindow,
|