24 lines
827 B
Elixir
24 lines
827 B
Elixir
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 |