Files
wehub-resource-sync 0418dc5cf9
CI / Python tests (3.10) (push) Has been cancelled
CI / Python tests (3.11) (push) Has been cancelled
CI / Python quality (push) Has been cancelled
CI / Frontend typecheck (push) Has been cancelled
Autopilot Pages / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:45:00 +08:00

62 lines
1.8 KiB
Python

from __future__ import annotations
from openharness.engine.messages import (
ConversationMessage,
TextBlock,
ToolResultBlock,
ToolUseBlock,
sanitize_conversation_messages,
)
def test_sanitize_conversation_messages_keeps_complete_tool_turn():
messages = [
ConversationMessage.from_user_text("edit the file"),
ConversationMessage(
role="assistant",
content=[ToolUseBlock(id="write_file:234", name="write_file", input={"path": "x"})],
),
ConversationMessage(
role="user",
content=[ToolResultBlock(tool_use_id="write_file:234", content="ok", is_error=False)],
),
]
sanitized = sanitize_conversation_messages(messages)
assert sanitized == messages
def test_sanitize_conversation_messages_drops_dangling_trailing_tool_use():
messages = [
ConversationMessage.from_user_text("edit the file"),
ConversationMessage(
role="assistant",
content=[ToolUseBlock(id="write_file:234", name="write_file", input={"path": "x"})],
),
]
sanitized = sanitize_conversation_messages(messages)
assert sanitized == [ConversationMessage.from_user_text("edit the file")]
def test_sanitize_conversation_messages_drops_orphan_tool_results_but_keeps_user_text():
messages = [
ConversationMessage.from_user_text("hello"),
ConversationMessage(
role="user",
content=[
ToolResultBlock(tool_use_id="missing_call", content="stale", is_error=True),
TextBlock(text="new prompt"),
],
),
]
sanitized = sanitize_conversation_messages(messages)
assert sanitized == [
ConversationMessage.from_user_text("hello"),
ConversationMessage(role="user", content=[TextBlock(text="new prompt")]),
]