openai-ws-opencode 0.1.21 → 0.1.23

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/bin/setup.js CHANGED
@@ -8,12 +8,101 @@ import path from "node:path";
8
8
  import { fileURLToPath } from "node:url";
9
9
  import { applyEdits, format, modify, parse } from "jsonc-parser";
10
10
 
11
+ // src/models/catalog.ts
12
+ import crypto from "node:crypto";
13
+
11
14
  // src/constants.ts
12
15
  var OPENAI_API_BASE = "https://api.openai.com/v1";
13
16
  var CODEX_API_BASE = "https://chatgpt.com/backend-api/codex";
14
17
  var CODEX_API_ENDPOINT = `${CODEX_API_BASE}/responses`;
15
18
  var CODEX_MODELS_ENDPOINT = `${CODEX_API_BASE}/models`;
19
+ var CODEX_CLI_NPM_ENDPOINT = "https://registry.npmjs.org/@openai/codex";
16
20
  var OPENAI_MODELS_ENDPOINT = `${OPENAI_API_BASE}/models`;
21
+ var OPENAI_WS_BETA = "responses_websockets=2026-02-06";
22
+ var CODEX_ORIGINATOR = "opencode";
23
+ var USER_AGENT = "openai-ws-opencode/0.1.23";
24
+
25
+ // src/models/catalog.ts
26
+ var DEFAULT_TIMEOUT_MS = 800;
27
+ var CATALOG_TTL_MS = 30 * 60 * 1000;
28
+ var SKIP_CATALOG_ENV = "OPENAI_WS_OPENCODE_SKIP_CATALOG";
29
+ var cache = new Map;
30
+ function cacheKey(scope, credential, accountId = "") {
31
+ return `${scope}:${crypto.createHash("sha256").update(`${credential}:${accountId}`).digest("hex")}`;
32
+ }
33
+ function cached(key) {
34
+ const entry = cache.get(key);
35
+ if (!entry)
36
+ return { hit: false };
37
+ if (entry.expiresAt <= Date.now()) {
38
+ cache.delete(key);
39
+ return { hit: false };
40
+ }
41
+ return { hit: true, value: entry.value };
42
+ }
43
+ function setCached(key, value) {
44
+ cache.set(key, { expiresAt: Date.now() + CATALOG_TTL_MS, value });
45
+ return value;
46
+ }
47
+ function timeoutSignal(timeoutMs) {
48
+ return typeof AbortSignal !== "undefined" && typeof AbortSignal.timeout === "function" ? AbortSignal.timeout(timeoutMs) : undefined;
49
+ }
50
+ function fallbackCodexClientVersion(userAgent = USER_AGENT) {
51
+ return userAgent.includes("/") ? userAgent.split("/").at(-1) || userAgent : userAgent;
52
+ }
53
+ async function resolveCodexClientVersion(options = {}) {
54
+ if (process.env[SKIP_CATALOG_ENV] === "1")
55
+ return fallbackCodexClientVersion();
56
+ const key = "codex-cli-alpha-version";
57
+ const existing = cached(key);
58
+ if (existing.hit && existing.value)
59
+ return existing.value;
60
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
61
+ try {
62
+ const response = await fetchImpl(CODEX_CLI_NPM_ENDPOINT, {
63
+ signal: timeoutSignal(options.timeoutMs ?? DEFAULT_TIMEOUT_MS),
64
+ headers: { Accept: "application/json", "User-Agent": USER_AGENT }
65
+ });
66
+ if (!response.ok)
67
+ return setCached(key, fallbackCodexClientVersion()) ?? fallbackCodexClientVersion();
68
+ const json = await response.json();
69
+ const version = typeof json["dist-tags"]?.alpha === "string" ? json["dist-tags"].alpha : typeof json.version === "string" ? json.version : undefined;
70
+ return setCached(key, version ?? fallbackCodexClientVersion()) ?? fallbackCodexClientVersion();
71
+ } catch {
72
+ return setCached(key, fallbackCodexClientVersion()) ?? fallbackCodexClientVersion();
73
+ }
74
+ }
75
+ async function fetchCodexCatalog(options) {
76
+ if (process.env[SKIP_CATALOG_ENV] === "1")
77
+ return;
78
+ const key = cacheKey("codex", options.accessToken, options.accountId);
79
+ const existing = cached(key);
80
+ if (existing.hit)
81
+ return existing.value;
82
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
83
+ const url = new URL(CODEX_MODELS_ENDPOINT);
84
+ url.searchParams.set("client_version", await resolveCodexClientVersion({ fetchImpl, timeoutMs: options.timeoutMs }));
85
+ try {
86
+ const response = await fetchImpl(url, {
87
+ signal: timeoutSignal(options.timeoutMs ?? DEFAULT_TIMEOUT_MS),
88
+ headers: {
89
+ Authorization: `Bearer ${options.accessToken}`,
90
+ ...options.accountId ? { "ChatGPT-Account-Id": options.accountId } : {},
91
+ originator: CODEX_ORIGINATOR,
92
+ "OpenAI-Beta": OPENAI_WS_BETA,
93
+ "User-Agent": USER_AGENT
94
+ }
95
+ });
96
+ if (!response.ok)
97
+ return setCached(key, undefined);
98
+ const json = await response.json();
99
+ if (!Array.isArray(json.models))
100
+ return setCached(key, undefined);
101
+ return setCached(key, json.models);
102
+ } catch {
103
+ return setCached(key, undefined);
104
+ }
105
+ }
17
106
 
18
107
  // src/models/defaults.ts
19
108
  function makeVariants(efforts, includeSummary = true) {
@@ -27,12 +116,26 @@ function makeVariants(efforts, includeSummary = true) {
27
116
  ]));
28
117
  }
29
118
  var CODEX_EFFECTIVE_CONTEXT_WINDOW = 272000;
119
+ var CODEX_OUTPUT_TOKEN_LIMIT = 128000;
120
+ function codexLimit(overrides = {}) {
121
+ const context = positiveFinite(overrides.context) ?? CODEX_EFFECTIVE_CONTEXT_WINDOW;
122
+ const inputCandidate = positiveFinite(overrides.input) ?? CODEX_EFFECTIVE_CONTEXT_WINDOW;
123
+ const output = positiveFinite(overrides.output) ?? CODEX_OUTPUT_TOKEN_LIMIT;
124
+ return {
125
+ context,
126
+ input: Math.min(inputCandidate, context),
127
+ output
128
+ };
129
+ }
130
+ function positiveFinite(value) {
131
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
132
+ }
30
133
  var OPENAI_WS_MODELS = {
31
134
  "gpt-5.5": {
32
135
  name: "GPT 5.5 (WebSocket)",
33
136
  reasoning: true,
34
137
  temperature: false,
35
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
138
+ limit: codexLimit(),
36
139
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
37
140
  release_date: "2026-04-23"
38
141
  },
@@ -40,7 +143,7 @@ var OPENAI_WS_MODELS = {
40
143
  name: "GPT 5.4 (WebSocket)",
41
144
  reasoning: true,
42
145
  temperature: true,
43
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
146
+ limit: codexLimit({ context: 1e6 }),
44
147
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
45
148
  release_date: "2026-03-05"
46
149
  },
@@ -48,7 +151,7 @@ var OPENAI_WS_MODELS = {
48
151
  name: "GPT 5.4 Mini (WebSocket)",
49
152
  reasoning: true,
50
153
  temperature: true,
51
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
154
+ limit: codexLimit(),
52
155
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
53
156
  release_date: "2026-03-05"
54
157
  },
@@ -56,7 +159,7 @@ var OPENAI_WS_MODELS = {
56
159
  name: "GPT 5.3 Codex (WebSocket)",
57
160
  reasoning: true,
58
161
  temperature: false,
59
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
162
+ limit: codexLimit(),
60
163
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
61
164
  family: "gpt-codex",
62
165
  release_date: "2026-02-05"
@@ -65,13 +168,26 @@ var OPENAI_WS_MODELS = {
65
168
  name: "GPT 5.2 (WebSocket)",
66
169
  reasoning: true,
67
170
  temperature: true,
68
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
171
+ limit: codexLimit(),
69
172
  variants: makeVariants(["low", "medium", "high", "xhigh"]),
70
173
  release_date: "2025-12-10"
71
174
  }
72
175
  };
73
176
 
74
177
  // src/models/resolve.ts
178
+ function positiveFinite2(value) {
179
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
180
+ }
181
+ function limitFromCatalog(model, fallback) {
182
+ const context = positiveFinite2(model.max_context_window) ?? positiveFinite2(model.context_window) ?? fallback.context;
183
+ const inputCandidate = positiveFinite2(model.context_window) ?? positiveFinite2(fallback.input) ?? CODEX_EFFECTIVE_CONTEXT_WINDOW;
184
+ const output = positiveFinite2(model.max_output_tokens) ?? positiveFinite2(fallback.output) ?? CODEX_OUTPUT_TOKEN_LIMIT;
185
+ return {
186
+ context,
187
+ input: Math.min(inputCandidate, context),
188
+ output
189
+ };
190
+ }
75
191
  function modelToOpenCodeConfig(model) {
76
192
  return {
77
193
  name: model.name,
@@ -81,7 +197,7 @@ function modelToOpenCodeConfig(model) {
81
197
  reasoning: model.reasoning,
82
198
  temperature: model.temperature,
83
199
  tool_call: true,
84
- limit: model.limit,
200
+ limit: { ...model.limit },
85
201
  modalities: {
86
202
  input: ["text", "image"],
87
203
  output: ["text"]
@@ -118,11 +234,31 @@ function sanitizeBuiltInConfigOverride(override) {
118
234
  delete sanitized[key];
119
235
  return sanitized;
120
236
  }
121
- function providerConfigModels(overrides = {}) {
237
+ function catalogEntriesBySlug(catalog) {
238
+ const entries = new Map;
239
+ if (!catalog)
240
+ return entries;
241
+ for (const entry of catalog) {
242
+ if (typeof entry?.slug === "string" && entry.slug.length > 0)
243
+ entries.set(entry.slug, entry);
244
+ }
245
+ return entries;
246
+ }
247
+ function bundledModelWithCatalogLimit(id, model, catalogEntry) {
248
+ if (!catalogEntry)
249
+ return model;
250
+ const limit = limitFromCatalog(catalogEntry, model.limit);
251
+ if (limit.context === model.limit.context && limit.input === model.limit.input && limit.output === model.limit.output)
252
+ return model;
253
+ return { ...model, limit };
254
+ }
255
+ function providerConfigModels(overrides = {}, catalog) {
122
256
  const models = {};
257
+ const catalogBySlug = catalogEntriesBySlug(catalog);
123
258
  for (const [id, model] of Object.entries(OPENAI_WS_MODELS)) {
259
+ const effective = bundledModelWithCatalogLimit(id, model, catalogBySlug.get(id));
124
260
  models[id] = {
125
- ...modelToOpenCodeConfig(model),
261
+ ...modelToOpenCodeConfig(effective),
126
262
  ...sanitizeBuiltInConfigOverride(overrides[id])
127
263
  };
128
264
  }
@@ -135,12 +271,12 @@ function providerConfigModels(overrides = {}) {
135
271
  }
136
272
  return models;
137
273
  }
138
- function providerConfig(overrides = {}) {
274
+ function providerConfig(overrides = {}, catalog) {
139
275
  return {
140
276
  api: OPENAI_API_BASE,
141
277
  name: "OpenAI WebSocket",
142
278
  npm: "@ai-sdk/openai",
143
- models: providerConfigModels(overrides)
279
+ models: providerConfigModels(overrides, catalog)
144
280
  };
145
281
  }
146
282
 
@@ -179,7 +315,7 @@ function pluginPackageName(specifier) {
179
315
  const lastAt = specifier.lastIndexOf("@");
180
316
  return lastAt > 0 ? specifier.slice(0, lastAt) : specifier;
181
317
  }
182
- function patchConfigText(input, pluginSpec = DEFAULT_PLUGIN_SPEC, replacePluginSpec = false) {
318
+ function patchConfigText(input, pluginSpec = DEFAULT_PLUGIN_SPEC, replacePluginSpec = false, catalog) {
183
319
  let text = input.trim() ? input : "{}";
184
320
  const config = parse(text) ?? {};
185
321
  if (!config.$schema)
@@ -195,7 +331,7 @@ function patchConfigText(input, pluginSpec = DEFAULT_PLUGIN_SPEC, replacePluginS
195
331
  text = applyJsonPatch(text, ["plugin"], plugins);
196
332
  const next = parse(text) ?? {};
197
333
  const existingModels = next.provider?.["openai-ws"]?.models ?? {};
198
- text = applyJsonPatch(text, ["provider", "openai-ws"], providerConfig(existingModels));
334
+ text = applyJsonPatch(text, ["provider", "openai-ws"], providerConfig(existingModels, catalog));
199
335
  return applyEdits(text, format(text, undefined, {
200
336
  insertSpaces: true,
201
337
  tabSize: 2,
@@ -209,6 +345,45 @@ function isNotFound(error) {
209
345
  function cacheHomePath(cacheHome = process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), ".cache")) {
210
346
  return cacheHome;
211
347
  }
348
+ var CATALOG_FETCH_TIMEOUT_MS = 1500;
349
+ async function readCodexAuthSnapshot() {
350
+ const file = path.join(os.homedir(), ".codex", "auth.json");
351
+ let raw;
352
+ try {
353
+ raw = await fs.readFile(file, "utf8");
354
+ } catch {
355
+ return;
356
+ }
357
+ let parsed;
358
+ try {
359
+ parsed = JSON.parse(raw);
360
+ } catch {
361
+ return;
362
+ }
363
+ const accessToken = typeof parsed?.tokens?.access_token === "string" ? parsed.tokens.access_token : undefined;
364
+ if (!accessToken)
365
+ return;
366
+ const accountId = typeof parsed?.tokens?.account_id === "string" ? parsed.tokens.account_id : undefined;
367
+ return { accessToken, accountId };
368
+ }
369
+ async function resolveLiveCatalog(customFetch) {
370
+ try {
371
+ if (customFetch)
372
+ return await customFetch();
373
+ if (process.env.OPENAI_WS_OPENCODE_SKIP_CATALOG === "1")
374
+ return;
375
+ const snapshot = await readCodexAuthSnapshot();
376
+ if (!snapshot)
377
+ return;
378
+ return await fetchCodexCatalog({
379
+ accessToken: snapshot.accessToken,
380
+ accountId: snapshot.accountId,
381
+ timeoutMs: CATALOG_FETCH_TIMEOUT_MS
382
+ });
383
+ } catch {
384
+ return;
385
+ }
386
+ }
212
387
  function openCodeLatestCachePath(cacheHome) {
213
388
  return path.join(cacheHomePath(cacheHome), "opencode", "packages", `${PACKAGE_NAME}@latest`);
214
389
  }
@@ -329,7 +504,8 @@ async function setupOpenCodeConfig(options = {}) {
329
504
  if (error?.code !== "ENOENT")
330
505
  throw error;
331
506
  }
332
- const updated = patchConfigText(existing, options.pluginSpec ?? DEFAULT_PLUGIN_SPEC, Boolean(options.pluginSpec));
507
+ const catalog = options.catalog ?? await resolveLiveCatalog(options.catalogFetch);
508
+ const updated = patchConfigText(existing, options.pluginSpec ?? DEFAULT_PLUGIN_SPEC, Boolean(options.pluginSpec), catalog);
333
509
  await fs.mkdir(path.dirname(file), { recursive: true });
334
510
  await fs.writeFile(file, updated.endsWith(`
335
511
  `) ? updated : `${updated}
@@ -11,7 +11,7 @@ export declare const OPENAI_WS_URL = "wss://api.openai.com/v1/responses";
11
11
  export declare const CODEX_WS_URL = "wss://chatgpt.com/backend-api/codex/responses";
12
12
  export declare const OPENAI_WS_BETA = "responses_websockets=2026-02-06";
13
13
  export declare const CODEX_ORIGINATOR = "opencode";
14
- export declare const USER_AGENT = "openai-ws-opencode/0.1.20";
14
+ export declare const USER_AGENT = "openai-ws-opencode/0.1.23";
15
15
  export declare const CODEX_OAUTH_SCOPE = "openid profile email offline_access";
16
16
  export declare const OAUTH_PORT = 1455;
17
17
  export declare const X_CODEX_TURN_STATE_HEADER = "x-codex-turn-state";
package/dist/constants.js CHANGED
@@ -11,7 +11,7 @@ export const OPENAI_WS_URL = "wss://api.openai.com/v1/responses";
11
11
  export const CODEX_WS_URL = "wss://chatgpt.com/backend-api/codex/responses";
12
12
  export const OPENAI_WS_BETA = "responses_websockets=2026-02-06";
13
13
  export const CODEX_ORIGINATOR = "opencode";
14
- export const USER_AGENT = "openai-ws-opencode/0.1.20";
14
+ export const USER_AGENT = "openai-ws-opencode/0.1.23";
15
15
  export const CODEX_OAUTH_SCOPE = "openid profile email offline_access";
16
16
  export const OAUTH_PORT = 1455;
17
17
  export const X_CODEX_TURN_STATE_HEADER = "x-codex-turn-state";
@@ -8,6 +8,7 @@ export type CodexModelInfo = {
8
8
  description?: string;
9
9
  context_window?: number;
10
10
  max_context_window?: number;
11
+ max_output_tokens?: number | null;
11
12
  effective_context_window_percent?: number;
12
13
  supported_in_api?: boolean;
13
14
  priority?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gCAAgC,CAAC,EAAE,MAAM,CAAA;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,0BAA0B,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAClD,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,mBAAmB,GAAG,YAAY,GAAG;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,mBAAmB,GAAG,YAAY,GAAG;IACxC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAyBD,wBAAgB,0BAA0B,CAAC,SAAS,SAAa,GAAG,MAAM,CAEzE;AAED,wBAAsB,yBAAyB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB3F;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,CA2B3G;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAyBxG;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,gCAAgC,CAAC,EAAE,MAAM,CAAA;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,0BAA0B,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAClD,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,mBAAmB,GAAG,YAAY,GAAG;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,mBAAmB,GAAG,YAAY,GAAG;IACxC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAyBD,wBAAgB,0BAA0B,CAAC,SAAS,SAAa,GAAG,MAAM,CAEzE;AAED,wBAAsB,yBAAyB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB3F;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,CA2B3G;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAyBxG;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,8 @@ export interface OpenAIWSModelDef {
12
12
  release_date?: string;
13
13
  }
14
14
  export declare function makeVariants(efforts: string[], includeSummary?: boolean): Record<string, Record<string, unknown>>;
15
+ export declare const CODEX_EFFECTIVE_CONTEXT_WINDOW = 272000;
16
+ export declare const CODEX_OUTPUT_TOKEN_LIMIT = 128000;
17
+ export declare function codexLimit(overrides?: Partial<OpenAIWSModelDef["limit"]>): OpenAIWSModelDef["limit"];
15
18
  export declare const OPENAI_WS_MODELS: Record<string, OpenAIWSModelDef>;
16
19
  //# sourceMappingURL=defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/models/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,UAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAW9G;AAID,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0C7D,CAAA"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/models/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,UAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAW9G;AAED,eAAO,MAAM,8BAA8B,SAAS,CAAA;AACpD,eAAO,MAAM,wBAAwB,SAAS,CAAA;AAE9C,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CASxG;AAMD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0C7D,CAAA"}
@@ -8,13 +8,27 @@ export function makeVariants(efforts, includeSummary = true) {
8
8
  },
9
9
  ]));
10
10
  }
11
- const CODEX_EFFECTIVE_CONTEXT_WINDOW = 272000;
11
+ export const CODEX_EFFECTIVE_CONTEXT_WINDOW = 272000;
12
+ export const CODEX_OUTPUT_TOKEN_LIMIT = 128000;
13
+ export function codexLimit(overrides = {}) {
14
+ const context = positiveFinite(overrides.context) ?? CODEX_EFFECTIVE_CONTEXT_WINDOW;
15
+ const inputCandidate = positiveFinite(overrides.input) ?? CODEX_EFFECTIVE_CONTEXT_WINDOW;
16
+ const output = positiveFinite(overrides.output) ?? CODEX_OUTPUT_TOKEN_LIMIT;
17
+ return {
18
+ context,
19
+ input: Math.min(inputCandidate, context),
20
+ output,
21
+ };
22
+ }
23
+ function positiveFinite(value) {
24
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
25
+ }
12
26
  export const OPENAI_WS_MODELS = {
13
27
  "gpt-5.5": {
14
28
  name: "GPT 5.5 (WebSocket)",
15
29
  reasoning: true,
16
30
  temperature: false,
17
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
31
+ limit: codexLimit(),
18
32
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
19
33
  release_date: "2026-04-23",
20
34
  },
@@ -22,7 +36,7 @@ export const OPENAI_WS_MODELS = {
22
36
  name: "GPT 5.4 (WebSocket)",
23
37
  reasoning: true,
24
38
  temperature: true,
25
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
39
+ limit: codexLimit({ context: 1_000_000 }),
26
40
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
27
41
  release_date: "2026-03-05",
28
42
  },
@@ -30,7 +44,7 @@ export const OPENAI_WS_MODELS = {
30
44
  name: "GPT 5.4 Mini (WebSocket)",
31
45
  reasoning: true,
32
46
  temperature: true,
33
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
47
+ limit: codexLimit(),
34
48
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
35
49
  release_date: "2026-03-05",
36
50
  },
@@ -38,7 +52,7 @@ export const OPENAI_WS_MODELS = {
38
52
  name: "GPT 5.3 Codex (WebSocket)",
39
53
  reasoning: true,
40
54
  temperature: false,
41
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
55
+ limit: codexLimit(),
42
56
  variants: makeVariants(["low", "medium", "high", "xhigh"], false),
43
57
  family: "gpt-codex",
44
58
  release_date: "2026-02-05",
@@ -47,7 +61,7 @@ export const OPENAI_WS_MODELS = {
47
61
  name: "GPT 5.2 (WebSocket)",
48
62
  reasoning: true,
49
63
  temperature: true,
50
- limit: { context: CODEX_EFFECTIVE_CONTEXT_WINDOW, output: 128000 },
64
+ limit: codexLimit(),
51
65
  variants: makeVariants(["low", "medium", "high", "xhigh"]),
52
66
  release_date: "2025-12-10",
53
67
  },
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/models/defaults.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,cAAc,GAAG,IAAI;IACnE,OAAO,MAAM,CAAC,WAAW,CACvB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtB,MAAM;QACN;YACE,eAAe,EAAE,MAAM;YACvB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC,6BAA6B,CAAC;SACzC;KACF,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,8BAA8B,GAAG,MAAM,CAAA;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,SAAS,EAAE;QACT,IAAI,EAAE,qBAAqB;QAC3B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE;QAClE,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACjE,YAAY,EAAE,YAAY;KAC3B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAqB;QAC3B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE;QAClE,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACjE,YAAY,EAAE,YAAY;KAC3B;IACD,cAAc,EAAE;QACd,IAAI,EAAE,0BAA0B;QAChC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE;QAClE,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACjE,YAAY,EAAE,YAAY;KAC3B;IACD,eAAe,EAAE;QACf,IAAI,EAAE,2BAA2B;QACjC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE;QAClE,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACjE,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,YAAY;KAC3B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAqB;QAC3B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE;QAClE,QAAQ,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1D,YAAY,EAAE,YAAY;KAC3B;CACF,CAAA"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/models/defaults.ts"],"names":[],"mappings":"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"}
@@ -79,8 +79,8 @@ export declare function resolveModels(overrides?: ProviderModelOverrides): Recor
79
79
  export declare function resolveModelsForOAuth(catalog: CodexModelInfo[] | undefined, overrides?: ProviderModelOverrides): Record<string, ProviderModelConfig>;
80
80
  export declare function resolveModelsForApiKey(allowedIds: Set<string> | undefined, overrides?: ProviderModelOverrides): Record<string, ProviderModelConfig>;
81
81
  export declare function modelToOpenCodeConfig(model: OpenAIWSModelDef): OpenCodeConfigModel;
82
- export declare function providerConfigModels(overrides?: Record<string, unknown>): Record<string, unknown>;
83
- export declare function providerConfig(overrides?: ProviderModelOverrides): {
82
+ export declare function providerConfigModels(overrides?: Record<string, unknown>, catalog?: CodexModelInfo[]): Record<string, unknown>;
83
+ export declare function providerConfig(overrides?: ProviderModelOverrides, catalog?: CodexModelInfo[]): {
84
84
  api: string;
85
85
  name: string;
86
86
  npm: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/models/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/models/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,18 @@
1
1
  import { OPENAI_API_BASE, PROVIDER_ID } from "../constants.js";
2
- import { makeVariants, OPENAI_WS_MODELS } from "./defaults.js";
2
+ import { CODEX_EFFECTIVE_CONTEXT_WINDOW, CODEX_OUTPUT_TOKEN_LIMIT, codexLimit, makeVariants, OPENAI_WS_MODELS } from "./defaults.js";
3
+ function positiveFinite(value) {
4
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
5
+ }
6
+ function limitFromCatalog(model, fallback) {
7
+ const context = positiveFinite(model.max_context_window) ?? positiveFinite(model.context_window) ?? fallback.context;
8
+ const inputCandidate = positiveFinite(model.context_window) ?? positiveFinite(fallback.input) ?? CODEX_EFFECTIVE_CONTEXT_WINDOW;
9
+ const output = positiveFinite(model.max_output_tokens) ?? positiveFinite(fallback.output) ?? CODEX_OUTPUT_TOKEN_LIMIT;
10
+ return {
11
+ context,
12
+ input: Math.min(inputCandidate, context),
13
+ output,
14
+ };
15
+ }
3
16
  export function modelToProviderConfig(id, model) {
4
17
  return {
5
18
  id,
@@ -16,7 +29,7 @@ export function modelToProviderConfig(id, model) {
16
29
  interleaved: false,
17
30
  },
18
31
  cost: { input: 0, output: 0, cache: { read: 0, write: 0 } },
19
- limit: model.limit,
32
+ limit: { ...model.limit },
20
33
  status: "active",
21
34
  options: {},
22
35
  headers: {},
@@ -42,42 +55,31 @@ function fallbackModelFor(id) {
42
55
  name: `${id} (WebSocket)`,
43
56
  reasoning: true,
44
57
  temperature: false,
45
- limit: { context: 272000, output: 128000 },
58
+ limit: codexLimit(),
46
59
  variants: {},
47
60
  ...(id.includes("codex") ? { family: "gpt-codex" } : id.endsWith("-pro") ? { family: "gpt-pro" } : {}),
48
61
  };
49
62
  result.variants = variantsForModel(id, result);
50
63
  return result;
51
64
  }
52
- function resolvedCodexContextWindow(model) {
53
- const context = model.context_window ?? model.max_context_window;
54
- if (!context)
55
- return undefined;
56
- if (model.effective_context_window_percent != null)
57
- return Math.floor((context * model.effective_context_window_percent) / 100);
58
- return context;
59
- }
60
65
  function modelFromCodexCatalog(model) {
61
66
  const id = model.slug;
62
67
  if (!id)
63
68
  return undefined;
64
69
  if (model.prefer_websockets !== true && !isOpenAIWSCandidate(id))
65
70
  return undefined;
66
- const context = resolvedCodexContextWindow(model);
67
- if (!context)
68
- return undefined;
69
71
  const efforts = (model.supported_reasoning_levels ?? [])
70
72
  .map((level) => level.effort)
71
73
  .filter((effort) => Boolean(effort));
72
74
  const reasoning = efforts.length > 0;
75
+ const bundled = OPENAI_WS_MODELS[id];
76
+ const fallback = bundled?.limit ?? codexLimit();
77
+ const limit = limitFromCatalog(model, fallback);
73
78
  const result = {
74
79
  name: `${model.display_name ?? id} (WebSocket)`,
75
80
  reasoning,
76
- temperature: false,
77
- limit: {
78
- context,
79
- output: 128000,
80
- },
81
+ temperature: bundled?.temperature ?? false,
82
+ limit,
81
83
  variants: reasoning ? makeVariants(efforts, Boolean(model.supports_reasoning_summaries)) : {},
82
84
  ...(id.includes("codex") ? { family: "gpt-codex" } : id.endsWith("-pro") ? { family: "gpt-pro" } : {}),
83
85
  };
@@ -147,7 +149,7 @@ export function modelToOpenCodeConfig(model) {
147
149
  reasoning: model.reasoning,
148
150
  temperature: model.temperature,
149
151
  tool_call: true,
150
- limit: model.limit,
152
+ limit: { ...model.limit },
151
153
  modalities: {
152
154
  input: ["text", "image"],
153
155
  output: ["text"],
@@ -184,11 +186,31 @@ function sanitizeBuiltInConfigOverride(override) {
184
186
  delete sanitized[key];
185
187
  return sanitized;
186
188
  }
187
- export function providerConfigModels(overrides = {}) {
189
+ function catalogEntriesBySlug(catalog) {
190
+ const entries = new Map();
191
+ if (!catalog)
192
+ return entries;
193
+ for (const entry of catalog) {
194
+ if (typeof entry?.slug === "string" && entry.slug.length > 0)
195
+ entries.set(entry.slug, entry);
196
+ }
197
+ return entries;
198
+ }
199
+ function bundledModelWithCatalogLimit(id, model, catalogEntry) {
200
+ if (!catalogEntry)
201
+ return model;
202
+ const limit = limitFromCatalog(catalogEntry, model.limit);
203
+ if (limit.context === model.limit.context && limit.input === model.limit.input && limit.output === model.limit.output)
204
+ return model;
205
+ return { ...model, limit };
206
+ }
207
+ export function providerConfigModels(overrides = {}, catalog) {
188
208
  const models = {};
209
+ const catalogBySlug = catalogEntriesBySlug(catalog);
189
210
  for (const [id, model] of Object.entries(OPENAI_WS_MODELS)) {
211
+ const effective = bundledModelWithCatalogLimit(id, model, catalogBySlug.get(id));
190
212
  models[id] = {
191
- ...modelToOpenCodeConfig(model),
213
+ ...modelToOpenCodeConfig(effective),
192
214
  ...sanitizeBuiltInConfigOverride(overrides[id]),
193
215
  };
194
216
  }
@@ -201,12 +223,12 @@ export function providerConfigModels(overrides = {}) {
201
223
  }
202
224
  return models;
203
225
  }
204
- export function providerConfig(overrides = {}) {
226
+ export function providerConfig(overrides = {}, catalog) {
205
227
  return {
206
228
  api: OPENAI_API_BASE,
207
229
  name: "OpenAI WebSocket",
208
230
  npm: "@ai-sdk/openai",
209
- models: providerConfigModels(overrides),
231
+ models: providerConfigModels(overrides, catalog),
210
232
  };
211
233
  }
212
234
  //# sourceMappingURL=resolve.js.map