"""Read-only context inspection against actual model requests and catalog data.""" import json import unittest import urllib.error from urllib.parse import urlencode from harness import Albedo, Provider, exclusive, Reply, text SECRET = "credential-must-never-appear-in-inspector" CATALOG = { "fixture-cloud": { "id": "fixture-cloud", "name": "Fixture Cloud", "env": ["FIXTURE_API_KEY"], "api": "http://127.0.0.1/v1", "models": { "fixture": { "id": "fixture", "limit": {"context": 200000, "output": 8000}, "modalities": {"input": ["text"]}, } }, } } # exclusive: replaces the global models catalog and asserts catalog resolution @exclusive class ContextTest(unittest.TestCase): def setUp(self): def reply(request): if "without provider usage" in json.dumps(request): return Reply("text", "done", usage=None) return text("done", usage={"input_tokens": 20, "output_tokens": 1}) self.provider = Provider(reply, catalog=CATALOG) self.addCleanup(self.provider.close) def prepare(app): (app.home / "models.json").unlink(missing_ok=True) app.write_extensions( { "models": { "url": self.provider.url + "/models.json", "refreshHours": 24, } } ) self.app = Albedo( self.provider, protocol="responses", prepare=prepare, providers={ "fixture": { "baseUrl": self.provider.url + "/v1", "apiKey": SECRET, "model": "fixture", "protocol": "responses", }, }, ) self.app.__enter__() self.addCleanup(self.app.__exit__, None, None, None) self.session = self.app.session() self.route = f"/sessions/{self.session}/context" def read(self, route): with self.app.api(route) as response: return json.load(response) def turn(self, message): self.app.prompt(self.session, message).close() self.app.idle(self.session) def test_pending_inspection_is_read_only_and_snapshot_matches_request(self): pending = self.read(self.route) self.assertEqual(pending["state"], "pending") self.assertIsNone(pending["snapshot_id"]) self.assertEqual(set(pending["reason"]), {"code", "detail"}) self.assertEqual(pending["reason"]["code"], "context_pending") self.assertIsInstance(pending["reason"]["detail"], str) self.assertTrue(pending["reason"]["detail"].strip()) self.assertLessEqual(len(pending["reason"]["detail"]), 4096) self.assertEqual(self.provider.requests, []) self.turn("inspect exact composition") self.assertEqual(len(self.provider.requests), 1) sent = self.provider.requests[0]["request"] snapshot = self.read(self.route) self.assertEqual(snapshot["state"], "ready") self.assertIsNone(snapshot["reason"]) self.assertEqual( (snapshot["provider"], snapshot["model"]), ("fixture", "fixture") ) self.assertEqual(snapshot["context_window_tokens"], 200000) compaction = snapshot["compaction"] self.assertEqual(compaction["provider_input_tokens"], 20) self.assertIsNone(compaction["provider_cached_input_tokens"]) self.assertEqual( compaction["estimate_method"], "local byte-based estimate; not provider token usage", ) self.assertEqual(compaction["status"], "not_needed") self.assertEqual(compaction["input_limit_tokens"], 200000) self.assertEqual(compaction["trigger_free_percent"], 20) self.assertIn("fixture-cloud", compaction["source"]) self.assertIn("models.dev catalog", compaction["source"]) self.assertIn("