Cyclium.Actor (Cyclium v0.1.7)

Copy Markdown View Source

Macro and GenServer for Cyclium actors.

Usage

defmodule MyApp.Agents.POStatus do
  use Cyclium.Actor

  actor do
    identifier :po_status
    domain :procurement
    synthesizer MyApp.Synthesizers.Procurement
    capabilities [:erp_read, :vendor_read, :email_write]

    max_concurrent_episodes 3
    episode_overflow :queue

    expectation :po_delivery_sla,
      trigger: {:schedule, :timer.hours(4)},
      description: "Open POs should have confirmed ETA within SLA",
      outputs: [:email, :slack],
      budget: %{max_turns: 12, max_tokens: 25_000, max_wall_ms: 120_000}

    expectation :po_stalled,
      trigger: {:event, "po.status_changed"},
      filter: %{new_status: "STALLED"},
      description: "Stalled POs get triaged",
      outputs: [:email, :slack, :issue]
  end
end