MimirWorkflows.Spec (mimir_workflows v0.7.0)

Copy Markdown View Source

The parsed workflow IR.

Workflow specs arrive as string-keyed maps (they may come off a wire or out of a model) and parse into %Spec{}/%Spec.Step{} structs whose step ids stay strings — untrusted IR never mints atoms. parse/1 is best-effort: it always returns a struct alongside accumulated :schema diagnostics rather than raising, so later compiler passes can still run and report their own findings.

The library validates universal shape only. "kind" vocabulary — and anything else domain-shaped in a step map — is host concern; the full original step map is preserved in raw.

Summary

Functions

Parses a string-keyed spec map into {%Spec{}, [Diagnostic.t()]}.

Types

t()

@type t() :: %MimirWorkflows.Spec{
  name: String.t() | nil,
  params: [String.t()],
  steps: [MimirWorkflows.Spec.Step.t()],
  version: integer() | nil
}

Functions

parse(map)

@spec parse(map()) :: {t(), [MimirWorkflows.Diagnostic.t()]}

Parses a string-keyed spec map into {%Spec{}, [Diagnostic.t()]}.

Every violation appends a %Diagnostic{pass: :schema, severity: :error}; the struct is always returned (steps without ids are kept with id: nil so later passes can skip them).