1pub mod agent;
13pub mod checkpoint;
14pub mod checkpoint_log;
15pub mod compact;
16pub mod config;
17pub mod config_file;
18pub mod cost;
19pub mod error;
20pub mod event;
21pub mod hooks;
22#[cfg(feature = "http")]
23pub mod http;
24pub mod kernel;
25pub mod llm;
26pub mod logging;
27#[cfg(feature = "mcp")]
28pub mod mcp;
29#[cfg(feature = "mcp")]
30pub mod mcp_server;
31pub mod memory;
32pub mod message;
33pub mod migrate;
34pub mod multi;
35pub mod paths;
36pub mod permissions;
37pub mod providers;
38pub mod rewind;
39pub mod run_core;
40pub mod runtime;
41pub mod runtime_goal;
42pub mod session;
43pub mod session_lock;
44pub mod skills;
45pub mod storage;
46pub mod tool_set_provider;
47pub mod tools;
48pub mod transcript;
49#[cfg(feature = "tui")]
50pub mod tui;
51#[cfg(feature = "weixin")]
52pub mod weixin;
53
54pub use agent::PlanningMode;
55pub use agent::{FinishReason, PermissionDecision};
56pub use checkpoint::{CheckpointId, CheckpointInfo, RestoreStats, ShadowRepo};
57pub use checkpoint_log::{
58 read_log as read_checkpoint_log, truncate_to_turn as truncate_checkpoint_log,
59 CheckpointLogWriter, CheckpointRecord, TouchedVia,
60};
61pub use compact::Compactor;
62pub use config::Config;
63pub use error::{Error, Result};
64pub use event::{AgentEvent, ChannelSink, CompositeSink, EventSink, NullSink};
65pub use hooks::ExternalHookRunner;
66pub use hooks::ToolTimingHook;
67pub use hooks::{Hook, HookAction, HookEvent, HookRegistry};
68pub use kernel::{AgentKernel, AgentKernelBuilder, SideEffect, TurnContext, TurnOutcome};
69pub use llm::{
70 context_window_tokens_for_model, default_compact_threshold_chars, pricing_for, Completion,
71 LlmProvider, ModelPricing, RetryPolicy, TokenUsage, ToolCall, ToolSpec,
72};
73#[cfg(feature = "mcp")]
74pub use mcp::{
75 discover_mcp_servers, load_mcp_config, McpClient, McpPrompt, McpPromptArgument,
76 McpPromptMessage, McpResource, McpResourceContent, McpServer, McpServerConfig, McpTool,
77 McpToolSpec, ServerCapabilities,
78};
79#[cfg(feature = "mcp")]
80pub use mcp_server::{McpServerManager, McpServerRunner};
81pub use message::{Message, Role};
82pub use migrate::{migrate_workspace, MigrateReport};
83pub use multi::{
84 parse_delegations, AgentMessage, AgentPool, AgentRole, DelegationResult, MemoryEntry,
85 MessageBus, MessageType, Pipeline, PipelineResult, SharedMemory, StageOutcome,
86 TeamOrchestrator, TeamResult,
87};
88pub use paths::{
89 legacy_paths_in_workspace, user_data_dir, user_scratchpad_path, user_sessions_dir,
90 user_shadow_git_dir, user_workspace_dir, workspace_hash,
91};
92pub use permissions::auto_classifier::{AutoClassifier, DenialTracker};
93pub use permissions::PermissionMode;
94pub use permissions::{LayeredPermissionsConfig, PermissionLayer, RuleSource};
95pub use permissions::{RuleBehavior, SharedPermissions};
96pub use providers::{all_presets, find_preset, ModelSpec, ProviderPreset};
97pub use rewind::{
98 apply_rewind, checkpoint_log_path, detect_conflicts, plan_rewind, ConflictReport, RewindPlan,
99 RewindResult,
100};
101pub use runtime::{AgentRuntime, AgentRuntimeBuilder, RuntimeOutcome};
102pub use session::OrphanToolCall;
103pub use session::SessionFile;
104pub use session::SessionPersistenceSink;
105pub use session::SessionReader;
106pub use session::SessionWriter;
107pub use session::{
108 entry_to_message, truncate_transcript_to_turn, SessionLock, SessionMeta, TranscriptEntry,
109 TruncateStats,
110};
111pub use skills::{
112 discover_skills, skill_index, skills_for_injection, Skill, SkillMode, SkillParam, SkillRef,
113 SkillScript, SkillSection,
114};
115#[cfg(feature = "cloud-runtime")]
116pub use storage::RedisSessionStore;
117#[cfg(feature = "cloud-runtime")]
118pub use storage::S3StorageBackend;
119pub use storage::{
120 AgentCheckpointState, LocalStorageBackend, NoopSessionStore, SessionStore, StorageBackend,
121};
122pub use tool_set_provider::{
123 LocalToolSetProvider, PolicyToolSetProvider, SandboxMode, ToolSetProvider,
124};
125pub use tools::policy_sandbox::{FsPolicy, PolicyConfig, ShellPolicy};
126pub use tools::PermissionHook;
127pub use tools::{
128 build_standard_tools, AuditMeta, EnterPlanModeTool, ExitPlanModeTool, ExitStatus,
129 PlanApprovalGate, PlanApprovalResult, PlanModeRequestGate, PlanModeRequestResult,
130 RequestPlanModeTool, TodoItem, TodoStatus, TodoWriteTool, Tool, ToolDispatch, ToolRegistry,
131 ToolSideEffect, TouchedFiles, AUDIT_ERR_MAX_BYTES,
132};
133pub use transcript::{TranscriptFile, TranscriptMeta};
134
135#[cfg(any(test, feature = "test-utils"))]
136pub mod test_util;
137
138#[inline]
142pub fn truncate_str(s: &str, max_bytes: usize) -> &str {
143 if s.len() <= max_bytes {
144 return s;
145 }
146 let mut end = max_bytes.min(s.len());
147 while end > 0 && !s.is_char_boundary(end) {
148 end -= 1;
149 }
150 &s[..end]
151}