[项目边界]:完成全双工Agent入口和配置冻结,包含run-agent-live入口、配置校验和迁移文档
This commit is contained in:
@@ -42,6 +42,7 @@ class CliAcceptanceTests(unittest.TestCase):
|
||||
self.assertEqual(code, 0)
|
||||
self.assertTrue(data["llm_api_key_present"])
|
||||
self.assertEqual(data["llm_model"], "file-model")
|
||||
self.assertEqual(data["assistant_mode"], "turn_based_voice_pet")
|
||||
self.assertEqual(data["pipeline_mode"], "live_turn_based")
|
||||
self.assertEqual(data["endpoint_mode"], "primary_speaker")
|
||||
self.assertEqual(data["realtime_transcript_idle_timeout_ms"], 1500)
|
||||
@@ -49,8 +50,48 @@ class CliAcceptanceTests(unittest.TestCase):
|
||||
self.assertTrue(data["end_chime_enabled"])
|
||||
self.assertEqual(data["end_chime_file"], "assets/sounds/codex-notification.wav")
|
||||
self.assertEqual(data["end_chime_duration_ms"], 140)
|
||||
self.assertEqual(data["audio_apm_provider"], "webrtc")
|
||||
self.assertTrue(data["audio_aec_enabled"])
|
||||
self.assertTrue(data["audio_ns_enabled"])
|
||||
self.assertTrue(data["audio_agc_enabled"])
|
||||
self.assertEqual(data["audio_frame_ms"], 20)
|
||||
self.assertEqual(data["audio_ring_buffer_ms"], 3000)
|
||||
self.assertTrue(data["interrupt_enabled"])
|
||||
self.assertEqual(data["interrupt_target_latency_ms"], 200)
|
||||
self.assertEqual(data["streaming_stt_provider"], "faster_whisper")
|
||||
self.assertEqual(data["streaming_stt_product_candidate"], "sensevoice")
|
||||
self.assertEqual(data["streaming_tts_provider"], "cosyvoice")
|
||||
self.assertFalse(data["memory_enabled"])
|
||||
self.assertEqual(data["memory_provider"], "faiss_sqlite")
|
||||
self.assertFalse(data["tool_router_enabled"])
|
||||
self.assertFalse(data["openinterpreter_enabled"])
|
||||
self.assertFalse(data["browser_playwright_enabled"])
|
||||
self.assertFalse(data["computer_control_enabled"])
|
||||
self.assertNotIn("secret-value", str(data))
|
||||
|
||||
def test_help_lists_full_duplex_agent_entrypoint(self) -> None:
|
||||
buffer = io.StringIO()
|
||||
with redirect_stdout(buffer), self.assertRaises(SystemExit) as raised:
|
||||
main(["--help"])
|
||||
|
||||
self.assertEqual(raised.exception.code, 0)
|
||||
self.assertIn("run-agent-live", buffer.getvalue())
|
||||
|
||||
def test_run_agent_live_check_config_reports_reserved_entrypoint(self) -> None:
|
||||
code, data = self.call("run-agent-live", "--check-config")
|
||||
self.assertEqual(code, 0)
|
||||
self.assertTrue(data["success"])
|
||||
self.assertEqual(data["command"], "run-agent-live")
|
||||
self.assertEqual(data["assistant_mode"], "full_duplex_agent")
|
||||
self.assertFalse(data["full_duplex_runtime_ready"])
|
||||
self.assertEqual(data["turn_based_entry"], "run-live")
|
||||
|
||||
def test_run_agent_live_without_runtime_returns_explicit_not_implemented(self) -> None:
|
||||
code, data = self.call("run-agent-live")
|
||||
self.assertEqual(code, 1)
|
||||
self.assertFalse(data["success"])
|
||||
self.assertEqual(data["code"], "FULL_DUPLEX_RUNTIME_NOT_IMPLEMENTED")
|
||||
|
||||
def test_security_check_command_has_no_leaks(self) -> None:
|
||||
code, data = self.call("security-check")
|
||||
self.assertEqual(code, 0)
|
||||
|
||||
Reference in New Issue
Block a user