Skip to main content

src/aion_flow.erl

-module(aion_flow).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/aion_flow.gleam").
-export_type([package_root/0]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(
    " `aion_flow` is the typed Gleam SDK for authoring durable Aion\n"
    " workflows.\n"
    "\n"
    " Workflow authors write ordinary deterministic Gleam for decisions, loops,\n"
    " and data transformation. Code reaches the outside world only through the\n"
    " SDK primitives exposed from the public modules listed below: activities,\n"
    " signals, queries, timers, child workflows, codecs, durations, errors, and\n"
    " the pure-Gleam testing harness.\n"
    "\n"
    " The recorded side-effect boundary is structural: activity dispatch goes\n"
    " through `aion/workflow.run` and its typed concurrency helpers. Workflow code\n"
    " must not read wall clocks or ambient entropy; use the deterministic\n"
    " `aion/workflow.now`, `aion/workflow.random`, and timer primitives instead so\n"
    " replay observes the same values.\n"
    "\n"
    " Public import paths:\n"
    "\n"
    " - `aion/activity` for typed activity definitions and configuration.\n"
    " - `aion/workflow` for workflow definitions, deterministic primitives,\n"
    "   timers, child workflow helpers, and activity dispatch.\n"
    " - `aion/signal` for typed signal references and signal helpers.\n"
    " - `aion/query` for typed query handlers and replies.\n"
    " - `aion/child` for typed child-workflow handles.\n"
    " - `aion/error` for activity and engine-originated error types.\n"
    " - `aion/codec` for payload codecs and decode errors.\n"
    " - `aion/duration` for canonical workflow durations.\n"
    " - `aion/testing` for simulated time, activity mocks, and replay assertions.\n"
    "\n"
    " The canonical typed example lives in\n"
    " `test/aion_flow_test.gleam` as `canonical_example_workflow`: it defines a\n"
    " workflow with `workflow.define`, runs an activity, reads deterministic time,\n"
    " sleeps, receives a typed signal, spawns and awaits a child workflow, and fans\n"
    " out homogeneous activities with `workflow.all` under the pure-Gleam harness.\n"
).

-type package_root() :: package_root.