36 lines
1.8 KiB
Markdown
36 lines
1.8 KiB
Markdown
# 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`の片方向依存を維持すること。
|