From 0b0c43828433db68a6989b38beb89bac1c8be71a Mon Sep 17 00:00:00 2001 From: Eric Wheeler Date: Wed, 9 Apr 2025 17:25:12 -0700 Subject: [PATCH] fix: standardize terminal integration timeout values Replace hardcoded 3000ms timeout with configurable Terminal.shellIntegrationTimeout in TerminalProcess.ts. This ensures consistent timeout behavior across all terminal integration features and allows users to control both timeouts through a single setting. The error messages are also updated to display the dynamic timeout value, providing clearer feedback when shell integration issues occur. Signed-off-by: Eric Wheeler --- src/integrations/terminal/Terminal.ts | 4 ++++ src/integrations/terminal/TerminalProcess.ts | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/integrations/terminal/Terminal.ts b/src/integrations/terminal/Terminal.ts index 340c3427d1..65c51738b1 100644 --- a/src/integrations/terminal/Terminal.ts +++ b/src/integrations/terminal/Terminal.ts @@ -256,6 +256,10 @@ export class Terminal { Terminal.shellIntegrationTimeout = timeoutMs } + public static getShellIntegrationTimeout(): number { + return Terminal.shellIntegrationTimeout + } + public static compressTerminalOutput(input: string, lineLimit: number): string { return truncateOutput(applyRunLengthEncoding(input), lineLimit) } diff --git a/src/integrations/terminal/TerminalProcess.ts b/src/integrations/terminal/TerminalProcess.ts index 21d6557715..cd54ed1ecb 100644 --- a/src/integrations/terminal/TerminalProcess.ts +++ b/src/integrations/terminal/TerminalProcess.ts @@ -254,12 +254,16 @@ export class TerminalProcess extends EventEmitter { // Emit no_shell_integration event with descriptive message this.emit( "no_shell_integration", - "VSCE shell integration stream did not start within 3 seconds. Terminal problem?", + `VSCE shell integration stream did not start within ${Terminal.getShellIntegrationTimeout() / 1000} seconds. Terminal problem?`, ) // Reject with descriptive error - reject(new Error("VSCE shell integration stream did not start within 3 seconds.")) - }, 3000) + reject( + new Error( + `VSCE shell integration stream did not start within ${Terminal.getShellIntegrationTimeout() / 1000} seconds.`, + ), + ) + }, Terminal.getShellIntegrationTimeout()) // Clean up timeout if stream becomes available this.once("stream_available", (stream: AsyncIterable) => {