Spaces:
Running
Running
| """MemoryAgent and retrieval tests.""" | |
| import os | |
| from server.memory import LessonRetriever, MemoryAgent | |
| from server.memory.lesson_schema import parse_lessons_md | |
| def test_memory_agent_creates_lesson(tmp_path): | |
| lessons_path = str(tmp_path / "lessons.md") | |
| agent = MemoryAgent(lessons_path=lessons_path) | |
| written = agent.update( | |
| episode_id="ep_0001", | |
| score=0.85, | |
| n_steps=8, | |
| action_log=[ | |
| {"command": "dispatch_diff", "rationale": "first"}, | |
| {"command": "dispatch_patch", "rationale": "patch ch_001"}, | |
| {"command": "dispatch_test", "rationale": "test"}, | |
| {"command": "dispatch_rollback", "rationale": "rb"}, | |
| {"command": "submit", "rationale": "submit"}, | |
| ], | |
| dominant_change_type="auth_scheme_changed", | |
| component_rewards={"backward_compat_preservation": 0.9}, | |
| ) | |
| assert written is not None | |
| assert os.path.exists(lessons_path) | |
| with open(lessons_path, "r", encoding="utf-8") as f: | |
| text = f.read() | |
| lessons = parse_lessons_md(text) | |
| assert len(lessons) >= 1 | |
| def test_memory_agent_skips_low_score(tmp_path): | |
| lessons_path = str(tmp_path / "lessons.md") | |
| agent = MemoryAgent(lessons_path=lessons_path) | |
| written = agent.update( | |
| episode_id="ep_0002", | |
| score=0.20, | |
| n_steps=12, | |
| action_log=[], | |
| dominant_change_type="field_renamed", | |
| component_rewards={}, | |
| ) | |
| assert written is None | |
| def test_retriever_returns_relevant(tmp_path): | |
| lessons_path = str(tmp_path / "lessons.md") | |
| agent = MemoryAgent(lessons_path=lessons_path) | |
| agent.update( | |
| episode_id="ep_0001", score=0.9, n_steps=6, | |
| action_log=[{"command": "dispatch_diff"}, {"command": "submit"}], | |
| dominant_change_type="auth_scheme_changed", | |
| component_rewards={}, | |
| ) | |
| retr = LessonRetriever(lessons_path=lessons_path) | |
| hits = retr.retrieve("github authentication scheme bearer change") | |
| assert isinstance(hits, list) | |