[package]
edition = "2024"
rust-version = "1.85"
name = "echo_agent"
version = "0.1.4"
build = false
exclude = [
"/skills/",
".github/",
".claude/",
".idea/",
"echo-agent.example.yaml",
"echo-agent.yaml",
".env",
".env1",
".example.env",
"mcp.json.example",
"mcp.json",
".playwright-mcp/",
"**/.DS_Store",
"Cargo.lock",
"cargo",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Production-grade AI Agent framework for Rust — ReAct engine, multi-agent, memory, streaming, MCP, IM channels, workflows"
homepage = "https://github.com/EchoYue-lp/echo-agent"
documentation = "https://docs.rs/echo_agent"
readme = "README.md"
keywords = [
"ai",
"agent",
"llm",
"react",
"mcp",
]
categories = [
"development-tools",
"asynchronous",
"web-programming::http-client",
]
license = "MIT"
repository = "https://github.com/EchoYue-lp/echo-agent"
[package.metadata.docs.rs]
no-default-features = true
features = [
"a2a",
"mcp",
"telemetry",
"plan-execute",
"human-loop",
"handoff",
"topology",
"tasks",
"self-reflection",
"subagent",
"web",
"media",
"sqlite",
"channels",
"git",
"database",
"rag",
"chart",
"content-guard",
"project-rules",
]
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
a2a = [
"dep:axum",
"dep:jsonwebtoken",
]
channels = ["echo_integration/channels"]
chart = ["echo_tools/chart"]
content-guard = ["echo_core/guard"]
data = [
"dep:polars",
"echo_tools/data",
]
database = [
"dep:sqlx",
"echo_tools/database",
]
default = ["full"]
files = ["echo_tools/files"]
full = [
"a2a",
"mcp",
"telemetry",
"plan-execute",
"human-loop",
"handoff",
"topology",
"tasks",
"self-reflection",
"subagent",
"web",
"media",
"data",
"sqlite",
"channels",
"git",
"database",
"rag",
"chart",
"content-guard",
"project-rules",
"shell",
"files",
]
git = ["echo_tools/git"]
handoff = []
human-loop = ["echo_orchestration/websocket"]
mcp = ["echo_integration/mcp"]
media = [
"dep:pdf-extract",
"dep:lopdf",
"dep:calamine",
"dep:docx-rs",
"dep:encoding_rs",
"echo_tools/media",
]
plan-execute = []
project-rules = []
rag = ["echo_tools/rag"]
self-reflection = []
shell = ["echo_tools/shell"]
sqlite = [
"echo_state/sqlite",
"dep:rusqlite",
]
subagent = []
tasks = []
telemetry = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:tracing-opentelemetry",
]
testing = []
topology = []
web = [
"dep:scraper",
"dep:html2text",
"dep:url",
"echo_tools/web",
]
[lib]
name = "echo_agent"
path = "src/lib.rs"
[[example]]
name = "comprehensive_code_laboratory"
path = "examples/comprehensive_code_laboratory.rs"
[[example]]
name = "comprehensive_customer_service"
path = "examples/comprehensive_customer_service.rs"
required-features = ["sqlite"]
[[example]]
name = "comprehensive_data_analyst"
path = "examples/comprehensive_data_analyst.rs"
required-features = ["sqlite"]
[[example]]
name = "comprehensive_enterprise"
path = "examples/comprehensive_enterprise.rs"
required-features = ["testing"]
[[example]]
name = "comprehensive_personal_assistant"
path = "examples/comprehensive_personal_assistant.rs"
required-features = ["sqlite"]
[[example]]
name = "comprehensive_research_agent"
path = "examples/comprehensive_research_agent.rs"
required-features = ["sqlite"]
[[example]]
name = "demo"
path = "examples/demo.rs"
[[example]]
name = "demo01_tools"
path = "examples/demo01_tools.rs"
[[example]]
name = "demo02_tasks"
path = "examples/demo02_tasks.rs"
[[example]]
name = "demo03_approval"
path = "examples/demo03_approval.rs"
[[example]]
name = "demo04_suagent"
path = "examples/demo04_suagent.rs"
required-features = ["testing"]
[[example]]
name = "demo05_compressor"
path = "examples/demo05_compressor.rs"
[[example]]
name = "demo06_mcp"
path = "examples/demo06_mcp.rs"
[[example]]
name = "demo07_skills"
path = "examples/demo07_skills.rs"
[[example]]
name = "demo08_external_skills"
path = "examples/demo08_external_skills.rs"
[[example]]
name = "demo09_file_shell"
path = "examples/demo09_file_shell.rs"
[[example]]
name = "demo10_streaming"
path = "examples/demo10_streaming.rs"
[[example]]
name = "demo11_callbacks"
path = "examples/demo11_callbacks.rs"
[[example]]
name = "demo12_resilience"
path = "examples/demo12_resilience.rs"
required-features = ["testing"]
[[example]]
name = "demo13_tool_execution"
path = "examples/demo13_tool_execution.rs"
[[example]]
name = "demo14_memory_isolation"
path = "examples/demo14_memory_isolation.rs"
[[example]]
name = "demo15_structured_output"
path = "examples/demo15_structured_output.rs"
[[example]]
name = "demo16_testing"
path = "examples/demo16_testing.rs"
required-features = ["testing"]
[[example]]
name = "demo17_chat"
path = "examples/demo17_chat.rs"
[[example]]
name = "demo18_semantic_memory"
path = "examples/demo18_semantic_memory.rs"
[[example]]
name = "demo19_guard"
path = "examples/demo19_guard.rs"
[[example]]
name = "demo20_audit"
path = "examples/demo20_audit.rs"
[[example]]
name = "demo21_handoff"
path = "examples/demo21_handoff.rs"
[[example]]
name = "demo22_plan_execute"
path = "examples/demo22_plan_execute.rs"
[[example]]
name = "demo23_a2a"
path = "examples/demo23_a2a.rs"
[[example]]
name = "demo24_topology"
path = "examples/demo24_topology.rs"
[[example]]
name = "demo25_macros"
path = "examples/demo25_macros.rs"
[[example]]
name = "demo26_provider_factory"
path = "examples/demo26_provider_factory.rs"
[[example]]
name = "demo27_sqlite_memory"
path = "examples/demo27_sqlite_memory.rs"
required-features = ["sqlite"]
[[example]]
name = "demo28_workflow"
path = "examples/demo28_workflow.rs"
[[example]]
name = "demo29_sandbox"
path = "examples/demo29_sandbox.rs"
[[example]]
name = "demo30_mcp_server"
path = "examples/demo30_mcp_server.rs"
[[example]]
name = "demo31_memory_tools"
path = "examples/demo31_memory_tools.rs"
[[example]]
name = "demo32_token_budget"
path = "examples/demo32_token_budget.rs"
[[example]]
name = "demo33_retry_policy"
path = "examples/demo33_retry_policy.rs"
[[example]]
name = "demo34_workflow_stream"
path = "examples/demo34_workflow_stream.rs"
[[example]]
name = "demo35_dynamic_tools"
path = "examples/demo35_dynamic_tools.rs"
[[example]]
name = "demo36_multimodal"
path = "examples/demo36_multimodal.rs"
[[example]]
name = "demo37_declarative_workflow"
path = "examples/demo37_declarative_workflow.rs"
[[example]]
name = "demo38_im_channels"
path = "examples/demo38_im_channels.rs"
required-features = ["channels"]
[[example]]
name = "demo39_workflow"
path = "examples/demo39_workflow.rs"
required-features = ["testing"]
[[example]]
name = "demo40_snapshot"
path = "examples/demo40_snapshot.rs"
[[example]]
name = "demo41_web_tools"
path = "examples/demo41_web_tools.rs"
required-features = ["web"]
[[example]]
name = "demo42_browser_mcp"
path = "examples/demo42_playwright_mcp.rs"
required-features = ["mcp"]
[[example]]
name = "demo43_data_tools"
path = "examples/demo43_data_tools.rs"
required-features = ["testing"]
[dependencies.async-stream]
version = "0.3"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.7"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.calamine]
version = "0.26"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.docx-rs]
version = "0.4"
optional = true
[dependencies.dotenvy]
version = "0.15"
[dependencies.echo_core]
version = "0.1.4"
features = ["reqwest"]
[dependencies.echo_execution]
version = "0.1.4"
[dependencies.echo_integration]
version = "0.1.4"
[dependencies.echo_macros]
version = "0.1.4"
[dependencies.echo_orchestration]
version = "0.1.4"
[dependencies.echo_state]
version = "0.1.4"
[dependencies.echo_tools]
version = "0.1.4"
[dependencies.encoding_rs]
version = "0.8"
optional = true
[dependencies.fastrand]
version = "2"
[dependencies.futures]
version = "0.3"
[dependencies.html2text]
version = "0.14"
optional = true
[dependencies.jsonwebtoken]
version = "9"
optional = true
[dependencies.lopdf]
version = "0.34"
optional = true
[dependencies.opentelemetry]
version = "0.27"
features = [
"trace",
"metrics",
]
optional = true
[dependencies.opentelemetry-otlp]
version = "0.27"
features = [
"tonic",
"metrics",
]
optional = true
[dependencies.opentelemetry_sdk]
version = "0.27"
features = [
"rt-tokio",
"metrics",
]
optional = true
[dependencies.pdf-extract]
version = "0.7"
optional = true
[dependencies.polars]
version = "0.53"
features = [
"lazy",
"csv",
"json",
"parquet",
"dtype-full",
"strings",
"is_in",
"regex",
]
optional = true
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.12.23"
features = [
"json",
"stream",
]
[dependencies.rusqlite]
version = "0.31"
features = ["bundled"]
optional = true
[dependencies.schemars]
version = "0.8"
[dependencies.scraper]
version = "0.22"
optional = true
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.143"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.shlex]
version = "1"
[dependencies.similar]
version = "2"
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio",
"sqlite",
"mysql",
"postgres",
"any",
]
optional = true
[dependencies.tokio]
version = "1.47.1"
features = ["full"]
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
[dependencies.tracing]
version = "0.1.44"
[dependencies.tracing-opentelemetry]
version = "0.28"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dependencies.url]
version = "2"
optional = true
[dependencies.uuid]
version = "1"
features = ["v4"]
[dev-dependencies.proptest]
version = "1"