PicoBot/Cargo.toml
xiaoxixi d9ad58b84b feat(scheduler): unify scheduled task execution and delivery
Replace the dual task/monitor model, NO_REPLY string protocol, and Agent
self-delivery with a single Scheduled Run path: claim-time JobRun snapshots,
isolated Root/named Agent execution, exactly-once complete_scheduled_run
termination, and Scheduler-owned policy delivery through a persistent outbox.

- SQLite v11: drop job_kind/model/delete_after_run, add job_runs with
  status/outcome joint constraints and delivery lease columns; one-shot
  BEGIN IMMEDIATE migration with atomic rollback.
- Non-blocking JoinSet event loop with bounded run/delivery concurrency;
  terminal commit before any channel I/O; recover unfinished runs as unknown.
- ExecutionOrigin::Scheduled propagates to descendants, completion sink is
  top-level only, background delegation downgrades to foreground.
- Typed delivery receipts, fixed target_session_id, idempotent
  scheduled:<job_run_id> history insert.
- New cron_runs read-only tool; cron_add/update drop kind/model; WebUI and
  Health consume the same JobRun projection.
- Bump version to 1.22.0.
2026-08-21 14:59:02 +08:00

65 lines
1.7 KiB
TOML

[package]
name = "picobot"
version = "1.22.0"
edition = "2024"
[dependencies]
reqwest = { version = "0.13.4", default-features = false, features = ["json", "rustls", "multipart"] }
serde = { version = "1.0", features = ["derive"] }
serde_path_to_error = "0.1"
regex = "1.13"
serde_json = "1.0"
serde_yaml = "0.9"
async-trait = "0.1"
thiserror = "2.0.19"
tokio = { version = "1.53", features = ["full"] }
tokio-util = { version = "0.7", features = ["rt", "io"] }
dashmap = "6.2"
uuid = { version = "1.24", features = ["v4"] }
axum = { version = "0.8", features = ["ws", "multipart"] }
tokio-tungstenite = { version = "0.30.0", features = ["rustls-tls-webpki-roots", "rustls"] }
futures-util = "0.3"
clap = { version = "4", features = ["derive"] }
dirs = "6.0.0"
prost = "0.14"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "local-time"] }
tracing-appender = "0.2"
time = { version = "0.3", features = ["formatting", "local-offset"] }
anyhow = "1.0"
mime_guess = "2.0"
base64 = "0.23"
sha2 = "0.11"
tempfile = "3"
cron = "0.17"
chrono-tz = "0.10"
ratatui = "0.30"
crossterm = { version = "0.29", features = ["event-stream"] }
termimad = "0.35"
textwrap = "0.16"
unicode-width = "0.2"
chrono = "0.4"
sqlx = { version = "0.9", features = ["sqlite", "macros", "chrono", "runtime-tokio"] }
jieba-rs = "0.10"
which = "8"
rmcp = { version = "2.2", default-features = false, features = [
"client",
"transport-child-process",
"transport-streamable-http-client-reqwest",
"which-command",
] }
http = "1"
encoding_rs = "0.8"
zstd = "0.13"
tar = "0.4"
portable-pty = "0.9"
[dev-dependencies]
dotenv = "0.15"
tower = "0.5"
tokio = { version = "1.53", features = ["test-util"] }
[build-dependencies]
zstd = "0.13"
tar = "0.4"