Skip to content

feat(orchestration): Agent Teams — specialists, work, review, and coordination - #2

Draft
wSedlacek wants to merge 58 commits into
mainfrom
agent/openrig-agent-teams
Draft

wSedlacek wants to merge 58 commits into
mainfrom
agent/openrig-agent-teams

Conversation

@wSedlacek

Copy link
Copy Markdown

Reopened from closed upstream PR pingdotgg#34683 as a draft for t3.1code.
Idea rank: 1 of 108. Branch is as it was upstream; it likely needs a rebase (modernize) before review.

Summary

  • Consolidates the OpenRig-inspired team portfolio into one PR: durable specialists, Workshop/bundle install, role-scoped tools, Agents topology, owned work, work review, ask/broadcast/exec/roster find, seat handover, next-turn provider switch, and remote seat addressing.
  • Adds a first-class Agent Team per project (persisted on install, orchestration.readAgentTeam, Project Settings roster) while membership stays specialist bindings on listed threads—no second membership graph and no chat-footer boards.
  • Human surfaces are gated behind Settings → Labs → Agent Teams (off by default). MCP team tools stay available while Labs is off.
  • Thread Details folds Work / Specialist / Role tools into one condensed Team section.

Screenshots

Labs — Agent Teams

Enable the beta under Settings → Labs.

Labs Agent Teams toggle

Thread Details — Team

One condensed Team section: specialist seat (bind/edit) plus owned-work board with Claim/Resume/Done.

Thread Details condensed Team panel

Assign work

Plus in the Team section opens a modal; work lands on the board for teammates to claim.

Assign work modal

Project Settings — Agent team

Project-scoped Agent Team roster (empty state with install CTA), visible when Labs is on.

Project Settings Agent team section

Add agent team…

Workshop template preflight: roles, model, workspace, idle until send.

Add agent team dialog

Folded PRs (close as superseded)

Left separate: pingdotgg#34608 honest restore.

Test plan

  • vp run check:changed
  • Enable Labs → Agent Teams; confirm Team appears in Thread Details customize menu
  • Install Workshop team from command palette → Project Settings shows roster → open lead
  • Bind/edit specialist + assign/Done/Cancel owned work in condensed Team panel; work_review Accept/Decline
  • With Labs off, human Team / Projects / palette entry points stay hidden; MCP tools still work
  • MCP: find_or_open_specialist, t3_thread_ask, t3_thread_broadcast, t3_exec, t3_roster_find, t3_owned_work, t3_work_review
  • Stage Claude↔Codex next-turn switch with Cancel; /recap handoff

Made with Cursor

🤖 Generated with Claude Code

wSedlacek and others added 30 commits November 11, 2026 14:01
OpenRig's addressable messaging (`rig send`) lets agents consult a specialist
without creating a tracked assignment. Add `t3_thread_ask` (and `consult` on
message dispatch) so T3 can do the same via send+wait, keeping `delegate_task`
for owned child lifecycles.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add thread-scoped owned work items (assign → claim → progress → handoff)
inspired by OpenRig rig queue, with MCP t3_owned_work and a minimal chat panel.
Bind OpenRig-style named specialist roles to listed project threads so agents can resume domain-owned context by stable key instead of spawning turn-scoped subagents.
Show assignee/claimer and handoff notes in the panel, and skip auto-settle while owned work remains open.
Interrupt only stops an active ask turn; a still-queued consult needs
t3_queue cancel on that runId so agents are not told a false stop path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Preserve omitted specialist fields on resume, reuse create-path identities
for accepted retries, enforce caller/mode guards before mutations, and
unarchive archived specialists when opening them.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add t3_thread_broadcast on the existing send path so a team can fan out one
message to selected or active agents, with an optional shared room audit copy.
Allow create_with_handoff provider switches while a turn is still running
without detaching the live session, and frame the portable handoff with
durable seat identity (title, place, open queue) so the successor keeps
the seat across harness changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
Productize an OpenRig-style Workshop team (lead, builder, QA, reviewer) as durable pinned project threads launched from the command palette.
OpenRig's --host lets one surface talk to a specialist on another machine.
Add fleet seat helpers that route queue-create through the seat's connected
environment, and gate the relationships panel on that addressability.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add t3_roster_find over ThreadSearch so peers discover specialist threads from title, branch, PR, and message history without a new DB.
Bind OpenRig-style named specialist roles to listed project threads so agents can resume domain-owned context by stable key instead of spawning turn-scoped subagents.
Preserve omitted specialist fields on resume, reuse create-path identities
for accepted retries, enforce caller/mode guards before mutations, and
unarchive archived specialists when opening them.

Co-authored-by: Cursor <cursoragent@cursor.com>
Do not advertise remote seat open as a finished queue-remotely product
action; Connect-to-environment UX still owns that surface.

Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the separate Team roster. Enhance Thread Details Agents/Lineage with durable specialist labels from the specialist ownership model and Needs-you status, without treating turn-scoped subagents as specialists.

Co-authored-by: Cursor <cursoragent@cursor.com>
Surface whether a match is thread identity (title/branch/PR) or only a message mention so agents prefer specialists over drive-bys.
Add agent-only t3_exec so callers can hand a bounded task to a provider, wait for its report in ordinary thread history, and avoid app_owned specialist ownership.
Absorb closure reasons and hold/attention into Work (not boards/footer);
UI and MCP share the same assign/handoff/complete/cancel ops, with history after close.
Keep the live modelSelection as current while staging a cross-provider
pick on nextTurnModelSelection. Timeline notices record staged/cancelled
outcomes; the composer shows next-turn with cancel. Drop human-facing
"seat" naming from handoff framing.

Co-authored-by: Cursor <cursoragent@cursor.com>
Thread Details can bind, edit, clear, stop-archive, and restore specialists;
MCP retire_specialist absorbs grow/shrink stop-archive without a team manager.

Co-authored-by: Cursor <cursoragent@cursor.com>
Unify built-in Workshop and t3.contributor-bundle.json behind one
preview-then-create action that binds durable ThreadSpecialist identities
instead of title-only pinned threads. Contributor bundles fold into this
installer rather than a separate path.
Work no longer counts as finished when the worker says so: open proof
judges (requested/rejected) block manual and auto settle until accepted,
mirroring OpenRig rig proof.

Co-authored-by: Cursor <cursoragent@cursor.com>
Stamp pending approvals with an environment permission-routing policy
(default any-operator, optional subject assignee) and optionally accept
them when nobody matching is connected, recording resolvedBy for audit.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bind OpenRig-style named specialist roles to listed project threads so agents can resume domain-owned context by stable key instead of spawning turn-scoped subagents.
Preserve omitted specialist fields on resume, reuse create-path identities
for accepted retries, enforce caller/mode guards before mutations, and
unarchive archived specialists when opening them.

Co-authored-by: Cursor <cursoragent@cursor.com>
…sions

When context fills, hand the same thread to a new provider session with a full-thread portable handoff instead of only compacting in place or clearing without history.

Co-authored-by: Cursor <cursoragent@cursor.com>
Work review is now a pending runtime request (kind work_review,
responseCapability orchestration) shown as an approval card. Decline
clears the ask so settle can proceed; Accept records acceptance;
re-request creates a new pending review. Absorbs quiet hours client
settings and an optional workReviewModelSelection intake field.
OpenRig-style role loadouts: specialists declare skills and MCP servers so
agents bound to that role receive them automatically on turns (Claude/Codex).

Co-authored-by: Cursor <cursoragent@cursor.com>
Inspect specialist loadout with a From role source line and remove
actions that patch the binding. Sequences after human-manageable
specialist bindings; no parallel role system.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add /recap, command palette, and mobile slash/banner paths that arm a fresh session with a durable written handoff, distinct from Compact and Clear.

Co-authored-by: Cursor <cursoragent@cursor.com>
wSedlacek and others added 27 commits November 11, 2026 16:33
…wned work

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist a project AgentTeam on install, expose readAgentTeam, and surface
the roster in Project Settings plus Add agent team entry points.

Co-authored-by: Cursor <cursoragent@cursor.com>
Register readAgentTeam RPC tracing, fix AgentTeamService types, refresh context budget bytes, mock agent team settings in project panel tests, stage cross-provider model picks in fake environments, and align handoff compaction browser test with next-turn staging.
Put Agent Teams behind a Labs server setting and fold Work / Specialist /
Role tools into one Team section so the details card stays compact.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep Agent Teams /recap command detection and main's worktree-pending
side-chat guard after merging origin/main.

Co-authored-by: Cursor <cursoragent@cursor.com>
Trim agent-facing MCP tool descriptions and slimmer specialist/exec schemas
so measured context stays at or below main; validate narrowed inputs at runtime.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep typed FindOrOpenSpecialist and owned-work inputs while dropping runtime
decode paths; trim a few long tool descriptions so MCP JSON stays under main.

Co-authored-by: Cursor <cursoragent@cursor.com>
Split seat binding from the owned-work board, match Automations/Servers row chrome, and keep Assign in a modal with ownership-safe actions.

Reviewed with sol-loop: 1 round with gpt-6.1-sol on high. Sol verdict: approved.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep both consult follow-up and background-wake delivery tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
Gate work_review accepts, redact specialist MCP secrets on the wire, require
full-access for role stdio MCP, prefer staged next-turn providers, and serialize
specialist key binds per project.

Co-authored-by: Cursor <cursoragent@cursor.com>
Suppress duplicate provider /recap, gate Claude T3 instructions on the T3
MCP session, validate owned-work targets, keep steers on the live run's
model, and hide staged-switch Cancel without operate scope.

Co-authored-by: Cursor <cursoragent@cursor.com>
Null assignees must skip thread lookup, and steer model selection needs a
narrowed targetRunId so evals typecheck stops failing Build and Typecheck.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep /recap fresh-session arms while adopting main's replyTo guard in the
composer send path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Assign can name a destination seat while work stays on the home board;
assignees see those obligations in Thread Details and claim against the home id.

Co-authored-by: Cursor <cursoragent@cursor.com>
Work items now live under project-scoped settings instead of as thread-projection children, so seats assign and claim across threads without a home-thread parent.
@github-actions github-actions Bot added vouch:trusted Author is trusted by repo permissions or the VOUCHED list. size:XXL labels Nov 14, 2026
@github-actions

Copy link
Copy Markdown

This PR changes the test suite by +90 test cases (browser 0, unit +54, server +36).

Keep tests that would fail for a real reason, and test logic below the UI where it can be. See Testing.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted Author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant