| import { describe, expect, it } from "vitest"; |
| import { loadConfig } from "./config.js"; |
| import { withTempHomeConfig } from "./test-helpers.js"; |
|
|
| describe("config compaction settings", () => { |
| it("preserves memory flush config values", async () => { |
| await withTempHomeConfig( |
| { |
| agents: { |
| defaults: { |
| compaction: { |
| mode: "safeguard", |
| reserveTokensFloor: 12_345, |
| identifierPolicy: "custom", |
| identifierInstructions: "Keep ticket IDs unchanged.", |
| qualityGuard: { |
| enabled: true, |
| maxRetries: 2, |
| }, |
| memoryFlush: { |
| enabled: false, |
| softThresholdTokens: 1234, |
| prompt: "Write notes.", |
| systemPrompt: "Flush memory now.", |
| }, |
| }, |
| }, |
| }, |
| }, |
| async () => { |
| const cfg = loadConfig(); |
|
|
| expect(cfg.agents?.defaults?.compaction?.reserveTokensFloor).toBe(12_345); |
| expect(cfg.agents?.defaults?.compaction?.mode).toBe("safeguard"); |
| expect(cfg.agents?.defaults?.compaction?.reserveTokens).toBeUndefined(); |
| expect(cfg.agents?.defaults?.compaction?.keepRecentTokens).toBeUndefined(); |
| expect(cfg.agents?.defaults?.compaction?.identifierPolicy).toBe("custom"); |
| expect(cfg.agents?.defaults?.compaction?.identifierInstructions).toBe( |
| "Keep ticket IDs unchanged.", |
| ); |
| expect(cfg.agents?.defaults?.compaction?.qualityGuard?.enabled).toBe(true); |
| expect(cfg.agents?.defaults?.compaction?.qualityGuard?.maxRetries).toBe(2); |
| expect(cfg.agents?.defaults?.compaction?.memoryFlush?.enabled).toBe(false); |
| expect(cfg.agents?.defaults?.compaction?.memoryFlush?.softThresholdTokens).toBe(1234); |
| expect(cfg.agents?.defaults?.compaction?.memoryFlush?.prompt).toBe("Write notes."); |
| expect(cfg.agents?.defaults?.compaction?.memoryFlush?.systemPrompt).toBe( |
| "Flush memory now.", |
| ); |
| }, |
| ); |
| }); |
|
|
| it("preserves pi compaction override values", async () => { |
| await withTempHomeConfig( |
| { |
| agents: { |
| defaults: { |
| compaction: { |
| reserveTokens: 15_000, |
| keepRecentTokens: 12_000, |
| }, |
| }, |
| }, |
| }, |
| async () => { |
| const cfg = loadConfig(); |
| expect(cfg.agents?.defaults?.compaction?.reserveTokens).toBe(15_000); |
| expect(cfg.agents?.defaults?.compaction?.keepRecentTokens).toBe(12_000); |
| }, |
| ); |
| }); |
|
|
| it("defaults compaction mode to safeguard", async () => { |
| await withTempHomeConfig( |
| { |
| agents: { |
| defaults: { |
| compaction: { |
| reserveTokensFloor: 9000, |
| }, |
| }, |
| }, |
| }, |
| async () => { |
| const cfg = loadConfig(); |
|
|
| expect(cfg.agents?.defaults?.compaction?.mode).toBe("safeguard"); |
| expect(cfg.agents?.defaults?.compaction?.reserveTokensFloor).toBe(9000); |
| }, |
| ); |
| }); |
|
|
| it("preserves recent turn safeguard values through loadConfig()", async () => { |
| await withTempHomeConfig( |
| { |
| agents: { |
| defaults: { |
| compaction: { |
| mode: "safeguard", |
| recentTurnsPreserve: 4, |
| }, |
| }, |
| }, |
| }, |
| async () => { |
| const cfg = loadConfig(); |
| expect(cfg.agents?.defaults?.compaction?.recentTurnsPreserve).toBe(4); |
| }, |
| ); |
| }); |
|
|
| it("preserves oversized quality guard retry values for runtime clamping", async () => { |
| await withTempHomeConfig( |
| { |
| agents: { |
| defaults: { |
| compaction: { |
| qualityGuard: { |
| maxRetries: 99, |
| }, |
| }, |
| }, |
| }, |
| }, |
| async () => { |
| const cfg = loadConfig(); |
| expect(cfg.agents?.defaults?.compaction?.qualityGuard?.maxRetries).toBe(99); |
| }, |
| ); |
| }); |
| }); |
|
|