local F = require("flow_dsl")
local B = require("bp_dsl")
local flow = B.pipeline({
B.stage "research" { agent = "researcher" },
B.stage "review" {
agent = "reviewer",
halt_on = { "BLOCKED" },
},
halted_at = "$.halted_at",
done = "$.pipeline_complete",
})
return {
id = "sample-bundled-refs",
flow = flow,
agents = {
{
["$agent_md"] = "agents/researcher.md",
spec = { operator_ref = "main-ai" },
},
{
["$agent_md"] = "agents/reviewer.md",
spec = { operator_ref = "main-ai" },
verdict = { channel = "part", values = { "PASS", "BLOCKED" } },
},
},
operators = {
{ name = "main-ai" },
},
strategy = { strict_refs = true, strict_kind = true },
metadata = {
description = "Two-stage research-then-review pipeline whose agents are pulled from the bundled `samples/agents/*.md` files via `$agent_md` refs. Seed with init_ctx={\"d\":{\"research\":\"<your topic>\"}}. Both agents point at the \"main-ai\" logical role; join with mse_operator_join(roles=[\"main-ai\"]) before dispatch.",
},
}