From b4e2ae9e7650d2686a4c8e9a4829ebd49c3af5f9 Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Mon, 7 Sep 2026 03:41:38 -0700 Subject: [PATCH] test(display): exercise real usage and usage-less provider controls --- agent/context_breakdown.py | 7 +++---- evals/token_accounting/display_provenance.py | 14 +++++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/agent/context_breakdown.py b/agent/context_breakdown.py index ed3999e25d..f0007132dd 100644 --- a/agent/context_breakdown.py +++ b/agent/context_breakdown.py @@ -1,9 +1,8 @@ """Live session context-window breakdown for UI surfaces. -Estimates how the next provider request is composed: system prompt tiers, -tool schemas, and conversation history. Uses the same rough char/4 heuristic -as ``agent.model_metadata.estimate_request_tokens_rough`` so numbers align -with compression thresholds — not exact tokenizer counts. +Estimates system prompt tiers, tool schemas, and conversation history for the +category breakdown. Overall occupancy retains its provider-usage or estimate +provenance; category estimates are not exact tokenizer counts or gate authority. """ from __future__ import annotations diff --git a/evals/token_accounting/display_provenance.py b/evals/token_accounting/display_provenance.py index d32cbe3682..391872b578 100644 --- a/evals/token_accounting/display_provenance.py +++ b/evals/token_accounting/display_provenance.py @@ -40,10 +40,13 @@ def child(out: Path) -> None: class ProviderFixture(BaseHTTPRequestHandler): def do_POST(self): request = json.loads(self.rfile.read(int(self.headers["Content-Length"]))) - (out / "provider-request.json").write_text(json.dumps(request, indent=2)) + request_file = "provider-request-unmetered.json" if getattr(self.server, "omit_usage", False) else "provider-request.json" + (out / request_file).write_text(json.dumps(request, indent=2)) response = {"id": "fixture", "object": "chat.completion", "created": 0, "model": "fixture", "choices": [{"index": 0, "finish_reason": "stop", "message": {"role": "assistant", "content": "fixture answer"}}], "usage": {"prompt_tokens": 1234, "completion_tokens": 20, "total_tokens": 1254}} + if getattr(self.server, "omit_usage", False): + response.pop("usage") body = json.dumps(response).encode() self.send_response(200) self.send_header("Content-Type", "application/json") @@ -88,6 +91,15 @@ def child(out: Path) -> None: print(asyncio.run(runner._handle_context_command(MessageEvent(text="/context", source=source, message_id="fixture"))), flush=True) results[scenario] = {"breakdown": compute_session_context_breakdown(agent, cli.conversation_history), "usage": usage} (out / "payloads.json").write_text(json.dumps(results, indent=2)) + server.omit_usage = True + unmetered = AIAgent(model="fixture", provider="openai-compat", api_key="fixture", base_url=base_url, enabled_toolsets=[], quiet_mode=True, skip_context_files=True, skip_memory=True, save_trajectories=False) + unmetered.context_compressor._config_context_length = 100_000 + unmetered.context_compressor._resolved_context_length = 100_000 + unmetered.context_compressor.maybe_seed_preflight_display_tokens(1234) + unmetered._disable_streaming = True + unmetered_result = unmetered.run_conversation("fixture without usage") + assert unmetered_result["completed"] + (out / "unmetered-result.json").write_text(json.dumps({"last_prompt_tokens": unmetered_result["last_prompt_tokens"]})) server.shutdown() server.server_close() print("DISPLAY_PROBE_COMPLETE", flush=True)