bro plan query
Cross-provider GraphQL fan-out β one plan, many connectors, one merged JSON answer.
A kind = "query" plan is a TOML list of independent
GraphQL steps. bro plan run fans them out over connectors under a
concurrency cap and prints one merged JSON document keyed by step id β
declaration order, never completion order.
| Command | What it does |
|---|---|
bro plan query <plan.toml> | Validate + run a query plan in one step β raw JSON on stdout, exit 1 when any step failed |
bro plan run <plan.toml> | The same plan through the generic runner (kind routes it) |
bro plan validate <file> | Check the plan without executing it |
The contract
providernames a connector (the data plane:github,gitlab,atlassian, β¦) β never aprovidersentry; that registry is the model plane. Absent βconnectors.queriespin β auto-detect.- Read-only.
mutation/subscriptiondocuments are rejected at validate time. - No secrets in plans.
envis a literal overlay β a token value written there is committed as text. Auth comes from the spawned CLI's own login (gh auth,glab auth,atlassian auth) or the operator's inherited environment; execution-shaping vars are rejected outright. Operators pin endpoints via thequery.envconfig section instead. varsare scalars (string/number/bool) forgithub/gitlabβ serialized as-f k=vCLI fields.atlassiantakes the table as the JSONvariablesbody verbatim.- A failed step records
{ provider, error }(transport) or{ provider, data?, errors? }(GraphQL response) and never aborts siblings. Any failure β exit 1; results still print. - Output is raw β no item normalization.