okami.mom/albedo

git clone https://git.nkp.pet/okami.mom/albedo

nekomimi.petfeat: background cells, jobs page, and session list fixesf65a648

main
2.0 KiB55 linesraw
1"""The newest end of a long transcript is what a client sees first."""
2
3import json
4import unittest
5
6from harness import Albedo, Provider, python, text
7
8ROUNDS = 8
9
10
11class TranscriptTailTests(unittest.TestCase):
12    def setUp(self):
13        def script(request):
14            results = [m for m in request["messages"] if m.get("role") == "tool"]
15            if len(results) < ROUNDS:
16                return python(f"{len(results)}", reasoning=f"step {len(results)}")
17            return text("all rounds done")
18
19        self.provider = Provider(script)
20        self.addCleanup(self.provider.close)
21        self.app = Albedo(self.provider)
22        self.app.__enter__()
23        self.addCleanup(self.app.__exit__, None, None, None)
24
25    def read(self, path):
26        return json.loads(self.app.api(path).read())
27
28    def test_a_short_tail_ends_at_the_newest_entry_and_pages_back_whole(self):
29        session = self.app.session()
30        self.app.prompt(session, "run the rounds").close()
31        self.app.idle(session)
32        everything = self.read(f"/sessions/{session}/history?limit=200")
33        self.assertIsNone(everything["older"])
34        full = [entry["id"] for entry in everything["items"]]
35
36        # a thought and its tool call share a row, so ten rows hold more
37        # than ten entries; the page keeps the newest ones
38        tail = self.read(f"/sessions/{session}?tail=10")["history"]
39        shown = [entry["id"] for entry in tail["items"]]
40        self.assertTrue(shown and len(shown) <= 10, shown)
41        self.assertEqual(shown, full[-len(shown) :])
42        self.assertIsNone(tail["newer"])
43
44        # older pages continue from there without gaps or repeats
45        seen = shown
46        older = tail["older"]
47        while older is not None:
48            page = self.read(f"/sessions/{session}/history?limit=10&next={older}")
49            seen = [entry["id"] for entry in page["items"]] + seen
50            older = page["older"]
51        self.assertEqual(seen, full)
52
53
54if __name__ == "__main__":
55    unittest.main()