/** * 自动审查启动路径决策(纯逻辑,不碰 VS Code API)。 * * 与 TUI 对齐:只有已持久化 `reviewSessionId` 才走「再审」; * 仅 tab 活着但还没有 session id,说明首次审查刚开、session 尚未落盘, * 再注入 "PR 更新了,再审一下" 会污染首轮 prompt(opened 后紧跟 synchronize 的常见竞态)。 */ export type AutoReviewPath = 'reuse' | 'resume' | 'new' | 'noop' export function decideAutoReviewPath(opts: { tabAlive: boolean reviewSessionId: string | undefined }): AutoReviewPath { const hasSid = typeof opts.reviewSessionId === 'string' && opts.reviewSessionId.length > 0 // ① 有 session + tab 活着 → 往现有 TUI 注入再审 if (opts.tabAlive && hasSid) return 'reuse' // ② 有 session + tab 已关 → codex resume 后再注入 if (!opts.tabAlive && hasSid) return 'resume' // ③ tab 活着但无 session → 首次审查进行中,跳过 if (opts.tabAlive) return 'noop' // ④ 无 session、无 tab → 新建完整审查会话 return 'new' }