3535use Symfony \AI \AiBundle \Profiler \TraceableToolbox ;
3636use Symfony \AI \AiBundle \Security \Attribute \IsGrantedTool ;
3737use Symfony \AI \Chat \Bridge \HttpFoundation \SessionStore ;
38+ use Symfony \AI \Chat \Bridge \Local \CacheStore as CacheMessageStore ;
3839use Symfony \AI \Chat \Bridge \Meilisearch \MessageStore as MeilisearchMessageStore ;
3940use Symfony \AI \Chat \Bridge \Pogocache \MessageStore as PogocacheMessageStore ;
4041use Symfony \AI \Chat \Bridge \Redis \MessageStore as RedisMessageStore ;
@@ -811,10 +812,6 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde
811812 new Definition (DistanceCalculator::class),
812813 ];
813814
814- if (\array_key_exists ('cache_key ' , $ store ) && null !== $ store ['cache_key ' ]) {
815- $ arguments [2 ] = $ store ['cache_key ' ];
816- }
817-
818815 if (\array_key_exists ('strategy ' , $ store ) && null !== $ store ['strategy ' ]) {
819816 if (!$ container ->hasDefinition ('ai.store.distance_calculator. ' .$ name )) {
820817 $ distanceCalculatorDefinition = new Definition (DistanceCalculator::class);
@@ -826,10 +823,14 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde
826823 $ arguments [1 ] = new Reference ('ai.store.distance_calculator. ' .$ name );
827824 }
828825
826+ $ arguments [2 ] = \array_key_exists ('cache_key ' , $ store ) && null !== $ store ['cache_key ' ]
827+ ? $ store ['cache_key ' ]
828+ : $ name ;
829+
829830 $ definition = new Definition (CacheStore::class);
830831 $ definition
831- ->addTag ( ' ai.store ' )
832- ->setArguments ( $ arguments );
832+ ->setArguments ( $ arguments )
833+ ->addTag ( ' ai.store ' );
833834
834835 $ container ->setDefinition ('ai.store. ' .$ type .'. ' .$ name , $ definition );
835836 $ container ->registerAliasForArgument ('ai.store. ' .$ type .'. ' .$ name , StoreInterface::class, $ name );
@@ -1364,11 +1365,20 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde
13641365 */
13651366 private function processMessageStoreConfig (string $ type , array $ messageStores , ContainerBuilder $ container ): void
13661367 {
1367- if ('memory ' === $ type ) {
1368+ if ('cache ' === $ type ) {
13681369 foreach ($ messageStores as $ name => $ messageStore ) {
1369- $ definition = new Definition (InMemoryStore::class);
1370+ $ arguments = [
1371+ new Reference ($ messageStore ['service ' ]),
1372+ $ messageStore ['key ' ] ?? $ name ,
1373+ ];
1374+
1375+ if (\array_key_exists ('ttl ' , $ messageStore )) {
1376+ $ arguments [2 ] = $ messageStore ['ttl ' ];
1377+ }
1378+
1379+ $ definition = new Definition (CacheMessageStore::class);
13701380 $ definition
1371- ->setArgument ( 0 , $ messageStore [ ' identifier ' ] )
1381+ ->setArguments ( $ arguments )
13721382 ->addTag ('ai.message_store ' );
13731383
13741384 $ container ->setDefinition ('ai.message_store. ' .$ type .'. ' .$ name , $ definition );
@@ -1377,19 +1387,11 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
13771387 }
13781388 }
13791389
1380- if ('cache ' === $ type ) {
1390+ if ('memory ' === $ type ) {
13811391 foreach ($ messageStores as $ name => $ messageStore ) {
1382- $ arguments = [
1383- new Reference ($ messageStore ['service ' ]),
1384- ];
1385-
1386- if (\array_key_exists ('key ' , $ messageStore )) {
1387- $ arguments ['key ' ] = $ messageStore ['key ' ];
1388- }
1389-
1390- $ definition = new Definition (CacheStore::class);
1392+ $ definition = new Definition (InMemoryStore::class);
13911393 $ definition
1392- ->setArguments ( $ arguments )
1394+ ->setArgument ( 0 , $ messageStore [ ' identifier ' ] )
13931395 ->addTag ('ai.message_store ' );
13941396
13951397 $ container ->setDefinition ('ai.message_store. ' .$ type .'. ' .$ name , $ definition );
0 commit comments