feat: standardize long-running tool workflows
This commit is contained in:
@@ -289,6 +289,56 @@ class AutoToolSelectorTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertIn("search_web/fetch_url", result["messages"][0]["content"])
|
||||
self.assertEqual(result["reasoning_effort"], "medium")
|
||||
|
||||
async def test_unraid_media_write_gets_portable_operator_and_web(self):
|
||||
result = await self._select(
|
||||
"Ermittle online das neueste Video, lade es mit yt-dlp auf dem Unraid-Host "
|
||||
"in einen temporären Ordner, konvertiere es mit ffmpeg und lege die fertige "
|
||||
"Datei im Share Transfer ab."
|
||||
)
|
||||
self.assertEqual(
|
||||
result["tool_ids"],
|
||||
[
|
||||
"server:mcp:athena-operator-local",
|
||||
"server:mcp:mua-readonly-local",
|
||||
"server:mcp:mua",
|
||||
"server:mcp:web-general-local",
|
||||
],
|
||||
)
|
||||
self.assertIn("direct MUA management or shell tool", result["messages"][0]["content"])
|
||||
self.assertIn("Do not ask the user to enable another tool", result["messages"][0]["content"])
|
||||
self.assertIn("start-status-result pattern", result["messages"][0]["content"])
|
||||
self.assertTrue(result["metadata"]["mikeai_long_operator_task"])
|
||||
|
||||
async def test_generic_remote_host_file_operation_gets_operator(self):
|
||||
result = await self._select(
|
||||
"Führe auf dem Server ein vorhandenes Skript aus und speichere die neue Datei unter /data/export."
|
||||
)
|
||||
self.assertEqual(result["tool_ids"], ["server:mcp:athena-operator-local"])
|
||||
self.assertTrue(result["metadata"]["mikeai_long_operator_task"])
|
||||
|
||||
async def test_readonly_diagnostics_do_not_get_long_operator_budget(self):
|
||||
result = await self._select("Prüfe nur lesend den Zustand von Unraid.")
|
||||
self.assertNotIn("mikeai_long_operator_task", result["metadata"])
|
||||
|
||||
async def test_narrow_safety_clause_does_not_cancel_authorized_unraid_write(self):
|
||||
result = await self._select(
|
||||
"Lade das Video auf dem Unraid-Host herunter, konvertiere es und lege es "
|
||||
"im Transfer-Share ab. Installiere dabei kein Paket dauerhaft und ändere "
|
||||
"keine Unraid-Systemkonfiguration."
|
||||
)
|
||||
self.assertEqual(
|
||||
result["tool_ids"],
|
||||
[
|
||||
"server:mcp:athena-operator-local",
|
||||
"server:mcp:mua-readonly-local",
|
||||
"server:mcp:mua",
|
||||
],
|
||||
)
|
||||
|
||||
async def test_plain_download_advice_does_not_attach_operator(self):
|
||||
result = await self._select("Erkläre mir, wie ein Browser einen Download technisch durchführt.")
|
||||
self.assertNotIn("tool_ids", result)
|
||||
|
||||
async def test_voice_transcription_variants_select_unraid(self):
|
||||
result = await self._select(
|
||||
"Welche Dacher Contäner laufen aktuell auf dem Anrate Server?"
|
||||
|
||||
Reference in New Issue
Block a user