aion-server 0.31.0

Aion workflow server library: HTTP, gRPC, WebSocket, and worker endpoints. Run it with the `aion` binary from the aion-cli crate.
Documentation
//! 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