76 lines
4.7 KiB
Markdown
76 lines
4.7 KiB
Markdown
---
|
|
title: 'embedded worker-runtimeをworker crate実行に接続する'
|
|
state: 'inprogress'
|
|
created_at: '2026-06-27T18:26:46Z'
|
|
updated_at: '2026-06-27T20:51:14Z'
|
|
assignee: null
|
|
queued_by: 'workspace-panel'
|
|
queued_at: '2026-06-27T19:06:30Z'
|
|
---
|
|
|
|
## 背景
|
|
|
|
`worker-runtime` の embedded Runtime は Backend RuntimeRegistry / Worker Console から見える Worker を作れるが、実際の LLM agent 実行は既存 `worker` crate 側にある。現在はこの execution-plane が接続されていないため、embedded Worker は transcript / observation の箱としては見えるが、user input を実行できない。
|
|
|
|
この Ticket では、前段の execution backend 境界に対して、既存 `worker` crate を使う embedded execution adapter を実装する。Runtime が Worker を spawn したときに実 `worker::Worker` / `WorkerController` 相当を生成し、input を既存 Worker の run lifecycle に渡し、`protocol::Event` を Runtime observation bus に bridge する。
|
|
|
|
## 目的
|
|
|
|
- embedded Runtime Worker が既存 `worker` crate の実行 engine を使って動く。
|
|
- user input が fake response ではなく、実 Worker run / LLM execution に渡る。
|
|
- 既存 `protocol::Event` が Runtime observation stream に流れる。
|
|
- Runtime / Backend / Web Console が Worker 実行の正規経路を共有する。
|
|
|
|
## 要件
|
|
|
|
### Adapter placement / dependency boundary
|
|
|
|
- `worker-runtime` と `worker` crate の依存関係を確認し、循環依存を作らない場所に adapter を置く。
|
|
- `worker-runtime` の optional feature、別 adapter crate、または Backend 側 adapter のいずれかを選んで Ticket thread に理由を記録する。
|
|
- Adapter は `worker-runtime` の execution backend 境界に接続する。
|
|
- Runtime public API / Browser-facing API に `worker::Worker` handle、socket path、session path、secret、raw manifest path を露出しない。
|
|
|
|
### Profile / config / authority resolution
|
|
|
|
- Runtime Worker spawn request の Profile selector / config bundle ref から、既存 Worker 実行に必要な config を解決する。
|
|
- prompt resources、model/provider config、SecretRef、ToolRegistry、HostAuthority、memory/session/history scope の扱いを明示する。
|
|
- Backend internal Companion 用であっても、暗黙の broad workspace authority を付けない。
|
|
- config / secret / provider が不足している場合は typed diagnostic として spawn/input を拒否し、fake response を返さない。
|
|
|
|
### Input / run lifecycle
|
|
|
|
- Backend Worker input API からの user input を、既存 Worker の `Method::Run` 相当または同等の run API に渡す。
|
|
- Worker が busy の場合、二重 run を typed rejection / queue policy で扱う。v0 で queue しないなら明示する。
|
|
- run started / completed / errored / cancelled を Runtime Worker status と transcript projection に反映する。
|
|
- stop / cancel が実装できる場合は既存 Worker control に接続し、できない場合は typed unsupported とする。
|
|
|
|
### Protocol event bridge
|
|
|
|
- 既存 Worker が出す `protocol::Event` を Runtime observation bus へ bridge する。
|
|
- Snapshot / transcript reconstruction / text delta / text done / thinking / tool call / tool result / usage / status / error を、既存 protocol semantics のまま流す。
|
|
- Runtime が event variant subset や別 output model を作らない。
|
|
- Worker history / session persistence と Runtime transcript projection が矛盾しないようにする。
|
|
|
|
## Non-goals
|
|
|
|
- Workspace Companion 専用 UX の完成。
|
|
- Web Console の visual redesign。
|
|
- remote Runtime process の execution adapter 実装。
|
|
- Full multi-user auth / permission / redaction policy。
|
|
- Task scheduling / background queue。
|
|
|
|
## 受け入れ条件
|
|
|
|
- embedded Runtime に `worker` crate 実行 adapter が接続されている。
|
|
- embedded Worker への user input が実 Worker run に渡る。
|
|
- provider / config が不足している場合、fake response ではなく typed diagnostic になる。
|
|
- 実行時の `protocol::Event` が Runtime observation bus と Backend client-facing WS に流れる。
|
|
- transcript projection が実 Worker run の user / assistant / tool / error output と整合する。
|
|
- raw execution handle / path / credential / session path が Browser-facing API に漏れない。
|
|
- Focused tests が fake provider または deterministic provider で user input -> assistant output -> protocol events -> transcript projection を確認する。
|
|
- `cargo test -p worker-runtime --features ws-server` が通る。
|
|
- `cargo test -p yoi-workspace-server` が通る。
|
|
- `cargo check -p yoi` が通る。
|
|
- `git diff --check` が通る。
|
|
- `nix build .#yoi --no-link` が通る。
|