//! Unified tool runtime contract.
//!
//! Single home for the `Tool` trait, `ToolDispatch`, `ToolError`,
//! `ToolNotification`, `ToolSearchIndex`, `ToolCallContext`, `ToolStream`,
//! the in-process `LocalRegistry`, and the helper constructors that build
//! well-formed streams. Adapters for individual tool sources re-export
//! from here so every tool author sees the same surface.

#![forbid(unsafe_code)]

pub mod context;
pub mod dispatch;
pub mod error;
pub mod local_registry;
pub mod notification;
pub mod render;
pub mod search;
pub mod streaming;
pub mod tool;

pub use context::{
    BehaviorVersion, Cancellation, Cwd, ListToolsContext, SessionContext, ToolCallContext,
    TraceContext, TypedExtensions, WorkspaceViewerContext,
};
pub use dispatch::ToolDispatch;
pub use error::{ToolError, ToolErrorKind};
pub use local_registry::LocalRegistry;
pub use notification::{
    BashExecutionBackgrounded, BashExecutionComplete, BashExecutionFailed, BashExecutionTimeout,
    BashNotificationBase, BashOutputChunk, FileRead, FileWritten, LspServerCrashed,
    LspServerFailed, LspServerReady, LspServerRetrying, LspServerStarting, MonitorEvent,
    PlanModeEntered, PlanModeExited, ScheduledTaskCreated, ScheduledTaskFired,
    ScheduledTaskRemoved, TaskKind, TaskSnapshot, ToolNotification, ToolNotificationHandle,
    UserQuestionAsked,
};
pub use render::{
    ModelOutputExtractor, ToolChatCompletion, ToolChatCompletionResponse, ToolCodeExecutionResult,
    ToolOutput, ToolStreamError, extract_content_blocks, extractor_for,
};
pub use search::{SearchSnapshot, ServerSummary, ToolIndex, ToolSearchIndex, ToolSearchResult};
pub use streaming::{PartialResultPayload, stream_chunk};
pub use tool::{
    ArcTool, ArcToolFamily, ContentBlock, Tool, ToolDyn, ToolFamily, ToolProgress, ToolStream,
    ToolStreamItem, ToolVariant, TypedToolOutput, terminal_only, with_progress,
};

pub use kigi_tool_protocol::{StreamingSpec, ToolCallId, ToolCapabilities, ToolId, ToolScope};
