///|
fn main {
let catalog = match
@uri_template.compile_catalog([
("resource", "mcp://workspace/{tenant}/files/{file}"),
("search", "/tenants/{tenant}/search{?q}"),
("health", "/health"),
]) {
Ok(value) => value
Err(_) => abort("invalid catalog")
}
let original = match
catalog.start_session(
[
("tenant", Scalar("demo")),
("file", Scalar("notes.md")),
("q", Scalar("old")),
],
max_total_output=256,
) {
Ok(value) => value
Err(_) => abort("invalid initial bindings")
}
let changed = match original.update([SetBinding("q", Scalar("MoonBit"))]) {
Ok(value) => value
Err(_) => abort("valid patch rejected")
}
if changed.recomputed() != 1 || changed.changes().length() != 1 {
abort("unrelated links recomputed")
}
if changed.changes()[0].after != "/tenants/demo/search?q=MoonBit" {
abort("wrong updated link")
}
if original.links()[1].1 != "/tenants/demo/search?q=old" {
abort("original snapshot mutated")
}
if !(changed.session().update([SetBinding("q", Scalar("x".repeat(300)))])
is Err(TotalOutputTooLong)) {
abort("aggregate budget was not enforced")
}
println(changed.changes()[0].after)
println(
"Incremental links: one of three endpoints recomputed; old snapshot and budget preserved",
)
}