Improve file writing and activity replay
This commit is contained in:
@@ -209,6 +209,72 @@ class ExtendedToolTests(unittest.TestCase):
|
||||
self.assertTrue(session_file_exists)
|
||||
self.assertFalse(root_file_exists)
|
||||
|
||||
def test_write_file_serializes_structured_payloads(self) -> None:
|
||||
registry = default_tool_registry()
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
workspace = Path(tmp_dir)
|
||||
scratchpad = workspace / '.port_sessions' / 'accounts' / 'user' / 'sessions' / 'thread' / 'scratchpad'
|
||||
scratchpad.mkdir(parents=True)
|
||||
context = build_tool_context(
|
||||
AgentRuntimeConfig(
|
||||
cwd=workspace,
|
||||
permissions=AgentPermissions(allow_file_write=True),
|
||||
),
|
||||
scratchpad_directory=scratchpad,
|
||||
tool_registry=registry,
|
||||
)
|
||||
json_result = execute_tool(
|
||||
registry,
|
||||
'write_file',
|
||||
{
|
||||
'path': 'output/data.json',
|
||||
'json_content': {'query': '导航到公司', 'target': 'Agent(tag="地图导航")'},
|
||||
'newline_at_end': True,
|
||||
},
|
||||
context,
|
||||
)
|
||||
jsonl_result = execute_tool(
|
||||
registry,
|
||||
'write_file',
|
||||
{
|
||||
'path': 'output/data.jsonl',
|
||||
'jsonl_records': [
|
||||
{'query': '附近的奶茶', 'target': 'Agent(tag="餐饮服务")'},
|
||||
{'query': '导航去海底捞', 'target': 'Agent(tag="地图导航")'},
|
||||
],
|
||||
'newline_at_end': True,
|
||||
},
|
||||
context,
|
||||
)
|
||||
csv_result = execute_tool(
|
||||
registry,
|
||||
'write_file',
|
||||
{
|
||||
'path': 'output/data.csv',
|
||||
'csv_headers': ['query', 'target'],
|
||||
'csv_rows': [
|
||||
['附近的奶茶', 'Agent(tag="餐饮服务")'],
|
||||
['导航去海底捞', 'Agent(tag="地图导航")'],
|
||||
],
|
||||
'newline_at_end': True,
|
||||
},
|
||||
context,
|
||||
)
|
||||
output_dir = scratchpad.parent / 'output'
|
||||
json_text = (output_dir / 'data.json').read_text(encoding='utf-8')
|
||||
jsonl_text = (output_dir / 'data.jsonl').read_text(encoding='utf-8')
|
||||
csv_text = (output_dir / 'data.csv').read_text(encoding='utf-8')
|
||||
|
||||
self.assertTrue(json_result.ok, json_result.content)
|
||||
self.assertTrue(jsonl_result.ok, jsonl_result.content)
|
||||
self.assertTrue(csv_result.ok, csv_result.content)
|
||||
self.assertIn('"query": "导航到公司"', json_text)
|
||||
self.assertEqual(
|
||||
jsonl_text.splitlines()[0],
|
||||
'{"query":"附近的奶茶","target":"Agent(tag=\\"餐饮服务\\")"}',
|
||||
)
|
||||
self.assertIn('query,target', csv_text)
|
||||
|
||||
def test_sleep_tool_waits_briefly_and_returns_metadata(self) -> None:
|
||||
registry = default_tool_registry()
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
|
||||
Reference in New Issue
Block a user