Skip to content

feat: update VS Code host profile to 1.130#3380

Open
ignaciojimenezr wants to merge 9 commits into
mainfrom
agent/update-vscode-1-130-host-profile
Open

feat: update VS Code host profile to 1.130#3380
ignaciojimenezr wants to merge 9 commits into
mainfrom
agent/update-vscode-1-130-host-profile

Conversation

@ignaciojimenezr

@ignaciojimenezr ignaciojimenezr commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Summary by cubic

Updates the VS Code host profile to 1.130 with inline-only MCP Apps, a typed updateModelContext (no text), captured light/dark theme colors, and persisted webview sandbox settings. Adds a light/dark toggle and a responsive header (dynamic width) to the public CanIUse page, and syncs catalog/templates (Copilot 1.0.1 evidence + OpenAI Apps overrides; ChatGPT capability fixes) while keeping unprobed VS Code behavior at emulator defaults.

  • New Features

    • VS Code 1.130 style/seed: inline-only Apps; exact typed updateModelContext; downloadFile on; message off; serverTools/serverResources listChanged: true; protocol "2025-11-25"; client capabilities include roots, sampling, tasks, and elicitation URL; persisted webview sandbox (sandboxAttrs, iframe allowFeatures, CSP mode "declared"); theme variables resolve to captured light/dark colors.
    • Catalog/templates: Copilot 1.0.1 profile with structured compatibilityEvidence and explicit openaiAppsOverrides; ChatGPT corrected to serverResources/logging on and downloadFile off; refreshed protocol versions and timestamps.
    • Inspector (public): light/dark theme toggle and responsive header layout (dynamic width) on the host comparison page.
  • Refactors

    • buildHostCapabilities supports a replacement map; HostMcpProfile.hostCapabilitiesReplacement preserves exact host shapes (used for VS Code’s typed updateModelContext); introduced MCP_APPS_VSCODE in @mcpjam/sdk/host-compat.
    • Kept VS Code CSP resource-declared; removed an unused VS Code style export; reverted an unrelated MCP app bundle change.

Written for commit 2d1c800. Summary will update on new commits.

Review in cubic

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@dosubot dosubot Bot added size:XL This PR changes 500-999 lines, ignoring generated files. enhancement New feature or request labels Jul 23, 2026
@chelojimenez

chelojimenez commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Internal preview

Preview URL: https://mcp-inspector-pr-3380.up.railway.app
Deployed commit: c655d9d
PR head commit: 2d1c800
Backend target: staging fallback.
Health: ✅ Convex reachable
Access is employee-only in non-production environments.

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Updates VS Code MCP Apps capabilities to match a VS Code 1.130.0 probe, including display modes, capability flags, host capability shapes, and widget request behavior. Adds host capability replacement support to style resolution and applies it to the VS Code built-in style. Refreshes the VS Code host template with client capabilities, host context styling, sandbox configuration, MCP profile metadata, and app overrides. Adds compatibility evidence schemas and catalog types, updates ChatGPT and Copilot seed data, and expands related tests.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
sdk/src/host-config/templates/seed-host-template.ts (1)

1780-1799: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

mcpAppsOverrides duplicates MCP_APPS_VSCODE field-for-field.

Both live in the sdk package; this literal is a verbatim, static copy of MCP_APPS_VSCODE from sdk/src/host-compat/capabilities.ts. If the probe capture is ever refreshed there, this seed silently drifts unless someone remembers to update it in lockstep.

♻️ Proposed fix: derive from the shared constant
-          mcpAppsOverrides: {
-            availableDisplayModes: ["inline"],
-            toolInputPartial: false,
-            toolCancelled: false,
-            hostContextChanged: true,
-            resourceTeardown: false,
-            toolInfo: false,
-            openLinks: true,
-            serverTools: true,
-            serverResources: true,
-            logging: true,
-            updateModelContext: true,
-            message: false,
-            sandboxPermissions: true,
-            cspFrameDomains: false,
-            cspBaseUriDomains: false,
-            resourcePrefersBorder: false,
-            downloadFile: true,
-            requestTeardown: false,
-            widgetDisplayModeRequests: "decline",
-          },
+          mcpAppsOverrides: { ...MCP_APPS_VSCODE },

(plus importing MCP_APPS_VSCODE from ../../host-compat/capabilities at the top of the file, adjusted to the actual relative path.)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sdk/src/host-config/templates/seed-host-template.ts` around lines 1780 -
1799, Replace the duplicated mcpAppsOverrides literal in the seed host template
with the shared MCP_APPS_VSCODE constant, importing it from the host-compat
capabilities module using the correct relative path. Preserve the existing
template structure while ensuring the generated configuration derives directly
from MCP_APPS_VSCODE.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@sdk/src/host-config/templates/seed-host-template.ts`:
- Around line 1780-1799: Replace the duplicated mcpAppsOverrides literal in the
seed host template with the shared MCP_APPS_VSCODE constant, importing it from
the host-compat capabilities module using the correct relative path. Preserve
the existing template structure while ensuring the generated configuration
derives directly from MCP_APPS_VSCODE.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 176009cc-983f-4e4b-a618-2b2ed8008be2

📥 Commits

Reviewing files that changed from the base of the PR and between a588cd8 and 8b74448.

⛔ Files ignored due to path filters (2)
  • sdk/src/host-compat/catalog.generated.ts is excluded by !**/*.generated.*
  • sdk/tests/__snapshots__/host-config-seed-host-template.test.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (10)
  • mcpjam-inspector/client/src/lib/__tests__/client-config-v2.test.ts
  • mcpjam-inspector/client/src/lib/client-config-v2.ts
  • mcpjam-inspector/client/src/lib/client-styles/__tests__/registry.test.ts
  • mcpjam-inspector/client/src/lib/client-styles/built-ins.ts
  • mcpjam-inspector/client/src/lib/client-styles/index.ts
  • mcpjam-inspector/client/src/lib/client-styles/registry.ts
  • mcpjam-inspector/client/src/lib/client-styles/types.ts
  • sdk/src/host-compat/capabilities.ts
  • sdk/src/host-config/templates/seed-host-template.ts
  • sdk/tests/host-config-seed-host-template.test.ts

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 12 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="mcpjam-inspector/client/src/lib/client-styles/built-ins.ts">

<violation number="1" location="mcpjam-inspector/client/src/lib/client-styles/built-ins.ts:595">
P2: VS Code is advertised as supporting `serverTools.listChanged` and `serverResources.listChanged`, but the inspector renderer does not forward those list-changed notifications. Widgets can therefore take the supported path and retain stale tool/resource lists. The preset would be safer with these sub-capabilities omitted or set to `false` until notification forwarding is implemented, or the renderer should implement the advertised behavior.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment on lines +595 to +596
serverTools: { listChanged: true },
serverResources: { listChanged: true },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: VS Code is advertised as supporting serverTools.listChanged and serverResources.listChanged, but the inspector renderer does not forward those list-changed notifications. Widgets can therefore take the supported path and retain stale tool/resource lists. The preset would be safer with these sub-capabilities omitted or set to false until notification forwarding is implemented, or the renderer should implement the advertised behavior.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At mcpjam-inspector/client/src/lib/client-styles/built-ins.ts, line 595:

<comment>VS Code is advertised as supporting `serverTools.listChanged` and `serverResources.listChanged`, but the inspector renderer does not forward those list-changed notifications. Widgets can therefore take the supported path and retain stale tool/resource lists. The preset would be safer with these sub-capabilities omitted or set to `false` until notification forwarding is implemented, or the renderer should implement the advertised behavior.</comment>

<file context>
@@ -578,41 +579,32 @@ export const CODEX_HOST_STYLE: HostStyleDefinition = {
     hostCapabilitiesAugment: {
-      serverTools: { listChanged: false },
-      serverResources: { listChanged: false },
+      serverTools: { listChanged: true },
+      serverResources: { listChanged: true },
+    },
</file context>
Suggested change
serverTools: { listChanged: true },
serverResources: { listChanged: true },
serverTools: { listChanged: false },
serverResources: { listChanged: false },

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 10 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="sdk/src/host-compat/catalog-schema.ts">

<violation number="1" location="sdk/src/host-compat/catalog-schema.ts:130">
P3: Several required string fields in `hostCompatibilityEvidenceSchema.deployment` use bare `z.string()` while sibling fields use `.min(1)` to reject empty strings. An empty version label, discovery mode, redirect URI, or surface name is not meaningful and inconsistent validation creates future confusion about the expected contract. Consider adding `.min(1)` to `widgetHostPattern`, `minimumAgentsToolkitVersion`, `defaultToolDiscovery`, `surface`, and `uri` for consistency with `profileLabel` and `sourceUrl`.</violation>
</file>

<file name="sdk/src/host-config/templates/seed-host-template.ts">

<violation number="1" location="sdk/src/host-config/templates/seed-host-template.ts:1772">
P2: Widgets will exercise lifecycle, resource-metadata, teardown, and display-mode paths that have not been verified for VS Code. Keep these capabilities disabled (or omit the overrides) until a probe establishes them, rather than treating emulator defaults as host evidence.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

// The handshake probe did not exercise lifecycle, display-request,
// or resource-metadata behavior, so retain the existing emulator
// defaults for those dimensions.
toolInputPartial: true,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Widgets will exercise lifecycle, resource-metadata, teardown, and display-mode paths that have not been verified for VS Code. Keep these capabilities disabled (or omit the overrides) until a probe establishes them, rather than treating emulator defaults as host evidence.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At sdk/src/host-config/templates/seed-host-template.ts, line 1772:

<comment>Widgets will exercise lifecycle, resource-metadata, teardown, and display-mode paths that have not been verified for VS Code. Keep these capabilities disabled (or omit the overrides) until a probe establishes them, rather than treating emulator defaults as host evidence.</comment>

<file context>
@@ -1749,10 +1766,13 @@ export const HOST_TEMPLATES: readonly HostTemplate[] = [
+            // The handshake probe did not exercise lifecycle, display-request,
+            // or resource-metadata behavior, so retain the existing emulator
+            // defaults for those dimensions.
+            toolInputPartial: true,
+            toolCancelled: true,
             hostContextChanged: true,
</file context>

uri: z.string(),
})
),
minimumAgentsToolkitVersion: z.string(),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Several required string fields in hostCompatibilityEvidenceSchema.deployment use bare z.string() while sibling fields use .min(1) to reject empty strings. An empty version label, discovery mode, redirect URI, or surface name is not meaningful and inconsistent validation creates future confusion about the expected contract. Consider adding .min(1) to widgetHostPattern, minimumAgentsToolkitVersion, defaultToolDiscovery, surface, and uri for consistency with profileLabel and sourceUrl.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At sdk/src/host-compat/catalog-schema.ts, line 130:

<comment>Several required string fields in `hostCompatibilityEvidenceSchema.deployment` use bare `z.string()` while sibling fields use `.min(1)` to reject empty strings. An empty version label, discovery mode, redirect URI, or surface name is not meaningful and inconsistent validation creates future confusion about the expected contract. Consider adding `.min(1)` to `widgetHostPattern`, `minimumAgentsToolkitVersion`, `defaultToolDiscovery`, `surface`, and `uri` for consistency with `profileLabel` and `sourceUrl`.</comment>

<file context>
@@ -88,6 +88,51 @@ const hostImageSupportSchema = z.object({
+        uri: z.string(),
+      })
+    ),
+    minimumAgentsToolkitVersion: z.string(),
+    defaultToolDiscovery: z.string(),
+    notes: z.array(z.string()),
</file context>

@dosubot dosubot Bot removed the size:XL This PR changes 500-999 lines, ignoring generated files. label Jul 24, 2026
@dosubot dosubot Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Jul 24, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 10 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread sdk/src/host-config/templates/seed-host-template.ts Outdated
@github-actions

Copy link
Copy Markdown
Contributor

MCP worker preview

Preview URL: https://mcpjam-mcp-pr-3380.marcelo-1cb.workers.dev
MCP endpoint: https://mcpjam-mcp-pr-3380.marcelo-1cb.workers.dev/mcp
Built from ea3d10b. Each push overwrites the mcpjam-mcp-pr-3380 worker, so the URL is stable for the life of the PR.
The live mcpjam-mcp-staging worker only changes on merge to main. This preview worker is deleted when the PR is closed.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 4 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="mcpjam-inspector/client/src/components/hosts/comparison/HostConfigCompareView.tsx">

<violation number="1" location="mcpjam-inspector/client/src/components/hosts/comparison/HostConfigCompareView.tsx:617">
P3: At narrow mobile widths, the new Theme action is clipped from the public action row because all four labeled buttons are forced onto one non-wrapping flex line. Let this action row wrap (or compact labels/icons at small widths) so every action remains reachable.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

searchQuery={fieldSearchQuery}
fields={compareFields}
/>
<ThemeToggleButton />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: At narrow mobile widths, the new Theme action is clipped from the public action row because all four labeled buttons are forced onto one non-wrapping flex line. Let this action row wrap (or compact labels/icons at small widths) so every action remains reachable.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At mcpjam-inspector/client/src/components/hosts/comparison/HostConfigCompareView.tsx, line 617:

<comment>At narrow mobile widths, the new Theme action is clipped from the public action row because all four labeled buttons are forced onto one non-wrapping flex line. Let this action row wrap (or compact labels/icons at small widths) so every action remains reachable.</comment>

<file context>
@@ -603,6 +614,7 @@ export function HostConfigCompareView({
                       searchQuery={fieldSearchQuery}
                       fields={compareFields}
                     />
+                    <ThemeToggleButton />
                   </div>
                 ) : undefined
</file context>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants