zoey_core/
lib.rs

1//! ZoeyAI Core Runtime
2//!
3//! This crate provides the core runtime, types, and interfaces for building
4//! AI agents optimized for local model deployment. It includes:
5//!
6//! - Agent runtime with resource-efficient execution
7//! - Plugin system with dependency resolution
8//! - Memory management optimized for edge devices
9//! - Local model integration (Ollama, llama.cpp, LocalAI)
10//! - Event system for pub/sub messaging
11//! - Planning and cost management system
12//! - Privacy-first, offline-capable architecture
13//!
14//! # Example: Local Model Agent
15//!
16//! ```no_run
17//! use zoey_core::*;
18//!
19//! #[tokio::main]
20//! async fn main() -> Result<()> {
21//!     // Initialize runtime for local Ollama model
22//!     let runtime = AgentRuntime::new(RuntimeOpts::default()).await?;
23//!     // Agent runs 100% locally, no cloud dependencies
24//!     Ok(())
25//! }
26//! ```
27
28#![warn(missing_docs)]
29#![warn(clippy::all)]
30#![allow(clippy::too_many_arguments)]
31
32// Re-export commonly used types
33pub use uuid::Uuid;
34
35// Core modules
36pub mod actions;
37pub mod agent_api;
38pub mod character_loader;
39pub mod config;
40pub mod distributed;
41pub mod dynamic_prompts;
42pub mod zoeyos;
43pub mod entities;
44pub mod error;
45pub mod function_calling;
46pub mod infrastructure;
47pub mod ipo;
48pub mod message;
49pub mod ml_bridge;
50pub mod multi_agent;
51pub mod observability;
52pub mod planner;
53pub mod plugin;
54pub mod plugin_system;
55pub mod preprocessor;
56pub mod resilience;
57pub mod roles;
58pub mod runtime;
59pub mod runtime_ref;
60pub mod secrets;
61pub mod security;
62pub mod streaming;
63pub mod templates;
64pub mod testing;
65pub mod training;
66pub mod types;
67pub mod utils;
68#[cfg(feature = "otel")]
69pub use infrastructure::otel;
70pub mod detectors;
71pub mod extensions;
72pub mod integration;
73pub mod nlp;
74pub mod pipeline;
75pub mod workers;
76
77// Re-export main types
78pub use actions::{compose_action_examples, format_action_names, format_actions};
79pub use character_loader::{load_character_from_xml, parse_character_xml};
80pub use config::{
81    get_env_bool, get_env_float, get_env_int, get_env_or, get_required_env, load_env,
82    load_env_from_path, validate_env,
83};
84pub use distributed::{
85    ClusterConfig, DistributedMessage, DistributedRuntime, NodeInfo, NodeStatus,
86};
87pub use dynamic_prompts::{
88    compose_random_user, upgrade_double_to_triple, DynamicPromptExecutor, DynamicPromptOptions,
89    MetricsSummary, ModelMetrics, ResponseFormat, SchemaMetrics, SchemaRow, SchemaType,
90    ValidationLevel,
91};
92pub use zoeyos::{
93    ZoeyOS, ZoeyOSMetrics, HealthStatus as ZoeyOSHealthStatus, SendMessageOptions,
94    SendMessageResult,
95};
96pub use entities::{
97    create_unique_uuid_for_entity, find_entity_by_name, find_entity_by_name_with_config,
98    format_entities, get_entity_details, get_recent_interactions, EntityResolutionConfig,
99};
100pub use error::{ZoeyError, Result};
101pub use function_calling::{
102    create_function_definition, FunctionCall, FunctionDefinition, FunctionHandler,
103    FunctionRegistry, FunctionResult,
104};
105pub use integration::{
106    AdaptiveCapable,
107    AlternativeOption,
108    AlwaysOnPlugins,
109    AuditContext,
110    // Core integration
111    Capability,
112    CapabilityRegistry,
113    CpuInfo,
114    // Dynamic plugin management
115    DynamicPluginManager,
116    ExplainabilityCapable,
117    Explanation,
118    FinetuneResult,
119    GpuInfo,
120    HardwareCapable,
121    HardwareInfo,
122    IntegrationBridge,
123    IntegrationSummary,
124    // Intent detection
125    IntentCategory,
126    IntentDetector,
127    // Capability traits
128    MLCapable,
129    MemoryInfo,
130    // Data types
131    ModelStatus,
132    OptimizationRecommendation,
133    PluginLifecycle,
134    PluginManagerStatus,
135    // Plugin lifecycle
136    PluginPolicy,
137    PluginState,
138    ProcessedIntent,
139    TaskConfig,
140    TrainingExample,
141    WorkflowCapable,
142    WorkflowConfig,
143    WorkflowResult,
144    WorkflowStatus,
145};
146pub use ipo::{create_government_pipeline, IPOPipeline, Input, Output, Process, ProcessDecision};
147pub use message::MessageProcessor;
148pub use ml_bridge::{
149    MLBridge, MLFramework, ModelInterface, PythonEnvironment, SecurityConfig, TrainedModel,
150};
151pub use multi_agent::{
152    AgentCapability, AgentStatus as MultiAgentStatus, CoordinationMessage, CoordinationMessageType,
153    MultiAgentCoordinator, MultiAgentService,
154};
155pub use observability::{
156    CostSummary, CostTracker, CostTrackingConfig, LLMCallContext, LLMCostRecord, Observability,
157    ObservabilityConfig, PromptStorageConfig, ProviderPricing, RestApiConfig,
158};
159pub use planner::{
160    AgentBudget, BudgetAction, BudgetCheckResult, BudgetManager, ComplexityAnalyzer,
161    ComplexityAssessment, ComplexityLevel, CostCalculator, CostEstimate, EmojiPlanner,
162    EmojiStrategy, EmojiTone, EmojiType, ExecutionPlan, ExecutionRecord, KnowledgeAnalyzer,
163    KnowledgeGap, KnowledgeState, MetricsTracker, ModelPricing, Optimization, PlanOptimizer,
164    Planner, PlannerConfig, PlannerMetrics, Priority, ResponseStrategy, ResponseTone, ResponseType,
165    TokenBudget, TokenCounter, TokenEstimate, TokenTracker,
166};
167pub use plugin::{
168    get_plugin_actions, get_plugin_evaluators, get_plugin_providers, get_plugin_services,
169    initialize_plugins, load_plugins, resolve_plugin_dependencies, validate_plugin,
170};
171pub use resilience::{
172    retry_with_backoff, CircuitBreaker, CircuitState, HealthCheck, HealthChecker, HealthStatus,
173    RetryConfig,
174};
175pub use roles::{
176    find_worlds_for_owner, get_user_world_role, is_admin_or_owner, is_moderator_or_higher, Role,
177};
178pub use runtime::{AgentRuntime, RuntimeOpts};
179pub use runtime_ref::{downcast_runtime_ref, RuntimeRef};
180pub use secrets::{
181    get_secret, has_character_secrets, load_secret_from_env, remove_secret,
182    set_default_secrets_from_env, set_secret,
183};
184pub use security::{
185    decrypt_secret, encrypt_secret, hash_password, sanitize_input, validate_input, verify_password,
186    RateLimiter,
187};
188pub use streaming::{
189    collect_stream, create_text_stream, StreamHandler, TextChunk, TextStream, TextStreamSender,
190};
191pub use templates::{
192    compose_prompt_from_state, TemplateEngine, MESSAGE_HANDLER_TEMPLATE, POST_CREATION_TEMPLATE,
193};
194pub use testing::{create_mock_runtime, create_test_memory, create_test_room, run_test_suite};
195pub use training::{
196    create_training_collector, DatasetBuilder, DatasetStatistics, RLHFManager, TrainingCollector,
197    TrainingConfig, TrainingFormat, TrainingSample,
198};
199pub use types::*;
200pub use utils::{create_unique_uuid, string_to_uuid, Logger, BM25};
201
202// Extension traits for enterprise
203pub use extensions::{
204    // Learning
205    LearningProvider, LearningFeedback, FeedbackSource, TrainingResult,
206    BasicLearningProvider,
207    // Compliance
208    ComplianceProvider, PiiFinding, PiiType, Severity, ComplianceFramework,
209    ComplianceCheckResult, ComplianceFinding, AuditEntry, AuditOutcome,
210    ComplianceAuditReport, BasicComplianceProvider,
211    // Distributed (renamed to avoid conflict with distributed module)
212    DistributedExecutor,
213    NodeInfo as ExtNodeInfo,
214    NodeStatus as ExtNodeStatus,
215    NodeResources as ExtNodeResources,
216    DistributedTask, DistributedTaskResult, ClusterStatus,
217    // Policy
218    PolicyProvider, PolicyRule, PolicyRuleType, PolicyDecision,
219    // Identity
220    IdentityProvider, Identity, ConsentScope, DataExportRequest,
221    DataDeletionRequest, DataRequestStatus,
222    // Registry
223    ExtensionRegistry,
224};