agent-joule/crates/joule_coded/Cargo.toml
David Charlot 7a59f0ffc5 agent-mei: rename agent_joule panel/theme/workflows to agent-mei, MEI fleet wiring and honest-energy receipts
Brings over the uncommitted agent-mei work (Mac checkout, Sep 22) plus box
follow-ups (Oct 17: agent_mei action namespace in keymap/zed.rs, MEI_BRIDGE.md,
RENAME_AGENT_MEI.md, unmetered receipts report 0 uJ). joule_core, JOULE_CODE_*
and JouleDB names unchanged. *.bak.* scratch files excluded.
2026-10-27 12:59:12 -04:00

100 lines
6.4 KiB
TOML

[package]
name = "joule_coded"
version = "0.1.0"
edition.workspace = true
publish.workspace = true
license = "GPL-3.0-or-later"
[lints]
workspace = true
# The headless agent-mei worker: it owns the same `joule_core` engine the GUI
# panel drives, answers the same control protocol over a Unix socket, and runs
# real on-device coding ops (the L3 cascade tier via JouleClaw's GGUF runtime)
# into a worktree-isolated, signed session ledger — no window, no cloud.
[lib]
path = "src/lib.rs"
[[bin]]
name = "joule-coded"
path = "src/main.rs"
[dependencies]
# joule_core's `l3` model tier is opt-in; the worker enables it via its own `l3`
# feature (default on), so a `--no-default-features` build drops it for Windows.
joule_core.workspace = true
anyhow.workspace = true
futures.workspace = true
log.workspace = true
env_logger.workspace = true
serde.workspace = true
serde_json.workspace = true
clap.workspace = true
tokio = { workspace = true, features = ["rt-multi-thread", "macros", "sync", "time"] }
ed25519-dalek = "2" # must match the open-standards crates (SigningKey crosses the boundary)
# Tier tag for recorded ops. The L3 on-device model tier and host energy
# metering come through `joule_core` (one engine, shared with the GUI editor) —
# the daemon no longer depends on jouleclaw directly.
joule-code-schema = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
# The Sandbox standard's own S5 (microVM) executor + runtime/grant/receipt types.
# The fabric routes untrusted, highest-isolation work to this — a Firecracker
# (or supervised-VMM) driver with real per-device RAPL energy metering and a
# signed JCR-1 receipt — booting our own JouleOS PVH guest, not a borrowed kernel.
sandbox-exec-microvm = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
sandbox-runtime = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
sandbox-capability = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
sandbox-meter = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
sandbox-schema = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
sandbox-attest = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
# The standard's S2 (Sandbox/WASM) executor — deterministic, fuel→joule metered,
# with a per-run replay journal. Heavy (wasmtime), so it is the optional
# `sandbox-wasm` feature (on by default; a --no-default-features worker drops it).
sandbox-exec-wasm = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c", optional = true }
# The standard's S6 (Confidential) TEE layer: SEV-SNP/TDX report parsing + policy
# + real ECDSA verification, with a configfs-tsm hardware provider and a
# software-grounded test provider — so the S6 seal path is exercisable anywhere.
sandbox-tee = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
# Federation transport: CommunicationOS's MoQT-over-QUIC reference impl. We use
# its QuicEndpoint (quinn + a self-signed/pinned cert) to carry the control
# protocol over real QUIC cross-machine — the same proven transport as the
# standard's lockstep-quic. Optional (the `quic` feature, on by default) so the
# daemon can build with no C dependencies (quinn → aws-lc/ring need cmake + a C
# toolchain) on hosts that lack them — e.g. a stock Windows box: build with
# `--no-default-features`, and the worker serves over the Unix socket / TCP.
joule-moq = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c", features = ["quic"], optional = true }
quinn = { version = "0.11", optional = true }
rustls = { version = "0.23", features = ["ring", "std"], optional = true }
# BFT consensus: signed ops (joule-code-cargo SignedOp) committed by a
# supermajority of fleet members via joule-code-collab's proven LockstepCluster
# rule. The QUIC/TCP/socket transport carries the signed proposals between nodes.
joule-code-cargo = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
joule-code-collab = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
blake3 = "1"
hex.workspace = true
# Serve the worker's on-device inference as an OpenAI-compatible endpoint
# (/v1/chat/completions + /v1/responses) whose usage.energy carries the sealed
# mesh/1 receipt — the Mesh standard's own serving stack, reused unchanged.
mesh-openai = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c", features = ["server"] }
mesh-core = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
mesh-engine = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
mesh-meter = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
mesh-router = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
mesh-schema = { git = "https://git.transaction.science/Transaction-Science/open-standards.git", rev = "6cdc92381361890c1e6bdd79ac82e23236063a2c" }
[dev-dependencies]
# Compile WAT → WASM in the S2 cell's tests.
wat = "1"
[features]
default = ["quic", "l3", "sandbox-wasm"]
# Real-QUIC federation transport (pulls quinn/rustls and their C crypto deps).
quic = ["dep:joule-moq", "dep:quinn", "dep:rustls"]
# The on-device L3 model tier (forwards to joule_core's `l3` feature).
l3 = ["joule_core/l3"]
# The S2 (Sandbox/WASM) executor tier — pulls wasmtime via sandbox-exec-wasm.
sandbox-wasm = ["dep:sandbox-exec-wasm"]