ai-agent-sdk 0.5.0

Idiomatic agent sdk inspired by the claude code source leak
Documentation
pub mod types;
pub mod error;
pub mod http_client;
pub mod agent;
pub mod engine;
pub mod tool_helper;
pub mod mcp;
pub mod hooks;
pub mod session;
pub mod tools;
pub mod utils;
pub mod skills;
pub mod env;
pub mod memory;
pub mod ai_md;
pub mod compact;
pub mod plugin;
pub mod permission;
pub mod services;

pub use error::AgentError;
pub use types::*;
pub use agent::Agent;
pub use engine::QueryEngine;
pub use env::EnvConfig;
pub use compact::{get_auto_compact_threshold, calculate_token_warning_state, should_compact, estimate_token_count, TokenWarningState, AUTOCOMPACT_BUFFER_TOKENS, WARNING_THRESHOLD_BUFFER_TOKENS};
pub use session::{SessionMetadata, SessionData, save_session, load_session, list_sessions, fork_session, delete_session, get_session_messages, append_to_session, get_session_info, rename_session, tag_session};
pub use memory::{load_memory_prompt, MemoryType, MemoryFrontmatter, EntrypointTruncation, MAX_ENTRYPOINT_LINES, ensure_memory_dir_exists, get_auto_mem_path, get_memory_entrypoint, get_memory_base_dir, get_project_slug, is_auto_mem_path, is_auto_memory_enabled};
pub use ai_md::{get_ai_md_files, load_ai_md, process_ai_md_file, AiMdFile, AiMdType, AiMdContent, AI_MD_INSTRUCTION_PROMPT, MAX_AI_MD_CHARACTER_COUNT};
pub use hooks::{HookRegistry, HookDefinition, HookInput, HookOutput, HookConfig, HOOK_EVENTS, create_hook_registry};
pub use skills::{load_skill_from_dir, load_skills_from_dir, SkillMetadata, LoadedSkill, init_bundled_skills};
pub use tools::{get_all_base_tools, filter_tools, Tool, ToolDefinition, ToolInputSchema};
pub use tool_helper::{create_tool, create_tool_with_annotations, sdk_tool_to_tool_definition, SdkToolDefinition, ToolAnnotations};
pub use plugin::types::{PluginManifest, LoadedPlugin, PluginRepository, PluginConfig, PluginComponent, PluginError, PluginLoadResult, get_plugin_error_message, PluginAuthor, CommandMetadata};
pub use plugin::{load_plugin, load_plugins_from_dir, load_plugins_from_sources, CommandRegistry, PluginCommand, PluginMcpServer, PluginMcpServerManager, load_plugin_skills, register_plugin_skills, PluginSkill};
pub use permission::{
    PermissionBehavior, PermissionMode, PermissionRuleSource, PermissionRule,
    PermissionMetadata, PermissionDecisionReason,
    PermissionAllowDecision, PermissionAskDecision, PermissionDenyDecision,
    PermissionDecision, PermissionResult, PermissionContext, PermissionHandler,
};
pub use services::{
    retry::{retry_async, retry_with_retry_after, RetryConfig, RetryError, DEFAULT_MAX_RETRIES, is_rate_limit_error, is_service_unavailable_error, is_retryable_error},
    rate_limit::{RateLimiter, RateLimitConfig, RateLimitStatus, RateLimiterBuilder, RateLimit as RateLimitInfo},
    token_estimation::{estimate_tokens, estimate_tokens_characters, estimate_tokens_words, estimate_conversation, estimate_tool_definitions, TokenEstimate, EstimationMethod, fits_in_context, calculate_padding},
    model_cost::{ModelCosts, TokenUsage, calculate_cost, format_cost, CostSummary, ModelCostRegistry, COST_TIER_3_15, COST_TIER_5_25, COST_TIER_15_75, COST_HAIKU_35, COST_HAIKU_45},
};

/// Create a new agent with the given model and max turns.
/// This is a convenience function that matches the TypeScript SDK API.
/// Create a new agent (alias for Agent::new)
pub fn create_agent(model: &str, max_turns: u32) -> Agent {
    Agent::new(model, max_turns)
}

/// Alias for get_all_base_tools to match TypeScript API
pub fn get_all_tools() -> Vec<ToolDefinition> {
    get_all_base_tools()
}