@oh-my-pi/pi-catalog 16.1.3 → 16.1.5

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
+ ## [16.1.4] - 2026-06-19
6
+
7
+ ### Fixed
8
+
9
+ - Fixed Claude 4.6 routing on the `google-antigravity` (and `google-gemini-cli`) Cloud Code Assist providers, whose backend exposes the models asymmetrically: `claude-sonnet-4-6` has no `-thinking` twin and `claude-opus-4-6` has only the `-thinking` twin. The shared `thinkingPair` family was routing thinking efforts on `claude-sonnet-4-6` to a non-existent `claude-sonnet-4-6-thinking` wire id (404 `Requested entity was not found`); replaced both 4.6 entries with bespoke single-wire families that declare the dead ids as `retiredMembers` so `reconcileRetiredRouting` re-points stale bundled-catalog and SQLite-cache rows away from the 404 wire id. Refreshed the bundled `models.json` Sonnet 4.6 entry whose stored `effortRouting` still targeted the dead `-thinking` id. Added `claude-sonnet-4-6` and `claude-opus-4-6-thinking` entries to `ANTIGRAVITY_MODEL_WIRE_PROFILES` capped at the backend's 64000-output-token limit (over-cap requests 400'd with `Request contains an invalid argument`); `modelEnum` is now optional on `AntigravityModelWireProfile` since the Claude wire ids are accepted without a captured `labels.model_enum`. ([#3067](https://github.com/can1357/oh-my-pi/issues/3067))
10
+
5
11
  ## [16.1.3] - 2026-06-19
6
12
 
7
13
  ### Fixed
@@ -19,15 +19,18 @@ export declare let getAntigravityUserAgent: () => string;
19
19
  /**
20
20
  * Per-wire-id Antigravity Cloud Code Assist request constants, captured from the
21
21
  * real `antigravity/hub` client against `daily-cloudcode-pa`. `modelEnum` is the
22
- * opaque `labels.model_enum` token the client tags each request with;
23
- * `maxOutputTokens` is the fixed `generationConfig.maxOutputTokens` it sends
24
- * regardless of the thinking budget. Keyed by the routed upstream wire id
25
- * (post effort-routing), not the collapsed logical id. Checkpoint-only ids
22
+ * opaque `labels.model_enum` token the client tags each request with — optional
23
+ * because Anthropic-backed wire ids (e.g. `claude-sonnet-4-6`,
24
+ * `claude-opus-4-6-thinking`) are accepted without one; the label is purely
25
+ * telemetry. `maxOutputTokens` is the fixed `generationConfig.maxOutputTokens`
26
+ * the backend enforces regardless of the thinking budget (Claude caps at
27
+ * 64000, Gemini accepts the discovered cap). Keyed by the routed upstream wire
28
+ * id (post effort-routing), not the collapsed logical id. Checkpoint-only ids
26
29
  * (e.g. `gemini-3.1-flash-lite`) are intentionally absent — this provider only
27
30
  * emits agent requests.
28
31
  */
29
32
  export interface AntigravityModelWireProfile {
30
- modelEnum: string;
33
+ modelEnum?: string;
31
34
  maxOutputTokens: number;
32
35
  }
33
36
  export declare const ANTIGRAVITY_MODEL_WIRE_PROFILES: Readonly<Record<string, AntigravityModelWireProfile>>;
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.3",
4
+ "version": "16.1.5",
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.3",
37
+ "@oh-my-pi/pi-utils": "16.1.5",
38
38
  "arktype": "^2.2.0",
39
39
  "zod": "^4"
40
40
  },
41
41
  "devDependencies": {
42
- "@oh-my-pi/pi-ai": "16.1.3",
42
+ "@oh-my-pi/pi-ai": "16.1.5",
43
43
  "@types/bun": "^1.3.14"
44
44
  },
45
45
  "engines": {
package/src/models.json CHANGED
@@ -17862,10 +17862,10 @@
17862
17862
  ],
17863
17863
  "effortRouting": {
17864
17864
  "off": "claude-sonnet-4-6",
17865
- "minimal": "claude-sonnet-4-6-thinking",
17866
- "low": "claude-sonnet-4-6-thinking",
17867
- "medium": "claude-sonnet-4-6-thinking",
17868
- "high": "claude-sonnet-4-6-thinking"
17865
+ "minimal": "claude-sonnet-4-6",
17866
+ "low": "claude-sonnet-4-6",
17867
+ "medium": "claude-sonnet-4-6",
17868
+ "high": "claude-sonnet-4-6"
17869
17869
  }
17870
17870
  }
17871
17871
  },
@@ -220,8 +220,31 @@ const SHARED_CCA_FAMILIES: readonly EffortVariantFamily[] = [
220
220
  routing: {},
221
221
  thinking: { mode: "budget", efforts: [Effort.Minimal, Effort.Low, Effort.Medium, Effort.High] },
222
222
  },
223
- thinkingPair("claude-sonnet-4-6", "Claude Sonnet 4.6"),
224
- thinkingPair("claude-opus-4-6", "Claude Opus 4.6"),
223
+ // Antigravity Cloud Code Assist exposes Claude 4.6 asymmetrically: only the
224
+ // bare `claude-sonnet-4-6` wire id (no `-thinking` twin) and only the
225
+ // `claude-opus-4-6-thinking` wire id (no bare twin). Per-effort thinking is
226
+ // carried in the request body via `thinkingBudget`, so both ids accept on/off
227
+ // requests. Listing both candidates in `members` (priority order) keeps the
228
+ // collapse correct if the backend mix ever rebalances; `retiredMembers`
229
+ // re-points stale collapsed snapshots (bundled catalog rows, cache rows
230
+ // written by prior generations) away from the dead wire id via
231
+ // `reconcileRetiredRouting`.
232
+ {
233
+ id: "claude-sonnet-4-6",
234
+ name: "Claude Sonnet 4.6",
235
+ members: ["claude-sonnet-4-6", "claude-sonnet-4-6-thinking"],
236
+ retiredMembers: ["claude-sonnet-4-6-thinking"],
237
+ routing: {},
238
+ thinking: { mode: "budget", efforts: [Effort.Minimal, Effort.Low, Effort.Medium, Effort.High] },
239
+ },
240
+ {
241
+ id: "claude-opus-4-6",
242
+ name: "Claude Opus 4.6",
243
+ members: ["claude-opus-4-6-thinking", "claude-opus-4-6"],
244
+ retiredMembers: ["claude-opus-4-6"],
245
+ routing: {},
246
+ thinking: { mode: "budget", efforts: [Effort.Minimal, Effort.Low, Effort.Medium, Effort.High] },
247
+ },
225
248
  thinkingPair("claude-sonnet-4-5", "Claude Sonnet 4.5"),
226
249
  thinkingPair("claude-opus-4-5", "Claude Opus 4.5"),
227
250
  thinkingPair("gemini-2.5-flash", "Gemini 2.5 Flash"),
@@ -43,15 +43,18 @@ export let getAntigravityUserAgent = () => {
43
43
  /**
44
44
  * Per-wire-id Antigravity Cloud Code Assist request constants, captured from the
45
45
  * real `antigravity/hub` client against `daily-cloudcode-pa`. `modelEnum` is the
46
- * opaque `labels.model_enum` token the client tags each request with;
47
- * `maxOutputTokens` is the fixed `generationConfig.maxOutputTokens` it sends
48
- * regardless of the thinking budget. Keyed by the routed upstream wire id
49
- * (post effort-routing), not the collapsed logical id. Checkpoint-only ids
46
+ * opaque `labels.model_enum` token the client tags each request with — optional
47
+ * because Anthropic-backed wire ids (e.g. `claude-sonnet-4-6`,
48
+ * `claude-opus-4-6-thinking`) are accepted without one; the label is purely
49
+ * telemetry. `maxOutputTokens` is the fixed `generationConfig.maxOutputTokens`
50
+ * the backend enforces regardless of the thinking budget (Claude caps at
51
+ * 64000, Gemini accepts the discovered cap). Keyed by the routed upstream wire
52
+ * id (post effort-routing), not the collapsed logical id. Checkpoint-only ids
50
53
  * (e.g. `gemini-3.1-flash-lite`) are intentionally absent — this provider only
51
54
  * emits agent requests.
52
55
  */
53
56
  export interface AntigravityModelWireProfile {
54
- modelEnum: string;
57
+ modelEnum?: string;
55
58
  maxOutputTokens: number;
56
59
  }
57
60
  export const ANTIGRAVITY_MODEL_WIRE_PROFILES: Readonly<Record<string, AntigravityModelWireProfile>> = {
@@ -60,6 +63,11 @@ export const ANTIGRAVITY_MODEL_WIRE_PROFILES: Readonly<Record<string, Antigravit
60
63
  "gemini-3-flash-agent": { modelEnum: "MODEL_PLACEHOLDER_M132", maxOutputTokens: 65536 },
61
64
  "gemini-3.1-pro-low": { modelEnum: "MODEL_PLACEHOLDER_M36", maxOutputTokens: 65535 },
62
65
  "gemini-pro-agent": { modelEnum: "MODEL_PLACEHOLDER_M16", maxOutputTokens: 65535 },
66
+ // Claude on `daily-cloudcode-pa` rejects `maxOutputTokens > 64000` with a
67
+ // 400 (`Request contains an invalid argument`). The model_enum label is
68
+ // untracked for these ids; the backend does not require it.
69
+ "claude-sonnet-4-6": { maxOutputTokens: 64000 },
70
+ "claude-opus-4-6-thinking": { maxOutputTokens: 64000 },
63
71
  };
64
72
  export function getAntigravityModelWireProfile(wireModelId: string): AntigravityModelWireProfile | undefined {
65
73
  return ANTIGRAVITY_MODEL_WIRE_PROFILES[wireModelId];