Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions dreadnode/agent/thread.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from copy import deepcopy

from pydantic import BaseModel, Field
from rigging.generator import Usage
from rigging.message import Message
Expand Down Expand Up @@ -44,4 +42,12 @@ def last_usage(self) -> Usage | None:
return None

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