@oh-my-pi/pi-catalog 17.2.5 → 17.2.6

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 CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [17.2.6] - 2026-08-03
6
+
7
+ ### Added
8
+
9
+ - 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.
10
+
11
+ ### Fixed
12
+
13
+ - 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.
14
+ - Fixed GitHub Copilot dynamic discovery retaining stale bundled prices for default-context models instead of using the provider's reported default-tier prices.
15
+
5
16
  ## [17.2.5] - 2026-08-03
6
17
 
7
18
  ### 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.5",
4
+ "version": "17.2.6",
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/pi-utils": "17.2.5",
38
+ "@oh-my-pi/pi-utils": "17.2.6",
39
39
  "arktype": "2.2.3",
40
40
  "zod": "^4"
41
41
  },
42
42
  "devDependencies": {
43
- "@oh-my-pi/pi-ai": "17.2.5",
43
+ "@oh-my-pi/pi-ai": "17.2.6",
44
44
  "@types/bun": "^1.3.14"
45
45
  },
46
46
  "engines": {
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 = { apiKey?: string; baseUrl?: string; fetch?: FetchImpl };
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
- return reference
2882
- ? {
2883
- ...reference,
2884
- id: defaults.id,
2885
- api: defaults.api,
2886
- provider: defaults.provider,
2887
- baseUrl: defaults.baseUrl,
2888
- }
2889
- : defaults;
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,