feat(cognitive): unlock settled sidechats as SIDECHAT_IDLE and add Main Chat refocus
This commit is contained in:
@@ -14,11 +14,69 @@ class TestAgentCognitiveProbe(unittest.TestCase):
|
||||
|
||||
def test_badge_formatting(self):
|
||||
self.assertIn("IDLE", acp.format_cognitive_badge("IDLE"))
|
||||
self.assertIn("SIDE_IDLE", acp.format_cognitive_badge("SIDECHAT_IDLE"))
|
||||
self.assertIn("THINKING", acp.format_cognitive_badge("THINKING"))
|
||||
self.assertIn("INPUT_WAIT", acp.format_cognitive_badge("INPUT_WAIT"))
|
||||
self.assertIn("SIDECHAT", acp.format_cognitive_badge("BUSY_SIDECHAT"))
|
||||
self.assertIn("DARK", acp.format_cognitive_badge("DARK"))
|
||||
|
||||
@patch("agent_cognitive_probe.is_running_on_bl", return_value=True)
|
||||
@patch("agent_cognitive_probe.run_cdp_eval_inside_netns")
|
||||
def test_passive_sidechat_idle_state(self, mock_cdp, mock_bl):
|
||||
# Simulate settled sidechat — generation complete, no parked modals
|
||||
mock_cdp.return_value = {
|
||||
"is_generating": False,
|
||||
"is_typing": False,
|
||||
"avatar_status": "Connected",
|
||||
"is_main_chat": False,
|
||||
"title": "Chat — test sidechat",
|
||||
"is_input_wait": False
|
||||
}
|
||||
res = acp.get_passive_cognitive_state("def")
|
||||
self.assertEqual(res["status"], "SIDECHAT_IDLE")
|
||||
self.assertFalse(res["cognitive_lock"])
|
||||
self.assertIsNone(res["lock_reason"])
|
||||
|
||||
@patch("agent_cognitive_probe.is_running_on_bl", return_value=True)
|
||||
@patch("agent_cognitive_probe.run_cdp_eval_inside_netns")
|
||||
def test_passive_sidechat_thinking_state(self, mock_cdp, mock_bl):
|
||||
# In a sidechat but actively generating
|
||||
mock_cdp.return_value = {
|
||||
"is_generating": True,
|
||||
"is_typing": False,
|
||||
"avatar_status": "Connected",
|
||||
"is_main_chat": False,
|
||||
"title": "Chat — test sidechat",
|
||||
"is_input_wait": False
|
||||
}
|
||||
res = acp.get_passive_cognitive_state("pip")
|
||||
self.assertEqual(res["status"], "THINKING")
|
||||
self.assertTrue(res["cognitive_lock"])
|
||||
|
||||
@patch("agent_cognitive_probe.is_running_on_bl", return_value=True)
|
||||
@patch("agent_cognitive_probe.run_cdp_eval_inside_netns")
|
||||
def test_passive_sidechat_input_wait_state(self, mock_cdp, mock_bl):
|
||||
# In a sidechat with parked approval modal
|
||||
mock_cdp.return_value = {
|
||||
"is_generating": False,
|
||||
"is_typing": False,
|
||||
"avatar_status": "Connected",
|
||||
"is_main_chat": False,
|
||||
"title": "Chat — test sidechat",
|
||||
"is_input_wait": True
|
||||
}
|
||||
res = acp.get_passive_cognitive_state("pip")
|
||||
self.assertEqual(res["status"], "INPUT_WAIT")
|
||||
self.assertTrue(res["cognitive_lock"])
|
||||
|
||||
@patch("agent_cognitive_probe.is_running_on_bl", return_value=True)
|
||||
@patch("agent_cognitive_probe.run_cdp_eval_inside_netns")
|
||||
def test_navigate_main_chat(self, mock_cdp, mock_bl):
|
||||
mock_cdp.return_value = {"ok": True, "method": "click"}
|
||||
res = acp.navigate_to_main_chat("def")
|
||||
self.assertTrue(res["ok"])
|
||||
self.assertEqual(res["method"], "click")
|
||||
|
||||
@patch("agent_cognitive_probe.is_running_on_bl", return_value=True)
|
||||
@patch("agent_cognitive_probe.run_cdp_eval_inside_netns")
|
||||
def test_passive_thinking_state(self, mock_cdp, mock_bl):
|
||||
|
||||
Reference in New Issue
Block a user