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 +68 -18
- package/dist/constants.d.ts +4 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -1
- package/dist/constants.js.map +1 -1
- package/dist/google-models.d.ts +13 -0
- package/dist/google-models.d.ts.map +1 -0
- package/dist/google-models.js +50 -0
- package/dist/google-models.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/model-cache.d.ts +6 -0
- package/dist/model-cache.d.ts.map +1 -1
- package/dist/model-cache.js +84 -21
- package/dist/model-cache.js.map +1 -1
- package/dist/models.d.ts +7 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +115 -15
- package/dist/models.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
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
|
|
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
|
|
8
|
-
- **
|
|
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
|
|
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
|
-
|
|
61
|
+
### Routing and Cache Behavior
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
The extension keeps one Pi provider, `theclawbay`, and routes by model family:
|
|
63
64
|
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
|
|
|
176
|
-
|
|
177
|
-
| `theclawbay` | `https://api.theclawbay.com/backend-api/codex` |
|
|
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
|
|
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
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -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 =
|
|
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[];
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -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;
|
|
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 =
|
|
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 = [
|
package/dist/constants.js.map
CHANGED
|
@@ -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
|
|
5
|
-
* Uses a single provider
|
|
6
|
-
* -
|
|
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.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
5
|
-
* Uses a single provider
|
|
6
|
-
* -
|
|
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
|
|
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"}
|
package/dist/model-cache.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/model-cache.js
CHANGED
|
@@ -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 (
|
|
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
|
|
46
|
-
const
|
|
47
|
-
return
|
|
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(
|
|
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(
|
|
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:
|
|
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
|
|
81
|
-
return
|
|
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
|
|
132
|
+
function extractModelMetadata(payload) {
|
|
89
133
|
return (payload.data ?? [])
|
|
90
|
-
.map((entry) =>
|
|
91
|
-
|
|
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
|
|
95
|
-
if (!
|
|
157
|
+
const metadata = await fetchOpenAIModelMetadata(apiKey);
|
|
158
|
+
if (!metadata) {
|
|
96
159
|
return null;
|
|
97
160
|
}
|
|
98
|
-
|
|
99
|
-
const models = buildOpenAIModels(
|
|
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
|
|
143
|
-
if (
|
|
144
|
-
return { models: buildOpenAIModels(
|
|
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
|
}
|
package/dist/model-cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../src/model-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AACnI,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
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(
|
|
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
|
package/dist/models.d.ts.map
CHANGED
|
@@ -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;
|
|
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,
|
|
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
|
|
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 &&
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
153
|
+
return createModelConfig(id, name, cost, OPENAI_DEFAULT_CONTEXT_WINDOW, OPENAI_DEFAULT_MAX_TOKENS, options);
|
|
76
154
|
}
|
|
77
|
-
export function buildOpenAIModels(
|
|
78
|
-
return
|
|
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;
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AACA,OAAO,EACN,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B
|
|
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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|