Skip to content

Commit 677cc1d

Browse files
authored
fix Thread.fork() RecursionError caused by circular references in Message objects (#299)
1 parent 649750e commit 677cc1d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

dreadnode/agent/thread.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from copy import deepcopy
2-
31
from pydantic import BaseModel, Field
42
from rigging.generator import Usage
53
from rigging.message import Message
@@ -44,4 +42,12 @@ def last_usage(self) -> Usage | None:
4442
return None
4543

4644
def fork(self) -> "Thread":
47-
return Thread(messages=deepcopy(self.messages), events=deepcopy(self.events))
45+
# Create a new thread with the same messages but empty events
46+
# Events are historical tracking and don't need to be forked
47+
# We construct new Message objects to avoid shared references
48+
forked_messages = []
49+
for msg in self.messages:
50+
# Reconstruct message from its dict representation
51+
msg_dict = msg.model_dump()
52+
forked_messages.append(Message.model_validate(msg_dict))
53+
return Thread(messages=forked_messages, events=[])

0 commit comments

Comments
 (0)