Squidie.Workflow.GuardrailRegistry (squidie v0.3.0)

Copy Markdown View Source

Host-owned trust boundary for runtime-authored workflow guardrails.

Runtime-authored specs reference stable guardrail keys under step opts[:guardrails]. Host applications own the registry that maps those keys to validator modules before drafts are published, previewed, or executed.

Summary

Functions

Projects host-owned guardrails into editor-safe catalog metadata.

Types

catalog_entry()

@type catalog_entry() :: %{
  key: guardrail_key(),
  display_name: String.t(),
  category: String.t() | nil,
  description: String.t(),
  enabled?: boolean(),
  input_contract: term(),
  config_schema: term()
}

catalog_error()

@type catalog_error() :: Squidie.Workflow.Spec.validation_error()

decision()

@type decision() :: Squidie.Workflow.GuardrailRegistry.Decision.t()

guardrail_key()

@type guardrail_key() :: atom() | String.t()

guardrail_ref()

@type guardrail_ref() :: %{
  key: guardrail_key(),
  placement: placement(),
  policy: policy(),
  config: map()
}

guardrail_validation_error()

@type guardrail_validation_error() ::
  :missing_guardrail_key
  | :invalid_guardrail_key
  | :unknown_guardrail_key
  | :disabled_guardrail_key
  | :incompatible_guardrail_module

placement()

@type placement() :: :input | :action | :output

policy()

@type policy() :: :block_publish | :block_run_start | :route_error | :audit

registry()

@type registry() ::
  %{optional(guardrail_key()) => registry_entry()} | keyword(registry_entry())

registry_entry()

@type registry_entry() ::
  module()
  | keyword()
  | %{optional(:module) => module(), optional(:enabled?) => boolean()}
  | %{optional(String.t()) => term()}

validation_error()

@type validation_error() :: Squidie.Workflow.Spec.validation_error()

Functions

catalog(registry)

@spec catalog(term()) ::
  {:ok, [catalog_entry()]}
  | {:error, {:invalid_guardrail_catalog, [catalog_error()]}}

Projects host-owned guardrails into editor-safe catalog metadata.