Packages

Spooks is an agentic workflow library for Elixir. It is intended to be used with Ecto and Phoenix. LLMs can be used to provide additional functionality.

Current section

Files

Jump to
spooks lib workflow.ex
Raw

lib/workflow.ex

defmodule Spooks.Workflow do
@doc """
Add `use Spooks.Workflow` to your workflow module to enable the `@step` attribute.
## Example
defmodule MyWorkflow do
use Spooks.Workflow
@step %Step{in: StartEvent, out: StepOneEvent}
def start_step(%StartEvent{} = start_event, %SpooksContext{} = ctx) do
{:ok, ctx, %StepOneEvent{}}
end
end
"""
defmacro __using__(_) do
quote do
Module.register_attribute(__MODULE__, :step, accumulate: true, persist: true)
alias Spooks.Event.StartEvent
alias Spooks.Event.EndEvent
alias Spooks.Context.SpooksContext
alias Spooks.Context.Step
def steps() do
__MODULE__.__info__(:attributes)
|> Keyword.get_values(:step)
|> List.flatten()
end
end
end
end