mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 01:11:23 +00:00
refactor(reply): share embedded run fallback/context builders
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import { resolveAgentModelFallbacksOverride } from "../../agents/agent-scope.js";
|
||||
import type { NormalizedUsage } from "../../agents/usage.js";
|
||||
import { getChannelDock } from "../../channels/dock.js";
|
||||
import type { ChannelId, ChannelThreadingToolContext } from "../../channels/plugins/types.js";
|
||||
import { normalizeAnyChannelId, normalizeChannelId } from "../../channels/registry.js";
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
import { resolveAgentIdFromSessionKey } from "../../config/sessions.js";
|
||||
import { isReasoningTagProvider } from "../../utils/provider-utils.js";
|
||||
import { estimateUsageCost, formatTokenCount, formatUsd } from "../../utils/usage-format.js";
|
||||
import type { TemplateContext } from "../templating.js";
|
||||
@@ -135,6 +137,47 @@ export const appendUsageLine = (payloads: ReplyPayload[], line: string): ReplyPa
|
||||
export const resolveEnforceFinalTag = (run: FollowupRun["run"], provider: string) =>
|
||||
Boolean(run.enforceFinalTag || isReasoningTagProvider(provider));
|
||||
|
||||
export function resolveModelFallbackOptions(run: FollowupRun["run"]) {
|
||||
return {
|
||||
cfg: run.config,
|
||||
provider: run.provider,
|
||||
model: run.model,
|
||||
agentDir: run.agentDir,
|
||||
fallbacksOverride: resolveAgentModelFallbacksOverride(
|
||||
run.config,
|
||||
resolveAgentIdFromSessionKey(run.sessionKey),
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
export function buildEmbeddedRunBaseParams(params: {
|
||||
run: FollowupRun["run"];
|
||||
provider: string;
|
||||
model: string;
|
||||
runId: string;
|
||||
authProfile: ReturnType<typeof resolveProviderScopedAuthProfile>;
|
||||
}) {
|
||||
return {
|
||||
sessionFile: params.run.sessionFile,
|
||||
workspaceDir: params.run.workspaceDir,
|
||||
agentDir: params.run.agentDir,
|
||||
config: params.run.config,
|
||||
skillsSnapshot: params.run.skillsSnapshot,
|
||||
ownerNumbers: params.run.ownerNumbers,
|
||||
enforceFinalTag: resolveEnforceFinalTag(params.run, params.provider),
|
||||
provider: params.provider,
|
||||
model: params.model,
|
||||
...params.authProfile,
|
||||
thinkLevel: params.run.thinkLevel,
|
||||
verboseLevel: params.run.verboseLevel,
|
||||
reasoningLevel: params.run.reasoningLevel,
|
||||
execOverrides: params.run.execOverrides,
|
||||
bashElevated: params.run.bashElevated,
|
||||
timeoutMs: params.run.timeoutMs,
|
||||
runId: params.runId,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildEmbeddedContextFromTemplate(params: {
|
||||
run: FollowupRun["run"];
|
||||
sessionCtx: TemplateContext;
|
||||
@@ -175,6 +218,23 @@ export function resolveRunAuthProfile(run: FollowupRun["run"], provider: string)
|
||||
});
|
||||
}
|
||||
|
||||
export function buildEmbeddedRunContexts(params: {
|
||||
run: FollowupRun["run"];
|
||||
sessionCtx: TemplateContext;
|
||||
hasRepliedRef: { value: boolean } | undefined;
|
||||
provider: string;
|
||||
}) {
|
||||
return {
|
||||
authProfile: resolveRunAuthProfile(params.run, params.provider),
|
||||
embeddedContext: buildEmbeddedContextFromTemplate({
|
||||
run: params.run,
|
||||
sessionCtx: params.sessionCtx,
|
||||
hasRepliedRef: params.hasRepliedRef,
|
||||
}),
|
||||
senderContext: buildTemplateSenderContext(params.sessionCtx),
|
||||
};
|
||||
}
|
||||
|
||||
export function resolveProviderScopedAuthProfile(params: {
|
||||
provider: string;
|
||||
primaryProvider: string;
|
||||
|
||||
Reference in New Issue
Block a user