defmodule BDS.Scripting.Runtime do @moduledoc """ Behaviour for user-script runtimes hosted by bDS. The runtime boundary is intentionally narrow: syntax validation and bounded entrypoint execution. """ @type source :: String.t() @type entrypoint :: String.t() @type args :: [term()] @type progress_event :: map() @type progress_callback :: (progress_event() -> any()) @type execution_option :: {:timeout, non_neg_integer() | :infinity} | {:max_reductions, pos_integer() | :none} | {:spawn_opts, [term()]} | {:on_progress, progress_callback()} | {:capabilities, map()} @callback validate(source()) :: :ok | {:error, term()} @callback execute(source(), entrypoint(), args(), [execution_option()]) :: {:ok, term()} | {:error, term()} end