openai-ws-opencode 0.1.6 → 0.1.8
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 +3 -3
- package/SECURITY.md +1 -1
- package/bin/setup.js +17 -43
- package/dist/constants.d.ts +12 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +12 -1
- package/dist/constants.js.map +1 -1
- package/dist/models/catalog.d.ts +39 -0
- package/dist/models/catalog.d.ts.map +1 -0
- package/dist/models/catalog.js +89 -0
- package/dist/models/catalog.js.map +1 -0
- package/dist/models/defaults.d.ts.map +1 -1
- package/dist/models/defaults.js +15 -43
- package/dist/models/defaults.js.map +1 -1
- package/dist/models/resolve.d.ts +3 -26
- package/dist/models/resolve.d.ts.map +1 -1
- package/dist/models/resolve.js +59 -40
- package/dist/models/resolve.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +15 -7
- package/dist/plugin.js.map +1 -1
- package/dist/testing.d.ts +4 -2
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +4 -2
- package/dist/testing.js.map +1 -1
- package/dist/transport/body.d.ts +3 -2
- package/dist/transport/body.d.ts.map +1 -1
- package/dist/transport/body.js +28 -15
- package/dist/transport/body.js.map +1 -1
- package/dist/transport/bridge.d.ts.map +1 -1
- package/dist/transport/bridge.js +75 -25
- package/dist/transport/bridge.js.map +1 -1
- package/dist/transport/bun-websocket.d.ts +21 -0
- package/dist/transport/bun-websocket.d.ts.map +1 -0
- package/dist/transport/bun-websocket.js +281 -0
- package/dist/transport/bun-websocket.js.map +1 -0
- package/dist/transport/config.d.ts +14 -0
- package/dist/transport/config.d.ts.map +1 -0
- package/dist/transport/config.js +14 -0
- package/dist/transport/config.js.map +1 -0
- package/dist/transport/headers.d.ts.map +1 -1
- package/dist/transport/headers.js +23 -6
- package/dist/transport/headers.js.map +1 -1
- package/dist/transport/pool.d.ts +20 -16
- package/dist/transport/pool.d.ts.map +1 -1
- package/dist/transport/pool.js +394 -93
- package/dist/transport/pool.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Standalone OpenCode provider plugin for routing OpenAI Responses API streaming r
|
|
|
8
8
|
- API-key transport: `wss://api.openai.com/v1/responses`
|
|
9
9
|
- ChatGPT/Codex OAuth transport: `wss://chatgpt.com/backend-api/codex/responses`
|
|
10
10
|
- Curated GPT/Codex model table with OpenCode variants
|
|
11
|
-
-
|
|
11
|
+
- Auth-aware model discovery at auth-load time: Codex backend models for ChatGPT OAuth, OpenAI `/v1/models` IDs for API keys, bundled table fallback for both
|
|
12
12
|
- WebSocket-to-SSE bridge so OpenCode can keep using its normal streaming path
|
|
13
13
|
|
|
14
14
|
## Install
|
|
@@ -28,9 +28,9 @@ opencode auth login openai-ws
|
|
|
28
28
|
|
|
29
29
|
The setup command is idempotent. It adds the npm plugin entry and a fallback `provider.openai-ws` model registry to `opencode.json`, preserving existing user model overrides.
|
|
30
30
|
|
|
31
|
-
At runtime the plugin also attempts
|
|
31
|
+
At runtime the plugin also attempts short best-effort model discovery for the selected auth mode. ChatGPT/Codex OAuth uses `https://chatgpt.com/backend-api/codex/models`; API-key auth uses `https://api.openai.com/v1/models` as an availability filter around the bundled WebSocket model table. Both paths fall back to the bundled table if discovery is unavailable.
|
|
32
32
|
|
|
33
|
-
Set `OPENAI_WS_OPENCODE_SKIP_CATALOG=1` to skip
|
|
33
|
+
Set `OPENAI_WS_OPENCODE_SKIP_CATALOG=1` to skip runtime catalog lookups and use only the bundled fallback table plus your config overrides.
|
|
34
34
|
|
|
35
35
|
## Manual config
|
|
36
36
|
|
package/SECURITY.md
CHANGED
|
@@ -6,6 +6,6 @@ This plugin does not intentionally log API keys, OAuth access tokens, refresh to
|
|
|
6
6
|
|
|
7
7
|
The ChatGPT/Codex OAuth transport uses unofficial backend behavior and may change without notice. Review your OpenAI/OpenCode account policies before using it. If the Codex OAuth client or backend behavior is revoked or materially changes, the mitigation path is to disable the OAuth/Codex auth method in a patch release while keeping API-key transport available.
|
|
8
8
|
|
|
9
|
-
The plugin performs a short best-effort request
|
|
9
|
+
The plugin performs a short best-effort catalog request for the selected auth mode unless `OPENAI_WS_OPENCODE_SKIP_CATALOG=1` is set. API-key auth calls OpenAI `/v1/models`; ChatGPT/Codex OAuth calls the Codex `/models` backend with the same OAuth bearer and account headers required for Codex requests.
|
|
10
10
|
|
|
11
11
|
Before release, maintainers should run validators, inspect `git diff`, run a secrets scan, and inspect `npm pack --dry-run` output for accidental credential or local-config inclusion.
|
package/bin/setup.js
CHANGED
|
@@ -12,6 +12,8 @@ import { applyEdits, format, modify, parse } from "jsonc-parser";
|
|
|
12
12
|
var OPENAI_API_BASE = "https://api.openai.com/v1";
|
|
13
13
|
var CODEX_API_BASE = "https://chatgpt.com/backend-api/codex";
|
|
14
14
|
var CODEX_API_ENDPOINT = `${CODEX_API_BASE}/responses`;
|
|
15
|
+
var CODEX_MODELS_ENDPOINT = `${CODEX_API_BASE}/models`;
|
|
16
|
+
var OPENAI_MODELS_ENDPOINT = `${OPENAI_API_BASE}/models`;
|
|
15
17
|
|
|
16
18
|
// src/models/defaults.ts
|
|
17
19
|
function makeVariants(efforts, includeSummary = true) {
|
|
@@ -29,17 +31,8 @@ var OPENAI_WS_MODELS = {
|
|
|
29
31
|
name: "GPT 5.5 (WebSocket)",
|
|
30
32
|
reasoning: true,
|
|
31
33
|
temperature: false,
|
|
32
|
-
limit: { context: 1050000,
|
|
33
|
-
variants: makeVariants(["none", "
|
|
34
|
-
release_date: "2026-04-23"
|
|
35
|
-
},
|
|
36
|
-
"gpt-5.5-pro": {
|
|
37
|
-
name: "GPT 5.5 Pro (WebSocket)",
|
|
38
|
-
reasoning: true,
|
|
39
|
-
temperature: false,
|
|
40
|
-
limit: { context: 1050000, input: 922000, output: 128000 },
|
|
41
|
-
variants: makeVariants(["high"], false),
|
|
42
|
-
family: "gpt-pro",
|
|
34
|
+
limit: { context: 1050000, output: 128000 },
|
|
35
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"], false),
|
|
43
36
|
release_date: "2026-04-23"
|
|
44
37
|
},
|
|
45
38
|
"gpt-5.4": {
|
|
@@ -47,52 +40,33 @@ var OPENAI_WS_MODELS = {
|
|
|
47
40
|
reasoning: true,
|
|
48
41
|
temperature: true,
|
|
49
42
|
limit: { context: 1050000, output: 128000 },
|
|
50
|
-
variants: makeVariants(["none", "
|
|
43
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"], false),
|
|
44
|
+
release_date: "2026-03-05"
|
|
45
|
+
},
|
|
46
|
+
"gpt-5.4-mini": {
|
|
47
|
+
name: "GPT 5.4 Mini (WebSocket)",
|
|
48
|
+
reasoning: true,
|
|
49
|
+
temperature: true,
|
|
50
|
+
limit: { context: 400000, output: 128000 },
|
|
51
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"], false),
|
|
51
52
|
release_date: "2026-03-05"
|
|
52
53
|
},
|
|
53
54
|
"gpt-5.3-codex": {
|
|
54
55
|
name: "GPT 5.3 Codex (WebSocket)",
|
|
55
56
|
reasoning: true,
|
|
56
57
|
temperature: false,
|
|
57
|
-
limit: { context: 400000,
|
|
58
|
-
variants: makeVariants(["low", "medium", "high"]),
|
|
58
|
+
limit: { context: 400000, output: 128000 },
|
|
59
|
+
variants: makeVariants(["low", "medium", "high", "xhigh"], false),
|
|
59
60
|
family: "gpt-codex",
|
|
60
61
|
release_date: "2026-02-05"
|
|
61
62
|
},
|
|
62
|
-
"gpt-5.3-codex-spark": {
|
|
63
|
-
name: "GPT 5.3 Codex Spark (WebSocket)",
|
|
64
|
-
reasoning: true,
|
|
65
|
-
temperature: false,
|
|
66
|
-
limit: { context: 128000, output: 128000 },
|
|
67
|
-
variants: makeVariants(["low", "medium", "high"], false),
|
|
68
|
-
family: "gpt-codex",
|
|
69
|
-
release_date: "2026-03-10"
|
|
70
|
-
},
|
|
71
63
|
"gpt-5.2": {
|
|
72
64
|
name: "GPT 5.2 (WebSocket)",
|
|
73
65
|
reasoning: true,
|
|
74
66
|
temperature: true,
|
|
75
|
-
limit: { context:
|
|
76
|
-
variants: makeVariants(["none", "low", "medium", "high"]),
|
|
67
|
+
limit: { context: 400000, output: 128000 },
|
|
68
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"]),
|
|
77
69
|
release_date: "2025-12-10"
|
|
78
|
-
},
|
|
79
|
-
"gpt-5.2-codex": {
|
|
80
|
-
name: "GPT 5.2 Codex (WebSocket)",
|
|
81
|
-
reasoning: true,
|
|
82
|
-
temperature: false,
|
|
83
|
-
limit: { context: 272000, output: 128000 },
|
|
84
|
-
variants: makeVariants(["low", "medium", "high"]),
|
|
85
|
-
family: "gpt-codex",
|
|
86
|
-
release_date: "2025-12-15"
|
|
87
|
-
},
|
|
88
|
-
"gpt-5.1-codex": {
|
|
89
|
-
name: "GPT 5.1 Codex (WebSocket)",
|
|
90
|
-
reasoning: true,
|
|
91
|
-
temperature: false,
|
|
92
|
-
limit: { context: 272000, output: 128000 },
|
|
93
|
-
variants: makeVariants(["low", "medium", "high"]),
|
|
94
|
-
family: "gpt-codex",
|
|
95
|
-
release_date: "2025-10-01"
|
|
96
70
|
}
|
|
97
71
|
};
|
|
98
72
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -4,13 +4,24 @@ export declare const ISSUER = "https://auth.openai.com";
|
|
|
4
4
|
export declare const OPENAI_API_BASE = "https://api.openai.com/v1";
|
|
5
5
|
export declare const CODEX_API_BASE = "https://chatgpt.com/backend-api/codex";
|
|
6
6
|
export declare const CODEX_API_ENDPOINT = "https://chatgpt.com/backend-api/codex/responses";
|
|
7
|
+
export declare const CODEX_MODELS_ENDPOINT = "https://chatgpt.com/backend-api/codex/models";
|
|
8
|
+
export declare const OPENAI_MODELS_ENDPOINT = "https://api.openai.com/v1/models";
|
|
7
9
|
export declare const OPENAI_WS_URL = "wss://api.openai.com/v1/responses";
|
|
8
10
|
export declare const CODEX_WS_URL = "wss://chatgpt.com/backend-api/codex/responses";
|
|
9
11
|
export declare const OPENAI_WS_BETA = "responses_websockets=2026-02-06";
|
|
10
12
|
export declare const CODEX_ORIGINATOR = "opencode";
|
|
13
|
+
export declare const USER_AGENT = "openai-ws-opencode/0.1.8";
|
|
11
14
|
export declare const CODEX_OAUTH_SCOPE = "openid profile email offline_access";
|
|
12
15
|
export declare const OAUTH_PORT = 1455;
|
|
13
|
-
export declare const
|
|
16
|
+
export declare const X_CODEX_TURN_STATE_HEADER = "x-codex-turn-state";
|
|
17
|
+
export declare const X_CODEX_WINDOW_ID_HEADER = "x-codex-window-id";
|
|
18
|
+
export declare const X_CODEX_INSTALLATION_ID_HEADER = "x-codex-installation-id";
|
|
19
|
+
export declare const X_OPENAI_SUBAGENT_HEADER = "x-openai-subagent";
|
|
20
|
+
export declare const X_MODELS_ETAG_HEADER = "x-models-etag";
|
|
21
|
+
export declare const X_REASONING_INCLUDED_HEADER = "x-reasoning-included";
|
|
22
|
+
export declare const OPENAI_MODEL_HEADER = "openai-model";
|
|
23
|
+
export declare const OPENAI_WS_INSTALLATION_ID_ENV = "OPENAI_WS_OPENCODE_INSTALLATION_ID";
|
|
24
|
+
export declare const RESPONSE_PROCESSED_ENV = "OPENAI_WS_OPENCODE_RESPONSE_PROCESSED";
|
|
14
25
|
export declare const INTERNAL_SESSION_HEADER = "x-openai-ws-opencode-session-id";
|
|
15
26
|
export declare const INTERNAL_AGENT_HEADER = "x-openai-ws-opencode-agent";
|
|
16
27
|
export declare const INTERNAL_MODEL_HEADER = "x-openai-ws-opencode-model-id";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cAAc,CAAA;AAEtC,eAAO,MAAM,SAAS,iCAAiC,CAAA;AACvD,eAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,eAAO,MAAM,eAAe,8BAA8B,CAAA;AAC1D,eAAO,MAAM,cAAc,0CAA0C,CAAA;AACrE,eAAO,MAAM,kBAAkB,oDAAgC,CAAA;AAC/D,eAAO,MAAM,aAAa,sCAAsC,CAAA;AAChE,eAAO,MAAM,YAAY,kDAAkD,CAAA;AAC3E,eAAO,MAAM,cAAc,oCAAoC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAC1C,eAAO,MAAM,iBAAiB,wCAAwC,CAAA;AACtE,eAAO,MAAM,UAAU,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cAAc,CAAA;AAEtC,eAAO,MAAM,SAAS,iCAAiC,CAAA;AACvD,eAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,eAAO,MAAM,eAAe,8BAA8B,CAAA;AAC1D,eAAO,MAAM,cAAc,0CAA0C,CAAA;AACrE,eAAO,MAAM,kBAAkB,oDAAgC,CAAA;AAC/D,eAAO,MAAM,qBAAqB,iDAA6B,CAAA;AAC/D,eAAO,MAAM,sBAAsB,qCAA8B,CAAA;AACjE,eAAO,MAAM,aAAa,sCAAsC,CAAA;AAChE,eAAO,MAAM,YAAY,kDAAkD,CAAA;AAC3E,eAAO,MAAM,cAAc,oCAAoC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAC1C,eAAO,MAAM,UAAU,6BAA6B,CAAA;AACpD,eAAO,MAAM,iBAAiB,wCAAwC,CAAA;AACtE,eAAO,MAAM,UAAU,OAAO,CAAA;AAE9B,eAAO,MAAM,yBAAyB,uBAAuB,CAAA;AAC7D,eAAO,MAAM,wBAAwB,sBAAsB,CAAA;AAC3D,eAAO,MAAM,8BAA8B,4BAA4B,CAAA;AACvE,eAAO,MAAM,wBAAwB,sBAAsB,CAAA;AAC3D,eAAO,MAAM,oBAAoB,kBAAkB,CAAA;AACnD,eAAO,MAAM,2BAA2B,yBAAyB,CAAA;AACjE,eAAO,MAAM,mBAAmB,iBAAiB,CAAA;AACjD,eAAO,MAAM,6BAA6B,uCAAuC,CAAA;AACjF,eAAO,MAAM,sBAAsB,0CAA0C,CAAA;AAE7E,eAAO,MAAM,uBAAuB,oCAAoC,CAAA;AACxE,eAAO,MAAM,qBAAqB,+BAA+B,CAAA;AACjE,eAAO,MAAM,qBAAqB,kCAAkC,CAAA;AACpE,eAAO,MAAM,2BAA2B,qCAAqC,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -4,13 +4,24 @@ export const ISSUER = "https://auth.openai.com";
|
|
|
4
4
|
export const OPENAI_API_BASE = "https://api.openai.com/v1";
|
|
5
5
|
export const CODEX_API_BASE = "https://chatgpt.com/backend-api/codex";
|
|
6
6
|
export const CODEX_API_ENDPOINT = `${CODEX_API_BASE}/responses`;
|
|
7
|
+
export const CODEX_MODELS_ENDPOINT = `${CODEX_API_BASE}/models`;
|
|
8
|
+
export const OPENAI_MODELS_ENDPOINT = `${OPENAI_API_BASE}/models`;
|
|
7
9
|
export const OPENAI_WS_URL = "wss://api.openai.com/v1/responses";
|
|
8
10
|
export const CODEX_WS_URL = "wss://chatgpt.com/backend-api/codex/responses";
|
|
9
11
|
export const OPENAI_WS_BETA = "responses_websockets=2026-02-06";
|
|
10
12
|
export const CODEX_ORIGINATOR = "opencode";
|
|
13
|
+
export const USER_AGENT = "openai-ws-opencode/0.1.8";
|
|
11
14
|
export const CODEX_OAUTH_SCOPE = "openid profile email offline_access";
|
|
12
15
|
export const OAUTH_PORT = 1455;
|
|
13
|
-
export const
|
|
16
|
+
export const X_CODEX_TURN_STATE_HEADER = "x-codex-turn-state";
|
|
17
|
+
export const X_CODEX_WINDOW_ID_HEADER = "x-codex-window-id";
|
|
18
|
+
export const X_CODEX_INSTALLATION_ID_HEADER = "x-codex-installation-id";
|
|
19
|
+
export const X_OPENAI_SUBAGENT_HEADER = "x-openai-subagent";
|
|
20
|
+
export const X_MODELS_ETAG_HEADER = "x-models-etag";
|
|
21
|
+
export const X_REASONING_INCLUDED_HEADER = "x-reasoning-included";
|
|
22
|
+
export const OPENAI_MODEL_HEADER = "openai-model";
|
|
23
|
+
export const OPENAI_WS_INSTALLATION_ID_ENV = "OPENAI_WS_OPENCODE_INSTALLATION_ID";
|
|
24
|
+
export const RESPONSE_PROCESSED_ENV = "OPENAI_WS_OPENCODE_RESPONSE_PROCESSED";
|
|
14
25
|
export const INTERNAL_SESSION_HEADER = "x-openai-ws-opencode-session-id";
|
|
15
26
|
export const INTERNAL_AGENT_HEADER = "x-openai-ws-opencode-agent";
|
|
16
27
|
export const INTERNAL_MODEL_HEADER = "x-openai-ws-opencode-model-id";
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAA;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAA;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,yBAAyB,CAAA;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,uCAAuC,CAAA;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,cAAc,YAAY,CAAA;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAA;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,+CAA+C,CAAA;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAA;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAAqC,CAAA;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAA;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAA;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,yBAAyB,CAAA;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,uCAAuC,CAAA;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,cAAc,YAAY,CAAA;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,cAAc,SAAS,CAAA;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,eAAe,SAAS,CAAA;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAA;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,+CAA+C,CAAA;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAA;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,0BAA0B,CAAA;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAAqC,CAAA;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAE9B,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAA;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAC3D,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAyB,CAAA;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAA;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAA;AACnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAA;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAA;AACjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,oCAAoC,CAAA;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,uCAAuC,CAAA;AAE7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAA;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,+BAA+B,CAAA;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,kCAAkC,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type CodexReasoningLevel = {
|
|
2
|
+
effort?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
};
|
|
5
|
+
export type CodexModelInfo = {
|
|
6
|
+
slug?: string;
|
|
7
|
+
display_name?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
context_window?: number;
|
|
10
|
+
supported_in_api?: boolean;
|
|
11
|
+
priority?: number;
|
|
12
|
+
supports_reasoning_summaries?: boolean;
|
|
13
|
+
support_verbosity?: boolean;
|
|
14
|
+
default_verbosity?: string;
|
|
15
|
+
default_reasoning_level?: string;
|
|
16
|
+
supported_reasoning_levels?: CodexReasoningLevel[];
|
|
17
|
+
auto_compact_token_limit?: number;
|
|
18
|
+
prefer_websockets?: boolean;
|
|
19
|
+
input_modalities?: string[];
|
|
20
|
+
available_in_plans?: string[];
|
|
21
|
+
base_instructions?: string;
|
|
22
|
+
raw?: Record<string, unknown>;
|
|
23
|
+
};
|
|
24
|
+
type FetchOptions = {
|
|
25
|
+
fetchImpl?: typeof fetch;
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
};
|
|
28
|
+
type CodexCatalogOptions = FetchOptions & {
|
|
29
|
+
accessToken: string;
|
|
30
|
+
accountId?: string;
|
|
31
|
+
};
|
|
32
|
+
type OpenAIModelsOptions = FetchOptions & {
|
|
33
|
+
apiKey: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function fetchCodexCatalog(options: CodexCatalogOptions): Promise<CodexModelInfo[] | undefined>;
|
|
36
|
+
export declare function fetchOpenAIModelIds(options: OpenAIModelsOptions): Promise<Set<string> | undefined>;
|
|
37
|
+
export declare function resetCatalogCacheForTesting(): void;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +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,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,CAAA;IACjC,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,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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { CODEX_MODELS_ENDPOINT, CODEX_ORIGINATOR, OPENAI_MODELS_ENDPOINT, OPENAI_WS_BETA, USER_AGENT } from "../constants.js";
|
|
3
|
+
const DEFAULT_TIMEOUT_MS = 800;
|
|
4
|
+
const CATALOG_TTL_MS = 30 * 60 * 1000;
|
|
5
|
+
const SKIP_CATALOG_ENV = "OPENAI_WS_OPENCODE_SKIP_CATALOG";
|
|
6
|
+
const cache = new Map();
|
|
7
|
+
function cacheKey(scope, credential, accountId = "") {
|
|
8
|
+
return `${scope}:${crypto.createHash("sha256").update(`${credential}:${accountId}`).digest("hex")}`;
|
|
9
|
+
}
|
|
10
|
+
function cached(key) {
|
|
11
|
+
const entry = cache.get(key);
|
|
12
|
+
if (!entry)
|
|
13
|
+
return { hit: false };
|
|
14
|
+
if (entry.expiresAt <= Date.now()) {
|
|
15
|
+
cache.delete(key);
|
|
16
|
+
return { hit: false };
|
|
17
|
+
}
|
|
18
|
+
return { hit: true, value: entry.value };
|
|
19
|
+
}
|
|
20
|
+
function setCached(key, value) {
|
|
21
|
+
cache.set(key, { expiresAt: Date.now() + CATALOG_TTL_MS, value });
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
function timeoutSignal(timeoutMs) {
|
|
25
|
+
return typeof AbortSignal !== "undefined" && typeof AbortSignal.timeout === "function" ? AbortSignal.timeout(timeoutMs) : undefined;
|
|
26
|
+
}
|
|
27
|
+
export async function fetchCodexCatalog(options) {
|
|
28
|
+
if (process.env[SKIP_CATALOG_ENV] === "1")
|
|
29
|
+
return undefined;
|
|
30
|
+
const key = cacheKey("codex", options.accessToken, options.accountId);
|
|
31
|
+
const existing = cached(key);
|
|
32
|
+
if (existing.hit)
|
|
33
|
+
return existing.value;
|
|
34
|
+
const fetchImpl = options.fetchImpl ?? globalThis.fetch;
|
|
35
|
+
const url = new URL(CODEX_MODELS_ENDPOINT);
|
|
36
|
+
url.searchParams.set("client_version", USER_AGENT);
|
|
37
|
+
try {
|
|
38
|
+
const response = await fetchImpl(url, {
|
|
39
|
+
signal: timeoutSignal(options.timeoutMs ?? DEFAULT_TIMEOUT_MS),
|
|
40
|
+
headers: {
|
|
41
|
+
Authorization: `Bearer ${options.accessToken}`,
|
|
42
|
+
...(options.accountId ? { "ChatGPT-Account-Id": options.accountId } : {}),
|
|
43
|
+
originator: CODEX_ORIGINATOR,
|
|
44
|
+
"OpenAI-Beta": OPENAI_WS_BETA,
|
|
45
|
+
"User-Agent": USER_AGENT,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!response.ok)
|
|
49
|
+
return setCached(key, undefined);
|
|
50
|
+
const json = (await response.json());
|
|
51
|
+
if (!Array.isArray(json.models))
|
|
52
|
+
return setCached(key, undefined);
|
|
53
|
+
return setCached(key, json.models);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return setCached(key, undefined);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export async function fetchOpenAIModelIds(options) {
|
|
60
|
+
if (process.env[SKIP_CATALOG_ENV] === "1")
|
|
61
|
+
return undefined;
|
|
62
|
+
const key = cacheKey("openai", options.apiKey);
|
|
63
|
+
const existing = cached(key);
|
|
64
|
+
if (existing.hit)
|
|
65
|
+
return existing.value;
|
|
66
|
+
const fetchImpl = options.fetchImpl ?? globalThis.fetch;
|
|
67
|
+
try {
|
|
68
|
+
const response = await fetchImpl(OPENAI_MODELS_ENDPOINT, {
|
|
69
|
+
signal: timeoutSignal(options.timeoutMs ?? DEFAULT_TIMEOUT_MS),
|
|
70
|
+
headers: {
|
|
71
|
+
Authorization: `Bearer ${options.apiKey}`,
|
|
72
|
+
"User-Agent": USER_AGENT,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
if (!response.ok)
|
|
76
|
+
return setCached(key, undefined);
|
|
77
|
+
const json = (await response.json());
|
|
78
|
+
if (!Array.isArray(json.data))
|
|
79
|
+
return setCached(key, undefined);
|
|
80
|
+
return setCached(key, new Set(json.data.map((model) => (typeof model.id === "string" ? model.id : undefined)).filter((id) => Boolean(id))));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return setCached(key, undefined);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function resetCatalogCacheForTesting() {
|
|
87
|
+
cache.clear();
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,
|
|
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,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0C7D,CAAA"}
|
package/dist/models/defaults.js
CHANGED
|
@@ -13,17 +13,8 @@ export const OPENAI_WS_MODELS = {
|
|
|
13
13
|
name: "GPT 5.5 (WebSocket)",
|
|
14
14
|
reasoning: true,
|
|
15
15
|
temperature: false,
|
|
16
|
-
limit: { context: 1050000,
|
|
17
|
-
variants: makeVariants(["none", "
|
|
18
|
-
release_date: "2026-04-23",
|
|
19
|
-
},
|
|
20
|
-
"gpt-5.5-pro": {
|
|
21
|
-
name: "GPT 5.5 Pro (WebSocket)",
|
|
22
|
-
reasoning: true,
|
|
23
|
-
temperature: false,
|
|
24
|
-
limit: { context: 1050000, input: 922000, output: 128000 },
|
|
25
|
-
variants: makeVariants(["high"], false),
|
|
26
|
-
family: "gpt-pro",
|
|
16
|
+
limit: { context: 1050000, output: 128000 },
|
|
17
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"], false),
|
|
27
18
|
release_date: "2026-04-23",
|
|
28
19
|
},
|
|
29
20
|
"gpt-5.4": {
|
|
@@ -31,52 +22,33 @@ export const OPENAI_WS_MODELS = {
|
|
|
31
22
|
reasoning: true,
|
|
32
23
|
temperature: true,
|
|
33
24
|
limit: { context: 1050000, output: 128000 },
|
|
34
|
-
variants: makeVariants(["none", "
|
|
25
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"], false),
|
|
26
|
+
release_date: "2026-03-05",
|
|
27
|
+
},
|
|
28
|
+
"gpt-5.4-mini": {
|
|
29
|
+
name: "GPT 5.4 Mini (WebSocket)",
|
|
30
|
+
reasoning: true,
|
|
31
|
+
temperature: true,
|
|
32
|
+
limit: { context: 400000, output: 128000 },
|
|
33
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"], false),
|
|
35
34
|
release_date: "2026-03-05",
|
|
36
35
|
},
|
|
37
36
|
"gpt-5.3-codex": {
|
|
38
37
|
name: "GPT 5.3 Codex (WebSocket)",
|
|
39
38
|
reasoning: true,
|
|
40
39
|
temperature: false,
|
|
41
|
-
limit: { context: 400000,
|
|
42
|
-
variants: makeVariants(["low", "medium", "high"]),
|
|
40
|
+
limit: { context: 400000, output: 128000 },
|
|
41
|
+
variants: makeVariants(["low", "medium", "high", "xhigh"], false),
|
|
43
42
|
family: "gpt-codex",
|
|
44
43
|
release_date: "2026-02-05",
|
|
45
44
|
},
|
|
46
|
-
"gpt-5.3-codex-spark": {
|
|
47
|
-
name: "GPT 5.3 Codex Spark (WebSocket)",
|
|
48
|
-
reasoning: true,
|
|
49
|
-
temperature: false,
|
|
50
|
-
limit: { context: 128000, output: 128000 },
|
|
51
|
-
variants: makeVariants(["low", "medium", "high"], false),
|
|
52
|
-
family: "gpt-codex",
|
|
53
|
-
release_date: "2026-03-10",
|
|
54
|
-
},
|
|
55
45
|
"gpt-5.2": {
|
|
56
46
|
name: "GPT 5.2 (WebSocket)",
|
|
57
47
|
reasoning: true,
|
|
58
48
|
temperature: true,
|
|
59
|
-
limit: { context:
|
|
60
|
-
variants: makeVariants(["none", "low", "medium", "high"]),
|
|
49
|
+
limit: { context: 400000, output: 128000 },
|
|
50
|
+
variants: makeVariants(["none", "low", "medium", "high", "xhigh"]),
|
|
61
51
|
release_date: "2025-12-10",
|
|
62
52
|
},
|
|
63
|
-
"gpt-5.2-codex": {
|
|
64
|
-
name: "GPT 5.2 Codex (WebSocket)",
|
|
65
|
-
reasoning: true,
|
|
66
|
-
temperature: false,
|
|
67
|
-
limit: { context: 272000, output: 128000 },
|
|
68
|
-
variants: makeVariants(["low", "medium", "high"]),
|
|
69
|
-
family: "gpt-codex",
|
|
70
|
-
release_date: "2025-12-15",
|
|
71
|
-
},
|
|
72
|
-
"gpt-5.1-codex": {
|
|
73
|
-
name: "GPT 5.1 Codex (WebSocket)",
|
|
74
|
-
reasoning: true,
|
|
75
|
-
temperature: false,
|
|
76
|
-
limit: { context: 272000, output: 128000 },
|
|
77
|
-
variants: makeVariants(["low", "medium", "high"]),
|
|
78
|
-
family: "gpt-codex",
|
|
79
|
-
release_date: "2025-10-01",
|
|
80
|
-
},
|
|
81
53
|
};
|
|
82
54
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -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,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,OAAO,EAAE,
|
|
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,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,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3C,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACzE,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,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3C,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACzE,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,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1C,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC;QACzE,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,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1C,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,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1C,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClE,YAAY,EAAE,YAAY;KAC3B;CACF,CAAA"}
|
package/dist/models/resolve.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CodexModelInfo } from "./catalog.js";
|
|
1
2
|
import { type OpenAIWSModelDef } from "./defaults.js";
|
|
2
3
|
export type ProviderModelConfig = {
|
|
3
4
|
id: string;
|
|
@@ -47,26 +48,6 @@ export type ProviderModelConfig = {
|
|
|
47
48
|
[key: string]: unknown;
|
|
48
49
|
};
|
|
49
50
|
export type ProviderModelOverrides = Record<string, Partial<ProviderModelConfig>>;
|
|
50
|
-
type ModelsDevModel = {
|
|
51
|
-
id?: string;
|
|
52
|
-
name?: string;
|
|
53
|
-
family?: string;
|
|
54
|
-
attachment?: boolean;
|
|
55
|
-
reasoning?: boolean;
|
|
56
|
-
temperature?: boolean;
|
|
57
|
-
tool_call?: boolean;
|
|
58
|
-
release_date?: string;
|
|
59
|
-
limit?: {
|
|
60
|
-
context?: number;
|
|
61
|
-
input?: number;
|
|
62
|
-
output?: number;
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
type ModelsDevCatalog = {
|
|
66
|
-
openai?: {
|
|
67
|
-
models?: Record<string, ModelsDevModel>;
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
51
|
export type OpenCodeConfigModel = {
|
|
71
52
|
name: string;
|
|
72
53
|
family?: string;
|
|
@@ -94,12 +75,9 @@ export type OpenCodeConfigModel = {
|
|
|
94
75
|
variants: Record<string, Record<string, unknown>>;
|
|
95
76
|
};
|
|
96
77
|
export declare function modelToProviderConfig(id: string, model: OpenAIWSModelDef): ProviderModelConfig;
|
|
97
|
-
export declare function resolveModelsFromCatalog(catalog: ModelsDevCatalog | undefined, overrides?: ProviderModelOverrides): Record<string, ProviderModelConfig>;
|
|
98
78
|
export declare function resolveModels(overrides?: ProviderModelOverrides): Record<string, ProviderModelConfig>;
|
|
99
|
-
export declare function
|
|
100
|
-
|
|
101
|
-
timeoutMs?: number;
|
|
102
|
-
}): Promise<Record<string, ProviderModelConfig>>;
|
|
79
|
+
export declare function resolveModelsForOAuth(catalog: CodexModelInfo[] | undefined, overrides?: ProviderModelOverrides): Record<string, ProviderModelConfig>;
|
|
80
|
+
export declare function resolveModelsForApiKey(allowedIds: Set<string> | undefined, overrides?: ProviderModelOverrides): Record<string, ProviderModelConfig>;
|
|
103
81
|
export declare function modelToOpenCodeConfig(model: OpenAIWSModelDef): OpenCodeConfigModel;
|
|
104
82
|
export declare function providerConfigModels(overrides?: Record<string, unknown>): Record<string, unknown>;
|
|
105
83
|
export declare function providerConfig(overrides?: ProviderModelOverrides): {
|
|
@@ -108,5 +86,4 @@ export declare function providerConfig(overrides?: ProviderModelOverrides): {
|
|
|
108
86
|
npm: string;
|
|
109
87
|
models: Record<string, unknown>;
|
|
110
88
|
};
|
|
111
|
-
export {};
|
|
112
89
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/models/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE;QACZ,WAAW,EAAE,OAAO,CAAA;QACpB,SAAS,EAAE,OAAO,CAAA;QAClB,UAAU,EAAE,OAAO,CAAA;QACnB,QAAQ,EAAE,OAAO,CAAA;QACjB,KAAK,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAA;QACtF,MAAM,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAA;QACvF,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;IAC/E,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,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;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;AAEjF,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/models/resolve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAkC,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE;QACZ,WAAW,EAAE,OAAO,CAAA;QACpB,SAAS,EAAE,OAAO,CAAA;QAClB,UAAU,EAAE,OAAO,CAAA;QACnB,QAAQ,EAAE,OAAO,CAAA;QACjB,KAAK,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAA;QACtF,MAAM,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAA;QACvF,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;IAC/E,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,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;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;AAEjF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KACtB,CAAA;IACD,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IAChF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAClD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAwB9F;AA6ED,wBAAgB,aAAa,CAAC,SAAS,GAAE,sBAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAEzG;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EACrC,SAAS,GAAE,sBAA2B,GACrC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CASrC;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EACnC,SAAS,GAAE,sBAA2B,GACrC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAarC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAmBlF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,2BAa3E;AAED,wBAAgB,cAAc,CAAC,SAAS,GAAE,sBAA2B;;;;;EAOpE"}
|