Skip to content

feat(agents): managed-agent control UI — delegate, approve/deny, send, cancel (Phase 3b)#109

Merged
oratis merged 1 commit into
mainfrom
feat/managed-agents-ui
Jun 18, 2026
Merged

feat(agents): managed-agent control UI — delegate, approve/deny, send, cancel (Phase 3b)#109
oratis merged 1 commit into
mainfrom
feat/managed-agents-ui

Conversation

@oratis

@oratis oratis commented Jun 18, 2026

Copy link
Copy Markdown
Owner

What

The user-facing control surface for managed agents (backend in #108) — so you can start + steer + approve + cancel them from LISA. In the GUI agents card:

  • "Delegate a task" composer → POST /api/agents/managed/start; the new agent appears in the roster via SSE.
  • Per managed row: Approve / Deny buttons when it's paused on a mutating tool (activity.pendingPermission), a "send a follow-up…" input (Enter → /send), and a ⏹ Cancel. Externally-started CLIs stay observe-only (no controls) — honest.
  • managedAction() POSTs /api/agents/managed/<id>/{send,cancel,approve} then refreshes. All string-concat (no regex/backtick) to respect the client script's documented no-interpolation template-literal invariant.
  • CSS: .delegate composer + .session-ctrl (approve/deny/cancel + send input).

Verification

Result

Completes the control plane the user asked for:

  1. See every agent's progress/status — claude-code / codex / … with turns, tokens, tool·file, ⚠pending, ✗error (Phase 1, in GUI + island + menu bar).
  2. Command LISA-run managed agents end-to-end — delegate a task, approve/deny each mutating step, send follow-ups, cancel.

Remaining (per plan): Phase 4 (advisor one-click serialize/cancel) — small; Phase 5 (PTY/peerProtocol to steer externally-started CLIs) — deferred, feature-flagged.

🤖 Generated with Claude Code

…, cancel (Phase 3b)

The user-facing control surface for managed agents (backend in #108), in the GUI
agents card:
- "Delegate a task" composer → POST /api/agents/managed/start; the new agent
  appears in the roster via SSE.
- Per managed row: Approve/Deny buttons when it's paused on a mutating tool
  (activity.pendingPermission), a "send a follow-up…" input (Enter → /send), and
  a ⏹ Cancel. Externally-started CLIs stay observe-only (no controls) — honest.
- managedAction() helper POSTs /api/agents/managed/<id>/{send,cancel,approve}
  then refreshes. All string-concat (no regex/backtick) to respect the client
  script's no-interpolation template-literal invariant.
- lisa-css: .delegate composer + .session-ctrl (mc approve/deny/cancel + mc-send).

705 tests pass; MAIN_HTML/ISLAND_HTML parse (html-syntax guard); snapshot
updated; typecheck + build clean. (UI is DOM in the template — guarded by the
parse + snapshot tests; the managed backend it drives is unit-tested.)

This completes the control plane: see every agent's progress/status (Phase 1)
and command LISA-run managed agents end-to-end (start/steer/approve/cancel).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@oratis oratis merged commit 38b0419 into main Jun 18, 2026
@oratis oratis deleted the feat/managed-agents-ui branch June 18, 2026 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant