Add BrokerPort: loopd asks brokerd for every tool call

Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
This commit is contained in:
2026-09-20 19:40:35 -07:00
parent 1ceaa36b9b
commit 469be2c0a1
13 changed files with 1142 additions and 15 deletions
+46
View File
@@ -224,3 +224,49 @@ fn unknown_keys_are_errors_in_the_m2b_tables_too() {
"a partial table keeps the other defaults"
);
}
#[test]
fn the_broker_table_is_optional_and_its_socket_has_no_default() {
let c = Config::load(&fixture("minimal.toml")).unwrap();
assert_eq!(
c.broker.socket, None,
"no socket means no broker, never a guessed path"
);
assert_eq!(c.broker.timeout_ms, 120_000);
}
#[test]
fn the_broker_table_can_be_set_and_rejects_unknown_keys() {
let base = std::fs::read_to_string(fixture("m2b.toml")).unwrap();
let text = format!(
"{base}\n[broker]\nsocket = \"/run/boxmaker/loop-broker/broker.sock\"\ntimeout_ms = 5000\n"
);
let c = Config::parse(&text).unwrap();
assert_eq!(
c.broker.socket,
Some(PathBuf::from("/run/boxmaker/loop-broker/broker.sock"))
);
assert_eq!(c.broker.timeout_ms, 5000);
let only_timeout = format!("{base}\n[broker]\ntimeout_ms = 5000\n");
let c = Config::parse(&only_timeout).unwrap();
assert_eq!((c.broker.socket, c.broker.timeout_ms), (None, 5000));
let only_socket = format!("{base}\n[broker]\nsocket = \"/b.sock\"\n");
let c = Config::parse(&only_socket).unwrap();
assert_eq!(
c.broker.timeout_ms, 120_000,
"a partial table keeps the default"
);
for bad in [
"zz_unknown = 1",
"timeout = 5000",
"timeout_ms = -1",
"timeout_ms = \"5s\"",
"socket = 7",
] {
let text = format!("{base}\n[broker]\n{bad}\n");
assert!(Config::parse(&text).is_err(), "[broker] accepted `{bad}`");
}
}