
Aamer AkhterandSaqeb Akhter
70378315da
feat(codex): add Codex (OpenAI CLI) run-mode foundation
Add Codex as a first-class session mode alongside Claude/Shell/OpenCode.
- codex-cli-resolver: locate the `codex` binary and augment PATH (mirrors the
OpenCode resolver)
- SessionMode 'codex' + CodexConfig (model, resumeSessionId, dangerouslyBypass,
renderMode); persisted in SessionState and threaded through CreateSession/
RespawnPane options
- schema validation: CodexConfigSchema, CODEX_ env-var prefix allowlist, mode
enums on create/quick-start, codexDangerouslyBypassApprovals setting
- tmux launch: buildCodexCommand, setenv for OPENAI_API_KEY/CODEX_* (keeps
secrets out of ps), truecolor COLORTERM, codex PATH resolution
- session + routes: availability check (clear install hint), config passthrough,
tmux-required guard; Codex skips Claude-only parsers (Ralph/respawn/token)
- run-mode UI: "Run CX" selector option + dedicated Codex CLI settings tab with
the bypass-approvals toggle; GET /api/codex/status
Scope: foundation only. Codex terminal redraw handling and xterm snapshot/replay
are intentionally excluded and tracked separately.
Verification: tsc --noEmit, eslint, prettier --check, check:frontend-syntax all
clean; full test:ci suite green (2712 passed, 0 failed); server boot smoke OK.
Co-Authored-By: Saqeb Akhter <saqeb.akhter@gmail.com>
2026-06-10 09:34:52 -04:00
..
2026-06-08 15:41:46 +02:00
2026-06-10 04:07:26 +02:00
2026-06-10 04:07:26 +02:00
2026-06-10 04:07:26 +02:00
2026-06-10 01:38:40 +02:00
2026-02-26 16:44:34 +01:00
2026-01-27 23:15:25 +01:00
2026-06-09 20:02:15 +02:00
2026-06-08 19:29:47 +02:00
2026-02-12 13:44:07 +01:00
2026-03-07 07:33:44 +01:00
2026-02-26 16:44:34 +01:00
2026-03-01 16:50:23 +01:00
2026-06-08 11:01:34 -04:00
2026-03-01 16:50:23 +01:00
2026-06-08 09:56:06 -04:00
2026-06-10 01:30:43 +02:00
2026-06-07 04:33:11 +02:00
2026-06-10 01:30:43 +02:00
2026-06-09 20:02:15 +02:00
2026-06-08 09:56:06 -04:00
2026-06-10 01:30:43 +02:00
2026-06-10 03:41:04 +02:00
2026-02-28 17:39:44 +01:00
2026-05-12 09:57:08 +02:00
2026-06-10 01:30:43 +02:00
2026-03-07 07:33:44 +01:00
2026-02-26 16:44:34 +01:00
2026-02-18 12:51:35 +01:00
2026-06-08 11:01:34 -04:00
2026-06-09 03:19:51 +02:00
2026-02-12 13:44:07 +01:00
2026-02-26 15:58:26 +01:00
2026-06-10 01:30:43 +02:00
2026-03-21 19:23:37 +01:00
2026-03-21 07:20:18 +01:00
2026-06-08 10:27:18 -04:00
2026-02-26 16:44:34 +01:00
2026-02-12 18:26:16 +01:00
2026-06-09 20:02:17 +02:00
2026-06-08 18:01:20 +02:00
2026-06-10 01:30:43 +02:00
2026-06-10 01:30:43 +02:00
2026-01-21 22:36:45 +01:00
2026-06-10 01:30:43 +02:00
2026-02-19 14:00:10 +01:00
2026-01-21 14:01:47 +01:00
2026-03-01 16:50:23 +01:00
2026-06-08 15:46:10 +02:00
2026-03-07 07:33:44 +01:00
2026-02-26 16:44:34 +01:00
2026-05-31 05:17:07 +02:00
2026-03-07 07:33:44 +01:00
2026-03-07 07:33:44 +01:00
2026-03-07 07:33:44 +01:00
2026-01-25 07:52:40 +01:00
2026-03-01 14:33:18 +01:00
2026-02-26 16:44:34 +01:00
2026-06-10 09:34:52 -04:00
2026-06-10 03:41:04 +02:00
2026-02-18 18:14:13 +01:00
2026-06-09 20:02:15 +02:00
2026-06-09 01:55:54 +02:00
2026-06-08 18:01:20 +02:00
2026-06-10 01:30:43 +02:00
2026-06-10 04:07:26 +02:00
2026-06-10 04:07:26 +02:00
2026-02-26 16:44:34 +01:00
2026-06-10 01:30:43 +02:00
2026-06-08 10:19:38 -04:00
2026-06-10 01:30:43 +02:00
2026-06-09 20:02:15 +02:00
2026-06-10 01:30:43 +02:00
2026-03-07 07:33:44 +01:00
2026-02-28 14:45:39 +01:00
2026-01-22 11:30:10 +01:00
2026-05-12 10:11:47 +02:00
2026-03-12 16:08:39 +01:00
2026-02-28 17:39:44 +01:00
2026-02-28 17:39:44 +01:00
2026-01-21 07:19:49 +01:00
2026-02-26 16:44:34 +01:00
2026-02-26 16:44:34 +01:00
2026-06-09 15:39:03 -04:00
2026-02-26 16:44:34 +01:00
2026-06-09 15:39:03 -04:00
2026-06-10 02:07:26 +02:00
2026-02-26 16:44:34 +01:00
2026-05-25 23:28:58 +02:00
2026-01-25 21:29:35 +01:00
2026-06-10 01:30:43 +02:00
2026-01-22 11:30:10 +01:00
2026-05-19 11:43:36 +02:00