feat(events): publish host family capability states - #173
Conversation
Bind every G10 family to pinned host evidence and fail source validation when an event route selects an unavailable target.
🦋 Changeset detectedLatest commit: 37c797f The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 37c797fc5e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| intersectCapabilityStates( | ||
| claudeAdapter.capabilities[capability]!, | ||
| codexAdapter.capabilities[capability]!, | ||
| ), |
There was a problem hiding this comment.
Include Cursor in plugin event capability intersection
When a common event route targets the unified plugin adapter, validation treats this Claude/Codex-only intersection as the bundle's complete capability state even though plan also emits Cursor manifests and hook artifacts. The resulting supported evidence already omits the pinned Cursor contract, and a future degraded or unavailable Cursor event would still leave plugin marked supported, allowing an unsupported route through validation. Intersect the Cursor capability as well.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed by #221 (merged as 49281f1). Verified still present on post-#194 main before fixing: compositeEventCapabilities intersected Claude ∩ Codex only. The composite now intersects all three pinned host tables per event family (failing closed at module init if any host table is missing a route key another declares), and the scalar rows the bundle emits for all three hosts — marketplace, hooks, mcp, skills, commands, rules — intersect Cursor as well. Per-host states are preserved through the existing merge semantics (merged evidence targets like claude+codex+cursor, deduped sorted reasons). The plugin metadata fingerprint was also extended to cover all three host pins so a Cursor-only table correction changes the manifest identity.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…osite intersection - Flip workspace/open to unavailable on Cursor: the native workspaceOpen hook fires outside an agent session and must return pluginPaths, an envelope the generated session-scoped wrapper vocabulary cannot express (#189). - Mark Cursor marketplace supported: pin the official marketplace.schema.json from cursor/plugins@0701892 and emit a schema-validated .cursor-plugin/marketplace.json from the cursor target and the bundle (#189). - Intersect Cursor into the plugin composite event and scalar capabilities so the bundle's states reflect every host it emits for (#173 review thread).
…osite intersection - Flip workspace/open to unavailable on Cursor: the native workspaceOpen hook fires outside an agent session and must return pluginPaths, an envelope the generated session-scoped wrapper vocabulary cannot express (#189). - Mark Cursor marketplace supported: pin the official marketplace.schema.json from cursor/plugins@0701892 and emit a schema-validated .cursor-plugin/marketplace.json from the cursor target and the bundle (#189). - Intersect Cursor into the plugin composite event and scalar capabilities so the bundle's states reflect every host it emits for (#173 review thread).
…osite intersection (#221) - Flip workspace/open to unavailable on Cursor: the native workspaceOpen hook fires outside an agent session and must return pluginPaths, an envelope the generated session-scoped wrapper vocabulary cannot express (#189). - Mark Cursor marketplace supported: pin the official marketplace.schema.json from cursor/plugins@0701892 and emit a schema-validated .cursor-plugin/marketplace.json from the cursor target and the bundle (#189). - Intersect Cursor into the plugin composite event and scalar capabilities so the bundle's states reflect every host it emits for (#173 review thread).
Summary
subagentStart,subagentStop, andworkspaceOpento its checked-in schema/reference evidenceconfig.targetsrestricts themEvidence table additions
subagentStart)subagentStop)workspaceOpen)Test plan
pnpm typecheckpnpm lintCloses part of #97