pub mod events;
pub mod harness;
pub mod raw;
pub mod models_dev;
pub use events::{
normalize_process_event, run_events_from_parsed, ByteRange, ParsedLine, PlanEntry,
PlanEntryPriority, PlanEntryStatus, Question, QuestionOption, RunEvent, SessionInfo,
SuggestedEdit, ToolCallEnd, ToolCallStart, ToolKind, ToolLocation, UsageInfo,
};
pub use raw::parse_raw_line;
pub use harness::{
run_login_command, BoxError, CredentialSpec, Harness, HarnessCapabilities, HarnessError,
HarnessInfo, HarnessModel, HarnessReadiness, InstallCallback, InstalledModel, ModelManagement,
PullProgress, PullProgressAggregator, PullProgressCallback, ReasoningEffort, RunCallback,
RunControl, RunHandle, RunMode, RunRequest, RunTuning,
};
pub use cli_stream::{
augmented_node_path, spawn_streaming, InstallEvent, ProcessEvent, ProcessHandle, StreamError,
};
#[cfg(feature = "bob")]
pub mod bob;
#[cfg(feature = "claude")]
pub mod claude;
#[cfg(feature = "codex")]
pub mod codex;
#[cfg(feature = "acp")]
pub mod acp;
#[cfg(feature = "openai-compatible")]
pub mod openai_compatible;
pub mod registry;
#[cfg(feature = "bob")]
pub use bob::{bob_tool_kind, normalize_bob_event, BobHarness as Bob, BOB_HARNESS_ID};
#[cfg(feature = "bob")]
pub use bob_rs::BobError;
#[cfg(feature = "claude")]
pub use claude::{ClaudeHarness as Claude, CLAUDE_HARNESS_ID};
#[cfg(feature = "codex")]
pub use codex::{CodexHarness as Codex, CODEX_HARNESS_ID};
#[cfg(feature = "acp")]
pub use acp::{AcpHarness, AcpHarnessConfig};
#[cfg(feature = "openai-compatible")]
pub use openai_compatible::{
AgentDef, McpPrompt, McpPromptArg, McpServer, McpTransport, ModelCost, OpenHarness,
OpenHarnessConfig, Permission, PermissionPrompt, PermissionRequest, PermissionRule,
PromptMessage, SessionRecord,
};
pub use registry::{
default_registry, harness_by_id, harness_catalog, Registry, DEFAULT_HARNESS_ID,
};