Cyclium. Actor
(Cyclium v0.1.5)
Copy Markdown
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