* feat: add ZeroClaw firmware for ESP32 and Nucleo * Introduced new firmware for ZeroClaw on ESP32 and Nucleo-F401RE, enabling JSON-over-serial communication for GPIO control. * Added `zeroclaw-esp32` with support for commands like `gpio_read` and `gpio_write`, along with capabilities reporting. * Implemented `zeroclaw-nucleo` firmware with similar functionality for STM32, ensuring compatibility with existing ZeroClaw protocols. * Updated `.gitignore` to include new firmware targets and added necessary dependencies in `Cargo.toml` for both platforms. * Created README files for both firmware projects detailing setup, build, and usage instructions. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * feat: enhance hardware peripheral support and documentation - Added `Peripheral` trait implementation in `src/peripherals/` to manage hardware boards (STM32, RPi GPIO). - Updated `AGENTS.md` to include new extension points for peripherals and their configuration. - Introduced comprehensive documentation for adding boards and tools, including a quick start guide and supported boards. - Enhanced `Cargo.toml` to include optional dependencies for PDF extraction and peripheral support. - Created new datasheets for Arduino Uno, ESP32, and Nucleo-F401RE, detailing pin aliases and GPIO usage. - Implemented new tools for hardware memory reading and board information retrieval in the agent loop. This update significantly improves the integration and usability of hardware peripherals within the ZeroClaw framework. * feat: add ZeroClaw firmware for ESP32 and Nucleo * Introduced new firmware for ZeroClaw on ESP32 and Nucleo-F401RE, enabling JSON-over-serial communication for GPIO control. * Added `zeroclaw-esp32` with support for commands like `gpio_read` and `gpio_write`, along with capabilities reporting. * Implemented `zeroclaw-nucleo` firmware with similar functionality for STM32, ensuring compatibility with existing ZeroClaw protocols. * Updated `.gitignore` to include new firmware targets and added necessary dependencies in `Cargo.toml` for both platforms. * Created README files for both firmware projects detailing setup, build, and usage instructions. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * feat: enhance hardware peripheral support and documentation - Added `Peripheral` trait implementation in `src/peripherals/` to manage hardware boards (STM32, RPi GPIO). - Updated `AGENTS.md` to include new extension points for peripherals and their configuration. - Introduced comprehensive documentation for adding boards and tools, including a quick start guide and supported boards. - Enhanced `Cargo.toml` to include optional dependencies for PDF extraction and peripheral support. - Created new datasheets for Arduino Uno, ESP32, and Nucleo-F401RE, detailing pin aliases and GPIO usage. - Implemented new tools for hardware memory reading and board information retrieval in the agent loop. This update significantly improves the integration and usability of hardware peripherals within the ZeroClaw framework. * feat: Introduce hardware auto-discovery and expanded configuration options for agents, hardware, and security. * chore: update dependencies and improve probe-rs integration - Updated `Cargo.lock` to remove specific version constraints for several dependencies, including `zerocopy`, `syn`, and `strsim`, allowing for more flexibility in version resolution. - Upgraded `bincode` and `bitfield` to their latest versions, enhancing serialization and memory management capabilities. - Updated `Cargo.toml` to reflect the new version of `probe-rs` from `0.24` to `0.30`, improving hardware probing functionality. - Refactored code in `src/hardware` and `src/tools` to utilize the new `SessionConfig` for session management in `probe-rs`, ensuring better compatibility and performance. - Cleaned up documentation in `docs/datasheets/nucleo-f401re.md` by removing unnecessary lines. * fix: apply cargo fmt * docs: add hardware architecture diagram. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
142 lines
4.8 KiB
TOML
142 lines
4.8 KiB
TOML
[package]
|
|
name = "zeroclaw"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
authors = ["theonlyhennygod"]
|
|
license = "MIT"
|
|
description = "Zero overhead. Zero compromise. 100% Rust. The fastest, smallest AI assistant."
|
|
repository = "https://github.com/theonlyhennygod/zeroclaw"
|
|
readme = "README.md"
|
|
keywords = ["ai", "agent", "cli", "assistant", "chatbot"]
|
|
categories = ["command-line-utilities", "api-bindings"]
|
|
|
|
[dependencies]
|
|
# CLI - minimal and fast
|
|
clap = { version = "4.5", features = ["derive"] }
|
|
|
|
# Async runtime - feature-optimized for size
|
|
tokio = { version = "1.42", default-features = false, features = ["rt-multi-thread", "macros", "time", "net", "io-util", "sync", "process", "io-std", "fs", "signal"] }
|
|
|
|
# HTTP client - minimal features
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "blocking", "multipart", "stream"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", default-features = false, features = ["derive"] }
|
|
serde_json = { version = "1.0", default-features = false, features = ["std"] }
|
|
|
|
# Config
|
|
directories = "5.0"
|
|
toml = "1.0"
|
|
shellexpand = "3.1"
|
|
|
|
# Logging - minimal
|
|
tracing = { version = "0.1", default-features = false }
|
|
tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt", "ansi"] }
|
|
|
|
# Observability - Prometheus metrics
|
|
prometheus = { version = "0.14", default-features = false }
|
|
|
|
# Base64 encoding (screenshots, image data)
|
|
base64 = "0.22"
|
|
|
|
# Optional Rust-native browser automation backend
|
|
fantoccini = { version = "0.22.0", optional = true, default-features = false, features = ["rustls-tls"] }
|
|
|
|
# Error handling
|
|
anyhow = "1.0"
|
|
thiserror = "2.0"
|
|
|
|
# UUID generation
|
|
uuid = { version = "1.11", default-features = false, features = ["v4", "std"] }
|
|
|
|
# Authenticated encryption (AEAD) for secret store
|
|
chacha20poly1305 = "0.10"
|
|
|
|
# HMAC for webhook signature verification
|
|
hmac = "0.12"
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
|
|
# Landlock (Linux sandbox) - optional dependency
|
|
landlock = { version = "0.4", optional = true }
|
|
|
|
# Async traits
|
|
async-trait = "0.1"
|
|
|
|
# Memory / persistence
|
|
rusqlite = { version = "0.38", features = ["bundled"] }
|
|
chrono = { version = "0.4", default-features = false, features = ["clock", "std", "serde"] }
|
|
cron = "0.12"
|
|
|
|
# Interactive CLI prompts
|
|
dialoguer = { version = "0.12", features = ["fuzzy-select"] }
|
|
console = "0.15"
|
|
|
|
# Hardware discovery (device path globbing)
|
|
glob = "0.3"
|
|
|
|
# Discord WebSocket gateway
|
|
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
|
futures-util = { version = "0.3", default-features = false, features = ["sink"] }
|
|
hostname = "0.4.2"
|
|
lettre = { version = "0.11.19", default-features = false, features = ["builder", "smtp-transport", "rustls-tls"] }
|
|
mail-parser = "0.11.2"
|
|
rustls = "0.23"
|
|
rustls-pki-types = "1.14.0"
|
|
tokio-rustls = "0.26.4"
|
|
webpki-roots = "1.0.6"
|
|
|
|
# HTTP server (gateway) — replaces raw TCP for proper HTTP/1.1 compliance
|
|
axum = { version = "0.8", default-features = false, features = ["http1", "json", "tokio", "query"] }
|
|
tower = { version = "0.5", default-features = false }
|
|
tower-http = { version = "0.6", default-features = false, features = ["limit", "timeout"] }
|
|
http-body-util = "0.1"
|
|
|
|
# OpenTelemetry — OTLP trace + metrics export
|
|
opentelemetry = { version = "0.31", default-features = false, features = ["trace", "metrics"] }
|
|
opentelemetry_sdk = { version = "0.31", default-features = false, features = ["trace", "metrics"] }
|
|
opentelemetry-otlp = { version = "0.31", default-features = false, features = ["trace", "metrics", "http-proto", "reqwest-client", "reqwest-rustls-webpki-roots"] }
|
|
|
|
# USB device enumeration (hardware discovery)
|
|
nusb = { version = "0.2", default-features = false, optional = true }
|
|
|
|
# Serial port for peripheral communication (STM32, etc.)
|
|
tokio-serial = { version = "5", default-features = false, optional = true }
|
|
|
|
# probe-rs for STM32/Nucleo memory read (Phase B)
|
|
probe-rs = { version = "0.30", optional = true }
|
|
|
|
# PDF extraction for datasheet RAG (optional, enable with --features rag-pdf)
|
|
pdf-extract = { version = "0.10", optional = true }
|
|
|
|
# Raspberry Pi GPIO (Linux/RPi only) — target-specific to avoid compile failure on macOS
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
rppal = { version = "0.14", optional = true }
|
|
|
|
[features]
|
|
default = ["hardware"]
|
|
hardware = ["nusb", "tokio-serial"]
|
|
peripheral-rpi = ["rppal"]
|
|
# probe = probe-rs for Nucleo memory read (adds ~50 deps; optional)
|
|
probe = ["dep:probe-rs"]
|
|
# rag-pdf = PDF ingestion for datasheet RAG
|
|
rag-pdf = ["dep:pdf-extract"]
|
|
|
|
[profile.release]
|
|
opt-level = "z" # Optimize for size
|
|
lto = "thin" # Lower memory use during release builds
|
|
codegen-units = 8 # Faster, lower-RAM codegen for small devices
|
|
strip = true # Remove debug symbols
|
|
panic = "abort" # Reduce binary size
|
|
|
|
[profile.dist]
|
|
inherits = "release"
|
|
opt-level = "z"
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
strip = true
|
|
panic = "abort"
|
|
|
|
[dev-dependencies]
|
|
tokio-test = "0.4"
|
|
tempfile = "3.14"
|