Cyclium. Output. Router
(Cyclium v0.1.5)
Copy Markdown
Deduplicates and dispatches output proposals to adapters.
Flow
- Insert
cyclium_outputsrow with dedupe_key unique constraint - If constraint fires →
{:duplicate, existing_output} - If insert succeeds → resolve adapter from app config, call
deliver/3 - On adapter success → update row to
:delivered, journal step - On adapter error → update row to
:failed, journal step - Emit telemetry at each outcome
Summary
Functions
Route an output proposal through dedupe check and adapter dispatch.
Functions
@spec route(Cyclium.OutputProposal.t(), map(), map()) :: {:ok, %Cyclium.Schemas.Output{ __meta__: term(), created_at: term(), dedupe_key: term(), delivered_at: term(), delivered_ref: term(), episode_id: term(), error_class: term(), error_detail: term(), id: term(), payload_redacted: term(), status: term(), type: term() }} | {:duplicate, %Cyclium.Schemas.Output{ __meta__: term(), created_at: term(), dedupe_key: term(), delivered_at: term(), delivered_ref: term(), episode_id: term(), error_class: term(), error_detail: term(), id: term(), payload_redacted: term(), status: term(), type: term() }} | {:error, term()}
Route an output proposal through dedupe check and adapter dispatch.
Returns {:ok, output}, {:duplicate, output}, or {:error, reason}.