fix: increase delays in spawn prompt submission to ensure Enter is processed (#62)

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 20:31:07 +05:30 committed by GitHub
parent cd9003a7db
commit dbeb8d9fb2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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");
}