Skip to content

Build: vscode-reh-web-linux-x64-min throws Mangler and esbuild pipeline errors #328113

Description

@caseyflynn-google

Does this issue occur when all extensions are disabled?: Yes

  • VS Code Version: 1.131.0
  • OS Version: Ubuntu 2404

Description

When attempting to run the minified Remote Extension Host build (vscode-reh-web-linux-x64-min) against HEAD, the build pipeline crashes.

Steps to Reproduce

  1. Clone at head and run npm install
  2. Attempt to build the minified Remote Host Distribution with npm run gulp vscode-reh-web-linux-x64-min

Root Cause

There are two separate failures that are surfaced during the build:

1. The TS Compiler crashes during the Mangler phase (34 Errors)

Recent feature merges (XaaAuthProvider, ClaudeAgent, runInTerminalConfirmationTool) use coding patterns that conflict with the property-mangler's boundaries (Mixin inheritance, string-index access on private variables, and dynamic import destructing, respectively).

Error Output:

[13:02:46] src/vs/platform/agentHost/test/node/claudeAgent.test.ts(3687,19): Element implicitly has an 'any' type because expression of type
          '"_sessions"' can't be used to index type '$Pfd'.
[13:02:48] src/vs/workbench/api/common/extHostXaaAuthProvider.ts(83,21): Property 'a' in type 'XaaAuthenticationProvider' is not assignable to the same property in base type '$Cvd'.

2. esbuild fails the Unicode optimizer checks

The outputMonitor.ts file recently introduced naked non-ASCII terminal prompt characters into a RegExp literal, which triggers a fatal assertion in build/lib/optimize.ts

Error Output:

 [13:52:38] Error: Found non-ascii character ›❯▸▶ in the minified output of out-vscode-reh-web/.../workbench.js. 
  Non-ASCII characters in the output can cause performance problems when loading. Please review if you have introduced a regular expression that esbuild is not automatically converting and convert it to using unicode escape sequences.

Proposed Fix

We have fixed these breakages locally by introducing the following 6 small, localized patches to bypass the mangler logic constraints and esbuild checks:

  1. Dynamic Imports: Added /** @skipMangle */ to ConfirmTerminalCommandTool and ScriptedMockAgent
  2. String Indexing: Cast the test instances to .agent as any before performing the string-index lookups (_sessions, _keybindingService) in claudeAgent.test.ts and terminalInstance.test.ts.
  3. Mixin Inheritance: Converted the private internal state on the Mixin XaaAuthenticationProvider to public to bypass property mangling collisions.
  4. Unicode Strings: Translated the raw terminal chevron characters [›❯▸▶] to their unicode escape-sequences [\u203A\u276F\u25B8\u25B6] in outputMonitor.ts.

Metadata

Metadata

Assignees

Labels

new releaseIssues found in a recent release of VS Code

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions