yoi/work-items/open/20260528-131317-crate-boundary-audit/artifacts/comment-concept-hits.txt

1928 lines
188 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

crates/session-metrics/src/lib.rs:6://! session-store は payload を不透明な `serde_json::Value` として扱うので、
crates/llm-worker-macros/src/lib.rs:1://! llm-worker-macros - Procedural macros for Tool generation
crates/llm-worker-macros/src/lib.rs:3://! Provides `#[tool_registry]` and `#[tool]` macros to
crates/llm-worker-macros/src/lib.rs:12:/// Macro applied to an `impl` block that generates tools from methods marked with `#[tool]`.
crates/llm-worker-macros/src/lib.rs:20:/// #[tool]
crates/llm-worker-macros/src/lib.rs:29:/// - `impl MyApp { fn get_user_tool(&self) -> Tool_get_user }`
crates/llm-worker-macros/src/lib.rs:39: // Look for #[tool] attribute
crates/llm-worker-macros/src/lib.rs:42: // Iterate through attributes to check for tool and remove it
crates/llm-worker-macros/src/lib.rs:312:/// #[tool]
crates/memory/src/schema/summary.rs:15: /// Optional pointer to the session-store entry range that drove the
crates/memory/src/schema/common.rs:9:/// Reference to a session-store entry range. Stored in `sources` /
crates/memory/src/schema/common.rs:14: /// `[start_entry, end_entry]` inclusive range of session-store entry indices.
crates/session-store/tests/common/mod.rs:12:/// A mock LLM client that replays pre-defined event sequences.
crates/memory/src/schema/mod.rs:1://! Frontmatter schemas for memory records.
crates/session-store/src/event_trace.rs:3://! [`TraceEntry`] captures stream lifecycle markers and raw provider stream
crates/session-store/src/event_trace.rs:30: /// Normalized provider stream event.
crates/session-store/src/event_trace.rs:32: /// Marker for code that runs before/around provider stream events.
crates/memory/src/tool/read.rs:1://! `MemoryRead` tool.
crates/memory/src/tool/read.rs:3://! Reads a memory or knowledge record by `(kind, slug)`. Returns
crates/memory/src/tool/read.rs:4://! line-numbered content (1-based), like the generic Read tool. The
crates/provider/src/catalog.rs:3://! - builtin プロバイダ: `resources/providers/builtin.toml`
crates/provider/src/catalog.rs:5://! - user override: `<config_dir>/{providers,models}.toml`
crates/provider/src/catalog.rs:7://! `<config_dir>` の解決は [`manifest::paths::config_dir`] を参照。
crates/provider/src/catalog.rs:9://! いう一方向の差し替えマージしない。providers / models は独立に
crates/provider/src/catalog.rs:12://! [`resolve_model_manifest`] が `manifest::ModelManifest`ref / inline
crates/provider/src/catalog.rs:25:/// Conservative fallback used when neither the manifest nor catalogs specify
crates/provider/src/catalog.rs:27:/// catalog / manifest metadata can override unknown or inline models.
crates/provider/src/catalog.rs:48:/// マニフェスト解決時のエラー。`ModelManifest` がカタログ参照を満たせ
crates/provider/src/catalog.rs:94: /// モデルカタログ未登録モデルでこの provider が使われたとき
crates/provider/src/catalog.rs:95: /// ref で provider はあるが model 行は無い等)のフォールバック。
crates/provider/src/catalog.rs:108:/// `id` は **provider 内ユニーク**。同じ `gpt-5` が異なる provider に
crates/provider/src/catalog.rs:109:/// 存在するのは OK で、ref が必ず `<provider>/<model_id>` を含むため
crates/provider/src/catalog.rs:119: /// モデル単位の context window。省略時は provider default → builtin
crates/provider/src/catalog.rs:125:/// 解決済みモデル設定。`build_client` が消費する完成形。
crates/provider/src/catalog.rs:162:// --- providers ---------------------------------------------------------------
crates/provider/src/catalog.rs:164:/// builtin + user override を解決して provider カタログを返す。
crates/provider/src/catalog.rs:166:/// user override (`<config_dir>/providers.toml`) が存在すれば builtin
crates/provider/src/catalog.rs:180:/// builtin provider カタログのみを返す。
crates/provider/src/catalog.rs:187:/// 指定パスから provider カタログを読む。
crates/provider/src/catalog.rs:235:/// `<provider_id>/<model_id>` の最初の `/` で 1 回だけ split する。
crates/provider/src/catalog.rs:237:/// model_id に `/` を含むケースは、provider=`openrouter`、
crates/provider/src/catalog.rs:247:/// `ModelManifest` をカタログ込みで解決し、最終 [`ModelConfig`] を返す。
crates/provider/src/catalog.rs:249:/// - **`ref` あり** → provider カタログを引き、未登録なら hard error。
crates/provider/src/catalog.rs:250:/// model カタログは未登録でも warn ログだけに留め、`provider.default_capability`
crates/provider/src/catalog.rs:257:/// scheme/base_url は manifest 明示 > provider、model_id は manifest 明示 > ref、
crates/provider/src/catalog.rs:258:/// auth は manifest 明示 > provider.auth_hint 由来、capability は
crates/provider/src/catalog.rs:259:/// manifest 明示 > model catalog > provider.default_capability >
crates/provider/src/catalog.rs:260:/// `build_client` 側で)`Scheme::default_capability()`。
crates/provider/src/catalog.rs:261:/// context_window は manifest 明示 > model catalog > provider default >
crates/provider/src/catalog.rs:269:/// テスト等で in-memory カタログを差し込む解決経路。
crates/provider/src/catalog.rs:283: // model 行は無くても続行可warn ログ + provider.default_capability
crates/provider/src/catalog.rs:447: // OpenRouter: `<router>/<provider>/<model>` 形式の model_id を持つ
crates/memory/src/tool/write.rs:1://! `MemoryWrite` tool.
crates/memory/src/tool/write.rs:3://! Creates or overwrites a memory or knowledge record by `(kind, slug)`.
crates/memory/src/tool/write.rs:6://! Linter error the tool returns `ToolError::InvalidArgument` with all
crates/memory/src/tool/write.rs:307: // The MemoryToolKind enum doesn't include Workflow, so deserialization fails.
crates/llm-worker/tests/reasoning_round_trip_test.rs:148: /// Request を 1 度だけキャプチャして空ストリームを返す client。
crates/llm-worker/tests/transport_retry_test.rs:4://! request を送り、HTTP status / Retry-After を `ClientError` に載せて返す。
crates/llm-worker/tests/transport_retry_test.rs:21:/// stream 消費中で `ClientError::Sse` を返す。
crates/session-store/src/system_item.rs:4://! LLM — they are always inserted by the Pod itself (notifications,
crates/session-store/src/system_item.rs:5://! file/knowledge/workflow ref resolutions, child-pod lifecycle events,
crates/session-store/src/system_item.rs:7://! typed shape of each such injection so clients can dispatch on
crates/session-store/src/system_item.rs:27:/// Each variant carries the kind-specific raw data clients use for
crates/session-store/src/system_item.rs:28:/// typed rendering (`Notification.message`, `PodEvent.event`, file
crates/session-store/src/system_item.rs:29:/// path / knowledge slug / workflow slug / etc.), plus a pre-rendered
crates/session-store/src/system_item.rs:45: /// `body` is the wrapped LLM-context form (Pod renders it via
crates/session-store/src/system_item.rs:49: /// Lifecycle event reported by a child Pod via `Method::PodEvent`.
crates/session-store/src/system_item.rs:50: /// `event` is the typed payload (so the TUI can render per-child
crates/session-store/src/system_item.rs:63: /// rendered text the LLM saw (Pod composes the `[Knowledge: …]`
crates/session-store/src/system_item.rs:67: /// `/<slug>` Workflow invocation. `body` is the workflow's
crates/session-store/src/system_item.rs:111:/// Render a `PodEvent` as the one-line notification text the agent
crates/memory/src/tool/query.rs:1://! `MemoryQuery` / `KnowledgeQuery` tools.
crates/memory/src/tool/query.rs:9://! - `MemoryQuery` walks `.insomnia/memory/{summary.md,decisions/,
crates/memory/src/tool/query.rs:10://! requests/}`. `.insomnia/workflow/`, `.insomnia/memory/_staging/`,
crates/memory/src/tool/query.rs:11://! `.insomnia/memory/_usage/`, and `.insomnia/memory/_logs/` are excluded
crates/memory/src/tool/query.rs:49:/// Tunables passed in from the manifest.
crates/llm-worker/tests/callback_test.rs:214:/// Stub tool returning a fixed [`ToolOutput`] for result-callback tests.
crates/llm-worker/tests/callback_test.rs:238:/// Verify that on_tool_result fires once per executed tool with
crates/llm-worker/tests/callback_test.rs:239:/// summary/content/is_error matching what the tool returned.
crates/llm-worker/tests/callback_test.rs:284:/// Stub tool that always fails, for exercising the error path through
crates/memory/src/tool/mod.rs:1://! Memory-scoped tools: Read / Write / Edit / Search.
crates/memory/src/tool/mod.rs:29:/// Kinds the memory tools accept as input. `Workflow` is intentionally
crates/memory/src/tool/mod.rs:30:/// excluded — workflows are sub-Worker context, not agent-editable.
crates/llm-worker/tests/worker_fixtures.rs:22:/// Simple test tool
crates/llm-worker/tests/worker_fixtures.rs:79:/// Verify that MockLlmClient can correctly load events from JSONL fixture files
crates/llm-worker/tests/worker_fixtures.rs:96:/// Verify that MockLlmClient works correctly with directly specified event lists
crates/llm-worker/tests/worker_fixtures.rs:98:/// Creates a client with programmatically constructed events instead of using fixture files.
crates/llm-worker/tests/worker_fixtures.rs:120:/// Uses simple_text.jsonl fixture to test scenarios without tool calls.
crates/llm-worker/tests/worker_fixtures.rs:140:/// Verify that Worker can correctly process responses containing tool calls
crates/llm-worker/tests/worker_fixtures.rs:143:/// Sets max_turns=1 to prevent loop after tool execution.
crates/llm-worker/tests/worker_fixtures.rs:156: // Register tool
crates/llm-worker/tests/worker_fixtures.rs:164: // Verify tool was called
crates/llm-worker/tests/worker_fixtures.rs:165: // Note: max_turns=1 so no request is sent after tool result
crates/llm-worker/tests/worker_fixtures.rs:175:/// Constructs event sequence programmatically and passes to MockLlmClient.
crates/provider/src/codex_oauth/error.rs:3://! `LlmClient` 境界に渡す際は `to_client_error` で `ClientError` に
crates/provider/src/codex_oauth/error.rs:48: /// `LlmClient` トランスポート境界向けに変換する。
crates/memory/src/tool/edit.rs:1://! `MemoryEdit` tool — partial string replacement on an existing memory record.
crates/memory/src/tool/edit.rs:5://! current-then-write window is single-tool-call narrow; an external
crates/memory/src/tool/edit.rs:6://! tracker is intentionally omitted (memory tools are self-contained,
crates/memory/src/tool/edit.rs:7://! no `tools` crate dep).
crates/memory/src/tool/edit.rs:363: // Workflow is not exposed via MemoryToolKind, so deserialization fails.
crates/session-store/src/segment.rs:4://! The caller (typically Pod) holds the Worker directly and calls these
crates/session-store/src/segment.rs:39:/// synchronously but defer the initial log append (e.g. Pod, which
crates/session-store/src/segment.rs:105:/// Shim for legacy entry points (`pod-cli --session <UUID>` etc.) that
crates/session-store/src/segment.rs:138:/// the new segment with the writer's in-memory history (which reflects
crates/session-store/src/segment.rs:177:/// Submit-time entry. Pod calls this at the head of a `Run` turn before
crates/session-store/src/segment.rs:253:/// for the Pod-side interceptor commit path; mirrors the per-item
crates/session-store/src/segment.rs:254:/// commit shape used for assistant / tool result entries.
crates/session-store/src/segment.rs:366:/// session-store treats `payload` as an unstructured `serde_json::Value`.
crates/session-store/src/segment.rs:388:/// Log the Pod's latest runtime scope snapshot.
crates/session-store/src/segment.rs:507:/// it needs the same value for an in-memory mirror + broadcast).
crates/memory/src/tool/delete.rs:1://! `MemoryDelete` tool for removing memory / knowledge records with audit logging.
crates/provider/src/codex_oauth/mod.rs:7://! - llm-worker は [`AuthProvider`] trait しか知らず、実体である
crates/provider/src/codex_oauth/mod.rs:8://! [`CodexAuthProvider`] はこのクレートに置くfeedback_llm_worker_scope
crates/provider/src/codex_oauth/mod.rs:38:/// `~/.codex/auth.json` を読んで Codex 互換のヘッダを返す provider。
crates/llm-worker/tests/common/mod.rs:17:/// A mock LLM client that replays a sequence of events
crates/llm-worker/tests/common/mod.rs:117:/// Assert that events in all fixtures for a provider can be deserialized
crates/memory/src/scope.rs:2://! memory tree from the generic CRUD tools' write surface.
crates/memory/src/scope.rs:4://! Pod is expected to call [`deny_write_rules`] when memory is enabled
crates/memory/src/scope.rs:5://! and append the result to the manifest's `scope.deny` list before
crates/memory/src/scope.rs:6://! constructing the [`Scope`] passed to `tools::ScopedFs`. The memory
crates/memory/src/scope.rs:7://! tools themselves bypass `ScopedFs` and write directly under the
crates/memory/src/scope.rs:16:/// Build deny rules that strip Write permission from `<workspace>/memory/`
crates/memory/src/scope.rs:18:/// Read for the generic tools.
crates/session-store/src/store.rs:11://! drain task. Keeping the store sync lets the worker callback, Pod commit
crates/session-store/src/store.rs:12://! paths, and `PodInterceptor` all share one direct `append_entry` call.
crates/session-store/src/store.rs:87: /// Used by Pod's submit-time empty-turn rollback after it has proven
crates/memory/src/error.rs:1://! Errors raised by the memory subsystem.
crates/memory/src/error.rs:8:/// Top-level error for memory operations that don't fit the lint flow.
crates/memory/src/audit.rs:1://! Append-only JSONL audit log for memory workers and tools.
crates/memory/src/audit.rs:4://! `.insomnia/memory/_logs/current.log`. It is intentionally separate from
crates/memory/src/audit.rs:9://! tail -f .insomnia/memory/_logs/current.log
crates/memory/src/audit.rs:263:/// Append one audit event to `.insomnia/memory/_logs/current.log`.
crates/provider/src/lib.rs:1://! Pod マニフェストの [`ModelManifest`] を [`Box<dyn LlmClient>`]
crates/provider/src/lib.rs:5://! 1. `ModelManifest` を [`catalog::resolve_model_manifest`] で
crates/provider/src/lib.rs:9://! 4. `ModelCapability` は manifest 明示 > model catalog > provider
crates/provider/src/lib.rs:11://! `catalog::resolve_model_manifest` が [`ModelConfig`] に詰め込む)
crates/provider/src/lib.rs:13://! llm-worker は低レベル基盤に留める方針なので、高レベル側で必要に
crates/provider/src/lib.rs:120: // 1. manifest 明示
crates/provider/src/lib.rs:122: // 3. provider.default_capability
crates/provider/src/lib.rs:157:/// [`ModelManifest`] から [`LlmClient`] を構築する。ref / inline の
crates/provider/src/lib.rs:164:/// 既に解決済みの [`ModelConfig`] から [`LlmClient`] を構築する。
crates/provider/src/lib.rs:165:/// `ModelManifest` から既に `catalog::resolve_model_manifest` を通した
crates/llm-worker/src/interceptor.rs:3://! Defines the [`Interceptor`] trait that upper layers (e.g. Pod) implement
crates/llm-worker/src/interceptor.rs:4://! to inject orchestration decisions (approval, skip, pause, abort)
crates/llm-worker/src/interceptor.rs:54:/// Action before a tool call.
crates/llm-worker/src/interceptor.rs:59: /// Skip this tool call (do not execute).
crates/llm-worker/src/interceptor.rs:61: /// Do not execute the tool call; commit this synthetic result instead.
crates/llm-worker/src/interceptor.rs:63: /// This preserves provider-visible `tool_use` / `tool_result` pairing
crates/llm-worker/src/interceptor.rs:72:/// Action after a tool call.
crates/llm-worker/src/interceptor.rs:81:/// Action at the end of a turn (when LLM produces no tool calls).
crates/llm-worker/src/interceptor.rs:96:/// Context for pre-tool-call decisions.
crates/llm-worker/src/interceptor.rs:106:/// Context for post-tool-call decisions.
crates/llm-worker/src/interceptor.rs:108: /// Original tool call.
crates/llm-worker/src/interceptor.rs:125:/// proceed without intervention. Upper layers (e.g. Pod) provide
crates/llm-worker/src/interceptor.rs:142: /// cross-Pod events, system reminders. Do **not** use
crates/llm-worker/src/interceptor.rs:168: /// Called before each tool is executed.
crates/llm-worker/src/interceptor.rs:173: /// Called after each tool completes.
crates/llm-worker/src/interceptor.rs:178: /// Called when a turn ends with no tool calls.
crates/llm-worker/tests/parallel_execution_test.rs:1://! Parallel tool execution tests
crates/llm-worker/tests/parallel_execution_test.rs:3://! Verify that Worker executes multiple tools in parallel.
crates/llm-worker/tests/parallel_execution_test.rs:73:/// Verify that multiple tools are executed in parallel
crates/llm-worker/tests/parallel_execution_test.rs:75:/// If each tool takes 100ms, sequential execution would take 300ms+,
crates/llm-worker/tests/parallel_execution_test.rs:79: // Event sequence containing 3 tool calls
crates/llm-worker/tests/parallel_execution_test.rs:98: // Each tool waits 100ms
crates/llm-worker/tests/parallel_execution_test.rs:116: // Verify all tools were called
crates/llm-worker/tests/parallel_execution_test.rs:132:/// Hook: pre_tool_call - verify that skipped tools are not executed
crates/llm-worker/tests/parallel_execution_test.rs:159: // Policy to skip "blocked_tool"
crates/llm-worker/tests/parallel_execution_test.rs:178: // allowed_tool is called, but blocked_tool is not
crates/llm-worker/tests/parallel_execution_test.rs:196: // First request: tool call
crates/llm-worker/tests/parallel_execution_test.rs:205: // Second request: text response after receiving tool result
crates/llm-worker/tests/parallel_execution_test.rs:272:/// Hook: pre_tool_call synthetic result - skipped tool gets an error result in history.
crates/session-store/src/pod_metadata.rs:1://! Pod metadata persistence API.
crates/session-store/src/pod_metadata.rs:3://! Pod metadata is a lightweight name-keyed pointer to the Session/Segment
crates/session-store/src/pod_metadata.rs:4://! currently active for a Pod. Conversation content remains in the segment log;
crates/session-store/src/pod_metadata.rs:5://! this metadata only records references needed by Pod-name resume/attach flows.
crates/session-store/src/pod_metadata.rs:12:/// Active Session/Segment pointer for a Pod.
crates/session-store/src/pod_metadata.rs:43:/// `session-store` so the persistence crate does not depend on manifest
crates/session-store/src/pod_metadata.rs:52:/// One child Pod spawned by this Pod and persisted with the spawner's
crates/session-store/src/pod_metadata.rs:53:/// name-keyed Pod state.
crates/session-store/src/pod_metadata.rs:62:/// Persistent metadata for a Pod name.
crates/session-store/src/pod_metadata.rs:73: /// Create Pod metadata for `pod_name`.
crates/session-store/src/pod_metadata.rs:83:/// Sync persistence backend for Pod metadata.
crates/session-store/src/pod_metadata.rs:85:/// The key is the Pod name. Missing state is not an error: `read_by_name`
crates/session-store/src/pod_metadata.rs:86:/// returns `Ok(None)` for Pods that have never persisted metadata or whose
crates/session-store/src/pod_metadata.rs:89: /// Create or replace metadata for its `pod_name` key.
crates/session-store/src/pod_metadata.rs:92: /// Read metadata by Pod name. Returns `None` when no metadata exists.
crates/session-store/src/pod_metadata.rs:95: /// List persisted Pod metadata keys. Implementations return names only;
crates/session-store/src/pod_metadata.rs:105: /// Delete metadata by Pod name. Missing metadata is a successful no-op.
crates/memory/src/lib.rs:1://! Memory subsystem: persistence layer for `memory/*` and `knowledge/*` records.
crates/memory/src/lib.rs:4://! that target `<workspace>/memory/` and `<workspace>/knowledge/` only,
crates/memory/src/lib.rs:5://! with a pre-write Linter built in. Generic CRUD tools (in the `tools`
crates/memory/src/lib.rs:6://! crate) must not touch these directories — Pod is responsible for
crates/memory/src/lib.rs:7://! denying them at the Scope level when memory is enabled.
crates/llm-worker/src/event.rs:3://! Re-exports from the canonical event definitions in llm_client.
crates/session-store/src/logged_item.rs:1://! Persistence-stable mirror of `llm_worker::Item`.
crates/llm-worker/tests/worker_state_test.rs:145:/// Verify that tools can be registered in Mutable state.
crates/llm-worker/tests/worker_state_test.rs:152: // register_tool is infallible (factory deferred to run-time flush)
crates/llm-worker/tests/worker_state_test.rs:407:/// Verify that tools registered before lock and after unlock remain effective.
crates/llm-worker/tests/tool_macro_test.rs:3://! Verify the behavior of `#[tool_registry]` and `#[tool]` macros.
crates/session-store/src/segment_log.rs:60: /// actual payload (user text / notify message / pod event body) is
crates/session-store/src/segment_log.rs:63: /// Used by `pod-session-fork` style operations: the fork-point seq
crates/session-store/src/segment_log.rs:75: /// `Vec<Segment>` so clients can re-render typed atoms (paste chips,
crates/session-store/src/segment_log.rs:76: /// file/knowledge refs, workflow invocations) on segment restore.
crates/session-store/src/segment_log.rs:82: /// reasoning, or tool call. Singular: one entry per history item so
crates/session-store/src/segment_log.rs:86: /// One tool-execution result appended to history.
crates/session-store/src/segment_log.rs:89: /// One typed agent-injected system item: notification, child-Pod
crates/session-store/src/segment_log.rs:93: /// item's denormalised `body`), but live clients and replay paths
crates/session-store/src/segment_log.rs:143: /// session-store は payload を不透明扱いし、replay 時は
crates/session-store/src/segment_log.rs:147: /// 想定用途: memory subsystem の extract 処理境界 pointer 等、
crates/session-store/src/segment_log.rs:148: /// 「session 寿命に縛りたいが session-store の型を汚したくない」
crates/session-store/src/segment_log.rs:169:/// Domain used by Pod to persist its latest effective runtime scope.
crates/session-store/src/segment_log.rs:172:/// Payload stored in `LogEntry::Extension { domain: "pod.scope", .. }`.
crates/session-store/src/segment_log.rs:200: /// session-store は domain を不透明扱いし、各ドメインが自前で fold する。
crates/session-store/src/segment_log.rs:202: /// Latest runtime scope snapshot persisted by the Pod. `None` means
crates/session-store/src/segment_log.rs:209: /// original segments are not preserved). Used by clients to re-render
crates/session-store/src/segment_log.rs:710: // Segments survive verbatim for client-side restore.
crates/session-store/src/fs_store.rs:6://! - Pod metadata: `{root}/pods/{pod_name}/metadata.json`
crates/llm-worker/src/worker.rs:38: /// Client error
crates/llm-worker/src/worker.rs:58: /// A tool with the same name is already registered
crates/llm-worker/src/worker.rs:98:/// Internal: tool execution result
crates/llm-worker/src/worker.rs:109:/// automatically executes tool calls if any, advancing the turn.
crates/llm-worker/src/worker.rs:113:/// - [`Mutable`]: Initial state. System prompt, history, and tools can be freely edited.
crates/llm-worker/src/worker.rs:121:/// let mut worker = Worker::new(client)
crates/llm-worker/src/worker.rs:123:/// worker.register_tool(my_tool);
crates/llm-worker/src/worker.rs:156: /// LLM client
crates/llm-worker/src/worker.rs:181: /// Once retry (`llm-worker-stream-continuation`) is implemented, an
crates/llm-worker/src/worker.rs:205: /// Stream event callbacks. Fired for every normalized provider stream
crates/llm-worker/src/worker.rs:208: /// Pre-stream lifecycle callbacks for debugging stalls before provider
crates/llm-worker/src/worker.rs:212: /// surface an advisory message to the upper layer (e.g. Pod) so it
crates/llm-worker/src/worker.rs:216: /// Tool-result callbacks. Invoked once per completed tool call
crates/llm-worker/src/worker.rs:232: /// Byte-size caps applied to tool `content` before it reaches history.
crates/llm-worker/src/worker.rs:252: /// [`Request::cache_key`] at request build time. Pod 側では
crates/llm-worker/src/worker.rs:307: /// Mirrors `on_text_block`. Some providers don't expose plaintext
crates/llm-worker/src/worker.rs:320: /// Register a tool use block observer with scoped callbacks.
crates/llm-worker/src/worker.rs:464: /// surfaced to a human (e.g. tool output byte-cap truncation).
crates/llm-worker/src/worker.rs:477: /// Register a callback invoked once per completed tool execution.
crates/llm-worker/src/worker.rs:482: /// (e.g. Pod) to forward tool results to clients.
crates/llm-worker/src/worker.rs:527: /// Get a shared tool server handle.
crates/llm-worker/src/worker.rs:587: /// providers (Anthropic) place a long-lived breakpoint there.
crates/llm-worker/src/worker.rs:597: /// [`Request`] via [`Request::cache_key`] — caching-aware providers
crates/llm-worker/src/worker.rs:609: /// Get a reference to the LLM client.
crates/llm-worker/src/worker.rs:724: /// Interrupts currently running streaming or tool execution.
crates/llm-worker/src/worker.rs:731: /// let worker = Arc::new(Mutex::new(Worker::new(client)));
crates/llm-worker/src/worker.rs:757: /// Generate list of ToolDefinitions for LLM from registered tools
crates/llm-worker/src/worker.rs:762: /// Build assistant response items from reasoning items, text blocks, and tool calls.
crates/llm-worker/src/worker.rs:799: // Add tool calls as ToolCall items
crates/llm-worker/src/worker.rs:823: // Add tool definitions
crates/llm-worker/src/worker.rs:861: /// Check for pending tool calls (for resuming from Pause)
crates/llm-worker/src/worker.rs:874: // Second pass: find unanswered tool calls
crates/llm-worker/src/worker.rs:901: /// Execute tools in parallel
crates/llm-worker/src/worker.rs:903: /// After running pre_tool_call hooks on all tools,
crates/llm-worker/src/worker.rs:904: /// executes approved tools in parallel and applies post_tool_call hooks to results.
crates/llm-worker/src/worker.rs:911: // Map from tool call ID to (ToolCall, Meta, Tool)
crates/llm-worker/src/worker.rs:959: // Unknown tools go into approved list as-is (will error at execution)
crates/llm-worker/src/worker.rs:964: // Phase 2: Execute approved tools in parallel (cancellable)
crates/llm-worker/src/worker.rs:979: // Make tool execution cancellable
crates/llm-worker/src/worker.rs:1070: // Resume pending tool calls from a previous Pause
crates/llm-worker/src/worker.rs:1097: // history (notifications, cross-Pod events, system
crates/llm-worker/src/worker.rs:1193: // 1:1 with AgentTurn, but retry (`llm-worker-stream-continuation`)
crates/llm-worker/src/worker.rs:1240: // Do not recover tool calls from an interrupted stream. A completed
crates/llm-worker/src/worker.rs:1241: // tool_use is executable only when the provider finishes the stream.
crates/llm-worker/src/worker.rs:1268: // Pod-side per-item session-log committer) see each item
crates/llm-worker/src/worker.rs:1526: /// Execute tools and push results to history.
crates/llm-worker/src/worker.rs:1540: // observers (e.g. the Pod-side per-item session-log
crates/llm-worker/src/worker.rs:1541: // committer) see each tool result as it lands.
crates/llm-worker/src/worker.rs:1616: /// Register a tool factory for deferred initialization.
crates/llm-worker/src/worker.rs:1625: /// Register multiple tool factories for deferred initialization.
crates/llm-worker/src/worker.rs:1641: /// Install byte-size caps for tool execution `content`.
crates/llm-worker/src/worker.rs:1644: /// (e.g. Pod) translate manifest configuration into a concrete
crates/llm-worker/src/worker.rs:1655: /// let worker = Worker::new(client)
crates/llm-worker/src/worker.rs:1669: /// let worker = Worker::new(client)
crates/llm-worker/src/worker.rs:1704: /// let worker = Worker::new(client)
crates/llm-worker/src/worker.rs:1719: /// Validate current configuration against the provider
crates/llm-worker/src/worker.rs:1727: /// let worker = Worker::new(client)
crates/llm-worker/src/worker.rs:1825: /// Flushes pending tool factories, then fixes the current system prompt
crates/llm-worker/src/worker.rs:1835: /// Panics if a pending tool factory produces a duplicate name.
crates/llm-worker/src/worker.rs:1886: /// Automatically loops if there are tool calls.
crates/llm-worker/src/token_counter.rs:11://! 課金判断には使えないが、compact / prune / memory extract trigger 等の
crates/llm-worker/src/llm_client/event.rs:8:// Core Event Types (from llm_client layer)
crates/llm-worker/src/llm_client/event.rs:128:/// `data_preview` は provider から受け取った raw SSE data の bounded preview、
crates/memory/src/usage.rs:1://! Workspace-local usage event log for memory / knowledge / workflow records.
crates/llm-worker/src/llm_client/capability.rs:85:/// 文字列は provider-native な effort label、数値は provider-native な
crates/llm-worker/src/llm_client/scheme/mod.rs:48: /// この scheme が要求する認証形式。`build_client` 時に
crates/llm-worker/src/llm_client/scheme/mod.rs:49: /// `manifest::AuthRef` と照合する。
crates/llm-worker/src/llm_client/scheme/mod.rs:81: /// `provider::capability::lookup` 側(高レベル構築層)の責務で、
crates/memory/src/workspace.rs:1://! Workspace-level path layout for the memory subsystem.
crates/memory/src/workspace.rs:3://! `WorkspaceLayout` carries the workspace root (typically the Pod's
crates/memory/src/workspace.rs:6://! `manifest.toml` and `prompts/`. The trees inside it:
crates/memory/src/workspace.rs:8://! - `<root>/.insomnia/workflow/<slug>.md`
crates/memory/src/workspace.rs:10://! - `<root>/.insomnia/memory/summary.md`
crates/memory/src/workspace.rs:11://! - `<root>/.insomnia/memory/decisions/<slug>.md`
crates/memory/src/workspace.rs:12://! - `<root>/.insomnia/memory/requests/<slug>.md`
crates/memory/src/workspace.rs:13://! - `<root>/.insomnia/memory/_staging/<id>.json`
crates/memory/src/workspace.rs:14://! - `<root>/.insomnia/memory/_logs/current.log` (append-only audit log)
crates/memory/src/workspace.rs:16://! `memory/` is reserved for session-derived / generated state;
crates/memory/src/workspace.rs:17://! Workflows are human-managed and live one level up under
crates/memory/src/workspace.rs:18://! `.insomnia/workflow/`.
crates/memory/src/workspace.rs:20://! Configuring `[memory]` with an empty body is therefore sufficient
crates/memory/src/workspace.rs:44:/// What kind of record a path under the memory tree represents.
crates/memory/src/workspace.rs:84: /// Resolve a layout from a `MemoryConfig`, falling back to
crates/memory/src/workspace.rs:85: /// `default_root` (typically the Pod's pwd) when the manifest does
crates/memory/src/workspace.rs:102: /// `<root>/.insomnia/`. The base of every other memory path.
crates/memory/src/workspace.rs:127: /// Workflow directory: `<root>/.insomnia/workflow/`.
crates/memory/src/workspace.rs:148: /// Tail-friendly latest memory audit log path.
crates/memory/src/workspace.rs:150: /// Operators can inspect live memory worker and tool events with:
crates/memory/src/workspace.rs:151: /// `tail -f .insomnia/memory/_logs/current.log`.
crates/memory/src/workspace.rs:172: /// Classify a path under the memory tree. Returns `None` if the
crates/memory/src/workspace.rs:173: /// path is not under `.insomnia/memory/` or `.insomnia/knowledge/`
crates/memory/src/workspace.rs:178: /// (e.g. `.insomnia/memory/decisions/Foo.md` with an invalid slug),
crates/memory/src/consolidate/input.rs:4://! markdown セクション列にしてサブWorker に渡す。`docs/plan/memory.md`
crates/memory/src/consolidate/input.rs:8://! 2. 既存 `memory/*` 全文summary / decisions / requests
crates/memory/src/consolidate/input.rs:13://! 設計(`docs/plan/memory.md` §retrieval 経路 / §Consolidation の Knowledge アクセス)。
crates/memory/src/consolidate/input.rs:77:/// `<workspace>/.insomnia/memory/{summary.md,decisions/*,requests/*}` を
crates/memory/src/consolidate/input.rs:288: // Both staging and tidy show "(none)"; existing memory records too.
crates/memory/src/linter/mod.rs:1://! Pre-write Linter for the memory subsystem.
crates/memory/src/linter/mod.rs:5://! aggregating every applicable rule violation. The memory tool calls
crates/memory/src/linter/mod.rs:10://! cycle detection) walk the whole `memory/` and `knowledge/` trees
crates/session-store/src/lib.rs:14://! The caller (typically Pod) holds the Worker directly and calls these
crates/session-store/src/lib.rs:23://! use session_store::{create_segment, restore, save_delta, FsStore, SegmentStartState};
crates/memory/src/consolidate/tidy.rs:3://! `docs/plan/memory.md` §整理GC 相当)の扱い と
crates/memory/src/consolidate/tidy.rs:4://! `tickets/memory-consolidation.md` の整理材料リストに従い、
crates/memory/src/consolidate/tidy.rs:11://! 使用頻度メトリクスベースの保護閾値情報は `tickets/memory-usage-metrics.md`
crates/memory/src/consolidate/tidy.rs:136:/// `<root>/.insomnia/memory/<kind>/*.md` (Knowledge は
crates/memory/src/linter/existing.rs:1://! Walks `<workspace>/memory/{decisions,requests}/` and `<workspace>/knowledge/` to collect
crates/llm-worker/src/state.rs:20:/// - Registering tools and hooks
crates/llm-worker/src/state.rs:27:/// use llm_worker::Worker;
crates/llm-worker/src/state.rs:29:/// let mut worker = Worker::new(client)
crates/memory/src/linter/warnings.rs:17:/// warning fires. 3 follows `docs/plan/memory.md` §Linter (`類似 slug
crates/memory/src/resident.rs:1://! Workspace memory resident-enumeration helpers.
crates/memory/src/resident.rs:3://! Surfaces used by the Pod system-prompt assembler:
crates/memory/src/resident.rs:8://! `<workspace>/.insomnia/memory/summary.md` when it parses as a summary
crates/memory/src/resident.rs:11://! of `model_invokation`. Used by the Pod IPC layer to answer TUI `#`
crates/memory/src/resident.rs:45:/// Read `<workspace>/.insomnia/memory/summary.md` for resident prompt
crates/llm-worker/src/timeline/event.rs:3://! llm_client層のイベント型をそのまま使用する。
crates/memory/src/consolidate/mod.rs:3://! extract が staging に残した活動ログを `memory/*` / `knowledge/*` に
crates/memory/src/consolidate/mod.rs:5://! の観点で整理する disposable Worker を、Pod 側が組み立てるための
crates/memory/src/consolidate/mod.rs:6://! ヘルパー群を提供する。Pod は次の手順で sub-Worker を構築する:
crates/memory/src/consolidate/mod.rs:9://! - memory 専用 Tool (read / write / edit) と Knowledge / memory 検索ツールを登録
crates/memory/src/consolidate/mod.rs:14://! system prompt は Pod の `PromptCatalog`
crates/memory/src/consolidate/mod.rs:15://! (`PodPrompt::MemoryConsolidationSystem`) で管理される。Usage report は
crates/memory/src/consolidate/mod.rs:17://! `docs/plan/memory.md` §Consolidation / 整理材料)。
crates/memory/src/extract/pointer.rs:1://! `LogEntry::Extension { domain: "memory.extract", payload }` の payload 形式と
crates/memory/src/extract/pointer.rs:2://! restore 時の fold ヘルパー。memory crate がドメインを所有するので、
crates/memory/src/extract/pointer.rs:3://! session-store / Pod は payload 構造を知らない。
crates/memory/src/extract/pointer.rs:13: /// 直近 extract が処理した最後の session-store LogEntry の index。
crates/llm-worker/src/timeline/timeline.rs:358:/// use llm_worker::{Timeline, Handler, TextBlockKind, TextBlockEvent};
crates/memory/src/consolidate/lock.rs:3://! `docs/plan/memory.md` §並走防止 に従い:
crates/memory/src/consolidate/lock.rs:5://! - ファイルが存在し、記録された Pod が動作している間、その Pod が排他占有
crates/memory/src/consolidate/lock.rs:25:/// 占有ファイルの中身。`pid` で stale 判定し、`pod_name` / `started_at` /
crates/memory/src/consolidate/lock.rs:151: /// 次回再評価で再処理させる(`docs/plan/memory.md` §並走防止 の
crates/memory/src/extract/tool.rs:5://! Pod 側はランループ完了後に `take_payload()` で取り出して
crates/memory/src/extract/tool.rs:25: /// 後勝ちで上書きするが、Pod 側で warn を出したい場合に参照する。
crates/memory/src/extract/tool.rs:34: /// sub-Worker 終了後に Pod が呼んで payload を取り出す。
crates/memory/src/extract/payload.rs:3://! LLM は [`ExtractedPayload`] そのものsource 抜きを返し、Pod 側
crates/memory/src/extract/payload.rs:5://! source は機械付与する契約 (`docs/plan/memory.md` §Extract)。
crates/memory/src/extract/payload.rs:81:/// `source` は Pod 側ラッパーが segment_id と log entry range を
crates/client/src/lib.rs:1://! Pod プロトコルを喋るクライアント。
crates/client/src/lib.rs:3://! - [`PodClient`]: 既存 pod の Unix ソケットへ接続して `Method` を送り、
crates/client/src/lib.rs:5://! - [`spawn`]: pod バイナリをサブプロセスとして起動し、`INSOMNIA-READY`
crates/client/src/lib.rs:7://! ない呼び出し側 (=既存 pod に attach する場合) は使わなくてよい。
crates/client/src/lib.rs:9://! TUI / GUI / E2E ハーネスはこの crate に依存して protocol を喋る。
crates/llm-worker/src/handler.rs:35:/// use llm_worker::timeline::{Handler, TextBlockEvent, TextBlockKind};
crates/llm-worker/src/handler.rs:157:/// ToolUseBlock Kind - for tool use blocks
crates/llm-worker/src/handler.rs:167: /// JSON substring of tool arguments
crates/memory/src/extract/staging.rs:1://! `<workspace>/.insomnia/memory/_staging/<id>.json` への書き出しヘルパー。
crates/llm-worker/src/llm_client/retry.rs:3://! Worker が `LlmClient::stream` の open error に対して `is_retryable` を見て
crates/llm-worker/src/llm_client/retry.rs:4://! retry / backoff / TUI event / cancellation をまとめて管理する。
crates/llm-worker/src/llm_client/retry.rs:11:/// `Default` は llm-worker 全体の固定値を返す。manifest 経由の上書きが
crates/llm-worker/src/llm_client/retry.rs:12:/// 必要になったら拡張する(現状は不要 → `tickets/llm-worker-transient-retry.md`)。
crates/llm-worker/src/message.rs:6://! elements: messages, tool calls, tool results, and reasoning.
crates/llm-worker/src/message.rs:8:// Re-export all types from llm_client::types
crates/llm-worker/src/llm_client/client.rs:53: /// * `Err(ClientError)` - エラー
crates/llm-worker/src/llm_client/client.rs:56: /// Clone this client into a new `Box<dyn LlmClient>`.
crates/llm-worker/src/llm_client/client.rs:58: /// Used when a second client instance is needed (e.g. for context
crates/llm-worker/src/llm_client/client.rs:82:/// `Box<dyn LlmClient>` に対する `LlmClient` の実装
crates/llm-worker/src/llm_client/mod.rs:15://! - [`LlmClient`] - プロバイダ共通のtrait
crates/llm-worker/src/llm_client/mod.rs:16://! - `providers`: プロバイダ固有のクライアント実装
crates/llm-worker/src/llm_client/scheme/openai_responses/mod.rs:8://! - SSE イベントパース → [`Event`](crate::llm_client::event::Event) 変換: [`events`]
crates/llm-worker/src/llm_client/scheme/openai_responses/mod.rs:23:/// ように受理パラメータが subset の経路では provider 層で
crates/llm-worker/src/llm_client/auth.rs:4://! `crates/manifest` に置き、llm-worker はそれを知らずに済む。
crates/llm-worker/src/llm_client/auth.rs:6://! 期待するか」のランタイム記述で、manifest 側の `AuthRef` との
crates/llm-worker/src/llm_client/auth.rs:7://! 照合(`AuthRef → ResolvedAuth` 変換の適否)は `crates/provider`
crates/llm-worker/src/llm_client/auth.rs:11://! [`AuthProvider`] trait を `crates/provider` 側で実装し、
crates/llm-worker/src/llm_client/auth.rs:30: /// 複合ヘッダCodex OAuth 等、`crates/provider` 側で解決)
crates/llm-worker/src/llm_client/auth.rs:38:/// 同時に注入する必要があるケースで使う。実体は `crates/provider`
crates/llm-worker/src/llm_client/auth.rs:39:/// 側に置き、llm-worker は trait を知るだけ。
crates/llm-worker/src/llm_client/auth.rs:51: /// transport は provider crate の具象型を知らないため、この hook だけで
crates/llm-worker/src/llm_client/scheme/anthropic/request.rs:172:/// Anthropic tool definition
crates/llm-worker/src/llm_client/scheme/anthropic/request.rs:246: /// tool result boundary so one logical assistant burst becomes one
crates/llm-worker/src/llm_client/scheme/anthropic/request.rs:738: /// Convenience: a turn that ends with one assistant text, one tool
crates/llm-worker/src/llm_client/scheme/anthropic/request.rs:1074: // cache_control at the tools-array level.
crates/client/src/spawn.rs:1://! pod バイナリをサブプロセスとして立ち上げ、`INSOMNIA-READY` を待つ
crates/client/src/spawn.rs:4://! - 親プロセス (TUI / GUI / E2E) は overlay TOML を組み立ててこの関数に
crates/client/src/spawn.rs:5://! 渡す。pod はそれを受けて socket を bind し、stderr に
crates/client/src/spawn.rs:10://! ライフサイクルから切り離した detached pod を作る。ready 後の lifecycle
crates/client/src/spawn.rs:24:/// `spawn_pod` の入力。
crates/client/src/spawn.rs:26: /// `pod.name` として使う識別子。runtime ディレクトリ
crates/client/src/spawn.rs:27: /// (`manifest::paths::pod_runtime_dir`) の解決と、ready 行に乗る
crates/client/src/spawn.rs:30: /// `--overlay` で pod に渡す TOML 文字列。
crates/client/src/spawn.rs:32: /// pod の current_dir。
crates/client/src/spawn.rs:37: /// true のとき `--pod <pod_name>` を付与し、pod 側で name-keyed state
crates/client/src/spawn.rs:38: /// があれば resume、なければ同名の新規 Pod として起動させる。
crates/client/src/spawn.rs:92:/// pod を spawn し、`INSOMNIA-READY` ハンドシェイクが終わるまで待つ。
crates/client/src/spawn.rs:126: // a detached Pod once startup succeeds: dropping the handle does not
crates/client/src/spawn.rs:128: // process group do not hit the Pod. Runtime state/socket files are
crates/client/src/spawn.rs:200: // Pod は exit 直前に最終 stderr 行を flush することがある。
crates/client/src/spawn.rs:202: // ぼさず PodExitedEarly に載せる。
crates/client/src/spawn.rs:260:/// Resolves the binary used to launch a child Pod. Must point at a
crates/client/src/spawn.rs:261:/// `pod`-compatible executable — the parent reads the child's stderr
crates/llm-worker/src/llm_client/scheme/anthropic/capability.rs:4://! (`provider::capability`)の責務。ここでは未知モデルでも「この wire で
crates/llm-worker/src/llm_client/transport.rs:4://! 旧 `providers/{anthropic,openai,gemini,ollama}.rs` を置き換える。
crates/llm-worker/src/llm_client/transport.rs:30:/// `AuthRef` を解決したランタイム表現。`crates/provider` が構築する。
crates/llm-worker/src/llm_client/transport.rs:287:/// エラーレスポンスを `ClientError::Api` に変換する。
crates/llm-worker/src/llm_client/scheme/openai_chat/request.rs:86:/// OpenAI tool definition
crates/llm-worker/src/llm_client/scheme/openai_chat/request.rs:101:/// OpenAI tool call in message
crates/llm-worker/src/llm_client/scheme/openai_chat/request.rs:187: /// - Tool results have role "tool" with tool_call_id
crates/llm-worker/src/llm_client/scheme/openai_chat/request.rs:196: // Flush pending tool calls
crates/llm-worker/src/llm_client/scheme/openai_chat/request.rs:249: // Flush pending tool calls before tool result
crates/pod/build.rs:4://! it bidirectionally against the `PodPrompt` enum's own key list, so
crates/pod/build.rs:5://! that a mismatch fails the build (see ticket: pod-prompt-catalog).
crates/llm-worker/src/usage_record.rs:4://! 1 件分にまとめたもの。`UsageEvent` (provider stream イベント) を
crates/llm-worker/src/usage_record.rs:5://! 受けて呼び出し側 (typically Pod) が組み立て、永続化層
crates/llm-worker/src/usage_record.rs:6://! (session-store) に流したり、token accounting (`token_counter`) で
crates/llm-worker/src/llm_client/scheme/gemini/request.rs:84:/// Gemini tool definition
crates/llm-worker/src/llm_client/scheme/gemini/request.rs:104:/// Gemini tool config
crates/llm-worker/src/llm_client/scheme/anthropic/events.rs:180: /// * `Err(ClientError)` - パースエラー
crates/llm-worker/src/llm_client/scheme/openai_chat/capability.rs:4://! (`provider::capability`)の責務。ここでは wire の保守的 default のみ。
crates/llm-worker/src/llm_client/scheme/gemini/capability.rs:4://! 高レベル構築層(`provider::capability`)の責務。ここでは wire の
crates/llm-worker/src/llm_client/scheme/openai_chat/events.rs:105: // Start of tool call (has ID)
crates/llm-worker/src/llm_client/scheme/openai_chat/events.rs:186: // Start of tool call
crates/llm-worker/src/llm_client/scheme/gemini/events.rs:122: /// * `Err(ClientError)` - パースエラー
crates/pod/tests/pod_events_test.rs:1://! Integration tests for the `PodEvent` send / receive primitive.
crates/pod/tests/pod_events_test.rs:3://! These tests drive `pod_events::fire_and_forget` and
crates/pod/tests/pod_events_test.rs:4://! `pod_events::apply_event_side_effects` directly — the full
crates/pod/tests/pod_events_test.rs:6://! spawn-pod tests, which rely on the same primitives.
crates/pod/tests/pod_events_test.rs:65:/// Point `INSOMNIA_RUNTIME_DIR` at `dir`. The pod-registry then lives at
crates/pod/tests/pod_events_test.rs:66:/// `<dir>/pods.json` and Pod runtime sub-dirs at `<dir>/{pod_name}/`.
crates/pod/tests/pod_events_test.rs:97:/// Accept a single connection, send the protocol's connect-time snapshot,
crates/pod/tests/pod_events_test.rs:301: // A must see the re-emission with parent_pod set to "B" (the
crates/pod/tests/pod_events_test.rs:409: // Allocation is gone from the pod-registry.
crates/llm-worker/src/llm_client/scheme/openai_responses/capability.rs:4://! (`provider::capability`)の責務。ここでは wire の保守的 default のみ。
crates/llm-worker/src/callback.rs:104:/// Mirrors `TextBlockScope`. Some providers (or some configurations)
crates/llm-worker/src/callback.rs:129: /// the provider didn't emit any plaintext deltas.
crates/llm-worker/src/callback.rs:177:/// Callback scope for a tool use block.
crates/llm-worker/src/callback.rs:217:/// Per-block state for tool use closure handler.
crates/llm-worker/src/lib.rs:1://! llm-worker - LLM Worker Library
crates/llm-worker/src/lib.rs:8://! - [`tool::Tool`] - Tools that can be invoked by the LLM
crates/llm-worker/src/lib.rs:15://! use llm_worker::{Worker, Item};
crates/llm-worker/src/lib.rs:18://! let mut worker = Worker::new(client)
crates/llm-worker/src/lib.rs:21://! // Register tools (optional)
crates/llm-worker/src/lib.rs:22://! // worker.register_tool(my_tool_definition)?;
crates/llm-worker/examples/record_test_fixtures/main.rs:1://! Test fixture recording tool
crates/llm-worker/examples/record_test_fixtures/main.rs:45: /// Client to use
crates/llm-worker/examples/record_test_fixtures/main.rs:49: /// Model to use (optional, defaults per client)
crates/llm-worker/src/llm_client/types.rs:1://! LLM Client Common Types
crates/llm-worker/src/llm_client/types.rs:6://! - ToolCall items (tool invocations)
crates/llm-worker/src/llm_client/types.rs:7://! - ToolResult items (tool results)
crates/llm-worker/src/llm_client/types.rs:30:/// This is carried on [`Request`] so generic [`crate::llm_client::LlmClient`]
crates/llm-worker/src/llm_client/types.rs:65:/// use llm_worker::Item;
crates/llm-worker/src/llm_client/types.rs:110: /// Call ID linking to the tool call
crates/llm-worker/src/llm_client/types.rs:117: /// Whether the tool result represents an execution error.
crates/llm-worker/src/llm_client/types.rs:213: /// Create a tool call item
crates/llm-worker/src/llm_client/types.rs:228: /// Create a tool call item from a JSON value
crates/llm-worker/src/llm_client/types.rs:237: /// Create a tool result item with summary only (no content).
crates/llm-worker/src/llm_client/types.rs:242: /// Create an error tool result item with summary only (no content).
crates/llm-worker/src/llm_client/types.rs:247: /// Create a tool result item with summary, optional content, and error flag.
crates/llm-worker/src/llm_client/types.rs:263: /// Create a tool result item with summary and content.
crates/llm-worker/src/llm_client/types.rs:387: /// Check if this is a tool call
crates/llm-worker/src/llm_client/types.rs:392: /// Check if this is a tool result
crates/llm-worker/src/llm_client/types.rs:416:/// Tool call arguments must be a JSON object at the provider API level
crates/llm-worker/src/llm_client/types.rs:519: /// post-compaction summary) set this so that caching-aware providers
crates/llm-worker/src/llm_client/types.rs:526: /// ほぼヒットしないため、pod 側で `SegmentId` を渡す運用を想定。
crates/llm-worker/src/llm_client/types.rs:528: /// 別の概念。`cache_anchor` を読まない provider と同じく、
crates/llm-worker/src/llm_client/types.rs:529: /// `prompt_cache_key` を持たない provider は無視する。
crates/llm-worker/src/llm_client/types.rs:572: /// Add a tool definition
crates/llm-worker/src/llm_client/types.rs:648: /// Create a new tool definition
crates/llm-worker/examples/record_test_fixtures/scenarios.rs:38:/// Response with tool call
crates/pod/examples/pod_cli.rs:1://! Minimal example: Pod running a single prompt with persistence.
crates/pod/examples/pod_cli.rs:3://! Demonstrates the core insomnia abstraction — a TOML manifest drives
crates/pod/examples/pod_cli.rs:4://! provider selection, model config, and system prompt, while FsStore
crates/pod/examples/pod_cli.rs:11://! cargo run -p pod --example pod_cli
crates/pod/examples/pod_cli.rs:44: // 1. Build a manifest rooted at the current working directory.
crates/pod/examples/pod_cli.rs:45: // All paths in a manifest must be absolute — see the pod-factory ticket.
crates/pod/examples/pod_cli.rs:53: // 3. Build the Pod from the single-layer manifest TOML
crates/llm-worker/examples/worker_cli.rs:1://! Interactive CLI client using Worker
crates/llm-worker/examples/worker_cli.rs:3://! A CLI application for interacting with multiple LLM providers (Anthropic, Gemini, OpenAI, Ollama).
crates/llm-worker/examples/worker_cli.rs:4://! Demonstrates tool registration and execution, and streaming response display.
crates/llm-worker/examples/worker_cli.rs:18://! cargo run --example worker_cli -- --provider gemini
crates/llm-worker/examples/worker_cli.rs:21://! cargo run --example worker_cli -- --provider openai --model gpt-4o
crates/llm-worker/examples/worker_cli.rs:24://! cargo run --example worker_cli -- --provider ollama --model llama3.2
crates/llm-worker/examples/worker_cli.rs:27://! cargo run --example worker_cli -- --provider anthropic --model claude-3-haiku-20240307 --system "You are a helpful assistant."
crates/llm-worker/examples/worker_cli.rs:65:/// Available LLM providers
crates/llm-worker/examples/worker_cli.rs:80: /// Default model for the provider
crates/llm-worker/examples/worker_cli.rs:90: /// Display name for the provider
crates/llm-worker/examples/worker_cli.rs:115:/// Interactive CLI client supporting multiple LLM providers
crates/llm-worker/examples/worker_cli.rs:125: /// Model name to use (defaults to provider's default if not specified)
crates/llm-worker/examples/worker_cli.rs:133: /// Disable tools
crates/llm-worker/examples/worker_cli.rs:230:/// Handler that displays tool calls
crates/llm-worker/examples/worker_cli.rs:274:/// Policy that displays tool execution results.
crates/llm-worker/examples/worker_cli.rs:306:// Client Creation
crates/llm-worker/examples/worker_cli.rs:309:/// Get API key based on provider
crates/llm-worker/examples/worker_cli.rs:316: // Check environment variable based on provider
crates/llm-worker/examples/worker_cli.rs:330:/// Create client based on provider
crates/llm-worker/examples/worker_cli.rs:447: // Create client
crates/llm-worker/examples/worker_cli.rs:466: // Register tools (unless --no-tools)
crates/pod/examples/pod_protocol.rs:1://! Pod Protocol example: control a Pod via PodHandle and stream events.
crates/pod/examples/pod_protocol.rs:5://! cargo run -p pod --example pod_protocol
crates/pod/examples/pod_protocol.rs:38: // All manifest paths must be absolute — see the pod-factory ticket.
crates/lint-common/src/lib.rs:1://! Shared record lint primitives for memory and workflow files.
crates/lint-common/src/lib.rs:9:/// Common lint errors for Markdown record syntax shared by memory and workflow.
crates/tui/src/input.rs:11://! back to their original captured content so the Pod sees the full
crates/tui/src/input.rs:36:/// Directories remain valid chips because Pod resolves normal directory refs
crates/tui/src/input.rs:61:/// `/<slug>` chip — confirmed completion of a Workflow invocation.
crates/tui/src/input.rs:100: /// Indivisible chip — paste / file ref / knowledge ref / workflow
crates/tui/src/input.rs:147: /// Monotonic counter reused across the TUI process lifetime.
crates/tui/src/input.rs:175: /// Replace the whole composer with protocol segments previously emitted
crates/tui/src/input.rs:315: /// text (e.g. the `/` in `src/main.rs` is not a workflow trigger).
crates/tui/src/input.rs:500: /// Build the typed `Vec<Segment>` sent over the protocol. Adjacent
crates/tui/src/input.rs:502: /// chip atom (`Paste` / `FileRef` / `KnowledgeRef` / `WorkflowInvoke`)
crates/tui/src/input.rs:503: /// becomes a standalone `Segment` so that clients re-rendering an
crates/pod/src/ipc/interceptor.rs:1://! Pod-owned `Interceptor` implementation.
crates/pod/src/ipc/interceptor.rs:3://! Bridges Pod's internal mechanisms (compaction trigger today;
crates/pod/src/ipc/interceptor.rs:55: /// `PromptAction::ContinueWith`. Populated by `Pod::run`
crates/pod/src/ipc/interceptor.rs:63: /// worker. `None` in tests / `Pod::new` paths where no writer is
crates/pod/src/ipc/event.rs:1://! `PodEvent` send / receive helpers.
crates/pod/src/ipc/event.rs:4://! (`PodEvent`) that children fire upward on turn-end / error /
crates/pod/src/ipc/event.rs:7://! - **Send** a `Method::PodEvent` to the parent socket, fire-and-forget,
crates/pod/src/ipc/event.rs:11://! - **Apply side effects** on the parent (registry / pod-registry
crates/pod/src/ipc/event.rs:16://! callbacks are an optimisation and `ListPods` + `reclaim_stale` are
crates/pod/src/ipc/event.rs:33:/// Connect to `socket`, send a single `Method::PodEvent(event)`, and
crates/pod/src/ipc/event.rs:43:/// `socket` is `None`, no send happens (top-level Pods have no parent).
crates/pod/src/ipc/event.rs:58:/// Kept deliberately short — the LLM can always call `ReadPodOutput`
crates/pod/src/ipc/event.rs:88:/// - `ShutDown`: remove the child from `spawned_pods.json`, Pod state,
crates/pod/src/ipc/server.rs:11:/// Unix socket server for Pod Protocol.
crates/pod/src/ipc/server.rs:13:/// Listens on the Pod's runtime directory socket path.
crates/pod/src/ipc/server.rs:14:/// Each client connection gets bidirectional JSONL:
crates/pod/src/ipc/server.rs:15:/// - Client writes Method lines → forwarded to PodController
crates/pod/src/ipc/server.rs:16:/// - Pod events → written as Event lines to all connected clients
crates/pod/src/ipc/server.rs:23: /// Start listening on the PodHandle's socket path.
crates/pod/src/ipc/server.rs:73: // warnings emitted before this client connected are replayed
crates/pod/src/ipc/server.rs:143: // Slow client fell behind the broadcast buffer.
crates/pod/src/ipc/server.rs:151: // Broadcast events → this client
crates/pod/src/ipc/server.rs:162: // Client methods → handle or forward to controller
crates/session-store/tests/session_test.rs:31: // 1st response: tool call
crates/session-store/tests/session_test.rs:93:/// Run a worker turn and persist via session-store functions.
crates/session-store/tests/session_test.rs:102: // Mirror Pod's run-entry contract: log the user input as segments
crates/session-store/tests/session_test.rs:273: // First run: tool call with pause policy → Paused
crates/session-store/tests/session_test.rs:449: // Simulate another Pod writing to the same segment behind our back.
crates/memory/src/extract/input.rs:3://! `crates/pod/src/pod.rs::build_summary_prompt` と同じ方針で
crates/memory/src/extract/input.rs:4://! Item 列を flat な行に落とすreasoning は省く、tool call は名前のみ、
crates/memory/src/extract/input.rs:5://! tool result は summary のみ。conversation 全体を Markdown の単一
crates/llm-worker/src/llm_client/scheme/openai_responses/events.rs:3://! `response.*` 名前空間の SSE を共通の [`Event`](crate::llm_client::event::Event)
crates/llm-worker/src/llm_client/scheme/openai_responses/events.rs:310:/// 必要なフィールドが抜けている等は [`ClientError::Api`] で返す。
crates/llm-worker/src/llm_client/scheme/openai_responses/events.rs:997: // flat index が別々になるParallel tool calling の基本)。
crates/llm-worker/src/tool_server.rs:14: /// A tool with the same name already exists.
crates/llm-worker/src/tool_server.rs:17: /// Requested tool was not found.
crates/llm-worker/src/tool_server.rs:25:/// In-memory tool server.
crates/llm-worker/src/tool_server.rs:33: /// Create a new empty tool server.
crates/llm-worker/src/tool_server.rs:47:/// Shareable handle to a tool server.
crates/llm-worker/src/tool_server.rs:55: /// Queue a tool factory for deferred initialization.
crates/llm-worker/src/tool_server.rs:67: /// Queue many tool factories for deferred initialization.
crates/llm-worker/src/tool_server.rs:73: /// Execute all pending factories and register the resulting tools.
crates/llm-worker/src/tool_server.rs:76: /// Exposed as `pub` so higher layers (e.g. Pod) can force-materialise
crates/llm-worker/src/tool_server.rs:77: /// tools earlier — for example when building a system-prompt template
crates/llm-worker/src/tool_server.rs:78: /// context that needs the list of registered tool names. Redundant
crates/llm-worker/src/tool_server.rs:83: /// Panics if any factory produces a tool whose name collides with
crates/llm-worker/src/tool_server.rs:84: /// an already-registered tool. Duplicate names are a programming
crates/llm-worker/src/tool_server.rs:107: /// Get a tool by name for hook contexts.
crates/llm-worker/src/tool_server.rs:115: /// Execute a tool by name.
crates/llm-worker/src/tool_server.rs:133: /// Remove a registered tool by name.
crates/llm-worker/src/tool_server.rs:145: /// Replace an existing tool with a new implementation.
crates/llm-worker/src/tool_server.rs:147: /// The factory is called immediately and the resulting tool overwrites
crates/llm-worker/src/tool_server.rs:149: /// produced by the factory does not match any registered tool.
crates/llm-worker/src/tool_server.rs:160: /// Build deterministic tool definitions sorted by tool name.
crates/llm-worker/src/tool_server.rs:212: // Before flush, no tools are available
crates/llm-worker/src/tool_server.rs:217: // After flush, tools are available
crates/llm-worker/src/tool_server.rs:296: // Replace with a tool that returns a fixed string.
crates/llm-worker/src/tool_server.rs:389: // Wait until the tool is actually executing.
crates/llm-worker/src/tool_server.rs:392: // Unregister while the tool is mid-execution.
crates/llm-worker/src/tool_server.rs:442: // Wait until the old tool is mid-execution.
crates/llm-worker/src/tool_server.rs:445: // Replace while the old tool is executing.
crates/llm-worker/src/llm_client/scheme/openai_responses/request.rs:54: /// 無いとプロンプトキャッシュがほぼ効かない。pod 側は `SegmentId`
crates/llm-worker/src/llm_client/scheme/openai_responses/request.rs:85: /// 過去の function tool 呼び出しassistant 側)。
crates/llm-worker/src/llm_client/scheme/openai_responses/request.rs:92: /// function tool の結果user 側)。
crates/llm-worker/src/llm_client/scheme/openai_responses/request.rs:138:/// Responses 用 tool 定義。Chat と違い function キーでネストせず
crates/pod/tests/controller_test.rs:17:/// log mirror held by the Pod's broadcast sink. Replaces the previous
crates/pod/tests/controller_test.rs:18:/// `PodSharedState.history()` test helper now that the mirror lives in
crates/pod/tests/controller_test.rs:45:// Mock LLM Client
crates/pod/tests/controller_test.rs:172: // Separate tempdir to serve as the Pod's pwd/scope — these tests
crates/pod/tests/controller_test.rs:173: // exercise the controller via a mock client and never touch the
crates/pod/tests/controller_test.rs:174: // filesystem through tools, so a throwaway writable dir is enough.
crates/pod/tests/controller_test.rs:251:/// Mid-turn re-attach: a client connecting while the worker is still
crates/pod/tests/controller_test.rs:255:/// view without needing the prior client's diff.
crates/pod/tests/controller_test.rs:524: // Mixed input: plain text + a paste chip + trailing text. Pod must
crates/pod/tests/controller_test.rs:528: // unchanged so other clients can re-render the chip.
crates/pod/tests/controller_test.rs:791: // PodInterceptor::pending_history_appends and cloned into the
crates/pod/tests/controller_test.rs:1313: // our hanging tool. The Worker commits the ToolCall to history,
crates/pod/tests/controller_test.rs:1314: // then parks inside `execute_tools` waiting on the tool — which is
crates/pod/tests/controller_test.rs:1345: // right before the Worker enters tool execution and pends.
crates/pod/tests/controller_test.rs:1369: // New user input while Paused → `Pod::run` observes
crates/pod/tests/restore_test.rs:1://! Integration tests for `Pod::restore_from_manifest`'s pre-build
crates/pod/tests/restore_test.rs:4://! These cases all return before `prepare_pod_common` runs, so they
crates/pod/tests/restore_test.rs:5://! do not need a real LLM client or pod-registry environment — only the
crates/pod/tests/restore_test.rs:6://! session store needs to be present.
crates/pod/tests/restore_test.rs:133: // NotFound, which `Pod::restore_from_manifest` surfaces verbatim
crates/pod/tests/restore_test.rs:134: // as `PodError::Store`.
crates/pod/tests/restore_test.rs:163: // which `restore_from_manifest` rejects with `SegmentEmpty` *before*
crates/pod/tests/restore_test.rs:164: // it gets as far as building the LLM client.
crates/memory/src/extract/mod.rs:3://! 通常 Pod の post-run hook で発火する disposable Worker と、その
crates/memory/src/extract/mod.rs:4://! 出力を `<workspace>/.insomnia/memory/_staging/<id>.json` に書き出す
crates/memory/src/extract/mod.rs:5://! ヘルパーを提供する。Pod 側はこのモジュールから:
crates/memory/src/extract/mod.rs:8://! - [`write_extracted_tool`] を唯一のツールとして
crates/memory/src/extract/mod.rs:11://! の順で組み立てる。system prompt は Pod の `PromptCatalog`
crates/memory/src/extract/mod.rs:12://! (`PodPrompt::MemoryExtractSystem`) で管理される。pointer 永続化
crates/memory/src/extract/mod.rs:13://! session-store の `LogEntry::Extension`、domain `"memory.extract"`)は
crates/memory/src/extract/mod.rs:14://! Pod 側が責務を持つ。
crates/memory/src/extract/mod.rs:33:/// session-store `LogEntry::Extension` で使う domain 名。
crates/llm-worker/src/tool.rs:3://! Traits for defining tools callable by LLM.
crates/llm-worker/src/tool.rs:4://! Usually auto-implemented using the `#[tool]` macro.
crates/llm-worker/src/tool.rs:14:/// Error during tool execution
crates/llm-worker/src/tool.rs:32:/// Threshold below which tool output is treated as summary-only (no content).
crates/llm-worker/src/tool.rs:36:/// Byte-size caps applied to tool execution `content` at the Worker's
crates/llm-worker/src/tool.rs:37:/// tool-execution boundary, before results enter conversation history.
crates/llm-worker/src/tool.rs:39:/// Exists so a single oversized tool result (e.g. a wide `Glob` scan)
crates/llm-worker/src/tool.rs:40:/// cannot blow past the provider's per-minute input-token rate limit.
crates/llm-worker/src/tool.rs:41:/// Individual tools are not trusted to self-limit — this is the single
crates/llm-worker/src/tool.rs:49: /// Cap applied to any tool not listed in `per_tool`.
crates/llm-worker/src/tool.rs:51: /// Per-tool overrides, keyed by tool registration name.
crates/llm-worker/src/tool.rs:56: /// Resolve the cap for a given tool name.
crates/llm-worker/src/tool.rs:133:/// Used for sending tool definitions to LLM.
crates/llm-worker/src/tool.rs:182:/// ToolMeta::new("my_tool")
crates/llm-worker/src/tool.rs:183:/// .description("My tool description")
crates/llm-worker/src/tool.rs:188:/// worker.register_tool(def)?;
crates/llm-worker/src/tool.rs:196:/// Trait for defining tools callable by LLM
crates/llm-worker/src/tool.rs:209:/// #[tool]
crates/llm-worker/src/tool.rs:216:/// worker.register_tool(app.search_definition())?;
crates/llm-worker/src/tool.rs:222:/// use llm_worker::tool::{Tool, ToolError, ToolMeta, ToolDefinition};
crates/llm-worker/src/tool.rs:237:/// ToolMeta::new("my_tool")
crates/llm-worker/src/tool.rs:238:/// .description("My custom tool")
crates/llm-worker/src/tool.rs:246: /// Execute the tool.
crates/llm-worker/src/tool.rs:276:/// Intermediate representation between tool execution and history.
crates/llm-worker/src/tool.rs:280: /// Corresponding tool call ID
crates/pod/tests/spawn_pod_test.rs:1://! Integration tests for the `SpawnPod` tool.
crates/pod/tests/spawn_pod_test.rs:3://! These tests exercise the tool's pod-registry delegation, subprocess
crates/pod/tests/spawn_pod_test.rs:4://! launch, socket handoff, and `spawned_pods.json` write without relying
crates/pod/tests/spawn_pod_test.rs:5://! on the real `pod` binary. `INSOMNIA_POD_COMMAND` is pointed at
crates/pod/tests/spawn_pod_test.rs:7://! listener pre-binds the predicted socket path, so the tool sees the
crates/pod/tests/spawn_pod_test.rs:43:/// `pods.json` and per-Pod runtime subdirs both land in the
crates/pod/tests/spawn_pod_test.rs:45:/// tool has something to delegate from. Returns the tempdir (keeps it
crates/pod/tests/spawn_pod_test.rs:80: // tool call. Dropping it would auto-release the allocation, which
crates/pod/tests/spawn_pod_test.rs:87:/// Bind a Unix listener at the path the tool will predict for the
crates/pod/tests/spawn_pod_test.rs:88:/// spawned pod. The tool only needs the socket to accept a connection
crates/pod/tests/spawn_pod_test.rs:101:/// inside the tool makes a probe connection that carries no data, so the
crates/pod/tests/spawn_pod_test.rs:145:/// child via a mock socket — but `spawn_pod_tool` needs a value to
crates/pod/tests/spawn_pod_test.rs:146:/// embed in the overlay TOML. Any well-formed `ModelManifest` works.
crates/pod/tests/spawn_pod_test.rs:159:/// `setup_spawner`. The tool revokes Write rules from this scope on
crates/pod/tests/spawn_pod_test.rs:224: // Verify the tool delivered Method::Run to the socket.
crates/pod/tests/spawn_pod_test.rs:234: // Verify pod_registry has the child allocation under `root`.
crates/pod/tests/spawn_pod_test.rs:244: // Verify spawned_pods.json was written.
crates/pod/tests/spawn_pod_test.rs:336: // tool's wait_for_socket should time out, triggering rollback.
crates/pod/tests/spawn_pod_test.rs:342: // As the tool's timeout is internal, we accept the 10s wait here —
crates/tui/src/task.rs:1://! In-TUI mirror of the session-lifetime task store.
crates/tui/src/task.rs:3://! This deliberately does NOT depend on `tools::TaskStore`. The TUI is a
crates/tui/src/task.rs:4://! presentation layer; pulling in `tools` would drag along `llm-worker`
crates/tui/src/task.rs:5://! and the whole tool surface. Instead we mirror the small subset we
crates/tui/src/task.rs:8://! - `TaskEntry` / `TaskStatus`: shaped to round-trip with `tools`'s JSON
crates/tui/src/task.rs:12://! tool-call arguments and the `[Session TaskStore snapshot]` system
crates/tui/src/task.rs:15://! The snapshot text format is owned by `tools::render_snapshot`. Since
crates/tui/src/task.rs:16://! `tools` itself parses it back on resume, the shape is a stable
crates/tui/src/task.rs:92: /// tool names and unparseable JSON are silent no-ops, matching the
crates/tui/src/task.rs:93: /// resilience of `tools::TaskStore::replay_history`.
crates/tui/src/task.rs:239: /// Snapshot text matches the wrapping `Pod::try_pre_run_compact` /
crates/tui/src/task.rs:240: /// `tools::render_snapshot` produce: header line, blank, overview
crates/tui/src/task.rs:316:/// Cross-crate contract tests. The TUI deliberately re-implements a
crates/tui/src/task.rs:317:/// stripped-down mirror of `tools::TaskStore` instead of depending on
crates/tui/src/task.rs:319:/// means a format change on the tools side — a renamed field on
crates/tui/src/task.rs:321:/// JSON wrapper — would silently leave the TUI parsing nothing instead
crates/tui/src/task.rs:324:/// These tests pull `tools` in as a dev-dependency so the contract is
crates/tui/src/task.rs:326:/// changed (update both sides) or the TUI mirror has drifted (re-sync
crates/tui/src/task.rs:333: /// Mirrors the envelope `Pod::try_pre_run_compact` wraps the raw
crates/tui/src/task.rs:396: // A single `tools::TaskEntry` round-tripped through JSON. Field
crates/tui/src/task.rs:398: // the tools side would surface here as a serde failure or a
crates/tui/src/task.rs:414: // valid snapshot envelope. The TUI must parse it as "zero
crates/tui/src/task.rs:419: // Seed the TUI store with stale state to confirm replacement.
crates/pod/tests/compact_events_test.rs:72:/// `single_text_events` + a UsageEvent so the Pod's `usage_history`
crates/pod/tests/compact_events_test.rs:122:// `compact_request_threshold` drives the PodInterceptor's mid-turn yield
crates/pod/tests/compact_events_test.rs:218:/// Pod metadata starts with a reserved Session and no Segment, then becomes
crates/pod/tests/compact_events_test.rs:249:/// Pod's back, the next run's `ensure_segment_head` detects the
crates/pod/tests/compact_events_test.rs:289: // the on-disk entry count past the Pod's own append tally without
crates/pod/tests/compact_events_test.rs:290: // updating the Pod's `entries_written`.
crates/pod/tests/compact_events_test.rs:305: // The Pod moved to a new segment in the same Session.
crates/pod/tests/compact_events_test.rs:368: // messages introduced by the compactor. Clients re-seed their view
crates/pod/tests/compact_events_test.rs:441: // [1] compact worker emits `write_summary` tool call.
crates/pod/tests/compact_events_test.rs:489:/// Regression: `Pod::compact()` must reset the in-memory
crates/pod/tests/compact_events_test.rs:546: // [2] extract worker closes after the tool result.
crates/pod/tests/compact_events_test.rs:548: // [4] compact worker closes after the tool result.
crates/pod/tests/compact_events_test.rs:567: // Compact runs. Without the fix the in-memory pointer would still
crates/pod/tests/compact_events_test.rs:580:/// without removing the `[memory]` section.
crates/pod/tests/compact_events_test.rs:656:// Detached post-run memory jobs (`spawn_post_run_memory_jobs` /
crates/pod/tests/compact_events_test.rs:657:// `wait_for_memory_jobs`). Covers the detach round-trip and the structural
crates/pod/tests/compact_events_test.rs:658:// invariant that the cloned memory-task Pod shares `SegmentState` with the
crates/pod/tests/compact_events_test.rs:659:// source Pod, so that `save_extension` from the background extract does not
crates/pod/tests/compact_events_test.rs:729: // Source pod and the cloned memory-task pod share `SegmentState` via
crates/llm-worker/src/prune.rs:1://! Prune — context projection for old tool-result content.
crates/llm-worker/src/prune.rs:11://! 射影の適用は上位層(`pod::prune_hook` 等)が LLM に送る一時コンテキスト
crates/llm-worker/src/prune.rs:78:/// branch. Pod 等の上位層が install して metrics を発行する。
crates/llm-worker/src/prune.rs:205: /// Helper: build a history with interleaved user messages and tool results.
crates/pod/tests/session_metrics_test.rs:3://! Drives a Pod with a scripted mock LLM client and a custom tool that
crates/pod/tests/session_metrics_test.rs:8://! unavailable or the protected-token window covers all tool results.
crates/pod/tests/session_metrics_test.rs:187:/// Drive Pod through enough runs to exercise both skip-no_candidates and
crates/pod/tests/session_metrics_test.rs:192: // Run 1 (request 0): tool_use → triggers tool execution → request 1
crates/pod/tests/session_metrics_test.rs:206: // runs complete — the Pod retains its own copy.
crates/pod/tests/session_metrics_test.rs:215: // Run 1 has 2 LLM iterations (tool loop), each evaluates prune with
crates/pod/tests/session_metrics_test.rs:421:/// fires on the alerter so the TUI surface picks it up.
crates/pod/tests/session_metrics_test.rs:436: // Even with a tool registered, this run will only emit
crates/pod/tests/session_metrics_test.rs:460: // The alerter saw at least one Warn from AlertSource::Pod.
crates/pod/tests/session_metrics_test.rs:482: // Manifest without any `[compaction]` section → prune (and therefore
crates/pod/src/ipc/alerter.rs:1://! User-facing alert channel for Pod → client.
crates/pod/src/ipc/alerter.rs:4://! are short human-readable messages the Pod layer wants a client to
crates/pod/src/ipc/alerter.rs:5://! see — for example "compaction failed", "tool output truncated".
crates/pod/src/ipc/alerter.rs:8://! also appended to an in-memory buffer so that clients connecting
crates/pod/src/ipc/alerter.rs:21:/// memory through a pathological loop of recurring alerts
crates/pod/src/ipc/alerter.rs:47: /// The broadcast may have no subscribers (e.g. during Pod
crates/pod/src/ipc/alerter.rs:48: /// construction before any client has connected); the buffer
crates/pod/src/ipc/alerter.rs:49: /// guarantees the message is still delivered once a client
crates/pod/src/ipc/alerter.rs:53: /// `subscribe_with_snapshot` race-free — a client that snapshots
crates/pod/tests/consolidation_test.rs:1://! consolidation (memory.consolidation) post-run trigger.
crates/pod/tests/consolidation_test.rs:4://! full sub-worker tool loop:
crates/pod/tests/consolidation_test.rs:6://! - no `[memory]` section → no-op
crates/pod/tests/consolidation_test.rs:7://! - `[memory]` present but no thresholds → no-op
crates/pod/tests/consolidation_test.rs:385: // tells it to call memory tools; the mock skips those, but `Worker::run`
crates/pod/tests/consolidation_test.rs:442: // Sanity: when the flag is cleared, the same pod fires normally and
crates/pod/tests/consolidation_test.rs:460: // Coalesce semantics from `docs/plan/memory.md` §並走防止: a single
crates/tui/src/cache.rs:3://! Holds `path → content` for every file the TUI has observed via a
crates/tui/src/cache.rs:31: /// cache untouched (the TUI can't reliably reconstruct the new
crates/tui/src/cache.rs:38: // tool's own precondition and keeps the cache from diverging
crates/pod-registry/src/error.rs:1://! Error type for mutating pod-registry operations.
crates/pod-registry/src/error.rs:9:/// Errors raised by the mutating pod-registry operations.
crates/pod/tests/system_prompt_template_test.rs:16:// Mock LLM Client
crates/pod/tests/system_prompt_template_test.rs:64:/// Emit a single `write_summary(text=...)` tool call as one LLM response.
crates/pod/tests/system_prompt_template_test.rs:94:/// Build a Pod with a synthetic instruction template.
crates/pod/tests/system_prompt_template_test.rs:98:/// a Pod constructed directly via `Pod::new`.
crates/tui/src/tool.rs:1://! Per-tool renderers.
crates/tui/src/tool.rs:3://! Each tool name has a custom renderer that converts a
crates/tui/src/tool.rs:5://! tools fall back to [`render_default`]. Some renderers (notably
crates/tui/src/tool.rs:17:/// Maximum body lines in normal mode for tool output previews.
crates/tui/src/tool.rs:292: // positions say — Edit never wants to panic the whole TUI just
crates/tui/src/tool.rs:550:// Default (unknown tool)
crates/tui/src/tool.rs:594: // Detail mode can expose it. Fall back to the summary when the tool
crates/pod/tests/pod_comm_tools_test.rs:1://! Integration tests for the pod-comm tools (`SendToPod`,
crates/pod/tests/pod_comm_tools_test.rs:2://! `ReadPodOutput`, `StopPod`, `ListPods`).
crates/pod/tests/pod_comm_tools_test.rs:4://! The real child Pod binary is not started. Instead each test stands
crates/pod/tests/pod_comm_tools_test.rs:5://! up a mock `UnixListener` that speaks the socket protocol directly:
crates/pod/tests/pod_comm_tools_test.rs:9://! LLM layer — the tools are exercised for their wire behaviour alone.
crates/pod/tests/pod_comm_tools_test.rs:78:/// Create a spawner-owned `RuntimeDir` + `SpawnedPodRegistry` scoped to
crates/pod/tests/pod_comm_tools_test.rs:91:/// pods.json.
crates/pod/tests/pod_comm_tools_test.rs:136:/// Accept one connection, send the protocol's connect-time snapshot,
crates/pod/tests/pod_comm_tools_test.rs:150:/// Accept one connection, send the protocol's connect-time snapshot,
crates/pod/tests/pod_comm_tools_test.rs:151:/// read one `Method`, then write `response` back. Used by `SendToPod`
crates/pod/tests/pod_comm_tools_test.rs:172:/// Pretend to be a spawned Pod whose connect-time snapshot carries a
crates/pod/tests/pod_comm_tools_test.rs:174:/// every accept — the real Pod does the same, so `ReadPodOutput`'s
crates/pod/tests/pod_comm_tools_test.rs:251:// SendToPod
crates/pod/tests/pod_comm_tools_test.rs:259: // ack with `TurnStart` so `SendToPod`'s confirmation loop succeeds.
crates/pod/tests/pod_comm_tools_test.rs:325:// ReadPodOutput
crates/pod/tests/pod_comm_tools_test.rs:368: // on. Connect must fail → tool reports "stopped".
crates/pod/tests/pod_comm_tools_test.rs:380:// StopPod
crates/pod/tests/pod_comm_tools_test.rs:405: // Seed pods.json with a restored top-level `spawner` allocation whose
crates/pod/tests/pod_comm_tools_test.rs:407: // allocation — mimics a parent resumed after SpawnPod.
crates/pod/tests/pod_comm_tools_test.rs:476: // spawned_pods.json now lists zero children.
crates/pod/tests/pod_comm_tools_test.rs:492: // at a dead path. StopPod should still clean up local bookkeeping.
crates/pod/tests/pod_comm_tools_test.rs:727:// ListPods
crates/tui/src/picker.rs:1://! Inline-viewport "pick a Pod to attach or restore" UX.
crates/tui/src/picker.rs:3://! Reads live Pod allocations from the runtime registry and stopped Pod state
crates/tui/src/picker.rs:4://! from the session store's name-keyed metadata. Picking a live row attaches to
crates/tui/src/picker.rs:5://! its socket; picking a stopped row restores via `pod --pod <name>`.
crates/tui/src/picker.rs:65: /// User picked a Pod. `socket_override` is set for live rows when the
crates/tui/src/picker.rs:67: /// empty so the caller restores with `pod --pod <name>`.
crates/tui/src/picker.rs:102:/// One row in the Pod picker. The primary key is the Pod name; Session/Segment
crates/pod-registry/src/lifecycle.rs:15:/// Pod's entry. The guard keeps only the name + lock-file path; it
crates/pod-registry/src/lifecycle.rs:16:/// does not hold the `flock` for the Pod's lifetime.
crates/pod-registry/src/lifecycle.rs:41:/// Open the default lock file, register a top-level Pod, and return a
crates/pod-registry/src/lifecycle.rs:53:/// Open the default lock file, register a top-level Pod with explicit
crates/pod-registry/src/lifecycle.rs:82:/// a spawning Pod.
crates/pod-registry/src/lifecycle.rs:110:/// Rewrite the `segment_id` recorded for `pod_name` to
crates/pod-registry/src/lifecycle.rs:113:/// The Pod's in-memory `segment_id` can change underneath the
crates/pod-registry/src/lifecycle.rs:116:/// - `Pod::compact` mints a fresh session and swaps it in.
crates/pod-registry/src/lifecycle.rs:117:/// - `session_store::ensure_head_or_fork` auto-forks when another
crates/pod-registry/src/lifecycle.rs:122:/// concurrent `restore_from_manifest(new_id)` would see "no live
crates/pod-registry/src/lifecycle.rs:124:/// session this Pod just moved into.
crates/pod-registry/src/lifecycle.rs:150:/// Information about a Pod that currently holds an allocation for a
crates/pod-registry/src/lifecycle.rs:162:/// Used by `Pod::restore_from_manifest` to refuse a resume that would
crates/pod/src/ipc/notify_buffer.rs:1://! Pending-notify buffer for `Method::Notify` and `Method::PodEvent`.
crates/pod/src/ipc/notify_buffer.rs:5://! `PodInterceptor::pending_history_appends`, which the Worker calls
crates/pod/src/ipc/notify_buffer.rs:13://! This is the **single lane** for "system messages produced by Pod
crates/pod/src/ipc/notify_buffer.rs:14://! state that should land in the next LLM request": Notify, PodEvent,
crates/pod/src/ipc/notify_buffer.rs:49:/// Cloned between the Pod (producer) and PodInterceptor (consumer).
crates/pod/src/ipc/notify_buffer.rs:67: /// Push a typed pod-event entry onto the queue.
crates/pod/src/ipc/notify_buffer.rs:103:/// `Notify` (raw message) and `PodEvent` (rendered event line).
crates/tools/src/task.rs:1://! Session-lifetime TaskStore and builtin task tools.
crates/tools/src/task.rs:3://! The store survives compaction and Pod restart — it is reconstructed
crates/tools/src/task.rs:4://! on resume by replaying TaskCreate / TaskUpdate tool-call arguments
crates/tools/src/task.rs:6://! [`session_store::SessionId`] (the conversation), not the Pod process.
crates/tools/src/task.rs:551: /// Wrap snapshot text the way `Pod::try_pre_run_compact` does, so tests
crates/tools/src/task.rs:660: // Mirrors `Pod::try_pre_run_compact`'s synthetic insertion:
crates/tools/src/task.rs:663: // contract every provider request builder relies on (matched call_id,
crates/tools/src/task.rs:664: // tool name, content recoverable to the same TaskStore state).
crates/tools/src/task.rs:685: // expected tool name + detailed content.
crates/tui/src/markdown.rs:4://! into the rest of the TUI's wrap/scroll pipeline. Scope (which Markdown
crates/tui/src/block.rs:1://! History blocks: the unit of the TUI's stored display model.
crates/tui/src/block.rs:3://! The TUI holds a flat `Vec<Block>` and re-renders it every frame.
crates/tui/src/block.rs:5://! queuing a new line, so one logical thing (a tool call, an assistant
crates/tui/src/block.rs:23: /// element. File refs, auto-read snippets, workflow bodies, and future
crates/tui/src/block.rs:28: /// Echo of `Method::Notify` received by this Pod, surfaced as a log
crates/tui/src/block.rs:34: /// Echo of `Method::PodEvent` received by this Pod. Same role as
crates/tui/src/block.rs:61: /// Accumulated reasoning body. Empty for providers that emit only
crates/tui/src/block.rs:94: /// The TUI stopped observing events before a terminal compact event.
crates/tui/src/block.rs:106: /// For Edit tool calls: snapshot of the file content *before* the
crates/tui/src/block.rs:118: /// `ToolCallDone` received, waiting on the tool result.
crates/workflow/src/skill.rs:7://! it as a Workflow so `/<name>` resolves to it just like an internal
crates/workflow/src/skill.rs:8://! Workflow.
crates/workflow/src/skill.rs:12://! skills loadable. Internal Workflows (`.insomnia/workflow/<slug>.md`) keep
crates/workflow/src/skill.rs:34:/// `metadata` are documentary, while `allowed-tools` is recognised and
crates/workflow/src/skill.rs:52:/// to a `WorkflowRecord` by the caller via the `Skill → Workflow`
crates/workflow/src/skill.rs:53:/// projection in [`crate::WorkflowRecord`].
crates/workflow/src/skill.rs:60: /// register `scripts/` / `references/` / `assets/` against the Pod's
crates/workflow/src/skill.rs:64: /// the resulting `WorkflowRecord`.
crates/workflow/src/skill.rs:69: /// Project this skill into a [`WorkflowRecord`]. Skill-sourced
crates/workflow/src/skill.rs:70: /// Workflows are advertised resident (`model_invokation: true`,
crates/workflow/src/skill.rs:392: // allowed-tools triggers a warn, but parse succeeds.
crates/pod-registry/src/table.rs:20:/// One Pod's scope allocation.
crates/pod-registry/src/table.rs:22:/// `scope_allow` is the full set of allow rules the Pod was granted.
crates/pod-registry/src/table.rs:23:/// Portions delegated out to child Pods are **not** subtracted in
crates/pod-registry/src/table.rs:25:/// removing rules owned by any Pod whose `delegated_from` points to
crates/pod-registry/src/table.rs:30: /// Pod name — also the identity used throughout orchestration.
crates/pod-registry/src/table.rs:34: /// Pod's Unix socket path.
crates/pod-registry/src/table.rs:36: /// Allow rules granted to this Pod (write + read).
crates/pod-registry/src/table.rs:38: /// Deny rules that cap this Pod's effective scope. Normally empty for
crates/pod-registry/src/table.rs:39: /// fresh allocations; restored Pods use this to avoid reclaiming
crates/pod-registry/src/table.rs:43: /// Name of the Pod that delegated scope to this one, or `None` for
crates/pod-registry/src/table.rs:44: /// a top-level Pod started directly by a human.
crates/pod-registry/src/table.rs:46: /// Segment ID this Pod is currently writing to. `None` means this
crates/pod-registry/src/table.rs:72:/// Default on-disk path: `<runtime_dir>/pods.json` resolved via
crates/pod-registry/src/table.rs:73:/// [`manifest::paths::pod_registry_path`]. Tests should point this
crates/tui/src/ui.rs:1://! Full-screen rendering for the TUI.
crates/tui/src/ui.rs:39: /// tool blocks stay in detail.
crates/tui/src/ui.rs:650: // ToolCall is dispatched in `compute_history` via `tool::render_tool`
crates/tui/src/ui.rs:706:/// `#` knowledge = green, `/` workflow = yellow), so the user
crates/tui/src/ui.rs:1381: /// External-input echoes (`Method::Notify` / `Method::PodEvent`).
crates/tui/src/ui.rs:1383: /// the line came from another Pod or operator, not the local user.
crates/tui/src/ui.rs:1416:/// One-line summary of a `PodEvent` for display in the activity log.
crates/tui/src/ui.rs:1418:/// in the pod crate) — that path applies prompt-pack wrapping, while
crates/pod/src/main.rs:16: /// Manifest TOML to use directly, without loading user, project, or
crates/pod/src/main.rs:21: /// Start the project-manifest walk from this directory. When
crates/pod/src/main.rs:23: /// directory looking for `.insomnia/manifest.toml`.
crates/pod/src/main.rs:28: /// layer. Example: `--overlay 'pod.name = "dbg"'`.
crates/pod/src/main.rs:33: /// `<data_dir>/sessions/` (see `manifest::paths`).
crates/pod/src/main.rs:37: /// Claim a scope allocation pre-registered by a spawning Pod, rather
crates/pod/src/main.rs:39: /// process is launched by `SpawnPod`; end users should never pass it.
crates/pod/src/main.rs:43: /// Socket path of the spawning Pod, for delivering `Method::Notify`
crates/pod/src/main.rs:48: /// Resume or create a Pod by name. If name-keyed Pod state exists,
crates/pod/src/main.rs:50: /// fresh top-level Pod is created with this name.
crates/pod/src/main.rs:54: /// Require `--pod` to restore existing Pod state instead of creating a
crates/pod/src/main.rs:55: /// fresh Pod when no state exists. Used by Pod discovery restore flows.
crates/pod/src/main.rs:59: /// Restore a Pod from an existing session. The Pod re-uses the
crates/pod/src/main.rs:61: /// concurrent writers are prevented by the pod-registry.
crates/pod/src/main.rs:313: // Machine-readable ready line for parents that spawned this Pod
crates/pod/src/main.rs:314: // (e.g. the TUI's interactive `spawn` flow). Tab-separated so a
crates/pod/src/main.rs:315: // pod name with spaces still parses cleanly. Emit before the
crates/tui/src/main.rs:60: /// `tui <name>` / `tui --pod <name>`: attach to a live Pod by name if
crates/tui/src/main.rs:61: /// possible; otherwise launch `pod --pod <name>` so the pod process
crates/tui/src/main.rs:62: /// resumes from name-keyed state or creates a fresh same-name Pod.
crates/tui/src/main.rs:67: /// `tui -r` / `tui --resume`: open the Pod picker, then attach to the
crates/tui/src/main.rs:68: /// selected live Pod or restore the selected stopped Pod by name.
crates/tui/src/main.rs:235: // duplicate. Other errors (pod-name failures, terminal setup
crates/tui/src/main.rs:301: // Pick a Pod in its own inline viewport, dropping the viewport before
crates/tui/src/main.rs:355: // The Pod sends `Event::Snapshot` automatically on connect;
crates/tui/src/main.rs:890:/// Idle / Paused → 2-tap to quit the TUI (the Pod keeps running).
crates/pod/src/permission.rs:12:/// Built-in manifest permission policy for `PreToolCall`.
crates/pod/src/permission.rs:14:/// This hook is registered by Pod before user hooks, so manifest-level deny
crates/tui/src/app.rs:29: /// Latest candidate set returned by the Pod for `(kind, prefix)`.
crates/tui/src/app.rs:72: /// Last controller status reported by the Pod. Drives the status line
crates/tui/src/app.rs:75: /// True while the Pod is in `PodStatus::Running`.
crates/tui/src/app.rs:77: /// True while the Pod is in `PodStatus::Paused`.
crates/tui/src/app.rs:86: /// Latest session context tokens reported by the Pod. This is the raw
crates/tui/src/app.rs:94: /// Latest memory extract/consolidation lifecycle event for actionbar observability.
crates/tui/src/app.rs:103: /// 2-tap guard for `Ctrl-C` when the Pod is not running. First press
crates/tui/src/app.rs:105: /// TUI (the Pod itself stays alive).
crates/tui/src/app.rs:119: /// In-TUI mirror of the Pod's session task store, reconstructed
crates/tui/src/app.rs:120: /// directly from observed `TaskCreate` / `TaskUpdate` tool calls and
crates/tui/src/app.rs:121: /// `[Session TaskStore snapshot]` system messages — no protocol
crates/tui/src/app.rs:122: /// surface added on the Pod side.
crates/tui/src/app.rs:129: /// TUI-local FIFO of user inputs submitted while the Pod is already running.
crates/tui/src/app.rs:130: /// Entries have not been sent to the Pod yet, so they remain editable/cancellable locally.
crates/tui/src/app.rs:356: /// Files (and Knowledge / Workflow entries, which have no dir
crates/tui/src/app.rs:387: // Empty Enter only does something meaningful when the Pod
crates/tui/src/app.rs:408: // client subscribed to the Pod). Locally we only clear the
crates/tui/src/app.rs:410: // local state to undo the visible submit if the Pod reports that
crates/tui/src/app.rs:476: // Pod attaches the original `Vec<Segment>` to user
crates/tui/src/app.rs:619: // through to subscribers but the TUI currently derives its
crates/tui/src/app.rs:677: // for providers that don't stream deltas.
crates/tui/src/app.rs:782: // Result for an unknown tool call. Surface it as an
crates/tui/src/app.rs:802: // Subtract the cache-hit portion so a tool loop that
crates/tui/src/app.rs:997: // tool-call equivalent does, since tool calls finalize in
crates/tui/src/app.rs:1052: /// Called on `TurnEnd`: mark any tool call still in an in-progress
crates/tui/src/app.rs:1064: // Earlier tool calls in the same list are already
crates/tui/src/app.rs:1215: /// because the Pod identity hasn't changed.
crates/tui/src/app.rs:1275: /// block (`Block::Notify`, `Block::PodEvent`, …).
crates/tui/src/app.rs:1305: /// Sweep all current tool-call blocks: any that never resolved into
crates/tui/src/app.rs:1307: /// snapshot replay so dangling in-flight tool calls in the seed
crates/tui/src/app.rs:1354:/// Strip the `cat -n` line-number gutter that the Read tool prepends to
crates/tui/src/app.rs:1389:/// `Resume` when the Pod is paused.
crates/tui/src/app.rs:2290: // Snapshot text injected as a workflow body (kind doesn't matter
crates/tui/src/app.rs:2309: // Live tool call before the snapshot lands — restore must wipe
crates/tui/src/app.rs:2382:/// Seed / mutate the file-content cache based on a completed tool call.
crates/tui/src/app.rs:2384:/// Each built-in file tool has its own rule: Read copies the result body
crates/tui/src/app.rs:2401: // The Read tool emits a `cat -n` style display: each
crates/workflow/src/schema.rs:1://! Workflow frontmatter schema and frontmatter splitting helpers.
crates/workflow/src/schema.rs:13: /// Workflows do not require timestamps in the MVP. Human-authored files
crates/manifest/src/paths.rs:5://! - **`config_dir`** — 人が手で書く / 編集する設定。`manifest.toml`,
crates/manifest/src/paths.rs:6://! `providers.toml`, `models.toml`, `prompts/`, `prompts.toml` 等
crates/manifest/src/paths.rs:9://! `pods.json`, `pid` ファイル等
crates/manifest/src/paths.rs:29:/// Environment variable that points at an explicit user manifest.
crates/manifest/src/paths.rs:31:/// Pod CLI treats a non-empty value as an explicit manifest path. Empty values
crates/manifest/src/paths.rs:33:/// auto-discovered user manifest path.
crates/manifest/src/paths.rs:36:/// 設定ディレクトリ。`manifest.toml`, `providers.toml`, `models.toml`,
crates/manifest/src/paths.rs:63:/// ランタイムディレクトリ。socket, `pods.json`, Pod ごとの `pid` /
crates/manifest/src/paths.rs:80:/// `<config_dir>/manifest.toml` — user manifest の既定位置。
crates/manifest/src/paths.rs:83:/// [`user_manifest_path_with_env_override`] when mirroring the Pod CLI cascade
crates/manifest/src/paths.rs:89:/// Resolve an explicit user manifest override from an env value.
crates/manifest/src/paths.rs:92:/// override, matching the Pod CLI's `INSOMNIA_USER_MANIFEST` handling.
crates/manifest/src/paths.rs:103:/// User manifest path using the same env override rule as the Pod CLI cascade.
crates/manifest/src/paths.rs:106:/// empty, this falls back to [`user_manifest_path`]. The returned path is not
crates/manifest/src/paths.rs:122:/// `<config_dir>/<file_name>` — providers.toml / models.toml 等の
crates/manifest/src/paths.rs:128:/// `<data_dir>/sessions/` — session store のデフォルト位置。
crates/manifest/src/paths.rs:133:/// `<runtime_dir>/pods.json` — machine-wide Pod allocation registry。
crates/manifest/src/paths.rs:138:/// `<runtime_dir>/<pod_name>/` — Pod ごとのランタイムディレクトリ。
crates/manifest/src/paths.rs:143:/// `<runtime_dir>/<pod_name>/sock` — Pod の Unix socket パス。
crates/manifest/src/paths.rs:145:/// Pod プロセス内で実際に socket を作成するのは `pod` crate の
crates/manifest/src/paths.rs:146:/// `RuntimeDir::socket_path()` で、Pod 名が分かっている外部 (TUI の
crates/pod/src/discovery.rs:1://! Pod-state-backed discovery and restore/attach tools.
crates/pod/src/discovery.rs:3://! This surface deliberately does not enumerate every Pod on the host. The
crates/pod/src/discovery.rs:5://! Pods it spawned according to durable Pod state) and only then reads each
crates/pod/src/discovery.rs:6://! Pod's own state. Name-targeted operations distinguish missing state from
crates/pod/src/discovery.rs:192: // The live in-memory registry covers just-spawned children even if a
crates/pod/src/discovery.rs:194: // additive visibility hint, not the source of Pod metadata.
crates/pod/src/discovery.rs:594: /// Pod name to inspect, attach, or restore.
crates/pod/src/discovery.rs:840: // Pod state when spawned_pods.json is absent.
crates/pod-registry/src/lib.rs:1://! Machine-wide Pod allocation registry.
crates/pod-registry/src/lib.rs:3://! A single JSON file at `<runtime_dir>/pods.json` records every live
crates/pod-registry/src/lib.rs:4://! Pod's allocation (see [`manifest::paths::pod_registry_path`] for
crates/pod-registry/src/lib.rs:6://! across processes so spawn sequences from unrelated Pods can't race.
crates/pod-registry/src/lib.rs:8://! Each Pod, when starting, acquires the lock, reclaims stale entries
crates/pod-registry/src/lib.rs:9://! (Pods whose PID has died), checks that its requested write scope
crates/pod-registry/src/lib.rs:13://! recovery rides on the next Pod that opens the file — no background
crates/pod/src/segment_log_sink.rs:1://! Pod-side session-log mirror + broadcast.
crates/pod/src/segment_log_sink.rs:3://! Owns the in-memory `Vec<LogEntry>` mirror that backs `Event::Snapshot`
crates/pod/src/segment_log_sink.rs:4://! delivery to newly connected clients and the
crates/pod/src/segment_log_sink.rs:7://! Pod (which still owns the `Store` handle); the sink stays focused on
crates/pod/src/segment_log_sink.rs:12://! 1. Pod writes the entry to disk via the `Store`.
crates/pod/src/segment_log_sink.rs:13://! 2. Pod calls [`SegmentLogSink::publish`] which acquires the mirror
crates/pod/src/segment_log_sink.rs:18://! so the `(snapshot, receiver)` pair returned to a connecting client
crates/pod/src/segment_log_sink.rs:36:/// In-memory mirror + broadcast fan-out for the active session log.
crates/pod/src/segment_log_sink.rs:38:/// Clone is cheap (`Arc` clone) — the Pod hands one to the IPC layer
crates/pod/src/segment_log_sink.rs:86: /// MUST be called only after the Pod has successfully persisted the
crates/pod/src/segment_log_sink.rs:101: /// entry would just double-render every block on the client side.
crates/pod/src/segment_log_sink.rs:117: /// `true` for entry kinds that the IPC layer forwards to clients
crates/tools/tests/integration.rs:1://! Cross-tool integration tests exercising `builtin_tools()` end-to-end.
crates/tools/tests/integration.rs:3://! `ToolServerHandle::register_tool` / `flush_pending` are `pub(crate)` in
crates/tools/tests/integration.rs:4://! llm-worker, so from here we exercise the factories directly — the same
crates/tools/tests/integration.rs:245: // The key invariant: all builtin tools share the same ScopedFs instance,
crates/tools/tests/integration.rs:254: // Read via Read tool
crates/tools/tests/integration.rs:256: // Write via Write tool — must succeed because the shared ScopedFs has the read
crates/tools/tests/integration.rs:292: // Registration order from builtin_tools(): Read, Write, Edit, Glob, Grep, Bash, TaskCreate, TaskList, TaskGet, TaskUpdate
crates/tools/tests/integration.rs:311:// Regression: tool name capitalization matches Claude Code reference
crates/tools/tests/integration.rs:390: // The Bash tool starts at the ScopedFs's pwd. Without any `cd`, its
crates/tools/tests/integration.rs:426: // Read the file via the Read tool — must succeed (in scope).
crates/workflow/src/error.rs:1://! Errors raised by Workflow loading and linting.
crates/workflow/src/error.rs:8:/// A single Workflow linter violation.
crates/tools/src/bash.rs:1://! `Bash` tool — execute shell commands in a one-shot, stateless way.
crates/tools/src/bash.rs:8://! mirrors Claude Code's own Bash tool — predictable, no hidden state.
crates/tools/src/bash.rs:63:/// Maximum bytes loaded into memory from the spilled output file. The
crates/tools/src/bash.rs:114: // full output later; cleanup is deferred to `Drop` on this tool.
crates/tools/src/bash.rs:324:/// Factory for the `Bash` tool.
crates/tools/src/bash.rs:328:/// invocation starts at `fs.pwd()` — the tool is intentionally stateless
crates/pod-registry/src/test_util.rs:1://! Shared test helpers for the pod-registry crate.
crates/pod/src/interrupt_prep.rs:1://! Pre-run cleanup that fires when a Pod transitions out of `Paused`
crates/pod/src/interrupt_prep.rs:5://! `Item::ToolCall` (tool_use emitted by the LLM but whose tool did not
crates/pod/src/interrupt_prep.rs:7://! `Item::ToolResult` so the next request is wire-valid under providers
crates/pod/src/interrupt_prep.rs:11://! happen at the front of `Pod::run` when
crates/pod/src/interrupt_prep.rs:12://! `worker.last_run_interrupted()` is set; see `Pod::apply_interrupt_prep`.
crates/pod/src/interrupt_prep.rs:38:/// Test-only helper to surface the canonical interrupt tool-result
crates/pod/src/interrupt_prep.rs:39:/// summary without round-tripping through a Pod — used by tests in
crates/workflow/src/lib.rs:1://! Workflow records, loading, Agent Skill ingestion, and human-edit linting.
crates/workflow/src/workflow.rs:1://! Workflow loader and registry.
crates/workflow/src/workflow.rs:3://! Workflows live under `<workspace>/.insomnia/workflow/<slug>.md`. They are
crates/workflow/src/workflow.rs:5://! intentionally strict about malformed records because Pod startup should
crates/workflow/src/workflow.rs:21:/// Hard cap on Workflow descriptions that are advertised resident.
crates/workflow/src/workflow.rs:25:/// Origin of a [`WorkflowRecord`]. Used to break ties when the same slug
crates/workflow/src/workflow.rs:26:/// is provided by multiple sources: workspace-authored Workflows always
crates/workflow/src/workflow.rs:30: /// `<workspace>/.insomnia/workflow/<slug>.md`. Authored in-tree by
crates/workflow/src/workflow.rs:34: /// manifest. `dir` is the skills root that contained
crates/workflow/src/workflow.rs:60: /// when [`WorkflowRegistry::merge_skill`] encounters a slug
crates/workflow/src/workflow.rs:65:/// Returned by [`WorkflowRegistry::merge_skill`] when an incoming skill is
crates/workflow/src/workflow.rs:66:/// shadowed by an existing record (either an internal Workflow or a
crates/workflow/src/workflow.rs:138: /// Workflow or earlier-fed skill) already owns the slug, the
crates/workflow/src/workflow.rs:383: // The legacy `.insomnia/memory/workflow/` location is no longer
crates/workflow/src/workflow.rs:384: // a Workflow source. Files placed there must be ignored (the
crates/workflow/src/workflow.rs:385: // loader is rooted at `.insomnia/workflow/` only).
crates/workflow/src/workflow.rs:462: // The kept record is still the workspace workflow.
crates/pod/src/factory.rs:1://! Builder that assembles a [`PodManifest`] from cascade layers.
crates/pod/src/factory.rs:5://! layers provide everything; `TryFrom<PodManifestConfig>` fills in
crates/pod/src/factory.rs:7://! 2. **User manifest** — `$XDG_CONFIG_HOME/insomnia/manifest.toml`
crates/pod/src/factory.rs:8://! (falling back to `~/.config/insomnia/manifest.toml`).
crates/pod/src/factory.rs:9://! 3. **Project manifest** — closest `.insomnia/manifest.toml` found by
crates/pod/src/factory.rs:12://! [`PodManifestConfig`] supplied by the caller (CLI flags, GUI,
crates/pod/src/factory.rs:13://! spawning Pod, etc.). Highest priority.
crates/pod/src/factory.rs:17://! in the project manifest means the project root regardless of how
crates/pod/src/factory.rs:20://! - user manifest: base = the directory holding the manifest file
crates/pod/src/factory.rs:21://! (which is `manifest::paths::config_dir()` when loaded via the
crates/pod/src/factory.rs:23://! - project manifest: base = the **project root** (the parent of
crates/pod/src/factory.rs:25://! manifests with `target = "."` cover the whole workspace
crates/pod/src/factory.rs:39:/// Errors raised while building a [`PodManifest`] from cascade layers.
crates/pod/src/factory.rs:70:/// validated [`PodManifest`].
crates/pod/src/factory.rs:77: /// User layer paired with the directory the manifest lives in
crates/pod/src/factory.rs:80: /// Project layer paired with the directory the manifest lives in.
crates/pod/src/factory.rs:88: /// the user manifest when loaded. `<user_manifest_dir>/prompts/`.
crates/pod/src/factory.rs:91: /// project manifest when loaded.
crates/pod/src/factory.rs:93: /// `<user_manifest_dir>/prompts.toml`, sibling of the user
crates/pod/src/factory.rs:106: /// Attempt to load the user manifest from the user's config
crates/pod/src/factory.rs:107: /// directory (see [`manifest::paths::config_dir`] for how the path
crates/pod/src/factory.rs:109: /// no-op — user manifests are optional.
crates/pod/src/factory.rs:123: /// Load the user manifest from an explicit path. The file must
crates/pod/src/factory.rs:134: /// Walk up from `cwd` looking for a `.insomnia/manifest.toml` and
crates/pod/src/factory.rs:148: /// Walk up from `start` looking for a `.insomnia/manifest.toml`.
crates/pod/src/factory.rs:149: /// Explicit variant of [`with_project_manifest_auto`] for tests.
crates/pod/src/factory.rs:160: /// Shared setup for `with_project_manifest_auto` / `_from`: record
crates/pod/src/factory.rs:161: /// the manifest's project root as the base for relative-path
crates/pod/src/factory.rs:163: /// so `target = "."` in a project manifest means the project root.
crates/pod/src/factory.rs:196: /// each manifest file: `prompts/`). Missing directories are
crates/pod/src/factory.rs:213: // only when a manifest pack explicitly references it.
crates/pod/src/factory.rs:228: /// [`PodManifest`], and return it together with a [`PromptLoader`]
crates/pod/src/factory.rs:230: /// feeds `{% include "name" %}` references in the Pod's system
crates/pod/src/factory.rs:238: /// The base layer is [`PodManifestConfig::builtin_defaults`] so
crates/pod/src/factory.rs:240: /// (see [`manifest::defaults`]).
crates/pod/src/factory.rs:271: // manifest path.
crates/pod/src/factory.rs:515: // user manifest at <tmp>/cfg/manifest.toml with a relative
crates/pod/src/factory.rs:551: // `.insomnia/manifest.toml` is the marker for the project, but
crates/pod/src/factory.rs:554: // project manifest should cover the whole workspace, not the
crates/pod/src/factory.rs:597: // .insomnia/manifest.toml and .insomnia/prompts/local.md
crates/pod/src/factory.rs:666: // pod.name missing — resolver must reject.
crates/workflow/src/scope.rs:1://! Scope deny helpers for human-authored Workflow files.
crates/workflow/src/scope.rs:9:/// `<workspace>/.insomnia/workflow/` for generic CRUD tools.
crates/pod-registry/src/mutate.rs:14:/// Register a top-level Pod (started directly by a human, no
crates/pod-registry/src/mutate.rs:16:/// conflicts so a crashed Pod's allocation doesn't block the new one.
crates/pod-registry/src/mutate.rs:19:/// `segment_id`, so two `restore_from_manifest` calls under different
crates/pod-registry/src/mutate.rs:20:/// `pod_name`s cannot both grab the same session log.
crates/pod-registry/src/mutate.rs:40:/// Register a top-level Pod with explicit deny rules that reduce the
crates/pod-registry/src/mutate.rs:43:/// Conflict semantics: if every Pod overlapping a requested allow rule
crates/pod-registry/src/mutate.rs:47:/// competitor actually descends from this Pod's prior delegations.
crates/pod-registry/src/mutate.rs:108:/// Register a spawned Pod whose scope is delegated from `spawner`.
crates/pod-registry/src/mutate.rs:110:/// scope; overlap with any Pod other than `spawner` is a conflict.
crates/pod-registry/src/mutate.rs:158:/// Remove a Pod's allocation. Surviving children are reparented to
crates/pod-registry/src/mutate.rs:159:/// the removed Pod's own `delegated_from`, so the delegation tree
crates/pod-registry/src/mutate.rs:231:/// dead Pod's `delegated_from`. Idempotent and best-effort — I/O
crates/pod-registry/src/mutate.rs:232:/// errors on save are swallowed so a crashed Pod's entry never blocks
crates/pod-registry/src/mutate.rs:680: // a different pod_name. Without the SegmentConflict check both
crates/workflow/src/linter.rs:1://! Human-edit linter for Workflow files.
crates/workflow/src/linter.rs:43: /// Validate a human-authored Workflow document.
crates/manifest/src/config.rs:1://! Partial-form of [`crate::PodManifest`] used as cascade layers.
crates/manifest/src/config.rs:3://! `PodManifestConfig` mirrors `PodManifest` but every field is optional
crates/manifest/src/config.rs:4://! so individual layers (builtin defaults, user manifest, project
crates/manifest/src/config.rs:5://! manifest, programmatic overlay) can be partial. Layers are combined
crates/manifest/src/config.rs:6://! via [`PodManifestConfig::merge`] and the final config is converted to
crates/manifest/src/config.rs:7://! a validated [`PodManifest`] via `TryFrom`.
crates/manifest/src/config.rs:24:/// Partial-form Pod manifest. Every field is optional; one or more
crates/manifest/src/config.rs:25:/// instances merge via [`PodManifestConfig::merge`] before being
crates/manifest/src/config.rs:26:/// converted to a validated [`PodManifest`] via `TryFrom`.
crates/manifest/src/config.rs:32: /// [`ModelManifest`] を使う。ref / inline の両形を受け入れるための
crates/manifest/src/config.rs:49: /// Memory subsystem opt-in. See [`MemoryConfig`].
crates/manifest/src/config.rs:61: /// Optional `PromptCatalog` manifest pack override. See
crates/manifest/src/config.rs:62: /// [`crate::PodMeta::prompt_pack`] for semantics. Relative paths
crates/manifest/src/config.rs:63: /// are resolved through [`PodManifestConfig::resolve_paths`].
crates/manifest/src/config.rs:160:/// Errors raised when converting a [`PodManifestConfig`] to a validated
crates/manifest/src/config.rs:161:/// [`PodManifest`] via `TryFrom`.
crates/manifest/src/config.rs:170:/// Reject manifest fields that were intentionally removed and must not be
crates/manifest/src/config.rs:197: /// Parse a partial manifest from a TOML string. Unknown top-level or
crates/manifest/src/config.rs:211: /// [`crate::defaults`]. Used by [`PodFactory::resolve`] as the
crates/manifest/src/config.rs:215: /// `TryFrom<PodManifestConfig>` also reads the same constants as a
crates/manifest/src/config.rs:457:/// Invariant check: every path in a fully-resolved [`PodManifestConfig`]
crates/manifest/src/config.rs:459:/// [`PodManifestConfig::resolve_paths`]; if one reaches `TryFrom` it
crates/manifest/src/config.rs:481:/// 揃っているか)の検証はカタログを知る `crates/provider` 側で行う。
crates/manifest/src/config.rs:1070: // `pod.pwd` specifically is silently dropped after the
crates/manifest/src/config.rs:1200: // A project-layer manifest with only scope set must parse fine.
crates/manifest/src/config.rs:1227: // required fields must resolve to a PodManifest carrying the
crates/tools/src/tracker.rs:1://! Pod-lifetime tracker for file operations performed by the builtin
crates/tools/src/tracker.rs:2://! file-manipulation tools.
crates/tools/src/tracker.rs:12://! files that have been touched by any of the tools, so the Pod
crates/tools/src/tracker.rs:21://! A `Tracker` is **Pod-process scoped**: the Pod layer creates a fresh
crates/tools/src/tracker.rs:22://! instance at the start of each Pod run (including resume) and discards
crates/tools/src/tracker.rs:25://! write boundary is likewise Pod-process scoped (derived from the
crates/tools/src/tracker.rs:26://! manifest). The two are orthogonal and the Pod wires them together
crates/tools/src/tracker.rs:27://! when registering builtin tools.
crates/tools/src/tracker.rs:31://! # use manifest::Scope;
crates/tools/src/tracker.rs:32://! # use tools::{ScopedFs, Tracker, builtin_tools};
crates/tools/src/tracker.rs:34://! let fs = ScopedFs::new(scope, PathBuf::from("/workspace")); // pod lifetime
crates/tools/src/tracker.rs:37://! let task_store = tools::TaskStore::new();
crates/tools/src/tracker.rs:38://! let defs = builtin_tools(fs, tracker, task_store, bash_outputs);
crates/tools/src/tracker.rs:73:/// `Tracker` across every builtin tool in a session is effectively free
crates/tools/src/tracker.rs:88: /// Called by the `Read` tool after a successful read, and by the
crates/tools/src/tracker.rs:89: /// `Write` / `Edit` tools after a successful modification (so that
crates/tools/src/tracker.rs:132: /// Intended for callers like the Pod's context-compaction path, which
crates/manifest/src/scope.rs:1://! Runtime representation of a Pod's access scope.
crates/manifest/src/scope.rs:5://! resolution runs earlier, inside [`crate::PodManifestConfig::resolve_paths`].
crates/manifest/src/scope.rs:17:/// Parsed, pwd-resolved set of allow/deny rules for a Pod.
crates/manifest/src/scope.rs:55: /// [`crate::PodManifestConfig::resolve_paths`] so that cascade merge
crates/manifest/src/scope.rs:148: /// Used by the pod-registry, where every Pod's allocation
crates/manifest/src/scope.rs:206: /// (e.g. SpawnPod-style delegation that strips Write from the
crates/manifest/src/scope.rs:302:/// out to multiple consumers (Pod, ScopedFs, future grant/revoke
crates/pod/src/fs_view.rs:1://! Pod 視点のファイルシステム操作。
crates/pod/src/fs_view.rs:3://! `ScopedFs` の上に「Pod が読み取りたい / 列挙したい」操作を集約する軽い wrapper。
crates/pod/src/fs_view.rs:7://! 変換する経路。`Pod::compact` から呼ばれる。
crates/pod/src/fs_view.rs:9://! compact tool 側の `mark_read_required` でも使用。
crates/pod/src/fs_view.rs:10://! - `list_file_completions` — TUI 補完用、prefix マッチでファイル候補を列挙する経路。
crates/pod/src/fs_view.rs:24:/// TUI completion と同じ浅い一覧という意味論に揃えるため、同じ上限を使う。
crates/pod/src/fs_view.rs:38:/// Pod から見えるファイルシステム操作の入口。Clone は cheap`ScopedFs` 内 `Arc`)。
crates/pod/src/fs_view.rs:53:/// `resolve_file_ref` の失敗理由。Pod 側で Alert に振り分けるために
crates/pod/src/controller.rs:30:// PodHandle — client-facing, Clone-able
crates/pod/src/controller.rs:55: /// Broadcast an event to all listeners (including socket clients).
crates/pod/src/controller.rs:87: // history / user_segments are no longer mirrored on PodSharedState —
crates/pod/src/controller.rs:88: // clients reconstruct them from `Event::Snapshot` + live
crates/pod/src/controller.rs:90: // only flip the status and kick post-run memory jobs here.
crates/pod/src/controller.rs:97:/// `Pod::*` entry point — `RunForNotification` carries none because
crates/pod/src/controller.rs:98:/// `pod.run_for_notification()` drains the NotifyBuffer on its own.
crates/pod/src/controller.rs:102: /// `InvokeKind` is the trigger that flipped the Pod from IDLE
crates/pod/src/controller.rs:103: /// (Notify or PodEvent) and is recorded by the Invoke marker
crates/pod/src/controller.rs:104: /// committed at the start of `pod.run_for_notification`.
crates/pod/src/controller.rs:112: /// `PodEvent::TurnEnded` / `PodEvent::Errored` reports so the parent
crates/pod/src/controller.rs:115: /// notify buffer (Notify / inbound PodEvent) and stays silent.
crates/pod/src/controller.rs:125:// PodController — actor that owns a Pod
crates/pod/src/controller.rs:141: // === 1. Initialization (channels / RuntimeDir / pod-immutable
crates/pod/src/controller.rs:142: // snapshots / SpawnedPodRegistry / alerter attach /
crates/pod/src/controller.rs:149: // Runtime directory is created before tool registration because
crates/pod/src/controller.rs:150: // the spawn-tool factories need its socket path, and before the
crates/pod/src/controller.rs:173: // Hand the alerter to the Pod so internal operations (compaction,
crates/pod/src/controller.rs:177: // Also hand the raw broadcast sender so Pod-internal operations
crates/pod/src/controller.rs:181: // Bash spills long outputs to a per-pod subdir under the runtime
crates/pod/src/controller.rs:183: // Pod's runtime scope so the agent can `Read` saved files
crates/pod/src/controller.rs:202: // item / tool result that lands in history. With the sync
crates/pod/src/controller.rs:207: // assistant / tool / system items all share one commit path.
crates/pod/src/controller.rs:215: // === 3. Tool registration (builtin / memory / spawn-orchestration) ===
crates/pod/src/controller.rs:224: // Materialise pending tool factories so the greeting reflects
crates/pod/src/controller.rs:228: // === 4. Initial runtime files + PodSharedState + PodHandle +
crates/pod/src/controller.rs:266: // Clone cancel sender and notification buffer before moving pod
crates/pod/src/controller.rs:268: // via these handles while pod itself is borrowed by drive_turn.
crates/pod/src/controller.rs:291:/// Wire the per-event broadcast bridges on the Pod's Worker. Each callback
crates/pod/src/controller.rs:292:/// re-publishes a worker-level signal as a `protocol::Event` on `event_tx`
crates/pod/src/controller.rs:293:/// so subscribers (TUI, socket clients) get a single typed stream.
crates/pod/src/controller.rs:295:/// `Pod::wire_history_persistence` is called separately to wire the
crates/pod/src/controller.rs:296:/// per-item history commit callback so every assistant / tool item
crates/pod/src/controller.rs:382: // Start fires unconditionally so the TUI can show "Thinking..."
crates/pod/src/controller.rs:383: // even when the provider doesn't emit plaintext deltas.
crates/pod/src/controller.rs:472: // through the session-log sink as a typed `LogEntry`, and clients
crates/pod/src/controller.rs:477:/// Register the builtin file-manipulation tools, optional memory tools,
crates/pod/src/controller.rs:478:/// and the Pod-orchestration tools (SpawnPod + comm) on the Pod's
crates/pod/src/controller.rs:479:/// Worker. Returns the `ScopedFs` clone used to attach a `PodFsView` to
crates/pod/src/controller.rs:492: // Pod-immutable snapshots taken before the mutable worker borrow
crates/pod/src/controller.rs:493: // below so the worker borrow doesn't conflict with reads on `pod`.
crates/pod/src/controller.rs:507: // The Pod's SharedScope (already augmented with the bash-output
crates/pod/src/controller.rs:509: // ScopedFs (builtin tools, fs_view, compact worker) reads from it,
crates/pod/src/controller.rs:510: // and any future scope mutation (SpawnPod-style revoke, future
crates/pod/src/controller.rs:515: // a clone for the FS view we attach below, since the tools consume
crates/pod/src/controller.rs:525: // Memory subsystem opt-in. When `[memory]` is present in the
crates/pod/src/controller.rs:526: // manifest, register the memory-specific Read/Write/Edit tools that
crates/pod/src/controller.rs:527: // target `<workspace>/memory/` and `<workspace>/knowledge/` with
crates/pod/src/controller.rs:529: // scope were already applied during `Pod::from_manifest`.
crates/pod/src/controller.rs:544: // Pod-orchestration tools (SpawnPod + the four comm tools) share
crates/pod/src/controller.rs:545: // the Pod-scoped `SpawnedPodRegistry` (also consumed by the main
crates/pod/src/controller.rs:546: // loop's `PodEvent` handler).
crates/pod/src/controller.rs:697: // `pod` after the run completes, so we don't push
crates/pod/src/controller.rs:698: // here. Workflow-invocation validation happens inside
crates/pod/src/controller.rs:699: // `Pod::run`; on failure the turn errors out via
crates/pod/src/controller.rs:703: // applied inside `Pod::run` itself when the worker's
crates/pod/src/controller.rs:712: // Client-side live echo is delivered as `Event::SystemItem`
crates/pod/src/controller.rs:749: // Pod is Idle (Running turns go through `drive_turn`,
crates/pod/src/controller.rs:856: // typed `SystemItem::PodEvent` lands as a
crates/pod/src/controller.rs:858: // to clients as `Event::SystemItem`.
crates/pod/src/controller.rs:872: // `SystemItem::PodEvent` via the interceptor drain.
crates/pod/src/controller.rs:874: // Auto-kick a turn if the Pod is idle so the
crates/pod/src/controller.rs:886: // Background memory jobs own extract/consolidate workers after a
crates/pod/src/controller.rs:891: // Report upward that this Pod is stopping before the controller
crates/pod/src/controller.rs:912:/// Drives a Pod future (one in-flight turn) while concurrently
crates/pod/src/controller.rs:916:/// `parent_socket` / `self_name` drive upward `PodEvent` reports
crates/pod/src/controller.rs:918:/// `None` parent skips the send (top-level Pod). Transient method
crates/pod/src/controller.rs:924:/// `Method::Notify` / inbound `PodEvent` auto-kicks complete silently
crates/pod/src/controller.rs:971: // clients as a normal Paused run-end, and
crates/pod/src/controller.rs:972: // intentionally skip `PodEvent::Errored` upward:
crates/pod/src/controller.rs:1050: // `SystemItem::PodEvent`.
crates/pod/src/controller.rs:1078: // `build_client` がここに到達する前に同じマニフェストで成功している
crates/pod/src/controller.rs:1107: // a flush the tool table is empty and this returns an empty vec.
crates/pod/src/controller.rs:1219: /// return the first `Method::PodEvent` read from it. Returns `None`
crates/pod/src/controller.rs:1220: /// on timeout / EOF / non-PodEvent.
crates/tui/src/spawn.rs:1://! Inline-viewport "spawn Pod and attach" UX.
crates/tui/src/spawn.rs:4://! with no positional argument. Walks the cwd for a `.insomnia/manifest.toml`
crates/tui/src/spawn.rs:5://! to seed defaults, prompts for the Pod's name, and on confirmation
crates/tui/src/spawn.rs:6://! launches the `pod` binary as an independent process with a freshly built
crates/tui/src/spawn.rs:7://! overlay (name + cwd scope when no project manifest exists). Once
crates/tui/src/spawn.rs:92:/// behaviour); `Some(id)` swaps the dialog into "Resume Pod" mode and
crates/tui/src/spawn.rs:93:/// passes `--session <id>` to the spawned `pod` child.
crates/tui/src/spawn.rs:146: // Phase 2: launch pod and wait for ready line. Drop the cursor
crates/tui/src/spawn.rs:173:/// Launch `pod --pod <name>` without opening the name dialog. The child Pod
crates/tui/src/spawn.rs:174:/// resolves persisted Pod metadata if present, or creates a fresh same-name Pod
crates/tui/src/spawn.rs:175:/// with the usual TUI cwd-scope fallback.
crates/tui/src/spawn.rs:212: // Run the same merge pod itself uses, then read what's missing off the
crates/tui/src/spawn.rs:213: // result. We only look at `scope.allow` here — `pod.name` is an
crates/tui/src/spawn.rs:214: // instance-level identifier and is supplied by the dialog or `--pod`.
crates/tui/src/spawn.rs:215: // TUI must pre-read the same user manifest path that the pod CLI will use,
crates/tui/src/spawn.rs:336: // Filesystem-safe; pod.name becomes a runtime-dir name.
crates/tui/src/spawn.rs:435: /// True when at least one cascade layer (user or project manifest)
crates/tui/src/spawn.rs:453: /// `Some(id)` flips the dialog into "Resume Pod" mode: the title
crates/tui/src/spawn.rs:455: /// child pod is launched with `--session <id>` so it restores
crates/tui/src/spawn.rs:458: /// When true, launch the child with `--pod <name>` so the pod process
crates/tools/src/read.rs:1://! `Read` tool — read a text file with offset/limit, return line-numbered output.
crates/tools/src/read.rs:116:/// Factory for the `Read` tool.
crates/manifest/src/cascade.rs:3://! Pod manifests are assembled from up to three on-disk layers (see
crates/manifest/src/cascade.rs:4://! `pod::PodFactory` for the full cascade story):
crates/manifest/src/cascade.rs:6://! 1. **User manifest** — Pod CLI uses
crates/manifest/src/cascade.rs:7://! [`crate::paths::user_manifest_path_with_env_override`]
crates/manifest/src/cascade.rs:8://! 2. **Project manifest** at the closest `.insomnia/manifest.toml`
crates/manifest/src/cascade.rs:16://! that's the data layer's responsibility (`PodManifestConfig::merge`
crates/manifest/src/cascade.rs:17://! and `PodManifest::try_from`). This module only handles the I/O and
crates/manifest/src/cascade.rs:24:/// Errors returned when reading a single manifest layer from disk.
crates/manifest/src/cascade.rs:41:/// Walk up from `start` looking for `.insomnia/manifest.toml`. Returns
crates/manifest/src/cascade.rs:60:/// Read a manifest file from `path` and parse it as a partial
crates/manifest/src/cascade.rs:61:/// [`PodManifestConfig`]. Path resolution against a base directory and
crates/manifest/src/model.rs:3://! Pod マニフェストの `[model]` セクションで記述する型。`ref`(プロバイダ
crates/manifest/src/model.rs:6://! 持つ 1 つの型 [`ModelManifest`] に統合している。実解決ref をプロバイダ
crates/manifest/src/model.rs:8://! は `crates/provider` の責務で、本モジュールはデータ表現のみを提供する。
crates/manifest/src/model.rs:17:// `ModelCapability` は `llm-worker` 側に定義される runtime 構造だが、
crates/manifest/src/model.rs:21:/// Pod マニフェストの `[model]` セクション。
crates/manifest/src/model.rs:27:/// どの形が有効かの判定は `provider::resolve_model_manifest` が担う。
crates/manifest/src/model.rs:32: /// `<provider_id>/<model_id_in_ref>` 形式のカタログ参照。`/` の
crates/manifest/src/model.rs:33: /// 最初の 1 文字目で split し provider カタログを引く。
crates/manifest/src/model.rs:36: /// provider 側で最初の `/` のみ split するため)。
crates/manifest/src/model.rs:51: /// モデル能力の明示指定。未指定時はモデルカタログ → provider
crates/manifest/src/model.rs:94:/// `crates/provider` で行う。ここはあくまで「どこから取るか」の宣言。
crates/pod-registry/src/conflict.rs:83:/// The Pod and rule that actually own a conflicting write scope.
crates/pod-registry/src/conflict.rs:90:/// Find the Pod/rule that actually owns a write scope overlapping `rule`.
crates/pod-registry/src/conflict.rs:94:/// as the true owner. `exempt` names a Pod whose ownership is
crates/pod-registry/src/conflict.rs:215: // A different top-level Pod trying to register /src/core/x
crates/manifest/src/defaults.rs:1://! Single source of truth for manifest default values.
crates/manifest/src/defaults.rs:4://! `#[serde(default = "...")]` attributes (on [`crate::PodManifest`])
crates/manifest/src/defaults.rs:9:/// Byte-size cap applied to any tool's `content` output when no
crates/manifest/src/defaults.rs:10:/// per-tool override is set. See [`crate::ToolOutputLimits`].
crates/manifest/src/defaults.rs:51:/// responses. See [`crate::WorkerManifest::language`].
crates/manifest/src/defaults.rs:72:/// Context reserve preserved for final summary/tool closing turns.
crates/manifest/src/defaults.rs:76:/// Optional maximum compact-worker tool-loop depth. `None` means unlimited.
crates/manifest/src/defaults.rs:96:/// Optional maximum extract-worker tool-loop depth. `None` means unlimited.
crates/manifest/src/defaults.rs:97:/// See [`crate::MemoryConfig::extract_worker_max_turns`].
crates/manifest/src/defaults.rs:100:/// Default language used by memory extraction / consolidation workers for
crates/manifest/src/defaults.rs:101:/// durable memory and knowledge text. See [`crate::MemoryConfig::language`].
crates/tools/src/write.rs:1://! `Write` tool — create or overwrite a file.
crates/tools/src/write.rs:44: // observed by the Read tool (via the tracker) and its current
crates/tools/src/write.rs:77:/// Factory for the `Write` tool.
crates/pod/src/spawn/comm_tools.rs:1://! Pod-to-Pod communication tools.
crates/pod/src/spawn/comm_tools.rs:3://! Four tools in one module — `SendToPod`, `ReadPodOutput`, `StopPod`,
crates/pod/src/spawn/comm_tools.rs:4://! `ListPods` — all built on the same `SpawnedPodRegistry` handed in by
crates/pod/src/spawn/comm_tools.rs:8://! These tools only touch Pods listed in the spawner's
crates/pod/src/spawn/comm_tools.rs:9://! `SpawnedPodRegistry`; there is no machine-wide directory lookup, so
crates/pod/src/spawn/comm_tools.rs:39: /// Name of a previously spawned Pod.
crates/pod/src/spawn/comm_tools.rs:44:// SendToPod
crates/pod/src/spawn/comm_tools.rs:54: /// Target Pod name.
crates/pod/src/spawn/comm_tools.rs:56: /// Text delivered to the Pod as the next user message.
crates/pod/src/spawn/comm_tools.rs:109:// ReadPodOutput
crates/pod/src/spawn/comm_tools.rs:184:// StopPod
crates/pod/src/spawn/comm_tools.rs:244:// ListPods
crates/pod/src/spawn/comm_tools.rs:280: // Trigger stale reclaim on unreachable pods so the lock file's
crates/pod/src/spawn/comm_tools.rs:324:/// The Pod socket protocol sends replayed alerts and an initial
crates/pod/src/spawn/comm_tools.rs:325:/// `Event::Snapshot` before it starts reading client methods. Send-only
crates/pod/src/spawn/comm_tools.rs:329:/// surface it to the LLM or treat it as "pod stopped".
crates/pod/src/spawn/comm_tools.rs:367:/// Failure modes distinguished by `SendToPod`.
crates/pod/src/spawn/comm_tools.rs:370: /// Target Pod responded with `Error { AlreadyRunning }` — the
crates/pod/src/spawn/comm_tools.rs:381:/// that precede the response are skipped. Times out per-read so a stuck Pod
crates/pod/src/spawn/comm_tools.rs:382:/// doesn't hang the tool.
crates/pod/src/spawn/comm_tools.rs:429:/// Connect to a Pod's socket and read the connect-time `Event::Snapshot`.
crates/pod/src/spawn/comm_tools.rs:431:/// Pods deliver the session-log mirror as the first non-Alert event on
crates/pod/src/spawn/comm_tools.rs:434:/// values; callers deserialize as `session_store::LogEntry` if they
crates/pod/src/spawn/comm_tools.rs:471: // The wire payload is the JSON form of `session_store::LogEntry`.
crates/pod/src/shared_state.rs:19:/// Shared state between PodController and runtime directory.
crates/pod/src/shared_state.rs:21:/// Controller updates this in-memory; RuntimeDir writes the status
crates/pod/src/shared_state.rs:35: /// Pod-from-the-inside view of the filesystem. Set once in
crates/pod/src/shared_state.rs:36: /// `PodController::start` after the `ScopedFs` is materialised, and
crates/pod/src/shared_state.rs:39: /// (only relevant for unit tests that build a `PodSharedState`
crates/pod/src/shared_state.rs:65: /// Attach the Pod's filesystem view. Called once during controller
crates/pod/src/shared_state.rs:71: /// Borrow the attached `PodFsView`, if any. Returns `None` for unit
crates/tools/src/grep.rs:1://! `Grep` tool — recursive regex search powered by ripgrep's component crates.
crates/tools/src/grep.rs:105:/// Factory for the `Grep` tool.
crates/pod/src/prompt/system.rs:1://! System prompt template machinery for the Pod layer.
crates/pod/src/prompt/system.rs:3://! Manifests describe the system prompt body as a reference to a
crates/pod/src/prompt/system.rs:4://! prompt asset (`worker.instruction`, see [`manifest::WorkerManifest`]).
crates/pod/src/prompt/system.rs:7://! eagerly syntax-checks it at Pod construction. The final system
crates/pod/src/prompt/system.rs:10://! the Pod's `Scope` summary and (if present) the project's `AGENTS.md`
crates/pod/src/prompt/system.rs:11://! contents plus resident memory sections, and the whole string is handed
crates/pod/src/prompt/system.rs:156: /// The body of `<workspace>/.insomnia/memory/summary.md`, with
crates/pod/src/prompt/system.rs:162: /// section entirely (memory disabled, or a consolidation worker that opts
crates/pod/src/prompt/system.rs:165: /// Resident workflow descriptions from `<workspace>/.insomnia/workflow/*`
crates/pod/src/prompt/system.rs:209:/// comes from the prompt catalog (`PodPrompt::WorkingBoundariesSection`
crates/pod/src/prompt/system.rs:210:/// / `PodPrompt::AgentsMdSection`) so that wording can be overridden
crates/pod/src/prompt/system.rs:310:/// Bridge used by [`Pod::ensure_system_prompt_materialized`] so tests
crates/pod/src/prompt/system.rs:311:/// can construct a synthetic context without going through a full Pod.
crates/pod/src/prompt/system.rs:533: // Pulled in from the builtin tool-usage asset.
crates/pod/src/compact/metrics_tracker.rs:5://! Pod drains this buffer in `persist_turn` and writes each metric via
crates/pod/src/compact/metrics_tracker.rs:29: /// Drain all queued metrics. Called by Pod after a run completes.
crates/pod/src/compact/state.rs:5://! - `PodInterceptor` (reads `request_threshold` — the *safety net* for
crates/pod/src/compact/state.rs:7://! - `Pod::try_pre_run_compact` (reads `post_run_threshold` — the
crates/pod/src/compact/state.rs:9://! - `Pod::run()` / `resume()` (circuit breaker, thrash detection)
crates/pod/src/compact/state.rs:12://! source of truth is `session_store::UsageRecord` (persisted per LLM call)
crates/pod/src/compact/state.rs:13://! projected through `Pod::total_tokens()`. Callers pass the current
crates/pod/src/spawn/registry.rs:1://! Shared registry of Pods spawned by this Pod.
crates/pod/src/spawn/registry.rs:3://! `SpawnPod` writes here; the pod-comm tools (`SendToPod`,
crates/pod/src/spawn/registry.rs:4://! `ReadPodOutput`, `StopPod`, `ListPods`) read and mutate the same
crates/pod/src/spawn/registry.rs:5://! instance. Runtime write-through still materialises `spawned_pods.json`,
crates/pod/src/spawn/registry.rs:6://! but durable state lives in the spawner's Pod metadata.
crates/pod/src/spawn/registry.rs:8://! `ReadPodOutput` additionally owns a per-spawned-pod cursor here so
crates/pod/src/spawn/registry.rs:67: /// Build a registry from the spawner's durable Pod state, pruning child
crates/pod/src/spawn/registry.rs:69: /// written through to both `spawned_pods.json` and Pod state so runtime
crates/pod/src/spawn/registry.rs:132: // Runtime spawned-pod records are a live registry for ListPods and
crates/pod/src/spawn/registry.rs:133: // cursor/scope cleanup; durable Pod state remains the discovery source
crates/pod/src/spawn/registry.rs:135: // Pod state just because their sockets are gone.
crates/pod/src/spawn/registry.rs:163: /// error if either persisted write fails; the in-memory state is still
crates/pod/src/spawn/registry.rs:171: /// Look up a record by pod name. Cloned so callers can drop the lock.
crates/pod/src/spawn/registry.rs:185: /// Remove the record for `pod_name`, persist, clear its cursor, and
crates/pod/src/hook.rs:1://! Pod-layer hook infrastructure
crates/pod/src/hook.rs:3://! Hooks are the **public** orchestration extension point. They receive
crates/pod/src/hook.rs:8://! Hooks intentionally cannot mutate the Worker's context, history, tool
crates/pod/src/hook.rs:9://! call, or tool result. Internal mechanisms that need such access (e.g.
crates/pod/src/hook.rs:11://! `llm_worker::Interceptor` directly inside Pod, never via this trait.
crates/pod/src/hook.rs:64: /// Most recently observed `input_tokens` from the LLM provider.
crates/pod/src/hook.rs:65: /// `None` when the Pod has no compaction state attached, or when
crates/pod/src/hook.rs:76: /// Provider-assigned tool call id.
crates/pod/src/hook.rs:78: /// Registered tool name.
crates/pod/src/hook.rs:83: /// is cheap relative to tool execution. Structural access is
crates/pod/src/hook.rs:91: /// Provider-assigned tool call id this result corresponds to.
crates/pod/src/hook.rs:93: /// Registered tool name.
crates/pod/src/hook.rs:95: /// Whether the tool reported an error.
crates/pod/src/hook.rs:137:/// Before each tool is executed.
crates/pod/src/hook.rs:139:/// After each tool completes.
crates/pod/src/hook.rs:141:/// When a turn ends with no tool calls.
crates/tools/src/error.rs:1://! Error type shared across the `tools` crate.
crates/tools/src/error.rs:4://! builtin tool's internal logic. Tool `execute()` impls convert it to
crates/tools/src/error.rs:5://! [`llm_worker::tool::ToolError`] via the `From` impl defined here.
crates/pod/src/prompt/agents_md.rs:3://! Reads `AGENTS.md` directly under the Pod cwd and exposes its body
crates/pod/src/prompt/agents_md.rs:6://! subproject context is expressed by launching a Pod with that
crates/pod/src/prompt/agents_md.rs:23:/// Pod forwards to the user-facing notification channel. The caller
crates/pod/src/prompt/loader.rs:8://! | `$user` | `<config_dir>/prompts/` (resolved by `manifest::paths`) |
crates/pod/src/prompt/loader.rs:142: /// [`crate::PodFactory`] to surface `<user_manifest_dir>/prompts.toml`
crates/manifest/src/lib.rs:28:/// Declarative configuration for a Pod.
crates/manifest/src/lib.rs:30:/// Parsed from a TOML manifest file. Describes the model, system prompt,
crates/manifest/src/lib.rs:31:/// and directory scope (required). The Pod's working directory is **not**
crates/manifest/src/lib.rs:32:/// part of the manifest — it is the process's `std::env::current_dir()`
crates/manifest/src/lib.rs:43: /// Optional manifest-level tool permission policy. Absent means the
crates/manifest/src/lib.rs:44: /// permission layer is disabled and tool calls run as before.
crates/manifest/src/lib.rs:49: /// Memory subsystem opt-in. Presence of `[memory]` in TOML enables
crates/manifest/src/lib.rs:50: /// the memory tools (MemoryRead / MemoryWrite / MemoryEdit) and
crates/manifest/src/lib.rs:51: /// causes Pod to deny generic write access to `<workspace>/memory/`
crates/manifest/src/lib.rs:53: /// memory tools registered.
crates/manifest/src/lib.rs:57: /// Workflows. Each entry is a path to a skills *root* (i.e. a
crates/manifest/src/lib.rs:59: /// bundles). Paths are resolved against the manifest's base
crates/manifest/src/lib.rs:69:/// across manifest layers, so a user-level manifest can declare a
crates/manifest/src/lib.rs:70:/// shared skill root once while a project manifest adds its own
crates/manifest/src/lib.rs:76: /// Resolved against the manifest base directory before
crates/manifest/src/lib.rs:77: /// [`PodManifest`] is materialised.
crates/manifest/src/lib.rs:82:/// Memory subsystem configuration. Presence in the manifest enables
crates/manifest/src/lib.rs:83:/// memory; the workspace root defaults to the Pod's pwd unless an
crates/manifest/src/lib.rs:91: /// Override for the workspace root. When `None`, the Pod's pwd
crates/manifest/src/lib.rs:96: /// Maximum number of records returned by `MemoryQuery` /
crates/manifest/src/lib.rs:97: /// `KnowledgeQuery` per call. `None` ⇒ tool default (20).
crates/manifest/src/lib.rs:101: /// Ignored when the request omits `query`. `None` ⇒ tool default (3).
crates/manifest/src/lib.rs:104: /// Whether the body of `memory/summary.md` is exposed in the resident
crates/manifest/src/lib.rs:108: /// Language used by memory extraction / consolidation workers for durable
crates/manifest/src/lib.rs:109: /// memory and knowledge text. Free-form so workspaces can use names like
crates/manifest/src/lib.rs:115: /// the main pod model is cloned via `clone_boxed()`. Lightweight
crates/manifest/src/lib.rs:122: /// entirely; memory tools and resident injection still work, only
crates/manifest/src/lib.rs:126: /// Optional maximum extract-worker tool-loop depth. `None` leaves
crates/manifest/src/lib.rs:133: /// `None`, the main pod model is cloned via `clone_boxed()`.
crates/manifest/src/lib.rs:151:/// Pod metadata.
crates/manifest/src/lib.rs:156: /// `pod::PromptCatalog`. Subject to the same relative-path
crates/manifest/src/lib.rs:157: /// resolution as other manifest paths (joined against the
crates/manifest/src/lib.rs:158: /// manifest's base directory). `None` leaves the 4th overlay layer
crates/manifest/src/lib.rs:170:/// Worker-level configuration embedded in the manifest.
crates/manifest/src/lib.rs:177: /// unset manifests fall through to [`defaults::DEFAULT_INSTRUCTION`].
crates/manifest/src/lib.rs:182: /// locale tags, or a policy phrase. Unset manifests fall through to
crates/manifest/src/lib.rs:200: /// Byte-size caps applied to tool `content` before it reaches the
crates/manifest/src/lib.rs:203: /// per-tool overrides) is applied so truncation is on by default.
crates/manifest/src/lib.rs:209: /// This is intentionally separate from tool-output truncation because
crates/manifest/src/lib.rs:215:/// Byte-size caps applied to tool execution `content` before it enters
crates/manifest/src/lib.rs:216:/// conversation history. Guards against a single oversized tool result
crates/manifest/src/lib.rs:217:/// blowing past the provider's per-minute input-token rate limit.
crates/manifest/src/lib.rs:224: /// Cap applied to any tool not listed in `per_tool`.
crates/manifest/src/lib.rs:227: /// Per-tool overrides, keyed by tool registration name (e.g. "Glob").
crates/manifest/src/lib.rs:237:/// reference. It does not affect tool result truncation; see
crates/manifest/src/lib.rs:280: /// Resolve the cap for a given tool name.
crates/manifest/src/lib.rs:291:/// A Pod may only touch paths whose effective permission (computed from
crates/manifest/src/lib.rs:308: /// Persist every provider stream event directly to `trace.jsonl` next to the
crates/manifest/src/lib.rs:315:/// Manifest-level pattern-based tool permission policy.
crates/manifest/src/lib.rs:330: /// manifests may use either `Bash` or `bash`.
crates/manifest/src/lib.rs:332: /// Glob-like pattern matched against the tool's permission target
crates/manifest/src/lib.rs:333: /// (for built-in tools, commonly `command`, `file_path`, or `pattern`).
crates/manifest/src/lib.rs:349:/// Controls Prune (content removal from old tool results) and Compact
crates/manifest/src/lib.rs:371: /// Checked by `PodInterceptor::pre_llm_request` inside a turn. When
crates/manifest/src/lib.rs:415: /// Context reserve preserved for final summary/tool closing turns.
crates/manifest/src/lib.rs:419: /// Optional maximum compact-worker tool-loop depth. `None` leaves the
crates/manifest/src/lib.rs:521: /// Parse a manifest from a TOML string.
crates/tools/src/glob.rs:1://! `Glob` tool — recursive file search by glob pattern, sorted by mtime.
crates/tools/src/glob.rs:153: // Glob is an explicit-pattern tool, so gitignore/hidden are *not* honored.
crates/tools/src/glob.rs:195:/// Factory for the `Glob` tool.
crates/pod/src/spawn/tool.rs:1://! `SpawnPod` tool — launch a new Pod process as a child of this one.
crates/pod/src/spawn/tool.rs:3://! Wires pod-registry delegation, overlay-TOML construction, subprocess
crates/pod/src/spawn/tool.rs:5://! the LLM calls `SpawnPod`, a fresh `pod` binary is exec'd in its own
crates/pod/src/spawn/tool.rs:6://! process group, the pod-registry is updated atomically, and the child's
crates/pod/src/spawn/tool.rs:41:/// How long we will wait for the spawned Pod's socket to become
crates/pod/src/spawn/tool.rs:47: /// Identifier for the spawned Pod. Must be unique machine-wide.
crates/pod/src/spawn/tool.rs:52: /// First message sent to the spawned Pod via `Method::Run`.
crates/pod/src/spawn/tool.rs:54: /// Allow rules delegated to the spawned Pod. Must be a subset of the
crates/pod/src/spawn/tool.rs:91:/// Runtime dependencies the `SpawnPod` tool needs in order to launch a
crates/pod/src/spawn/tool.rs:92:/// child Pod and record the handoff locally. Constructed by the Pod
crates/pod/src/spawn/tool.rs:93:/// controller once per Pod lifetime.
crates/pod/src/spawn/tool.rs:95: /// Spawner's own pod name — becomes the spawned Pod's
crates/pod/src/spawn/tool.rs:96: /// `delegated_from` in the pod-registry.
crates/pod/src/spawn/tool.rs:99: /// `--callback` so its `PodEvent` callbacks have somewhere to land.
crates/pod/src/spawn/tool.rs:102: /// the spawned Pod's socket path before the child has bound it.
crates/pod/src/spawn/tool.rs:104: /// Directory the spawned Pod should run in when the LLM did not
crates/pod/src/spawn/tool.rs:108: /// pod-comm tools (`SendToPod` / `ReadPodOutput` / `StopPod` /
crates/pod/src/spawn/tool.rs:109: /// `ListPods`). Writes the list to runtime and durable Pod state on
crates/pod/src/spawn/tool.rs:112: /// THIS Pod's own parent-callback socket, if any. After a
crates/pod/src/spawn/tool.rs:113: /// successful spawn we fire `PodEvent::ScopeSubDelegated` upward
crates/pod/src/spawn/tool.rs:115: /// `None` for top-level Pods — in that case the re-emission is a
crates/pod/src/spawn/tool.rs:118: /// Spawner's resolved provider config — copied into every spawned
crates/pod/src/spawn/tool.rs:119: /// Pod's overlay TOML so the child does not need its own provider
crates/pod/src/spawn/tool.rs:120: /// configuration in the manifest cascade. Per-spawn override is
crates/pod/src/spawn/tool.rs:121: /// out of scope here (see `tickets/spawn-inherit-provider.md`).
crates/pod/src/spawn/tool.rs:125: /// from the spawner's in-memory view (a `deny(Write, target)` is
crates/pod/src/spawn/tool.rs:127: /// those paths to `Read`). Mirrors the pod-registry's
crates/pod/src/spawn/tool.rs:129: /// tracked across Pods, so revocation only touches Write.
crates/pod/src/spawn/tool.rs:168: // `delegate_scope` catches this too (as `DuplicatePodName`), but
crates/pod/src/spawn/tool.rs:237: // Mirror that ownership transfer in the spawner's in-memory
crates/pod/src/spawn/tool.rs:239: // is shadowed by a `deny(Write, target)` so subsequent tool
crates/pod/src/spawn/tool.rs:271: // Notify this Pod's own parent so the grandparent can register
crates/pod/src/spawn/tool.rs:272: // the new grandchild directly. Fire-and-forget; top-level Pods
crates/pod/src/spawn/tool.rs:346: // orphans. Lifecycle tracking lives in `spawned_pods.json`.
crates/pod/src/spawn/tool.rs:384:/// Serialise the overlay TOML that gets handed to the child `pod`
crates/pod/src/spawn/tool.rs:385:/// binary via `--overlay`. `PodManifestConfig`'s `Serialize` impl is
crates/pod/src/spawn/tool.rs:386:/// the single source of truth for the on-disk manifest format.
crates/pod/src/spawn/tool.rs:389:/// `Command::current_dir` (see [`SpawnPodTool::exec_child`]) — it is
crates/pod/src/spawn/tool.rs:390:/// not part of the manifest.
crates/pod/src/spawn/tool.rs:418:/// tool-result budget — debugging beyond this should read the file
crates/pod/src/spawn/tool.rs:484:/// Factory for the `SpawnPod` tool.
crates/pod/src/compact/worker.rs:1://! Compact worker state and the four tools that drive it.
crates/pod/src/compact/worker.rs:4://! [`Pod::compact`]. It receives the history to summarise plus a list of
crates/pod/src/compact/worker.rs:6://! a tool-driven LLM loop. The tools here let it:
crates/pod/src/compact/worker.rs:8://! - `read_file` — inspect referenced files (reuses `tools::read_tool`)
crates/pod/src/compact/worker.rs:17://! which `Pod::compact` drains after the loop and turns into the
crates/pod/src/compact/worker.rs:107: /// `compact` omits tool arguments/full results; `full` includes message text and tool result content.
crates/pod/src/compact/worker.rs:377: // errors surface the same way the regular `read_file` tool does.
crates/pod/src/compact/worker.rs:548:/// additional exploratory tool calls once the final reserve is reached.
crates/tools/src/lib.rs:1://! Built-in tools for the Insomnia LLM agent.
crates/tools/src/lib.rs:4://! `llm-worker` `Tool` infrastructure. Filesystem access is mediated by
crates/tools/src/lib.rs:7://! - [`ScopedFs`] — Pod-process lifetime, expresses the write-block
crates/tools/src/lib.rs:8://! boundary for the current scope. Derived from the manifest; not
crates/tools/src/lib.rs:9://! persisted across Pod restart.
crates/tools/src/lib.rs:10://! - [`Tracker`] — Pod-process lifetime, enforces the "read before edit"
crates/tools/src/lib.rs:12://! Recreated fresh on each Pod start (including resume).
crates/tools/src/lib.rs:14://! The Pod layer owns both instances and passes them to
crates/tools/src/lib.rs:15://! [`builtin_tools`] when registering tools on a `Worker`.
crates/tools/src/lib.rs:44:/// Register all builtin tools, wiring them to a shared `ScopedFs`
crates/tools/src/lib.rs:45:/// (Pod-process lifetime) and `Tracker` (Pod-process lifetime).
crates/tools/src/lib.rs:48:/// `Read` / `Write` / `Edit` see a consistent history across tool
crates/tools/src/lib.rs:49:/// invocations within a single Pod run.
crates/tools/src/lib.rs:51:/// `bash_output_dir` is where the Bash tool spills long outputs. The
crates/tools/src/lib.rs:53:/// (see [`manifest::Scope::with_extra_read`]) so the agent can `Read`
crates/pod/src/compact/token_counter.rs:4://! [`llm_worker::token_counter`] にあり、`UsageRecord` の列と現在の history から
crates/pod/src/compact/token_counter.rs:6://! `split_for_retained`, `savings_for_prune`と、Pod 上の公開 API に
crates/pod/src/compact/token_counter.rs:109:/// だけで切った `cut` は並列 tool 呼び出しの途中に落ちうるので、retained
crates/pod/src/compact/token_counter.rs:191:/// `indices` は [`llm_worker::prune::prunable_indices`] が返す候補列を
crates/pod/src/compact/token_counter.rs:243:// ── Pod に生やす公開 API ───────────────────────────────────────────────
crates/pod/src/compact/token_counter.rs:257: /// memory extract trigger が
crates/tools/src/edit.rs:1://! `Edit` tool — partial string replacement with uniqueness check.
crates/tools/src/edit.rs:136:/// Factory for the `Edit` tool.
crates/pod/src/runtime/dir.rs:10:/// One spawned-child record mirrored to `spawned_pods.json`.
crates/pod/src/runtime/dir.rs:12:/// Written by the spawner after registry changes so runtime-local tools
crates/pod/src/runtime/dir.rs:13:/// have a materialised snapshot. Durable restore uses Pod state metadata;
crates/pod/src/runtime/dir.rs:17: /// Spawned Pod's identity.
crates/pod/src/runtime/dir.rs:19: /// Spawned Pod's Unix socket path.
crates/pod/src/runtime/dir.rs:21: /// Scope allow rules delegated to the spawned Pod.
crates/pod/src/runtime/dir.rs:23: /// Socket path the spawned Pod was told to use for callbacks
crates/pod/src/runtime/dir.rs:24: /// (= this Pod's own socket when spawn happened).
crates/pod/src/runtime/dir.rs:28:/// Manages the Pod's runtime directory on tmpfs.
crates/pod/src/runtime/dir.rs:31:/// <runtime_dir>/{pod_name}/
crates/pod/src/runtime/dir.rs:34:/// ├── manifest.toml
crates/pod/src/runtime/dir.rs:39:/// `<runtime_dir>` is resolved via [`manifest::paths::runtime_dir`].
crates/pod/src/runtime/dir.rs:59: /// [`manifest::paths::runtime_dir`].
crates/pod/src/runtime/dir.rs:71: /// Write manifest.toml (typically once at startup).
crates/pod/src/runtime/dir.rs:76: /// Write `spawned_pods.json` atomically. The entries are the full
crates/pod/src/runtime/dir.rs:77: /// set of spawned children known to this Pod — callers pass the
crates/pod/src/runtime/dir.rs:84: /// Path to this Pod's runtime directory.
crates/pod/src/runtime/dir.rs:90: /// that only know the pod name (e.g. the TUI's attach flow)
crates/pod/src/runtime/dir.rs:91: /// predict the same path via [`manifest::paths::pod_socket_path`].
crates/pod/src/runtime/dir.rs:113:/// Thin wrapper over [`manifest::paths::runtime_dir`] that converts a
crates/tools/src/scoped_fs.rs:3://! `ScopedFs` is the write/read gate layered on top of a [`manifest::Scope`]
crates/tools/src/scoped_fs.rs:4://! and a Pod's working directory. The scope decides which paths are
crates/tools/src/scoped_fs.rs:30:/// handle (typically the owning Pod). Mutations to that `SharedScope`
crates/tools/src/scoped_fs.rs:66: /// holder of the `SharedScope` (typically the Pod).
crates/tools/src/scoped_fs.rs:88: /// caller (usually the Pod) hold the same view and push updates
crates/tools/src/scoped_fs.rs:94: /// The Pod's working directory. Glob/Grep default their search base
crates/pod/src/prompt/catalog.rs:1://! Central catalog of Pod-level prompt strings.
crates/pod/src/prompt/catalog.rs:3://! Prompts that Pod injects into a Worker (compaction system prompt,
crates/pod/src/prompt/catalog.rs:6://! [`PodPrompt`] and rendered through a single [`PromptCatalog`]. Direct
crates/pod/src/prompt/catalog.rs:8://! `crates/pod` is deliberately avoided — new injection points add a
crates/pod/src/prompt/catalog.rs:11://! the "Pod tone" editable in one place.
crates/pod/src/prompt/catalog.rs:18://! binary. Must cover every [`PodPrompt`] variant (build-time check).
crates/pod/src/prompt/catalog.rs:19://! 2. **user** — `<user_manifest_dir>/prompts.toml`, auto-discovered by
crates/pod/src/prompt/catalog.rs:20://! [`PodFactory`]. Optional.
crates/pod/src/prompt/catalog.rs:23://! 4. **manifest pack** — `manifest.pod.prompt_pack`, an explicit path
crates/pod/src/prompt/catalog.rs:24://! per-Pod. Optional.
crates/pod/src/prompt/catalog.rs:56:/// Pod-level prompt injection point.
crates/pod/src/prompt/catalog.rs:64: /// System prompt of the memory extract Worker.
crates/pod/src/prompt/catalog.rs:66: /// System prompt of the memory consolidation (integration + tidy) Worker.
crates/pod/src/prompt/catalog.rs:72: /// tool calls when a paused turn is interrupted by the user.
crates/pod/src/prompt/catalog.rs:82: /// Trailing `## Resident memory summary` section, appended after the
crates/pod/src/prompt/catalog.rs:83: /// AGENTS.md section when memory is enabled, summary injection is enabled,
crates/pod/src/prompt/catalog.rs:84: /// and `memory/summary.md` has a valid non-empty body.
crates/pod/src/prompt/catalog.rs:87: /// resident memory summary when memory is enabled, Knowledge resident
crates/pod/src/prompt/catalog.rs:91: /// Trailing `## Resident workflows` section, appended after resident
crates/pod/src/prompt/catalog.rs:92: /// knowledge when Workflow resident injection is enabled and at least one
crates/pod/src/prompt/catalog.rs:93: /// workflow advertises `model_invokation: true`.
crates/pod/src/prompt/catalog.rs:244:/// Merged, compiled pod-prompt catalog.
crates/pod/src/prompt/catalog.rs:247:/// [`PodPrompt`] key (after the 4-layer merge). Includes inside templates
crates/pod/src/prompt/catalog.rs:272: /// - Layer 4 (manifest): `manifest_pack` as an absolute filesystem
crates/pod/src/prompt/catalog.rs:273: /// path (pre-resolved by the manifest cascade).
crates/pod/src/prompt/catalog.rs:317: /// Render `PodPrompt::CompactSystem` (no inputs).
crates/pod/src/prompt/catalog.rs:322: /// Render `PodPrompt::MemoryExtractSystem` with `{{ language }}`.
crates/pod/src/prompt/catalog.rs:327: /// Render `PodPrompt::MemoryConsolidationSystem` with `{{ language }}`.
crates/pod/src/prompt/catalog.rs:335: /// Render `PodPrompt::NotifyWrapper` with `{{ message }}`.
crates/pod/src/prompt/catalog.rs:340: /// Render `PodPrompt::InterruptToolResultSummary` (no inputs).
crates/pod/src/prompt/catalog.rs:345: /// Render `PodPrompt::InterruptSystemNote` (no inputs).
crates/pod/src/prompt/catalog.rs:350: /// Render `PodPrompt::WorkingBoundariesSection` with `{{ scope_summary }}`.
crates/pod/src/prompt/catalog.rs:358: /// Render `PodPrompt::AgentsMdSection` with `{{ agents_md }}`.
crates/pod/src/prompt/catalog.rs:363: /// Render `PodPrompt::ResidentMemorySummarySection` with `{{ summary }}`.
crates/pod/src/prompt/catalog.rs:371: /// Render `PodPrompt::ResidentKnowledgeSection` with `{{ entries }}`
crates/pod/src/prompt/catalog.rs:380: /// Render `PodPrompt::ResidentWorkflowsSection` with `{{ entries }}`
crates/pod/src/workflow/mod.rs:1://! Pod-side Workflow resolver.
crates/pod/src/workflow/mod.rs:3://! Turns `Segment::WorkflowInvoke { slug }` into system-message attachments:
crates/pod/src/workflow/mod.rs:4://! dependency Knowledge bodies first, then the Workflow body. Resolution is
crates/pod/src/workflow/mod.rs:5://! strict for explicit user invocations: missing workflows, non-user-invocable
crates/pod/src/workflow/mod.rs:6://! workflows, and missing Knowledge requirements are returned as errors before
crates/pod/src/compact/usage_tracker.rs:1://! Tracks per-LLM-request Usage measurements within a Pod run.
crates/pod/src/compact/usage_tracker.rs:10://! Pairing the two yields one `UsageRecord` per LLM call. Pod drains them
crates/pod/src/compact/usage_tracker.rs:13://! Multiple LLM calls per Pod run (tool loop) are supported: each call
crates/pod/src/compact/usage_tracker.rs:32:/// Shared between the pre-request hook, the `on_usage` callback, and Pod.
crates/pod/src/compact/usage_tracker.rs:42: /// Records accumulated during the current run; drained by Pod.
crates/pod/src/compact/usage_tracker.rs:104: /// projection as Pod persistence while the run is still active.
crates/pod/src/compact/usage_tracker.rs:114: /// Drain accumulated records. Called by Pod after a run completes,
crates/pod/src/compact/prune.rs:1://! Prune integration — wires the Worker's prune projection to the Pod's
crates/pod/src/compact/prune.rs:7://! を組み立てて Worker に差し込むための `impl Pod` を提供する。
crates/pod/src/compact/prune.rs:31: /// The estimators combine persisted [`Pod::usage_history_handle`] records
crates/pod/src/compact/prune.rs:32: /// with in-flight `UsageTracker` records so multi-request tool loops can
crates/pod/src/compact/prune.rs:33: /// prune before the surrounding Pod run finishes.
crates/pod/src/compact/prune.rs:110: /// If the manifest has a `[compaction]` section, build a `PruneConfig`
crates/pod/src/compact/prune.rs:112: /// Otherwise no-op. Called from all Pod constructors so prune is
crates/pod/src/compact/prune.rs:113: /// active whenever the manifest asks for it.
crates/pod/src/pod.rs:47:/// `(SessionId, SegmentId)` pair the Pod is currently writing to.
crates/pod/src/pod.rs:72:/// so that the Pod and every `LogWriterHandle` clone see a consistent
crates/pod/src/pod.rs:159: /// Append `entry` to the log: disk write → counter bump → in-memory
crates/pod/src/pod.rs:221:/// `session-store` functions after each turn.
crates/pod/src/pod.rs:227: /// Optional write-through hook for name-keyed Pod metadata. Production
crates/pod/src/pod.rs:229: /// logs; low-level `Pod::new` tests leave it absent.
crates/pod/src/pod.rs:231: /// Shared session pointer. Source of truth for the Pod's current
crates/pod/src/pod.rs:235: /// Absolute working directory of the Pod.
crates/pod/src/pod.rs:237: /// Shared, atomically-swappable view of the Pod's resolved scope.
crates/pod/src/pod.rs:238: /// Cloned out to `ScopedFs` instances (builtin tools, fs_view,
crates/pod/src/pod.rs:257: /// Read by token-accounting APIs (`Pod::total_tokens`, etc.).
crates/pod/src/pod.rs:261: /// can share the same view via [`Pod::usage_history_handle`].
crates/pod/src/pod.rs:263: /// Pod-lifetime file-operation tracker from the builtin `tools`
crates/pod/src/pod.rs:265: /// tools so that Pod-owned operations (e.g. compaction) can consult
crates/pod/src/pod.rs:268: /// Pod-lifetime task store from the builtin `tools` crate. Shared by
crates/pod/src/pod.rs:271: /// replaced. Restored Pods reconstruct it by replaying Task* tool calls.
crates/pod/src/pod.rs:278: /// spawn time. `None` in tests / direct `Pod::new` usage.
crates/pod/src/pod.rs:282: /// notifications, events sent here are NOT replayed to clients that
crates/pod/src/pod.rs:286: /// assistant-side execution artifact becomes visible to clients before
crates/pod/src/pod.rs:288: /// `Pod::run` uses it to avoid rolling back a turn after the UI has
crates/pod/src/pod.rs:293: /// PodInterceptor installed in `ensure_interceptor_installed`.
crates/pod/src/pod.rs:296: /// (currently `@<path>` file content). `Pod::run` fills this
crates/pod/src/pod.rs:297: /// before handing off to the worker; `PodInterceptor::on_prompt_submit`
crates/pod/src/pod.rs:302: /// Pods built via `from_manifest` / `from_manifest_spawned` /
crates/pod/src/pod.rs:303: /// `restore_from_manifest` (production paths); `None` for the
crates/pod/src/pod.rs:304: /// low-level `Pod::new` constructor used in tests, which bypasses
crates/pod/src/pod.rs:306: /// the allocation when the Pod is dropped.
crates/pod/src/pod.rs:309: /// Socket path of the spawning Pod. `Some` only for Pods built via
crates/pod/src/pod.rs:310: /// `from_manifest_spawned`. Consumed by the controller to fire
crates/pod/src/pod.rs:311: /// `Method::PodEvent` reports upward (turn end, error, shutdown,
crates/pod/src/pod.rs:314: /// Central catalog of Pod-level prompt strings (compaction system
crates/pod/src/pod.rs:317: /// [`Self::from_manifest`], or defaults to the builtin pack when a
crates/pod/src/pod.rs:318: /// Pod is constructed through lower-level paths that have no loader.
crates/pod/src/pod.rs:320: /// Registry loaded from `<workspace>/.insomnia/workflow/*.md` when
crates/pod/src/pod.rs:321: /// memory is enabled. Missing memory config keeps this empty.
crates/pod/src/pod.rs:323: /// Memory workspace layout used by the workflow resolver to load required
crates/pod/src/pod.rs:327: /// workspace memory summary (`memory/summary.md`). Internal disposable
crates/pod/src/pod.rs:328: /// workers disable this so resident memory exposure is opt-in per Pod.
crates/pod/src/pod.rs:332: /// summary and workflow residency: each section has its own gate.
crates/pod/src/pod.rs:335: /// Workflow descriptions. This is intentionally independent from
crates/pod/src/pod.rs:342: /// extract (memory.extract) reentry guard. `true` while an extract
crates/pod/src/pod.rs:344: /// (`docs/plan/memory.md` §Extract 並走防止). `Arc<AtomicBool>` so
crates/pod/src/pod.rs:348: /// consolidation (memory.consolidation) in-process reentry guard. The
crates/pod/src/pod.rs:351: /// inside the same Pod from racing on the staging snapshot.
crates/pod/src/pod.rs:358: /// extract/consolidation memory job running outside the controller method loop.
crates/pod/src/pod.rs:367: /// are not preserved). Populated from log on `restore_from_manifest`,
crates/pod/src/pod.rs:369: /// this fed `PodSharedState.user_segments`; the new wire format
crates/pod/src/pod.rs:371: /// this remains purely an in-memory tracker for compact alignment.
crates/pod/src/pod.rs:373: /// Pod-side session-log mirror + broadcast sink. Populated alongside
crates/pod/src/pod.rs:374: /// every successful `session_store::append_entry` write so connected
crates/pod/src/pod.rs:375: /// clients see a `(snapshot, live)` stream consistent with what's
crates/pod/src/pod.rs:381: /// directly through the writer. Tests that drive `Pod::new` without
crates/pod/src/pod.rs:407: // The cloned Pod's worker exists only as a snapshot for the memory
crates/pod/src/pod.rs:410: // methods using `worker.client()` as fallback when no override
crates/pod/src/pod.rs:452: // The memory-task clone never appends to the session log
crates/pod/src/pod.rs:484: /// Pod after the worker is built; tests that drive `Pod::new` may
crates/pod/src/pod.rs:491: /// entries by their producers (for example `PodInterceptor` and
crates/pod/src/pod.rs:572: /// Create a new Pod from a pre-built Worker and store.
crates/pod/src/pod.rs:576: /// manifest, or [`Scope::writable`] in tests.
crates/pod/src/pod.rs:578: /// Note: this constructor does **not** parse `manifest.worker.system_prompt`
crates/pod/src/pod.rs:579: /// as a template. `Pod::from_manifest` is the production path for
crates/pod/src/pod.rs:580: /// templated prompts; callers of `Pod::new` that want a template
crates/pod/src/pod.rs:642: /// path used by `Pod::from_manifest` and is exposed for tests and
crates/pod/src/pod.rs:643: /// other callers that build a Pod without going through a manifest.
crates/pod/src/pod.rs:650: /// Default `true`: normal Pods may expose each resident section according
crates/pod/src/pod.rs:651: /// to its own gate and manifest settings. Internal disposable workers set
crates/pod/src/pod.rs:652: /// this to `false` so summary, Knowledge, and Workflow residency are all
crates/pod/src/pod.rs:653: /// suppressed while explicit tools remain available.
crates/pod/src/pod.rs:660: /// Toggle `memory/summary.md` resident injection in the system prompt.
crates/pod/src/pod.rs:670: /// Toggle resident Workflow injection in the system prompt.
crates/pod/src/pod.rs:686: /// The Session this Pod belongs to. Stable across compaction and
crates/pod/src/pod.rs:688: /// Pod-level operation today that moves a running Pod to a different
crates/pod/src/pod.rs:694: /// The Pod's manifest.
crates/pod/src/pod.rs:699: /// The Pod's working directory.
crates/pod/src/pod.rs:704: /// The Pod's directory scope, as a shared atomically-swappable
crates/pod/src/pod.rs:706: /// (e.g. a tool that needs to mutate scope dynamically).
crates/pod/src/pod.rs:717: /// Apply `extra_allow` to the Pod's runtime scope. Future tool
crates/pod/src/pod.rs:719: /// scope; in-flight tool calls keep the snapshot they captured at
crates/pod/src/pod.rs:730: /// Strip `revoke` rules from the Pod's runtime scope by adding
crates/pod/src/pod.rs:732: /// access at `Read` (mirroring the pod-registry `effective_write`
crates/pod/src/pod.rs:733: /// semantics — Write is the only permission tracked across Pods).
crates/pod/src/pod.rs:782: /// clients without consulting any other state.
crates/pod/src/pod.rs:787: /// Cloneable callback handed to dynamic-scope tools. It cannot append
crates/pod/src/pod.rs:788: /// directly to the async store from a sync tool callback, so it records
crates/pod/src/pod.rs:789: /// the latest snapshot and the controller flushes it after the tool
crates/pod/src/pod.rs:822: /// Use this to register tools, hooks, or subscribers before calling
crates/pod/src/pod.rs:856: /// Enable name-keyed Pod metadata write-through for Pods built through
crates/pod/src/pod.rs:857: /// the low-level constructor. High-level manifest constructors enable it
crates/pod/src/pod.rs:859: /// same persistence behavior without changing `Pod::new`'s minimal bounds.
crates/pod/src/pod.rs:886: /// Snapshot of the extract (memory.extract) boundary pointer.
crates/pod/src/pod.rs:929: /// non-contended at every Pod lifecycle event.
crates/pod/src/pod.rs:946: /// `.push(metric)` into it; Pod drains it in `persist_turn` and
crates/pod/src/pod.rs:955: /// `tools` crate. Called by the Controller immediately after it
crates/pod/src/pod.rs:956: /// registers the builtin tools on the Worker. Overwrites any
crates/pod/src/pod.rs:962: /// Attach the session-scoped TaskStore from the builtin `tools` crate.
crates/pod/src/pod.rs:963: /// Called by the Controller before registering builtin tools so the Pod
crates/pod/src/pod.rs:982: /// Pod-internal operations (compaction failures, AGENTS.md
crates/pod/src/pod.rs:983: /// ingestion warnings) can surface messages to connected clients.
crates/pod/src/pod.rs:991: /// Pod-internal operations (currently: compaction) can surface
crates/pod/src/pod.rs:992: /// progress to connected clients.
crates/pod/src/pod.rs:1030: /// Broadcast a typed `Event` to connected clients. No-op when no
crates/pod/src/pod.rs:1031: /// `event_tx` is attached (tests / direct `Pod::new` usage) or when
crates/pod/src/pod.rs:1032: /// no clients are currently subscribed.
crates/pod/src/pod.rs:1039: /// Push a `Method::Notify` (or rendered `Method::PodEvent`) entry
crates/pod/src/pod.rs:1044: /// `PodInterceptor::pending_history_appends`. See [`NotifyBuffer`]
crates/pod/src/pod.rs:1050: /// Push a typed `PodEvent` entry onto the pending buffer.
crates/pod/src/pod.rs:1053: /// preserves the typed `PodEvent` payload so the IPC layer can
crates/pod/src/pod.rs:1054: /// emit `SystemItem::PodEvent { event, body }` with structured
crates/pod/src/pod.rs:1055: /// data for clients.
crates/pod/src/pod.rs:1063: /// while `pod.run()` is in flight can still reach the interceptor.
crates/pod/src/pod.rs:1068: /// Parent callback socket set by `from_manifest_spawned`.
crates/pod/src/pod.rs:1070: /// Consumed by the Controller to fire `Method::PodEvent` upward on
crates/pod/src/pod.rs:1071: /// lifecycle transitions. `None` for top-level Pods, in which case
crates/pod/src/pod.rs:1098: /// Register a hook that runs before each tool call.
crates/pod/src/pod.rs:1104: /// Register a hook that runs after each tool call.
crates/pod/src/pod.rs:1125: /// `request_threshold`) is configured in the manifest, allocates
crates/pod/src/pod.rs:1190: /// Render the manifest-supplied instruction template exactly once,
crates/pod/src/pod.rs:1204: // Materialise any pending tool factories so the template sees the
crates/pod/src/pod.rs:1205: // full list of tool names. Redundant with the flush inside
crates/pod/src/pod.rs:1222: // gate so summary, Knowledge, and Workflow residency remain
crates/pod/src/pod.rs:1296: /// Equivalent to `run(vec![Segment::text(s)])`. The dumb-client
crates/pod/src/pod.rs:1297: /// counterpart of [`protocol::Method::run_text`]; primarily for
crates/pod/src/pod.rs:1298: /// tests and tools that have only a string in hand.
crates/pod/src/pod.rs:1303: /// Drop the prior memory_task handle if it has finished. Keep it if
crates/pod/src/pod.rs:1311: /// Wait for the in-flight memory task (if any) to finish. Used before
crates/pod/src/pod.rs:1323: /// defensive reasons; this is the gate for joining the memory task
crates/pod/src/pod.rs:1335: /// store, and runs pre-run compact (joining any in-flight memory task
crates/pod/src/pod.rs:1418: /// `input` is a typed segment list (see [`protocol::Segment`]). The
crates/pod/src/pod.rs:1419: /// Pod flattens it into a single user-message string for the
crates/pod/src/pod.rs:1428: // Validate workflow invocations up front so an invalid slug
crates/pod/src/pod.rs:1432: // `workflow_registry`.
crates/pod/src/pod.rs:1436: // any `Item::ToolCall` whose tool never produced a matching
crates/pod/src/pod.rs:1441: // `last_run_interrupted` flag; `Pod::resume` reuses the prior
crates/pod/src/pod.rs:1469: // workflow invocations to system messages stashed for the
crates/pod/src/pod.rs:1470: // PodInterceptor to attach right after the user message. File and
crates/pod/src/pod.rs:1471: // Knowledge failures are non-fatal alerts; explicit workflow invocation
crates/pod/src/pod.rs:1502: /// or shallow `[Dir: <path>]` system message via `PodFsView`. Resolution
crates/pod/src/pod.rs:1702: // `resolve_workflow_invocation` returns Item::system_message
crates/pod/src/pod.rs:1704: // bodies). Persist each as a SystemItem::Workflow keyed on
crates/pod/src/pod.rs:1721: /// short. Called from `Pod::run` when the worker's
crates/pod/src/pod.rs:1722: /// `last_run_interrupted` flag is set (i.e. the Pod just transitioned
crates/pod/src/pod.rs:1754: /// Validate explicit workflow invocations without reading dependency
crates/pod/src/pod.rs:1755: /// bodies. Called from `Pod::run` entry so an invalid slug aborts
crates/pod/src/pod.rs:1793: /// segments that fall through to placeholder (knowledge / workflow
crates/pod/src/pod.rs:1794: /// refs without a resolver, or unknown variants from a newer client).
crates/pod/src/pod.rs:1829: /// Run a turn triggered by `Method::Notify` while the Pod is idle.
crates/pod/src/pod.rs:1832: /// history. The `PodInterceptor::pre_llm_request` drains the
crates/pod/src/pod.rs:1853: // IDLE → active marker for the buffered notification / pod-event
crates/pod/src/pod.rs:1855: // PodInterceptor) carry the actual payload.
crates/pod/src/pod.rs:1889: /// On the first call for a Pod built via `from_manifest`, the session
crates/pod/src/pod.rs:1926: // = the writer's current turn (its in-memory history reflects
crates/pod/src/pod.rs:2177: // Low-level test paths that build `Pod::new` without wiring
crates/pod/src/pod.rs:2231: // One LogEntry::LlmUsage per LLM call (the tool loop may have run
crates/pod/src/pod.rs:2232: // many calls within a single Pod::run). Each is also appended to
crates/pod/src/pod.rs:2233: // the in-memory `usage_history` so token-accounting APIs see it
crates/pod/src/pod.rs:2292: /// - `compaction.model` from the manifest if configured, or
crates/pod/src/pod.rs:2293: /// - a clone of the main LlmClient via `clone_boxed()`.
crates/pod/src/pod.rs:2315: // Compaction-related knobs. Fall through to manifest defaults when
crates/pod/src/pod.rs:2407: // Worker-side state collected by the compact worker's tool calls.
crates/pod/src/pod.rs:2413: // with the main Pod (reads go through the same policy) but the
crates/pod/src/pod.rs:2429: // UsageRecord counter used by the main Pod thresholds.
crates/pod/src/pod.rs:2452: // history exploration, and compact-specific tools that populate `ctx`.
crates/pod/src/pod.rs:2524: // Re-read each auto-read target via the Pod FS view. Errors are
crates/pod/src/pod.rs:2636: // Keep pods.json pointing at the live segment_id. Without this
crates/pod/src/pod.rs:2637: // a concurrent `restore_from_manifest(new_segment_id)` would
crates/pod/src/pod.rs:2638: // see no live writer and grab the session this Pod just moved
crates/pod/src/pod.rs:2641: // `Pod::new` in tests).
crates/pod/src/pod.rs:2661: // SegmentStart's history (broadcast above) — clients derive
crates/pod/src/pod.rs:2682: // via fold_pointer. The in-memory pointer must match — otherwise
crates/pod/src/pod.rs:2695: /// Build the LlmClient for the compactor Worker.
crates/pod/src/pod.rs:2697: /// Uses `compaction.model` from manifest if set, otherwise clones
crates/pod/src/pod.rs:2698: /// the main client.
crates/pod/src/pod.rs:2710: /// Build the LlmClient for the extract (memory.extract) Worker.
crates/pod/src/pod.rs:2712: /// Uses `memory.extract_model` from manifest if set, otherwise clones
crates/pod/src/pod.rs:2713: /// the main client.
crates/pod/src/pod.rs:2745: /// extract (memory.extract) post-run trigger.
crates/pod/src/pod.rs:2747: /// Called by the Controller before spawning the background memory task so
crates/pod/src/pod.rs:2752: /// Behaviour follows `docs/plan/memory.md` §Extract 並走防止:
crates/pod/src/pod.rs:2755: /// re-evaluation happens naturally because the in-memory pointer
crates/pod/src/pod.rs:2788: // an extract for this Pod, skip per spec.
crates/pod/src/pod.rs:3133: /// Build the LlmClient for the consolidation (memory.consolidation) Worker.
crates/pod/src/pod.rs:3135: /// Uses `memory.consolidation_model` from manifest if set, otherwise
crates/pod/src/pod.rs:3136: /// clones the main client. Mirrors [`build_extractor_client`].
crates/pod/src/pod.rs:3149: /// consolidation (memory.consolidation) trigger.
crates/pod/src/pod.rs:3151: /// Intended to run from a background memory task after extract may have
crates/pod/src/pod.rs:3155: /// Behaviour follows `docs/plan/memory.md` §Consolidation / §並走防止:
crates/pod/src/pod.rs:3408: // Memory tools are self-contained — they bypass ScopedFs and write
crates/pod/src/pod.rs:3410: // injection is a Pod-level concern; this disposable Worker is built
crates/pod/src/pod.rs:3411: // without it by construction, in keeping with `docs/plan/memory.md`
crates/pod/src/pod.rs:3413: // the search tool instead of via system-prompt residency).
crates/pod/src/pod.rs:3643: /// Either threshold not met, no staging, or another Pod holds the lock.
crates/pod/src/pod.rs:3654: /// Create a Pod entirely from a validated manifest.
crates/pod/src/pod.rs:3656: /// The Pod's working directory is captured once here from the
crates/pod/src/pod.rs:3658: /// different cwd must `cd` before constructing the Pod (e.g. the
crates/pod/src/pod.rs:3659: /// `SpawnPod` tool sets `Command::current_dir` on the child). The
crates/pod/src/pod.rs:3661: /// `manifest.scope`.
crates/pod/src/pod.rs:3678: // session_id + segment_id are allocated here so the pod-registry
crates/pod/src/pod.rs:3683: // Register this Pod in the machine-wide pod-registry
crates/pod/src/pod.rs:3750: /// Build a Pod spawned by another Pod (sibling process).
crates/pod/src/pod.rs:3752: /// Behaves like [`Pod::from_manifest`] but claims the scope
crates/pod/src/pod.rs:3754: /// [`pod_registry::delegate_scope`], rather than installing a new
crates/pod/src/pod.rs:3756: /// Unix-socket path so the spawned Pod can send `Method::Notify`
crates/pod/src/pod.rs:3829: /// Restore a Pod by resolving its name-keyed metadata to an active
crates/pod/src/pod.rs:3859: /// Restore a Pod from an existing session log.
crates/pod/src/pod.rs:3861: /// Resolves the manifest cascade exactly like [`Self::from_manifest`]
crates/pod/src/pod.rs:3862: /// (pwd / scope / pod-registry / client / prompt catalog), seeds a
crates/pod/src/pod.rs:3867: /// Concurrent writers are prevented by the pod-registry:
crates/pod/src/pod.rs:3869: /// refuses to start when `pod_registry::lookup_segment` already finds
crates/pod/src/pod.rs:3870: /// a live Pod writing to `segment_id`. So there is no need to fork —
crates/pod/src/pod.rs:3875: /// session keeps a stable cache prefix even when the manifest's
crates/pod/src/pod.rs:3909: // Atomic: register_pod inside install_top_level rejects when
crates/pod/src/pod.rs:3912: // makes "no two live Pods write to the same session log"
crates/pod/src/pod.rs:3927: // Build the worker and apply the manifest defaults first, then
crates/pod/src/pod.rs:3936: // (the Pod's one and only write path that prepends a summary at
crates/pod/src/pod.rs:3997: // late-attaching client sees the full prefix without an
crates/pod/src/pod.rs:4013: /// Convenience: build a Pod from a single-layer TOML manifest string.
crates/pod/src/pod.rs:4015: /// Parses the TOML into a [`PodManifestConfig`], converts to a
crates/pod/src/pod.rs:4016: /// validated [`PodManifest`] via `TryFrom`, then delegates to
crates/pod/src/pod.rs:4017: /// [`Pod::from_manifest`]. Useful for tests, debugging, and any
crates/pod/src/pod.rs:4026:/// Apply worker-level manifest settings to a Worker.
crates/pod/src/pod.rs:4029:/// minijinja template that is parsed by `Pod::from_manifest` and
crates/pod/src/pod.rs:4059:/// Result of a Pod run.
crates/pod/src/pod.rs:4087: // Yielded is internal to Pod: it's always caught by
crates/pod/src/pod.rs:4088: // handle_worker_result and never converted to PodRunResult.
crates/pod/src/pod.rs:4330:/// Pod errors.
crates/pod/src/pod.rs:4426:/// Bundle of resources that every high-level Pod constructor needs:
crates/pod/src/pod.rs:4427:/// pwd, scope, an LLM client, the prompt catalog, and (optionally) a
crates/pod/src/pod.rs:4428:/// parsed system-prompt template. Built once by [`prepare_pod_common`]
crates/pod/src/pod.rs:4429:/// from the manifest cascade and then split into Pod fields.
crates/pod/src/pod.rs:4438: /// SKILL.md shadow events surfaced during workflow-registry build.
crates/pod/src/pod.rs:4439: /// The Pod constructor drains these into the notify buffer right
crates/pod/src/pod.rs:4440: /// after the Pod is materialised so the first LLM request observes
crates/pod/src/pod.rs:4441: /// any skill ↔ workflow collisions.
crates/pod/src/pod.rs:4445:/// Resolve pwd / scope / LLM client / prompt catalog from a validated
crates/pod/src/pod.rs:4446:/// manifest cascade. Used by `from_manifest`, `from_manifest_spawned`,
crates/pod/src/pod.rs:4447:/// and `restore_from_manifest` so they share one definition of "what
crates/pod/src/pod.rs:4448:/// pieces fall out of a manifest".
crates/pod/src/pod.rs:4450:/// `parse_template` controls whether the manifest's instruction is
crates/pod/src/pod.rs:4451:/// parsed as a system-prompt template. New Pods always parse so the
crates/pod/src/pod.rs:4452:/// template is rendered at first turn; restored Pods skip parsing
crates/pod/src/pod.rs:4520:/// Ingest external SKILL.md sources into the workflow registry.
crates/pod/src/pod.rs:4522:/// Skills come exclusively from the manifest's `[skills] directories`
crates/pod/src/pod.rs:4523:/// list (resolved against the manifest base directory). Internal
crates/pod/src/pod.rs:4524:/// Workflows already loaded via [`workflow_crate::load_workflows`] take priority
crates/pod/src/pod.rs:4526:/// [`workflow_crate::ShadowedSkill`] events that the caller pushes onto the
crates/pod/src/pod.rs:4527:/// Pod's notification buffer.
crates/pod/src/pod.rs:4548:/// Drain skill-ingest shadow events into the Pod's notify buffer so the
crates/pod/src/pod.rs:4560:/// Build the Pod's runtime [`Scope`] from the manifest, layering the
crates/pod/src/pod.rs:4561:/// memory subsystem's deny-write rules on top when `[memory]` is
crates/pod/src/pod.rs:4563:/// directories ingested. The deny rules cap generic CRUD tools so they
crates/pod/src/pod.rs:4564:/// cannot touch `<workspace>/memory/` or `<workspace>/knowledge/` while
crates/pod/src/pod.rs:4565:/// the memory tools (registered separately) bypass `ScopedFs` and write
crates/pod/src/pod.rs:4568:/// / `assets/` referenced by the Workflow body.
crates/pod/src/pod.rs:4582:/// Allow-rules granting `Read` access to every skill directory the Pod
crates/pod/src/pod.rs:4583:/// will ingest from the manifest's `[skills] directories`. Returned
crates/pod/src/pod.rs:4601:/// Snapshot the process's current working directory as the Pod's pwd,
crates/pod/src/pod.rs:4602:/// canonicalising symlinks and any `.`/`..` components. The Pod keeps
crates/pod/src/pod.rs:5113: // Construct the smallest possible PodManifest that resolves; only
crates/pod/src/pod.rs:5194: // No workflow exists to shadow `alpha`, so no shadow event for it.
crates/protocol/src/lib.rs:8:// Method (Client → Pod via Unix Socket)
crates/protocol/src/lib.rs:17: /// Human-readable text injected into the target Pod's LLM context
crates/protocol/src/lib.rs:19: /// context; use `PodEvent` for typed lifecycle reports.
crates/protocol/src/lib.rs:23: /// Typed lifecycle report from a child Pod to its direct parent.
crates/protocol/src/lib.rs:30: /// Pod can resume the interrupted work via `Resume`, or start a
crates/protocol/src/lib.rs:32: /// synthetic tool result before the new user message is appended).
crates/protocol/src/lib.rs:34: /// Request an explicit compaction while the Pod is otherwise idle.
crates/protocol/src/lib.rs:36: /// This is a typed control method: clients must not send `compact` as a
crates/protocol/src/lib.rs:40: /// Request a list of completion candidates from the Pod.
crates/protocol/src/lib.rs:46: /// (Knowledge / Workflow).
crates/protocol/src/lib.rs:51: /// List Pods visible to this Pod from durable Pod state. This is not a
crates/protocol/src/lib.rs:52: /// host-wide Pod universe query.
crates/protocol/src/lib.rs:54: /// Inspect one Pod by name if its state exists and it is visible to this Pod.
crates/protocol/src/lib.rs:58: /// Attach to a visible live Pod, or restore it from durable Pod state when
crates/protocol/src/lib.rs:65:/// Typed lifecycle events sent from a child Pod to its parent.
crates/protocol/src/lib.rs:67:/// Delivered as `Method::PodEvent` over the parent's Unix socket. The
crates/protocol/src/lib.rs:69:/// pod-registry updates) and renders a human-readable string that is
crates/protocol/src/lib.rs:74:/// child Pod).
crates/protocol/src/lib.rs:83: /// Limited to worker runtime failures (provider / tool errors) —
crates/protocol/src/lib.rs:91: /// Child sub-delegated scope to a grandchild Pod via `SpawnPod`.
crates/protocol/src/lib.rs:94: /// `spawned_pods.json` so it can manage the grandchild directly
crates/protocol/src/lib.rs:99: /// Sub-delegating Pod (= the sender itself).
crates/protocol/src/lib.rs:101: /// Name of the grandchild Pod.
crates/protocol/src/lib.rs:117:/// clients (CLI piping, scripts) only need to produce a single
crates/protocol/src/lib.rs:118:/// `Segment::Text`; richer clients (TUI / GUI) construct typed atoms
crates/protocol/src/lib.rs:119:/// (paste chips, file refs, knowledge refs, workflow invocations) and
crates/protocol/src/lib.rs:120:/// send them through directly so the Pod side never has to re-parse a
crates/protocol/src/lib.rs:124:/// `Segment::Unknown`. Pod treats this the same as known-but-unresolved
crates/protocol/src/lib.rs:131: /// Free-form text. The fallback every client can produce.
crates/protocol/src/lib.rs:133: /// Bracketed-paste capture from a TUI-style client. `id`, `chars`
crates/protocol/src/lib.rs:143: /// `@<path>` file-system reference. Pod resolves readable files to
crates/protocol/src/lib.rs:148: /// `#<slug>` Knowledge reference (see `docs/plan/memory.md`).
crates/protocol/src/lib.rs:150: /// `/<slug>` Workflow invocation (see `docs/plan/workflow.md`).
crates/protocol/src/lib.rs:152: /// Unknown variant from a newer client. Pod treats this as an
crates/protocol/src/lib.rs:168: /// alongside this call (Pod does so at submit time).
crates/protocol/src/lib.rs:170: /// Sigil-prefixed variants (`FileRef` / `KnowledgeRef` / `WorkflowInvoke`)
crates/protocol/src/lib.rs:206: /// Used by dumb clients, inter-Pod tools, and tests that only have
crates/protocol/src/lib.rs:216:// Event (Pod → Client via Unix Socket broadcast)
crates/protocol/src/lib.rs:222: /// A user input message was accepted by the Pod and is about to
crates/protocol/src/lib.rs:223: /// start a new turn. Broadcast to every subscribed client so
crates/protocol/src/lib.rs:224: /// additional TUI / GUI instances show the same pending user line
crates/protocol/src/lib.rs:226: /// submitting clients would see tool calls and assistant text
crates/protocol/src/lib.rs:237: /// Carries the JSON form of `session_store::SystemItem`. Covers
crates/protocol/src/lib.rs:238: /// `Method::Notify` echoes, child-Pod lifecycle events from
crates/protocol/src/lib.rs:239: /// `Method::PodEvent`, `@<path>` / `#<slug>` / `/<slug>`
crates/protocol/src/lib.rs:241: /// Clients dispatch on the `kind` tag for typed rendering instead
crates/protocol/src/lib.rs:255: /// `Method::PodEvent` re-injection (kind=`PodEvent`), and any other
crates/protocol/src/lib.rs:261: /// pod event body) is delivered separately via the immediately
crates/protocol/src/lib.rs:269: /// into the same AgentTurn). When the input changes (a new tool
crates/protocol/src/lib.rs:275: /// Currently retry is not yet implemented (`llm-worker-stream-continuation`)
crates/protocol/src/lib.rs:303: /// This is operational state for clients to render while the worker is
crates/protocol/src/lib.rs:333: /// some providers (or some configurations) emit thinking metadata
crates/protocol/src/lib.rs:341: /// (empty string when the provider didn't emit plaintext).
crates/protocol/src/lib.rs:360: /// Short human-readable summary. Always present; used by clients
crates/protocol/src/lib.rs:363: /// Full tool output. Absent when the tool chose to return
crates/protocol/src/lib.rs:375: /// occupancy; subtracting it yields the "net upload" the client
crates/protocol/src/lib.rs:377: /// the TUI status line accumulates per turn.
crates/protocol/src/lib.rs:391: /// Sent exactly once at the start of every client connection.
crates/protocol/src/lib.rs:394: /// as the JSON form of `session_store::LogEntry`. This is the
crates/protocol/src/lib.rs:395: /// bulk-reconstruction lane: clients walk the entries to seed their
crates/protocol/src/lib.rs:398: /// `greeting` and `status` accompany the snapshot so clients render
crates/protocol/src/lib.rs:399: /// pod identity and current controller state without an extra round
crates/protocol/src/lib.rs:415: /// from the live writer's cached head. Clients drop their derived
crates/protocol/src/lib.rs:419: /// Payload is the JSON form of `session_store::LogEntry::SegmentStart`.
crates/protocol/src/lib.rs:423: /// Current Pod controller status. Broadcast on every controller-level
crates/protocol/src/lib.rs:436: /// Reply to `Method::ListVisiblePods`. Payload is a stable JSON value so
crates/protocol/src/lib.rs:437: /// the Pod crate can evolve discovery fields without introducing a protocol
crates/protocol/src/lib.rs:438: /// dependency on session-store.
crates/protocol/src/lib.rs:442: /// Reply to `Method::InspectPod`.
crates/protocol/src/lib.rs:446: /// Reply to `Method::AttachOrRestorePod`.
crates/protocol/src/lib.rs:451: /// Latest memory extract/consolidation lifecycle event for UI observability.
crates/protocol/src/lib.rs:453: /// This is not part of LLM history or prompt context; clients may display it
crates/protocol/src/lib.rs:456: /// Pod has started compacting the current session.
crates/protocol/src/lib.rs:460: /// Broadcast to all clients; not replayed to late subscribers.
crates/protocol/src/lib.rs:476:/// User-facing alert emitted from the Pod layer.
crates/protocol/src/lib.rs:479:/// here are assembled explicitly by the Pod when a condition should be
crates/protocol/src/lib.rs:480:/// surfaced to the person driving the client. Keep messages short and
crates/protocol/src/lib.rs:522:/// Mirrors the TUI prefix sigils: `@` → `File`, `#` → `Knowledge`,
crates/protocol/src/lib.rs:523:/// `/` → `Workflow`. Knowledge and Workflow resolvers are currently
crates/protocol/src/lib.rs:525:/// nailed down here so the TUI side can ship without waiting for
crates/protocol/src/lib.rs:526:/// the memory / workflow tickets.
crates/protocol/src/lib.rs:537:/// `value` is a path (file kind) or a slug (knowledge / workflow).
crates/protocol/src/lib.rs:538:/// `is_dir` is meaningful only for the file kind — it lets the TUI
crates/protocol/src/lib.rs:548:/// Pod self-description rendered by the TUI when a session starts empty.
crates/protocol/src/lib.rs:550:/// Built once in the Pod controller from the resolved manifest and
crates/protocol/src/lib.rs:551:/// transmitted alongside `Event::Snapshot` so clients don't need
crates/protocol/src/lib.rs:552:/// their own view of the manifest.
crates/protocol/src/lib.rs:561: /// Model context window in tokens. Always filled by the Pod greeting.
crates/protocol/src/lib.rs:593:/// notify message, pod event body) is delivered by the immediately
crates/protocol/src/lib.rs:602: /// `Method::PodEvent` — typed lifecycle report from a child Pod.
crates/protocol/src/lib.rs:620: /// The accepted Method::Run produced no assistant/tool output before
crates/protocol/src/lib.rs:621: /// user interruption, so the Pod rolled the submit-time turn state back
crates/protocol/src/lib.rs:622: /// to its pre-submit snapshot. Clients should treat the Pod as Idle and
crates/protocol/src/lib.rs:642:// Defined here so that both `manifest` (config parsing) and `protocol`
crates/protocol/src/lib.rs:643:// itself (inter-pod messaging such as `PodEvent::ScopeSubDelegated`) can
crates/protocol/src/lib.rs:652: /// manifest file's directory (cwd for overlay layers) before cascade
crates/protocol/src/lib.rs:742: // A future client sends a segment kind this Pod has never heard of.
crates/protocol/src/lib.rs:744: // unknown payload must surface as `Segment::Unknown` so the Pod