diff --git a/.yoi/tickets/00001KXRXAJFZ/artifacts/.gitkeep b/.yoi/tickets/00001KXRXAJFZ/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/00001KXRXAJFZ/item.md b/.yoi/tickets/00001KXRXAJFZ/item.md new file mode 100644 index 00000000..c64ada02 --- /dev/null +++ b/.yoi/tickets/00001KXRXAJFZ/item.md @@ -0,0 +1,62 @@ +--- +title: 'Internal Worker runnerを実装する' +state: 'inprogress' +created_at: '2026-07-17T20:47:11Z' +updated_at: '2026-07-17T20:47:48Z' +assignee: null +queued_by: 'yoi ticket' +queued_at: '2026-07-17T20:47:48Z' +--- + +## 背景 + +Memory extract は runtime 側の Worker から派生する internal worker として動かす。今後 `session-explore` feature 付き extract worker、compaction、consolidation なども同じ形で安全に動かせるよう、Worker 内部に isolated internal worker / sub-worker runner の標準経路を用意する。 + +Protocol に外部 API として載せる段階ではない。まず Worker 内部 API として実装し、後で session 永続化、progress event、cancellation、Protocol exposure を追加できる形にする。 + +## 実装方針 + +- Worker が internal worker の起動を所有する。 +- Feature は internal worker に渡す tool / context を contribute するだけで、Feature 自体が Worker を spawn しない。 +- internal worker は foreground Worker history を汚染しない。 +- prompt / input / tool registry / usage capture / output collection を `InternalWorkerSpec` 的な構造にまとめる。 +- 初期実装では既存 memory extract sub-engine をこの runner に載せ替える。 +- session 永続化はこの Ticket では実装しないが、runner の引数や result が後で persistence metadata を持てる形にする。 + +## 実装要件 + +- Worker 内部に reusable internal worker runner を追加する。 +- runner は少なくとも次を受け取れる。 + - purpose / name。 + - system prompt。 + - initial user input。 + - tool definitions / limited tool registry。 + - optional usage capture。 +- runner result は少なくとも次を返す。 + - run result。 + - captured usage。 + - finish/error metadata。 +- foreground history / canonical session log に internal prompt や harness messages を混ぜない。 +- existing memory extract path を runner 経由にする。 +- existing extract behavior を変えない。 + - post-run threshold trigger のまま。 + - `write_extracted` transitional path のまま。 + - staging output は flat candidate records のまま。 +- compaction / consolidation の載せ替えは非目標だが、後から同じ runner に寄せられる構造にする。 + +## 非目標 + +- Protocol method として external client から internal worker を起動できるようにしない。 +- internal worker session persistence をこの Ticket で実装しない。 +- `session-explore` feature や evidence tools はこの Ticket では実装しない。 +- compaction / consolidation の full migration はこの Ticket では実装しない。 + +## 受け入れ条件 + +- reusable internal worker runner が存在する。 +- memory extract がその runner 経由で動く。 +- internal worker prompt/input が foreground history に永続化されない。 +- tool surface は caller が渡した limited tool registry に閉じる。 +- existing extract tests / memory tests / worker tests が通る。 +- `cargo test -p memory` と `cargo test -p worker` が通る。 +- code 変更として `nix build .#yoi` が通る。 diff --git a/.yoi/tickets/00001KXRXAJFZ/thread.md b/.yoi/tickets/00001KXRXAJFZ/thread.md new file mode 100644 index 00000000..e269ebef --- /dev/null +++ b/.yoi/tickets/00001KXRXAJFZ/thread.md @@ -0,0 +1,25 @@ + + +## 作成 + +LocalTicketBackend によって作成されました。 + +--- + + + +## State changed + +Ticket を `yoi ticket` が queued にしました。 + + +--- + + + +## State changed + +State changed to `inprogress`. + + +---