feat: threads in the agents view, take over, and agents actions #66

Merged
jwarykowski merged 9 commits from feat/threads into pro 2026-10-12 12:43:38 +00:00
jwarykowski commented 2026-10-12 11:43:59 +00:00 (Migrated from github.com)

Shepherd's side of threads (drover feat/threads). Stacked on #65.

Changes

  • Agents view:
    • One row per thread, with "· N runs" and "· +N events".
    • A subject's threads are named by their action, e.g. "TypeError · fix" and "TypeError · jira".
    • Header counts are per thread.
  • o opens the pull request a run made, else its issue.
  • t takes over the conversation in your terminal: claude --resume <session> (or codex resume <session>) in the run's worktree. A waiting run takes over its thread's conversation. With no conversation, it says so.
  • Task detail shows each run's pull request.
  • shepherd agents actions [--json] lists source, label, whether it waits, runs by itself or is off, and the start of its prompt.
  • shepherd agents action <name> on|off|edit. The name can be the label, "source label" or the id. edit opens $EDITOR at a terminal and reads stdin otherwise.

Testing

  • go vet, go test ./... and golangci-lint v2.14.0 (0 issues) pass.
  • New tests: the thread view, take-over for the thread's conversation and for a run without one, the actions list, and on/off/edit, with the prompt passed through a file. None of the output names drover.
  • End to end with real binaries (see the drover PR).
Shepherd's side of threads (drover feat/threads). Stacked on #65. ## Changes - **Agents view:** - One row per thread, with "· N runs" and "· +N events". - A subject's threads are named by their action, e.g. "TypeError · fix" and "TypeError · jira". - Header counts are per thread. - **`o`** opens the pull request a run made, else its issue. - **`t`** takes over the conversation in your terminal: `claude --resume <session>` (or `codex resume <session>`) in the run's worktree. A waiting run takes over its thread's conversation. With no conversation, it says so. - **Task detail** shows each run's pull request. - **`shepherd agents actions [--json]`** lists source, label, whether it waits, runs by itself or is off, and the start of its prompt. - **`shepherd agents action <name> on|off|edit`.** The name can be the label, "source label" or the id. `edit` opens `$EDITOR` at a terminal and reads stdin otherwise. ## Testing - `go vet`, `go test ./...` and golangci-lint v2.14.0 (0 issues) pass. - New tests: the thread view, take-over for the thread's conversation and for a run without one, the actions list, and on/off/edit, with the prompt passed through a file. None of the output names drover. - End to end with real binaries (see the drover PR).
Sign in to join this conversation.
No description provided.