Skip to content

Add the visual WebMCP Workbench - #14

Open
TueJon wants to merge 2 commits into
mainfrom
feature/webmcp-workbench
Open

Add the visual WebMCP Workbench#14
TueJon wants to merge 2 commits into
mainfrom
feature/webmcp-workbench

Conversation

@TueJon

@TueJon TueJon commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • add an optional, development-only Shadow DOM Workbench that agents launch without changing the target project
  • compare approved manifest tools with live imperative and declarative registrations
  • provide schema-driven arguments, valid and invalid example presets, structured results, bounded session history, and confirmation for every non-read-only call
  • distinguish Native from Simulated evidence explicitly so portable previews never count as browser verification
  • support responsive desktop, tablet, and phone layouts, keyboard use, reduced motion, dark mode, strict CSP, and Trusted Types
  • provision a pinned Playwright runtime outside the target project when needed and clean up the temporary browser session on exit

Verification

  • npm run check — 40/40 passing
  • node tests/workbench-browser.mjs chromium firefox — desktop, tablet, 360px, dark/light, reduced-motion, simulated transport, native-shaped transport, lifecycle, contrast, focus, overflow, strict CSP, and Trusted Types passing
  • headed launcher smoke under Xvfb passing
  • WebKit downloaded, but no runtime result is claimed because VD-FW lacks its required GTK/GStreamer host libraries

Safety

The Workbench is never wired into a production entry or bundle. Simulated calls are visibly labeled and cannot change a manifest tool to verified.

@TueJon TueJon added enhancement New feature or request webmcp WebMCP agent surface labels Sep 6, 2026
@TueJon TueJon self-assigned this Sep 6, 2026

@TueJon TueJon left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

P1 — skills/webmcpify/templates/webmcp-workbench.js:108normalizeExpected() accepts every manifest entry with an id, while the launcher passes the complete manifest.tools array. As a result, discovered (not yet approved) and terminal rejected tools are displayed as “Expected”/“Observed + expected”; if one is still registered, the Workbench also enables it and permits execution. That crosses the repository's manifest gate: rejected tools are explicitly excluded from every later phase, and this mode promises approved/integrated tools as Expected evidence. A manifest containing {id: "denied", status: "rejected"} is enough to reproduce the false Expected row.

Closure checklist:

  • Filter launcher-provided manifest tools to entries that passed the gate; exclude at least discovered and rejected.
  • Apply the same status boundary when the template receives a manifest object directly, while preserving the documented explicit expectedTools subset API.
  • Add coverage proving rejected/discovered entries never appear as Expected or executable, including when a same-name live registration exists.

@TueJon
TueJon marked this pull request as draft September 8, 2026 05:38
@TueJon

TueJon commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

Der blockierende Befund ist in ac46760 vollständig geschlossen.

  • Der Launcher übergibt jetzt das Manifestobjekt, statt ungefiltert alle manifest.tools als explizite Expected-Teilmenge zu markieren.
  • Manifestobjekte akzeptieren nur approved, integrated, verified und failed; discovered, rejected, skipped sowie statuslose Einträge sind weder Expected noch über die Workbench ausführbar.
  • Die dokumentierte explizite expectedTools-Teilmenge bleibt caller-owned und kompatibel.
  • Regressionen decken die Statusgrenze sowie einen gleichnamigen live registrierten, abgelehnten Tool-Eintrag ab: sichtbar als ausgeschlossen, ohne Expected-Vertrag und mit deaktivierter Ausführung.

Verifikation: npm test 41/41; Chromium und Firefox auf Desktop, Tablet und Phone; Manifest-Gate in beiden Engines; zusätzlich Chromium Native-Transport sowie Strict CSP/Trusted Types grün.

@TueJon
TueJon marked this pull request as ready for review September 8, 2026 05:38

@TueJon TueJon left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

No blocking findings. The prior manifest-gate checklist is closed: launcher manifests now use the status-aware path, non-approved entries cannot become Expected evidence, and same-name excluded live registrations are visibly gated and cannot execute; the explicit expectedTools subset API remains intact.

Verified with npm run check (41 tests), the Chromium and Firefox browser suites, and the green current-head CI check. WebKit could not launch locally because its host libraries are unavailable.

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

Labels

enhancement New feature or request webmcp WebMCP agent surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant