bxcore, brokerd, loopd: an invalid-arguments denial says why

Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>
This commit is contained in:
2026-09-27 19:08:42 -07:00
co-authored by ornith-1.5-35b-a3b
parent 89a50bc3c6
commit de60c9e13a
21 changed files with 520 additions and 33 deletions
+12 -3
View File
@@ -251,7 +251,10 @@ pub fn handle(mut stream: UnixStream, broker: &Broker) {
let now = Timestamp::now();
let grants = broker.grants();
let answer = match broker.ledger().decide(request, &grants, now) {
Decided::Denied(reason) => Some(ToolResponse::Denied { reason }), // 3a. denied
Decided::Denied(denial) => Some(ToolResponse::Denied {
reason: denial.reason,
detail: denial.detail,
}), // 3a. denied
Decided::Allowed { decision, seq } => Some(run(broker, decision, seq)), // 3b. allowed
Decided::Ask { ask, seq, state } => {
pending(&mut stream, broker, id, ask, seq, state, now) // 3c. ask
@@ -334,7 +337,10 @@ fn pending(
// 5. Answer from the verdict.
match outcome {
Ok(verdict) => match verdict {
Verdict::Denied(reason) => Some(ToolResponse::Denied { reason }),
Verdict::Denied(reason) => Some(ToolResponse::Denied {
reason,
detail: None,
}),
Verdict::Run(decision) => {
let decision = *decision;
if !alive(stream) {
@@ -350,6 +356,9 @@ fn pending(
Some(run(broker, decision, seq))
}
},
Err(reason) => Some(ToolResponse::Denied { reason }),
Err(reason) => Some(ToolResponse::Denied {
reason,
detail: None,
}),
}
}