test: isolate compact hook runtime plan

This commit is contained in:
Shakker
2026-05-09 18:13:49 +01:00
parent 3117b6630d
commit c896ddbb20

View File

@@ -1,6 +1,7 @@
import { vi, type Mock } from "vitest";
import type { PluginMetadataSnapshot } from "../../plugins/plugin-metadata-snapshot.js";
import { clearAgentHarnesses } from "../harness/registry.js";
import type { AgentRuntimePlan, BuildAgentRuntimePlanParams } from "../runtime-plan/types.js";
import type { CompactionTranscriptRotation } from "./compaction-successor-transcript.js";
type MockResolvedModel = {
@@ -110,6 +111,75 @@ export const rotateTranscriptAfterCompactionMock: Mock<
rotated: false,
}));
function createCompactHooksRuntimePlan(params: BuildAgentRuntimePlanParams): AgentRuntimePlan {
const modelApi = params.modelApi ?? params.model?.api ?? undefined;
const transcriptPolicy = {
sanitizeMode: "full" as const,
sanitizeToolCallIds: false,
preserveNativeAnthropicToolUseIds: false,
repairToolUseResultPairing: false,
preserveSignatures: false,
sanitizeThinkingSignatures: false,
dropThinkingBlocks: false,
applyGoogleTurnOrdering: false,
validateGeminiTurns: false,
validateAnthropicTurns: false,
allowSyntheticToolResults: false,
};
return {
resolvedRef: {
provider: params.provider,
modelId: params.modelId,
...(modelApi ? { modelApi } : {}),
...(params.resolvedTransport ? { transport: params.resolvedTransport } : {}),
},
auth: {
providerForAuth: params.provider,
authProfileProviderForAuth: params.authProfileProvider ?? params.provider,
...(params.sessionAuthProfileId
? { forwardedAuthProfileId: params.sessionAuthProfileId }
: {}),
},
prompt: {
provider: params.provider,
modelId: params.modelId,
resolveSystemPromptContribution: vi.fn(() => undefined),
transformSystemPrompt: vi.fn((context: { systemPrompt: string }) => context.systemPrompt),
},
tools: {
preparedPlanning: {
loadMetadataSnapshot: () => ({}),
},
normalize: vi.fn((tools) => tools),
logDiagnostics: vi.fn(),
},
transcript: {
policy: transcriptPolicy,
resolvePolicy: vi.fn(() => transcriptPolicy),
},
delivery: {
isSilentPayload: vi.fn(() => false),
resolveFollowupRoute: vi.fn(() => undefined),
},
outcome: {
classifyRunResult: vi.fn(() => null),
},
transport: {
extraParams: {},
resolveExtraParams: vi.fn(() => ({})),
},
observability: {
resolvedRef: `${params.provider}/${params.modelId}`,
provider: params.provider,
modelId: params.modelId,
...(modelApi ? { modelApi } : {}),
...(params.sessionAuthProfileId ? { authProfileId: params.sessionAuthProfileId } : {}),
...(params.resolvedTransport ? { transport: params.resolvedTransport } : {}),
},
};
}
const emptyPluginMetadataSnapshot: PluginMetadataSnapshot = {
policyHash: "",
index: {
@@ -569,6 +639,12 @@ export async function loadCompactHooksHarness(): Promise<{
resolveMemorySearchConfig: resolveMemorySearchConfigMock,
}));
vi.doMock("../runtime-plan/build.js", () => ({
buildAgentRuntimePlan: vi.fn((params: BuildAgentRuntimePlanParams) =>
createCompactHooksRuntimePlan(params),
),
}));
vi.doMock("../../plugins/memory-runtime.js", () => ({
getActiveMemorySearchManager: getMemorySearchManagerMock,
}));