- Bound ALL reads of the on-disk JWT store through one _read_jwt_store() helper (load, eviction, save-merge) — the 1 MiB cap previously only covered the load path; eviction and save could still parse an oversized/corrupt store and rewrite it back out (sweeper finding). - Fix the class, not the site: the recovery gates checked the literal provider == "copilot" while /model and profile configs can leave the alias spelling in place (the reporter's own log shows provider=copilot AND provider=github-copilot in one session — the aliased turns would have silently skipped recovery). Single owner: AIAgent._is_copilot_provider() (slug aliases + Copilot base-URL fallback), used by both run_agent recovery methods and both conversation_loop gates. - Update the salvaged 401 test to current main's client-retirement contract (release deferred to GC — no synchronous .close()). - Add copilot_stale_cred_retry_attempted to the TurnRetryState field contract test; add bounded-store and alias-gate regression tests.
2 lines
8 B
Plaintext
2 lines
8 B
Plaintext
dstkwll
|