CodeVetter · Repo Unpack · Feature catalog
microsoft/vscode
User-facing surface is delivered two ways: hard-coded workbench contributions under src/vs/workbench/contrib and src/vs/sessions, and built-in extensions under extensions/. Major features include the Monaco-based editor, files/explorer, search, SCM/git, debugging, integrated terminal, notebooks, tasks, settings/preferences UI, extensions viewlet + marketplace integration, remote development (SSH/containers/tunnels), settings sync, MCP support, and an extensive chat/agent subsystem. The `code` CLI adds tunnel, serve-web, update and agent-management commands.
- The text editor is Monaco: src/vs/editor contains the editor implementation (editor.main.ts entry, language services, diff editor via @vscode/diff dependency) and is a standalone publishable layer with its own tsconfig.monaco.json.
- Debugging support lives in src/vs/workbench/contrib/debug with the debug.contribution.ts barrel, extension-host debug broadcast channel 'extensionhostdebugservice' registered in app.ts, and js-debug shipped as a pinned builtInExtension in product.json.
- The integrated terminal is backed by a dedicated pty-host process: PtyHostService in the renderer talks over the 'localPty' IPC channel to ptyHostMain/PtyService, which spawns shells via terminalProcess.ts; terminal contribs register via terminal.contribution.ts.
- Chat/agent AI features are first-class contribs: src/vs/workbench/contrib/chat contains chat.contribution.ts, agentSessions, agentPlugins, aiCustomization and dozens of browser modules; extension-side integration goes through ExtHostChatAgents2/ExtHostChatSessions registered in the ext-host API factory.
- MCP (Model Context Protocol) is integrated at platform and workbench level: platform/mcp has a native discovery helper service, a McpGatewayService in the main process exposed via McpGatewayChannel, a workbench management service, and mcpServerDefinitionProviders is a declared extension point.
- SCM and Git support: the workbench provides the generic SCM contrib while git is a built-in extension (extensions/git) together with git-base, github, and github-authentication for the GitHub auth provider.
- Remote development is a core feature: IRemoteAuthorityResolverService.resolveAuthority drives connections to vscode-remote authorities, RemoteFileSystemProviderClient mounts remote files, and the Rust CLI implements `code tunnel` (dev tunnels via @microsoft/dev-tunnels-* SDKs also used in cli/src/tunnels/dev_tunnels.rs).
- Settings Sync ships in the OSS build: UserDataSyncService/UserDataAutoSyncService/UserDataSyncStoreService are registered as eager/delayed singletons in workbench.web.main.ts.
- Extension management UI + engine: contrib/extensions provides the viewlet while IWorkbenchExtensionManagementService (ExtensionManagementService) handles install/uninstall against the gallery manifest service; webExtensionsScannerService handles web extensions.
- The `code` CLI exposes user-facing commands: opening folders/files, --install-extension/--uninstall-extension via cliProcessMain.ts in the node CLI entry, `code tunnel`/`tunnel service`/`tunnel rename`/`tunnel forward`, `serve-web`, `update`, `version`, and agent management subcommands.
- Notebooks are a built-in workbench feature (contrib/notebook) plus renderer extensions (extensions/notebook-renderers, extensions/ipynb) with ExtHostNotebook* RPC actors bridging kernels and renderers.
- Webviews are a sandboxed feature surface: vscode-webview is registered as a privileged scheme in main.ts and WebviewMainService in the main process manages embedding, while extHostWebviews/extHostWebviewPanels expose the API to extensions.
- A dedicated agent-sessions workbench ('sessions') exists as an alternate window/workbench target for agentic workflows, with its own main barrels and docs (SESSIONS.md, SESSIONS_LIST.md, AUTOMATIONS.md).