@oh-my-pi/pi-catalog 16.1.14 → 16.1.15

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-catalog",
4
- "version": "16.1.14",
4
+ "version": "16.1.15",
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",
@@ -34,12 +34,12 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@bufbuild/protobuf": "^2.12.0",
37
- "@oh-my-pi/pi-utils": "16.1.14",
37
+ "@oh-my-pi/pi-utils": "16.1.15",
38
38
  "arktype": "^2.2.0",
39
39
  "zod": "^4"
40
40
  },
41
41
  "devDependencies": {
42
- "@oh-my-pi/pi-ai": "16.1.14",
42
+ "@oh-my-pi/pi-ai": "16.1.15",
43
43
  "@types/bun": "^1.3.14"
44
44
  },
45
45
  "engines": {
package/src/models.json CHANGED
@@ -60466,12 +60466,12 @@
60466
60466
  ],
60467
60467
  "cost": {
60468
60468
  "input": 0.66,
60469
- "output": 3.5,
60470
- "cacheRead": 0.33,
60469
+ "output": 3.41,
60470
+ "cacheRead": 0.144,
60471
60471
  "cacheWrite": 0
60472
60472
  },
60473
60473
  "contextWindow": 262144,
60474
- "maxTokens": 65535,
60474
+ "maxTokens": 262144,
60475
60475
  "thinking": {
60476
60476
  "mode": "effort",
60477
60477
  "efforts": [
@@ -64132,12 +64132,12 @@
64132
64132
  ],
64133
64133
  "cost": {
64134
64134
  "input": 0.66,
64135
- "output": 3.5,
64136
- "cacheRead": 0.33,
64135
+ "output": 3.41,
64136
+ "cacheRead": 0.144,
64137
64137
  "cacheWrite": 0
64138
64138
  },
64139
64139
  "contextWindow": 262144,
64140
- "maxTokens": 65535,
64140
+ "maxTokens": 262144,
64141
64141
  "thinking": {
64142
64142
  "mode": "effort",
64143
64143
  "efforts": [
@@ -69259,7 +69259,7 @@
69259
69259
  "cacheRead": 0,
69260
69260
  "cacheWrite": 0
69261
69261
  },
69262
- "contextWindow": null,
69262
+ "contextWindow": 1000000,
69263
69263
  "maxTokens": null,
69264
69264
  "thinking": {
69265
69265
  "mode": "effort",
@@ -69273,7 +69273,7 @@
69273
69273
  },
69274
69274
  "compat": {
69275
69275
  "includeEncryptedReasoning": false,
69276
- "streamIdleTimeoutMs": 300000
69276
+ "streamIdleTimeoutMs": 0
69277
69277
  }
69278
69278
  },
69279
69279
  "fugu-ultra": {
@@ -69292,7 +69292,7 @@
69292
69292
  "cacheRead": 0.5,
69293
69293
  "cacheWrite": 0
69294
69294
  },
69295
- "contextWindow": null,
69295
+ "contextWindow": 1000000,
69296
69296
  "maxTokens": null,
69297
69297
  "thinking": {
69298
69298
  "mode": "effort",
@@ -69306,7 +69306,7 @@
69306
69306
  },
69307
69307
  "compat": {
69308
69308
  "includeEncryptedReasoning": false,
69309
- "streamIdleTimeoutMs": 300000
69309
+ "streamIdleTimeoutMs": 0
69310
69310
  }
69311
69311
  },
69312
69312
  "fugu-ultra-20260615": {
@@ -69325,7 +69325,7 @@
69325
69325
  "cacheRead": 0.5,
69326
69326
  "cacheWrite": 0
69327
69327
  },
69328
- "contextWindow": null,
69328
+ "contextWindow": 1000000,
69329
69329
  "maxTokens": null,
69330
69330
  "thinking": {
69331
69331
  "mode": "effort",
@@ -69339,7 +69339,7 @@
69339
69339
  },
69340
69340
  "compat": {
69341
69341
  "includeEncryptedReasoning": false,
69342
- "streamIdleTimeoutMs": 300000
69342
+ "streamIdleTimeoutMs": 0
69343
69343
  }
69344
69344
  }
69345
69345
  },
@@ -2527,6 +2527,7 @@ export function moonshotModelManagerOptions(
2527
2527
  const SAKANA_DEFAULT_BASE_URL = "https://api.sakana.ai/v1";
2528
2528
  const SAKANA_FREE_ROUTER_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 } as const;
2529
2529
  const SAKANA_FUGU_ULTRA_COST = { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 0 } as const;
2530
+ const SAKANA_FUGU_ULTRA_CONTEXT_WINDOW = 1_000_000;
2530
2531
  const SAKANA_FUGU_THINKING: ThinkingConfig = {
2531
2532
  mode: "effort",
2532
2533
  efforts: [Effort.High, Effort.XHigh],
@@ -2534,7 +2535,7 @@ const SAKANA_FUGU_THINKING: ThinkingConfig = {
2534
2535
  };
2535
2536
  const SAKANA_RESPONSES_COMPAT: ModelSpec<"openai-responses">["compat"] = {
2536
2537
  includeEncryptedReasoning: false,
2537
- streamIdleTimeoutMs: 300_000,
2538
+ streamIdleTimeoutMs: 0,
2538
2539
  };
2539
2540
 
2540
2541
  function normalizeSakanaBaseUrl(baseUrl: string | undefined): string {
@@ -2551,6 +2552,7 @@ function createSakanaFuguStaticModel(
2551
2552
  id: string,
2552
2553
  name: string,
2553
2554
  cost: ModelSpec<"openai-responses">["cost"],
2555
+ contextWindow: number | null,
2554
2556
  ): ModelSpec<"openai-responses"> {
2555
2557
  return {
2556
2558
  id,
@@ -2561,7 +2563,7 @@ function createSakanaFuguStaticModel(
2561
2563
  reasoning: true,
2562
2564
  input: ["text"],
2563
2565
  cost: { ...cost },
2564
- contextWindow: null,
2566
+ contextWindow,
2565
2567
  maxTokens: null,
2566
2568
  thinking: { ...SAKANA_FUGU_THINKING },
2567
2569
  compat: { ...SAKANA_RESPONSES_COMPAT },
@@ -2569,12 +2571,18 @@ function createSakanaFuguStaticModel(
2569
2571
  }
2570
2572
 
2571
2573
  export const SAKANA_FUGU_STATIC_MODELS: readonly ModelSpec<"openai-responses">[] = [
2572
- createSakanaFuguStaticModel("fugu", "Fugu", SAKANA_FREE_ROUTER_COST),
2573
- createSakanaFuguStaticModel("fugu-ultra", "Fugu Ultra", SAKANA_FUGU_ULTRA_COST),
2574
- createSakanaFuguStaticModel("fugu-ultra-20260615", "Fugu Ultra 20260615", SAKANA_FUGU_ULTRA_COST),
2574
+ createSakanaFuguStaticModel("fugu", "Fugu", SAKANA_FREE_ROUTER_COST, SAKANA_FUGU_ULTRA_CONTEXT_WINDOW),
2575
+ createSakanaFuguStaticModel("fugu-ultra", "Fugu Ultra", SAKANA_FUGU_ULTRA_COST, SAKANA_FUGU_ULTRA_CONTEXT_WINDOW),
2576
+ createSakanaFuguStaticModel(
2577
+ "fugu-ultra-20260615",
2578
+ "Fugu Ultra 20260615",
2579
+ SAKANA_FUGU_ULTRA_COST,
2580
+ SAKANA_FUGU_ULTRA_CONTEXT_WINDOW,
2581
+ ),
2575
2582
  ];
2576
2583
 
2577
2584
  const SAKANA_FUGU_STATIC_MODEL_BY_ID = new Map(SAKANA_FUGU_STATIC_MODELS.map(model => [model.id, model] as const));
2585
+ const SAKANA_FUGU_STATIC_MODEL_IDS = SAKANA_FUGU_STATIC_MODELS.map(model => model.id);
2578
2586
 
2579
2587
  export interface SakanaModelManagerConfig {
2580
2588
  apiKey?: string;
@@ -2589,6 +2597,7 @@ export function sakanaModelManagerOptions(config?: SakanaModelManagerConfig): Mo
2589
2597
  return {
2590
2598
  providerId: "sakana",
2591
2599
  dynamicModelsAuthoritative: true,
2600
+ dropCachedModelIdsOnStaticMismatch: SAKANA_FUGU_STATIC_MODEL_IDS,
2592
2601
  ...(apiKey && {
2593
2602
  fetchDynamicModels: () =>
2594
2603
  fetchOpenAICompatibleModels({