From 136d8f86f2c163a28723ca9d55280dcd4e553168 Mon Sep 17 00:00:00 2001 From: "Garrett Serack (from Dev Box)" Date: Tue, 13 May 2025 09:16:01 -0700 Subject: [PATCH 1/2] Switch to onDidStartTerminalShellExecution from the obsolete (proposed) API terminalData* events --- Extension/.scripts/common.ts | 1 - Extension/package.json | 3 +-- Extension/src/SSH/commandInteractors.ts | 4 ++-- Extension/src/SSH/sshCommandRunner.ts | 14 ++++++++------ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Extension/.scripts/common.ts b/Extension/.scripts/common.ts index 91adc0e302..615de66cf2 100644 --- a/Extension/.scripts/common.ts +++ b/Extension/.scripts/common.ts @@ -324,7 +324,6 @@ export async function checkCompiled() { export async function checkDTS() { let failing = false; failing = !await assertAnyFile('vscode.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.d.ts is missing.`)) || failing; - failing = !await assertAnyFile('vscode.proposed.terminalDataWriteEvent.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.proposed.terminalDataWriteEvent.d.ts is missing.`)) || failing; failing = !await assertAnyFile('vscode.proposed.lmTools.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.proposed.lmTools.d.ts is missing.`)) || failing; if (!failing) { diff --git a/Extension/package.json b/Extension/package.json index 91b36e5d08..4587700857 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -41,7 +41,6 @@ "Snippets" ], "enabledApiProposals": [ - "terminalDataWriteEvent", "chatParticipantAdditions" ], "capabilities": { @@ -6651,4 +6650,4 @@ "postcss": "^8.4.31", "gulp-typescript/**/glob-parent": "^5.1.2" } -} +} \ No newline at end of file diff --git a/Extension/src/SSH/commandInteractors.ts b/Extension/src/SSH/commandInteractors.ts index 01f4808d16..147279e3e3 100644 --- a/Extension/src/SSH/commandInteractors.ts +++ b/Extension/src/SSH/commandInteractors.ts @@ -372,11 +372,11 @@ export class ComposedInteractor implements IInteractor { export interface ISystemInteractor { createTerminal(options: vscode.TerminalOptions): vscode.Terminal; onDidCloseTerminal: typeof vscode.window.onDidCloseTerminal; - onDidWriteTerminalData: typeof vscode.window.onDidWriteTerminalData; + onDidStartTerminalShellExecution: typeof vscode.window.onDidStartTerminalShellExecution; } export const defaultSystemInteractor: ISystemInteractor = { createTerminal: vscode.window.createTerminal, onDidCloseTerminal: vscode.window.onDidCloseTerminal, - onDidWriteTerminalData: vscode.window.onDidWriteTerminalData + onDidStartTerminalShellExecution: vscode.window.onDidStartTerminalShellExecution }; diff --git a/Extension/src/SSH/sshCommandRunner.ts b/Extension/src/SSH/sshCommandRunner.ts index be60f83db3..11cbf972ae 100644 --- a/Extension/src/SSH/sshCommandRunner.ts +++ b/Extension/src/SSH/sshCommandRunner.ts @@ -265,6 +265,7 @@ export function runInteractiveSshTerminalCommand(args: ITerminalCommandArgs): Pr let continueWithoutExiting: boolean = false; const clean = () => { + if (terminalListener) { terminalListener.dispose(); terminalListener = undefined; @@ -343,9 +344,9 @@ export function runInteractiveSshTerminalCommand(args: ITerminalCommandArgs): Pr } }; - const handleTerminalOutput = async (dataWrite: vscode.TerminalDataWriteEvent): Promise => { + const handleTerminalOutput = async (data: string): Promise => { if (loggingLevel > 0) { - handleOutputLogging(dataWrite.data); + handleOutputLogging(data); } if (continueWithoutExiting) { @@ -353,7 +354,7 @@ export function runInteractiveSshTerminalCommand(args: ITerminalCommandArgs): Pr return; } - stdout += dataWrite.data; + stdout += data; if (interactors) { for (const interactor of interactors) { @@ -436,13 +437,14 @@ export function runInteractiveSshTerminalCommand(args: ITerminalCommandArgs): Pr hideFromUser: true }; - let terminalDataHandlingQueue: Promise = Promise.resolve(); - terminalListener = systemInteractor.onDidWriteTerminalData(async e => { + terminalListener = systemInteractor.onDidStartTerminalShellExecution(async (e) => { if (e.terminal !== terminal) { return; } - terminalDataHandlingQueue = terminalDataHandlingQueue.finally(() => void handleTerminalOutput(e)); + for await (const data of e.execution.read()) { + void handleTerminalOutput(data); + } }); terminal = systemInteractor.createTerminal(options); From 6c526773b0132c6c84bbcf627f5efc3739200b4b Mon Sep 17 00:00:00 2001 From: "Garrett Serack (from Dev Box)" Date: Tue, 13 May 2025 10:15:56 -0700 Subject: [PATCH 2/2] whoops. extra line --- Extension/src/SSH/sshCommandRunner.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/Extension/src/SSH/sshCommandRunner.ts b/Extension/src/SSH/sshCommandRunner.ts index 11cbf972ae..dd968a3e91 100644 --- a/Extension/src/SSH/sshCommandRunner.ts +++ b/Extension/src/SSH/sshCommandRunner.ts @@ -265,7 +265,6 @@ export function runInteractiveSshTerminalCommand(args: ITerminalCommandArgs): Pr let continueWithoutExiting: boolean = false; const clean = () => { - if (terminalListener) { terminalListener.dispose(); terminalListener = undefined;