Skip to content

Dashboard: action-form widget — buttons and forms that dispatch the agent #101821

Description

@100yenadmin

Widgets that act: a button or form the agent scaffolds for you — click it, and it dispatches a parameterized prompt back to the agent.

Part of the Modular Dashboard roadmap — see the tracker #101136 (Flagship section). Builds on Wave 1 (#101093; PRs #101094 / #101097 / #101098).

Problem

The dashboard can show everything but the operator still has to walk to chat to do anything. The safe dispatch primitive already exists — the sandbox bridge's sendPrompt shipped in #101098 (capability-gated, operator-confirmed, rate-limited) — but there's no first-party widget that turns "a recurring operation" into a button.

What this adds

How it'd be built

A new builtin via BUILTIN_WIDGET_RENDERERS (ui/src/lib/dashboard/widgets/index.ts) + BUILTIN_KIND_PATTERN (extensions/dashboard/src/schema.ts). Submit routes through the same confirm + rate-limit path as the bridge's sendPrompt (ui/src/components/dashboard-custom-widget.ts wires it today; the builtin host reuses that path) — no new dispatch privilege. Templates are part of the widget's props (operator-visible, schema-validated at write time); field values are typed and length-capped before interpolation, so a form input can't smuggle an arbitrary payload beyond its declared slot.

Security posture

The prompt template is authored into the workspace document (operator-approvable, versioned, provenance-stamped); only the declared fields vary at click time. Dispatch inherits the existing confirmation affordance. This needs an adversarial review before merge (template-injection via field values, cap enforcement) — flagged for it.

References

Flagship — the chat↔dashboard loop, part 2 (acting). Pairs with Living Answers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleMarked as stale due to inactivity

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions