diff --git a/crates/daemon/README.md b/crates/daemon/README.md new file mode 100644 index 00000000..9ec699f8 --- /dev/null +++ b/crates/daemon/README.md @@ -0,0 +1,9 @@ +# daemon + +Pod のライフサイクルを管理する常駐デーモン。未実装。 + +## 依存クレート + +- `manifest` — マニフェスト設定 +- `protocol` — 通信プロトコル型 +- `tokio` — 非同期ランタイム diff --git a/crates/llm-worker-macros/README.md b/crates/llm-worker-macros/README.md new file mode 100644 index 00000000..daa4554f --- /dev/null +++ b/crates/llm-worker-macros/README.md @@ -0,0 +1,9 @@ +# llm-worker-macros + +Rust メソッドを LLM 呼び出し可能なツールとして自動登録する手続きマクロクレート。引数構造体・Tool トレイト実装・ToolDefinition を自動生成する。 + +## 公開マクロ + +- `#[tool_registry]` — impl ブロックに付与し、内部の `#[tool]` メソッドを一括処理 +- `#[tool]` — メソッドをツールとしてマーク +- `#[description = "..."]` — 引数に説明を付与(JSON Schema の description に反映) diff --git a/crates/llm-worker-persistence/README.md b/crates/llm-worker-persistence/README.md new file mode 100644 index 00000000..d6b9c0d8 --- /dev/null +++ b/crates/llm-worker-persistence/README.md @@ -0,0 +1,29 @@ +# llm-worker-persistence + +Worker のセッション永続化を提供するクレート。追記専用の JSONL ログとして状態遷移を記録し、ログの再生によってセッションを完全に復元する。大きなツール出力は Blob ストアに分離保存する。 + +## 公開型 + +### セッション + +- `Session` — 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 内容を取得する組み込みツール(行範囲・配列スライス・キー指定セレクタ対応) diff --git a/crates/llm-worker/README.md b/crates/llm-worker/README.md new file mode 100644 index 00000000..379247c1 --- /dev/null +++ b/crates/llm-worker/README.md @@ -0,0 +1,22 @@ +# llm-worker + +LLM との対話を管理する低レベル基盤クレート。会話履歴、ツール実行、イベントストリーミング、ライフサイクルフックを統合した `Worker` 抽象を提供する。 + +## 公開型 + +### コア + +- `Worker` — 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`) diff --git a/crates/manifest/README.md b/crates/manifest/README.md new file mode 100644 index 00000000..a02189a5 --- /dev/null +++ b/crates/manifest/README.md @@ -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()` でパス包含判定) diff --git a/crates/pod/README.md b/crates/pod/README.md new file mode 100644 index 00000000..028a2d1f --- /dev/null +++ b/crates/pod/README.md @@ -0,0 +1,23 @@ +# pod + +独立したエージェント実行単位「Pod」を実装するクレート。LLM ワーカーセッションをマニフェスト設定・ファイルスコープ制約と組み合わせ、Unix ソケット経由の双方向通信で操作可能にする。 + +## 公開型 + +### コア + +- `Pod` — 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 ソケットサーバー diff --git a/crates/protocol/README.md b/crates/protocol/README.md new file mode 100644 index 00000000..49eee856 --- /dev/null +++ b/crates/protocol/README.md @@ -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` など) diff --git a/crates/provider/README.md b/crates/provider/README.md new file mode 100644 index 00000000..62576473 --- /dev/null +++ b/crates/provider/README.md @@ -0,0 +1,8 @@ +# provider + +マニフェストの設定から適切な LLM クライアントを構築するファクトリクレート。APIキーの環境変数解決を含む。 + +## 公開型 + +- `build_client(config: &ProviderConfig) -> Result, ProviderError>` — プロバイダ設定に応じたクライアント生成(Anthropic, OpenAI, Gemini, Ollama) +- `ProviderError` — クライアント構築エラー diff --git a/crates/tui/README.md b/crates/tui/README.md new file mode 100644 index 00000000..e840c31b --- /dev/null +++ b/crates/tui/README.md @@ -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描画関数