deepseek-loop 0.3.4

Claude-Code-shaped agent loop over the DeepSeek API: built-in tools, permission modes, cron scheduler with /loop semantics, streaming SdkMessage events
Documentation
[package]
name = "deepseek-loop"
version = "0.3.4"
edition = "2021"
license = "MIT"
description = "Claude-Code-shaped agent loop over the DeepSeek API: built-in tools, permission modes, cron scheduler with /loop semantics, streaming SdkMessage events"
repository = "https://github.com/v9ai/deepseek-loop"
readme = "README.md"
keywords = ["deepseek", "agent", "llm", "tools", "loop"]
categories = ["api-bindings", "command-line-utilities"]

[lib]
name = "deepseek"

[features]
default = ["reqwest-client", "scheduler"]
reqwest-client = ["dep:reqwest", "dep:anyhow", "dep:tokio"]
wasm = ["dep:worker", "dep:js-sys"]
cache = ["dep:dashmap", "dep:sha2", "dep:tokio"]
# Claude-Code-shaped agent loop: streaming SdkMessage, RunOptions, permissions.
agent = ["dep:tokio", "dep:async-stream", "dep:futures", "dep:uuid"]
# Built-in tool implementations (Read/Write/Edit/Glob/Grep/Bash).
builtin-tools = ["agent", "dep:globset", "dep:walkdir", "dep:regex"]
# Cron-style scheduler with CronCreate/List/Delete + Monitor tools, /loop semantics,
# session-scoped persistence. Adds the four new built-in tools when combined with
# `builtin-tools`.
scheduler = [
    "agent",
    "builtin-tools",
    "dep:cron",
    "dep:chrono",
    "dep:dirs",
    "dep:tempfile",
]
# CLI binary `deepseek-loop`.
cli = [
    "builtin-tools",
    "scheduler",
    "reqwest-client",
    "dep:clap",
    "dep:tracing-subscriber",
    "dep:dotenvy",
]

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

[dependencies]
serde      = { workspace = true }
serde_json = { workspace = true }
thiserror  = { workspace = true }
async-trait = { workspace = true }
tracing    = { workspace = true }

# reqwest-client feature
reqwest = { workspace = true, optional = true }

# wasm feature
worker = { version = "0.7", optional = true }
js-sys = { version = "0.3", optional = true }

# cache feature
dashmap = { version = "6", optional = true }
sha2    = { version = "0.10", optional = true }
tokio   = { workspace = true, optional = true }
anyhow  = { workspace = true, optional = true }

# agent feature
async-stream = { version = "0.3", optional = true }
futures      = { workspace = true, optional = true }
uuid         = { workspace = true, optional = true }

# builtin-tools feature
globset = { version = "0.4", optional = true }
walkdir = { workspace = true, optional = true }
regex   = { workspace = true, optional = true }

# scheduler feature
cron     = { version = "0.15", optional = true }
chrono   = { version = "0.4", default-features = false, features = ["clock", "serde"], optional = true }
dirs     = { version = "6", optional = true }
tempfile = { version = "3", optional = true }

# cli feature
clap               = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, optional = true }
dotenvy            = { workspace = true, optional = true }