loop-agent-sdk 0.1.0

Trustless agent SDK for Loop Protocol — intent-based execution on Solana.
Documentation
[package]
name = "loop-agent-sdk"
version = "0.1.0"
edition = "2021"
rust-version = "1.81"
authors = ["OAR Technologies Inc <csouthern@looplocal.io>"]
description = "Trustless agent SDK for Loop Protocol — intent-based execution on Solana."
readme = "README.md"
license = "MIT"
repository = "https://github.com/OAR-Technologies-Inc/loop-protocol"
homepage = "https://github.com/OAR-Technologies-Inc/loop-protocol/tree/main/agent-sdk"
documentation = "https://docs.rs/loop-agent-sdk"
keywords = ["solana", "agents", "mcp", "defi", "rewards"]
categories = ["cryptography::cryptocurrencies", "web-programming"]
exclude = ["examples/", "scripts/", "mcp/", "tests/fixtures/"]

[features]
default = ["full"]
full = ["action", "perception", "state"]
action = []
perception = []
state = []
# Lambda runtime integration
lambda = ["aws-lambda-runtime", "tokio"]
# DynamoDB state backend
dynamodb = ["aws-sdk-dynamodb", "aws-config", "tokio"]
# Privacy layer (HMAC fingerprinting)
privacy = ["hmac", "zeroize", "rand", "aws-sdk-secretsmanager", "aws-config", "tokio"]
# Webhook handler (Fidel/Square/Stripe)
webhook = ["privacy", "hmac"]
# Push notifications via Supabase
notifications = ["dynamodb", "reqwest"]
# Supabase integration for reputation attestations
supabase = ["reqwest", "tokio"]
# Full agent stack
agent = ["lambda", "dynamodb", "privacy", "webhook", "notifications", "supabase"]
# CLI tools
cli = ["clap"]

[dependencies]
# Solana
solana-sdk = "2.0"
solana-client = "2.0"
spl-token = "6.0"
spl-associated-token-account = "4.0"
borsh = { version = "1.5", features = ["derive"] }

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

# Time
chrono = { version = "0.4", features = ["serde"] }

# Async (optional, for Lambda)
tokio = { version = "1.0", features = ["full"], optional = true }

# AWS Lambda (optional)
aws-lambda-runtime = { version = "0.13", package = "lambda_runtime", optional = true }

# AWS DynamoDB (optional)
aws-sdk-dynamodb = { version = "1.0", optional = true }
aws-config = { version = "1.0", optional = true }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# Encoding
base64 = "0.22"
hex = "0.4"

# Core cryptography (always needed for reputation)
sha2 = "0.10"

# Cryptography (optional, for privacy layer)
hmac = { version = "0.12", optional = true }
zeroize = { version = "1.7", optional = true }
rand = { version = "0.8", optional = true }

# AWS Secrets Manager (optional, for privacy layer)
aws-sdk-secretsmanager = { version = "1.0", optional = true }

# HTTP client (optional, for notifications)
reqwest = { version = "0.12", features = ["json"], optional = true }

# CLI (optional, for loop-cli)
clap = { version = "4.5", features = ["derive", "env"], optional = true }

[dev-dependencies]
tokio-test = "0.4"
pretty_assertions = "1.4"

[lib]
name = "loop_agent_sdk"
path = "src/lib.rs"

[[bin]]
name = "loop-agent"
path = "src/bin/loop_agent.rs"
required-features = ["agent"]

[[bin]]
name = "loop-cli"
path = "src/bin/loop_cli.rs"
required-features = ["cli"]

[[example]]
name = "lambda_handler"
path = "examples/lambda_handler.rs"
required-features = ["lambda", "dynamodb"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]