Cyclium. EpisodeRunner. Strategy behaviour
(Cyclium v0.1.5)
Copy Markdown
Behaviour for episode strategies. A strategy defines the investigation logic for a specific expectation — how to gather data, classify, and produce outputs.
Summary
Callbacks
@callback converge(state :: map(), episode_ctx :: map()) :: {:ok, Cyclium.ConvergeResult.t()} | {:partial, Cyclium.ConvergeResult.t(), failures :: [term()]}
@callback handle_result( state :: map(), step :: %Cyclium.Schemas.EpisodeStep{ __meta__: term(), args_hash: term(), args_redacted: term(), cost_ms: term(), cost_tokens: term(), created_at: term(), episode_id: term(), error_class: term(), error_detail: term(), id: term(), kind: term(), result_ref: term(), side_effect_key: term(), step_no: term(), tool_name: term() }, result :: term() ) :: {:ok, new_state :: map()} | {:retry, new_state :: map()} | {:abort, reason :: term()}
@callback init( episode :: %Cyclium.Schemas.Episode{ __meta__: term(), actor_id: term(), archived_at: term(), attempts: term(), budget: term(), checkpoints: term(), classification: term(), confidence: term(), conversation_id: term(), dedupe_key: term(), dry_run_opts: term(), error_class: term(), error_detail: term(), expectation_id: term(), finished_at: term(), id: term(), log_strategy: term(), max_attempts: term(), mode: term(), outputs: term(), parent_episode_id: term(), phase: term(), queued_at: term(), source_stack: term(), spec_rev: term(), started_at: term(), status: term(), steps: term(), summary: term(), tokens_used: term(), trigger_ref: term(), trigger_type: term(), turns_used: term(), workflow_instance_id: term(), workflow_step_id: term(), workflow_step_no: term() }, trigger :: Cyclium.Trigger.t() ) :: {:ok, state :: map()}
@callback workflow_result(state :: map(), converge_result :: Cyclium.ConvergeResult.t()) :: map()