test_trace_cognition_store.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from __future__ import annotations
  2. import json
  3. import pytest
  4. from agent.trace.models import Trace
  5. from agent.trace.store import FileSystemTraceStore
  6. @pytest.mark.asyncio
  7. async def test_cognition_facade_preserves_new_event_flow(tmp_path) -> None:
  8. store = FileSystemTraceStore(str(tmp_path))
  9. await store.create_trace(Trace(trace_id="trace-new", mode="agent"))
  10. await store.append_cognition_event(
  11. "trace-new",
  12. {
  13. "type": "query",
  14. "sequence": 4,
  15. "goal_id": "goal-1",
  16. "source_ids": ["knowledge-1"],
  17. "sources": [
  18. {
  19. "id": "knowledge-1",
  20. "task": "task",
  21. "content": "content",
  22. }
  23. ],
  24. },
  25. )
  26. pending = await store.get_pending_knowledge_entries("trace-new")
  27. assert [item["knowledge_id"] for item in pending] == ["knowledge-1"]
  28. await store.update_knowledge_evaluation(
  29. "trace-new",
  30. "knowledge-1",
  31. {"eval_status": "helpful", "reason": "used"},
  32. "goal_complete",
  33. )
  34. assert await store.get_pending_knowledge_entries("trace-new") == []
  35. compatibility_log = await store.get_knowledge_log("trace-new")
  36. assert compatibility_log["entries"] is compatibility_log["events"]
  37. @pytest.mark.asyncio
  38. async def test_cognition_facade_preserves_legacy_log_update(tmp_path) -> None:
  39. store = FileSystemTraceStore(str(tmp_path))
  40. await store.create_trace(Trace(trace_id="trace-legacy", mode="agent"))
  41. legacy_file = tmp_path / "trace-legacy" / "knowledge_log.json"
  42. legacy_file.write_text(
  43. json.dumps(
  44. {
  45. "trace_id": "trace-legacy",
  46. "entries": [
  47. {
  48. "knowledge_id": "knowledge-legacy",
  49. "injected_at_sequence": 2,
  50. "eval_result": None,
  51. }
  52. ],
  53. }
  54. ),
  55. encoding="utf-8",
  56. )
  57. await store.update_knowledge_evaluation(
  58. "trace-legacy",
  59. "knowledge-legacy",
  60. {"eval_status": "unused", "reason": "not needed"},
  61. "goal_complete",
  62. )
  63. persisted = json.loads(legacy_file.read_text(encoding="utf-8"))
  64. assert persisted["entries"][0]["eval_result"]["eval_status"] == "unused"