eAi is the Evolution CMS integration layer for the Laravel AI SDK. It provides Evo‑native config publishing, minimal shims for missing Illuminate\Foundation classes, and an sTask‑first queue bridge.
If you only need a quick start and examples, use this README. For full details see DOCS.md (EN) or DOCS.uk.md (UA).
- Evolution CMS 3.5.2+
- PHP 8.4+
- Composer 2.2+
Optional:
- sTask for async tasks (currently
dev-mainfrom the main repo)
From your Evo core directory:
cd core
php artisan package:installrequire evolution-cms/eai "*"
php artisan migratePublish configs and stubs (optional, auto‑publish is enabled):
php artisan vendor:publish --provider="EvolutionCMS\\eAi\\eAiServiceProvider" --tag=eai-config
php artisan vendor:publish --provider="EvolutionCMS\\eAi\\eAiServiceProvider" --tag=eai-ai-config
php artisan vendor:publish --provider="EvolutionCMS\\eAi\\eAiServiceProvider" --tag=eai-stubsSet provider key in .env or core/custom/config/ai.php:
OPENAI_API_KEY=...
Run the built‑in smoke test:
php artisan ai:testFor local Ollama:
php artisan ai:test --provider=ollamause App\Ai\Agents\SupportAgent;
$agent = new SupportAgent();
$response = $agent->prompt('Hello from Evo');
echo $response->text;- sTask is the primary backend;
syncis a fallback. - eAi does not implement Laravel Queue; it only provides SDK‑compatible dispatching.
Process queued tasks:
php artisan stask:workersTask UI workers (for testing):
eai_smoke— fixed prompteai_prompt— custom prompt from widget
AI runs as a normal manager user with role AI (auto‑created). The role is read‑only by default; to allow saving/publishing, elevate permissions manually (e.g. Publisher).
Example settings in core/custom/config/cms/settings/eAi.php:
ai_actor_mode: service
ai_actor_email: ai@your-host
ai_actor_autocreate: true
ai_actor_block_login: true
ai_actor_role: AI
ai_actor_role_autocreate: true
If you need access to package interfaces, grant permissions stask and/or sapi to the AI role (grouped under sPackages).
php artisan make:agent SalesCoach
php artisan make:agent SalesCoach --structured
php artisan make:tool RandomNumberGeneratorGenerated classes are placed in core/custom/app/Ai/.... If autoloading is not updated, run composer dumpautoload.
See DOCS.md for full configuration reference, identity rules, queue contract, and advanced SDK usage.