3.7 KiB
Implementation report: tui-ticket-role-actions
Worktree / branch
- Worktree:
/home/hare/Projects/yoi/.worktree/tui-ticket-role-actions - Branch:
work/tui-ticket-role-actions
Commits
e125ebb feat: add TUI ticket role commandsd288fa5 fix: require TUI ticket intake context
Summary
Added explicit TUI :ticket commands that launch fixed Ticket-role Pods through the shared client Ticket role launcher.
TUI now parses role actions, builds a TicketRoleLaunchContext, and calls client::launch_ticket_role_pod(...). TUI does not construct SpawnConfig, profile selector semantics, workflow invocation segments, or first-run prompt content directly.
Command syntax
Implemented commands:
:ticket intake <context...>
:ticket route <ticket-id-or-slug> [instruction...]
:ticket investigate <ticket-id-or-slug> [instruction...]
:ticket implement <ticket-id-or-slug> [instruction...]
:ticket review <ticket-id-or-slug> [instruction...]
Role mapping:
intake->TicketRole::Intakeroute->TicketRole::Orchestratorinvestigate->TicketRole::Investigatorimplement->TicketRole::Coderreview->TicketRole::Reviewer
intake requires non-empty context. Non-intake actions require a Ticket id/slug and preserve remaining text as the instruction.
Changed files
crates/client/src/ticket_role.rscrates/tui/src/app.rscrates/tui/src/command.rscrates/tui/src/single_pod.rs
TUI plumbing
- Added
CommandAction::TicketRole(...)as a TUI-local command action. CommandExecutioncan now carry either a Pod protocol method or local command action.Appstores a pending command action after command submission.single_pod.rshandles the pending Ticket role action asynchronously and calls the shared client launcher.PodRuntimeCommandis passed narrowly into the single-Pod run loop/command-action handler so the launcher can start the role Pod.
Diagnostics
- Launch start/success/failure are surfaced through actionbar notices.
UnsupportedInheritProfilehas a TUI-specific message explaining that top-level TUI Ticket launches require concrete role profiles in.yoi/ticket.config.tomluntil an inheritance-aware launch path exists.- Missing non-intake Ticket refs and missing intake context return command diagnostics.
Review status
External sibling review initially requested one blocker fix:
:ticket intakeaccepted missing/whitespace-only context.
The blocker was fixed in d288fa5, and re-review approved with no blockers.
Remaining non-blocker follow-ups:
- Start-progress actionbar notice may be overwritten by final success/failure before a redraw during slow launches.
:help ticketcould describe each role in more detail.- Execution-path tests stop at context construction/error formatting; a future launcher seam could test success/failure actionbar plumbing without spawning real Pods.
Validation
Coder-reported validation for the initial implementation passed:
cargo test -p tui ticket --libcargo test -p client ticketcargo check --workspace --all-targetscargo fmt --checkgit diff --check./tickets.sh doctornix build .#yoi --no-link
Reviewer-rerun validation passed:
git diff --checkcargo test -p tui ticket --libcargo test -p client ticketcargo fmt --checkcargo check --workspace --all-targets./tickets.sh doctorcargo test -p tui --libcargo test -p clientnix build .#yoi
Coder-reported validation for blocker fix passed:
cargo test -p tui ticket --libcargo fmt --checkgit diff --check./tickets.sh doctor
Reviewer re-ran focused blocker validation:
cargo test -p tui ticket_intake --libcargo test -p tui ticket --lib
Ready for merge
Yes.