oc-codex-multi-auth 6.15.0 → 6.17.0
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 +15 -11
- package/config/README.md +36 -13
- package/config/opencode-legacy.json +150 -0
- package/config/opencode-modern.json +48 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +145 -55
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts/persistence.d.ts +53 -3
- package/dist/lib/accounts/persistence.d.ts.map +1 -1
- package/dist/lib/accounts/persistence.js +110 -4
- package/dist/lib/accounts/persistence.js.map +1 -1
- package/dist/lib/accounts/state.d.ts +1 -0
- package/dist/lib/accounts/state.d.ts.map +1 -1
- package/dist/lib/accounts/state.js +11 -0
- package/dist/lib/accounts/state.js.map +1 -1
- package/dist/lib/accounts.d.ts +1 -1
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +1 -1
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/login-runner.d.ts +2 -0
- package/dist/lib/auth/login-runner.d.ts.map +1 -1
- package/dist/lib/auth/login-runner.js +44 -12
- package/dist/lib/auth/login-runner.js.map +1 -1
- package/dist/lib/auth/loopback-flow.d.ts +124 -0
- package/dist/lib/auth/loopback-flow.d.ts.map +1 -0
- package/dist/lib/auth/loopback-flow.js +112 -0
- package/dist/lib/auth/loopback-flow.js.map +1 -0
- package/dist/lib/auth/plan-tier.d.ts +21 -0
- package/dist/lib/auth/plan-tier.d.ts.map +1 -0
- package/dist/lib/auth/plan-tier.js +92 -0
- package/dist/lib/auth/plan-tier.js.map +1 -0
- package/dist/lib/auth/token-utils.d.ts +8 -10
- package/dist/lib/auth/token-utils.d.ts.map +1 -1
- package/dist/lib/auth/token-utils.js +27 -18
- package/dist/lib/auth/token-utils.js.map +1 -1
- package/dist/lib/constants.d.ts +5 -2
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +5 -2
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts +1 -1
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +51 -4
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/quota-notifications.d.ts +15 -0
- package/dist/lib/quota-notifications.d.ts.map +1 -1
- package/dist/lib/quota-notifications.js +42 -12
- package/dist/lib/quota-notifications.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +88 -9
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/client-identity.d.ts.map +1 -1
- package/dist/lib/request/helpers/client-identity.js +9 -2
- package/dist/lib/request/helpers/client-identity.js.map +1 -1
- package/dist/lib/request/helpers/model-map.d.ts +23 -0
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +92 -2
- package/dist/lib/request/helpers/model-map.js.map +1 -1
- package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
- package/dist/lib/request/helpers/responses-lite.js +34 -1
- package/dist/lib/request/helpers/responses-lite.js.map +1 -1
- package/dist/lib/request/request-transformer.d.ts.map +1 -1
- package/dist/lib/request/request-transformer.js +78 -13
- package/dist/lib/request/request-transformer.js.map +1 -1
- package/dist/lib/schemas.d.ts +15 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/flagged.d.ts.map +1 -1
- package/dist/lib/storage/flagged.js +5 -0
- package/dist/lib/storage/flagged.js.map +1 -1
- package/dist/lib/storage/migrations.d.ts +2 -0
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage/migrations.js.map +1 -1
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +7 -4
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tools/codex-list.d.ts.map +1 -1
- package/dist/lib/tools/codex-list.js +13 -1
- package/dist/lib/tools/codex-list.js.map +1 -1
- package/dist/lib/tools/codex-status.d.ts.map +1 -1
- package/dist/lib/tools/codex-status.js +8 -0
- package/dist/lib/tools/codex-status.js.map +1 -1
- package/dist/lib/tui-status.d.ts.map +1 -1
- package/dist/lib/tui-status.js +6 -2
- package/dist/lib/tui-status.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/install-oc-codex-multi-auth-core.js +5 -5
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://github.com/ndycode/oc-codex-multi-auth/actions/workflows/ci.yml)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
-
`oc-codex-multi-auth` is an OpenCode plugin for ChatGPT Plus/Pro OAuth, Codex and GPT-5 model routing (including GPT-5.6 Sol/Terra/Luna), multi-account rotation, account switching, health checks, quota visibility, diagnostics, and recovery tools. It installs the OpenCode provider/TUI configuration, registers a 24-tool `codex-*` command toolkit, and routes OpenCode OpenAI SDK requests through the ChatGPT-backed Codex flow with local account state.
|
|
8
|
+
`oc-codex-multi-auth` is an OpenCode plugin for ChatGPT Plus/Pro OAuth, Codex and GPT-5/GPT-6 model routing (including GPT-6 Astra, the Daybreak cyber tiers, and GPT-5.6 Sol/Terra/Luna), multi-account rotation, account switching, health checks, quota visibility, diagnostics, and recovery tools. It installs the OpenCode provider/TUI configuration, registers a 24-tool `codex-*` command toolkit, and routes OpenCode OpenAI SDK requests through the ChatGPT-backed Codex flow with local account state.
|
|
9
9
|
|
|
10
10
|
Use it when you want OpenCode to run Codex-style coding workflows from your own ChatGPT subscription while keeping accounts visible, switchable, health-checked, and recoverable from the terminal.
|
|
11
11
|
|
|
@@ -20,8 +20,9 @@ Use it when you want OpenCode to run Codex-style coding workflows from your own
|
|
|
20
20
|
## What You Get
|
|
21
21
|
|
|
22
22
|
- OpenCode plugin support for ChatGPT Plus/Pro OAuth and Codex/GPT-5 coding workflows
|
|
23
|
-
- GPT-5.6 Sol
|
|
24
|
-
-
|
|
23
|
+
- GPT-6 Astra and GPT-5.6 Sol/Terra/Luna (responses-lite path) plus GPT-5.5, GPT-5.5 Fast, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.1, and Codex model templates
|
|
24
|
+
- Routing for the Daybreak-gated cyber tiers (`gpt-daybreak-blue-latest`, `gpt-daybreak-red-latest`, `gpt-5.6-cyber`), deliberately kept out of the shipped templates since they need program approval
|
|
25
|
+
- Compact modern OpenCode config with 13 base families and 59 variant presets; explicit legacy selector IDs when needed
|
|
25
26
|
- Stateless Codex-compatible request handling with `store: false` and `reasoning.encrypted_content`
|
|
26
27
|
- Multi-account rotation with hybrid health scoring, cooldowns, automatic token refresh, and failover
|
|
27
28
|
- Explicit saved-account listing, account switching, labeling, tagging, notes, health checks, and diagnostics
|
|
@@ -89,8 +90,8 @@ Installer flags:
|
|
|
89
90
|
| Flag | Effect |
|
|
90
91
|
| --- | --- |
|
|
91
92
|
| (default) / `--plugin-only` | Register the plugin and TUI integration without changing `provider.openai` |
|
|
92
|
-
| `--modern` | Install compact modern catalog:
|
|
93
|
-
| `--full` | Compact bases plus
|
|
93
|
+
| `--modern` | Install compact modern catalog: 13 bases, 59 variants |
|
|
94
|
+
| `--full` | Compact bases plus 59 explicit selector IDs |
|
|
94
95
|
| `--legacy` | Explicit-only catalog for older OpenCode |
|
|
95
96
|
| `--dry-run` | Show changed config paths without values or writes |
|
|
96
97
|
| `--no-cache-clear` | Skip clearing the OpenCode plugin cache |
|
|
@@ -190,7 +191,7 @@ Run a prompt with compact modern selectors:
|
|
|
190
191
|
```bash
|
|
191
192
|
opencode run "Summarize the failing test and suggest a fix" --model=openai/gpt-5.5 --variant=medium
|
|
192
193
|
opencode run "Summarize the failing test and suggest a fix" --model=openai/gpt-5.5-fast --variant=medium
|
|
193
|
-
opencode run "Plan the refactor" --model=openai/gpt-
|
|
194
|
+
opencode run "Plan the refactor" --model=openai/gpt-6-astra --variant=high
|
|
194
195
|
```
|
|
195
196
|
|
|
196
197
|
Use Codex-focused routing:
|
|
@@ -255,7 +256,7 @@ Most of these also run as a **direct CLI** with no agent/model involvement (no t
|
|
|
255
256
|
|
|
256
257
|
- stateless request handling forces `store: false`
|
|
257
258
|
- `reasoning.encrypted_content` is preserved for multi-turn continuity
|
|
258
|
-
- GPT-5.6 tiers use the responses-lite request shape and default client identity `opencode`; other models default to `codex_cli_rs`
|
|
259
|
+
- GPT-6 Astra, the Daybreak tiers and the GPT-5.6 tiers use the responses-lite request shape and default client identity `opencode`; other models default to `codex_cli_rs`
|
|
259
260
|
- account rotation is health-aware (`rotationStrategy` default `hybrid`) and avoids repeatedly selecting cooling accounts
|
|
260
261
|
- same-host OpenCode processes sharing an account file serialize refresh-token exchange and commit so one current single-use token is exchanged once
|
|
261
262
|
- 5xx bursts, network failures, and quota responses penalize account health
|
|
@@ -263,6 +264,8 @@ Most of these also run as a **direct CLI** with no agent/model involvement (no t
|
|
|
263
264
|
- unsupported-model handling is strict by default, with opt-in fallback controls
|
|
264
265
|
- TUI quota status follows the account/workspace used by the latest request
|
|
265
266
|
- Business workspace memberships and Personal accounts keep separate usage and quota windows. Business members sharing one workspace are distinguished by their member/seat identity, so their usage is not collapsed into one row.
|
|
267
|
+
- An account identifies itself by its own ChatGPT email and the last 6 characters of its account id, with the email masked when `maskEmail` is on. The OAuth id_token also lists the API-platform organizations the login belongs to; those are not ChatGPT workspaces and are never used to name an account, so logging in clears a label left behind by one. A label you set with `codex-label` is always kept.
|
|
268
|
+
- The ChatGPT plan (`Free`, `Plus`, `Pro`, `Business`, `Business Premium`) is read from the access token, refreshed on every token refresh, and shown by `codex-list` and `codex-status`. `codex-limits` and the TUI read the plan live from the usage endpoint and name it the same way. An unrecognized plan is reported verbatim rather than renamed.
|
|
266
269
|
|
|
267
270
|
---
|
|
268
271
|
|
|
@@ -302,12 +305,13 @@ The feature is disabled by default.
|
|
|
302
305
|
|
|
303
306
|
Each line reports the enabled account with the most headroom in that window,
|
|
304
307
|
together with that same account's reset time, so the pair always describes a
|
|
305
|
-
quota that one account actually has.
|
|
306
|
-
|
|
307
|
-
|
|
308
|
+
quota that one account actually has. When a different account recovers sooner,
|
|
309
|
+
that reset is appended under its own label rather than folded into the first
|
|
310
|
+
one. Windows a plan has switched off are skipped rather than counted as full.
|
|
311
|
+
Account identities are omitted for readability and lock-screen privacy:
|
|
308
312
|
|
|
309
313
|
```text
|
|
310
|
-
5h: 10% | resets 22:30
|
|
314
|
+
5h: 10% | resets 02:00 | another account resets 22:30
|
|
311
315
|
Weekly: 72% | resets 22:30 on Aug 30
|
|
312
316
|
```
|
|
313
317
|
|
package/config/README.md
CHANGED
|
@@ -6,17 +6,17 @@ This directory contains the official OpenCode config templates for `oc-codex-mul
|
|
|
6
6
|
|
|
7
7
|
| File | OpenCode version | Description |
|
|
8
8
|
|------|------------------|-------------|
|
|
9
|
-
| [`opencode-modern.json`](./opencode-modern.json) | **v1.0.210+** | Variant-based config: **
|
|
10
|
-
| [`opencode-legacy.json`](./opencode-legacy.json) | **v1.0.209 and below** | Legacy explicit entries: **
|
|
9
|
+
| [`opencode-modern.json`](./opencode-modern.json) | **v1.0.210+** | Variant-based config: **13 base models**, **59 variants** total |
|
|
10
|
+
| [`opencode-legacy.json`](./opencode-legacy.json) | **v1.0.209 and below** | Legacy explicit entries: **59** individual model definitions |
|
|
11
11
|
|
|
12
12
|
## Install modes
|
|
13
13
|
|
|
14
14
|
| Installer flag | What gets written |
|
|
15
15
|
|----------------|-------------------|
|
|
16
16
|
| default / `--plugin-only` | Register plugin entries; preserve `provider.openai` |
|
|
17
|
-
| `--modern` | Compact modern:
|
|
17
|
+
| `--modern` | Compact modern: 13 base OAuth families + variant picker |
|
|
18
18
|
| `--full` | Modern bases **plus** explicit legacy selector IDs |
|
|
19
|
-
| `--legacy` | Explicit-only catalog (
|
|
19
|
+
| `--legacy` | Explicit-only catalog (59 preset model entries) |
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
npx -y oc-codex-multi-auth@latest # plugin entries only
|
|
@@ -53,16 +53,17 @@ OpenCode v1.0.210+ added model `variants`, so one model entry can expose multipl
|
|
|
53
53
|
|
|
54
54
|
Both templates include:
|
|
55
55
|
|
|
56
|
-
### Base model families (
|
|
56
|
+
### Base model families (13)
|
|
57
57
|
|
|
58
58
|
| Base | Variants (modern) |
|
|
59
59
|
|------|-------------------|
|
|
60
|
+
| `gpt-6-astra` | low, medium, high, xhigh, max, ultra |
|
|
60
61
|
| `gpt-5.6-sol` | low, medium, high, xhigh, max, ultra |
|
|
61
62
|
| `gpt-5.6-terra` | low, medium, high, xhigh, max, ultra |
|
|
62
63
|
| `gpt-5.6-luna` | low, medium, high, xhigh, max |
|
|
63
64
|
| `gpt-5.5` | none, low, medium, high, xhigh |
|
|
64
65
|
| `gpt-5.5-fast` | none, low, medium, high, xhigh |
|
|
65
|
-
| `gpt-5.4-mini` | none, low, medium, high, xhigh |
|
|
66
|
+
| `gpt-5.4-mini` | none, low, medium, high, xhigh (retired from Codex 2026-08-31; auto-upgrades to `gpt-5.6-luna`) |
|
|
66
67
|
| `gpt-5.4-nano` | none, low, medium, high, xhigh |
|
|
67
68
|
| `gpt-5.1-codex-max` | low, medium, high, xhigh |
|
|
68
69
|
| `gpt-5.1-codex` | low, medium, high |
|
|
@@ -74,7 +75,7 @@ Shared template requirements:
|
|
|
74
75
|
|
|
75
76
|
- `store: false` and `include: ["reasoning.encrypted_content"]`
|
|
76
77
|
- Context metadata:
|
|
77
|
-
- `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna` / `gpt-5.5` / `gpt-5.5-fast`: context **1,050,000**, output **128,000**
|
|
78
|
+
- `gpt-6-astra` / `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna` / `gpt-5.5` / `gpt-5.5-fast`: context **1,050,000**, output **128,000**
|
|
78
79
|
- `gpt-5.4-mini` / `gpt-5.4-nano` / Codex models (`gpt-5-codex`, `gpt-5.1-codex*`, …): context **400,000**, output **128,000**
|
|
79
80
|
- `gpt-5.1`: context **272,000**, output **128,000**
|
|
80
81
|
|
|
@@ -82,13 +83,28 @@ Use `opencode debug config` to verify that these template entries were merged in
|
|
|
82
83
|
|
|
83
84
|
If your OpenCode runtime supports global compaction tuning, you can also set values near the largest context windows (for example ~1M context / slightly lower auto-compact limit). Prefer values that match your selected model family.
|
|
84
85
|
|
|
86
|
+
## GPT-6 Astra notes
|
|
87
|
+
|
|
88
|
+
- Served over the **responses-lite** path by default. Astra is the one lite model whose membership is *inferred* rather than read from a catalog entry: the public Codex catalog has had no `gpt-6-astra` entry since its 2026-08-20 refresh, and Astra launched 2026-09-03. Override with `CODEX_AUTH_ASTRA_RESPONSES_LITE=0` (classic shape) or `=1` (force lite).
|
|
89
|
+
- Rollout gate: Astra reached a limited set of organizations first, so accounts outside it auto-fallback
|
|
90
|
+
`gpt-6-astra → gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5`
|
|
91
|
+
(disable with `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1`).
|
|
92
|
+
- Efforts are low through `ultra`, per OpenAI's Codex model list. `ultra` is sent as `max` on the wire, as with 5.6.
|
|
93
|
+
- Bare `gpt-6` is a plugin-side alias. `gpt-6-astra-pro` is not a Codex-routable id and collapses onto `gpt-6-astra`.
|
|
94
|
+
|
|
95
|
+
## Cyber tier notes (Daybreak-gated)
|
|
96
|
+
|
|
97
|
+
- `gpt-daybreak-blue-latest` (defensive) and `gpt-daybreak-red-latest` (cyber-permissive, for authorized security research) are catalog-verified cyber-specialty models, served over the responses-lite path. `gpt-5.6-cyber` is OpenAI's published alias fronting them, and belongs to the 5.6 generation rather than GPT-6.
|
|
98
|
+
- All three need Daybreak program approval, and Blue/Red are `visibility: "hide"` in the catalog, so they are **not** in the shipped templates — same policy as `gpt-5.3-codex-spark` below. The plugin routes them fully; entitled users add the ids by hand.
|
|
99
|
+
- None has a fallback chain on purpose — a cyber-specialty request must not be silently answered by a general model.
|
|
100
|
+
|
|
85
101
|
## GPT-5.6 notes
|
|
86
102
|
|
|
87
103
|
- Served over the **responses-lite** path (`use_responses_lite`).
|
|
88
104
|
- Preview entitlement: accounts without access auto-fallback
|
|
89
105
|
`gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5`
|
|
90
106
|
(disable with `CODEX_AUTH_DISABLE_GPT56_AUTO_FALLBACK=1`).
|
|
91
|
-
- Default client identity for 5.6 is host/opencode (`originator: opencode`); other families default to Codex CLI identity.
|
|
107
|
+
- Default client identity for every responses-lite model (5.6, GPT-6 Astra, Daybreak) is host/opencode (`originator: opencode`); other families default to Codex CLI identity.
|
|
92
108
|
- `ultra` is accepted as a client-side alias and sent as `max` on the wire (no subagent orchestration in this plugin).
|
|
93
109
|
|
|
94
110
|
## Spark model note
|
|
@@ -104,6 +120,7 @@ Recommended compact UI selectors:
|
|
|
104
120
|
```bash
|
|
105
121
|
opencode run "task" --model=openai/gpt-5.5 --variant=medium
|
|
106
122
|
opencode run "task" --model=openai/gpt-5.5-fast --variant=medium
|
|
123
|
+
opencode run "task" --model=openai/gpt-6-astra --variant=medium
|
|
107
124
|
opencode run "task" --model=openai/gpt-5.6-sol --variant=medium
|
|
108
125
|
opencode run "task" --model=openai/gpt-5-codex --variant=high
|
|
109
126
|
```
|
|
@@ -122,13 +139,16 @@ A barebones debug template is available at [`minimal-opencode.json`](./minimal-o
|
|
|
122
139
|
|
|
123
140
|
Current defaults are strict entitlement handling except for common default-selector entitlement gates:
|
|
124
141
|
|
|
142
|
+
- **GPT-6 Astra** auto-fallback: `gpt-6-astra → gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5`
|
|
143
|
+
- **Daybreak** cyber tiers: no fallback chain, deliberately
|
|
125
144
|
- **GPT-5.6** auto-fallback: `gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5`
|
|
126
|
-
- **`gpt-5.5`** and canonical **`gpt-5-codex`** can auto-fallback through `gpt-5.
|
|
145
|
+
- **`gpt-5.5`** and canonical **`gpt-5-codex`** can auto-fallback through `gpt-5.6-terra`, `gpt-5.6-luna`, then `gpt-5.2` when the backend reports the selected model is not supported
|
|
127
146
|
- `unsupportedCodexPolicy: "strict"` returns other entitlement errors directly
|
|
128
147
|
- set `unsupportedCodexPolicy: "fallback"` (or `CODEX_AUTH_UNSUPPORTED_MODEL_POLICY=fallback`) to enable the full fallback chain for manual/legacy selectors
|
|
129
148
|
- `fallbackToGpt52OnUnsupportedGpt53: true` keeps the legacy `gpt-5.3-codex -> gpt-5.2-codex` edge inside fallback mode
|
|
130
|
-
- user-typed `gpt-5.5-pro*` is canonicalized to `gpt-5.5` before fallback because GPT-5.5 Pro is ChatGPT-only, not a Codex-routable model
|
|
131
|
-
- legacy Codex selectors such as `gpt-5.2-codex`, `gpt-5.3-codex`, and `gpt-5.3-codex-spark` normalize to canonical `gpt-5-codex`; if that canonical Codex model is gated, the default auto-fallback can retry through
|
|
149
|
+
- user-typed `gpt-5.5-pro*` is canonicalized to `gpt-5.5` before fallback because GPT-5.5 Pro is ChatGPT-only, not a Codex-routable model; `gpt-6-astra-pro*` is canonicalized to `gpt-6-astra` for the same reason
|
|
150
|
+
- legacy Codex selectors such as `gpt-5.2-codex`, `gpt-5.3-codex`, and `gpt-5.3-codex-spark` normalize to canonical `gpt-5-codex`; if that canonical Codex model is gated, the default auto-fallback can retry through `gpt-5.6-terra`, `gpt-5.5`, then `gpt-5.2`
|
|
151
|
+
- set `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1` to disable GPT-6 Astra auto-fallback
|
|
132
152
|
- set `CODEX_AUTH_DISABLE_GPT56_AUTO_FALLBACK=1` to disable GPT-5.6 auto-fallback
|
|
133
153
|
- set `CODEX_AUTH_DISABLE_GPT55_AUTO_FALLBACK=1` to disable GPT-5.5 auto-fallback
|
|
134
154
|
- set `CODEX_AUTH_DISABLE_CODEX_AUTO_FALLBACK=1` to disable canonical Codex/GPT-5.4-family auto-fallback
|
|
@@ -137,9 +157,12 @@ Current defaults are strict entitlement handling except for common default-selec
|
|
|
137
157
|
|
|
138
158
|
Default chains when generic fallback policy is enabled (and empty override map):
|
|
139
159
|
|
|
160
|
+
- `gpt-6-astra → gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5` (also auto under default strict for rollout gates)
|
|
140
161
|
- `gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5` (also auto under default strict for preview gates)
|
|
141
|
-
- `gpt-5.5 → gpt-5.
|
|
142
|
-
- `gpt-5-codex → gpt-5.
|
|
162
|
+
- `gpt-5.5 → gpt-5.6-terra → gpt-5.6-luna → gpt-5.2`
|
|
163
|
+
- `gpt-5-codex → gpt-5.6-terra → gpt-5.5 → gpt-5.2`
|
|
164
|
+
|
|
165
|
+
> GPT-5.4 and GPT-5.4 Mini were retired from Codex on 2026-08-31; the catalog marks both `visibility: "hide"` and names their replacements (`gpt-5.4` -> `gpt-5.6-terra`, `gpt-5.4-mini` -> `gpt-5.6-luna`), and `gpt-5.4-nano` has no catalog entry. The default chains therefore end at live models rather than leading with retired ones.
|
|
143
166
|
- `gpt-5.4-pro → gpt-5.4` (if you manually select `gpt-5.4-pro`)
|
|
144
167
|
- `gpt-5.3-codex → gpt-5-codex → gpt-5.2-codex`
|
|
145
168
|
- `gpt-5.3-codex-spark → gpt-5-codex → gpt-5.3-codex → gpt-5.2-codex` (only if Spark IDs are added manually)
|
|
@@ -15,6 +15,156 @@
|
|
|
15
15
|
"store": false
|
|
16
16
|
},
|
|
17
17
|
"models": {
|
|
18
|
+
"gpt-6-astra-low": {
|
|
19
|
+
"name": "GPT 6 Astra Low (OAuth)",
|
|
20
|
+
"limit": {
|
|
21
|
+
"context": 1050000,
|
|
22
|
+
"output": 128000
|
|
23
|
+
},
|
|
24
|
+
"modalities": {
|
|
25
|
+
"input": [
|
|
26
|
+
"text",
|
|
27
|
+
"image"
|
|
28
|
+
],
|
|
29
|
+
"output": [
|
|
30
|
+
"text"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"options": {
|
|
34
|
+
"reasoningEffort": "low",
|
|
35
|
+
"reasoningSummary": "auto",
|
|
36
|
+
"textVerbosity": "medium",
|
|
37
|
+
"include": [
|
|
38
|
+
"reasoning.encrypted_content"
|
|
39
|
+
],
|
|
40
|
+
"store": false
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"gpt-6-astra-medium": {
|
|
44
|
+
"name": "GPT 6 Astra Medium (OAuth)",
|
|
45
|
+
"limit": {
|
|
46
|
+
"context": 1050000,
|
|
47
|
+
"output": 128000
|
|
48
|
+
},
|
|
49
|
+
"modalities": {
|
|
50
|
+
"input": [
|
|
51
|
+
"text",
|
|
52
|
+
"image"
|
|
53
|
+
],
|
|
54
|
+
"output": [
|
|
55
|
+
"text"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"options": {
|
|
59
|
+
"reasoningEffort": "medium",
|
|
60
|
+
"reasoningSummary": "auto",
|
|
61
|
+
"textVerbosity": "medium",
|
|
62
|
+
"include": [
|
|
63
|
+
"reasoning.encrypted_content"
|
|
64
|
+
],
|
|
65
|
+
"store": false
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"gpt-6-astra-high": {
|
|
69
|
+
"name": "GPT 6 Astra High (OAuth)",
|
|
70
|
+
"limit": {
|
|
71
|
+
"context": 1050000,
|
|
72
|
+
"output": 128000
|
|
73
|
+
},
|
|
74
|
+
"modalities": {
|
|
75
|
+
"input": [
|
|
76
|
+
"text",
|
|
77
|
+
"image"
|
|
78
|
+
],
|
|
79
|
+
"output": [
|
|
80
|
+
"text"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"options": {
|
|
84
|
+
"reasoningEffort": "high",
|
|
85
|
+
"reasoningSummary": "detailed",
|
|
86
|
+
"textVerbosity": "medium",
|
|
87
|
+
"include": [
|
|
88
|
+
"reasoning.encrypted_content"
|
|
89
|
+
],
|
|
90
|
+
"store": false
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"gpt-6-astra-xhigh": {
|
|
94
|
+
"name": "GPT 6 Astra Xhigh (OAuth)",
|
|
95
|
+
"limit": {
|
|
96
|
+
"context": 1050000,
|
|
97
|
+
"output": 128000
|
|
98
|
+
},
|
|
99
|
+
"modalities": {
|
|
100
|
+
"input": [
|
|
101
|
+
"text",
|
|
102
|
+
"image"
|
|
103
|
+
],
|
|
104
|
+
"output": [
|
|
105
|
+
"text"
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"options": {
|
|
109
|
+
"reasoningEffort": "xhigh",
|
|
110
|
+
"reasoningSummary": "detailed",
|
|
111
|
+
"textVerbosity": "medium",
|
|
112
|
+
"include": [
|
|
113
|
+
"reasoning.encrypted_content"
|
|
114
|
+
],
|
|
115
|
+
"store": false
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"gpt-6-astra-max": {
|
|
119
|
+
"name": "GPT 6 Astra Max (OAuth)",
|
|
120
|
+
"limit": {
|
|
121
|
+
"context": 1050000,
|
|
122
|
+
"output": 128000
|
|
123
|
+
},
|
|
124
|
+
"modalities": {
|
|
125
|
+
"input": [
|
|
126
|
+
"text",
|
|
127
|
+
"image"
|
|
128
|
+
],
|
|
129
|
+
"output": [
|
|
130
|
+
"text"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"options": {
|
|
134
|
+
"reasoningEffort": "max",
|
|
135
|
+
"reasoningSummary": "detailed",
|
|
136
|
+
"textVerbosity": "medium",
|
|
137
|
+
"include": [
|
|
138
|
+
"reasoning.encrypted_content"
|
|
139
|
+
],
|
|
140
|
+
"store": false
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"gpt-6-astra-ultra": {
|
|
144
|
+
"name": "GPT 6 Astra Ultra (OAuth)",
|
|
145
|
+
"limit": {
|
|
146
|
+
"context": 1050000,
|
|
147
|
+
"output": 128000
|
|
148
|
+
},
|
|
149
|
+
"modalities": {
|
|
150
|
+
"input": [
|
|
151
|
+
"text",
|
|
152
|
+
"image"
|
|
153
|
+
],
|
|
154
|
+
"output": [
|
|
155
|
+
"text"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"options": {
|
|
159
|
+
"reasoningEffort": "ultra",
|
|
160
|
+
"reasoningSummary": "detailed",
|
|
161
|
+
"textVerbosity": "medium",
|
|
162
|
+
"include": [
|
|
163
|
+
"reasoning.encrypted_content"
|
|
164
|
+
],
|
|
165
|
+
"store": false
|
|
166
|
+
}
|
|
167
|
+
},
|
|
18
168
|
"gpt-5.6-sol-low": {
|
|
19
169
|
"name": "GPT 5.6 Sol Low (OAuth)",
|
|
20
170
|
"limit": {
|
|
@@ -15,6 +15,54 @@
|
|
|
15
15
|
"store": false
|
|
16
16
|
},
|
|
17
17
|
"models": {
|
|
18
|
+
"gpt-6-astra": {
|
|
19
|
+
"name": "GPT 6 Astra (OAuth)",
|
|
20
|
+
"limit": {
|
|
21
|
+
"context": 1050000,
|
|
22
|
+
"output": 128000
|
|
23
|
+
},
|
|
24
|
+
"modalities": {
|
|
25
|
+
"input": [
|
|
26
|
+
"text",
|
|
27
|
+
"image"
|
|
28
|
+
],
|
|
29
|
+
"output": [
|
|
30
|
+
"text"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"variants": {
|
|
34
|
+
"low": {
|
|
35
|
+
"reasoningEffort": "low",
|
|
36
|
+
"reasoningSummary": "auto",
|
|
37
|
+
"textVerbosity": "medium"
|
|
38
|
+
},
|
|
39
|
+
"medium": {
|
|
40
|
+
"reasoningEffort": "medium",
|
|
41
|
+
"reasoningSummary": "auto",
|
|
42
|
+
"textVerbosity": "medium"
|
|
43
|
+
},
|
|
44
|
+
"high": {
|
|
45
|
+
"reasoningEffort": "high",
|
|
46
|
+
"reasoningSummary": "detailed",
|
|
47
|
+
"textVerbosity": "medium"
|
|
48
|
+
},
|
|
49
|
+
"xhigh": {
|
|
50
|
+
"reasoningEffort": "xhigh",
|
|
51
|
+
"reasoningSummary": "detailed",
|
|
52
|
+
"textVerbosity": "medium"
|
|
53
|
+
},
|
|
54
|
+
"max": {
|
|
55
|
+
"reasoningEffort": "max",
|
|
56
|
+
"reasoningSummary": "detailed",
|
|
57
|
+
"textVerbosity": "medium"
|
|
58
|
+
},
|
|
59
|
+
"ultra": {
|
|
60
|
+
"reasoningEffort": "ultra",
|
|
61
|
+
"reasoningSummary": "detailed",
|
|
62
|
+
"textVerbosity": "medium"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
18
66
|
"gpt-5.6-sol": {
|
|
19
67
|
"name": "GPT 5.6 Sol (OAuth)",
|
|
20
68
|
"limit": {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AA2U/D;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,iBAAiB,EAAE,MAqjI/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAoB,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
|