8.7 KiB
8.7 KiB
作成
LocalTicketBackend によって作成されました。
Plan
Workspace Browser から手動 Coding Worker を作成する導線として Ticket を詳細化した。
方針:
- Sidebar WORKER heading 横に
Newbutton を追加する。 - New form は runtime / display name / initial text の最小入力にする。
- Browser は Runtime create request を直接送らず、product-level
/api/workersendpoint を使う。 - Backend が
kind=codingを default coding Worker launch に解決する。 - Browser-facing payload に raw path / cwd / ConfigBundleRef / requested capabilities / secret / Runtime endpoint / store path を含めない。
- 成功後は作成 Worker の Console に遷移し、失敗時は sanitized diagnostic を form に表示する。
Decision
Manual Coding Worker create form fields を明確化した。
決定:
- v0 form は
display_name、runtime_id、profile、initial_textの 4 field に限定する。 kind = codingは endpoint / Backend 側 launch mode として扱い、form input や Browser-facing payload field にはしない。profileは Browser 自由入力ではなく、Backend が公開する候補から選ぶ。- Browser-facing request は
runtime_id/display_name/profile/initial_textにし、ConfigBundleRef、requested capabilities、raw path、cwd、secret、Runtime endpoint、store path は含めない。
Intake summary
Marked ready by yoi ticket state.
State changed
Marked ready by yoi ticket state.
State changed
Ticket を workspace-panel が queued にしました。
Decision
Routing decision: implementation_ready
Reason:
- Ticket は Manual Coding Worker launch の product-level API / Sidebar New form / sanitized payload / success Console navigation / unsupported runtime diagnostic を具体化しており、observable な acceptance criteria と validation がある。
- typed relation blocker は 0 件、OrchestrationPlan は prior human-gate waiting note のみで、ユーザーから「2つとも消化して」と明示 follow-up があったため human gate は解除された。
00001KWHHRTM9の Runtime connection management と UI/API surface が近く、別 worktree 並列では衝突リスクが高いので、同一 implementation worktree/branch で00001KWHHRTM9を先に実装し、その Runtime candidate/projection を利用して本 Ticket を続けて実装する。
Evidence checked:
- Ticket body / thread / artifacts。
TicketRelationQuery(00001KWHEM8YJ)は 0 件。TicketOrchestrationPlanQuery(00001KWHEM8YJ)は prior human-gate waiting note のみ。- queued Ticket 一覧では
00001KWHHRTM9も queued、ready/inprogress は 0 件。 - workspace/orchestration git state と worktree 一覧、visible Pods、TicketDoctor(0 errors / 既存 warning のみ)。
- Bounded code map:
web/workspace/src/lib/workspace-sidebar/WorkersNavSection.svelte、console route underweb/workspace/src/routes/runtimes/[runtimeId]/workers/[workerId]/console/、existing/api/workerslist projection、/api/runtimes/{runtime_id}/workersinternal-ish Runtime spawn path、crates/workspace-serverruntime/backend/config areas。
IntentPacket:
Intent:
- Workspace Browser sidebar の WORKER heading 横に
Newbutton と作成 form を追加し、Browser-facing/api/workersproduct-level endpoint から coding Worker を作成し、成功後に Worker Console へ遷移する。
Binding decisions / invariants:
- Browser UI は existing Runtime create payload を直接露出しない。
- Browser-facing request fields は
runtime_id/display_name/profile/initial_textのみ。kindは endpoint/backend launch mode として扱い、form input や request field にしない。 - Browser-facing payload/response/form に raw workspace path、cwd、tool scope、
ConfigBundleRef、requested capabilities、secret/token、Runtime endpoint、socket/session/store path を含めない。 profileは Backend が公開する候補から選ばせ、自由入力にしない。- v0 は embedded/local Runtime を primary target とし、remote Runtime の workspace provisioning が未対応なら typed diagnostic で拒否してよい。
/api/runtimes/{runtime_id}/workersは残してよいが、New Worker UI は新しい product-level/api/workersPOST を使う。
Requirements / acceptance criteria:
- Sidebar WORKER heading 横に
Newbutton がある。 Newで display name / runtime / profile / initial text だけの form が開く。- Form submit は
/api/workersproduct-level endpoint を使い、coding Worker を作成できる。 - Backend は request の
profileから Profile / ConfigBundle / execution backend を解決する。 - 作成成功後、Worker list を refresh し、
/runtimes/{runtime_id}/workers/{worker_id}/consoleへ遷移する。 - 作成失敗時、入力値を保持して sanitized diagnostic を form に表示する。
- focused backend/UI tests を追加し、指定 validation を可能な範囲で実行する。
Implementation latitude:
- Runtime candidate は
00001KWHHRTM9の projection を利用する。v0 で embedded-only fallback が必要なら許容されるが、Browser 自由入力にはしない。 - Product-level endpoint の internal mapping、response shape、Svelte form placement(inline/sidebar panel/modal)は既存 UX を壊さない範囲で選んでよい。
- Profile candidate の v0 source は backend-provided static/builtin candidates でもよい。ただし自由入力化しない。
Escalate if:
- Browser-facing API に raw path/cwd/scope/secret/runtime internal location を含めないと実装できない場合。
- Profile/ConfigBundle resolution の既存 boundary を変える必要が出た場合。
- remote runtime provisioning を完成させないと acceptance を満たせない場合。
Validation:
cd web/workspace && deno task testcd web/workspace && deno task checkcargo test -p yoi-workspace-servercargo check -p yoigit diff --checknix build .#yoi --no-linkは時間/依存変更の重さを見て実行、未実行なら理由を report。
Current code map:
- Sidebar UI:
web/workspace/src/lib/workspace-sidebar/WorkersNavSection.svelte,WorkspaceSidebar.svelte。 - Worker console/navigation:
web/workspace/src/lib/workspace-console/model,web/workspace/src/routes/runtimes/[runtimeId]/workers/[workerId]/console/。 - Existing worker list and runtime spawn APIs:
crates/workspace-server/api/workersand/api/runtimes/{runtime_id}/workershandlers, worker-runtimeCreateWorkerRequest/ config bundle resolution paths。 - Runtime candidates/settings base:
00001KWHHRTM9implementation in the same worktree.
Critical risks / reviewer focus:
- Product-level endpoint does not deserialize or expose the internal Runtime create request shape.
- Browser-facing surfaces are sanitized and do not leak raw path/cwd/scope/ConfigBundleRef/requested capabilities/secret/runtime endpoint/socket/session/store path.
- Profile/runtime selectors are bounded to backend-published choices.
- Success navigation and worker list refresh are deterministic.
- The combined implementation with
00001KWHHRTM9keeps runtime connection management and manual worker launch contracts consistent.
State changed
Queued acceptance recorded after explicit user follow-up 「2つとも消化して」。
Checked context:
- Ticket body / thread / artifacts。
TicketRelationQuery(00001KWHEM8YJ): blocking relation 0 件。TicketOrchestrationPlanQuery(00001KWHEM8YJ): prior human-gate waiting note を確認し、今回 accepted_plan / after ordering を記録済み。- workspace/worktree/visible Pod/TicketDoctor/code-map の bounded check。
Acceptance basis:
- concrete missing decision / information は残っていない。
00001KWHHRTM9と surface が重なるため、同一 implementation worktree で00001KWHHRTM9の後に実装する。- side effect はこの
queued -> inprogressacceptance 後に開始する。