Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Ai Session Message Store

Ai Session Message Store Laravel Package

symfony/ai-session-message-store

Symfony AI Session Message Store integrates Symfony Session as a message store for Symfony AI Chat, letting you persist and retrieve chat conversation messages across requests using standard Symfony session handling.

View on GitHub
Deep Wiki
Context7

Symfony session message store bridge for Symfony AI Chat

Frequently asked questions about Ai Session Message Store
Can I use Symfony AI Session Message Store directly in Laravel without Symfony components?
No, this package requires Symfony’s `SessionInterface` and `MessageStoreInterface`, so you’ll need a custom adapter (~100–200 lines of code) to bridge it with Laravel’s `session()` helper. Focus on abstracting Symfony-specific logic (e.g., `FlashBag`) to reduce maintenance overhead.
What Laravel session drivers work best with this package?
Redis is the most scalable choice for production, while database drivers risk session table bloat with large message payloads. Avoid the default file driver—it’s unsuitable for concurrent or high-traffic apps. Test payload sizes (e.g., 1MB–10MB) to avoid session driver failures.
How do I handle flash messages for AI chat notifications in Laravel?
Laravel’s `session()->flash()` doesn’t natively support Symfony’s `FlashBag`, so you’ll need middleware or a facade to serialize/deserialize flash messages. Ensure notifications persist across page reloads by manually re-flashing them in middleware or using Laravel’s `old()` helper.
Will this package work with Laravel’s cache-based session driver?
No, the cache driver lacks atomicity for concurrent writes, risking corrupted AI chat sessions. Use Redis with `predis/predis` or `php-redis` for thread-safe operations. If you must use cache, implement pessimistic locking (e.g., Redis `WATCH`) in your adapter.
What’s the maximum message payload size before Laravel’s session driver fails?
Redis typically handles ~1–10MB per session without issues, but database drivers may fail at ~1MB due to row size limits. For large conversations (100+ messages), consider offloading older messages to a database or object storage (e.g., S3) with a TTL-based cleanup job.
How do I integrate this with Laravel’s existing session configuration?
Extend Laravel’s `SessionServiceProvider` to register a custom session bag for AI messages (e.g., `session()->put('ai_messages', [...]`). Use the adapter to normalize Symfony’s `MessageStoreInterface` calls into Laravel’s session methods. Avoid hardcoding Symfony dependencies in your Laravel config.
Are there alternatives for session-backed AI message storage in Laravel?
Yes: Use Laravel’s built-in `session()` with JSON serialization for simple cases, or leverage packages like `spatie/laravel-session` for advanced session handling. For AI-specific needs, consider `laravel-ai/ai` (if stable) or build a custom solution with Redis hashes for better scalability.
How do I handle race conditions when multiple requests update the same AI chat session?
Laravel’s session drivers (except Redis) don’t support atomic writes. For Redis, use `MULTI/EXEC` or `WATCH` to lock the session during updates. For database drivers, implement optimistic locking (e.g., `session()->put('ai_messages', [...], 'etag')`) and retry on conflicts.
What Laravel versions are supported by this package?
The package itself has no Laravel-specific dependencies, but your adapter must target Laravel 8.83+ (for Symfony 6.x compatibility). Test thoroughly with your Laravel version, as Symfony’s `ai-chat` (0.9+) may introduce breaking changes without a changelog.
How do I test this package in a Laravel CI pipeline?
Mock Symfony’s `SessionInterface` and `MessageStoreInterface` in PHPUnit tests using Laravel’s `Mockery` or `symfony/mime`. Test edge cases like session expiry, flash message serialization, and concurrent writes. Use Laravel’s `refreshApplication()` to simulate session restarts between tests.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor