ticket: preflight workspace panel composer targets
This commit is contained in:
parent
556fd42973
commit
f23a4a29c6
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Delegation intent: workspace panel composer targets
|
||||||
|
|
||||||
|
## Classification
|
||||||
|
|
||||||
|
`implementation-ready` after action model and Orchestrator lifecycle slices.
|
||||||
|
|
||||||
|
The panel now has `yoi panel`, Ticket-config-gated Ticket UI, Pod-centric no-Ticket behavior, and Ticket-enabled Orchestrator lifecycle. This ticket adds the first composer target split so users can send either to the Companion/selected Pod path or directly to a new Intake role Pod.
|
||||||
|
|
||||||
|
## Intent
|
||||||
|
|
||||||
|
Add workspace panel composer target selection with two first-class targets:
|
||||||
|
|
||||||
|
- `Companion` / current Pod-centric send path;
|
||||||
|
- `Ticket Intake` / launch a new Intake role Pod with the composer body as its first run input.
|
||||||
|
|
||||||
|
The Intake path must not append the message to Companion/current Pod history. It should go only to the launched Intake Pod's initial `Method::Run` input/history through the existing Ticket role launcher path.
|
||||||
|
|
||||||
|
## Worktree / branch
|
||||||
|
|
||||||
|
- worktree: `/home/hare/Projects/yoi/.worktree/workspace-panel-composer-targets`
|
||||||
|
- branch: `work/workspace-panel-composer-targets`
|
||||||
|
|
||||||
|
This ticket may read tracked `.yoi/tickets` records/design artifacts. Do not read or edit `.yoi/memory/`.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Add a workspace panel composer target model with at least:
|
||||||
|
- `Companion` / existing selected-Pod send behavior;
|
||||||
|
- `Ticket Intake`.
|
||||||
|
- The UI must clearly show the active composer target using existing TUI visual conventions.
|
||||||
|
- Add a simple keybinding or command path to switch targets without losing typed text where practical.
|
||||||
|
- `Companion` target should preserve existing panel/Pod-centric send behavior.
|
||||||
|
- In no-Ticket workspace, this should be the only available target and should behave like the current Pod dashboard send.
|
||||||
|
- `Ticket Intake` target should be available only when Ticket config is defined/usable.
|
||||||
|
- Empty Intake messages must be rejected with a bounded diagnostic/actionbar-style message.
|
||||||
|
- Intake target must call the existing Ticket role launcher (`TicketRole::Intake`) rather than constructing spawn/profile/workflow prompt content inside TUI.
|
||||||
|
- The composer body must become dynamic user instruction/run input for the Intake launch.
|
||||||
|
- The Intake body must not be sent to Companion/current Pod history or to any selected Pod.
|
||||||
|
- After a successful Intake launch, clear the composer and surface a bounded success notice including the launched Pod name.
|
||||||
|
- On launch failure, keep the composer text and surface a bounded diagnostic.
|
||||||
|
- Do not implement Intake -> Orchestrator handoff payload in this ticket; that is the next child ticket.
|
||||||
|
- Do not reintroduce `--multi`.
|
||||||
|
- Keep layout changes minimal; final display tuning is later.
|
||||||
|
|
||||||
|
## Non-goals
|
||||||
|
|
||||||
|
- Intake -> Orchestrator handoff contract.
|
||||||
|
- Generic arbitrary target routing.
|
||||||
|
- Scheduler/queue.
|
||||||
|
- Ticket action queue display.
|
||||||
|
- Final layout/display tuning.
|
||||||
|
- Companion Pod/session creation beyond preserving existing panel send behavior.
|
||||||
|
|
||||||
|
## Current code map
|
||||||
|
|
||||||
|
- `crates/tui/src/multi_pod.rs`
|
||||||
|
- Current panel substrate, composer handling, selected Pod send/open behavior, notices/diagnostics.
|
||||||
|
- `crates/tui/src/workspace_panel.rs`
|
||||||
|
- ViewModel/header/diagnostics. Extend with composer target view state only if useful; keep it thin.
|
||||||
|
- `crates/client/src/ticket_role.rs`
|
||||||
|
- `TicketRoleLaunchContext`, `TicketRole::Intake`, and `launch_ticket_role_pod(...)`. Use this path for Intake launch.
|
||||||
|
- `crates/tui/src/command.rs`
|
||||||
|
- Existing `:ticket intake ...` route for reference only; do not duplicate prompt/profile construction in TUI.
|
||||||
|
- `crates/tui/src/app.rs`
|
||||||
|
- Normal composer/history semantics for reference; ensure Intake target does not mutate the wrong history.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Run at least:
|
||||||
|
|
||||||
|
- targeted TUI tests for composer target switching and Enter behavior;
|
||||||
|
- a test that Intake target rejects empty input;
|
||||||
|
- a test that Intake target calls/constructs a Ticket role launch request without sending to selected Pod path;
|
||||||
|
- a test that no-Ticket workspace exposes only Companion/Pod-centric send;
|
||||||
|
- `cargo test -p tui workspace_panel`;
|
||||||
|
- `cargo test -p tui multi` or updated panel test names;
|
||||||
|
- `cargo test -p client ticket_role` if role launcher code changes;
|
||||||
|
- `cargo test -p yoi panel`;
|
||||||
|
- `cargo check --workspace --all-targets`;
|
||||||
|
- `cargo fmt --check`;
|
||||||
|
- `git diff --check`;
|
||||||
|
- `cargo build -p yoi`;
|
||||||
|
- `target/debug/yoi ticket doctor`.
|
||||||
|
|
||||||
|
Run `nix build .#yoi --no-link` if feasible.
|
||||||
|
|
||||||
|
## Completion report
|
||||||
|
|
||||||
|
Report:
|
||||||
|
|
||||||
|
- worktree path / branch;
|
||||||
|
- commit hash;
|
||||||
|
- composer target model/keybinding;
|
||||||
|
- no-Ticket target behavior;
|
||||||
|
- Intake launch path and how the typed body is routed;
|
||||||
|
- proof that Intake body does not go to Companion/current Pod history;
|
||||||
|
- diagnostics/success notices;
|
||||||
|
- tests updated/added;
|
||||||
|
- validation results;
|
||||||
|
- known follow-up layout/display tuning items.
|
||||||
|
|
@ -7,7 +7,7 @@ kind: task
|
||||||
priority: P1
|
priority: P1
|
||||||
labels: [tui, composer, intake, panel]
|
labels: [tui, composer, intake, panel]
|
||||||
created_at: 2026-06-05T21:07:04Z
|
created_at: 2026-06-05T21:07:04Z
|
||||||
updated_at: 2026-06-05T21:07:04Z
|
updated_at: 2026-06-06T04:24:53Z
|
||||||
assignee: null
|
assignee: null
|
||||||
legacy_ticket: null
|
legacy_ticket: null
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,19 @@
|
||||||
|
|
||||||
Created by LocalTicketBackend create.
|
Created by LocalTicketBackend create.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: plan author: hare at: 2026-06-06T04:24:53Z -->
|
||||||
|
|
||||||
|
## Plan
|
||||||
|
|
||||||
|
Preflight result: `implementation-ready` after action model and Orchestrator lifecycle.
|
||||||
|
|
||||||
|
This ticket should add the first composer target split for `yoi panel`: preserve the Companion/selected-Pod send path, and add a Ticket Intake target that launches an Intake role Pod with the composer body as the initial user instruction. The Intake body must not be appended to Companion/current Pod history or sent to the selected Pod.
|
||||||
|
|
||||||
|
Ticket Intake target is available only when Ticket config is defined/usable. No-Ticket workspaces remain Pod-centric and expose only the existing send behavior.
|
||||||
|
|
||||||
|
Detailed delegation intent is recorded in `artifacts/delegation-intent.md`.
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user