fix(cli): fix codex review command argument handling

- Fix prompt incorrectly passed to codex review with target flags (--uncommitted/--base/--commit)
- Remove unsupported --skip-git-repo-check flag from codex review command
- Fix TypeScript type error in codex-lens.ts (missing 'installed' property)

Codex CLI constraint: --uncommitted/--base/--commit and [PROMPT] are mutually exclusive.
This commit is contained in:
catlog22
2026-02-01 23:51:58 +08:00
parent e5252f8a77
commit 690597bae8
3 changed files with 8 additions and 7 deletions

View File

@@ -702,7 +702,9 @@ async function execAction(positionalPrompt: string | undefined, options: CliExec
// Handle cache option: pack @patterns and/or content // Handle cache option: pack @patterns and/or content
let cacheSessionId: string | undefined; let cacheSessionId: string | undefined;
let actualPrompt = prompt_to_use; // When skipTemplates is true (review mode with target flags), don't pass prompt to codex CLI
// because --uncommitted/--base/--commit and [PROMPT] are mutually exclusive
let actualPrompt = skipTemplates ? '' : prompt_to_use;
if (cache) { if (cache) {
const { handler: contextCacheHandler } = await import('../tools/context-cache.js'); const { handler: contextCacheHandler } = await import('../tools/context-cache.js');

View File

@@ -254,8 +254,7 @@ export function buildCommand(params: {
// codex review uses -c key=value for config override, not -m // codex review uses -c key=value for config override, not -m
args.push('-c', `model=${model}`); args.push('-c', `model=${model}`);
} }
// Skip git repo check by default for codex (allows non-git directories) // Note: --skip-git-repo-check is NOT supported by codex review command
args.push('--skip-git-repo-check');
// codex review uses positional prompt argument, not stdin // codex review uses positional prompt argument, not stdin
useStdin = false; useStdin = false;
if (prompt) { if (prompt) {

View File

@@ -1028,7 +1028,7 @@ async function bootstrapVenv(): Promise<BootstrapResult> {
async function ensureReady(): Promise<ReadyStatus> { async function ensureReady(): Promise<ReadyStatus> {
// Use cached result if already checked // Use cached result if already checked
if (bootstrapChecked && bootstrapReady) { if (bootstrapChecked && bootstrapReady) {
return { ready: true }; return { ready: true, installed: true };
} }
// Check current status // Check current status
@@ -1036,13 +1036,13 @@ async function ensureReady(): Promise<ReadyStatus> {
if (status.ready) { if (status.ready) {
bootstrapChecked = true; bootstrapChecked = true;
bootstrapReady = true; bootstrapReady = true;
return { ready: true, version: status.version }; return { ready: true, installed: true, version: status.version };
} }
// Attempt bootstrap // Attempt bootstrap
const bootstrap = await bootstrapVenv(); const bootstrap = await bootstrapVenv();
if (!bootstrap.success) { if (!bootstrap.success) {
return { ready: false, error: bootstrap.error }; return { ready: false, installed: false, error: bootstrap.error };
} }
// Verify after bootstrap // Verify after bootstrap
@@ -1050,7 +1050,7 @@ async function ensureReady(): Promise<ReadyStatus> {
bootstrapChecked = true; bootstrapChecked = true;
bootstrapReady = recheck.ready; bootstrapReady = recheck.ready;
return recheck; return { ...recheck, installed: recheck.ready };
} }
/** /**