mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
feat: add session resume capability via 'codex resume' command
close #51
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user