"""Tests for autonomous study agent.""" from __future__ import annotations import os import unittest from plane_mode_scholar.core.study_agent import AGENT_TOOLS, StudyAgent from plane_mode_scholar.ingestion.pack_builder import PackBuilder from plane_mode_scholar.storage.sqlite_store import SQLiteStore class StudyAgentTests(unittest.TestCase): def test_tools_defined(self) -> None: names = {t["name"] for t in AGENT_TOOLS} self.assertIn("ensure_pack", names) self.assertIn("explain_topic", names) self.assertIn("run_quiz", names) def test_plan_prefers_session_start(self) -> None: agent = StudyAgent() plan = agent.plan_next_action("pack_x", "user", None) self.assertEqual(plan["action"], "start_session") def test_autopilot_yields_boot(self) -> None: store = SQLiteStore() pb = PackBuilder(store) demo = os.path.normpath("plane_mode_scholar/data/demo_notes.txt") if not os.path.exists(demo): self.skipTest("demo notes missing") result = pb.create_pack("Agent", "ML", file_paths=[demo], user_id="agent_user") pack_id = result["pack"]["pack_id"] agent = StudyAgent(store) events = list(agent.run_autopilot("agent_user", pack_id, max_steps=1)) phases = [e["phase"] for e in events] self.assertIn("BOOT", phases) self.assertTrue(any(p in phases for p in ("PACK", "SESSION", "ERROR"))) if __name__ == "__main__": unittest.main()