diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index a9f73f0..ebfef5f 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -8,7 +8,7 @@ "name": "webmcpify", "source": "./", "description": "WebMCP agent skill for curated core coverage or route-by-route parity — inventory an existing web app, integrate approved tools, then verify and heal them in a real browser.", - "version": "0.7.0" + "version": "0.7.1" } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 9726a4c..ce98499 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "webmcpify", "description": "WebMCP agent skill for curated core coverage or route-by-route parity — inventory an existing web app, integrate approved tools, then verify and heal them in a real browser.", - "version": "0.7.0", + "version": "0.7.1", "author": { "name": "Jonas Tüchler" } diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 9726a4c..ce98499 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "webmcpify", "description": "WebMCP agent skill for curated core coverage or route-by-route parity — inventory an existing web app, integrate approved tools, then verify and heal them in a real browser.", - "version": "0.7.0", + "version": "0.7.1", "author": { "name": "Jonas Tüchler" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b48159d..a9d9577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ reconstruct them from git history. ## [Unreleased] +## [0.7.1] — 2026-10-12 + - Preserve the original execution callback options and signal through the TS/JS result guards; retain the existing null/undefined guard and single-flight behavior. - Add caller cancellation to the event bridge, including preabort without dispatch, @@ -19,6 +21,10 @@ reconstruct them from git history. of current native Chrome behavior. - Correct the README release callout to describe v0.7.0's existing mutation journal. +- Refresh dated source boundaries: imperative API remains a CG draft, declarative + forms are Chrome experimental implementation / separate exploration after upstream + PR #338, and current Site tools model/workspace guidance is dated 2026-10-12. + ## [0.7.0] — 2026-09-19 - Added a dependency-free host-side mutation journal for verification runners. @@ -125,4 +131,5 @@ reconstruct them from git history. [0.6.0]: https://github.com/TueJon/webmcpify/compare/v0.5.1...v0.6.0 [0.6.1]: https://github.com/TueJon/webmcpify/compare/v0.6.0...v0.6.1 [0.7.0]: https://github.com/TueJon/webmcpify/compare/v0.6.1...v0.7.0 -[Unreleased]: https://github.com/TueJon/webmcpify/compare/v0.7.0...HEAD +[0.7.1]: https://github.com/TueJon/webmcpify/compare/v0.7.0...v0.7.1 +[Unreleased]: https://github.com/TueJon/webmcpify/compare/v0.7.1...HEAD diff --git a/README.md b/README.md index 1f65ba4..911037d 100644 --- a/README.md +++ b/README.md @@ -36,10 +36,11 @@ npx skills add TueJon/webmcpify # once ``` > [!TIP] -> **New in [v0.7.0](https://github.com/TueJon/webmcpify/releases/tag/v0.7.0):** -> a host-side mutation journal records dispatch and settlement durably, serializes -> cooperating verification runners with an OS lock, and retains interrupted -> `started` entries for reconciliation. It does not guarantee exactly-once effects. +> **New in [v0.7.1](https://github.com/TueJon/webmcpify/releases/tag/v0.7.1):** +> execution options and cancellation signals reach your handlers unchanged. The +> event bridge supports cooperative cancellation; an aborted call can still have +> unknown effects, so inspect state before retrying. See the +> [dated native compatibility evidence](skills/webmcpify/references/native-compatibility.md). ## How it works diff --git a/gemini-extension.json b/gemini-extension.json index 9726a4c..ce98499 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,7 +1,7 @@ { "name": "webmcpify", "description": "WebMCP agent skill for curated core coverage or route-by-route parity — inventory an existing web app, integrate approved tools, then verify and heal them in a real browser.", - "version": "0.7.0", + "version": "0.7.1", "author": { "name": "Jonas Tüchler" } diff --git a/package-lock.json b/package-lock.json index 0dce18c..482e103 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "webmcpify", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "webmcpify", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "devDependencies": { "@playwright/test": "^1.54.0", diff --git a/package.json b/package.json index 0184cf3..5dae8de 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "WebMCP agent skill for curated core coverage or route-by-route parity — inventory an existing web app, integrate approved tools, then verify and heal them in a real browser.", "type": "module", "license": "MIT", - "version": "0.7.0", + "version": "0.7.1", "publisher": "TueJon", "repository": { "url": "https://github.com/TueJon/webmcpify" diff --git a/release/v0.7.1.md b/release/v0.7.1.md new file mode 100644 index 0000000..aef7849 --- /dev/null +++ b/release/v0.7.1.md @@ -0,0 +1,55 @@ +# webmcpify v0.7.1 + +Execution cancellation now reaches the application's handler through the vendored +runtime. Your tools can stop cooperative asynchronous work while keeping route +registration lifetime separate from an execution already in progress. This patch +packages the compatibility work merged in [pull request #23](https://github.com/TueJon/webmcpify/pull/23). + +## What changed + +- TS and JS result guards preserve the original callback options and execution + signal, alongside the existing absent-result guard and single-flight behavior. +- The event bridge accepts caller cancellation: preaborted calls never dispatch, + cooperating handlers receive the signal, and listeners and timers are cleaned up. +- Ambient types and integration guidance distinguish execution cancellation from + registration disposal, callback values from serialized native results, and dated + Chrome behavior from the evolving draft. +- Workbench imperative simulation now models omitted input, serialized returns + and execution cancellation. JS/transpiled-TS regressions keep both runtimes aligned. + +- Refresh documentation after [upstream PR #338](https://github.com/webmachinelearning/webmcp/pull/338): + the CG draft now focuses on the imperative API; declarative forms remain Chrome + experimental implementation / separate exploration. Site tools guidance also + reflects the official 2026-10-12 model and workspace requirements. + +## Safe cancellation + +Cancellation is cooperative. Pass the execution signal to asynchronous work and +check it before committing state. A handler or server that continues after abort or +timeout can leave an unknown outcome; inspect state through an independent read +path before a manual retry. Tools are never retried automatically. Removing a +registration does not cancel an already-started execution on modern Chrome. +Neither cancellation nor the existing mutation journal guarantees exactly-once effects. + +## Compatibility and evidence — 2026-10-12 + +The [dated native compatibility reference](https://github.com/TueJon/webmcpify/blob/v0.7.1/skills/webmcpify/references/native-compatibility.md) +records a synthetic loopback run on **2026-10-05**, Chrome Beta **156.0.8078.4**, +with WebMCP and WebMCPTesting enabled. Five native probes passed: object input, +callback AbortSignal, caller abort with a cooperative handler suppressing its delayed +side effect, registration abort preserving an already-started invocation, and omitted +input defaulting to `{}`. Successful imperative results arrived as serialized JSON +strings. This does not establish declarative navigation, debugging-annotation or +native WPT conformance, full-agent integration, or behavior in every Chrome version. + +Chrome 149+ is the origin-trial baseline, not proof that every modern feature is +available. The recorded Chrome 150 run lacked callback options and omitted-input +support. The runtime uses a side-effect-free input probe to select object or legacy +JSON-string input before invoking application tools. Feature-detect and verify the +actual browser; consult the [official Chrome imperative guide](https://developer.chrome.com/docs/ai/webmcp/imperative-api). + +Source validation: `npm run check` passes **79 tests** covering runtime parity, +mutation journaling, compatibility adaptation and Workbench simulation. Simulation +and deterministic tests remain separate from native browser evidence. + +Compare: https://github.com/TueJon/webmcpify/compare/v0.7.0...v0.7.1 diff --git a/skill.json b/skill.json index 3f86be6..4443732 100644 --- a/skill.json +++ b/skill.json @@ -1,6 +1,6 @@ { "name": "webmcpify", - "version": "0.7.0", + "version": "0.7.1", "description": "WebMCP agent skill for curated core coverage or route-by-route parity — inventory an existing web app, integrate approved tools, then verify and heal them in a real browser.", "license": "MIT", "author": { @@ -23,7 +23,7 @@ { "id": "webmcpify", "path": "skills/webmcpify/SKILL.md", - "description": "Choose curated core coverage or route-by-route parity, inventory an existing web app, integrate approved WebMCP tools, then verify and heal them in a real browser." + "description": "WebMCP agent skill — choose curated core coverage or route-by-route parity, inventory an existing web app, integrate approved WebMCP tools, then verify and heal them in a real browser." } ], "agents": ["claude-code", "codex", "cursor", "opencode", "copilot", "gemini-cli"], diff --git a/skills/webmcpify/references/client.md b/skills/webmcpify/references/client.md index 1ada8e5..8f6cc1f 100644 --- a/skills/webmcpify/references/client.md +++ b/skills/webmcpify/references/client.md @@ -1,6 +1,6 @@ # ChatGPT client reality — Site tools -Checked 2026-09-14 against the official OpenAI documentation: +Checked 2026-10-12 against the official OpenAI documentation: . Re-check that page before publishing or relying on model/workspace availability; this UI is moving independently of the WebMCP draft and Chrome implementation. @@ -11,11 +11,10 @@ WebMCP draft and Chrome implementation. browser, open **Site tools** in the address bar and then **Available site tools** to inspect the page's registrations. This is the fastest client-side ground truth for the currently open page. -- Site tools are available to ChatGPT Work and Codex with GPT-5.6 Sol or GPT-5.6 - Terra. GPT-5.6 Luna currently has WebMCP disabled. The desktop app must be +- Site tools are available to ChatGPT Work and Codex with GPT-5.6 Sol or GPT-6 Sol. GPT-5.6 Luna currently has WebMCP disabled. The desktop app must be current, and availability still depends on rollout and the current page. -- The official page says Site tools are unavailable in Enterprise and Edu - workspaces. +- Enterprise requires an administrator to allow Site tools through workspace + policy. Site tools remain unavailable in Edu; rollout and page availability vary. - ChatGPT's built-in browser currently implements only a subset of WebMCP: it discovers imperative tools registered with JavaScript in the top-level page, not declarative form tools or tools registered inside iframes. This is a diff --git a/skills/webmcpify/references/discovery.md b/skills/webmcpify/references/discovery.md index 6683038..2242c03 100644 --- a/skills/webmcpify/references/discovery.md +++ b/skills/webmcpify/references/discovery.md @@ -6,18 +6,23 @@ discovery conventions has grown around the spec. This layer is **optional, non-normative, and public** — treat it as a separate deliverable, never as part of a default integration. -## What is standardized and what is not +## Draft, experimental implementation and conventions — checked 2026-10-12 | Surface | Status | Source | |---|---|---| -| `document.modelContext` (imperative) | **Spec** (W3C WebML CG draft, Chrome origin trial) | [webmcp explainer](https://webmachinelearning.github.io/webmcp/) | +| `document.modelContext` (imperative) | **CG draft**, not a finalized standard (Chrome origin trial) | [webmcp explainer](https://webmachinelearning.github.io/webmcp/) | | `navigator.modelContext` | **Deprecated** compatibility surface from the Chrome 149 trial — probe it as a fallback, never target it | same | -| `toolname`, `tooldescription`, `toolautosubmit` on the `
`; `toolparamdescription` on the form **control** (or enclosing `
`) | **Spec** (declarative API explainer, Chrome docs) | [declarative-api-explainer](https://github.com/webmachinelearning/webmcp/blob/main/declarative-api-explainer.md) | -| `toolactivated` / `toolcancel` events, `:tool-form-active` / `:tool-submit-active` | **Spec** | Chrome declarative API docs | +| `toolname`, `tooldescription`, `toolautosubmit` on the ``; `toolparamdescription` on the form **control** (or enclosing `
`) | **Chrome experimental implementation / separate explainer** | [declarative-api-explainer](https://github.com/webmachinelearning/webmcp/blob/main/declarative-api-explainer.md) | +| `toolactivated` / `toolcancel` events, `:tool-form-active` / `:tool-submit-active` | **Chrome experimental implementation / separate explainer** | [Chrome declarative guide](https://developer.chrome.com/docs/ai/webmcp/declarative-api) | | `/.well-known/webmcp` manifest | **Not specified.** Chrome discussed pre-visit discovery; nothing shipped. De-facto convention pushed by third-party checkers/registries | community | | ``, `Link: ; rel="webmcp"` | **Not specified** (RFC 8288 is, the `webmcp` relation is not registered) | community | | `llms.txt`, `AGENTS.md`, robots.txt AI-bot rules | Conventions, widely read | community | +The CG draft focuses on the imperative API: [upstream PR #338](https://github.com/webmachinelearning/webmcp/pull/338), +merged 2026-10-08, removed the declarative section. Declarative forms remain an +experimental Chrome implementation described by its [official guide](https://developer.chrome.com/docs/ai/webmcp/declarative-api) +and the separate explainer; do not call them part of the current CG draft. + Never invent attributes to satisfy a checker (see *Third-party audits* below). ## Rule 0 — record the approval before writing anything diff --git a/skills/webmcpify/references/native-compatibility.md b/skills/webmcpify/references/native-compatibility.md index 93943af..082dea0 100644 --- a/skills/webmcpify/references/native-compatibility.md +++ b/skills/webmcpify/references/native-compatibility.md @@ -1,4 +1,4 @@ -# Native compatibility — checked 2026-10-05 +# Native compatibility — documentation checked 2026-10-12 WebMCP is evolving. These are separate evidence levels; simulation results are not native browser acceptance. @@ -26,6 +26,11 @@ The [Chrome declarative guide](https://developer.chrome.com/docs/ai/webmcp/decla window event handlers are unsupported from Chrome 156. Declarative submission and navigation are not covered by imperative simulation. +As checked 2026-10-12, the CG draft covers the imperative API. [Upstream PR #338](https://github.com/webmachinelearning/webmcp/pull/338), +merged 2026-10-08, removed its declarative section; declarative forms remain an +experimental Chrome implementation with the guide above and a separate explainer. +This documentation update does not extend the dated native evidence below. + ## Accepted native evidence: Chrome 150 Governor report: `/tmp/webmcpify-native-browser-governor-report.md`, run