From ed825db4e9745f377e07d0ef7861991ae73d5a7f Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 16 Jul 2026 01:31:01 +0900 Subject: [PATCH] ticket: plan workspace orchestrator workdir tools --- .yoi/tickets/00001KXK9PV9T/artifacts/.gitkeep | 0 .yoi/tickets/00001KXK9PV9T/item.md | 38 +++++++++++++++++++ .yoi/tickets/00001KXK9PV9T/thread.md | 7 ++++ 3 files changed, 45 insertions(+) create mode 100644 .yoi/tickets/00001KXK9PV9T/artifacts/.gitkeep create mode 100644 .yoi/tickets/00001KXK9PV9T/item.md create mode 100644 .yoi/tickets/00001KXK9PV9T/thread.md diff --git a/.yoi/tickets/00001KXK9PV9T/artifacts/.gitkeep b/.yoi/tickets/00001KXK9PV9T/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/00001KXK9PV9T/item.md b/.yoi/tickets/00001KXK9PV9T/item.md new file mode 100644 index 00000000..c5169d1a --- /dev/null +++ b/.yoi/tickets/00001KXK9PV9T/item.md @@ -0,0 +1,38 @@ +--- +title: 'Workspace Orchestrator-managed workdirs and Worker spawn tools' +state: 'planning' +created_at: '2026-07-15T16:28:09Z' +updated_at: '2026-07-15T16:30:00Z' +assignee: null +--- + +## 背景 + +現在の LLM-facing `SpawnWorker` は child Worker の process/tool `cwd`、profile、initial input、delegation scope を扱うが、Workspace Runtime の `WorkingDirectory` 作成・claim・Worker 紐付け・cleanup authority は扱わない。 + +一方で workspace-server / worker-runtime には `WorkingDirectoryRequest`、`WorkingDirectoryClaim`、browser Worker create API の workdir selection、workdir registry / worker link が既にある。embedded Orchestrator が coder / reviewer などの sibling Worker 群を律するには、raw path / cwd ではなく Workspace backend-managed workdir authority を通して Worker spawn できる tool surface が必要。 + +## 要件 + +- 既存 `SpawnWorker` を膨らませず、Workspace backend API 経由で workdir と Worker spawn を扱う Orchestrator 用 tool feature を追加する。 +- Orchestrator tool は `WorkspaceClient::Http { workspace_id, base_url }` を必須 authority とし、無い場合は fail closed / not registered にする。 +- 最小 tool surface として以下を提供する。 + - Workspace-managed working directory の一覧または詳細取得。 + - repository id / selector から working directory を作成する操作。 + - existing `working_directory_id` / optional `relative_cwd` を指定して Worker を spawn する操作。 +- Worker spawn 操作は Workspace backend の safe request schema を使い、raw filesystem path、runtime-internal store path、executable path、socket path、secret-like value を model input として受け取らない。 +- Spawn する Worker には profile selector、display/requested name、initial input、acceptance requirement を指定できる。 +- Workspace backend は spawn 結果として Worker id、runtime id、console href、working directory summary、diagnostics を返し、workdir registry / worker-workdir link を更新する。 +- Orchestrator role/profile だけに mutation-capable tools を出し、Coder / Reviewer などには原則として sibling spawn / workdir create 権限を出さない。 +- Ticket orchestration flow からは、Ticket を読んだ後に workdir create/select -> coder/reviewer spawn -> Worker status/output 追跡へ進める形にする。 +- `SpawnWorker.cwd` と Workspace `WorkingDirectory` の違いを prompt/tool description で明確にし、cwd は authority ではないことを維持する。 + +## 受け入れ条件 + +- embedded Orchestrator Worker から Workspace API 経由で workdir を作成できる。 +- embedded Orchestrator Worker から作成済み workdir を指定して sibling Worker を spawn できる。 +- Spawn された Worker が Runtime / Workspace backend の worker list と workdir link に現れる。 +- raw path を渡す spawn/workdir tool input は schema または validation で拒否される。 +- `WorkspaceClient::Http` を持たない Worker では Orchestrator workspace mutation tools が登録されない、または実行時に fail closed する。 +- 既存 `SpawnWorker` の local delegation behavior は壊れない。 +- worker-runtime / workspace-server / worker の該当 tests と `nix build .#yoi` が通る。 diff --git a/.yoi/tickets/00001KXK9PV9T/thread.md b/.yoi/tickets/00001KXK9PV9T/thread.md new file mode 100644 index 00000000..f1a3e832 --- /dev/null +++ b/.yoi/tickets/00001KXK9PV9T/thread.md @@ -0,0 +1,7 @@ + + +## 作成 + +LocalTicketBackend によって作成されました。 + +---