Skip to content

Commit 6dfaa7a

Browse files
authored
feat: add MessageBag::withMessageBag() method (#21)
Or what about naming it `merge()`?
1 parent e704c55 commit 6dfaa7a

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/Message/MessageBag.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ public function with(Message $message): self
3333
return $messages;
3434
}
3535

36+
public function merge(MessageBag $messageBag): self
37+
{
38+
$messages = clone $this;
39+
$messages->exchangeArray(array_merge($messages->getArrayCopy(), $messageBag->getArrayCopy()));
40+
41+
return $messages;
42+
}
43+
3644
public function withoutSystemMessage(): self
3745
{
3846
$messages = clone $this;

tests/Message/MessageBagTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,23 @@ public function with(): void
5959
self::assertSame('It is time to wake up.', $newMessageBag[3]->content);
6060
}
6161

62+
#[Test]
63+
public function merge(): void
64+
{
65+
$messageBag = new MessageBag(
66+
Message::forSystem('My amazing system prompt.'),
67+
Message::ofAssistant('It is time to sleep.'),
68+
Message::ofUser('Hello, world!'),
69+
);
70+
71+
$messageBag = $messageBag->merge(new MessageBag(
72+
Message::ofAssistant('It is time to wake up.')
73+
));
74+
75+
self::assertCount(4, $messageBag);
76+
self::assertSame('It is time to wake up.', $messageBag[3]->content);
77+
}
78+
6279
#[Test]
6380
public function withoutSystemMessage(): void
6481
{

0 commit comments

Comments
 (0)