///|
/// The `agent` generator — the moonbitstack suite's extension past goctl. Where
/// `generate` scaffolds a moonapi web tier and `generate_grpc` a moonrpc service,
/// `generate_agent` turns each `.api` route into a moonkoog `Tool` (its descriptor
/// advertises the operation, its `execute_raw` a stub) and assembles them into a
/// `build_agent` that wires the tools into an `AIAgent` named after the service.
/// The output compiles against `moonbitstack/moonkoog`; fill in each `execute_raw`.
///
/// moon run src/examples/10-agent
#coverage.skip
fn main raise {
let source =
#|service support {
#| get /tickets/:id get_ticket "fetch a ticket"
#| post /tickets open_ticket "open a ticket"
#| post /tickets/:id/close close_ticket "close a ticket"
#|}
let spec = @moonctl.parse(source)
println(
"service \{spec.service}: \{spec.routes.length()} routes -> agent tools\n",
)
println("==== generate_agent(spec) -> moonkoog agent scaffold ====\n")
println(@moonctl.generate_agent(spec))
}