| 
19 | 19 | use Symfony\AI\Agent\Agent;  | 
20 | 20 | use Symfony\AI\Agent\AgentAwareInterface;  | 
21 | 21 | use Symfony\AI\Agent\AgentInterface;  | 
 | 22 | +use Symfony\AI\Agent\Chat;  | 
 | 23 | +use Symfony\AI\Agent\Chat\MessageStore\InMemoryStore;  | 
22 | 24 | use Symfony\AI\Agent\Exception\InvalidArgumentException;  | 
23 | 25 | use Symfony\AI\Agent\Exception\MissingModelSupportException;  | 
24 | 26 | use Symfony\AI\Agent\Exception\RuntimeException;  | 
 | 
30 | 32 | use Symfony\AI\Platform\Message\Content\Audio;  | 
31 | 33 | use Symfony\AI\Platform\Message\Content\Image;  | 
32 | 34 | use Symfony\AI\Platform\Message\Content\Text;  | 
 | 35 | +use Symfony\AI\Platform\Message\Message;  | 
33 | 36 | use Symfony\AI\Platform\Message\MessageBag;  | 
34 | 37 | use Symfony\AI\Platform\Message\UserMessage;  | 
35 | 38 | use Symfony\AI\Platform\Model;  | 
 | 
49 | 52 | #[UsesClass(Text::class)]  | 
50 | 53 | #[UsesClass(Audio::class)]  | 
51 | 54 | #[UsesClass(Image::class)]  | 
 | 55 | +#[UsesClass(InMemoryStore::class)]  | 
 | 56 | +#[UsesClass(Chat::class)]  | 
52 | 57 | #[Small]  | 
53 | 58 | final class AgentTest extends TestCase  | 
54 | 59 | {  | 
@@ -395,4 +400,32 @@ public function testConstructorAcceptsTraversableProcessors()  | 
395 | 400 | 
 
  | 
396 | 401 |         $this->assertInstanceOf(AgentInterface::class, $agent);  | 
397 | 402 |     }  | 
 | 403 | + | 
 | 404 | +    public function testDoubleAgentCanUseSameMessageStore()  | 
 | 405 | +    {  | 
 | 406 | +        $platform = $this->createMock(PlatformInterface::class);  | 
 | 407 | +        $model = $this->createMock(Model::class);  | 
 | 408 | + | 
 | 409 | +        $firstAgent = new Agent($platform, $model);  | 
 | 410 | +        $secondAgent = new Agent($platform, $model);  | 
 | 411 | + | 
 | 412 | +        $store = new InMemoryStore();  | 
 | 413 | +        $firstStore = $store->withSession($firstAgent->getId());  | 
 | 414 | +        $secondStore = $store->withSession($secondAgent->getId());  | 
 | 415 | + | 
 | 416 | +        $firstChat = new Chat($firstAgent, $firstStore);  | 
 | 417 | +        $secondChat = new Chat($secondAgent, $secondStore);  | 
 | 418 | + | 
 | 419 | +        $messages = new MessageBag(  | 
 | 420 | +            Message::forSystem('You are a helpful assistant. You only answer with short sentences.'),  | 
 | 421 | +        );  | 
 | 422 | + | 
 | 423 | +        $firstChat->initiate($messages);  | 
 | 424 | +        $firstChat->submit(new UserMessage(new Text('Hello')));  | 
 | 425 | +        $secondChat->submit(new UserMessage(new Text('Hello')));  | 
 | 426 | +        $secondChat->submit(new UserMessage(new Text('Hello there')));  | 
 | 427 | + | 
 | 428 | +        $this->assertCount(1, $firstStore->load());  | 
 | 429 | +        $this->assertCount(2, $secondStore->load());  | 
 | 430 | +    }  | 
398 | 431 | }  | 
0 commit comments