[package] name = "joulehook-hook" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true description = "JouleHook — the claude-code PreToolUse gate binding (joulehook/1 §3): a JCP capability+budget check decided outside the model, sealed, emitting Claude Code's hook decision JSON." [[bin]] name = "joulehook-hook" path = "src/main.rs" [dependencies] # The gate itself — LocalToolGate decides a call against a content-addressed, # joule-budgeted capability set and seals every allow/deny. Cross-workspace path # dep into jcp-rs (the reference impl composes the sibling standard's crate). jcp-bridge = { path = "../../../../jcp/jcp-rs/crates/jcp-bridge" } # The compressor's rule for which commands may run in a child shell (SPEC §3.5). joulehook-compress = { path = "../joulehook-compress" } serde_json = "1" hex = "0.4" [dev-dependencies] # The conformance test decodes + verifies the sealed receipt the gate writes, under # the reference gate's fixed dev steward, against the pack's receipt.json. jcp-receipt = { path = "../../../../jcp/jcp-rs/crates/jcp-receipt" } ed25519-dalek = { version = "3", features = ["alloc"] }