pi-clawbay 0.0.23 → 0.0.25

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/README.md CHANGED
@@ -1,13 +1,14 @@
1
1
  # TheClawBay Provider for Pi Coding Agent
2
2
 
3
- A provider extension for [Pi Coding Agent](https://github.com/earendil-works/pi) that enables access to GPT-5 and Codex models through [TheClawBay](https://theclawbay.com) API.
3
+ A provider extension for [Pi Coding Agent](https://github.com/earendil-works/pi) that enables access to GPT-5, Codex, supported Gemini, and image-generation models through [TheClawBay](https://theclawbay.com) API.
4
4
 
5
5
  ## Features
6
6
 
7
- - **GPT-5 & Codex Models** - Access via Codex Responses API with session-based prompt cache
8
- - **Single Provider** - Only `theclawbay` is registered
7
+ - **GPT-5 & Codex Models** - Access via TheClawBay's native Codex Responses route with session-based prompt-cache hits
8
+ - **Gemini Models** - Dynamically discovered `gemini-*` models use Pi's native Google transport against TheClawBay's `/v1beta` route, including Pi-compatible thinking support by default
9
+ - **Single Provider** - Only `theclawbay` is registered; routing is selected per model
9
10
  - **GPT-5.4 Split Options** - `gpt-5.4` and `gpt-5.4[1m]` for clearer cost/context choice
10
- - **GPT Image 2** - Generate PNG images through TheClawBay's OpenAI-compatible Images endpoint
11
+ - **GPT Image 2** - Generate PNG images through TheClawBay's hosted Codex Responses `image_generation` tool
11
12
  - **High Usage Headroom** - More capacity than standard subscriptions
12
13
  - **Simple Setup** - Single API key
13
14
 
@@ -57,28 +58,60 @@ Model IDs are discovered dynamically at extension load from:
57
58
 
58
59
  If discovery fails or `THECLAWBAY_API_KEY` is not set yet, the extension falls back to the last successful discovery cache, even if it is stale, then to a bundled default list so `/model` still works on startup. Live discovery refreshes the cache in the background after the provider has been registered.
59
60
 
60
- Requests for `theclawbay/*` text and coding models are sent through TheClawBay's native Codex route:
61
+ ### Routing and Cache Behavior
61
62
 
62
- - `https://api.theclawbay.com/backend-api/codex`
63
+ The extension keeps one Pi provider, `theclawbay`, and routes by model family:
63
64
 
64
- Requests for `theclawbay/gpt-image-2` are sent through TheClawBay's Codex Responses route with the hosted `image_generation` tool:
65
+ - **GPT/Codex text models** (`gpt-*`, `*codex*`) use TheClawBay's native Codex route:
66
+ - `https://api.theclawbay.com/backend-api/codex`
67
+ - The custom `streamSimpleTheClawBayCodexResponses` transport is preserved for this path.
68
+ - This is the cache-critical path: Pi's OpenAI Responses serializer emits `prompt_cache_key` from the session id, and the transport keeps `session_id` affinity headers so repeated requests can hit TheClawBay/Codex prompt cache.
69
+ - **Gemini models** (`gemini-*`) are registered per model with:
70
+ - `api: "google-generative-ai"`
71
+ - `baseUrl: "https://api.theclawbay.com/v1beta"`
72
+ - `reasoning: true` for the Gemini IDs that Pi's official Google provider marks as thinking-capable (`gemini-2.5-*`, `gemini-live-2.5-*`, `gemini-flash-latest`, `gemini-flash-lite-latest`, `gemini-3*-flash*`, and `gemini-3*-pro*`)
73
+ - Pi then uses its native Google SDK transport (`/v1beta/models/{model}:streamGenerateContent?alt=sse`) instead of the Codex transport. This is required because sending Gemini models to `https://api.theclawbay.com/backend-api/codex/responses` returns `404 upstream returned HTTP 404`.
74
+ - **Image generation** (`gpt-image-2`) uses TheClawBay's Codex Responses route with the hosted `image_generation` tool:
75
+ - `https://api.theclawbay.com/backend-api/codex/responses`
65
76
 
66
- - `https://api.theclawbay.com/backend-api/codex/responses`
67
-
68
- This extension uses a custom Responses transport for that route. It sends:
77
+ For GPT/Codex and hosted image requests, the extension keeps the native Codex semantics that are needed for existing behavior:
69
78
 
70
79
  - `Authorization: Bearer $THECLAWBAY_API_KEY`
71
80
  - `chatgpt-account-id: theclawbay`
81
+ - `originator: pi`
82
+ - `OpenAI-Beta: responses=experimental`
72
83
  - `session_id` when Pi provides a session id
73
- - `prompt_cache_key` in the request body
84
+ - `prompt_cache_key` in the request body for GPT/Codex cache affinity
85
+ - `include: ["reasoning.encrypted_content"]`
86
+ - `store: false`
87
+
88
+ For `gpt-image-2`, the request also includes:
89
+
74
90
  - `tools: [{ type: "image_generation", model: "gpt-image-2", output_format: "png", size: "1024x1024", partial_images: 2 }]`
75
91
 
76
92
  This avoids Pi's built-in `openai-codex-responses` JWT parsing path, which expects a ChatGPT/Codex-style token and can fail with `Failed to extract accountId from token` when given a normal TheClawBay API key.
77
93
 
94
+ ### Gemini Thinking
95
+
96
+ Gemini thinking is enabled by default for the same Google-native model families that Pi official marks as compatible; there is no feature flag or environment variable. Pi's Google transport maps Pi reasoning options to Google `thinkingConfig`:
97
+
98
+ - Gemini 2.5 models use `thinkingBudget`.
99
+ - Gemini 3 Flash / Flash-Lite models use `thinkingLevel` and hide the unsupported `off` level.
100
+ - Gemini 3 Pro / 3.1 Pro models expose only the supported visible levels: `low -> LOW` and `high -> HIGH`; unsupported `off`, `minimal`, and `medium` levels are hidden/skipped by Pi's thinking-level clamp.
101
+
102
+ If no explicit Pi reasoning level is selected, Pi still sends the official hidden lowest supported Google config for reasoning-capable Gemini 3 models so the request remains valid while not surfacing hidden thoughts.
103
+
104
+ ### Gemini Cache Limitation
105
+
106
+ Gemini now uses the correct Pi Google transport. If TheClawBay's `/v1beta` response includes `usageMetadata.cachedContentTokenCount`, Pi will count that as `cacheRead` usage. However, explicit Gemini cached-content creation is not available through TheClawBay at the moment: `v1beta/cachedContents` is blocked by the proxy (`proxy path not allowed: v1beta/cachedContents`). Do not expect or promise Gemini cache hits equivalent to the Codex path until TheClawBay allows that endpoint.
107
+
108
+ The Codex cache behavior must not be degraded: GPT/Codex models should continue using the native Codex route, `prompt_cache_key`, and `session_id` as before.
109
+
78
110
  Based on the live docs at `https://theclawbay.com/docs`:
79
111
 
80
112
  - OpenAI-compatible apps use `https://api.theclawbay.com/v1`
81
113
  - Native Codex config uses `https://api.theclawbay.com/backend-api/codex`
114
+ - Gemini-compatible apps use `https://api.theclawbay.com/v1beta`
82
115
  - The docs recommend calling `/models` first and selecting an available model dynamically
83
116
 
84
117
  ### GPT-5.4 Variants In This Extension
@@ -104,11 +137,12 @@ Why split it?
104
137
  - `gpt-5.4` is configured with a `272,000` token context window.
105
138
  - `gpt-5.4[1m]` is configured with a `1,050,000` token context window.
106
139
  - Current non-5.4 GPT-5/Codex variants default to `272,000` context and `128,000` max output tokens.
140
+ - Gemini variants discovered from `/v1/models` use Pi's Google transport with `1,048,576` context and `65,536` max output tokens.
107
141
  - `gpt-image-2` uses the hosted Responses image-generation path with `1024x1024` PNG output, `272,000` context metadata, and `65,536` max output metadata.
108
142
 
109
143
  ### Example Model List
110
144
 
111
- Current fallback list in this package:
145
+ Current fallback list in this package, used only when live discovery and cache are unavailable:
112
146
 
113
147
  - `gpt-5.5`
114
148
  - `gpt-5.4`
@@ -121,6 +155,8 @@ Current fallback list in this package:
121
155
  - `gpt-5.1-codex-max`
122
156
  - `gpt-5.1-codex-mini`
123
157
 
158
+ Live discovery may add newer GPT/Codex and Gemini models such as `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-3.1-pro-preview`, or `gemini-3-flash-preview` when TheClawBay exposes them for your account.
159
+
124
160
  `gpt-image-2` is exposed because TheClawBay's latest npm setup marks it as an image generation model backed by `codex-lb`. The extension uses the hosted Responses image tool instead of the synchronous Images API because realistic 1024x1024 prompts can exceed the Images route socket window and fail as `fetch failed`. Other native image-generation models returned by discovery, such as `gpt-image-1.5`, remain hidden until this extension has a dedicated, tested flow for them.
125
161
 
126
162
  ## Usage
@@ -133,10 +169,11 @@ Use `/model` command in pi:
133
169
  /model theclawbay/gpt-5.5
134
170
  /model theclawbay/gpt-5.4
135
171
  /model theclawbay/gpt-5.4[1m]
172
+ /model theclawbay/gemini-3-flash-preview
136
173
  /model theclawbay/gpt-image-2
137
174
  ```
138
175
 
139
- When `gpt-image-2` is selected, Pi receives a normal assistant message event sequence and the generated PNG is saved locally. Set `PI_CLAWBAY_IMAGE_DIR` to override the output directory; otherwise images are saved under Pi's generated-files directory. Transient hosted image failures are retried up to 5 times by default. Partial images are not reported as success unless `PI_CLAWBAY_IMAGE_ALLOW_PARTIAL=1` is set.
176
+ Gemini model IDs appear only when TheClawBay returns them from live discovery or the local discovery cache. When `gpt-image-2` is selected, Pi receives a normal assistant message event sequence and the generated PNG is saved locally. Set `PI_CLAWBAY_IMAGE_DIR` to override the output directory; otherwise images are saved under Pi's generated-files directory. Transient hosted image failures are retried up to 5 times by default. Partial images are not reported as success unless `PI_CLAWBAY_IMAGE_ALLOW_PARTIAL=1` is set.
140
177
 
141
178
  ### Commands
142
179
 
@@ -165,6 +202,7 @@ export default function (pi: ExtensionAPI) {
165
202
  // - theclawbay/gpt-5.4-mini
166
203
  // - theclawbay/gpt-image-2
167
204
  // - theclawbay/gpt-5.3-codex
205
+ // - theclawbay/gemini-3-flash-preview (when live discovery exposes it)
168
206
  }
169
207
  ```
170
208
 
@@ -172,19 +210,22 @@ export default function (pi: ExtensionAPI) {
172
210
 
173
211
  ### Endpoints
174
212
 
175
- | Provider | Base URL | API Type |
176
- |----------|----------|----------|
177
- | `theclawbay` | `https://api.theclawbay.com/backend-api/codex` | OpenAI Codex Responses |
213
+ | Model family | Base URL / Route | API Type |
214
+ |--------------|------------------|----------|
215
+ | `theclawbay/gpt-*`, `theclawbay/*codex*` | `https://api.theclawbay.com/backend-api/codex` | Custom Codex Responses transport (`theclawbay-codex-responses`) |
216
+ | `theclawbay/gemini-*` | `https://api.theclawbay.com/v1beta` | Pi `google-generative-ai` transport |
178
217
  | `theclawbay/gpt-image-2` | `https://api.theclawbay.com/backend-api/codex/responses` | Hosted Responses `image_generation` |
179
218
 
180
219
  ### Authentication
181
220
 
182
- All requests use Bearer token authentication:
221
+ All model families use the same `THECLAWBAY_API_KEY` value. GPT/Codex and hosted image requests use Bearer token authentication:
183
222
 
184
223
  ```text
185
224
  Authorization: Bearer THECLAWBAY_API_KEY
186
225
  ```
187
226
 
227
+ Gemini requests are sent by Pi's Google transport, which passes the same key using the Google SDK's API-key header (`x-goog-api-key`).
228
+
188
229
  ### Quota Checking
189
230
 
190
231
  Check your current usage:
@@ -219,9 +260,15 @@ Useful smoke checks:
219
260
  # Model registration and hidden image models
220
261
  PI_CLAWBAY_DEBUG=1 pi --no-extensions -e /path/to/pi-clawbay --list-models theclawbay
221
262
 
222
- # Basic reasoning/cache path
263
+ # Basic GPT/Codex reasoning path
223
264
  PI_CLAWBAY_DEBUG=1 pi --no-extensions -e /path/to/pi-clawbay --model theclawbay/gpt-5.4 --thinking low --no-session -p "Say OK and nothing else."
224
265
 
266
+ # Gemini native /v1beta path (choose a gemini-* id shown by --list-models)
267
+ PI_CLAWBAY_DEBUG=1 pi --no-extensions -e /path/to/pi-clawbay --model theclawbay/gemini-3-flash-preview --thinking off --no-session -p "Say OK and nothing else."
268
+
269
+ # Codex prompt-cache path: keep the same session so Pi emits prompt_cache_key/session_id
270
+ PI_CLAWBAY_DEBUG=1 pi --no-extensions -e /path/to/pi-clawbay --model theclawbay/gpt-5.4-mini -p "Summarize package.json in one sentence."
271
+
225
272
  # Tool-call path
226
273
  PI_CLAWBAY_DEBUG=1 pi --no-extensions -e /path/to/pi-clawbay --model theclawbay/gpt-5.4 --thinking low --tools ls -p "Use the ls tool on the current directory, then summarize whether package.json exists."
227
274
 
@@ -235,6 +282,9 @@ PI_CLAWBAY_IMAGE_DIR=/tmp/pi-clawbay-images pi --no-extensions -e /path/to/pi-cl
235
282
  - `401` or `invalid_api_key`: verify the key in the TheClawBay dashboard and in your shell environment.
236
283
  - `429`, `weekly_cost_limit_reached`, or `5h_cost_limit_reached`: run `/quota` or `/clawbay-quota` and wait for the reset window.
237
284
  - Model missing from `/model`: run `/clawbay-refresh-models`; if discovery still omits it, TheClawBay may not expose it for your account.
285
+ - Gemini model returns `404 upstream returned HTTP 404` on a Codex route: upgrade/reload this extension. `gemini-*` models must use Pi's `google-generative-ai` transport and TheClawBay `/v1beta`, not `backend-api/codex/responses`.
286
+ - Gemini cache is not showing Codex-style cache hits: expected for now. TheClawBay currently blocks `v1beta/cachedContents`; Pi will still report `cachedContentTokenCount` as `cacheRead` if the upstream route returns it.
287
+ - GPT/Codex cache behavior regresses: verify the request still uses `backend-api/codex`, includes `prompt_cache_key`, and sends `session_id` when Pi has a session id.
238
288
  - `gpt-image-2` missing: run `/clawbay-refresh-models`; if discovery still omits it, TheClawBay may not expose it for your account.
239
289
  - `gpt-image-1.5` missing: native image output models are intentionally hidden until this extension has a dedicated tested image flow for them.
240
290
 
@@ -1,5 +1,6 @@
1
1
  import type { ProviderModelConfig } from "@earendil-works/pi-coding-agent";
2
2
  export declare const THECLAWBAY_OPENAI_DISCOVERY_BASE_URL = "https://api.theclawbay.com/v1";
3
+ export declare const THECLAWBAY_GEMINI_BASE_URL = "https://api.theclawbay.com/v1beta";
3
4
  export declare const THECLAWBAY_CODEX_BASE_URL = "https://api.theclawbay.com/backend-api/codex";
4
5
  export declare const THECLAWBAY_CODEX_RESPONSES_URL = "https://api.theclawbay.com/backend-api/codex/responses";
5
6
  export declare const THECLAWBAY_QUOTA_URL = "https://theclawbay.com/api/codex-auth/v1/quota";
@@ -7,7 +8,7 @@ export declare const THECLAWBAY_OPENAI_MODELS_URL = "https://api.theclawbay.com/
7
8
  export declare const THECLAWBAY_IMAGES_GENERATIONS_URL = "https://api.theclawbay.com/v1/images/generations";
8
9
  export declare const THECLAWBAY_CODEX_API = "theclawbay-codex-responses";
9
10
  export declare const THECLAWBAY_CHATGPT_ACCOUNT_ID = "theclawbay";
10
- export declare const MODEL_CACHE_VERSION = 1;
11
+ export declare const MODEL_CACHE_VERSION = 2;
11
12
  export declare const MODEL_CACHE_TTL_MS: number;
12
13
  export declare const MODEL_DISCOVERY_TIMEOUT_MS = 10000;
13
14
  export declare const GPT_54_UPSTREAM_MODEL_ID = "gpt-5.4";
@@ -32,6 +33,8 @@ export declare const OPENAI_DEFAULT_CONTEXT_WINDOW = 272000;
32
33
  export declare const OPENAI_FRONTIER_CONTEXT_WINDOW = 1050000;
33
34
  export declare const OPENAI_DEFAULT_MAX_TOKENS = 128000;
34
35
  export declare const OPENAI_IMAGE_MAX_TOKENS = 65536;
36
+ export declare const GOOGLE_GEMINI_CONTEXT_WINDOW = 1048576;
37
+ export declare const GOOGLE_GEMINI_MAX_TOKENS = 65536;
35
38
  export declare const HIDDEN_MODEL_ID_PREFIXES: readonly ["gpt-image-"];
36
39
  export declare const PINNED_MODEL_IDS: string[];
37
40
  export declare const FALLBACK_OPENAI_MODEL_IDS: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,eAAO,MAAM,oCAAoC,kCAAkC,CAAC;AACpF,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,8BAA8B,2DAA2C,CAAC;AACvF,eAAO,MAAM,oBAAoB,mDAAmD,CAAC;AACrF,eAAO,MAAM,4BAA4B,yCAAmD,CAAC;AAC7F,eAAO,MAAM,iCAAiC,qDAA+D,CAAC;AAC9G,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,YAAY,4BAA6B,CAAC;AACvD,eAAO,MAAM,6BAA6B,mBAAoB,CAAC;AAC/D,eAAO,MAAM,+BAA+B;;;CAA8C,CAAC;AAC3F,eAAO,MAAM,SAAS;;;;;CAAgE,CAAC;AACvF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAW1E,CAAC;AACF,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,6BAA6B,SAA8B,CAAC;AACzE,eAAO,MAAM,8BAA8B,UAAU,CAAC;AACtD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,eAAO,MAAM,wBAAwB,yBAA0B,CAAC;AAChE,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,UAWrC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,eAAO,MAAM,oCAAoC,kCAAkC,CAAC;AACpF,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAC9E,eAAO,MAAM,yBAAyB,iDAAiD,CAAC;AACxF,eAAO,MAAM,8BAA8B,2DAA2C,CAAC;AACvF,eAAO,MAAM,oBAAoB,mDAAmD,CAAC;AACrF,eAAO,MAAM,4BAA4B,yCAAmD,CAAC;AAC7F,eAAO,MAAM,iCAAiC,qDAA+D,CAAC;AAC9G,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,YAAY,4BAA6B,CAAC;AACvD,eAAO,MAAM,6BAA6B,mBAAoB,CAAC;AAC/D,eAAO,MAAM,+BAA+B;;;CAA8C,CAAC;AAC3F,eAAO,MAAM,SAAS;;;;;CAAgE,CAAC;AACvF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAW1E,CAAC;AACF,eAAO,MAAM,2BAA2B,SAAS,CAAC;AAClD,eAAO,MAAM,6BAA6B,SAA8B,CAAC;AACzE,eAAO,MAAM,8BAA8B,UAAU,CAAC;AACtD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,4BAA4B,UAAU,CAAC;AACpD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,eAAO,MAAM,wBAAwB,yBAA0B,CAAC;AAChE,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,UAWrC,CAAC"}
package/dist/constants.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export const THECLAWBAY_OPENAI_DISCOVERY_BASE_URL = "https://api.theclawbay.com/v1";
2
+ export const THECLAWBAY_GEMINI_BASE_URL = "https://api.theclawbay.com/v1beta";
2
3
  export const THECLAWBAY_CODEX_BASE_URL = "https://api.theclawbay.com/backend-api/codex";
3
4
  export const THECLAWBAY_CODEX_RESPONSES_URL = `${THECLAWBAY_CODEX_BASE_URL}/responses`;
4
5
  export const THECLAWBAY_QUOTA_URL = "https://theclawbay.com/api/codex-auth/v1/quota";
@@ -6,7 +7,7 @@ export const THECLAWBAY_OPENAI_MODELS_URL = `${THECLAWBAY_OPENAI_DISCOVERY_BASE_
6
7
  export const THECLAWBAY_IMAGES_GENERATIONS_URL = `${THECLAWBAY_OPENAI_DISCOVERY_BASE_URL}/images/generations`;
7
8
  export const THECLAWBAY_CODEX_API = "theclawbay-codex-responses";
8
9
  export const THECLAWBAY_CHATGPT_ACCOUNT_ID = "theclawbay";
9
- export const MODEL_CACHE_VERSION = 1;
10
+ export const MODEL_CACHE_VERSION = 2;
10
11
  export const MODEL_CACHE_TTL_MS = 6 * 60 * 60 * 1000;
11
12
  export const MODEL_DISCOVERY_TIMEOUT_MS = 10_000;
12
13
  export const GPT_54_UPSTREAM_MODEL_ID = "gpt-5.4";
@@ -34,6 +35,8 @@ export const OPENAI_DEFAULT_CONTEXT_WINDOW = OPENAI_CODEX_CONTEXT_WINDOW;
34
35
  export const OPENAI_FRONTIER_CONTEXT_WINDOW = 1050000;
35
36
  export const OPENAI_DEFAULT_MAX_TOKENS = 128000;
36
37
  export const OPENAI_IMAGE_MAX_TOKENS = 65536;
38
+ export const GOOGLE_GEMINI_CONTEXT_WINDOW = 1048576;
39
+ export const GOOGLE_GEMINI_MAX_TOKENS = 65536;
37
40
  export const HIDDEN_MODEL_ID_PREFIXES = ["gpt-image-"];
38
41
  export const PINNED_MODEL_IDS = [];
39
42
  export const FALLBACK_OPENAI_MODEL_IDS = [
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ProviderModelConfig } from "@earendil-works/pi-coding-agent";
2
+ interface GoogleModelConfigInput {
3
+ id: string;
4
+ name: string;
5
+ cost: ProviderModelConfig["cost"];
6
+ }
7
+ type ThinkingLevelMap = NonNullable<ProviderModelConfig["thinkingLevelMap"]>;
8
+ export declare function isGoogleModelId(id: string): boolean;
9
+ export declare function supportsGoogleThinking(id: string): boolean;
10
+ export declare function resolveGoogleThinkingLevelMap(id: string): ThinkingLevelMap | undefined;
11
+ export declare function createGoogleModelConfig(input: GoogleModelConfigInput): ProviderModelConfig;
12
+ export {};
13
+ //# sourceMappingURL=google-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-models.d.ts","sourceRoot":"","sources":["../src/google-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,UAAU,sBAAsB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,KAAK,gBAAgB,GAAG,WAAW,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAK7E,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD;AAkBD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAUtF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,mBAAmB,CAe1F"}
@@ -0,0 +1,50 @@
1
+ import { GOOGLE_GEMINI_CONTEXT_WINDOW, GOOGLE_GEMINI_MAX_TOKENS, MODEL_INPUTS, THECLAWBAY_GEMINI_BASE_URL } from "./constants.js";
2
+ const GEMINI_3_FLASH_THINKING_LEVEL_MAP = { off: null };
3
+ const GEMINI_3_PRO_THINKING_LEVEL_MAP = { off: null, minimal: null, low: "LOW", medium: null, high: "HIGH" };
4
+ export function isGoogleModelId(id) {
5
+ return id.startsWith("gemini-");
6
+ }
7
+ function isGemini25ThinkingModel(id) {
8
+ return /^gemini-(?:live-)?2\.5-/.test(id);
9
+ }
10
+ function isGeminiLatestThinkingModel(id) {
11
+ return /^gemini-flash(?:-lite)?-latest$/.test(id);
12
+ }
13
+ function isGemini3FlashThinkingModel(id) {
14
+ return /^gemini-3(?:\.\d+)?-flash/.test(id);
15
+ }
16
+ function isGemini3ProThinkingModel(id) {
17
+ return /^gemini-3(?:\.\d+)?-pro/.test(id);
18
+ }
19
+ export function supportsGoogleThinking(id) {
20
+ return (isGemini25ThinkingModel(id) ||
21
+ isGeminiLatestThinkingModel(id) ||
22
+ isGemini3FlashThinkingModel(id) ||
23
+ isGemini3ProThinkingModel(id));
24
+ }
25
+ export function resolveGoogleThinkingLevelMap(id) {
26
+ if (isGemini3ProThinkingModel(id)) {
27
+ return { ...GEMINI_3_PRO_THINKING_LEVEL_MAP };
28
+ }
29
+ if (isGemini3FlashThinkingModel(id)) {
30
+ return { ...GEMINI_3_FLASH_THINKING_LEVEL_MAP };
31
+ }
32
+ return undefined;
33
+ }
34
+ export function createGoogleModelConfig(input) {
35
+ const reasoning = supportsGoogleThinking(input.id);
36
+ const thinkingLevelMap = resolveGoogleThinkingLevelMap(input.id);
37
+ return {
38
+ id: input.id,
39
+ name: input.name,
40
+ api: "google-generative-ai",
41
+ baseUrl: THECLAWBAY_GEMINI_BASE_URL,
42
+ reasoning,
43
+ ...(reasoning && thinkingLevelMap ? { thinkingLevelMap } : {}),
44
+ input: [...MODEL_INPUTS],
45
+ cost: { ...input.cost },
46
+ contextWindow: GOOGLE_GEMINI_CONTEXT_WINDOW,
47
+ maxTokens: GOOGLE_GEMINI_MAX_TOKENS,
48
+ };
49
+ }
50
+ //# sourceMappingURL=google-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-models.js","sourceRoot":"","sources":["../src/google-models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAUlI,MAAM,iCAAiC,GAAqB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC1E,MAAM,+BAA+B,GAAqB,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAE/H,MAAM,UAAU,eAAe,CAAC,EAAU;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAU;IAC1C,OAAO,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,2BAA2B,CAAC,EAAU;IAC9C,OAAO,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,2BAA2B,CAAC,EAAU;IAC9C,OAAO,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,yBAAyB,CAAC,EAAU;IAC5C,OAAO,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAU;IAChD,OAAO,CACN,uBAAuB,CAAC,EAAE,CAAC;QAC3B,2BAA2B,CAAC,EAAE,CAAC;QAC/B,2BAA2B,CAAC,EAAE,CAAC;QAC/B,yBAAyB,CAAC,EAAE,CAAC,CAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,EAAU;IACvD,IAAI,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,+BAA+B,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,GAAG,iCAAiC,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACpE,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO;QACN,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,sBAAsB;QAC3B,OAAO,EAAE,0BAA0B;QACnC,SAAS;QACT,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC;QACxB,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;QACvB,aAAa,EAAE,4BAA4B;QAC3C,SAAS,EAAE,wBAAwB;KACnC,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * TheClawBay Provider Extension for Pi Coding Agent
3
3
  *
4
- * Provides access to GPT-5 and Codex models through TheClawBay API.
5
- * Uses a single provider endpoint:
6
- * - `theclawbay`: OpenAI-compatible endpoint for GPT/Codex models
4
+ * Provides access to GPT-5, Codex, Gemini, and image models through TheClawBay API.
5
+ * Uses a single `theclawbay` provider with per-model routing:
6
+ * - GPT/Codex: custom native Codex transport for prompt-cache hits
7
+ * - Gemini: Pi's native google-generative-ai transport against TheClawBay /v1beta
8
+ * - gpt-image-2: hosted Codex Responses image_generation tool
7
9
  *
8
10
  * Features:
9
11
  * - /quota command to check detailed usage
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAoBpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAiB/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAoBpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAiB/C"}
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * TheClawBay Provider Extension for Pi Coding Agent
3
3
  *
4
- * Provides access to GPT-5 and Codex models through TheClawBay API.
5
- * Uses a single provider endpoint:
6
- * - `theclawbay`: OpenAI-compatible endpoint for GPT/Codex models
4
+ * Provides access to GPT-5, Codex, Gemini, and image models through TheClawBay API.
5
+ * Uses a single `theclawbay` provider with per-model routing:
6
+ * - GPT/Codex: custom native Codex transport for prompt-cache hits
7
+ * - Gemini: Pi's native google-generative-ai transport against TheClawBay /v1beta
8
+ * - gpt-image-2: hosted Codex Responses image_generation tool
7
9
  *
8
10
  * Features:
9
11
  * - /quota command to check detailed usage
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE7D,SAAS,QAAQ,CAAC,OAAe;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB;IACzB,OAAO,CAAC,IAAI,CACX,kDAAkD;QACjD,mDAAmD;QACnD,8CAA8C;QAC9C,8CAA8C,CAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,WAAW,EAAgB;IACxC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,iBAAiB,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,eAAe,MAAM,CAAC,MAAM,kBAAkB,MAAM,GAAG,CAAC,CAAC;IAClE,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE9B,IAAI,MAAM,EAAE,CAAC;QACZ,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzB,2BAA2B,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE7D,SAAS,QAAQ,CAAC,OAAe;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB;IACzB,OAAO,CAAC,IAAI,CACX,kDAAkD;QACjD,mDAAmD;QACnD,8CAA8C;QAC9C,8CAA8C,CAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,WAAW,EAAgB;IACxC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,iBAAiB,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,eAAe,MAAM,CAAC,MAAM,kBAAkB,MAAM,GAAG,CAAC,CAAC;IAClE,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE9B,IAAI,MAAM,EAAE,CAAC;QACZ,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzB,2BAA2B,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,10 +1,16 @@
1
1
  import type { ExtensionAPI, ProviderModelConfig } from "@earendil-works/pi-coding-agent";
2
+ import type { TheClawBayModelMetadata } from "./types.js";
2
3
  export declare function getModelCachePath(): string;
3
4
  export declare function readCachedModelIds(now?: number, options?: {
4
5
  allowStale?: boolean;
5
6
  }): string[] | null;
7
+ export declare function readCachedModelMetadata(now?: number, options?: {
8
+ allowStale?: boolean;
9
+ }): TheClawBayModelMetadata[] | null;
6
10
  export declare function writeCachedModelIds(ids: string[], now?: number): void;
11
+ export declare function writeCachedModelMetadata(models: TheClawBayModelMetadata[], now?: number): void;
7
12
  export declare function fetchOpenAIModelIds(apiKey: string): Promise<string[] | null>;
13
+ export declare function fetchOpenAIModelMetadata(apiKey: string): Promise<TheClawBayModelMetadata[] | null>;
8
14
  export declare function refreshProviderModelsNow(pi: ExtensionAPI, apiKey: string): Promise<number | null>;
9
15
  export declare function refreshProviderModels(pi: ExtensionAPI, apiKey: string): void;
10
16
  export declare function registerModelRefreshCommand(pi: ExtensionAPI, getApiKey: () => string | undefined): void;
@@ -1 +1 @@
1
- {"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../src/model-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAA2B,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMlH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAQD,wBAAgB,kBAAkB,CAAC,GAAG,SAAa,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAYxG;AAsBD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,SAAa,GAAG,IAAI,CASzE;AAUD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAqBlF;AAQD,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUvG;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAW5E;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CA2BvG;AAED,wBAAgB,kBAAkB,IAAI;IAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,CAOpG"}
1
+ {"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../src/model-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAA2B,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAIlH,OAAO,KAAK,EAA2C,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEnG,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAQD,wBAAgB,kBAAkB,CAAC,GAAG,SAAa,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAGxG;AAED,wBAAgB,uBAAuB,CAAC,GAAG,SAAa,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAY9H;AA8DD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,SAAa,GAAG,IAAI,CAEzE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,EAAE,EAAE,GAAG,SAAa,GAAG,IAAI,CAQlG;AAYD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAGlF;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,GAAG,IAAI,CAAC,CAqBxG;AA6BD,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUvG;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAW5E;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CA2BvG;AAED,wBAAgB,kBAAkB,IAAI;IAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,CAOpG"}
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { dirname, join } from "node:path";
4
4
  import { MODEL_CACHE_TTL_MS, MODEL_CACHE_VERSION, MODEL_DISCOVERY_TIMEOUT_MS, THECLAWBAY_OPENAI_MODELS_URL } from "./constants.js";
5
- import { buildFallbackOpenAIModels, buildOpenAIModels, normalizeOpenAIModelIds } from "./models.js";
5
+ import { buildFallbackOpenAIModels, buildOpenAIModels, normalizeOpenAIModelIds, normalizeOpenAIModelMetadata } from "./models.js";
6
6
  import { registerProviders } from "./provider.js";
7
7
  export function getModelCachePath() {
8
8
  const overrideDir = process.env.PI_CLAWBAY_CACHE_DIR?.trim();
@@ -18,6 +18,10 @@ function debugLog(message) {
18
18
  }
19
19
  }
20
20
  export function readCachedModelIds(now = Date.now(), options) {
21
+ const metadata = readCachedModelMetadata(now, options);
22
+ return metadata ? metadata.map((model) => model.id) : null;
23
+ }
24
+ export function readCachedModelMetadata(now = Date.now(), options) {
21
25
  try {
22
26
  const cachePath = getModelCachePath();
23
27
  if (!existsSync(cachePath)) {
@@ -32,7 +36,7 @@ export function readCachedModelIds(now = Date.now(), options) {
32
36
  }
33
37
  function readValidCacheFile(cachePath, now, options) {
34
38
  const parsed = JSON.parse(readFileSync(cachePath, "utf8"));
35
- if (parsed.version !== MODEL_CACHE_VERSION || !Array.isArray(parsed.modelIds) || typeof parsed.fetchedAt !== "string") {
39
+ if (!isSupportedCacheVersion(parsed.version) || typeof parsed.fetchedAt !== "string") {
36
40
  return null;
37
41
  }
38
42
  const fetchedAt = Date.parse(parsed.fetchedAt);
@@ -42,29 +46,69 @@ function readValidCacheFile(cachePath, now, options) {
42
46
  if (!options?.allowStale && now - fetchedAt > MODEL_CACHE_TTL_MS) {
43
47
  return null;
44
48
  }
45
- const rawIds = parsed.modelIds.filter((id) => typeof id === "string" && id.length > 0);
46
- const ids = normalizeOpenAIModelIds(rawIds, { includePinned: true });
47
- return ids.length > 0 ? ids : null;
49
+ const rawModels = extractCachedModelMetadata(parsed);
50
+ const models = normalizeOpenAIModelMetadata(rawModels, { includePinned: true });
51
+ return models.length > 0 ? models : null;
52
+ }
53
+ function isSupportedCacheVersion(version) {
54
+ return version === MODEL_CACHE_VERSION || version === 1;
55
+ }
56
+ function extractCachedModelMetadata(parsed) {
57
+ if (Array.isArray(parsed.models)) {
58
+ return parsed.models
59
+ .map(normalizeCachedModelEntry)
60
+ .filter((model) => model !== null);
61
+ }
62
+ const rawIds = Array.isArray(parsed.modelIds) ? parsed.modelIds : [];
63
+ return normalizeOpenAIModelIds(rawIds.filter((id) => typeof id === "string" && id.length > 0), { includePinned: true }).map((id) => ({ id }));
64
+ }
65
+ function normalizeCachedModelEntry(entry) {
66
+ if (!entry || typeof entry !== "object") {
67
+ return null;
68
+ }
69
+ const source = entry;
70
+ if (typeof source.id !== "string" || source.id.trim().length === 0) {
71
+ return null;
72
+ }
73
+ return {
74
+ id: source.id.trim(),
75
+ ...(typeof source.name === "string" && source.name.trim().length > 0 ? { name: source.name.trim() } : {}),
76
+ ...(typeof source.supportsReasoning === "boolean" ? { supportsReasoning: source.supportsReasoning } : {}),
77
+ ...(Array.isArray(source.supportedReasoningEfforts)
78
+ ? { supportedReasoningEfforts: source.supportedReasoningEfforts.filter(isNonEmptyString) }
79
+ : {}),
80
+ ...(source.defaultReasoningEffort === null || typeof source.defaultReasoningEffort === "string"
81
+ ? { defaultReasoningEffort: source.defaultReasoningEffort }
82
+ : {}),
83
+ };
48
84
  }
49
85
  export function writeCachedModelIds(ids, now = Date.now()) {
86
+ writeCachedModelMetadata(ids.map((id) => ({ id })), now);
87
+ }
88
+ export function writeCachedModelMetadata(models, now = Date.now()) {
50
89
  try {
51
90
  const cachePath = getModelCachePath();
52
91
  mkdirSync(dirname(cachePath), { recursive: true });
53
- writeFileSync(cachePath, `${JSON.stringify(buildCacheFile(ids, now), null, 2)}\n`, "utf8");
92
+ writeFileSync(cachePath, `${JSON.stringify(buildCacheFile(models, now), null, 2)}\n`, "utf8");
54
93
  }
55
94
  catch (error) {
56
- // Cache writes are best-effort; provider registration should not fail if the cache is unavailable.
57
95
  debugLog(`Failed to write model cache: ${error instanceof Error ? error.message : String(error)}`);
58
96
  }
59
97
  }
60
- function buildCacheFile(ids, now) {
98
+ function buildCacheFile(models, now) {
99
+ const normalized = normalizeOpenAIModelMetadata(models, { includePinned: true });
61
100
  return {
62
101
  version: MODEL_CACHE_VERSION,
63
102
  fetchedAt: new Date(now).toISOString(),
64
- modelIds: normalizeOpenAIModelIds(ids, { includePinned: true }),
103
+ modelIds: normalized.map((model) => model.id),
104
+ models: normalized,
65
105
  };
66
106
  }
67
107
  export async function fetchOpenAIModelIds(apiKey) {
108
+ const metadata = await fetchOpenAIModelMetadata(apiKey);
109
+ return metadata ? metadata.map((model) => model.id) : null;
110
+ }
111
+ export async function fetchOpenAIModelMetadata(apiKey) {
68
112
  try {
69
113
  const response = await fetch(THECLAWBAY_OPENAI_MODELS_URL, {
70
114
  headers: {
@@ -77,26 +121,45 @@ export async function fetchOpenAIModelIds(apiKey) {
77
121
  return null;
78
122
  }
79
123
  const payload = (await response.json());
80
- const ids = normalizeOpenAIModelIds(extractModelIds(payload), { includePinned: true });
81
- return ids.length > 0 ? ids : null;
124
+ const models = normalizeOpenAIModelMetadata(extractModelMetadata(payload), { includePinned: true });
125
+ return models.length > 0 ? models : null;
82
126
  }
83
127
  catch (error) {
84
128
  debugLog(`Model discovery failed: ${error instanceof Error ? error.message : String(error)}`);
85
129
  return null;
86
130
  }
87
131
  }
88
- function extractModelIds(payload) {
132
+ function extractModelMetadata(payload) {
89
133
  return (payload.data ?? [])
90
- .map((entry) => entry.id?.trim())
91
- .filter((id) => typeof id === "string" && id.length > 0);
134
+ .map((entry) => {
135
+ const id = entry.id?.trim();
136
+ if (!id) {
137
+ return null;
138
+ }
139
+ return {
140
+ id,
141
+ ...(typeof entry.display_name === "string" && entry.display_name.trim().length > 0 ? { name: entry.display_name.trim() } : {}),
142
+ ...(typeof entry.supports_reasoning === "boolean" ? { supportsReasoning: entry.supports_reasoning } : {}),
143
+ ...(Array.isArray(entry.supported_reasoning_efforts)
144
+ ? { supportedReasoningEfforts: entry.supported_reasoning_efforts.filter(isNonEmptyString) }
145
+ : {}),
146
+ ...(entry.default_reasoning_effort === null || typeof entry.default_reasoning_effort === "string"
147
+ ? { defaultReasoningEffort: entry.default_reasoning_effort }
148
+ : {}),
149
+ };
150
+ })
151
+ .filter((model) => model !== null);
152
+ }
153
+ function isNonEmptyString(value) {
154
+ return typeof value === "string" && value.trim().length > 0;
92
155
  }
93
156
  export async function refreshProviderModelsNow(pi, apiKey) {
94
- const ids = await fetchOpenAIModelIds(apiKey);
95
- if (!ids) {
157
+ const metadata = await fetchOpenAIModelMetadata(apiKey);
158
+ if (!metadata) {
96
159
  return null;
97
160
  }
98
- writeCachedModelIds(ids);
99
- const models = buildOpenAIModels(ids);
161
+ writeCachedModelMetadata(metadata);
162
+ const models = buildOpenAIModels(metadata);
100
163
  registerProviders(pi, models);
101
164
  return models.length;
102
165
  }
@@ -139,9 +202,9 @@ export function registerModelRefreshCommand(pi, getApiKey) {
139
202
  });
140
203
  }
141
204
  export function loadProviderModels() {
142
- const cachedIds = readCachedModelIds(Date.now(), { allowStale: true });
143
- if (cachedIds) {
144
- return { models: buildOpenAIModels(cachedIds), source: "cache" };
205
+ const cachedModels = readCachedModelMetadata(Date.now(), { allowStale: true });
206
+ if (cachedModels) {
207
+ return { models: buildOpenAIModels(cachedModels), source: "cache" };
145
208
  }
146
209
  return { models: buildFallbackOpenAIModels(), source: "fallback" };
147
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../src/model-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../src/model-cache.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import type { ProviderModelConfig } from "@earendil-works/pi-coding-agent";
2
+ import type { TheClawBayModelMetadata } from "./types.js";
3
+ export { isGoogleModelId } from "./google-models.js";
4
+ type ModelSource = string | TheClawBayModelMetadata;
2
5
  export declare function dedupeIds(ids: string[]): string[];
3
6
  export declare function isSupportedImageGenerationModel(id: string): boolean;
4
- export declare function buildOpenAIModels(ids: string[]): ProviderModelConfig[];
7
+ export declare function buildOpenAIModels(sources: ModelSource[]): ProviderModelConfig[];
5
8
  export declare function buildFallbackOpenAIModels(): ProviderModelConfig[];
6
9
  export declare function normalizeOpenAIModelIds(ids: string[], options?: {
7
10
  includePinned?: boolean;
8
11
  }): string[];
12
+ export declare function normalizeOpenAIModelMetadata(models: TheClawBayModelMetadata[], options?: {
13
+ includePinned?: boolean;
14
+ }): TheClawBayModelMetadata[];
9
15
  export declare function resolveUpstreamModelId(id: string): string;
10
16
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAqB3E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAYjD;AA2CD,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnE;AA8CD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAEtE;AAED,wBAAgB,yBAAyB,IAAI,mBAAmB,EAAE,CAEjE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAGtG;AAcD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMzD"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAoB3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,KAAK,WAAW,GAAG,MAAM,GAAG,uBAAuB,CAAC;AAgBpD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAYjD;AAqDD,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnE;AAmHD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAE/E;AAED,wBAAgB,yBAAyB,IAAI,mBAAmB,EAAE,CAEjE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAGtG;AAED,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,uBAAuB,EAAE,EACjC,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACnC,uBAAuB,EAAE,CAQ3B;AA+BD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMzD"}
package/dist/models.js CHANGED
@@ -1,4 +1,18 @@
1
- import { FALLBACK_OPENAI_MODEL_IDS, HIDDEN_MODEL_ID_PREFIXES, GPT_IMAGE_2_MODEL_ID, GPT_54_1M_MODEL_ID, GPT_54_DEFAULT_MODEL_ID, GPT_54_UPSTREAM_MODEL_ID, IMAGE_GENERATION_MODEL_INPUTS, MODEL_INPUTS, OPENAI_CODEX_CONTEXT_WINDOW, OPENAI_CODEX_THINKING_LEVEL_MAP, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS, OPENAI_FRONTIER_CONTEXT_WINDOW, OPENAI_IMAGE_MAX_TOKENS, OPENAI_KNOWN_COSTS, PINNED_MODEL_IDS, ZERO_COST, } from "./constants.js";
1
+ import { FALLBACK_OPENAI_MODEL_IDS, HIDDEN_MODEL_ID_PREFIXES, GPT_IMAGE_2_MODEL_ID, GPT_54_1M_MODEL_ID, GPT_54_DEFAULT_MODEL_ID, GPT_54_UPSTREAM_MODEL_ID, IMAGE_GENERATION_MODEL_INPUTS, MODEL_INPUTS, OPENAI_CODEX_CONTEXT_WINDOW, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS, OPENAI_FRONTIER_CONTEXT_WINDOW, OPENAI_IMAGE_MAX_TOKENS, OPENAI_KNOWN_COSTS, PINNED_MODEL_IDS, ZERO_COST, } from "./constants.js";
2
+ import { createGoogleModelConfig, isGoogleModelId, resolveGoogleThinkingLevelMap, supportsGoogleThinking } from "./google-models.js";
3
+ export { isGoogleModelId } from "./google-models.js";
4
+ const FALLBACK_REASONING_EFFORTS = {
5
+ "gpt-5.5": ["low", "medium", "high", "xhigh"],
6
+ [GPT_54_DEFAULT_MODEL_ID]: ["minimal", "low", "medium", "high"],
7
+ [GPT_54_1M_MODEL_ID]: ["minimal", "low", "medium", "high"],
8
+ "gpt-5.4-mini": ["minimal", "low", "medium", "high"],
9
+ "gpt-5.3-codex": ["low", "medium", "high"],
10
+ "codex-auto-review": ["low", "medium", "high"],
11
+ "gpt-5.2-codex": ["low", "medium", "high", "xhigh"],
12
+ "gpt-5.2": ["none", "low", "medium", "high", "xhigh"],
13
+ "gpt-5.1-codex-max": ["none", "medium", "high", "xhigh"],
14
+ "gpt-5.1-codex-mini": ["medium", "high"],
15
+ };
2
16
  export function dedupeIds(ids) {
3
17
  const seen = new Set();
4
18
  const deduped = [];
@@ -10,6 +24,17 @@ export function dedupeIds(ids) {
10
24
  }
11
25
  return deduped;
12
26
  }
27
+ function dedupeModelMetadata(models) {
28
+ const seen = new Set();
29
+ const deduped = [];
30
+ for (const model of models) {
31
+ if (!seen.has(model.id)) {
32
+ seen.add(model.id);
33
+ deduped.push(model);
34
+ }
35
+ }
36
+ return deduped;
37
+ }
13
38
  function toTitleCase(value) {
14
39
  if (value.length === 0) {
15
40
  return value;
@@ -38,52 +63,113 @@ function formatGenericModelName(id) {
38
63
  function formatModelNamePart(part) {
39
64
  return /^\d+(\.\d+)?$/.test(part) ? part.toUpperCase() : toTitleCase(part);
40
65
  }
41
- function isGpt54Or55Model(id) {
42
- return id.startsWith("gpt-5.4") || id.startsWith("gpt-5.5");
43
- }
44
66
  export function isSupportedImageGenerationModel(id) {
45
67
  return id === GPT_IMAGE_2_MODEL_ID;
46
68
  }
47
69
  function isHiddenImageGenerationModel(id) {
48
70
  return HIDDEN_MODEL_ID_PREFIXES.some((prefix) => id.startsWith(prefix)) && !isSupportedImageGenerationModel(id);
49
71
  }
50
- function createModelConfig(id, name, cost, contextWindow, maxTokens) {
72
+ function toModelMetadata(source) {
73
+ return typeof source === "string" ? { id: source } : source;
74
+ }
75
+ function withFallbackMetadata(id) {
76
+ return {
77
+ id,
78
+ ...(FALLBACK_REASONING_EFFORTS[id]
79
+ ? { supportsReasoning: true, supportedReasoningEfforts: [...FALLBACK_REASONING_EFFORTS[id]] }
80
+ : {}),
81
+ };
82
+ }
83
+ function createModelConfig(id, name, cost, contextWindow, maxTokens, options) {
51
84
  const isImageModel = isSupportedImageGenerationModel(id);
52
- const isReasoningModel = !isImageModel;
85
+ const isReasoningModel = options?.reasoning ?? !isImageModel;
53
86
  return {
54
87
  id,
55
88
  name,
89
+ ...(options?.api ? { api: options.api } : {}),
90
+ ...(options?.baseUrl ? { baseUrl: options.baseUrl } : {}),
56
91
  reasoning: isReasoningModel,
57
- ...(isReasoningModel && isGpt54Or55Model(id) ? { thinkingLevelMap: { ...OPENAI_CODEX_THINKING_LEVEL_MAP } } : {}),
92
+ ...(isReasoningModel && options?.thinkingLevelMap ? { thinkingLevelMap: { ...options.thinkingLevelMap } } : {}),
58
93
  input: isImageModel ? [...IMAGE_GENERATION_MODEL_INPUTS] : [...MODEL_INPUTS],
59
94
  cost: { ...cost },
60
95
  contextWindow,
61
96
  maxTokens,
62
97
  };
63
98
  }
64
- function createOpenAIModel(id) {
99
+ function resolveReasoning(metadata) {
100
+ if (isSupportedImageGenerationModel(metadata.id)) {
101
+ return false;
102
+ }
103
+ if (isGoogleModelId(metadata.id)) {
104
+ return supportsGoogleThinking(metadata.id);
105
+ }
106
+ if (typeof metadata.supportsReasoning === "boolean") {
107
+ return metadata.supportsReasoning;
108
+ }
109
+ return true;
110
+ }
111
+ function resolveThinkingLevelMap(metadata) {
112
+ if (!resolveReasoning(metadata)) {
113
+ return undefined;
114
+ }
115
+ if (isGoogleModelId(metadata.id)) {
116
+ return resolveGoogleThinkingLevelMap(metadata.id);
117
+ }
118
+ if (metadata.supportedReasoningEfforts) {
119
+ return buildThinkingLevelMap(metadata.supportedReasoningEfforts);
120
+ }
121
+ const fallbackEfforts = FALLBACK_REASONING_EFFORTS[metadata.id];
122
+ return fallbackEfforts ? buildThinkingLevelMap(fallbackEfforts) : undefined;
123
+ }
124
+ function buildThinkingLevelMap(efforts) {
125
+ const supported = new Set(efforts.filter((effort) => typeof effort === "string" && effort.length > 0));
126
+ return {
127
+ off: supported.has("none") ? "none" : null,
128
+ minimal: supported.has("minimal") ? "minimal" : supported.has("low") ? "low" : null,
129
+ low: supported.has("low") ? "low" : null,
130
+ medium: supported.has("medium") ? "medium" : null,
131
+ high: supported.has("high") ? "high" : null,
132
+ xhigh: supported.has("xhigh") ? "xhigh" : null,
133
+ };
134
+ }
135
+ function createOpenAIModel(source) {
136
+ const metadata = toModelMetadata(source);
137
+ const id = metadata.id;
65
138
  const cost = OPENAI_KNOWN_COSTS[id] ?? ZERO_COST;
139
+ const name = metadata.name?.trim() || formatOpenAIModelName(id);
140
+ const options = { reasoning: resolveReasoning(metadata), thinkingLevelMap: resolveThinkingLevelMap(metadata) };
66
141
  if (id === GPT_54_DEFAULT_MODEL_ID) {
67
- return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_CODEX_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
142
+ return createModelConfig(id, name, cost, OPENAI_CODEX_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS, options);
68
143
  }
69
144
  if (id === GPT_54_1M_MODEL_ID) {
70
- return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_FRONTIER_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
145
+ return createModelConfig(id, name, cost, OPENAI_FRONTIER_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS, options);
71
146
  }
72
147
  if (id === GPT_IMAGE_2_MODEL_ID) {
73
- return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_IMAGE_MAX_TOKENS);
148
+ return createModelConfig(id, name, cost, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_IMAGE_MAX_TOKENS, options);
149
+ }
150
+ if (isGoogleModelId(id)) {
151
+ return createGoogleModelConfig({ id, name, cost });
74
152
  }
75
- return createModelConfig(id, formatOpenAIModelName(id), cost, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS);
153
+ return createModelConfig(id, name, cost, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS, options);
76
154
  }
77
- export function buildOpenAIModels(ids) {
78
- return dedupeIds(ids).map((id) => createOpenAIModel(id));
155
+ export function buildOpenAIModels(sources) {
156
+ return dedupeModelMetadata(sources.map(toModelMetadata)).map((model) => createOpenAIModel(model));
79
157
  }
80
158
  export function buildFallbackOpenAIModels() {
81
- return buildOpenAIModels(FALLBACK_OPENAI_MODEL_IDS);
159
+ return buildOpenAIModels(FALLBACK_OPENAI_MODEL_IDS.map(withFallbackMetadata));
82
160
  }
83
161
  export function normalizeOpenAIModelIds(ids, options) {
84
162
  const normalized = dedupeIds(ids.flatMap(normalizeOpenAIModelId));
85
163
  return options?.includePinned ? dedupeIds([...normalized, ...PINNED_MODEL_IDS]) : normalized;
86
164
  }
165
+ export function normalizeOpenAIModelMetadata(models, options) {
166
+ const normalized = dedupeModelMetadata(models.flatMap(normalizeOpenAIModelMetadataEntry));
167
+ if (!options?.includePinned) {
168
+ return normalized;
169
+ }
170
+ const pinned = PINNED_MODEL_IDS.map(withFallbackMetadata);
171
+ return dedupeModelMetadata([...normalized, ...pinned]);
172
+ }
87
173
  function normalizeOpenAIModelId(id) {
88
174
  if (id.startsWith("claude-") || id === "gpt-5.4-pro" || isHiddenImageGenerationModel(id)) {
89
175
  return [];
@@ -93,6 +179,20 @@ function normalizeOpenAIModelId(id) {
93
179
  }
94
180
  return [id];
95
181
  }
182
+ function normalizeOpenAIModelMetadataEntry(model) {
183
+ const id = model.id.trim();
184
+ if (normalizeOpenAIModelId(id).length === 0) {
185
+ return [];
186
+ }
187
+ const normalized = { ...model, id };
188
+ if (id === GPT_54_UPSTREAM_MODEL_ID) {
189
+ return [
190
+ { ...normalized, id: GPT_54_DEFAULT_MODEL_ID, name: model.name || formatOpenAIModelName(GPT_54_DEFAULT_MODEL_ID) },
191
+ { ...normalized, id: GPT_54_1M_MODEL_ID, name: formatOpenAIModelName(GPT_54_1M_MODEL_ID) },
192
+ ];
193
+ }
194
+ return [normalized];
195
+ }
96
196
  export function resolveUpstreamModelId(id) {
97
197
  if (id === GPT_54_1M_MODEL_ID) {
98
198
  return GPT_54_UPSTREAM_MODEL_ID;
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,12 +1,24 @@
1
+ export interface TheClawBayModelMetadata {
2
+ id: string;
3
+ name?: string;
4
+ supportsReasoning?: boolean;
5
+ supportedReasoningEfforts?: string[];
6
+ defaultReasoningEffort?: string | null;
7
+ }
1
8
  export interface OpenAIModelListResponse {
2
9
  data?: Array<{
3
10
  id?: string;
11
+ display_name?: string;
12
+ supports_reasoning?: boolean;
13
+ supported_reasoning_efforts?: string[];
14
+ default_reasoning_effort?: string | null;
4
15
  }>;
5
16
  }
6
17
  export interface ModelCacheFile {
7
18
  version?: number;
8
19
  fetchedAt?: string;
9
20
  modelIds?: string[];
21
+ models?: TheClawBayModelMetadata[];
10
22
  }
11
23
  export interface QuotaWindow {
12
24
  secondsUntilReset?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,EAAE,KAAK,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,EAAE,KAAK,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;QACvC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACzC,CAAC,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,WAAW,CAAC;QACvB,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-clawbay",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "description": "TheClawBay provider extension for Pi Coding Agent - access GPT-5 and Codex models",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",