PromptManager
PromptPHP\Deck\PromptManager
The core service class responsible for loading, caching, versioning, and tracking prompts. Registered as a singleton in the service container.
Constructor
Methods
get(string $name, string|int|null $version = null): PromptTemplate
Load a prompt by name and optional version. Accepts 2, '2', or 'v2'. If version is null, the active version is resolved automatically. Returns a PromptTemplate instance.
Caches the loaded prompt if caching is enabled.
Throws: PromptNotFoundException if the prompt does not exist. InvalidVersionException if the specified version does not exist.
active(string $name): PromptTemplate
Load the active version of a prompt. Equivalent to calling get($name) without a version.
versions(string $name): array
List all versions for a prompt. Returns an array of version info sorted in ascending order.
Throws: PromptNotFoundException if the prompt directory does not exist.
activate(string $name, string|int $version): bool
Activate a specific version of a prompt. Returns true on success.
Accepts the same version formats as get(), so 2, '2', and 'v2' are equivalent. A version that cannot be parsed throws InvalidVersionException.
- With tracking enabled: Updates the
prompt_versionsdatabase table. - Without tracking: Writes to
metadata.jsonin the prompt directory.
track(string $promptName, int $version, array $data): void
Record a prompt execution for tracking. No-op if tracking is disabled.
PromptTemplate
PromptPHP\Deck\PromptTemplate
Represents a loaded prompt with its roles, metadata, and interpolation capabilities. Implements Illuminate\Contracts\Support\Arrayable.
Constructor
Methods
role(string $role, array $variables = []): string
Render a role’s content with variable interpolation. Returns an empty string if the role does not exist.
raw(string $role): string
Get the raw content for a role without interpolation. Returns an empty string if the role does not exist.
has(string $role): bool
Check whether a specific role exists in this prompt.
roles(): array
Get all available role names.
toMessages(array $variables = [], ?array $only = null): array
Build a messages array for AI API consumption. Returns an array of ['role' => '...', 'content' => '...'] entries.
version(): int
Get the resolved version number.
name(): string
Get the prompt name.
metadata(): array
Get the prompt metadata: the prompt’s root metadata.json merged with the version’s own metadata.json, version-level keys winning. The active_version key is excluded. Returns an empty array if no metadata is defined.
toArray(): array
Convert the prompt to an array (implements Arrayable).
__call(string $method, array $parameters): string
Dynamic role access via method call. Any method name is treated as a role name.
Deck facade
PromptPHP\Deck\Facades\Deck
Static proxy to the PromptManager singleton.
Available methods
HasPromptTemplate trait
PromptPHP\Deck\Concerns\HasPromptTemplate
Trait for integrating Deck templates with Laravel AI SDK agents.
Methods
promptName(): string
Get the prompt name. Defaults to the kebab-cased class name (e.g. SalesCoach → sales-coach). Override to use a custom name.
promptVersion(): ?int
Get the prompt version to load. Returns null by default (active version). Override to pin to a specific version.
promptVariables(): array
Get variables for prompt template interpolation. Returns an empty array by default. Override to provide dynamic context.
promptTemplate(): PromptTemplate
Get the loaded PromptTemplate instance. Cached for the lifetime of the object.
instructions(): Stringable|string
Get the system instructions from the prompt template. Loads the system role and interpolates promptVariables(). Satisfies the AI SDK Agent contract.
promptMessages(?array $only = null): array
Get prompt roles as messages. By default returns all roles except system. Returns Message[] when the AI SDK is installed, or raw ['role' => '...', 'content' => '...'] arrays otherwise.
forgetPromptTemplate(): static
Clear the cached PromptTemplate, forcing a fresh load on next access. Returns $this for fluent chaining.
TrackPromptMiddleware
PromptPHP\Deck\Ai\TrackPromptMiddleware
Laravel AI SDK agent middleware that automatically tracks prompt executions.
Methods
handle(mixed $prompt, Closure $next): mixed
Handle the incoming agent prompt. Measures latency and records execution data using PromptManager::track() after the response completes.
Only tracks agents that use the HasPromptTemplate trait (i.e. agents with a promptName() method).
AfterMakeAgent listener
PromptPHP\Deck\Listeners\AfterMakeAgent
Listens for the Laravel AI SDK’s make:agent command and automatically scaffolds a corresponding Deck prompt.
Methods
handle(CommandFinished $event): void
Handle the CommandFinished event. Only acts on successful make:agent commands. Converts the agent name to kebab-case and runs make:prompt if the prompt doesn’t already exist.
Models
PromptVersion
PromptPHP\Deck\Models\PromptVersion
PromptExecution
PromptPHP\Deck\Models\PromptExecution
Exceptions
All Deck exceptions extend the baseDeckException class.
DeckException
PromptPHP\Deck\Exceptions\DeckException
Abstract base exception for all Deck errors. Extends PHP’s Exception class.
PromptNotFoundException
PromptPHP\Deck\Exceptions\PromptNotFoundException
Thrown when a prompt directory does not exist.
InvalidVersionException
PromptPHP\Deck\Exceptions\InvalidVersionException
Thrown when a requested version does not exist or no versions are found.
ConfigurationException
PromptPHP\Deck\Exceptions\ConfigurationException
Thrown when Deck configuration is invalid.
PromptRenderingException
PromptPHP\Deck\Exceptions\PromptRenderingException
Thrown when prompt rendering fails.