llm_worker_rs/AGENTS.md
2026-01-05 23:03:48 +09:00

1.8 KiB

llm-worker-rs 開発instruction

パッケージ管理ルール

  • クレートに依存関係を追加・更新する際は必ず cargoコマンドを使い、Cargo.tomlを直接手で書き換えず、必ずコマンド経由で管理すること。

worker-types

worker-types クレートには次の条件を満たす型だけを置く。

  1. 共有セマンティクスの源泉

    • ランタイム(worker)、proc-macro(worker-macros)、外部利用者のすべてで同じ定義を共有したい値型。
    • 例: BlockId, ProviderEvent, ToolArgumentsDelta などイベント/DTO群。
  2. シリアライズ境界を越えるもの

    • serde経由でプロセス外へ渡したり、APIレスポンスとして公開するもの。
    • ロジックを持たない純粋なデータキャリアに限定する。
  3. 依存の最小化が必要な型

    • serde, serde_json 程度の軽量依存で収まる。
  4. マクロが直接参照する型

    • 属性/derive/proc-macro が型に対してコード生成する場合は worker-macros -> worker-types の単方向依存を維持するため、対象型を worker-types に置く。
  5. 副作用を伴わないこと

    • worker-types 内では I/O・状態保持・スレッド操作などの副作用を禁止。
    • 振る舞いを持つ場合でも impl は純粋な計算か軽量ユーティリティのみに留める。

この基準に当てはまらない型(例えばクライアント状態管理、エラー型で追加依存が必要、プロバイダ固有ロジックなど)は worker クレート側に配置し、どうしても公開が必要なら worker 経由で再エクスポートする。 何にせよ、worker -> worker-typesの片方向依存を維持すること。