From dfe2e818298f55a2dd32a1ec30011485eba9cd98 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 19 Apr 2026 04:40:22 +0100 Subject: [PATCH] refactor: share provider replay hook params --- .../pi-embedded-runner/replay-history.ts | 83 +++++++++++-------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/src/agents/pi-embedded-runner/replay-history.ts b/src/agents/pi-embedded-runner/replay-history.ts index a96541ce92c..20f943231c3 100644 --- a/src/agents/pi-embedded-runner/replay-history.ts +++ b/src/agents/pi-embedded-runner/replay-history.ts @@ -52,6 +52,37 @@ type ModelSnapshotEntry = { modelId?: string; }; +type ProviderReplayHookParams = { + config?: OpenClawConfig; + workspaceDir?: string; + env?: NodeJS.ProcessEnv; + provider: string; + modelId?: string; + modelApi?: string | null; + model?: ProviderRuntimeModel; + sessionId?: string; +}; + +function createProviderReplayPluginParams(params: ProviderReplayHookParams) { + const context = { + config: params.config, + workspaceDir: params.workspaceDir, + env: params.env, + provider: params.provider, + modelId: params.modelId, + modelApi: params.modelApi, + model: params.model, + sessionId: params.sessionId, + }; + return { + provider: params.provider, + config: params.config, + workspaceDir: params.workspaceDir, + env: params.env, + context, + }; +} + function buildInterSessionPrefix(message: AgentMessage): string { const provenance = normalizeInputProvenance((message as { provenance?: unknown }).provenance); if (!provenance) { @@ -476,28 +507,21 @@ export async function sanitizeSessionHistory(params: { }) : false; const provider = params.provider?.trim(); - const providerSanitized = - provider && provider.length > 0 - ? await sanitizeProviderReplayHistoryWithPlugin({ - provider, - config: params.config, - workspaceDir: params.workspaceDir, - env: params.env, - context: { - config: params.config, - workspaceDir: params.workspaceDir, - env: params.env, - provider, - modelId: params.modelId, - modelApi: params.modelApi, - model: params.model, - sessionId: params.sessionId, - messages: sanitizedCompactionUsage, - allowedToolNames: params.allowedToolNames, - sessionState: createProviderReplaySessionState(params.sessionManager), - }, - }) - : undefined; + let providerSanitized: AgentMessage[] | undefined; + if (provider && provider.length > 0) { + const pluginParams = createProviderReplayPluginParams({ ...params, provider }); + const providerResult = await sanitizeProviderReplayHistoryWithPlugin({ + ...pluginParams, + context: { + ...pluginParams.context, + sessionId: params.sessionId ?? "", + messages: sanitizedCompactionUsage, + allowedToolNames: params.allowedToolNames, + sessionState: createProviderReplaySessionState(params.sessionManager), + }, + }); + providerSanitized = providerResult ?? undefined; + } const sanitizedWithProvider = providerSanitized ?? sanitizedCompactionUsage; if (hasSnapshot && (!priorSnapshot || modelChanged)) { @@ -551,20 +575,11 @@ export async function validateReplayTurns(params: { }); const provider = params.provider?.trim(); if (provider) { + const pluginParams = createProviderReplayPluginParams({ ...params, provider }); const providerValidated = await validateProviderReplayTurnsWithPlugin({ - provider, - config: params.config, - workspaceDir: params.workspaceDir, - env: params.env, + ...pluginParams, context: { - config: params.config, - workspaceDir: params.workspaceDir, - env: params.env, - provider, - modelId: params.modelId, - modelApi: params.modelApi, - model: params.model, - sessionId: params.sessionId, + ...pluginParams.context, messages: params.messages, }, });