-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[RFC] Control UI plugin contribution slots #71736
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.
Type
Fields
Priority
None yet
Summary
Add data-driven Control UI contribution slots for plugin chat modes, approval cards, event classifiers, input guards, and status surfaces.
This is proposed SDK surface, not currently implemented API.
Why this matters
Plan Mode should not patch
mode-switcher,app-tool-stream,app-render, chat views, or custom CSS to become visible in the web UI. A first-class plugin needs UI contribution descriptors exposed by the gateway and rendered by safe host-owned components.The same primitive applies to approval workflows, release dashboards, budget warnings, incident banners, memory/context panels, channel auth/delivery cards, review gates, and workspace policy guards.
Current SDK surface
OpenClaw currently has remote/plugin slash command discovery and generic plugin approval request/card rendering. Chat input has host-local connected/busy/send checks, and tool/event rendering is hardcoded around known streams, tool ids, and card unions.
Those surfaces are useful but insufficient: generic plugin approvals cover one card class, but there is no broader
registerControlUiContribution(...)registry for chat modes, input guards, status surfaces, event classifiers, or plugin-owned descriptor projection.Proposed solution
Add a declarative contribution surface such as:
The first version should use safe host-owned components and descriptor schemas, not arbitrary plugin JavaScript in the browser.
Reusable plugin examples
Decisions needed
Acceptance criteria
References
docs/plan/plan-mode-plugin-host-hooks-rfc.md