import { describe, expect, it, vi } from "vitest"; import { __decayTest } from "../implementation"; describe("Decay model selection", () => { const current = { provider: "current", id: "model", maxTokens: 8_000 }; const configured = { provider: "chosen", id: "model", maxTokens: 4_000 }; const ctx = { model: current, modelRegistry: { getAvailable: vi.fn(() => [configured]), }, } as never; it("uses current model only for null or omitted configuration", () => { expect(__decayTest.resolveModel(ctx, undefined)).toBe(current); expect(__decayTest.resolveModel(ctx, null)).toBe(current); expect(__decayTest.resolveModel(ctx, "")).toBeUndefined(); }); it("falls back to current when an explicit model is unavailable", () => { expect(__decayTest.resolveModel(ctx, "chosen/model")).toBe(configured); expect(__decayTest.resolveModel(ctx, "missing/model")).toBe(current); expect(__decayTest.resolveModel(ctx, "broken")).toBeUndefined(); }); it("caps output at 80% reserve and model maximum", () => { expect(__decayTest.maximumOutputTokens(current as never, 10_000)).toBe( 8_000, ); expect(__decayTest.maximumOutputTokens(configured as never, 10_000)).toBe( 4_000, ); }); it("bounds and redacts persisted failure reasons", () => { const diagnostic = __decayTest.boundedError( new Error( `Bearer sk-live api-key=topsecret password=hunter2 ${"x".repeat(300)}`, ), ); expect(diagnostic).not.toContain("sk-live"); expect(diagnostic).not.toContain("topsecret"); expect(diagnostic).not.toContain("hunter2"); expect(diagnostic.length).toBeLessThanOrEqual(240); }); });