Add README to all crates

This commit is contained in:
Keisuke Hirata 2026-04-11 03:07:56 +09:00
parent 4c3f81b4fa
commit 60505f206b
9 changed files with 133 additions and 0 deletions

9
crates/daemon/README.md Normal file
View File

@ -0,0 +1,9 @@
# daemon
Pod のライフサイクルを管理する常駐デーモン。未実装。
## 依存クレート
- `manifest` — マニフェスト設定
- `protocol` — 通信プロトコル型
- `tokio` — 非同期ランタイム

View File

@ -0,0 +1,9 @@
# llm-worker-macros
Rust メソッドを LLM 呼び出し可能なツールとして自動登録する手続きマクロクレート。引数構造体・Tool トレイト実装・ToolDefinition を自動生成する。
## 公開マクロ
- `#[tool_registry]` — impl ブロックに付与し、内部の `#[tool]` メソッドを一括処理
- `#[tool]` — メソッドをツールとしてマーク
- `#[description = "..."]` — 引数に説明を付与JSON Schema の description に反映)

View File

@ -0,0 +1,29 @@
# llm-worker-persistence
Worker のセッション永続化を提供するクレート。追記専用の JSONL ログとして状態遷移を記録し、ログの再生によってセッションを完全に復元する。大きなツール出力は Blob ストアに分離保存する。
## 公開型
### セッション
- `Session<C, St>` — Worker をラップした永続化セッション(`run()`, `resume()`, `fork()`, `fork_at()`
- `SessionId` — UUID v7 によるセッション識別子
- `SessionConfig` — 永続化設定(イベントトレース記録の有無)
### ストア
- `Store` トレイト — 永続化バックエンド抽象(`append`, `read_all`, `list_sessions`
- `FsStore` — ファイルシステム上の JSONL ストア実装
- `BlobStore` トレイト — Blob ストレージ抽象(`store`, `load`
- `FsBlobStore` — ファイルシステム上の Blob ストア実装
- `BlobOutputProcessor` — ToolOutputProcessor 実装(小さい出力はインライン、大きい出力は Blob 保存)
### ログ
- `LogEntry` — セッションログのエントリ型(`SessionStart`, `UserInput`, `AssistantItems`, `TurnEnd` など)
- `RestoredState` — ログ再生で復元された状態
- `collect_state()` — ログエントリ列から状態を復元する関数
### ツール
- `InspectTool` — Blob 内容を取得する組み込みツール(行範囲・配列スライス・キー指定セレクタ対応)

View File

@ -0,0 +1,22 @@
# llm-worker
LLM との対話を管理する低レベル基盤クレート。会話履歴、ツール実行、イベントストリーミング、ライフサイクルフックを統合した `Worker` 抽象を提供する。
## 公開型
### コア
- `Worker<C, S>` — LLM 対話の中央管理(ターン実行、ツール呼び出し、キャンセル)
- `WorkerConfig` / `WorkerResult` / `WorkerError` — 設定・実行結果・エラー
- `Item` / `ContentPart` / `Role` — 会話履歴の構成要素
### モジュール
- `llm_client` — プロバイダ抽象(`LlmClient` トレイト、`Request`, `RequestConfig`, Anthropic/OpenAI/Gemini/Ollama 実装)
- `tool` — ツール定義・実行(`Tool` トレイト、`ToolDefinition`, `ToolOutput`, サイズ判定による Inline/Stored 切替)
- `tool_server` — ツール登録・ルックアップ(`ToolServer`, `ToolServerHandle`
- `hook` — 実行フローへの介入ポイント(`Hook` トレイト、`PreToolCall`, `PostToolCall`, `OnTurnEnd` など)
- `subscriber` — リアルタイムイベント購読(`WorkerSubscriber` トレイト)
- `timeline` — イベントストリームのディスパッチ(`Handler` トレイト、各ブロックコレクター)
- `event` — ストリーミングイベント型(`Event`, `BlockStart`, `BlockDelta` など)
- `state` — 型状態パターンによるキャッシュ保護(`Mutable` / `CacheLocked`

13
crates/manifest/README.md Normal file
View File

@ -0,0 +1,13 @@
# manifest
Pod の宣言的設定を TOML マニフェストとして定義・パースするクレート。プロバイダ設定、ワーカー設定、ディレクトリスコープ制約を記述できる。
## 公開型
- `PodManifest` — Pod 設定全体(`from_toml()` でパース)
- `PodMeta` — Pod メタデータ(名前)
- `ProviderConfig` — LLM プロバイダ設定種別、モデル、APIキー環境変数、ベースURL
- `ProviderKind` — プロバイダ種別(`Anthropic`, `Openai`, `Gemini`, `Ollama`
- `WorkerManifest` — ワーカー設定システムプロンプト、max_tokens、temperature
- `ScopeConfig` — スコープ設定(ルートディレクトリ)
- `Scope` — ディレクトリスコープの実行時チェック(`contains()` でパス包含判定)

23
crates/pod/README.md Normal file
View File

@ -0,0 +1,23 @@
# pod
独立したエージェント実行単位「Pod」を実装するクレート。LLM ワーカーセッションをマニフェスト設定・ファイルスコープ制約と組み合わせ、Unix ソケット経由の双方向通信で操作可能にする。
## 公開型
### コア
- `Pod<C, St>` — LLM ワーカーセッション + マニフェスト + スコープのラッパー(`run()`, `resume()`, `from_manifest()`
- `PodId` — UUID v7 による Pod 識別子
- `PodRunResult` — 実行結果(`Finished`, `Paused`
- `PodError` — エラー型
### 制御
- `PodController` — Pod ライフサイクルを管理するアクター(`spawn()` でタスク起動)
- `PodHandle` — Pod への操作ハンドル(`send()`, `subscribe()`
- `PodSharedState` / `PodStatus` — 共有状態(`Idle`, `Running`, `Paused`
### ランタイム
- `RuntimeDir``$XDG_RUNTIME_DIR/insomnia/{pod_name}/` 配下のランタイムディレクトリ管理(ステータス・履歴のアトミック書き込み)
- `SocketServer` — Pod Protocol 用 Unix ソケットサーバー

10
crates/protocol/README.md Normal file
View File

@ -0,0 +1,10 @@
# protocol
クライアントとPod間の通信プロトコルを定義するクレート。Unix ソケット上で JSON Lines として送受信されるメッセージ型を提供する。
## 公開型
- `Method` — クライアント→Pod のコマンド(`Run`, `Resume`, `Cancel`
- `Event` — Pod→クライアント のイベント(`TurnStart`, `TextDelta`, `ToolCallStart`, `Usage`, `Error` など)
- `TurnResult` — ターン完了状態(`Finished`, `Paused`
- `ErrorCode` — エラー分類(`AlreadyRunning`, `ProviderError`, `ToolError` など)

View File

@ -0,0 +1,8 @@
# provider
マニフェストの設定から適切な LLM クライアントを構築するファクトリクレート。APIキーの環境変数解決を含む。
## 公開型
- `build_client(config: &ProviderConfig) -> Result<Box<dyn LlmClient>, ProviderError>` — プロバイダ設定に応じたクライアント生成Anthropic, OpenAI, Gemini, Ollama
- `ProviderError` — クライアント構築エラー

10
crates/tui/README.md Normal file
View File

@ -0,0 +1,10 @@
# tui
Pod と対話するためのターミナル UI クライアント。Unix ソケット経由で Pod に接続し、チャット形式でユーザー入力の送信・アシスタント応答の表示・ツール実行の監視を行う。
## 公開型
- `App` — アプリケーション状態(メッセージ履歴、入力バッファ、スクロール位置)
- `Message` / `MessageKind` — 表示メッセージUser, Assistant, Tool, Error, Status
- `PodClient` — Pod との Unix ソケット通信クライアント(`connect()`, `send()`, `next_event()`
- `draw()` — ratatui によるUI描画関数