Mercurial
diff mrjunejune/inference/copilot_sidecar_test.py @ 280:49e9e591c9bb
Add persistent dictation, prewarmed WebRTC speech input, Copilot SDK routing, animated conversation lifecycle controls, parking, and architecture coverage.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Tue, 18 Aug 2026 19:14:53 -0700 |
| parents | 056790c4fb0d |
| children | c57149ad216e |
line wrap: on
line diff
--- a/mrjunejune/inference/copilot_sidecar_test.py Mon Aug 17 22:22:36 2026 -0700 +++ b/mrjunejune/inference/copilot_sidecar_test.py Tue Aug 18 19:14:53 2026 -0700 @@ -10,6 +10,7 @@ Sidecar, SidecarConfig, _derive_sdk_session_id, + _CANVAS_ORCHESTRATOR_PROMPT, _SDK_SESSION_NAMESPACE, _validate_history, _HISTORY_MAX_ENTRIES, @@ -50,7 +51,15 @@ def _fake_sdk_id(conversation_id: str, profile: str) -> str: """Compute the deterministic SDK session ID for use in test assertions.""" - p = _FAKE_PROFILES[profile] + if profile == "canvas_orchestrator": + content = _CANVAS_ORCHESTRATOR_PROMPT.strip() + p = { + "content": content, + "version": 1, + "hash": hashlib.sha256(content.encode()).hexdigest(), + } + else: + p = _FAKE_PROFILES[profile] compiled = CompiledProfile( profile=profile, content=p["content"], @@ -210,6 +219,54 @@ ["turn.error", "turn.done"], ) + async def test_warm_creates_session_without_sending_prompt(self): + sidecar, client = await self.make_sidecar() + await sidecar.dispatch( + { + "command": "conversation.warm", + "request_id": "warm-1", + "conversation_id": "canvas-worker-1", + "prompt_profile": "canvas_orchestrator", + "prompt_version": 1, + "knowledge_version": 1, + "resume_existing": False, + } + ) + + self.assertEqual(len(client.create_calls), 1) + self.assertEqual(len(client.resume_calls), 0) + session = next(iter(client.sessions.values())) + self.assertEqual(session.prompts, []) + self.assertEqual( + [item["type"] for item in self.output[-2:]], + ["session.warmed", "turn.done"], + ) + + async def test_warm_rejects_non_boolean_resume_existing(self): + sidecar, client = await self.make_sidecar() + await sidecar.dispatch( + { + "command": "conversation.warm", + "request_id": "warm-invalid", + "conversation_id": "canvas-worker-1", + "prompt_profile": "canvas_orchestrator", + "prompt_version": 1, + "knowledge_version": 1, + "resume_existing": "false", + } + ) + + self.assertEqual(len(client.create_calls), 0) + self.assertEqual(len(client.resume_calls), 0) + self.assertEqual( + [item["type"] for item in self.output[-2:]], + ["turn.error", "turn.done"], + ) + self.assertEqual( + self.output[-2]["error"]["message"], + "resume_existing must be a boolean", + ) + async def test_multi_turn_reuses_one_session_and_configures_sdk(self): sidecar, client = await self.make_sidecar() for request_id, prompt in (("r1", "first"), ("r2", "second")): @@ -411,6 +468,7 @@ _fake_sdk_id("delete-me", "public_visitor"), _fake_sdk_id("delete-me", "invited_friend"), _fake_sdk_id("delete-me", "june_admin"), + _fake_sdk_id("delete-me", "canvas_orchestrator"), }, ) self.assertTrue(client.stopped) @@ -958,6 +1016,7 @@ _fake_sdk_id("conv-del-check", "public_visitor"), _fake_sdk_id("conv-del-check", "invited_friend"), _fake_sdk_id("conv-del-check", "june_admin"), + _fake_sdk_id("conv-del-check", "canvas_orchestrator"), }, ) self.assertNotIn("conv-del-check", client.delete_calls) @@ -977,6 +1036,7 @@ _fake_sdk_id("ghost-conv", "public_visitor"), _fake_sdk_id("ghost-conv", "invited_friend"), _fake_sdk_id("ghost-conv", "june_admin"), + _fake_sdk_id("ghost-conv", "canvas_orchestrator"), }, ) self.assertNotIn("ghost-conv", client.delete_calls)