yoi/.yoi/tickets/00001KW55B33B/item.md

4.7 KiB

title state created_at updated_at assignee queued_by queued_at
embedded worker-runtimeをworker crate実行に接続する inprogress 2026-06-27T18:26:46Z 2026-06-27T20:58:06Z null workspace-panel 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-runtimeworker 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 が通る。