yoi/.yoi/tickets/00001KW2GCPYF/thread.md

118 lines
5.5 KiB
Markdown

<!-- event: create author: "yoi ticket" at: 2026-06-26T17:42:10Z -->
## 作成
LocalTicketBackend によって作成されました。
---
<!-- event: intake_summary author: hare at: 2026-06-26T17:45:26Z -->
## Intake summary
Marked ready by `yoi ticket state`.
---
<!-- event: state_changed author: "yoi ticket" at: 2026-06-26T17:45:26Z from: planning to: ready reason: cli_state field: state -->
## State changed
Marked ready by `yoi ticket state`.
---
<!-- event: state_changed author: workspace-panel at: 2026-06-26T17:45:40Z from: ready to: queued reason: queued field: state -->
## State changed
Ticket を `workspace-panel` が queued にしました。
---
<!-- event: decision author: yoi-orchestrator at: 2026-06-26T17:46:30Z -->
## Decision
Routing decision: implementation_ready
Reason:
- Dashboard Queue により routing 許可済み。
- Relations はなし、OrchestrationPlan も未設定だった。blocking dependency は見当たらない。
- Current `inprogress` is 0。orchestration worktree is clean and current HEAD already contains Runtime/Backend/WebSocket/WebConsole/TUI foundations.
- Ticket body は navigation/route model、attach routing、UX redesign、protocol rendering model、input/observation、Non-goals、acceptance criteria が具体的。
Evidence checked:
- Ticket body: Workspace top Worker list から任意 Worker Console、`runtime_id + worker_id` authority、Companion を通常 Worker として扱う、standalone Console sidebar entry / old `/console` fallback removal、protocol::Event rendering semantics、degrade path、validation requirements。
- Relations: none。
- Orchestration plan: accepted plan `orch-plan-20260626-174605-1` recorded。
- Workspace state: queued 1 / inprogress 0、orchestration clean、child spawned count 0。
IntentPacket:
Intent:
- Workspace Web Console を Companion 固定 UI から、Worker list 起点の任意 Worker attach Console に再設計する。
Binding decisions / invariants:
- Console target authority は `runtime_id + worker_id`
- Browser は Runtime endpoint / credential / socket path / session path を扱わない。
- Sidebar に standalone `Console` category / navigation entry を残さない。
- Companion は通常 Worker として list から attach する。Companion 専用 route/sidebar/Console implementation は正規導線に残さない。
-`/console` route redirect/fallback 互換は残さない。
- Backend Worker API / Backend client-facing observation WS を使う。
- TUI の見た目や keybinding は移植しない。移植対象は `protocol::Event` rendering semantics。
- 未実装 Runtime/permission/advanced control UI、multi-worker split view、raw provider trace viewer は作らない。
Requirements / acceptance criteria:
- Workspace top Worker list から任意 Worker Console を開ける。
- Console route/state は `runtime_id + worker_id` を持つ。
- Worker detail/capabilities、bounded transcript/Snapshot相当、observation WS、input API を使う。
- `protocol::Event` 由来の user / assistant / thinking / tool call/result / status / error / usage / snapshot / in-flight を表示する。
- Metadata/diagnostics は compact header/details/collapsible area に逃がし、主 transcript 幅を過剰に占有しない。
- Streaming 非対応 Worker は transcript-only/manual refresh等の degrade path を明示。
- Focused Web UI tests/component tests を追加する。
- `deno task check/build`, `cargo check -p yoi`, `git diff --check`, `nix build .#yoi --no-link` が通る。
Implementation latitude:
- Route naming、Worker list UI placement、component split、protocol event state model、degrade UI の詳細は Coder が existing `web/workspace` style に合わせて選べる。
- Backend API に小さな不足があれば `crates/workspace-server` で最小 support を追加してよい。
- Existing Companion provider-less backend can remain as a normal worker source, but no special Console UI path。
Escalate if:
- Browser に Runtime endpoint/token/socket/session path を渡す必要が出る。
- old `/console` fallback を残さないと navigation が成立しないと判明する。
- Full TUI parity / tool UI / raw provider trace viewer / multi-worker split view が必要になる。
- Backend protocol/WS foundation の大幅 redesign が必要になる。
Validation:
- `cargo fmt --all`
- `cargo check -p yoi`
- `cd web/workspace && deno task check`
- `cd web/workspace && deno task build`
- `git diff --check`
- 可能なら `nix build .#yoi --no-link`
Critical risks / reviewer focus:
- Companion special-case route/sidebar implementation が残ること。
- Route target が `runtime_id + worker_id` ではなく worker_id-only になること。
- Runtime endpoint/token/socket/session path leak。
- `protocol::Event` を簡易 chat message に潰しすぎること。
- Metadata/diagnostics が主 transcript を圧迫すること。
- Old `/console` redirect/fallback compatibility が残ること。
---
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-26T17:46:39Z from: queued to: inprogress reason: routing_accepted_worker_console_redesign field: state -->
## State changed
Routing decision: implementation_ready。
Ticket body / relations / workspace state / accepted plan を確認し、Workspace Worker Console redesign は unblocked と判断した。Relations はなく、current `inprogress` は 0。accepted plan と IntentPacket は thread / orchestration plan に記録済み。
これ以降、worktree creation / coder Worker routing などの implementation side effect に進める。
---