[package]
edition = "2021"
rust-version = "1.80"
name = "nexo-core"
version = "0.2.1"
authors = ["Cristian Garcia <informacion@cristiangarcia.co>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Agent runtime: event bus, sessions, plugin trait, heartbeat, A2A delegation."
homepage = "https://lordmacu.github.io/nexo-rs/"
documentation = "https://lordmacu.github.io/nexo-rs/"
readme = "README.md"
keywords = [
"agent",
"llm",
"ai",
"nats",
"framework",
]
categories = [
"asynchronous",
"api-bindings",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lordmacu/nexo-rs"
[features]
config-self-edit = ["dep:globset"]
default = ["schema-validation"]
repl-tool = []
schema-validation = ["dep:jsonschema"]
[lib]
name = "nexo_core"
path = "src/lib.rs"
[[test]]
name = "agent_test"
path = "tests/agent_test.rs"
[[test]]
name = "browser_plugin_crates_io_e2e"
path = "tests/browser_plugin_crates_io_e2e.rs"
[[test]]
name = "channel_adapter_integration"
path = "tests/channel_adapter_integration.rs"
[[test]]
name = "delegation_e2e_test"
path = "tests/delegation_e2e_test.rs"
[[test]]
name = "dispatch_handlers_e2e_test"
path = "tests/dispatch_handlers_e2e_test.rs"
[[test]]
name = "effective_policy_for_tool"
path = "tests/effective_policy_for_tool.rs"
[[test]]
name = "email_plugin_crates_io_e2e"
path = "tests/email_plugin_crates_io_e2e.rs"
[[test]]
name = "exposable_catalog_test"
path = "tests/exposable_catalog_test.rs"
[[test]]
name = "expose_tools_bridge_test"
path = "tests/expose_tools_bridge_test.rs"
[[test]]
name = "expose_tools_typo_regression_test"
path = "tests/expose_tools_typo_regression_test.rs"
[[test]]
name = "extension_hook_test"
path = "tests/extension_hook_test.rs"
[[test]]
name = "extension_tool_test"
path = "tests/extension_tool_test.rs"
[[test]]
name = "hot_reload_test"
path = "tests/hot_reload_test.rs"
[[test]]
name = "hot_spawn_test"
path = "tests/hot_spawn_test.rs"
[[test]]
name = "link_understanding_fetch_test"
path = "tests/link_understanding_fetch_test.rs"
[[test]]
name = "llm_behavior_test"
path = "tests/llm_behavior_test.rs"
[[test]]
name = "mcp_catalog_test"
path = "tests/mcp_catalog_test.rs"
[[test]]
name = "mcp_resource_tool_test"
path = "tests/mcp_resource_tool_test.rs"
[[test]]
name = "mcp_server_e2e_test"
path = "tests/mcp_server_e2e_test.rs"
[[test]]
name = "mcp_session_test"
path = "tests/mcp_session_test.rs"
[[test]]
name = "memory_tool_test"
path = "tests/memory_tool_test.rs"
[[test]]
name = "nexo_plugin_registry_integration"
path = "tests/nexo_plugin_registry_integration.rs"
[[test]]
name = "pairing_challenge_delivery"
path = "tests/pairing_challenge_delivery.rs"
[[test]]
name = "pairing_gate_intake_test"
path = "tests/pairing_gate_intake_test.rs"
[[test]]
name = "per_binding_override_test"
path = "tests/per_binding_override_test.rs"
[[test]]
name = "plugin_contributes_integration"
path = "tests/plugin_contributes_integration.rs"
[[test]]
name = "plugin_factory_registry_integration"
path = "tests/plugin_factory_registry_integration.rs"
[[test]]
name = "plugin_skills_integration"
path = "tests/plugin_skills_integration.rs"
[[test]]
name = "plugin_test"
path = "tests/plugin_test.rs"
[[test]]
name = "remote_channel_e2e"
path = "tests/remote_channel_e2e.rs"
[[test]]
name = "remote_hook_e2e"
path = "tests/remote_hook_e2e.rs"
[[test]]
name = "remote_llm_e2e"
path = "tests/remote_llm_e2e.rs"
[[test]]
name = "remote_tool_e2e"
path = "tests/remote_tool_e2e.rs"
[[test]]
name = "remote_vector_backend_e2e"
path = "tests/remote_vector_backend_e2e.rs"
[[test]]
name = "runtime_pause_hook_test"
path = "tests/runtime_pause_hook_test.rs"
[[test]]
name = "runtime_test"
path = "tests/runtime_test.rs"
[[test]]
name = "sandbox_subprocess_e2e"
path = "tests/sandbox_subprocess_e2e.rs"
[[test]]
name = "self_report_test"
path = "tests/self_report_test.rs"
[[test]]
name = "session_test"
path = "tests/session_test.rs"
[[test]]
name = "subprocess_plugin_e2e"
path = "tests/subprocess_plugin_e2e.rs"
[[test]]
name = "wire_plugin_registry_integration"
path = "tests/wire_plugin_registry_integration.rs"
[dependencies.anyhow]
version = "1"
[dependencies.arc-swap]
version = "1"
[dependencies.async-nats]
version = "0.35"
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.cron]
version = "0.12"
[dependencies.dashmap]
version = "6"
[dependencies.futures]
version = "0.3"
[dependencies.git2]
version = "0.19"
default-features = false
[dependencies.globset]
version = "0.4"
optional = true
[dependencies.hmac]
version = "0.12"
[dependencies.humantime]
version = "2"
[dependencies.jsonschema]
version = "0.20"
optional = true
default-features = false
[dependencies.lru]
version = "0.17"
[dependencies.nexo-agent-registry]
version = "0.1.7"
[dependencies.nexo-assistant]
version = "0.1.7"
[dependencies.nexo-auth]
version = "0.1.9"
[dependencies.nexo-broker]
version = "0.1.5"
[dependencies.nexo-config]
version = "0.1.10"
[dependencies.nexo-dispatch-tools]
version = "0.1.7"
[dependencies.nexo-driver-claude]
version = "0.1.7"
[dependencies.nexo-driver-loop]
version = "0.1.7"
[dependencies.nexo-driver-permission]
version = "0.1.7"
[dependencies.nexo-driver-types]
version = "0.1.7"
[dependencies.nexo-extensions]
version = "0.1.4"
[dependencies.nexo-llm]
version = "0.1.5"
[dependencies.nexo-llm-auth]
version = "0.1.1"
[dependencies.nexo-lsp]
version = "0.1.2"
[dependencies.nexo-mcp]
version = "0.1.5"
[dependencies.nexo-memory]
version = "0.1.5"
[dependencies.nexo-memory-snapshot]
version = "0.1.4"
[dependencies.nexo-pairing]
version = "0.1.8"
[dependencies.nexo-plugin-manifest]
version = "0.1.7"
[dependencies.nexo-project-tracker]
version = "0.1.7"
[dependencies.nexo-taskflow]
version = "0.1.2"
[dependencies.nexo-team-store]
version = "0.1.2"
[dependencies.nexo-tool-meta]
version = "0.1.16"
[dependencies.notify]
version = "6"
[dependencies.notify-debouncer-full]
version = "0.3"
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"charset",
"rustls-tls",
"stream",
"cookies",
"http2",
]
default-features = false
[dependencies.semver]
version = "1"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_urlencoded]
version = "0.7"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.8"
features = [
"sqlite",
"runtime-tokio",
]
[dependencies.thiserror]
version = "1"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
[dependencies.toml]
version = "0.8"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = "1"
features = [
"v4",
"v5",
"serde",
"macro-diagnostics",
]
[dependencies.walkdir]
version = "2"
[dependencies.which]
version = "6"
[dev-dependencies.futures]
version = "0.3"
[dev-dependencies.nexo-driver-claude]
version = "0.1.7"
[dev-dependencies.nexo-driver-permission]
version = "0.1.7"
[dev-dependencies.nexo-llm]
version = "0.1.5"
features = ["stub"]
[dev-dependencies.serial_test]
version = "3"
[dev-dependencies.tempfile]
version = "3"
[lints.clippy]
await_holding_lock = "allow"
blocks_in_conditions = "allow"
bool_assert_comparison = "allow"
cmp_owned = "allow"
collapsible_if = "allow"
derivable_impls = "allow"
doc_lazy_continuation = "allow"
doc_overindented_list_items = "allow"
field_reassign_with_default = "allow"
if_same_then_else = "allow"
incompatible_msrv = "allow"
io_other_error = "allow"
large_enum_variant = "allow"
len_without_is_empty = "allow"
let_and_return = "allow"
manual_ignore_case_cmp = "allow"
manual_strip = "allow"
match_like_matches_macro = "allow"
needless_as_bytes = "allow"
needless_borrows_for_generic_args = "allow"
needless_lifetimes = "allow"
print_literal = "allow"
question_mark = "allow"
redundant_closure = "allow"
result_large_err = "allow"
should_implement_trait = "allow"
single_char_pattern = "allow"
too_many_arguments = "allow"
trim_split_whitespace = "allow"
type_complexity = "allow"
unnecessary_literal_unwrap = "allow"
unnecessary_map_or = "allow"
unnecessary_to_owned = "allow"
unwrap_or_default = "allow"
vec_init_then_push = "allow"