fix: increase delays in spawn prompt submission to ensure Enter is processed

Fixes issue where spawned sessions would send the prompt text but the Enter
keystroke would not be submitted, requiring manual Enter press.

Changes:
- Increase delay after paste-buffer from 300ms to 1000ms in tmux.ts sendKeys()
  to ensure tmux processes the paste before receiving Enter keystroke
- Add 100ms delay after Escape key to ensure it's processed before pasting
- Increase spawn wait time from 1s to 2s before sending initial prompt to
  allow Claude to fully initialize (permission prompts, startup, etc.)

These longer delays account for:
1. tmux paste buffer processing time
2. Claude permission prompt interactions
3. Agent initialization and readiness

Closes: FIX-SPAWN-PROMPT-SUBMIT
This commit is contained in:
Prateek 2026-02-16 06:17:05 +05:30
parent a6866458ec
commit a8ccdc44f3
2 changed files with 9 additions and 3 deletions

View File

@ -221,7 +221,9 @@ async function spawnSession(
});
if (composedPrompt) {
await new Promise((resolve) => setTimeout(resolve, 1000));
// Wait for agent to be fully ready (permission prompts, initialization, etc.)
// Longer delay ensures Claude is ready to receive input before sending prompt
await new Promise((resolve) => setTimeout(resolve, 2000));
await tmuxSendKeys(sessionName, composedPrompt);
}

View File

@ -129,6 +129,8 @@ export async function sendKeys(
): Promise<void> {
// Clear any partial input first (matches bash reference scripts)
await tmux("send-keys", "-t", sessionName, "Escape");
// Small delay to ensure Escape is processed before pasting
await new Promise((resolve) => setTimeout(resolve, 100));
if (text.includes("\n") || text.length > 200) {
// Use a named buffer to avoid global paste buffer race conditions
@ -158,9 +160,11 @@ export async function sendKeys(
}
if (pressEnter) {
// Small delay for paste to complete before sending Enter
// Delay for paste to complete before sending Enter
// Higher delay needed when using paste-buffer to ensure tmux processes the paste
// before receiving the Enter keystroke (especially with Claude permission prompts)
if (text.includes("\n") || text.length > 200) {
await new Promise((resolve) => setTimeout(resolve, 300));
await new Promise((resolve) => setTimeout(resolve, 1000));
}
await tmux("send-keys", "-t", sessionName, "Enter");
}