Skip to main content

daimon_core/
lib.rs

1//! # daimon-core
2//!
3//! Core traits and types for the [Daimon](https://docs.rs/daimon) AI agent
4//! framework. This crate is the **plugin interface** — implement [`Model`] to
5//! add a new LLM provider.
6//!
7//! Provider crates depend on `daimon-core` for the shared types and trait.
8//! The main `daimon` crate re-exports everything from here, so end users
9//! typically never need to depend on `daimon-core` directly.
10//!
11//! ## Implementing a Provider
12//!
13//! ```ignore
14//! use daimon_core::{Model, ChatRequest, ChatResponse, Result, ResponseStream};
15//!
16//! pub struct MyProvider { /* ... */ }
17//!
18//! impl Model for MyProvider {
19//!     async fn generate(&self, request: &ChatRequest) -> Result<ChatResponse> {
20//!         // call your LLM API
21//!         todo!()
22//!     }
23//!
24//!     async fn generate_stream(&self, request: &ChatRequest) -> Result<ResponseStream> {
25//!         todo!()
26//!     }
27//! }
28//! ```
29
30mod archival_memory;
31mod core_memory;
32pub mod distributed;
33mod document;
34mod embedding;
35mod episodic_memory;
36mod error;
37mod memory;
38mod model;
39mod stream;
40pub mod stream_util;
41mod tool;
42mod tool_types;
43mod types;
44pub mod vector_store;
45
46pub use archival_memory::{
47    ArchivalMemory, ArchivalRecord, ErasedArchivalMemory, SharedArchivalMemory,
48};
49pub use core_memory::{
50    CoreMemory, CoreMemoryBlock, ErasedCoreMemory, SharedCoreMemory, render_blocks,
51};
52pub use distributed::{AgentTask, ErasedTaskBroker, TaskBroker, TaskResult, TaskStatus};
53pub use document::{Document, ScoredDocument};
54pub use embedding::{EmbeddingModel, ErasedEmbeddingModel, SharedEmbeddingModel};
55pub use episodic_memory::{
56    EpisodicEvent, EpisodicMemory, EpisodicQuery, ErasedEpisodicMemory, SharedEpisodicMemory,
57};
58pub use error::{DaimonError, Result};
59pub use memory::{ErasedMemory, Memory, SharedMemory};
60pub use model::{ErasedModel, Model, SharedModel};
61pub use stream::{ResponseStream, StreamEvent};
62pub use tool::{
63    BackoffStrategy, ErasedTool, SharedTool, Tool, ToolChoice, ToolOutput, ToolRetryPolicy,
64};
65pub use tool_types::ToolCall;
66pub use types::{ChatRequest, ChatResponse, Message, Role, StopReason, ToolSpec, Usage};
67pub use vector_store::{ErasedVectorStore, SharedVectorStore, VectorStore};