@codexapi/codexclaude 2.0.20 → 2.0.22

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 CHANGED
@@ -5,9 +5,9 @@
5
5
  ## Runtime
6
6
 
7
7
  - Customer-facing app name: `Magnetapi Client`
8
- - Local launcher version: `2.0.20`
9
- - Bundled official runtime dependency: `@openai/codex@0.144.1`
10
- - Required install command: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.20.tgz`
8
+ - Local launcher version: `2.0.22`
9
+ - Bundled official runtime dependency: `@openai/codex@0.144.3`
10
+ - Required install command: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.22.tgz`
11
11
  - Bundled runtime version is managed internally and must not be used for customer update prompts.
12
12
  - Launcher update checks may call the CodexAPI.pro version endpoint and `@codexapi/codexclaude` npm metadata only.
13
13
  - The launcher must never check `@openai/codex` npm metadata or OpenAI GitHub releases for update notices.
@@ -24,7 +24,7 @@
24
24
  - Passes unknown commands directly to the bundled runtime after config is applied.
25
25
  - Provides `codexclaude changelog` using the managed version endpoint.
26
26
  - Does not expose separate `codexclaude status` or `codexclaude usage` commands; wallet information remains a compact pre-launch line.
27
- - Version `2.0.20` is forced by the backend minimum version and older clients must show an update-required message.
27
+ - Version `2.0.22` is forced by the backend minimum version and older clients must show an update-required message.
28
28
 
29
29
  ## Provider Config
30
30
 
@@ -41,17 +41,18 @@ The launcher writes a model provider named `codexapi`:
41
41
 
42
42
  ## Runtime Defaults
43
43
 
44
- - Default model: `gpt-5.6-sol` displayed as `GPT-5.6 SOL`
45
- - Supported launcher choices: `gpt-5.6-sol`, `gpt-5.5`, `claude-opus-4-8`, `claude-sonnet-5`, and `claude-fable-5`
46
- - Reasoning effort displayed locally: `xhigh`
47
- - Reasoning hint sent in launcher env: `xhigh`
44
+ - Default model: `gpt-5.6` displayed as `GPT-5.6`
45
+ - 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-4-8`, `claude-sonnet-5`, and `claude-fable-5`
46
+ - Default reasoning effort displayed locally: `xhigh`; SOL Max and SOL Ultra retain their explicit premium labels.
47
+ - Reasoning hint sent in launcher env: model-specific
48
48
  - Approval policy: `never`
49
49
  - Sandbox mode: `danger-full-access`
50
50
  - Display wording for permissions: `Full Access` in launcher-owned copy
51
- - Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps the native `/model` picker limited to the five supported choices and prevents fallback metadata warnings for GPT-5.6 SOL, Opus 4.8, Sonnet 5, and Fable 5.
51
+ - 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 SOL, SOL Max, SOL Ultra, Opus 4.8, Sonnet 5, and Fable 5.
52
52
  - Service tier: omitted by default; `/fast` remains user-controlled and billed server-side when active.
53
53
  - TUI status line: `model-with-reasoning`, `fast-mode`, `current-dir`
54
54
  - Fable 5 stays visible to the user while the backend applies its custom routed premium path and billing multiplier.
55
+ - GPT-5.6 SOL Max bills at 2x normal SOL usage. GPT-5.6 SOL Ultra bills at 2.5x normal SOL usage.
55
56
 
56
57
  ## Wallet Display
57
58
 
@@ -60,7 +61,7 @@ Before launching the runtime, the launcher calls `/api/v1/wallet/status`, then `
60
61
  Expected status line:
61
62
 
62
63
  ```text
63
- Magnetapi Client v2.0.20 · gpt-5.6-sol xhigh · ~/project · Wallet $20.00
64
+ Magnetapi Client v2.0.22 · gpt-5.6 xhigh · ~/project · Wallet $20.00
64
65
  ```
65
66
 
66
67
  ## Upgrade Checklist
@@ -71,14 +72,14 @@ When updating the bundled runtime:
71
72
  2. Update `@openai/codex` in `package.json` and `package-lock.json`.
72
73
  3. Bump the launcher package version.
73
74
  4. Keep `APP_DISPLAY_NAME = "Magnetapi Client"`.
74
- 5. Keep `DEFAULT_MODEL_ID = "gpt-5.6-sol"`.
75
- 6. Keep `DISPLAY_REASONING_EFFORT = "xhigh"`.
75
+ 5. Keep `DEFAULT_MODEL_ID = "gpt-5.6"`.
76
+ 6. Keep `reasoningEffortForModel()` and model-specific visible reasoning.
76
77
  7. Keep Full Access defaults: `approval_policy = "never"` and `sandbox_mode = "danger-full-access"`.
77
78
  8. Keep `check_for_update_on_startup = false`.
78
79
  9. Keep `clearUpstreamUpdateCache()` deleting `~/.codex/version.json`.
79
80
  10. Keep direct platform binary launch and do not fall back to the upstream npm wrapper.
80
81
  11. Keep update checks limited to `/api/v1/codexclaude/version` and `@codexapi/codexclaude` npm metadata.
81
- 12. Keep the four-model `MODELS` map and local model catalog.
82
+ 12. Keep the managed `MODELS` map and local model catalog, including SOL Max and SOL Ultra.
82
83
  13. Keep bearer username auth and the `X-CodexAPI-*` headers.
83
84
  14. Update `README.md`, `CUSTOMIZATIONS.md`, and `codexclaude.md`.
84
85
  15. Run `node --check bin/codexclaude.js`, a temporary-home setup test, `npm pack --dry-run`, and endpoint validation before publishing.
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # codexclaude
2
2
 
3
- `codexclaude` installs the Magnetapi Client for customers who want one coding CLI that can use GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
3
+ `codexclaude` installs the Magnetapi Client for customers who want one coding CLI that can use GPT-5.6, GPT-5.6 SOL, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
4
4
 
5
- Version `2.0.20` is a required major sync release. It bundles official Codex runtime dependency `@openai/codex@0.144.1`, launches the platform-native runtime binary directly, disables upstream OpenAI update prompts, and applies account, wallet, model, Full Access, GPT-5.6 SOL default, and xhigh visible reasoning before each coding session starts.
5
+ Version `2.0.22` is a required major sync release. It bundles official Codex runtime dependency `@openai/codex@0.144.3`, launches the platform-native runtime binary directly, disables upstream OpenAI update prompts, and applies account, wallet, model, Full Access, GPT-5.6/xhigh defaults, and managed model metadata before each coding session starts.
6
6
 
7
7
  ## Install Or Update
8
8
 
9
9
  ```bash
10
- npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.20.tgz
10
+ npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.22.tgz
11
11
  ```
12
12
 
13
13
  This does not delete local session history. The update replaces the `codexclaude` launcher package, refreshes the bundled runtime dependency, and rewrites the managed provider config the next time `codexclaude setup`, `codexclaude login`, or `codexclaude start` runs.
@@ -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.20` is currently enforced as the minimum supported version, so older launchers show a required update message with the exact hosted tarball command above.
19
+ Version `2.0.22` is currently enforced as the minimum supported version, so older launchers show a required update message with the exact hosted tarball command above.
20
20
 
21
21
  ## First Login
22
22
 
@@ -24,7 +24,7 @@ Version `2.0.20` is currently enforced as the minimum supported version, so 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, GPT-5.6 SOL is selected by default.
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 with xhigh 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 SOL`, `ChatGPT-5.5`, `Opus 4.8`, `Sonnet 5`, and `Fable 5`. All five use a Responses-compatible endpoint and the same customer Token Wallet.
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 4.8`, `Sonnet 5`, and `Fable 5`. SOL Max bills at 2x normal SOL usage. SOL Ultra bills at 2.5x normal SOL usage. All models use a Responses-compatible endpoint and the same customer Token Wallet.
48
48
 
49
49
  Show current launcher changes:
50
50
 
@@ -57,17 +57,17 @@ codexclaude changelog
57
57
  Before launching the coding runtime, the app prints a compact status line like:
58
58
 
59
59
  ```text
60
- Magnetapi Client v2.0.20 · gpt-5.6-sol xhigh · ~/project · Wallet $20.00
60
+ Magnetapi Client v2.0.22 · gpt-5.6 xhigh · ~/project · Wallet $20.00
61
61
  ```
62
62
 
63
63
  ## Preserved Customizations
64
64
 
65
65
  - Dashboard Username or Email Address plus password login for CodexAPI.pro, ChatPlus.chat, MyAPI.world, and MagnetAPI.org.
66
- - GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 model selection, with GPT-5.6 SOL as the default.
66
+ - GPT-5.6, 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/xhigh as the default.
67
67
  - Service-specific Responses-compatible provider for the dashboard account that logged in.
68
68
  - Full Access defaults: approval policy `never` and sandbox mode `danger-full-access`.
69
- - xhigh visible reasoning in the local UI while the API server keeps upstream runtime effort server-managed.
70
- - A local `~/.codexclaude/model_catalog.json` file so the native `/model` picker lists only GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, and Fable 5.
69
+ - Model-specific visible reasoning in the local UI while the API server keeps upstream runtime effort server-managed.
70
+ - A local `~/.codexclaude/model_catalog.json` file so the native `/model` picker lists only the supported Magnetapi Client choices, including SOL Max and SOL Ultra.
71
71
  - No default fast service tier. Fast mode is billed only when the user enables it inside the client.
72
72
  - Token Wallet balance lookup before launch without exposing separate `status` or `usage` launcher commands.
73
73
  - Backend-identifying request headers so the API can enforce account and plan rules server-side.
@@ -10,12 +10,12 @@ import { stdin as input, stdout as output } from "node:process";
10
10
 
11
11
  const require = createRequire(import.meta.url);
12
12
 
13
- const APP_VERSION = "2.0.20";
14
- const CODEX_VERSION = "0.144.1";
13
+ const APP_VERSION = "2.0.22";
14
+ const CODEX_VERSION = "0.144.3";
15
15
  const APP_DISPLAY_NAME = "Magnetapi Client";
16
- const DEFAULT_MODEL_ID = "gpt-5.6-sol";
17
- const DISPLAY_REASONING_EFFORT = "xhigh";
18
- const SERVER_REASONING_EFFORT = "xhigh";
16
+ const DEFAULT_MODEL_ID = "gpt-5.6";
17
+ const DEFAULT_DISPLAY_REASONING_EFFORT = "xhigh";
18
+ const DEFAULT_SERVER_REASONING_EFFORT = "xhigh";
19
19
  const API_ORIGIN = (process.env.CODEXCLAUDE_API_ORIGIN || "https://codexapi.pro").replace(/\/+$/, "");
20
20
  const API_BASE_URL = `${API_ORIGIN}/v1`;
21
21
  const CHICAGO_API_ORIGIN = "https://api-chicago.codexapi.pro";
@@ -69,34 +69,58 @@ const SUPPORTED_REASONING_LEVELS = [
69
69
  { effort: "medium", description: "Balances speed and reasoning depth for everyday coding" },
70
70
  { effort: "high", description: "Greater reasoning depth for complex work" },
71
71
  { effort: "xhigh", description: "Extra high visible reasoning setting for managed sessions" },
72
+ { effort: "max", description: "GPT-5.6 SOL Max visible reasoning mode" },
73
+ { effort: "ultra", description: "GPT-5.6 SOL Ultra visible reasoning mode" },
72
74
  ];
73
75
 
74
76
  const MODELS = {
77
+ "gpt-5.6": {
78
+ id: "gpt-5.6",
79
+ label: "GPT-5.6",
80
+ aliases: ["1", "gpt", "gpt-5.6", "chatgpt", "chatgpt-5.6", "gpt56"],
81
+ reasoningEffort: "xhigh",
82
+ },
83
+ "gpt-5.6-sol-max": {
84
+ id: "gpt-5.6-sol-max",
85
+ label: "GPT-5.6 SOL Max",
86
+ aliases: ["2", "gpt-5.6-sol-max", "gpt-5.6-max", "gpt56-max", "sol-max", "max"],
87
+ premiumLabel: "2x premium billing",
88
+ reasoningEffort: "max",
89
+ },
90
+ "gpt-5.6-sol-ultra": {
91
+ id: "gpt-5.6-sol-ultra",
92
+ label: "GPT-5.6 SOL Ultra",
93
+ aliases: ["3", "gpt-5.6-sol-ultra", "gpt-5.6-ultra", "gpt56-ultra", "sol-ultra", "ultra"],
94
+ premiumLabel: "2.5x premium billing",
95
+ reasoningEffort: "ultra",
96
+ },
75
97
  "gpt-5.6-sol": {
76
98
  id: "gpt-5.6-sol",
77
99
  label: "GPT-5.6 SOL",
78
- aliases: ["1", "gpt-5.6-sol", "gpt-5.6", "gpt56", "sol"],
100
+ aliases: ["4", "gpt-5.6-sol", "sol"],
101
+ reasoningEffort: "xhigh",
79
102
  },
80
103
  "gpt-5.5": {
81
104
  id: "gpt-5.5",
82
105
  label: "ChatGPT-5.5",
83
- aliases: ["2", "gpt", "gpt-5.5", "chatgpt", "chatgpt-5.5"],
106
+ aliases: ["5", "gpt-5.5", "chatgpt-5.5"],
84
107
  },
85
108
  "claude-opus-4-8": {
86
109
  id: "claude-opus-4-8",
87
110
  label: "Opus 4.8",
88
- aliases: ["3", "opus", "opus-4.8", "opus-4.7", "claude", "claude-opus-4-8", "claude-opus-4-7"],
111
+ aliases: ["6", "opus", "opus-4.8", "opus-4.7", "claude", "claude-opus-4-8", "claude-opus-4-7"],
89
112
  },
90
113
  "claude-sonnet-5": {
91
114
  id: "claude-sonnet-5",
92
115
  label: "Sonnet 5",
93
- aliases: ["4", "sonnet", "sonnet-5", "sonnet-4.6", "sonnet-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4.6"],
116
+ aliases: ["7", "sonnet", "sonnet-5", "sonnet-4.6", "sonnet-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4.6"],
94
117
  },
95
118
  "claude-fable-5": {
96
119
  id: "claude-fable-5",
97
120
  label: "Fable 5",
98
- aliases: ["5", "fable", "fable-5", "fabel", "fabel-5", "claude-fable-5", "claude-fabel-5"],
121
+ aliases: ["8", "fable", "fable-5", "fabel", "fabel-5", "claude-fable-5", "claude-fabel-5"],
99
122
  premium: true,
123
+ premiumLabel: "2x premium billing",
100
124
  },
101
125
  };
102
126
 
@@ -153,7 +177,7 @@ ${APP_DISPLAY_NAME} ${APP_VERSION}
153
177
 
154
178
  Commands:
155
179
  codexclaude login Login with dashboard username/email and password
156
- codexclaude model Select ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5
180
+ codexclaude model Select GPT-5.6, SOL modes, Opus 4.8, Sonnet 5, or Fable 5
157
181
  codexclaude changelog Show the latest CodexAPI.pro launcher changes
158
182
  codexclaude setup Rewrite ~/.codex/config.toml with Full Access defaults
159
183
  codexclaude start Start Magnetapi Client with --search
@@ -218,7 +242,7 @@ async function loginFlow() {
218
242
  saveConfig(config);
219
243
  writeCodexConfig(config);
220
244
  console.log(`\nLogged in to ${service.label} as ${apiUsername}. Model: ${MODELS[selectedModel].label}.`);
221
- console.log("Full Access permissions, xhigh visible reasoning, and service-specific provider config were written.");
245
+ console.log("Full Access permissions, model-specific visible reasoning, and service-specific provider config were written.");
222
246
  } finally {
223
247
  rl.close();
224
248
  }
@@ -335,7 +359,7 @@ async function modelFlow() {
335
359
  async function setupFlow() {
336
360
  const config = requireConfig();
337
361
  writeCodexConfig(config);
338
- console.log(`Configured ${CODEX_CONFIG_FILE} for ${MODELS[config.model].label} with Full Access, xhigh visible reasoning, and server-managed routing.`);
362
+ console.log(`Configured ${CODEX_CONFIG_FILE} for ${MODELS[config.model].label} with Full Access, model-specific visible reasoning, and server-managed routing.`);
339
363
  }
340
364
 
341
365
  async function ensureReady() {
@@ -353,7 +377,7 @@ async function askModel(rl, current) {
353
377
  const currentLabel = MODELS[current]?.label || MODELS[DEFAULT_MODEL_ID].label;
354
378
  console.log("\nChoose your coding model:");
355
379
  Object.values(MODELS).forEach((model, index) => {
356
- const premium = model.premium ? " (2x premium billing)" : "";
380
+ const premium = model.premiumLabel ? ` (${model.premiumLabel})` : model.premium ? " (2x premium billing)" : "";
357
381
  console.log(` ${index + 1}. ${model.label}${premium}`);
358
382
  });
359
383
  const answer = (await rl.question(`Model [${currentLabel}]: `)).trim().toLowerCase();
@@ -591,6 +615,7 @@ function writeCodexConfig(config) {
591
615
  const normalized = normalizeConfig(config);
592
616
  clearUpstreamUpdateCache();
593
617
  const model = MODELS[normalized.model] ? normalized.model : DEFAULT_MODEL_ID;
618
+ const reasoningEffort = reasoningEffortForModel(model);
594
619
  const providerBaseUrl = providerBaseUrlForConfig(normalized);
595
620
  const modelCatalogFile = writeModelCatalog();
596
621
  const toml = [
@@ -598,7 +623,7 @@ function writeCodexConfig(config) {
598
623
  `model_catalog_json = ${tomlString(modelCatalogFile)}`,
599
624
  'preferred_auth_method = "apikey"',
600
625
  `model_provider = ${tomlString(PROVIDER_ID)}`,
601
- `model_reasoning_effort = ${tomlString(DISPLAY_REASONING_EFFORT)}`,
626
+ `model_reasoning_effort = ${tomlString(reasoningEffort)}`,
602
627
  "check_for_update_on_startup = false",
603
628
  "analytics_enabled = false",
604
629
  "feedback_enabled = false",
@@ -660,7 +685,7 @@ function modelCatalogEntry(model, index) {
660
685
  slug: model.id,
661
686
  display_name: model.label,
662
687
  description: modelCatalogDescription(model.id),
663
- default_reasoning_level: DISPLAY_REASONING_EFFORT,
688
+ default_reasoning_level: reasoningEffortForModel(model.id),
664
689
  supported_reasoning_levels: SUPPORTED_REASONING_LEVELS,
665
690
  shell_type: "shell_command",
666
691
  visibility: "list",
@@ -680,8 +705,17 @@ function modelCatalogEntry(model, index) {
680
705
  }
681
706
 
682
707
  function modelCatalogDescription(modelId) {
708
+ if (modelId === "gpt-5.6") {
709
+ return "GPT-5.6 coding route with local coding tools and wallet billing.";
710
+ }
711
+ if (modelId === "gpt-5.6-sol-max") {
712
+ return "GPT-5.6 SOL Max premium coding route with local coding tools and 2x wallet billing.";
713
+ }
714
+ if (modelId === "gpt-5.6-sol-ultra") {
715
+ return "GPT-5.6 SOL Ultra premium coding route with local coding tools and 2.5x wallet billing.";
716
+ }
683
717
  if (modelId === "gpt-5.6-sol") {
684
- return "GPT-5.6 SOL managed coding route with local coding tools and wallet billing.";
718
+ return "GPT-5.6 SOL native coding route with local coding tools and wallet billing.";
685
719
  }
686
720
  if (modelId === "claude-opus-4-8") {
687
721
  return "Opus 4.8 coding route with local coding tools and wallet billing.";
@@ -741,8 +775,8 @@ async function runCodex(args) {
741
775
  CODEXCLAUDE_MODEL_ID: config.model,
742
776
  CODEXCLAUDE_MODEL_LABEL: MODELS[config.model]?.label || config.model,
743
777
  CODEXCLAUDE_MODEL_API_BASE_URL: providerBaseUrlForConfig(config),
744
- CODEXCLAUDE_DISPLAY_REASONING_EFFORT: DISPLAY_REASONING_EFFORT,
745
- CODEXCLAUDE_SERVER_REASONING_EFFORT: SERVER_REASONING_EFFORT,
778
+ CODEXCLAUDE_DISPLAY_REASONING_EFFORT: reasoningEffortForModel(config.model),
779
+ CODEXCLAUDE_SERVER_REASONING_EFFORT: reasoningEffortForModel(config.model) || DEFAULT_SERVER_REASONING_EFFORT,
746
780
  CODEXCLAUDE_VERSION: APP_VERSION,
747
781
  };
748
782
  delete env.CODEX_MANAGED_BY_NPM;
@@ -894,10 +928,19 @@ function numericWalletValue(value) {
894
928
  function formatStatusLine(config, wallet, cwd) {
895
929
  const model = modelStatusName(config.model);
896
930
  const walletText = wallet ? `Wallet ${formatUsd(wallet.balance)}` : "Wallet unavailable";
897
- return `${APP_DISPLAY_NAME} v${APP_VERSION} · ${model} ${DISPLAY_REASONING_EFFORT} · ${formatCwd(cwd)} · ${walletText}`;
931
+ return `${APP_DISPLAY_NAME} v${APP_VERSION} · ${model} ${reasoningEffortForModel(config.model)} · ${formatCwd(cwd)} · ${walletText}`;
898
932
  }
899
933
 
900
934
  function modelStatusName(model) {
935
+ if (model === "gpt-5.6") {
936
+ return "gpt-5.6";
937
+ }
938
+ if (model === "gpt-5.6-sol-max") {
939
+ return "gpt-5.6-sol max";
940
+ }
941
+ if (model === "gpt-5.6-sol-ultra") {
942
+ return "gpt-5.6-sol ultra";
943
+ }
901
944
  if (model === "gpt-5.6-sol") {
902
945
  return "gpt-5.6-sol";
903
946
  }
@@ -910,7 +953,11 @@ function modelStatusName(model) {
910
953
  if (model === "claude-fable-5") {
911
954
  return "fable-5";
912
955
  }
913
- return "gpt-5.5";
956
+ return "gpt-5.6";
957
+ }
958
+
959
+ function reasoningEffortForModel(model) {
960
+ return MODELS[model]?.reasoningEffort || DEFAULT_DISPLAY_REASONING_EFFORT;
914
961
  }
915
962
 
916
963
  function normalizeConfig(config) {
@@ -927,6 +974,18 @@ function normalizeConfig(config) {
927
974
  if (["claude-fabel-5", "fable-5", "fabel-5"].includes(normalized.model)) {
928
975
  normalized.model = "claude-fable-5";
929
976
  }
977
+ if (["gpt-5.6-sol-max", "gpt-5.6-max", "gpt56-max", "sol-max", "max"].includes(normalized.model)) {
978
+ normalized.model = "gpt-5.6-sol-max";
979
+ }
980
+ if (["gpt-5.6-sol-ultra", "gpt-5.6-ultra", "gpt56-ultra", "sol-ultra", "ultra"].includes(normalized.model)) {
981
+ normalized.model = "gpt-5.6-sol-ultra";
982
+ }
983
+ if (["gpt-5-6-sol", "sol"].includes(normalized.model)) {
984
+ normalized.model = "gpt-5.6-sol";
985
+ }
986
+ if (["gpt-5-6", "gpt56", "chatgpt-5.6", "chatgpt-5-6"].includes(normalized.model)) {
987
+ normalized.model = "gpt-5.6";
988
+ }
930
989
  if (
931
990
  [
932
991
  "deepseek-v4-pro",
package/codexclaude.md CHANGED
@@ -5,14 +5,14 @@ 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.20`
8
+ - Launcher version: `2.0.22`
9
9
  - Customer-facing app name: `Magnetapi Client`
10
- - Bundled runtime dependency: `@openai/codex@0.144.1`
11
- - Required install command: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.20.tgz`
12
- - Backend minimum version: `2.0.20`
13
- - Default visible model: `GPT-5.6 SOL`
14
- - Default model slug: `gpt-5.6-sol`
15
- - Visible reasoning effort: `xhigh`
10
+ - Bundled runtime dependency: `@openai/codex@0.144.3`
11
+ - Required install command: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.22.tgz`
12
+ - Backend minimum version: `2.0.22`
13
+ - Default visible model: `GPT-5.6`
14
+ - Default model slug: `gpt-5.6`
15
+ - Default visible reasoning effort: `xhigh`; premium SOL Max and SOL Ultra retain their explicit `max` and `ultra` labels.
16
16
  - Local permissions: Full Access, implemented as `approval_policy = "never"` and `sandbox_mode = "danger-full-access"`
17
17
  - Local launcher state: `~/.codexclaude/config.json`
18
18
  - Generated runtime config: `~/.codex/config.toml`
@@ -24,26 +24,29 @@ This file is the durable handoff for the `@codexapi/codexclaude` package in `/ro
24
24
  The launcher must present itself as:
25
25
 
26
26
  ```text
27
- Magnetapi Client v2.0.20
27
+ Magnetapi Client v2.0.22
28
28
  ```
29
29
 
30
30
  Normal pre-launch status should look like:
31
31
 
32
32
  ```text
33
- Magnetapi Client v2.0.20 · gpt-5.6-sol xhigh · ~/project · Wallet $20.00
33
+ Magnetapi Client v2.0.22 · gpt-5.6 xhigh · ~/project · Wallet $20.00
34
34
  ```
35
35
 
36
36
  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.
37
37
 
38
- The launcher command `codexclaude model` must list exactly five customer-visible models:
38
+ The launcher command `codexclaude model` must list these customer-visible models:
39
39
 
40
+ - `gpt-5.6` displayed as `GPT-5.6`, first and selected by default
41
+ - `gpt-5.6-sol-max` displayed as `GPT-5.6 SOL Max` with 2x premium billing
42
+ - `gpt-5.6-sol-ultra` displayed as `GPT-5.6 SOL Ultra` with 2.5x premium billing
40
43
  - `gpt-5.6-sol` displayed as `GPT-5.6 SOL`
41
44
  - `gpt-5.5` displayed as `ChatGPT-5.5`
42
45
  - `claude-opus-4-8` displayed as `Opus 4.8`
43
46
  - `claude-sonnet-5` displayed as `Sonnet 5`
44
47
  - `claude-fable-5` displayed as `Fable 5`
45
48
 
46
- GPT-5.6 SOL must be the default when a new config is created or a legacy config contains an unsupported Gemini/Deepseek value. `gpt-5.6-sol` is a managed public alias routed through the compatible signed-in GPT runtime until OpenAI publishes an official upstream API slug. The selected model slug must stay in `~/.codex/config.toml`; do not rewrite customer-facing model selections locally just because the backend may route internally.
49
+ GPT-5.6 must be the default when a new config is created or a legacy config contains an unsupported Gemini/Deepseek value. It is displayed with `xhigh` reasoning while the API servers execute Codex-family requests through the managed GPT-5.6 Terra/xhigh signed-in target. 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.
47
50
 
48
51
  ## Update Policy
49
52
 
@@ -52,7 +55,7 @@ GPT-5.6 SOL must be the default when a new config is created or a legacy config
52
55
  - `https://codexapi.pro/api/v1/codexclaude/version`
53
56
  - `https://registry.npmjs.org/@codexapi%2Fcodexclaude/latest`
54
57
 
55
- It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.20` is a forced release: the backend `minimumVersion` equals `2.0.20`, and older clients must show an update-required message with the hosted tarball command.
58
+ It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.22` is a forced release: the backend `minimumVersion` equals `2.0.22`, and older clients must show an update-required message with the hosted tarball command.
56
59
 
57
60
  The launcher writes `check_for_update_on_startup = false` and removes `~/.codex/version.json` so the bundled runtime does not display stale upstream update prompts. The launcher also resolves the platform-native runtime binary directly from the optional package (`@openai/codex-linux-x64`, `@openai/codex-darwin-arm64`, and so on). Do not fall back to the upstream npm wrapper, because that wrapper can re-enable upstream managed update behavior.
58
61
 
@@ -63,11 +66,11 @@ The optional platform-native runtime packages can still contain upstream README
63
66
  `bin/codexclaude.js` must rewrite `~/.codex/config.toml` before every coding session. Preserve this top-level shape:
64
67
 
65
68
  ```toml
66
- model = "gpt-5.6-sol"
69
+ model = "gpt-5.6"
67
70
  model_catalog_json = "<absolute path to ~/.codexclaude/model_catalog.json>"
68
71
  preferred_auth_method = "apikey"
69
72
  model_provider = "codexapi"
70
- model_reasoning_effort = "xhigh"
73
+ model_reasoning_effort = "<selected model reasoning effort>"
71
74
  check_for_update_on_startup = false
72
75
  analytics_enabled = false
73
76
  feedback_enabled = false
@@ -80,7 +83,7 @@ base_url = "<service Responses URL>"
80
83
  experimental_bearer_token = "<customer System Token/API username>"
81
84
  wire_api = "responses"
82
85
  supports_websockets = false
83
- http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.20", "X-CodexAPI-Selected-Model" = "<selected model>" }
86
+ http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.22", "X-CodexAPI-Selected-Model" = "<selected model>" }
84
87
 
85
88
  [tui]
86
89
  status_line = ["model-with-reasoning", "fast-mode", "current-dir"]
@@ -88,13 +91,13 @@ status_line_use_colors = true
88
91
  terminal_title = ["project-name", "model-with-reasoning", "run-state"]
89
92
  ```
90
93
 
91
- The generated model catalog must contain full metadata for the five supported slugs. This prevents fallback metadata warnings such as:
94
+ The generated model catalog must contain full metadata for every supported slug, including `gpt-5.6`, `gpt-5.6-sol-max`, and `gpt-5.6-sol-ultra`. This prevents fallback metadata warnings such as:
92
95
 
93
96
  ```text
94
97
  Model metadata for `claude-opus-4-8` not found. Defaulting to fallback metadata; this can degrade performance and cause issues.
95
98
  ```
96
99
 
97
- Each model catalog entry must include a slug, display name, reasoning levels including `xhigh`, shell tool type, input modalities including images, web/search support, truncation policy, and `visibility = "list"`.
100
+ Each model catalog entry must include a slug, display name, reasoning levels including `xhigh`, `max`, and `ultra`, shell tool type, input modalities including images, web/search support, truncation policy, and `visibility = "list"`.
98
101
 
99
102
  ## Service Login
100
103
 
@@ -112,7 +115,7 @@ The saved `username` is the System Token/API username returned by the service an
112
115
 
113
116
  The launcher is not the source of truth for upstream runtime routing. Admin Manage Models controls execution routing server-side. The launcher must preserve the user-selected model slug and pass it through the Responses request so billing, logs, and the dashboard can record what the user chose.
114
117
 
115
- CodexAPI.pro and ChatPlus Claude-family models use the CodexAPI.pro Claude-compatible Responses endpoint. MyAPI.world and MagnetAPI.org accounts keep their own API origins. Fable 5 remains visible as `claude-fable-5` while the backend applies the premium model behavior and billing.
118
+ CodexAPI.pro and ChatPlus Claude-family models use the CodexAPI.pro Claude-compatible Responses endpoint. MyAPI.world and MagnetAPI.org accounts keep their own API origins. Fable 5 remains visible as `claude-fable-5` while the backend applies the premium model behavior and billing. SOL Max bills at 2x normal SOL usage, and SOL Ultra bills at 2.5x normal SOL usage.
116
119
 
117
120
  ## Upgrade Checklist
118
121
 
@@ -123,7 +126,7 @@ When updating the bundled runtime dependency:
123
126
  3. Bump `package.json` and `package-lock.json` to a new `@codexapi/codexclaude` version.
124
127
  4. Update `APP_VERSION` and `CODEX_VERSION` in `bin/codexclaude.js`.
125
128
  5. Preserve `APP_DISPLAY_NAME = "Magnetapi Client"`.
126
- 6. Preserve `DEFAULT_MODEL_ID = "gpt-5.6-sol"`.
129
+ 6. Preserve `DEFAULT_MODEL_ID = "gpt-5.6"`.
127
130
  7. Preserve `DISPLAY_REASONING_EFFORT = "xhigh"` and `SERVER_REASONING_EFFORT = "xhigh"` unless operations explicitly changes the launcher-visible contract.
128
131
  8. Preserve Full Access defaults and the local model catalog.
129
132
  9. Preserve direct platform-native binary launch.
@@ -150,7 +153,7 @@ tmp_home="$(mktemp -d)"
150
153
  mkdir -p "$tmp_home/.codexclaude"
151
154
  cat > "$tmp_home/.codexclaude/config.json" <<'JSON'
152
155
  {
153
- "version": "2.0.20",
156
+ "version": "2.0.22",
154
157
  "serviceId": "codexapi",
155
158
  "serviceLabel": "CodexAPI.pro",
156
159
  "apiOrigin": "https://codexapi.pro",
@@ -165,7 +168,7 @@ HOME="$tmp_home" CODEXCLAUDE_DISABLE_UPDATE_CHECK=1 CODEXCLAUDE_QUIET_STATUS=1 n
165
168
 
166
169
  Verify the generated config contains:
167
170
 
168
- - `model = "gpt-5.6-sol"`
171
+ - `model = "gpt-5.6"`
169
172
  - `model_reasoning_effort = "xhigh"`
170
173
  - `check_for_update_on_startup = false`
171
174
  - `approval_policy = "never"`
@@ -174,6 +177,10 @@ Verify the generated config contains:
174
177
 
175
178
  Verify the generated model catalog contains only:
176
179
 
180
+ - `gpt-5.6`
181
+ - `gpt-5.6-sol-max`
182
+ - `gpt-5.6-sol-ultra`
183
+ - `gpt-5.6-sol`
177
184
  - `gpt-5.5`
178
185
  - `claude-opus-4-8`
179
186
  - `claude-sonnet-5`
@@ -183,20 +190,21 @@ After packaging, copy the tarball to the public downloads directories, restart t
183
190
 
184
191
  ```bash
185
192
  curl -fsS "https://codexapi.pro/api/v1/codexclaude/version?current=2.0.17"
186
- curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.20.tgz"
193
+ curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.22.tgz"
187
194
  ```
188
195
 
189
- The version endpoint must report `latestVersion = 2.0.20`, `minimumVersion = 2.0.20`, and `updateRequired = true` for old clients.
196
+ The version endpoint must report `latestVersion = 2.0.22`, `minimumVersion = 2.0.22`, and `updateRequired = true` for old clients.
190
197
 
191
- ## Version 2.0.20 Changes
198
+ ## Version 2.0.22 Changes
192
199
 
193
- - Updated bundled runtime dependency to `@openai/codex@0.144.1`.
194
- - Forced all older codexclaude clients to update by setting backend minimum version to `2.0.20`.
200
+ - Updated bundled runtime dependency to `@openai/codex@0.144.3`.
201
+ - Forced all older codexclaude clients to update by setting backend minimum version to `2.0.22`.
195
202
  - Changed launcher-owned identity to `Magnetapi Client`.
196
- - Added GPT-5.6 SOL as a managed model choice and made it the default selection.
197
- - Kept visible reasoning at xhigh.
203
+ - Made GPT-5.6 with xhigh reasoning the default customer-visible model.
204
+ - Added GPT-5.6 SOL Max and GPT-5.6 SOL Ultra as explicit premium model choices.
205
+ - Preserved xhigh as the standard visible reasoning while retaining premium Max and Ultra labels.
198
206
  - Preserved Full Access defaults.
199
207
  - Disabled bundled runtime update checks through generated config and stale update-cache removal.
200
208
  - Removed launcher fallback to the upstream npm wrapper so OpenAI update prompts are not emitted by codexclaude.
201
209
  - Kept update monitoring limited to CodexAPI.pro version metadata and the `@codexapi/codexclaude` npm package.
202
- - Updated setup scripts to install the exact hosted `2.0.20` tarball.
210
+ - Updated setup scripts to install the exact hosted `2.0.22` tarball.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codexapi/codexclaude",
3
- "version": "2.0.20",
3
+ "version": "2.0.22",
4
4
  "description": "Magnetapi Client launcher for ChatGPT-5.5, Opus 4.8, Sonnet 5, and Fable 5.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -17,7 +17,7 @@
17
17
  "node": ">=20"
18
18
  },
19
19
  "dependencies": {
20
- "@openai/codex": "0.144.1"
20
+ "@openai/codex": "0.144.3"
21
21
  },
22
22
  "publishConfig": {
23
23
  "access": "public"