Search by

illuma-law / laravel-prompt-registry

miguelenes

Dynamic AI agent prompt registration and retrieval for Laravel.

Package info

github.com/eloquage/laravel-prompt-registry

pkg:composer/illuma-law/laravel-prompt-registry

Statistics

Installs: 65

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 2

v0.1.6 2026-10-23 14:09 UTC

README

Laravel Prompt Registry

Laravel Prompt Registry

Tests PHPStan Latest Version License

A Laravel package for registering AI agent metadata, resolving prompt content, and selecting a default standard or extended model tier.

Requirements

  • PHP 8.3+
  • Laravel 11, 12, or 13

Install

composer require illuma-law/laravel-prompt-registry
php artisan vendor:publish --tag=prompt-registry-config

Laravel discovers the service provider automatically. The publish command is optional if you only register definitions in a service provider.

Register prompts

Add definitions to config/prompt-registry.php:

return [
    'prompts' => [
        'agents.summary' => [
            'agent' => App\Ai\Agents\SummaryAgent::class,
            'name' => 'Summary agent',
            'description' => 'Summarizes a document.',
            'fallback_view' => 'prompts.agents.summary',
            'default_primary_tier' => 'standard', // Optional: standard or extended.
        ],
    ],
];

Create the fallback prompt view at resources/views/prompts/agents/summary.blade.php. You can also register definitions at runtime:

use IllumaLaw\PromptRegistry\Facades\PromptRegistry;

PromptRegistry::register('agents.summary', [
    'agent' => App\Ai\Agents\SummaryAgent::class,
    'name' => 'Summary agent',
    'description' => 'Summarizes a document.',
    'fallback_view' => 'prompts.agents.summary',
]);

Look up and resolve prompts

use IllumaLaw\PromptRegistry\Facades\PromptRegistry;
use IllumaLaw\PromptRegistry\PromptBodyResolver;

$definition = PromptRegistry::forKey('agents.summary');
$byAgent = PromptRegistry::forAgent(App\Ai\Agents\SummaryAgent::class);
$tier = PromptRegistry::defaultPrimaryTierForAgent(App\Ai\Agents\SummaryAgent::class);

// Stored content wins; otherwise the registered fallback Blade view is rendered.
$body = app(PromptBodyResolver::class)->resolveForAgent(App\Ai\Agents\SummaryAgent::class);

The manager also provides all() and definitionsByKey(). Unknown keys or agents raise InvalidArgumentException.

Optional prompt persistence

To store editable prompt overrides, set persistence.model in the published config to an Eloquent model with key and content columns. The package does not create a migration for this application-owned table.

use IllumaLaw\PromptRegistry\PromptPersistenceManager;

$prompts = app(PromptPersistenceManager::class);
$prompts->persistByKey('agents.summary', 'Summarize the supplied text in three bullets.');
$body = app(PromptBodyResolver::class)->resolveForAgent(App\Ai\Agents\SummaryAgent::class);
$prompts->revertToFallbackByKey('agents.summary');

Development checks

composer test
composer analyse
composer format -- --test

The current test suite reports 57.4% line coverage; it does not provide complete coverage of every branch or production database configuration.

License

MIT. See LICENSE.