# `PromptRunner.Plan`
[🔗](https://github.com/nshkrdotcom/prompt_runner_sdk/blob/v0.6.1/lib/prompt_runner/plan.ex#L1)

Fully resolved execution plan used by the PromptRunner runtime.

# `callbacks`

```elixir
@type callbacks() :: %{
  optional(:on_event) =&gt; (map() -&gt; term()) | nil,
  optional(:on_prompt_started) =&gt; (map() -&gt; term()) | nil,
  optional(:on_prompt_completed) =&gt; (map() -&gt; term()) | nil,
  optional(:on_prompt_failed) =&gt; (map() -&gt; term()) | nil,
  optional(:on_run_completed) =&gt; (map() -&gt; term()) | nil
}
```

# `t`

```elixir
@type t() :: %PromptRunner.Plan{
  callbacks: callbacks(),
  commit_messages: %{optional({String.t(), String.t() | nil}) =&gt; String.t()},
  committer: {module(), keyword()},
  config: PromptRunner.Config.t(),
  input_type: PromptRunner.RunSpec.input_type(),
  interface: :api | :cli | :legacy,
  prompts: [PromptRunner.Prompt.t()],
  runtime_store: {module(), term()},
  source: module(),
  source_input: term(),
  source_root: String.t() | nil,
  state_dir: String.t() | nil
}
```

# `build`

```elixir
@spec build(PromptRunner.RunSpec.t()) :: {:ok, t()} | {:error, term()}
```

# `with_overrides`

```elixir
@spec with_overrides(
  t(),
  keyword()
) :: t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
