This commit implements full support for MCP Apps as specified in the Model Context Protocol:
https://modelcontextprotocol.io/docs/extensions/apps
Changes include:
Core Infrastructure:
- Add MCPToolUIMetadata, MCPAppResourceContent types to core/index.d.ts
- Extend Tool and ToolCallState interfaces to include MCP App UI metadata
- Create MCPAppsResource module for fetching UI resources from MCP servers
- Add protocol messages for MCP App communication (fetch UI, call tools, etc.)
- Update tool loading in doLoadConfig to detect and preserve UI metadata
GUI Components:
- Create MCPAppIframe component for rendering MCP Apps in sandboxed iframes
- Implement bidirectional postMessage communication with security controls
- Update ToolCallDiv to detect and render MCP App UIs when available
- Apply Content Security Policy and iframe permissions
Handlers:
- Create MCPAppsHandler for fetching UI resources and proxying tool calls
- Add protocol message handlers for MCP App interactions
Security:
- Sandbox iframes to prevent access to parent DOM, cookies, and storage
- Use postMessage API for all communication
- Enforce Content Security Policy directives
- Control iframe permissions (microphone, camera, etc.)
Documentation:
- Add comprehensive implementation notes in IMPLEMENTATION_NOTES.md
This implementation follows the MCP Apps spec and enables interactive HTML
interfaces from MCP servers to render directly in chat conversations.
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
Co-authored-by: dallin <dallin@continue.dev>
When Windows host connects to WSL remote, getEnvPathFromUserShell() was
returning undefined because it checked only process.platform === "win32".
Add remoteName parameter to getEnvPathFromUserShell() and use the
isWindowsHostWithWslRemote pattern (consistent with resolveCommandForPlatform)
to allow shell PATH detection for WSL remotes.
Fixes#9737
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Fixes#6242, #7810
When Windows VS Code connects to WSL, workspace files are accessed via
vscode-remote:// URIs. Previously, getAllDotContinueDefinitionFiles()
correctly read content via ide.readFile(), but loadYaml.ts discarded
the content and passed only the URI path to RegistryClient, which then
tried to re-read using fs.readFileSync() - failing for remote URIs.
Changes:
- Add optional content field to FileIdentifier (non-breaking)
- RegistryClient.getContent() returns pre-read content when present
- loadYaml.ts passes content along with file identifiers
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Replace generic examples with specific default agents: Code Security Review,
Improve Test Coverage, Update AGENTS.md, and Draft Changelog Update.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove the in-repo changelog page and instead link to the external
changelog site. Adds a redirect from /changelog to the external URL.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update ToolPoliciesGroup to display enabled/total count
- Badge shows 'x/y' when some tools are excluded
- Badge shows 'x' when all tools are enabled (x === y)
- Changed badge min-width to accommodate longer text
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
Co-authored-by: dallin <dallin@continue.dev>
When Windows host connects to WSL remote, getEnvPathFromUserShell() was
returning undefined because it checked only process.platform === "win32".
Add remoteName parameter to getEnvPathFromUserShell() and use the
isWindowsHostWithWslRemote pattern (consistent with resolveCommandForPlatform)
to allow shell PATH detection for WSL remotes.
Fixes#9737
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The @vscode/ripgrep package requires authentication when downloading from
GitHub's API to avoid rate limiting (403 errors). This was causing flaky
test failures in vscode-e2e-tests.
Added github_token input to the run-vscode-e2e-test action and pass
CI_GITHUB_TOKEN to the e2e tests in pr-checks.yaml.
Generated with Continue
Co-Authored-By: Continue <noreply@continue.dev>
Co-authored-by: isabensusan <isabensusan@gmail.com>