feat: add session resume capability via 'codex resume' command

close #51
This commit is contained in:
weishu
2026-01-13 12:29:30 +08:00
parent b5e90f1f50
commit 75de3cd1cb
3 changed files with 14 additions and 1 deletions
+2 -1
View File
@@ -26,6 +26,7 @@ interface LoopOptions {
codexArgs?: string[];
codexCliOverrides?: CodexCliOverrides;
permissionMode?: PermissionMode;
resumeSessionId?: string;
onSessionReady?: (session: CodexSession) => void;
}
@@ -37,7 +38,7 @@ export async function loop(opts: LoopOptions): Promise<void> {
api: opts.api,
client: opts.session,
path: opts.path,
sessionId: null,
sessionId: opts.resumeSessionId ?? null,
logPath,
messageQueue: opts.messageQueue,
onModeChange: opts.onModeChange,
+2
View File
@@ -17,6 +17,7 @@ export async function runCodex(opts: {
startedBy?: 'daemon' | 'terminal';
codexArgs?: string[];
permissionMode?: PermissionMode;
resumeSessionId?: string;
}): Promise<void> {
const workingDirectory = process.cwd();
const startedBy = opts.startedBy ?? 'terminal';
@@ -116,6 +117,7 @@ export async function runCodex(opts: {
codexCliOverrides,
startedBy,
permissionMode: currentPermissionMode,
resumeSessionId: opts.resumeSessionId,
onModeChange: createModeChangeHandler(session),
onSessionReady: (instance) => {
sessionWrapperRef.current = instance;
+10
View File
@@ -16,11 +16,21 @@ export const codexCommand: CommandDefinition = {
startedBy?: 'daemon' | 'terminal'
codexArgs?: string[]
permissionMode?: CodexPermissionMode
resumeSessionId?: string
} = {}
const unknownArgs: string[] = []
for (let i = 0; i < commandArgs.length; i++) {
const arg = commandArgs[i]
if (i === 0 && arg === 'resume') {
const candidate = commandArgs[i + 1]
if (!candidate || candidate.startsWith('-')) {
throw new Error('resume requires a session id')
}
options.resumeSessionId = candidate
i += 1
continue
}
if (arg === '--started-by') {
options.startedBy = commandArgs[++i] as 'daemon' | 'terminal'
} else if (arg === '--yolo' || arg === '--dangerously-bypass-approvals-and-sandbox') {