@oh-my-pi/pi-catalog 18.3.5 → 18.4.0

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,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [18.4.0] - 2026-09-28
6
+
7
+ ### Fixed
8
+
9
+ - Corrected Cerebras model pricing so cached input tokens are charged at the model’s input rate, consistent with Cerebras billing.
10
+
5
11
  ## [18.3.5] - 2026-09-27
6
12
 
7
13
  ### Added
@@ -9,8 +9,8 @@
9
9
  import { type Api, type Model, type ModelSpec } from "./types.js";
10
10
  /**
11
11
  * Applies reviewed catalog-data value corrections (`cost-patch`,
12
- * `limits-patch`, `long-context-cost`, `context-window-floor`,
13
- * `input-modalities`) onto an upstream-sourced spec. Applied by
12
+ * `cache-read-at-input-rate`, `limits-patch`, `long-context-cost`,
13
+ * `context-window-floor`, `input-modalities`) onto an upstream-sourced spec. Applied by
14
14
  * `buildModel` to every upstream-sourced spec; user-authored overrides are
15
15
  * recomposed after building by the override applicators, so explicit user
16
16
  * limits and pricing still win.
@@ -5070,6 +5070,11 @@ export interface TruncatedToolCallSuccess extends ProtoMessage {
5070
5070
  export declare const TruncatedToolCallSuccessSchema: MessageCodec<TruncatedToolCallSuccess>;
5071
5071
  /** Cursor agent message agent.v1.TurnEndedUpdate. */
5072
5072
  export interface TurnEndedUpdate extends ProtoMessage {
5073
+ inputTokens?: bigint;
5074
+ outputTokens?: bigint;
5075
+ cacheReadTokens?: bigint;
5076
+ cacheWriteTokens?: bigint;
5077
+ reasoningTokens?: bigint;
5073
5078
  }
5074
5079
  export declare const TurnEndedUpdateSchema: MessageCodec<TurnEndedUpdate>;
5075
5080
  /** Cursor agent message agent.v1.TypeAction. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oh-my-pi/pi-catalog",
3
- "version": "18.3.5",
3
+ "version": "18.4.0",
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.3.5",
97
- "@oh-my-pi/pi-utils": "18.3.5"
96
+ "@oh-my-pi/omptype": "18.4.0",
97
+ "@oh-my-pi/pi-utils": "18.4.0"
98
98
  },
99
99
  "devDependencies": {
100
100
  "@bgotink/kdl": "0.4.0",
101
- "@oh-my-pi/pi-ai": "18.3.5",
101
+ "@oh-my-pi/pi-ai": "18.4.0",
102
102
  "@types/bun": "^1.3.14"
103
103
  },
104
104
  "engines": {
package/src/build.ts CHANGED
@@ -140,8 +140,8 @@ function applyCatalogAssignments<TApi extends Api>(model: Model<TApi>, catalog:
140
140
 
141
141
  /**
142
142
  * Applies reviewed catalog-data value corrections (`cost-patch`,
143
- * `limits-patch`, `long-context-cost`, `context-window-floor`,
144
- * `input-modalities`) onto an upstream-sourced spec. Applied by
143
+ * `cache-read-at-input-rate`, `limits-patch`, `long-context-cost`,
144
+ * `context-window-floor`, `input-modalities`) onto an upstream-sourced spec. Applied by
145
145
  * `buildModel` to every upstream-sourced spec; user-authored overrides are
146
146
  * recomposed after building by the override applicators, so explicit user
147
147
  * limits and pricing still win.
@@ -220,6 +220,14 @@ export function applyCatalogCorrections(
220
220
  applyEffectiveFallbackRates(model.cost, Reflect.get(fallback, "effectiveRates"));
221
221
  }
222
222
  }
223
+ if (catalog.cacheReadAtInputRate === true) {
224
+ const { longContext } = model.cost;
225
+ model.cost = {
226
+ ...model.cost,
227
+ cacheRead: model.cost.input,
228
+ ...(longContext && { longContext: { ...longContext, cacheRead: longContext.input } }),
229
+ };
230
+ }
223
231
  if (catalog.timeBased !== undefined) {
224
232
  model.cost = { ...model.cost, timeBased: materializeTimeBasedCost(catalog.timeBased) };
225
233
  }
@@ -321,6 +321,16 @@ export const AXES: Readonly<Record<string, AxisDef>> = {
321
321
  "context-window-floor": { key: "contextWindowFloor", set: "catalog", shape: "scalar" },
322
322
  "cost-patch": { key: "costPatch", set: "catalog", shape: "object" },
323
323
  "cost-fallback": { key: "costFallback", set: "catalog", shape: "object" },
324
+ /**
325
+ * The host bills cache-hit input tokens at the full input rate (no cache
326
+ * discount), so the built row's `cacheRead` tracks its live `input` price.
327
+ */
328
+ "cache-read-at-input-rate": {
329
+ key: "cacheReadAtInputRate",
330
+ set: "catalog",
331
+ shape: "scalar",
332
+ values: [true, false],
333
+ },
324
334
  "delegation-bias": { key: "delegationBias", set: "catalog", shape: "scalar", values: DELEGATION_BIASES },
325
335
  "discovery-api": { key: "discoveryApi", set: "catalog", shape: "scalar" },
326
336
  "edit-prompt-variant": { key: "editPromptVariant", set: "catalog", shape: "scalar", values: ["full", "compact"] },
@@ -10,6 +10,9 @@ provider "cerebras" {
10
10
  // Replaces the Cerebras provider branches in the completions baseline.
11
11
  supports-usage-in-streaming #false
12
12
  tool-strict-mode "all_strict"
13
+ // Prompt caching carries no discount: cached input tokens bill at the
14
+ // standard input rate (https://inference-docs.cerebras.ai/capabilities/prompt-caching).
15
+ cache-read-at-input-rate #true
13
16
  // Cerebras serves Gemma 4 with vision enabled; its /v1/models rows carry
14
17
  // no modality metadata.
15
18
  models "gemma-4-31b" {