From d183aac0ab8a61f763d3e948649420047943e9be Mon Sep 17 00:00:00 2001 From: Arul Sharma <31745423+arul28@users.noreply.github.com> Date: Sun, 20 Sep 2026 15:07:18 -0400 Subject: [PATCH] fix(providers): upgrade Codex runtime to 0.155.1 --- apps/ade-cli/package-lock.json | 110 +++++++++--------- apps/ade-cli/package.json | 2 +- .../src/services/tools/manifest.test.ts | 4 +- apps/ade-cli/src/services/tools/manifest.ts | 2 +- apps/ade-cli/src/services/tools/paths.ts | 2 +- .../tools/toolsManifest.generated.json | 30 ++--- apps/desktop/package-lock.json | 56 ++++----- apps/desktop/package.json | 2 +- .../chat/codexAppServerFeatures.test.ts | 2 +- .../services/chat/codexAppServerFeatures.ts | 4 +- .../settings/providers/bodies/CodexBody.tsx | 2 +- apps/desktop/src/shared/codexPluginList.ts | 4 +- .../src/shared/codexRequestUserInput.ts | 2 +- .../desktop/src/shared/pendingInputAnswers.ts | 2 +- docs/ARCHITECTURE.md | 2 +- docs/features/chat/README.md | 2 +- docs/features/chat/agent-routing.md | 6 +- docs/features/chat/composer-and-ui.md | 2 +- 18 files changed, 118 insertions(+), 118 deletions(-) diff --git a/apps/ade-cli/package-lock.json b/apps/ade-cli/package-lock.json index 5b601704ec..4f465287af 100644 --- a/apps/ade-cli/package-lock.json +++ b/apps/ade-cli/package-lock.json @@ -13,7 +13,7 @@ "@factory/droid-sdk": "0.2.0", "@linear/sdk": "^84.0.0", "@modelcontextprotocol/sdk": "^1.29.0", - "@openai/codex": "0.153.4", + "@openai/codex": "0.155.1", "@opencode-ai/sdk": "1.18.31", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-serialize": "^0.14.0", @@ -995,9 +995,9 @@ } }, "node_modules/@openai/codex": { - "version": "0.153.4", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4.tgz", - "integrity": "sha512-wbHDmit7S/YvBGVX1DQmk13xtWblZ2cApeJ/pB7xDZ10Cna+DZc5ij7f0F4OxdsXN4FW1oLT48OpogUI1+8Y2w==", + "version": "0.155.1", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1.tgz", + "integrity": "sha512-02fAAGyBtlA1zPjEo3kTj/bOSYbPz5DvjLwRZJdV7weFFEDzNFOMjQGmZ/+5CuirYV0hE+AZTrnjzwXYU4AdAQ==", "license": "Apache-2.0", "bin": { "codex": "bin/codex.js" @@ -1006,19 +1006,19 @@ "node": ">=16" }, "optionalDependencies": { - "@openai/codex-darwin-arm64": "npm:@openai/codex@0.153.4-darwin-arm64", - "@openai/codex-darwin-x64": "npm:@openai/codex@0.153.4-darwin-x64", - "@openai/codex-linux-arm64": "npm:@openai/codex@0.153.4-linux-arm64", - "@openai/codex-linux-x64": "npm:@openai/codex@0.153.4-linux-x64", - "@openai/codex-win32-arm64": "npm:@openai/codex@0.153.4-win32-arm64", - "@openai/codex-win32-x64": "npm:@openai/codex@0.153.4-win32-x64" + "@openai/codex-darwin-arm64": "npm:@openai/codex@0.155.1-darwin-arm64", + "@openai/codex-darwin-x64": "npm:@openai/codex@0.155.1-darwin-x64", + "@openai/codex-linux-arm64": "npm:@openai/codex@0.155.1-linux-arm64", + "@openai/codex-linux-x64": "npm:@openai/codex@0.155.1-linux-x64", + "@openai/codex-win32-arm64": "npm:@openai/codex@0.155.1-win32-arm64", + "@openai/codex-win32-x64": "npm:@openai/codex@0.155.1-win32-x64" } }, "node_modules/@openai/codex-darwin-arm64": { "name": "@openai/codex", - "version": "0.153.4-darwin-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-arm64.tgz", - "integrity": "sha512-B1qhN3fa1ay0R0wGziXqgwSkB5icpYChNKHhtBHff/0UtSTC7z+l8aTtvMlGjH3E8HEvY3+njIJelM9CAAoVWg==", + "version": "0.155.1-darwin-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-arm64.tgz", + "integrity": "sha512-cYxzGcRRoBrncyHlR8ed4yXwcoVJZC1pipGULSyJkGFKXJw/Uu57BklvzayuAptjJIipamnOk32CfUkk1F0bLw==", "cpu": [ "arm64" ], @@ -1033,9 +1033,9 @@ }, "node_modules/@openai/codex-darwin-x64": { "name": "@openai/codex", - "version": "0.153.4-darwin-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-x64.tgz", - "integrity": "sha512-vnSbbPzfoDZmmyzsxswsDDXQ06IVFBzkQU7/hroB3ji93Ok2utcsq8Psfk2tjF5r9mEx8RWFJhzuTGHG26/NDA==", + "version": "0.155.1-darwin-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-x64.tgz", + "integrity": "sha512-FDpc+PdELYlyDnhd76Ckm6jNLF+1n3x34Ygd4QLQger810Vkxx/InQ5LY5jwkecJYKcbvyhMmuxTspaj1dLZrA==", "cpu": [ "x64" ], @@ -1050,9 +1050,9 @@ }, "node_modules/@openai/codex-linux-arm64": { "name": "@openai/codex", - "version": "0.153.4-linux-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-arm64.tgz", - "integrity": "sha512-QKdjYLYV4hXIuUQDP3P6F4NXuWFoKo9WUoV4nAREIx55kiUyi8UsYdsVobkeXir5n/maEQgYMCKLHVma4rNPiw==", + "version": "0.155.1-linux-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-arm64.tgz", + "integrity": "sha512-X3fRXm2orhJ3KeB8LgKym4XDUiQaqaOGuaa181bcHTsQI7C8m6tcQQbQsKDzT/2IibikzgYL82jvsgMbq43jww==", "cpu": [ "arm64" ], @@ -1067,9 +1067,9 @@ }, "node_modules/@openai/codex-linux-x64": { "name": "@openai/codex", - "version": "0.153.4-linux-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-x64.tgz", - "integrity": "sha512-x1EcwBlY3AObM1VTUHNM2AzAJQsyreGdagpF+qFiYi/Oa30VBktvvG0C6tLtCzqW6hjZNWkGZQWmeVk7MuJKWg==", + "version": "0.155.1-linux-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-x64.tgz", + "integrity": "sha512-atv3HF0mubqB0J/XkQ2JopqKzXJ+/7aQtTB2MkJ9MrraujMIz8zbCCLylLkN3PzpVGTJzzQFN/wD1oq8oJPJKg==", "cpu": [ "x64" ], @@ -1084,9 +1084,9 @@ }, "node_modules/@openai/codex-win32-arm64": { "name": "@openai/codex", - "version": "0.153.4-win32-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-arm64.tgz", - "integrity": "sha512-/FBh42976ltF1kxDoPQBg1Q6+hwChRU5/sm5dfeC8kFVQMvOCGoGeY5d8rRZGVJE8XojlXo74VQb0sHowcfgBw==", + "version": "0.155.1-win32-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-arm64.tgz", + "integrity": "sha512-k5x8VO1aF8Xx/nuh1P31TeBgs11WA6i2GJiHqx5YCndFbWzOzUz6aeBaq9+PO6Qfe/Ivennh3I1FKJBU6Q8mpg==", "cpu": [ "arm64" ], @@ -1101,9 +1101,9 @@ }, "node_modules/@openai/codex-win32-x64": { "name": "@openai/codex", - "version": "0.153.4-win32-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-x64.tgz", - "integrity": "sha512-lMkB43kJZH0VFr+hoXc11qqR7QtQIbkr07ALgj4urKL1osNyUyuy1iXd3Vzz2iCYvBUCSw7I0l/W1cEPGx9euQ==", + "version": "0.155.1-win32-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-x64.tgz", + "integrity": "sha512-MO+cCZrgU0Ec7lJP/5NsTe5obJ9/qtRMkQUK0jYWTY1omxLA3lp5IOD2IAmsejlEJB931XRo51LZ7hl178CDjA==", "cpu": [ "x64" ], @@ -5819,52 +5819,52 @@ } }, "@openai/codex": { - "version": "0.153.4", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4.tgz", - "integrity": "sha512-wbHDmit7S/YvBGVX1DQmk13xtWblZ2cApeJ/pB7xDZ10Cna+DZc5ij7f0F4OxdsXN4FW1oLT48OpogUI1+8Y2w==", + "version": "0.155.1", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1.tgz", + "integrity": "sha512-02fAAGyBtlA1zPjEo3kTj/bOSYbPz5DvjLwRZJdV7weFFEDzNFOMjQGmZ/+5CuirYV0hE+AZTrnjzwXYU4AdAQ==", "requires": { - "@openai/codex-darwin-arm64": "npm:@openai/codex@0.153.4-darwin-arm64", - "@openai/codex-darwin-x64": "npm:@openai/codex@0.153.4-darwin-x64", - "@openai/codex-linux-arm64": "npm:@openai/codex@0.153.4-linux-arm64", - "@openai/codex-linux-x64": "npm:@openai/codex@0.153.4-linux-x64", - "@openai/codex-win32-arm64": "npm:@openai/codex@0.153.4-win32-arm64", - "@openai/codex-win32-x64": "npm:@openai/codex@0.153.4-win32-x64" + "@openai/codex-darwin-arm64": "npm:@openai/codex@0.155.1-darwin-arm64", + "@openai/codex-darwin-x64": "npm:@openai/codex@0.155.1-darwin-x64", + "@openai/codex-linux-arm64": "npm:@openai/codex@0.155.1-linux-arm64", + "@openai/codex-linux-x64": "npm:@openai/codex@0.155.1-linux-x64", + "@openai/codex-win32-arm64": "npm:@openai/codex@0.155.1-win32-arm64", + "@openai/codex-win32-x64": "npm:@openai/codex@0.155.1-win32-x64" } }, "@openai/codex-darwin-arm64": { - "version": "npm:@openai/codex@0.153.4-darwin-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-arm64.tgz", - "integrity": "sha512-B1qhN3fa1ay0R0wGziXqgwSkB5icpYChNKHhtBHff/0UtSTC7z+l8aTtvMlGjH3E8HEvY3+njIJelM9CAAoVWg==", + "version": "npm:@openai/codex@0.155.1-darwin-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-arm64.tgz", + "integrity": "sha512-cYxzGcRRoBrncyHlR8ed4yXwcoVJZC1pipGULSyJkGFKXJw/Uu57BklvzayuAptjJIipamnOk32CfUkk1F0bLw==", "optional": true }, "@openai/codex-darwin-x64": { - "version": "npm:@openai/codex@0.153.4-darwin-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-x64.tgz", - "integrity": "sha512-vnSbbPzfoDZmmyzsxswsDDXQ06IVFBzkQU7/hroB3ji93Ok2utcsq8Psfk2tjF5r9mEx8RWFJhzuTGHG26/NDA==", + "version": "npm:@openai/codex@0.155.1-darwin-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-x64.tgz", + "integrity": "sha512-FDpc+PdELYlyDnhd76Ckm6jNLF+1n3x34Ygd4QLQger810Vkxx/InQ5LY5jwkecJYKcbvyhMmuxTspaj1dLZrA==", "optional": true }, "@openai/codex-linux-arm64": { - "version": "npm:@openai/codex@0.153.4-linux-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-arm64.tgz", - "integrity": "sha512-QKdjYLYV4hXIuUQDP3P6F4NXuWFoKo9WUoV4nAREIx55kiUyi8UsYdsVobkeXir5n/maEQgYMCKLHVma4rNPiw==", + "version": "npm:@openai/codex@0.155.1-linux-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-arm64.tgz", + "integrity": "sha512-X3fRXm2orhJ3KeB8LgKym4XDUiQaqaOGuaa181bcHTsQI7C8m6tcQQbQsKDzT/2IibikzgYL82jvsgMbq43jww==", "optional": true }, "@openai/codex-linux-x64": { - "version": "npm:@openai/codex@0.153.4-linux-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-x64.tgz", - "integrity": "sha512-x1EcwBlY3AObM1VTUHNM2AzAJQsyreGdagpF+qFiYi/Oa30VBktvvG0C6tLtCzqW6hjZNWkGZQWmeVk7MuJKWg==", + "version": "npm:@openai/codex@0.155.1-linux-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-x64.tgz", + "integrity": "sha512-atv3HF0mubqB0J/XkQ2JopqKzXJ+/7aQtTB2MkJ9MrraujMIz8zbCCLylLkN3PzpVGTJzzQFN/wD1oq8oJPJKg==", "optional": true }, "@openai/codex-win32-arm64": { - "version": "npm:@openai/codex@0.153.4-win32-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-arm64.tgz", - "integrity": "sha512-/FBh42976ltF1kxDoPQBg1Q6+hwChRU5/sm5dfeC8kFVQMvOCGoGeY5d8rRZGVJE8XojlXo74VQb0sHowcfgBw==", + "version": "npm:@openai/codex@0.155.1-win32-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-arm64.tgz", + "integrity": "sha512-k5x8VO1aF8Xx/nuh1P31TeBgs11WA6i2GJiHqx5YCndFbWzOzUz6aeBaq9+PO6Qfe/Ivennh3I1FKJBU6Q8mpg==", "optional": true }, "@openai/codex-win32-x64": { - "version": "npm:@openai/codex@0.153.4-win32-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-x64.tgz", - "integrity": "sha512-lMkB43kJZH0VFr+hoXc11qqR7QtQIbkr07ALgj4urKL1osNyUyuy1iXd3Vzz2iCYvBUCSw7I0l/W1cEPGx9euQ==", + "version": "npm:@openai/codex@0.155.1-win32-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-x64.tgz", + "integrity": "sha512-MO+cCZrgU0Ec7lJP/5NsTe5obJ9/qtRMkQUK0jYWTY1omxLA3lp5IOD2IAmsejlEJB931XRo51LZ7hl178CDjA==", "optional": true }, "@opencode-ai/sdk": { diff --git a/apps/ade-cli/package.json b/apps/ade-cli/package.json index 505a3b0a53..b38e5ef6ef 100644 --- a/apps/ade-cli/package.json +++ b/apps/ade-cli/package.json @@ -31,7 +31,7 @@ "@factory/droid-sdk": "0.2.0", "@linear/sdk": "^84.0.0", "@modelcontextprotocol/sdk": "^1.29.0", - "@openai/codex": "0.153.4", + "@openai/codex": "0.155.1", "@opencode-ai/sdk": "1.18.31", "@xterm/addon-fit": "^0.11.0", "@xterm/addon-serialize": "^0.14.0", diff --git a/apps/ade-cli/src/services/tools/manifest.test.ts b/apps/ade-cli/src/services/tools/manifest.test.ts index 9440595e7e..e0c219822c 100644 --- a/apps/ade-cli/src/services/tools/manifest.test.ts +++ b/apps/ade-cli/src/services/tools/manifest.test.ts @@ -172,9 +172,9 @@ describe("generated tools manifest", () => { it("keeps the codex alias version, which is not plain semver", () => { const pin = findToolTargetPin(manifest, "codex", "darwin-arm64"); expect(pin.package).toBe("@openai/codex-darwin-arm64"); - expect(pin.version).toBe("0.153.4-darwin-arm64"); + expect(pin.version).toBe("0.155.1-darwin-arm64"); // The alias publishes under the base package path, not the suffixed one. - expect(pin.tarball).toContain("/@openai/codex/-/codex-0.153.4-darwin-arm64.tgz"); + expect(pin.tarball).toContain("/@openai/codex/-/codex-0.155.1-darwin-arm64.tgz"); }); it("uses .exe entry spellings on Windows", () => { diff --git a/apps/ade-cli/src/services/tools/manifest.ts b/apps/ade-cli/src/services/tools/manifest.ts index a3a978ddb9..f2f25aa25b 100644 --- a/apps/ade-cli/src/services/tools/manifest.ts +++ b/apps/ade-cli/src/services/tools/manifest.ts @@ -24,7 +24,7 @@ export type ToolTargetPin = { * The npm *install directory* name — what consumers expect to find in a * `node_modules` tree. This is not always the published package name: * `@openai/codex-darwin-arm64` is an npm alias whose tarball is published - * under `@openai/codex` at version `0.153.4-darwin-arm64`. + * under `@openai/codex` at version `0.155.1-darwin-arm64`. */ package: string; version: string; diff --git a/apps/ade-cli/src/services/tools/paths.ts b/apps/ade-cli/src/services/tools/paths.ts index 61a9a307c0..38b42f21df 100644 --- a/apps/ade-cli/src/services/tools/paths.ts +++ b/apps/ade-cli/src/services/tools/paths.ts @@ -135,7 +135,7 @@ export function toolsLockRoot(toolsRoot: string): string { return path.join(toolsRoot, LOCK_DIR_NAME); } -/** `@openai/codex-darwin-arm64@0.153.4-darwin-arm64` -> a single safe filename. */ +/** `@openai/codex-darwin-arm64@0.155.1-darwin-arm64` -> a single safe filename. */ export function toolSlug(packageName: string, version: string): string { return `${packageName.replace(/[@/]/g, "_")}@${version}`.replace(/[^A-Za-z0-9._@-]/g, "_"); } diff --git a/apps/ade-cli/src/services/tools/toolsManifest.generated.json b/apps/ade-cli/src/services/tools/toolsManifest.generated.json index d53f473ce4..77595d2369 100644 --- a/apps/ade-cli/src/services/tools/toolsManifest.generated.json +++ b/apps/ade-cli/src/services/tools/toolsManifest.generated.json @@ -13,33 +13,33 @@ "targets": { "darwin-arm64": { "package": "@openai/codex-darwin-arm64", - "version": "0.153.4-darwin-arm64", - "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-arm64.tgz", - "integrity": "sha512-B1qhN3fa1ay0R0wGziXqgwSkB5icpYChNKHhtBHff/0UtSTC7z+l8aTtvMlGjH3E8HEvY3+njIJelM9CAAoVWg==" + "version": "0.155.1-darwin-arm64", + "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-arm64.tgz", + "integrity": "sha512-cYxzGcRRoBrncyHlR8ed4yXwcoVJZC1pipGULSyJkGFKXJw/Uu57BklvzayuAptjJIipamnOk32CfUkk1F0bLw==" }, "darwin-x64": { "package": "@openai/codex-darwin-x64", - "version": "0.153.4-darwin-x64", - "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-x64.tgz", - "integrity": "sha512-vnSbbPzfoDZmmyzsxswsDDXQ06IVFBzkQU7/hroB3ji93Ok2utcsq8Psfk2tjF5r9mEx8RWFJhzuTGHG26/NDA==" + "version": "0.155.1-darwin-x64", + "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-x64.tgz", + "integrity": "sha512-FDpc+PdELYlyDnhd76Ckm6jNLF+1n3x34Ygd4QLQger810Vkxx/InQ5LY5jwkecJYKcbvyhMmuxTspaj1dLZrA==" }, "linux-arm64": { "package": "@openai/codex-linux-arm64", - "version": "0.153.4-linux-arm64", - "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-arm64.tgz", - "integrity": "sha512-QKdjYLYV4hXIuUQDP3P6F4NXuWFoKo9WUoV4nAREIx55kiUyi8UsYdsVobkeXir5n/maEQgYMCKLHVma4rNPiw==" + "version": "0.155.1-linux-arm64", + "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-arm64.tgz", + "integrity": "sha512-X3fRXm2orhJ3KeB8LgKym4XDUiQaqaOGuaa181bcHTsQI7C8m6tcQQbQsKDzT/2IibikzgYL82jvsgMbq43jww==" }, "linux-x64": { "package": "@openai/codex-linux-x64", - "version": "0.153.4-linux-x64", - "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-x64.tgz", - "integrity": "sha512-x1EcwBlY3AObM1VTUHNM2AzAJQsyreGdagpF+qFiYi/Oa30VBktvvG0C6tLtCzqW6hjZNWkGZQWmeVk7MuJKWg==" + "version": "0.155.1-linux-x64", + "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-x64.tgz", + "integrity": "sha512-atv3HF0mubqB0J/XkQ2JopqKzXJ+/7aQtTB2MkJ9MrraujMIz8zbCCLylLkN3PzpVGTJzzQFN/wD1oq8oJPJKg==" }, "win32-x64": { "package": "@openai/codex-win32-x64", - "version": "0.153.4-win32-x64", - "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-x64.tgz", - "integrity": "sha512-lMkB43kJZH0VFr+hoXc11qqR7QtQIbkr07ALgj4urKL1osNyUyuy1iXd3Vzz2iCYvBUCSw7I0l/W1cEPGx9euQ==" + "version": "0.155.1-win32-x64", + "tarball": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-x64.tgz", + "integrity": "sha512-MO+cCZrgU0Ec7lJP/5NsTe5obJ9/qtRMkQUK0jYWTY1omxLA3lp5IOD2IAmsejlEJB931XRo51LZ7hl178CDjA==" } } }, diff --git a/apps/desktop/package-lock.json b/apps/desktop/package-lock.json index c5fa9cf44c..93c59b550e 100644 --- a/apps/desktop/package-lock.json +++ b/apps/desktop/package-lock.json @@ -14,7 +14,7 @@ "@factory/droid-sdk": "0.2.0", "@linear/sdk": "^84.0.0", "@modelcontextprotocol/sdk": "^1.29.0", - "@openai/codex": "0.153.4", + "@openai/codex": "0.155.1", "@opencode-ai/sdk": "1.18.31", "@xterm/addon-serialize": "^0.14.0", "@xterm/headless": "^6.0.0", @@ -3378,9 +3378,9 @@ } }, "node_modules/@openai/codex": { - "version": "0.153.4", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4.tgz", - "integrity": "sha512-wbHDmit7S/YvBGVX1DQmk13xtWblZ2cApeJ/pB7xDZ10Cna+DZc5ij7f0F4OxdsXN4FW1oLT48OpogUI1+8Y2w==", + "version": "0.155.1", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1.tgz", + "integrity": "sha512-02fAAGyBtlA1zPjEo3kTj/bOSYbPz5DvjLwRZJdV7weFFEDzNFOMjQGmZ/+5CuirYV0hE+AZTrnjzwXYU4AdAQ==", "license": "Apache-2.0", "bin": { "codex": "bin/codex.js" @@ -3389,19 +3389,19 @@ "node": ">=16" }, "optionalDependencies": { - "@openai/codex-darwin-arm64": "npm:@openai/codex@0.153.4-darwin-arm64", - "@openai/codex-darwin-x64": "npm:@openai/codex@0.153.4-darwin-x64", - "@openai/codex-linux-arm64": "npm:@openai/codex@0.153.4-linux-arm64", - "@openai/codex-linux-x64": "npm:@openai/codex@0.153.4-linux-x64", - "@openai/codex-win32-arm64": "npm:@openai/codex@0.153.4-win32-arm64", - "@openai/codex-win32-x64": "npm:@openai/codex@0.153.4-win32-x64" + "@openai/codex-darwin-arm64": "npm:@openai/codex@0.155.1-darwin-arm64", + "@openai/codex-darwin-x64": "npm:@openai/codex@0.155.1-darwin-x64", + "@openai/codex-linux-arm64": "npm:@openai/codex@0.155.1-linux-arm64", + "@openai/codex-linux-x64": "npm:@openai/codex@0.155.1-linux-x64", + "@openai/codex-win32-arm64": "npm:@openai/codex@0.155.1-win32-arm64", + "@openai/codex-win32-x64": "npm:@openai/codex@0.155.1-win32-x64" } }, "node_modules/@openai/codex-darwin-arm64": { "name": "@openai/codex", - "version": "0.153.4-darwin-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-arm64.tgz", - "integrity": "sha512-B1qhN3fa1ay0R0wGziXqgwSkB5icpYChNKHhtBHff/0UtSTC7z+l8aTtvMlGjH3E8HEvY3+njIJelM9CAAoVWg==", + "version": "0.155.1-darwin-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-arm64.tgz", + "integrity": "sha512-cYxzGcRRoBrncyHlR8ed4yXwcoVJZC1pipGULSyJkGFKXJw/Uu57BklvzayuAptjJIipamnOk32CfUkk1F0bLw==", "cpu": [ "arm64" ], @@ -3416,9 +3416,9 @@ }, "node_modules/@openai/codex-darwin-x64": { "name": "@openai/codex", - "version": "0.153.4-darwin-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-x64.tgz", - "integrity": "sha512-vnSbbPzfoDZmmyzsxswsDDXQ06IVFBzkQU7/hroB3ji93Ok2utcsq8Psfk2tjF5r9mEx8RWFJhzuTGHG26/NDA==", + "version": "0.155.1-darwin-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-darwin-x64.tgz", + "integrity": "sha512-FDpc+PdELYlyDnhd76Ckm6jNLF+1n3x34Ygd4QLQger810Vkxx/InQ5LY5jwkecJYKcbvyhMmuxTspaj1dLZrA==", "cpu": [ "x64" ], @@ -3433,9 +3433,9 @@ }, "node_modules/@openai/codex-linux-arm64": { "name": "@openai/codex", - "version": "0.153.4-linux-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-arm64.tgz", - "integrity": "sha512-QKdjYLYV4hXIuUQDP3P6F4NXuWFoKo9WUoV4nAREIx55kiUyi8UsYdsVobkeXir5n/maEQgYMCKLHVma4rNPiw==", + "version": "0.155.1-linux-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-arm64.tgz", + "integrity": "sha512-X3fRXm2orhJ3KeB8LgKym4XDUiQaqaOGuaa181bcHTsQI7C8m6tcQQbQsKDzT/2IibikzgYL82jvsgMbq43jww==", "cpu": [ "arm64" ], @@ -3450,9 +3450,9 @@ }, "node_modules/@openai/codex-linux-x64": { "name": "@openai/codex", - "version": "0.153.4-linux-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-x64.tgz", - "integrity": "sha512-x1EcwBlY3AObM1VTUHNM2AzAJQsyreGdagpF+qFiYi/Oa30VBktvvG0C6tLtCzqW6hjZNWkGZQWmeVk7MuJKWg==", + "version": "0.155.1-linux-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-linux-x64.tgz", + "integrity": "sha512-atv3HF0mubqB0J/XkQ2JopqKzXJ+/7aQtTB2MkJ9MrraujMIz8zbCCLylLkN3PzpVGTJzzQFN/wD1oq8oJPJKg==", "cpu": [ "x64" ], @@ -3467,9 +3467,9 @@ }, "node_modules/@openai/codex-win32-arm64": { "name": "@openai/codex", - "version": "0.153.4-win32-arm64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-arm64.tgz", - "integrity": "sha512-/FBh42976ltF1kxDoPQBg1Q6+hwChRU5/sm5dfeC8kFVQMvOCGoGeY5d8rRZGVJE8XojlXo74VQb0sHowcfgBw==", + "version": "0.155.1-win32-arm64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-arm64.tgz", + "integrity": "sha512-k5x8VO1aF8Xx/nuh1P31TeBgs11WA6i2GJiHqx5YCndFbWzOzUz6aeBaq9+PO6Qfe/Ivennh3I1FKJBU6Q8mpg==", "cpu": [ "arm64" ], @@ -3484,9 +3484,9 @@ }, "node_modules/@openai/codex-win32-x64": { "name": "@openai/codex", - "version": "0.153.4-win32-x64", - "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-x64.tgz", - "integrity": "sha512-lMkB43kJZH0VFr+hoXc11qqR7QtQIbkr07ALgj4urKL1osNyUyuy1iXd3Vzz2iCYvBUCSw7I0l/W1cEPGx9euQ==", + "version": "0.155.1-win32-x64", + "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.155.1-win32-x64.tgz", + "integrity": "sha512-MO+cCZrgU0Ec7lJP/5NsTe5obJ9/qtRMkQUK0jYWTY1omxLA3lp5IOD2IAmsejlEJB931XRo51LZ7hl178CDjA==", "cpu": [ "x64" ], diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 2c6a88bcfb..d28edc6230 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -78,7 +78,7 @@ "@factory/droid-sdk": "0.2.0", "@linear/sdk": "^84.0.0", "@modelcontextprotocol/sdk": "^1.29.0", - "@openai/codex": "0.153.4", + "@openai/codex": "0.155.1", "@opencode-ai/sdk": "1.18.31", "@xterm/addon-serialize": "^0.14.0", "@xterm/headless": "^6.0.0", diff --git a/apps/desktop/src/main/services/chat/codexAppServerFeatures.test.ts b/apps/desktop/src/main/services/chat/codexAppServerFeatures.test.ts index 989560267d..d54e72bc58 100644 --- a/apps/desktop/src/main/services/chat/codexAppServerFeatures.test.ts +++ b/apps/desktop/src/main/services/chat/codexAppServerFeatures.test.ts @@ -34,7 +34,7 @@ describe("codex app-server feature gates", () => { }); it("pins the app-server version ADE ships", () => { - expect(PINNED_CODEX_APP_SERVER_VERSION).toBe("0.153.4"); + expect(PINNED_CODEX_APP_SERVER_VERSION).toBe("0.155.1"); }); it("does not invent support when the user-agent is missing", () => { diff --git a/apps/desktop/src/main/services/chat/codexAppServerFeatures.ts b/apps/desktop/src/main/services/chat/codexAppServerFeatures.ts index dcaa223064..0cc7c07ed5 100644 --- a/apps/desktop/src/main/services/chat/codexAppServerFeatures.ts +++ b/apps/desktop/src/main/services/chat/codexAppServerFeatures.ts @@ -1,5 +1,5 @@ export const CODEX_COMPACTION_STALL_MS = 180_000; -export const PINNED_CODEX_APP_SERVER_VERSION = "0.153.4"; +export const PINNED_CODEX_APP_SERVER_VERSION = "0.155.1"; export type CodexAppServerVersion = { major: number; @@ -25,7 +25,7 @@ export function codexServerSupportsDeferGoalContinuation(version: CodexAppServer return codexServerAtLeast(version, 145); } -/** Durable FIFO `thread/queue/*` (0.146+; ADE pins 0.153.4). */ +/** Durable FIFO `thread/queue/*` (0.146+; ADE pins 0.155.1). */ export function codexServerSupportsThreadQueue(version: CodexAppServerVersion | null): boolean { return codexServerAtLeast(version, 146); } diff --git a/apps/desktop/src/renderer/components/settings/providers/bodies/CodexBody.tsx b/apps/desktop/src/renderer/components/settings/providers/bodies/CodexBody.tsx index a5f7ad18db..fcbb9c0b5c 100644 --- a/apps/desktop/src/renderer/components/settings/providers/bodies/CodexBody.tsx +++ b/apps/desktop/src/renderer/components/settings/providers/bodies/CodexBody.tsx @@ -1,6 +1,6 @@ /** * Codex settings extras: installed plugins from a live app-server runtime. - * List-only — no marketplace, install, or toggle. Codex 0.153.4 `plugin/list`. + * List-only — no marketplace, install, or toggle. Codex 0.155.1 `plugin/list`. */ import { ArrowsClockwise } from "@phosphor-icons/react"; import React, { useCallback, useEffect, useState } from "react"; diff --git a/apps/desktop/src/shared/codexPluginList.ts b/apps/desktop/src/shared/codexPluginList.ts index ccd97f237e..847aebb105 100644 --- a/apps/desktop/src/shared/codexPluginList.ts +++ b/apps/desktop/src/shared/codexPluginList.ts @@ -1,7 +1,7 @@ /** - * Codex 0.153.4 `plugin/list` (`PluginListResponse`: marketplaces → PluginSummary). + * Codex 0.155.1 `plugin/list` (`PluginListResponse`: marketplaces → PluginSummary). * Settings shows installed / enabled plugins only — no marketplace, no toggle. - * https://raw.githubusercontent.com/openai/codex/rust-v0.153.4/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json + * https://raw.githubusercontent.com/openai/codex/rust-v0.155.1/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json */ import type { AgentChatCodexPlugin, AgentChatCodexPluginOrigin } from "./types/chat"; diff --git a/apps/desktop/src/shared/codexRequestUserInput.ts b/apps/desktop/src/shared/codexRequestUserInput.ts index df6ec20fc9..78a9d957d1 100644 --- a/apps/desktop/src/shared/codexRequestUserInput.ts +++ b/apps/desktop/src/shared/codexRequestUserInput.ts @@ -1,7 +1,7 @@ /** * Codex app-server `item/tool/requestUserInput` `isBlocking`. * - * Wire default (rust-v0.153.4 `request_user_input.rs`): + * Wire default (rust-v0.155.1 `request_user_input.rs`): * `is_blocking: wire.is_blocking.unwrap_or(true)`. * Only an explicit JSON `false` is non-blocking steering. */ diff --git a/apps/desktop/src/shared/pendingInputAnswers.ts b/apps/desktop/src/shared/pendingInputAnswers.ts index dcfd0fc98b..1bea1a652d 100644 --- a/apps/desktop/src/shared/pendingInputAnswers.ts +++ b/apps/desktop/src/shared/pendingInputAnswers.ts @@ -125,7 +125,7 @@ export function isDismissiblePendingRequest( } /** - * Codex 0.153.4 `requestUserInput` with `isBlocking: false` (Astra mid-turn + * Codex 0.155.1 `requestUserInput` with `isBlocking: false` (Astra mid-turn * steering). Missing `blocking` stays a send-gate, matching Codex * `unwrap_or(true)`. */ diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index fa6c62275a..785385f373 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -693,7 +693,7 @@ Service entry points live under `apps/desktop/src/main/services/ai/`. The subsys - **Router** — `aiIntegrationService.ts` resolves a task → model → provider class and dispatches. - **Model registry** — `apps/desktop/src/shared/modelRegistry.ts` is the single source of truth. Each `ModelDescriptor` carries identity (`id`, `shortId`, `providerRoute`, `providerModelId`), capabilities, pricing, context sizing, auth type (`cli-subscription`, `api-key`, `openrouter`, `local`), optional reasoning tiers plus `defaultReasoningEffort`, and optional `harnessProfile`/`discoverySource` for safety metadata. - **Classes**: - - **CLI-wrapped** (Claude via `@anthropic-ai/claude-agent-sdk`, Codex via the pinned `@openai/codex` package) — spawned as subprocesses; Claude uses the SDK `query()` stream with ADE's async input pump and bundled Claude Code binary, while Codex uses its app-server JSON-RPC bridge. Desktop and runtime packages pin Codex `0.153.4`, including the matching native app-server binary. Authentication inherits from the user's own CLI login. ADE context is exposed through environment variables, and agents can call back into ADE with the `ade` CLI. + - **CLI-wrapped** (Claude via `@anthropic-ai/claude-agent-sdk`, Codex via the pinned `@openai/codex` package) — spawned as subprocesses; Claude uses the SDK `query()` stream with ADE's async input pump and bundled Claude Code binary, while Codex uses its app-server JSON-RPC bridge. Desktop and runtime packages pin Codex `0.155.1`, including the matching native app-server binary. Authentication inherits from the user's own CLI login. ADE context is exposed through environment variables, and agents can call back into ADE with the `ade` CLI. - **API-key / OpenRouter** (Anthropic, OpenAI, Google, Mistral, DeepSeek, xAI, Groq, Together AI, OpenRouter) — routed through the **OpenCode server** (`opencode` binary, user-installed or bundled). Discovery via `openCodeInventory.ts`; replaces dynamic portion of the registry. - **Local** (Ollama, LM Studio, vLLM) — OpenAI-compatible local endpoints through OpenCode. Discovery via `localModelDiscovery.ts`. - **Library-in-worker** (Pi) — the user's own Pi installation is resolved at runtime and loaded inside a forked Node worker (`piSdkPool.ts` / `piSdkWorker.ts`), never statically imported. The worker owns the Pi agent session, model runtime, tool registry, extension binding, and sign-in; the desktop process owns the cards that session blocks on, over a validated protocol-v2 channel (`piSdkProtocol.ts`). Installation resolution and blockers live in `services/ai/piInstallation.ts`; in-app provider sign-in lives in `services/ai/piAuthService.ts` and drives Pi's own `ModelRuntime.login` — Pi's `AuthStorage` writes `auth.json`, and ADE never receives, stores, or logs a credential. Pi is also the one runtime whose chat sessions share a native store with a tracked CLI: `piSessionStore.ts` resolves that one store (and refuses to honour a checkout's `.pi/settings.json`), `piSessionLease.ts` holds the live-writer lock, and `piSessionOwnership.ts` records the durable claim that keeps a terminal from adopting a chat's session. See [Agent Routing › Session store](features/chat/agent-routing.md#session-store). diff --git a/docs/features/chat/README.md b/docs/features/chat/README.md index 1edf222487..de9780cd37 100644 --- a/docs/features/chat/README.md +++ b/docs/features/chat/README.md @@ -2506,7 +2506,7 @@ on this adapter" is a recorded decision rather than silence. ### Async questions (a card you may ignore) -Codex 0.153.4 can attach questions to an `agentMessage` item: `delivery: +Codex 0.155.1 can attach questions to an `agentMessage` item: `delivery: "async"` plus `questions: [{ title, options }]`. There is no question id, no multi-select flag, and free text is always accepted, so ADE keys the questions positionally and marks every one `allowsFreeform`. diff --git a/docs/features/chat/agent-routing.md b/docs/features/chat/agent-routing.md index 34dcf5686b..6526e766ee 100644 --- a/docs/features/chat/agent-routing.md +++ b/docs/features/chat/agent-routing.md @@ -45,7 +45,7 @@ for vendored runtimes without changing the union. | Provider | Runtime | Adapter location | |---|---|---| | `claude` | `@anthropic-ai/claude-agent-sdk` `query()` stream with an ADE async input pump, `startup()` warmup, bundled Claude Code binary, SDK sessions, hooks, output styles, plugins, context usage, rewind, and slash-command dispatch. | `agentChatService.ts` (inline; the file carries the full Claude adapter). | -| `codex` | Pinned `@openai/codex` 0.153.4 `codex app-server` subprocess, JSON-RPC protocol. Spawn failures surface as error events. | `agentChatService.ts` (Codex adapter and thread config); executable resolution via `services/ai/codexExecutable.ts`. | +| `codex` | Pinned `@openai/codex` 0.155.1 `codex app-server` subprocess, JSON-RPC protocol. Spawn failures surface as error events. | `agentChatService.ts` (Codex adapter and thread config); executable resolution via `services/ai/codexExecutable.ts`. | | `opencode` | OpenCode server runtime: the provider catalog and model list come from OpenCode/Models.dev, with provider-native OAuth, API-key, custom, and local-server paths. | `agentChatService.ts` (OpenCode adapter); inventory in `openCodeInventory.ts`; auth in `openCodeAuthService.ts`. | | `cursor` | Official `@cursor/sdk` running in a Node worker pool. ADE owns permissions, hooks, and the system prompt; the SDK owns the model + tool execution. Slash commands are discovered from `.cursor/commands/`, `.cursor/agents/`, built-in subagents, and Agent Skill roots via `cursorSlashCommandDiscovery.ts`. A transport failure can wedge the server-side agent thread while the worker process stays alive, so every local turn carries a 90 s first-event watchdog and one automatic recycle-and-resend — see [Cursor thread recycling and the first-event watchdog](README.md#cursor-thread-recycling-and-the-first-event-watchdog). | `cursorSdkPool.ts`, `cursorSdkWorker.ts`, `cursorSdkProtocol.ts`, `cursorSdkPolicy.ts`, `cursorSdkSystemPrompt.ts`, `cursorSdkEventMapper.ts`, `cursorSdkErrors.ts`, `cursorSlashCommandDiscovery.ts`. | | `droid` | Factory Droid models exposed as dynamic `droid/` descriptors and driven through the official `@factory/droid-sdk` running in a forked Node worker pool. The legacy ACP bridge (`droidAcpPool.ts`) has been retired. | `droidSdkPool.ts`, `droidSdkWorker.ts`, `droidSdkProtocol.ts`, `droidSdkEventMapper.ts`, `droidModelsDiscovery.ts`; model helpers in `modelRegistry.ts`. | @@ -143,10 +143,10 @@ high | xhigh | max`; Sol and Terra expose `low | medium | high | xhigh | max | ultra`. Desktop, ADE Code, and iOS label those values Light, Medium, High, Extra High, Max, and (for Sol/Terra) Ultra. Runtime app-server ladders retain their advertised order. `ultra` is the multi-agent tier and carries a usage -warning. Codex 0.153.4 is the pinned app-server that advertises Astra; older +warning. Codex 0.155.1 is the pinned app-server that advertises Astra; older PATH installs without Astra metadata cannot start it. -On 0.153.4 ADE always enables `tools.update_plan` on `thread/start` and +On 0.155.1 ADE always enables `tools.update_plan` on `thread/start` and `thread/resume`, copies the thread's `model` / `reasoningEffort` into the session snapshot, and treats `item/tool/requestUserInput` `isBlocking: false` as live steering rather than Needs you. Computer Use appears as a diff --git a/docs/features/chat/composer-and-ui.md b/docs/features/chat/composer-and-ui.md index 4d093dcb7f..2085cae1d9 100644 --- a/docs/features/chat/composer-and-ui.md +++ b/docs/features/chat/composer-and-ui.md @@ -970,7 +970,7 @@ that could not work without it. sits above the still-open composer (`data-testid="codex-steering-question"`), the session row stays Working with a `?` pip, and `sendMessage` is allowed. Missing `isBlocking` still blocks (`unwrap_or(true)` in Codex - 0.153.4). The same gate runs server-side: `agentChatService` + 0.155.1). The same gate runs server-side: `agentChatService` refuses `sendMessage`, queued steers, and `dispatchSteer` while a live **blocking** pending input exists, throwing `"Answer or decline the pending request before sending another