@codexapi/codexclaude 2.0.31 → 2.0.33
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/CUSTOMIZATIONS.md +13 -12
- package/README.md +8 -7
- package/bin/codexclaude.js +81 -24
- package/codexclaude.md +37 -26
- package/package.json +3 -3
package/CUSTOMIZATIONS.md
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
## Runtime
|
|
6
6
|
|
|
7
7
|
- Customer-facing app name: `MagnetAPI.org Codex CLI`
|
|
8
|
-
- Local launcher version: `2.0.
|
|
9
|
-
- Bundled official runtime dependency: `@openai/codex@0.
|
|
8
|
+
- Local launcher version: `2.0.33`
|
|
9
|
+
- Bundled official runtime dependency: `@openai/codex@0.148.0-alpha.20`
|
|
10
10
|
- Required install command: `npm install -g @codexapi/codexclaude@latest`
|
|
11
|
-
- Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.
|
|
11
|
+
- Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.33.tgz`
|
|
12
12
|
- Bundled runtime version is managed internally and must not be used for customer update prompts.
|
|
13
13
|
- Launcher update checks may call the CodexAPI.pro version endpoint and `@codexapi/codexclaude` npm metadata only.
|
|
14
14
|
- The launcher must never check `@openai/codex` npm metadata or OpenAI GitHub releases for update notices.
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
- Passes unknown commands directly to the bundled runtime after config is applied.
|
|
26
26
|
- Provides `codexclaude changelog` using the managed version endpoint.
|
|
27
27
|
- Does not expose separate `codexclaude status` or `codexclaude usage` commands; wallet information remains a compact pre-launch line.
|
|
28
|
-
- Version `2.0.
|
|
29
|
-
- Mandatory updates present `Upgrade Now` in an interactive terminal, invoke npm with an argument array and no shell interpolation, then relaunch the requested action automatically.
|
|
28
|
+
- Version `2.0.33` is forced by the backend minimum version and older clients must show an update-required message.
|
|
29
|
+
- Mandatory updates present a press-Enter `Upgrade Now` action in an interactive terminal, invoke npm with an argument array and no shell interpolation, verify the installed launcher version, use the hosted release if the registry fails or returns a stale version, then relaunch the requested action automatically.
|
|
30
30
|
- The npm package manifest exposes only `codexclaude`, preventing npm from colliding with a native `codex` or `claude` command before postinstall runs.
|
|
31
31
|
- Global installation creates optional `codex` and `claude` aliases only when no existing command is present in the npm prefix or anywhere on `PATH`; native clients must never be overwritten.
|
|
32
32
|
|
|
@@ -45,14 +45,14 @@ The launcher writes a model provider named `codexapi`:
|
|
|
45
45
|
|
|
46
46
|
## Runtime Defaults
|
|
47
47
|
|
|
48
|
-
- Default model: `
|
|
49
|
-
- Supported launcher choices: `gpt-5.6`, `gpt-5.6-sol-max`, `gpt-5.6-sol-ultra`, `gpt-5.6-sol`, `gpt-5.5`, `claude-opus-5`, `claude-opus-4-8`, `claude-sonnet-5`, `claude-fable-5`, and `gpt-5.6-terra`
|
|
50
|
-
- Default reasoning effort displayed locally: `xhigh`; SOL Max and SOL Ultra retain their explicit premium labels.
|
|
51
|
-
- Reasoning hint
|
|
48
|
+
- Default model: `gpt-5.6-sol` displayed as `GPT-5.6 SOL`
|
|
49
|
+
- Supported launcher choices: `gpt-daybreak-blue-latest`, `gpt-5.6`, `gpt-5.6-sol-max`, `gpt-5.6-sol-ultra`, `gpt-5.6-sol`, `gpt-5.5`, `claude-opus-5`, `claude-opus-4-8`, `claude-sonnet-5`, `claude-fable-5`, and `gpt-5.6-terra`
|
|
50
|
+
- Default reasoning effort displayed locally: `Extra High`, stored as `xhigh`; SOL Max and SOL Ultra retain their explicit premium labels.
|
|
51
|
+
- Reasoning hint written to managed runtime config: model-specific
|
|
52
52
|
- Approval policy: `never`
|
|
53
53
|
- Sandbox mode: `danger-full-access`
|
|
54
54
|
- Display wording for permissions: `Full Access` in launcher-owned copy
|
|
55
|
-
- Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps the native `/model` picker limited to the supported choices and prevents fallback metadata warnings for GPT-5.6 Terra, SOL, SOL Max, SOL Ultra, Opus 5, Opus 4.8, Sonnet 5, and Fable 5.
|
|
55
|
+
- Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps the native `/model` picker limited to the supported choices and prevents fallback metadata warnings for ChatGPT Daybreak Blue, GPT-5.6 Terra, SOL, SOL Max, SOL Ultra, Opus 5, Opus 4.8, Sonnet 5, and Fable 5.
|
|
56
56
|
- Service tier: omitted by default; `/fast` remains user-controlled and billed server-side when active.
|
|
57
57
|
- TUI status line: `model-with-reasoning`, `fast-mode`, `current-dir`
|
|
58
58
|
- Fable 5 stays visible to the user while the backend applies its server-managed route and billing policy.
|
|
@@ -65,7 +65,8 @@ Before launching the runtime, the launcher calls `/api/v1/wallet/status`, then `
|
|
|
65
65
|
Expected status line:
|
|
66
66
|
|
|
67
67
|
```text
|
|
68
|
-
MagnetAPI.org Codex CLI v2.0.
|
|
68
|
+
MagnetAPI.org Codex CLI v2.0.33 · GPT-5.6 SOL Extra High · ~/project · Wallet balance $20.00
|
|
69
|
+
ChatGPT Daybreak Blue is now available on codexclaude exclusively.
|
|
69
70
|
```
|
|
70
71
|
|
|
71
72
|
## Upgrade Checklist
|
|
@@ -76,7 +77,7 @@ When updating the bundled runtime:
|
|
|
76
77
|
2. Update `@openai/codex` in `package.json` and `package-lock.json`.
|
|
77
78
|
3. Bump the launcher package version.
|
|
78
79
|
4. Keep `APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI"`.
|
|
79
|
-
5. Keep `DEFAULT_MODEL_ID = "
|
|
80
|
+
5. Keep `DEFAULT_MODEL_ID = "gpt-5.6-sol"` unless product explicitly changes the first-run default.
|
|
80
81
|
6. Keep `reasoningEffortForModel()` and model-specific visible reasoning.
|
|
81
82
|
7. Keep Full Access defaults: `approval_policy = "never"` and `sandbox_mode = "danger-full-access"`.
|
|
82
83
|
8. Keep `check_for_update_on_startup = false`.
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# codexclaude
|
|
2
2
|
|
|
3
|
-
`codexclaude` installs the MagnetAPI.org Codex CLI for customers who want one coding CLI that can use GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, ChatGPT-5.5, Opus 5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
|
|
3
|
+
`codexclaude` installs the MagnetAPI.org Codex CLI for customers who want one coding CLI that can use ChatGPT Daybreak Blue, GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, ChatGPT-5.5, Opus 5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
|
|
4
4
|
|
|
5
|
-
Version `2.0.
|
|
5
|
+
Version `2.0.33` bundles the official Codex runtime dependency `@openai/codex@0.148.0-alpha.20` and makes GPT-5.6 SOL with visible Extra High reasoning the default for new or invalid configurations. Existing valid model selections remain unchanged. It preserves the collision-safe updater, platform-native runtime launch, managed account and wallet integration, Full Access defaults, upstream update suppression, and complete model metadata.
|
|
6
6
|
|
|
7
7
|
## Install Or Update
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ This does not delete local session history. The update replaces the `codexclaude
|
|
|
16
16
|
|
|
17
17
|
The launcher checks CodexAPI.pro's managed version endpoint and the `@codexapi/codexclaude` npm package metadata only. It must never check `@openai/codex` npm metadata or OpenAI GitHub releases for customer update prompts.
|
|
18
18
|
|
|
19
|
-
Version `2.0.
|
|
19
|
+
Version `2.0.33` is enforced as the minimum supported version. A compatible older launcher presents `Upgrade Now`; pressing Enter installs `@codexapi/codexclaude@latest` and relaunches the requested action automatically. If the npm registry install fails, the updater tries the hosted release before asking the user to intervene. Non-interactive terminals print the same npm command instead of hanging for input.
|
|
20
20
|
|
|
21
21
|
## First Login
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ Version `2.0.31` is enforced as the minimum supported version. A compatible olde
|
|
|
24
24
|
codexclaude login
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
Enter the Dashboard Username or Email Address and password. The launcher can log in to CodexAPI.pro, ChatPlus.chat, MyAPI.world, or MagnetAPI.org, then saves the correct System Token locally, writes `~/.codex/config.toml`, sets Full Access defaults, and lets the customer choose the coding model. If the customer presses Enter at the model prompt,
|
|
27
|
+
Enter the Dashboard Username or Email Address and password. The launcher can log in to CodexAPI.pro, ChatPlus.chat, MyAPI.world, or MagnetAPI.org, then saves the correct System Token locally, writes `~/.codex/config.toml`, sets Full Access defaults, and lets the customer choose the coding model. If the customer presses Enter at the model prompt, GPT-5.6 SOL with Extra High reasoning is selected by default.
|
|
28
28
|
|
|
29
29
|
## Start Coding
|
|
30
30
|
|
|
@@ -44,7 +44,7 @@ Switch model:
|
|
|
44
44
|
codexclaude model
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
Available model labels are `GPT-5.6`, `GPT-5.6 SOL Max`, `GPT-5.6 SOL Ultra`, `GPT-5.6 SOL`, `ChatGPT-5.5`, `Opus 5`, `Opus 4.8`, `Sonnet 5`, `Fable 5`, and `GPT-5.6 Terra`. All models use a Responses-compatible endpoint and the same customer Token Wallet.
|
|
47
|
+
Available model labels are `ChatGPT Daybreak Blue`, `GPT-5.6`, `GPT-5.6 SOL Max`, `GPT-5.6 SOL Ultra`, `GPT-5.6 SOL`, `ChatGPT-5.5`, `Opus 5`, `Opus 4.8`, `Sonnet 5`, `Fable 5`, and `GPT-5.6 Terra`. All models use a Responses-compatible endpoint and the same customer Token Wallet.
|
|
48
48
|
|
|
49
49
|
## Launch Commands
|
|
50
50
|
|
|
@@ -67,13 +67,14 @@ codexclaude changelog
|
|
|
67
67
|
Before launching the coding runtime, the app prints a compact status line like:
|
|
68
68
|
|
|
69
69
|
```text
|
|
70
|
-
MagnetAPI.org Codex CLI v2.0.
|
|
70
|
+
MagnetAPI.org Codex CLI v2.0.33 · GPT-5.6 SOL Extra High · ~/project · Wallet balance $20.00
|
|
71
|
+
ChatGPT Daybreak Blue is now available on codexclaude exclusively.
|
|
71
72
|
```
|
|
72
73
|
|
|
73
74
|
## Preserved Customizations
|
|
74
75
|
|
|
75
76
|
- Dashboard Username or Email Address plus password login for CodexAPI.pro, ChatPlus.chat, MyAPI.world, and MagnetAPI.org.
|
|
76
|
-
- Opus 5, GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 model selection, with
|
|
77
|
+
- ChatGPT Daybreak Blue, Opus 5, GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 model selection, with GPT-5.6 SOL/Extra High as the default.
|
|
77
78
|
- Service-specific Responses-compatible provider for the dashboard account that logged in.
|
|
78
79
|
- Full Access defaults: approval policy `never` and sandbox mode `danger-full-access`.
|
|
79
80
|
- Model-specific visible reasoning in the local UI while the API server keeps upstream runtime effort server-managed.
|
package/bin/codexclaude.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { spawn } from "node:child_process";
|
|
3
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, chmodSync, unlinkSync } from "node:fs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
@@ -12,10 +12,10 @@ import { installSafeCommandAliases } from "../scripts/install-safe-aliases.js";
|
|
|
12
12
|
|
|
13
13
|
const require = createRequire(import.meta.url);
|
|
14
14
|
|
|
15
|
-
const APP_VERSION = "2.0.
|
|
16
|
-
const CODEX_VERSION = "0.
|
|
15
|
+
const APP_VERSION = "2.0.33";
|
|
16
|
+
const CODEX_VERSION = "0.148.0-alpha.20";
|
|
17
17
|
const APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI";
|
|
18
|
-
const DEFAULT_MODEL_ID = "
|
|
18
|
+
const DEFAULT_MODEL_ID = "gpt-5.6-sol";
|
|
19
19
|
const DEFAULT_DISPLAY_REASONING_EFFORT = "xhigh";
|
|
20
20
|
const DEFAULT_SERVER_REASONING_EFFORT = "xhigh";
|
|
21
21
|
const API_ORIGIN = (process.env.CODEXCLAUDE_API_ORIGIN || "https://codexapi.pro").replace(/\/+$/, "");
|
|
@@ -36,6 +36,7 @@ const CODEX_CONFIG_FILE = path.join(CODEX_DIR, "config.toml");
|
|
|
36
36
|
const CODEX_UPDATE_CACHE_FILE = path.join(CODEX_DIR, "version.json");
|
|
37
37
|
const PROVIDER_ID = "codexapi";
|
|
38
38
|
const MODEL_CATALOG_CONTEXT_WINDOW = 272000;
|
|
39
|
+
const DAYBREAK_ANNOUNCEMENT = "ChatGPT Daybreak Blue is now available on codexclaude exclusively.";
|
|
39
40
|
const SERVICE_CATALOG = [
|
|
40
41
|
{
|
|
41
42
|
id: "codexapi",
|
|
@@ -88,49 +89,55 @@ const MODELS = {
|
|
|
88
89
|
aliases: ["2", "gpt", "gpt-5.6", "chatgpt", "chatgpt-5.6", "gpt56"],
|
|
89
90
|
reasoningEffort: "xhigh",
|
|
90
91
|
},
|
|
92
|
+
"gpt-daybreak-blue-latest": {
|
|
93
|
+
id: "gpt-daybreak-blue-latest",
|
|
94
|
+
label: "ChatGPT Daybreak Blue",
|
|
95
|
+
aliases: ["3", "daybreak", "daybreak-blue", "chatgpt-daybreak-blue", "gpt-daybreak-blue-latest"],
|
|
96
|
+
reasoningEffort: "xhigh",
|
|
97
|
+
},
|
|
91
98
|
"gpt-5.6-sol-max": {
|
|
92
99
|
id: "gpt-5.6-sol-max",
|
|
93
100
|
label: "GPT-5.6 SOL Max",
|
|
94
|
-
aliases: ["
|
|
101
|
+
aliases: ["4", "gpt-5.6-sol-max", "gpt-5.6-max", "gpt56-max", "sol-max", "max"],
|
|
95
102
|
reasoningEffort: "max",
|
|
96
103
|
},
|
|
97
104
|
"gpt-5.6-sol-ultra": {
|
|
98
105
|
id: "gpt-5.6-sol-ultra",
|
|
99
106
|
label: "GPT-5.6 SOL Ultra",
|
|
100
|
-
aliases: ["
|
|
107
|
+
aliases: ["5", "gpt-5.6-sol-ultra", "gpt-5.6-ultra", "gpt56-ultra", "sol-ultra", "ultra"],
|
|
101
108
|
reasoningEffort: "ultra",
|
|
102
109
|
},
|
|
103
110
|
"gpt-5.6-sol": {
|
|
104
111
|
id: "gpt-5.6-sol",
|
|
105
112
|
label: "GPT-5.6 SOL",
|
|
106
|
-
aliases: ["
|
|
113
|
+
aliases: ["6", "gpt-5.6-sol", "sol"],
|
|
107
114
|
reasoningEffort: "xhigh",
|
|
108
115
|
},
|
|
109
116
|
"gpt-5.5": {
|
|
110
117
|
id: "gpt-5.5",
|
|
111
118
|
label: "ChatGPT-5.5",
|
|
112
|
-
aliases: ["
|
|
119
|
+
aliases: ["7", "gpt-5.5", "chatgpt-5.5"],
|
|
113
120
|
},
|
|
114
121
|
"claude-opus-4-8": {
|
|
115
122
|
id: "claude-opus-4-8",
|
|
116
123
|
label: "Opus 4.8",
|
|
117
|
-
aliases: ["
|
|
124
|
+
aliases: ["8", "opus-4.8", "opus-4.7", "claude-opus-4-8", "claude-opus-4-7"],
|
|
118
125
|
},
|
|
119
126
|
"claude-sonnet-5": {
|
|
120
127
|
id: "claude-sonnet-5",
|
|
121
128
|
label: "Sonnet 5",
|
|
122
|
-
aliases: ["
|
|
129
|
+
aliases: ["9", "sonnet", "sonnet-5", "sonnet-4.6", "sonnet-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4.6"],
|
|
123
130
|
},
|
|
124
131
|
"claude-fable-5": {
|
|
125
132
|
id: "claude-fable-5",
|
|
126
133
|
label: "Fable 5",
|
|
127
|
-
aliases: ["
|
|
134
|
+
aliases: ["10", "fable", "fable-5", "fabel", "fabel-5", "claude-fable-5", "claude-fabel-5"],
|
|
128
135
|
premium: true,
|
|
129
136
|
},
|
|
130
137
|
"gpt-5.6-terra": {
|
|
131
138
|
id: "gpt-5.6-terra",
|
|
132
139
|
label: "GPT-5.6 Terra",
|
|
133
|
-
aliases: ["
|
|
140
|
+
aliases: ["11", "terra", "gpt-5.6-terra", "gpt56-terra"],
|
|
134
141
|
reasoningEffort: "xhigh",
|
|
135
142
|
},
|
|
136
143
|
};
|
|
@@ -191,7 +198,7 @@ ${APP_DISPLAY_NAME} v${APP_VERSION}
|
|
|
191
198
|
|
|
192
199
|
Commands:
|
|
193
200
|
codexclaude login Login with dashboard username/email and password
|
|
194
|
-
codexclaude model Select
|
|
201
|
+
codexclaude model Select Daybreak Blue, GPT-5.6, Opus 5, Terra, SOL modes, Opus 4.8, Sonnet 5, or Fable 5
|
|
195
202
|
codexclaude changelog Show the latest CodexAPI.pro launcher changes
|
|
196
203
|
codexclaude setup Rewrite ~/.codex/config.toml with Full Access defaults
|
|
197
204
|
codexclaude start Start ${APP_DISPLAY_NAME} with --search
|
|
@@ -470,9 +477,9 @@ async function runMandatoryUpgrade(metadata) {
|
|
|
470
477
|
}
|
|
471
478
|
const rl = readline.createInterface({ input, output });
|
|
472
479
|
try {
|
|
473
|
-
console.log("
|
|
474
|
-
console.log("
|
|
475
|
-
const answer = (await rl.question("
|
|
480
|
+
console.log(" Press Enter to Upgrade Now");
|
|
481
|
+
console.log(" Press Ctrl+C to exit without updating");
|
|
482
|
+
const answer = (await rl.question("Upgrade Now [Enter]: ")).trim().toLowerCase();
|
|
476
483
|
shouldUpgrade = ["", "1", "upgrade", "upgrade now", "yes", "y"].includes(answer);
|
|
477
484
|
} finally {
|
|
478
485
|
rl.close();
|
|
@@ -484,11 +491,20 @@ async function runMandatoryUpgrade(metadata) {
|
|
|
484
491
|
|
|
485
492
|
console.log(`\nDownloading and installing ${NPM_PACKAGE_NAME}@latest...`);
|
|
486
493
|
const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
|
|
487
|
-
|
|
488
|
-
|
|
494
|
+
let exitCode = await spawnAndWait(npmCommand, ["install", "-g", `${NPM_PACKAGE_NAME}@latest`]);
|
|
495
|
+
const installedAfterRegistry = exitCode === 0 ? installedLauncherVersion() : null;
|
|
496
|
+
if (exitCode !== 0 || isOlderVersion(installedAfterRegistry, minimum)) {
|
|
497
|
+
if (exitCode === 0) {
|
|
498
|
+
console.log(`\nThe npm registry returned v${installedAfterRegistry || "unknown"}, below required v${minimum}.`);
|
|
499
|
+
}
|
|
500
|
+
console.log("\nThe npm registry install did not complete. Trying the hosted release automatically...");
|
|
501
|
+
exitCode = await spawnAndWait(npmCommand, ["install", "-g", HOSTED_TARBALL_URL]);
|
|
502
|
+
}
|
|
503
|
+
const installedVersion = exitCode === 0 ? installedLauncherVersion() : null;
|
|
504
|
+
if (exitCode !== 0 || isOlderVersion(installedVersion, minimum)) {
|
|
489
505
|
throw new Error(
|
|
490
|
-
`Automatic upgrade failed with exit code ${exitCode}. Run ${UPDATE_COMMAND}. ` +
|
|
491
|
-
`
|
|
506
|
+
`Automatic upgrade failed with exit code ${exitCode} and installed version ${installedVersion || "unknown"}. Run ${UPDATE_COMMAND}. ` +
|
|
507
|
+
`If npm is unavailable, use: ${HOSTED_UPDATE_COMMAND}`,
|
|
492
508
|
);
|
|
493
509
|
}
|
|
494
510
|
console.log(`\nUpgrade complete. Restarting ${APP_DISPLAY_NAME} now...`);
|
|
@@ -507,6 +523,24 @@ async function runMandatoryUpgrade(metadata) {
|
|
|
507
523
|
}
|
|
508
524
|
}
|
|
509
525
|
|
|
526
|
+
function installedLauncherVersion() {
|
|
527
|
+
const command = process.platform === "win32" ? "codexclaude.cmd" : "codexclaude";
|
|
528
|
+
const result = spawnSync(command, ["--version"], {
|
|
529
|
+
encoding: "utf8",
|
|
530
|
+
env: {
|
|
531
|
+
...process.env,
|
|
532
|
+
CODEXCLAUDE_DISABLE_UPDATE_CHECK: "1",
|
|
533
|
+
CODEXCLAUDE_SKIP_COMMAND_ALIASES: "1",
|
|
534
|
+
},
|
|
535
|
+
shell: false,
|
|
536
|
+
});
|
|
537
|
+
if (result.error || result.status !== 0) {
|
|
538
|
+
return null;
|
|
539
|
+
}
|
|
540
|
+
const match = String(result.stdout || "").match(/\bv(\d+(?:\.\d+){2})\b/i);
|
|
541
|
+
return match?.[1] || null;
|
|
542
|
+
}
|
|
543
|
+
|
|
510
544
|
async function spawnAndWait(command, args) {
|
|
511
545
|
return await new Promise((resolve, reject) => {
|
|
512
546
|
const child = spawn(command, args, { stdio: "inherit", env: process.env, shell: false });
|
|
@@ -793,6 +827,9 @@ function modelCatalogDescription(modelId) {
|
|
|
793
827
|
if (modelId === "gpt-5.6") {
|
|
794
828
|
return "GPT-5.6 coding route with local coding tools and wallet billing.";
|
|
795
829
|
}
|
|
830
|
+
if (modelId === "gpt-daybreak-blue-latest") {
|
|
831
|
+
return "ChatGPT Daybreak Blue coding route for broad defensive cybersecurity work with local coding tools and wallet billing.";
|
|
832
|
+
}
|
|
796
833
|
if (modelId === "gpt-5.6-sol-max") {
|
|
797
834
|
return "GPT-5.6 SOL Max premium coding route with local coding tools and wallet billing.";
|
|
798
835
|
}
|
|
@@ -856,13 +893,13 @@ async function runCodex(args) {
|
|
|
856
893
|
}
|
|
857
894
|
if (!isTruthy(process.env.CODEXCLAUDE_QUIET_STATUS)) {
|
|
858
895
|
console.log(formatStatusLine(config, wallet, process.cwd()));
|
|
896
|
+
console.log(DAYBREAK_ANNOUNCEMENT);
|
|
859
897
|
}
|
|
860
898
|
process.stdout.write(`\x1b]0;${APP_DISPLAY_NAME} v${APP_VERSION}\x07`);
|
|
861
899
|
const launch = resolveCodexLaunch();
|
|
862
900
|
const env = {
|
|
863
901
|
...process.env,
|
|
864
902
|
CODEXAPI_CODEX_API_KEY: config.username,
|
|
865
|
-
CODEXCLAUDE_CODEX_VERSION: CODEX_VERSION,
|
|
866
903
|
CODEXCLAUDE_MODEL_ID: config.model,
|
|
867
904
|
CODEXCLAUDE_MODEL_LABEL: MODELS[config.model]?.label || config.model,
|
|
868
905
|
CODEXCLAUDE_MODEL_API_BASE_URL: providerBaseUrlForConfig(config),
|
|
@@ -1018,14 +1055,17 @@ function numericWalletValue(value) {
|
|
|
1018
1055
|
|
|
1019
1056
|
function formatStatusLine(config, wallet, cwd) {
|
|
1020
1057
|
const model = modelStatusName(config.model);
|
|
1021
|
-
const walletText = wallet ? `Wallet ${formatUsd(wallet.balance)}` : "Wallet unavailable";
|
|
1022
|
-
return `${APP_DISPLAY_NAME} v${APP_VERSION} · ${model} ${
|
|
1058
|
+
const walletText = wallet ? `Wallet balance ${formatUsd(wallet.balance)}` : "Wallet balance unavailable";
|
|
1059
|
+
return `${APP_DISPLAY_NAME} v${APP_VERSION} · ${model} ${displayReasoningEffortForModel(config.model)} · ${formatCwd(cwd)} · ${walletText}`;
|
|
1023
1060
|
}
|
|
1024
1061
|
|
|
1025
1062
|
function modelStatusName(model) {
|
|
1026
1063
|
if (model === "gpt-5.6") {
|
|
1027
1064
|
return "GPT-5.6";
|
|
1028
1065
|
}
|
|
1066
|
+
if (model === "gpt-daybreak-blue-latest") {
|
|
1067
|
+
return "ChatGPT Daybreak Blue";
|
|
1068
|
+
}
|
|
1029
1069
|
if (model === "gpt-5.6-sol-max") {
|
|
1030
1070
|
return "gpt-5.6-sol max";
|
|
1031
1071
|
}
|
|
@@ -1033,7 +1073,7 @@ function modelStatusName(model) {
|
|
|
1033
1073
|
return "gpt-5.6-sol ultra";
|
|
1034
1074
|
}
|
|
1035
1075
|
if (model === "gpt-5.6-sol") {
|
|
1036
|
-
return "
|
|
1076
|
+
return "GPT-5.6 SOL";
|
|
1037
1077
|
}
|
|
1038
1078
|
if (model === "gpt-5.6-terra") {
|
|
1039
1079
|
return "gpt-5.6-terra";
|
|
@@ -1057,6 +1097,20 @@ function reasoningEffortForModel(model) {
|
|
|
1057
1097
|
return MODELS[model]?.reasoningEffort || DEFAULT_DISPLAY_REASONING_EFFORT;
|
|
1058
1098
|
}
|
|
1059
1099
|
|
|
1100
|
+
function displayReasoningEffortForModel(model) {
|
|
1101
|
+
const effort = reasoningEffortForModel(model);
|
|
1102
|
+
if (effort === "xhigh") {
|
|
1103
|
+
return "Extra High";
|
|
1104
|
+
}
|
|
1105
|
+
if (effort === "max") {
|
|
1106
|
+
return "Max";
|
|
1107
|
+
}
|
|
1108
|
+
if (effort === "ultra") {
|
|
1109
|
+
return "Ultra";
|
|
1110
|
+
}
|
|
1111
|
+
return effort.charAt(0).toUpperCase() + effort.slice(1);
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1060
1114
|
function normalizeConfig(config) {
|
|
1061
1115
|
if (!config || typeof config !== "object") {
|
|
1062
1116
|
return config;
|
|
@@ -1086,6 +1140,9 @@ function normalizeConfig(config) {
|
|
|
1086
1140
|
if (["gpt-5-6-terra", "gpt56-terra", "terra"].includes(normalized.model)) {
|
|
1087
1141
|
normalized.model = "gpt-5.6-terra";
|
|
1088
1142
|
}
|
|
1143
|
+
if (["daybreak", "daybreak-blue", "chatgpt-daybreak-blue"].includes(normalized.model)) {
|
|
1144
|
+
normalized.model = "gpt-daybreak-blue-latest";
|
|
1145
|
+
}
|
|
1089
1146
|
if (["gpt-5-6", "gpt56", "chatgpt-5.6", "chatgpt-5-6"].includes(normalized.model)) {
|
|
1090
1147
|
normalized.model = "gpt-5.6";
|
|
1091
1148
|
}
|
package/codexclaude.md
CHANGED
|
@@ -5,15 +5,15 @@ This file is the durable handoff for the `@codexapi/codexclaude` package in `/ro
|
|
|
5
5
|
## Current Release
|
|
6
6
|
|
|
7
7
|
- Package name: `@codexapi/codexclaude`
|
|
8
|
-
- Launcher version: `2.0.
|
|
8
|
+
- Launcher version: `2.0.33`
|
|
9
9
|
- Customer-facing app name: `MagnetAPI.org Codex CLI`
|
|
10
|
-
- Bundled runtime dependency: `@openai/codex@0.
|
|
10
|
+
- Bundled runtime dependency: `@openai/codex@0.148.0-alpha.20`
|
|
11
11
|
- Required install command: `npm install -g @codexapi/codexclaude@latest`
|
|
12
|
-
- Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.
|
|
13
|
-
- Backend minimum version: `2.0.
|
|
14
|
-
- Default visible model: `
|
|
15
|
-
- Default model slug: `
|
|
16
|
-
- Default visible reasoning effort: `xhigh`; premium SOL Max and SOL Ultra retain their explicit `max` and `ultra` labels.
|
|
12
|
+
- Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.33.tgz`
|
|
13
|
+
- Backend minimum version: `2.0.33`
|
|
14
|
+
- Default visible model: `GPT-5.6 SOL`
|
|
15
|
+
- Default model slug: `gpt-5.6-sol`
|
|
16
|
+
- Default visible reasoning effort: `Extra High`, stored as `xhigh`; premium SOL Max and SOL Ultra retain their explicit `max` and `ultra` labels.
|
|
17
17
|
- Local permissions: Full Access, implemented as `approval_policy = "never"` and `sandbox_mode = "danger-full-access"`
|
|
18
18
|
- Local launcher state: `~/.codexclaude/config.json`
|
|
19
19
|
- Generated runtime config: `~/.codex/config.toml`
|
|
@@ -25,31 +25,33 @@ This file is the durable handoff for the `@codexapi/codexclaude` package in `/ro
|
|
|
25
25
|
The launcher must present itself as:
|
|
26
26
|
|
|
27
27
|
```text
|
|
28
|
-
MagnetAPI.org Codex CLI v2.0.
|
|
28
|
+
MagnetAPI.org Codex CLI v2.0.33
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Normal pre-launch status should look like:
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
|
-
MagnetAPI.org Codex CLI v2.0.
|
|
34
|
+
MagnetAPI.org Codex CLI v2.0.33 · GPT-5.6 SOL Extra High · ~/project · Wallet balance $20.00
|
|
35
|
+
ChatGPT Daybreak Blue is now available on codexclaude exclusively.
|
|
35
36
|
```
|
|
36
37
|
|
|
37
38
|
Do not show OpenAI update notices, OpenAI npm install commands, OpenAI release links, or the upstream runtime version in launcher-owned output. The package still depends on the official runtime internally, but the customer update surface is ours.
|
|
38
39
|
|
|
39
40
|
The launcher command `codexclaude model` must list these customer-visible models:
|
|
40
41
|
|
|
41
|
-
- `claude-opus-5` displayed as `Opus 5
|
|
42
|
+
- `claude-opus-5` displayed as `Opus 5`
|
|
42
43
|
- `gpt-5.6` displayed as `GPT-5.6`
|
|
44
|
+
- `gpt-daybreak-blue-latest` displayed as `ChatGPT Daybreak Blue`
|
|
43
45
|
- `gpt-5.6-sol-max` displayed as `GPT-5.6 SOL Max`
|
|
44
46
|
- `gpt-5.6-sol-ultra` displayed as `GPT-5.6 SOL Ultra`
|
|
45
|
-
- `gpt-5.6-sol` displayed as `GPT-5.6 SOL
|
|
47
|
+
- `gpt-5.6-sol` displayed as `GPT-5.6 SOL`, selected by default for new and invalid configurations
|
|
46
48
|
- `gpt-5.5` displayed as `ChatGPT-5.5`
|
|
47
49
|
- `claude-opus-4-8` displayed as `Opus 4.8`
|
|
48
50
|
- `claude-sonnet-5` displayed as `Sonnet 5`
|
|
49
51
|
- `claude-fable-5` displayed as `Fable 5`
|
|
50
52
|
- `gpt-5.6-terra` displayed as `GPT-5.6 Terra`
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
GPT-5.6 SOL must be the default when a new config is created or a legacy config contains an unsupported model value. It is displayed as Extra High while the generated runtime config stores `xhigh`. A valid existing customer selection must remain unchanged across upgrades. The selected model slug must stay in `~/.codex/config.toml`; do not rewrite customer-facing model selections locally. `gpt-5.6-sol-max` and `gpt-5.6-sol-ultra` remain distinct for customer choice, usage display, and wallet billing.
|
|
53
55
|
|
|
54
56
|
## Update Policy
|
|
55
57
|
|
|
@@ -58,7 +60,7 @@ Opus 5 must be the default when a new config is created or a legacy config conta
|
|
|
58
60
|
- `https://codexapi.pro/api/v1/codexclaude/version`
|
|
59
61
|
- `https://registry.npmjs.org/@codexapi%2Fcodexclaude/latest`
|
|
60
62
|
|
|
61
|
-
It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.
|
|
63
|
+
It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.33` is both the enforced minimum and current latest release. Compatible older launchers offer an interactive `Upgrade Now` action; pressing Enter invokes `npm install -g @codexapi/codexclaude@latest` without shell interpolation. If that registry install fails, the launcher automatically tries the hosted tarball. Non-interactive terminals print the exact update command and exit instead of waiting for input. After a successful interactive update, the launcher starts the requested action again automatically.
|
|
62
64
|
|
|
63
65
|
The npm package manifest owns only `codexclaude`. This is deliberate: npm creates manifest binaries before postinstall, so claiming `codex` there causes an `EEXIST` upgrade failure on machines with native Codex CLI. During a global installation, postinstall may create optional `codex` and `claude` aliases only when neither the target npm prefix nor any directory on `PATH` already contains the command. Existing native clients are preserved and no install path requires `--force`.
|
|
64
66
|
|
|
@@ -77,7 +79,7 @@ Never work around a Homebrew lock by deleting files under `Cellar`, removing Hom
|
|
|
77
79
|
`bin/codexclaude.js` must rewrite `~/.codex/config.toml` before every coding session. Preserve this top-level shape:
|
|
78
80
|
|
|
79
81
|
```toml
|
|
80
|
-
model = "
|
|
82
|
+
model = "gpt-5.6-sol"
|
|
81
83
|
model_catalog_json = "<absolute path to ~/.codexclaude/model_catalog.json>"
|
|
82
84
|
preferred_auth_method = "apikey"
|
|
83
85
|
model_provider = "codexapi"
|
|
@@ -94,7 +96,7 @@ base_url = "<service Responses URL>"
|
|
|
94
96
|
experimental_bearer_token = "<customer System Token/API username>"
|
|
95
97
|
wire_api = "responses"
|
|
96
98
|
supports_websockets = false
|
|
97
|
-
http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.
|
|
99
|
+
http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.33", "X-CodexAPI-Selected-Model" = "<selected model>" }
|
|
98
100
|
|
|
99
101
|
[tui]
|
|
100
102
|
status_line = ["model-with-reasoning", "fast-mode", "current-dir"]
|
|
@@ -102,7 +104,7 @@ status_line_use_colors = true
|
|
|
102
104
|
terminal_title = ["project-name", "model-with-reasoning", "run-state"]
|
|
103
105
|
```
|
|
104
106
|
|
|
105
|
-
The generated model catalog must contain full metadata for every supported slug, including `gpt-5.6`, `gpt-5.6-terra`, `gpt-5.6-sol-max`, and `gpt-5.6-sol-ultra`. This prevents fallback metadata warnings such as:
|
|
107
|
+
The generated model catalog must contain full metadata for every supported slug, including `gpt-daybreak-blue-latest`, `gpt-5.6`, `gpt-5.6-terra`, `gpt-5.6-sol-max`, and `gpt-5.6-sol-ultra`. This prevents fallback metadata warnings such as:
|
|
106
108
|
|
|
107
109
|
```text
|
|
108
110
|
Model metadata for `claude-opus-4-8` not found. Defaulting to fallback metadata; this can degrade performance and cause issues.
|
|
@@ -137,7 +139,7 @@ When updating the bundled runtime dependency:
|
|
|
137
139
|
3. Bump `package.json` and `package-lock.json` to a new `@codexapi/codexclaude` version.
|
|
138
140
|
4. Update `APP_VERSION` and `CODEX_VERSION` in `bin/codexclaude.js`.
|
|
139
141
|
5. Preserve `APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI"`.
|
|
140
|
-
6. Preserve `DEFAULT_MODEL_ID = "
|
|
142
|
+
6. Preserve `DEFAULT_MODEL_ID = "gpt-5.6-sol"` unless product explicitly changes the first-run default.
|
|
141
143
|
7. Preserve `DISPLAY_REASONING_EFFORT = "xhigh"` and `SERVER_REASONING_EFFORT = "xhigh"` unless operations explicitly changes the launcher-visible contract.
|
|
142
144
|
8. Preserve Full Access defaults and the local model catalog.
|
|
143
145
|
9. Preserve direct platform-native binary launch.
|
|
@@ -166,13 +168,13 @@ tmp_home="$(mktemp -d)"
|
|
|
166
168
|
mkdir -p "$tmp_home/.codexclaude"
|
|
167
169
|
cat > "$tmp_home/.codexclaude/config.json" <<'JSON'
|
|
168
170
|
{
|
|
169
|
-
"version": "2.0.
|
|
171
|
+
"version": "2.0.33",
|
|
170
172
|
"serviceId": "codexapi",
|
|
171
173
|
"serviceLabel": "CodexAPI.pro",
|
|
172
174
|
"apiOrigin": "https://codexapi.pro",
|
|
173
175
|
"username": "test-token",
|
|
174
176
|
"dashboardEmail": null,
|
|
175
|
-
"model": "
|
|
177
|
+
"model": "gpt-5.6-sol",
|
|
176
178
|
"loggedInAt": "2026-07-10T00:00:00.000Z"
|
|
177
179
|
}
|
|
178
180
|
JSON
|
|
@@ -181,7 +183,7 @@ HOME="$tmp_home" CODEXCLAUDE_DISABLE_UPDATE_CHECK=1 CODEXCLAUDE_QUIET_STATUS=1 n
|
|
|
181
183
|
|
|
182
184
|
Verify the generated config contains:
|
|
183
185
|
|
|
184
|
-
- `model = "
|
|
186
|
+
- `model = "gpt-5.6-sol"`
|
|
185
187
|
- `model_reasoning_effort = "xhigh"`
|
|
186
188
|
- `check_for_update_on_startup = false`
|
|
187
189
|
- `approval_policy = "never"`
|
|
@@ -205,17 +207,26 @@ After packaging, copy the tarball to the public downloads directories, restart t
|
|
|
205
207
|
|
|
206
208
|
```bash
|
|
207
209
|
curl -fsS "https://codexapi.pro/api/v1/codexclaude/version?current=2.0.17"
|
|
208
|
-
curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.
|
|
210
|
+
curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.33.tgz"
|
|
209
211
|
```
|
|
210
212
|
|
|
211
|
-
The version endpoint must report `latestVersion = 2.0.
|
|
213
|
+
The version endpoint must report `latestVersion = 2.0.33`, `minimumVersion = 2.0.33`, and `updateRequired = true` for every older client.
|
|
212
214
|
|
|
213
|
-
## Version 2.0.
|
|
215
|
+
## Version 2.0.33 Changes
|
|
214
216
|
|
|
215
|
-
- Updated the bundled coding runtime to `@openai/codex@0.
|
|
216
|
-
-
|
|
217
|
+
- Updated the bundled coding runtime to `@openai/codex@0.148.0-alpha.20`.
|
|
218
|
+
- Added `gpt-daybreak-blue-latest` as `ChatGPT Daybreak Blue` exclusively to the managed codexclaude catalog.
|
|
219
|
+
- Added the Daybreak Blue availability line and a clearly labelled live wallet balance before the first prompt.
|
|
220
|
+
- Made `2.0.33` mandatory while preserving customer projects, session history, login state, valid model selections, Full Access, and safe aliases.
|
|
221
|
+
- Added post-install version verification so a stale npm dist-tag cannot trap users in a repeated upgrade loop; the exact hosted release is used automatically when required.
|
|
222
|
+
|
|
223
|
+
## Version 2.0.32 Changes
|
|
224
|
+
|
|
225
|
+
- Updated the bundled coding runtime to `@openai/codex@0.148.0-alpha.6`.
|
|
226
|
+
- Made GPT-5.6 SOL with visible Extra High reasoning the default for new and invalid configurations.
|
|
227
|
+
- Made mandatory updates a press-Enter action with automatic hosted-package fallback and automatic relaunch.
|
|
217
228
|
- Preserved valid existing model selections, Full Access, local tools, managed login, safe command aliases, and customer-only update checks.
|
|
218
|
-
- Made `2.0.
|
|
229
|
+
- Made `2.0.32` mandatory so setup scripts and installed clients use the same runtime and model catalog.
|
|
219
230
|
|
|
220
231
|
## Version 2.0.30 Changes
|
|
221
232
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codexapi/codexclaude",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "MagnetAPI.org Codex CLI for GPT-5.6, Opus 5,
|
|
3
|
+
"version": "2.0.33",
|
|
4
|
+
"description": "MagnetAPI.org Codex CLI for ChatGPT Daybreak Blue, GPT-5.6, Opus 5, Sonnet 5, and Fable 5.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"node": ">=20"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@openai/codex": "0.
|
|
25
|
+
"@openai/codex": "0.148.0-alpha.20"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|