[package] name = "joule-ui-interaction" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true authors.workspace = true description = "joule-ui interactions — every fired action sealed as a metered, hash-chained transaction. The metering (Sandbox PowerMeter) and capability (JCP grant) are recognized edges; the receipt, the chain, and the lifecycle are joule-ui's." [dependencies] serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } blake3 = { workspace = true } ed25519-dalek = { workspace = true } [dev-dependencies] joule-ui-core = { path = "../joule-ui-core" } # The Sandbox standard's meter — the reference Meter edge (SPEC §5): a hardware # reading where the host exposes a live energy counter (RAPL, NVML, Apple # IOReport while its CPU rail is live, or for the examples' in-process work this # process's own CPU energy counter), its labelled estimate otherwise. A # dev-dependency keeps the core decoupled while proving the edge composes. sandbox-meter = { path = "../../../../sandbox/sandbox-rs/crates/sandbox-meter" } # Device classes for the scripted spans `tests/span_meter.rs` replays through # the examples' meter adapter. sandbox-schema = { path = "../../../../sandbox/sandbox-rs/crates/sandbox-schema" } # The JCP standard's runtime + grant — the reference Authorizer edge (SPEC §6). # Dev-deps: the core stays decoupled; the example proves a real signed, # joule-budgeted grant gates a joule-ui interaction. jcp-runtime = { path = "../../../../jcp/jcp-rs/crates/jcp-runtime" } jcp-grant = { path = "../../../../jcp/jcp-rs/crates/jcp-grant" } jcp-schema = { path = "../../../../jcp/jcp-rs/crates/jcp-schema" }