From 0c3f836682cf8a4ad8f04f2b1a6acfc4472e386e Mon Sep 17 00:00:00 2001 From: mkorwel Date: Tue, 17 Mar 2026 13:36:39 -0700 Subject: [PATCH] fix(offload): run persistent sessions inside the container --- .gemini/skills/offload/scripts/orchestrator.ts | 8 ++++---- .gemini/skills/offload/scripts/status.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gemini/skills/offload/scripts/orchestrator.ts b/.gemini/skills/offload/scripts/orchestrator.ts index 44a376d6dc..6558a93aad 100644 --- a/.gemini/skills/offload/scripts/orchestrator.ts +++ b/.gemini/skills/offload/scripts/orchestrator.ts @@ -70,11 +70,11 @@ export async function runOrchestrator(args: string[], env: NodeJS.ProcessEnv = p // 4. Execution Logic (Persistent Workstation Mode) const remoteWorker = `tsx ${persistentScripts}/entrypoint.ts ${prNumber} remote-branch ${remotePolicyPath} ${action}`; - // We launch a tmux session inside the container - const tmuxCmd = `docker exec -it -w /home/node/dev/worktrees/${sessionName} maintainer-worker sh -c ${q(`${remoteWorker}; exec $SHELL`)}`; - const tmuxAttach = `tmux attach-session -t ${sessionName} 2>/dev/null || tmux new-session -s ${sessionName} -n 'offload' ${q(tmuxCmd)}`; + // We launch a tmux session INSIDE the container for persistence and tool access + const tmuxCmd = `cd /home/node/dev/worktrees/${sessionName} && ${remoteWorker}; exec $SHELL`; + const containerTmux = `docker exec -it maintainer-worker sh -c ${q(`tmux attach-session -t ${sessionName} 2>/dev/null || tmux new-session -s ${sessionName} -n 'offload' ${q(tmuxCmd)}`)}`; - const finalSSH = provider.getRunCommand(tmuxAttach, { interactive: true }); + const finalSSH = provider.getRunCommand(containerTmux, { interactive: true }); const isWithinGemini = !!env.GEMINI_CLI || !!env.GEMINI_SESSION_ID || !!env.GCLI_SESSION_ID; const terminalTarget = config.terminalTarget || 'tab'; diff --git a/.gemini/skills/offload/scripts/status.ts b/.gemini/skills/offload/scripts/status.ts index 4e64689b96..17437dc96b 100644 --- a/.gemini/skills/offload/scripts/status.ts +++ b/.gemini/skills/offload/scripts/status.ts @@ -37,8 +37,8 @@ async function runStatus(env: NodeJS.ProcessEnv = process.env) { if (status.status === 'RUNNING') { console.log(`\n🧵 Active Sessions (tmux):`); - // We fetch the list of sessions from the host - const tmuxRes = await provider.getExecOutput('tmux list-sessions -F "#S" 2>/dev/null'); + // We fetch the list of sessions from INSIDE the container + const tmuxRes = await provider.getExecOutput('tmux list-sessions -F "#S" 2>/dev/null', { wrapContainer: 'maintainer-worker' }); if (tmuxRes.status === 0 && tmuxRes.stdout.trim()) { const sessions = tmuxRes.stdout.trim().split('\n');