//! The auto-provision fixture: the smallest document that declares a launch.
//!
//! Auto-provision keys on a `worker` block's `harness` section — which queue it
//! names, which settings it carries, and whether the queue has anything an
//! agent could be dispatched. The tests around it CUT THIS DOCUMENT ABOUT: they
//! strip the harness section, they remove the `concurrency` line, and they
//! remove the one bodyless action, and each mutilation has to produce a
//! different answer from the reader. So the shape below is the fixture's whole
//! point — a harness section carrying every required setting, exactly one
//! `agent` action, and exactly one action carrying a declared body, which is
//! the action no worker may serve.
workflow demo_session
input objective: String
outcome done: type Reply, route success
type RunOutcome { exit_code: Int, stdout: String, stderr: String }
type Reply { text: String, final_message: String, stop_reason: String, session_id: String }
worker demo_agent
harness
kind norn
concurrency 4
reconnect_initial_backoff 1s
reconnect_max_backoff 30s
reconnect_max_attempts 100
env_pass "PATH", "HOME"
args "--session-id", "{workflow_id}-{activity_type}", "--resume-if-exists", "--account", "default"
cwd "{workspace_root}"
action demo_provision(run_id: String) -> RunOutcome
run "sh -c 'mkdir -p \"$1/$2\" >&2; printf %s \"$1/$2\"' -- {workspace_root} {{run_id}}"
action demo_round(prompt: String) -> Reply
agent
step session
demo_provision(run_id: workflow.id) -> provisioned
demo_round(prompt: objective) -> reply
reply |> route done