mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 11:20:43 +00:00
refactor: share provider replay hook params
This commit is contained in:
@@ -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,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user