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..dd968a3e91 100644 --- a/Extension/src/SSH/sshCommandRunner.ts +++ b/Extension/src/SSH/sshCommandRunner.ts @@ -343,9 +343,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 +353,7 @@ export function runInteractiveSshTerminalCommand(args: ITerminalCommandArgs): Pr return; } - stdout += dataWrite.data; + stdout += data; if (interactors) { for (const interactor of interactors) { @@ -436,13 +436,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);