Packet manifest loader and generator.
@type repo_config() :: %{name: String.t(), path: String.t(), default: boolean()}
@type t() :: %PromptRunner.Packet{ body: String.t(), manifest_path: String.t(), name: String.t(), options: map(), phase_names: map(), profile: map(), profile_name: String.t() | nil, prompt_dir: String.t(), prompt_path: String.t(), repos: [repo_config()], root: String.t() }
@spec add_repo(String.t(), String.t(), String.t(), keyword()) :: {:ok, t()} | {:error, term()}
@spec checklist_sync(String.t()) :: {:ok, %{paths: [String.t()], warnings: [map()]}} | {:error, term()}
@spec doctor(String.t()) :: {:ok, map()} | {:error, term()}
@spec exists?(String.t()) :: boolean()
@spec explain(String.t()) :: {:ok, map()} | {:error, term()}
@spec load(String.t()) :: {:ok, t()} | {:error, term()}
@spec manifest_file(String.t()) :: String.t()
@spec new( String.t(), keyword() ) :: {:ok, t()} | {:error, term()}
@spec preflight(String.t()) :: {:ok, map()} | {:error, {:preflight_failed, map()}} | {:error, term()}