mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 07:50:42 +00:00
test: isolate compact hook runtime plan
This commit is contained in:
@@ -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,
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user