Skip to main content

uira_core/
lib.rs

1pub mod config;
2pub mod events;
3pub mod protocol;
4
5pub const UIRA_DIR: &str = ".uira";
6pub const DEFAULT_ANTHROPIC_MODEL: &str = "claude-sonnet-4-20250514";
7pub const DEFAULT_OPENAI_MODEL: &str = "gpt-4o";
8pub const ENV_ANTHROPIC_API_KEY: &str = "ANTHROPIC_API_KEY";
9pub const ENV_OPENAI_API_KEY: &str = "OPENAI_API_KEY";
10pub const ENV_GEMINI_API_KEY: &str = "GEMINI_API_KEY";
11pub const ENV_GOOGLE_API_KEY: &str = "GOOGLE_API_KEY";
12
13pub use config::*;
14pub use events::*;
15
16// Selective re-exports from protocol to avoid collisions with:
17// - FileChangeType (exists in events::*)
18// - HookCommand (exists in config::*)
19// Consumers needing protocol-specific versions can use uira_core::protocol::*
20
21// From protocol/events.rs (excluding FileChangeType)
22pub use protocol::{AgentError, AgentState, ExecutionResult, Item, Progress, ThreadEvent};
23
24// From protocol/messages.rs
25pub use protocol::{
26    ContentBlock, ContentDelta, ImageSource, Message, MessageContent, MessageDelta, ModelResponse,
27    Role, StreamChunk, StreamError, StreamMessageStart, ToolCall,
28};
29
30// From protocol/tools.rs
31pub use protocol::{
32    ApprovalRequest, ApprovalRequirement, CacheControl, JsonSchema, ReviewDecision,
33    SandboxPreference, SuggestedAction, ToolOutput, ToolOutputContent, ToolResult, ToolSpec,
34};
35
36// From protocol/types.rs
37pub use protocol::{
38    MessageId, ModelTier, Provider, SessionId, StopReason, ThreadId, TodoItem, TodoPriority,
39    TodoStatus, TokenUsage, WorkspaceConfig, TODO_CONTINUATION_PROMPT,
40};
41
42// From protocol/primitives (excluding HookCommand, HookMatcher, OnFail which collide or depend on HookCommand)
43pub use protocol::{
44    atomic_write, atomic_write_secure, HookContext, HookEvent, HookEventParseError, HookOutput,
45    HookResult, PermissionDecision, PermissionMode, PostToolUseInput, PreCompactInput,
46    PreToolUseInput, SessionInfo, StopInput, ToolResponse, UserPromptSubmitInput,
47};