Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ dependencies = [
"jinja2>=3.1.3,<4",
"mcp[cli]>=1.4.1",
"scale-gp>=0.1.0a59",
"openai-agents>=0.0.7",
"openai-agents>=0.0.7,!=0.2.3", # 0.2.3 bug - https://github.com/openai/openai-agents-python/issues/1276
"tzlocal>=5.3.1",
"tzdata>=2025.2",
"pytest>=8.4.0",
Expand Down
60 changes: 60 additions & 0 deletions src/agentex/lib/types/converters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
from agentex.types.task_message import TaskMessage
from agentex.types.text_content import TextContent
from agentex.types.tool_request_content import ToolRequestContent
from agentex.types.tool_response_content import ToolResponseContent
import json
from agents import TResponseInputItem


def convert_task_messages_to_oai_agents_inputs(
task_messages: list[TaskMessage],
) -> list[TResponseInputItem]:
"""
Convert a list of TaskMessages to a list of OpenAI Agents SDK inputs (TResponseInputItem).

Args:
task_messages: The list of TaskMessages to convert.

Returns:
A list of OpenAI Agents SDK inputs (TResponseInputItem).
"""
converted_messages = []
for task_message in task_messages:
task_message_content = task_message.content
if isinstance(task_message_content, TextContent):
converted_messages.append(
{
"role": (
"user" if task_message_content.author == "user" else "assistant"
),
"content": task_message_content.content,
}
)
elif isinstance(task_message_content, ToolRequestContent):
converted_messages.append(
{
"type": "function_call",
"call_id": task_message_content.tool_call_id,
"name": task_message_content.name,
"arguments": json.dumps(task_message_content.arguments),
}
)
elif isinstance(task_message_content, ToolResponseContent):
content_str = (
task_message_content.content
if isinstance(task_message_content.content, str)
else json.dumps(task_message_content.content)
)
converted_messages.append(
{
"type": "function_call_output",
"call_id": task_message_content.tool_call_id,
"output": content_str,
}
)
else:
raise ValueError(
f"Unsupported content type for converting TaskMessage to OpenAI Agents SDK input: {type(task_message.content)}"
)

return converted_messages
Loading