Skip to main content

phi_agent/
lib.rs

1//! phi-agent: General-purpose AI Agent framework
2//!
3//! Built on agent-base and agent-works, providing builder factory, renderer,
4//! config resolution, session management, and other infrastructure.
5//! **Ships with zero application tools.** Kernel tools (file I/O, shell,
6//! multi-agent) are available via `phi-kernel-tools` behind feature flags —
7//! all off by default. Application tools are injected by consumers.
8
9#![warn(missing_docs)]
10
11pub mod agent;
12pub mod bridge;
13pub mod cli;
14pub mod config;
15pub mod event_log;
16/// System prompt generation (EN/CN).
17pub mod prompt;
18pub mod render;
19/// Session management — ID resolution, locking, snapshots, cleanup.
20pub mod session;
21
22// ── Common agent-base types ──
23// Only re-export the types consumers use most often.
24// For the full type set, import directly from agent-base.
25//
26// Note: AgentBuilder re-exports agent_works::AgentBuilder (not agent_base::AgentBuilder)
27// because phi-agent is a full-stack framework that includes multi-agent, skills, MCP, etc.
28// For the bare runtime builder, use agent_base::AgentBuilder directly.
29pub use agent_base::{
30    AgentError, AgentResult, AgentRuntime, ApprovalHandler, ApprovalRequest, ConsecutiveFailureRecovery, LlmClient,
31    Middleware, OpenAiClient, PlanItem, PlanStepStatus, PostLlmCtx, PreLlmCtx, ReasoningConfig, ReasoningEffort,
32    RunOutcome, RuntimeEvent, SafetyConfig, SessionId, Tool, ToolContext, ToolControlFlow, ToolMetadata, ToolOutput,
33    ToolPolicy, TurnFactMiddleware, TurnToolLimitMiddleware, UpdatePlanTool, UserMessageCtx,
34};
35pub use agent_works::AgentBuilder;
36
37// ── phi-telemetry (metrics types and storage) ──
38#[cfg(feature = "telemetry")]
39pub use phi_telemetry::{
40    SessionMetrics, SessionOutcome, SessionSummary, TurnMetrics, TurnOutcome, list_all_metrics, load_metrics,
41    save_metrics, try_load_metrics,
42};
43
44// ── agent-works ──
45pub use agent_works::focus::{Context as FocusContext, Focus, FocusError, FocusInput, FocusOutput};
46
47// ── MCP (feature-gated) ──
48#[cfg(feature = "mcp")]
49pub use agent_works::mcp::{McpServeConfig, McpServer, McpServerConfig, McpServerTransport, McpTransport};
50
51// ── phi-agent types ──
52pub use agent::{CompressionConfig, PhiAgent, PhiAgentConfig, SummarizingMiddleware, base_agent_builder};
53pub use cli::{ApprovalMode, AutoApprovalHandler};
54pub use config::{LlmConfig, resolve_llm_config};
55pub use event_log::{event_to_jsonl, event_to_value, save_turn_log};
56pub use prompt::{build_system_prompt, build_system_prompt_cn};
57pub use render::{
58    EventRenderer, JsonStreamRenderer, NullRenderer, OutputFormat, create_renderer, create_stdout_renderer,
59};
60pub use session::{
61    SessionContext, SnapshotInfo, cleanup_expired_sessions, create_snapshot, delete_snapshot, list_snapshots,
62    resolve_session, restore_snapshot, validate_session_id, validate_snapshot_name,
63};