refactor: share reply prefix context
This commit is contained in:
@@ -1,12 +1,4 @@
|
||||
import {
|
||||
resolveEffectiveMessagesConfig,
|
||||
resolveIdentityName,
|
||||
resolveIdentityNamePrefix,
|
||||
} from "../../../agents/identity.js";
|
||||
import {
|
||||
extractShortModelName,
|
||||
type ResponsePrefixContext,
|
||||
} from "../../../auto-reply/reply/response-prefix-template.js";
|
||||
import { resolveIdentityNamePrefix } from "../../../agents/identity.js";
|
||||
import { resolveTextChunkLimit } from "../../../auto-reply/chunk.js";
|
||||
import {
|
||||
formatInboundEnvelope,
|
||||
@@ -22,6 +14,7 @@ import type { ReplyPayload } from "../../../auto-reply/types.js";
|
||||
import { shouldComputeCommandAuthorized } from "../../../auto-reply/command-detection.js";
|
||||
import { finalizeInboundContext } from "../../../auto-reply/reply/inbound-context.js";
|
||||
import { toLocationContext } from "../../../channels/location.js";
|
||||
import { createReplyPrefixContext } from "../../../channels/reply-prefix.js";
|
||||
import type { loadConfig } from "../../../config/config.js";
|
||||
import {
|
||||
readSessionUpdatedAt,
|
||||
@@ -247,22 +240,20 @@ export async function processMessage(params: {
|
||||
? await resolveWhatsAppCommandAuthorized({ cfg: params.cfg, msg: params.msg })
|
||||
: undefined;
|
||||
const configuredResponsePrefix = params.cfg.messages?.responsePrefix;
|
||||
const resolvedMessages = resolveEffectiveMessagesConfig(params.cfg, params.route.agentId);
|
||||
const prefixContext = createReplyPrefixContext({
|
||||
cfg: params.cfg,
|
||||
agentId: params.route.agentId,
|
||||
});
|
||||
const isSelfChat =
|
||||
params.msg.chatType !== "group" &&
|
||||
Boolean(params.msg.selfE164) &&
|
||||
normalizeE164(params.msg.from) === normalizeE164(params.msg.selfE164 ?? "");
|
||||
const responsePrefix =
|
||||
resolvedMessages.responsePrefix ??
|
||||
prefixContext.responsePrefix ??
|
||||
(configuredResponsePrefix === undefined && isSelfChat
|
||||
? (resolveIdentityNamePrefix(params.cfg, params.route.agentId) ?? "[clawdbot]")
|
||||
: undefined);
|
||||
|
||||
// Create mutable context for response prefix template interpolation
|
||||
let prefixContext: ResponsePrefixContext = {
|
||||
identityName: resolveIdentityName(params.cfg, params.route.agentId),
|
||||
};
|
||||
|
||||
const ctxPayload = finalizeInboundContext({
|
||||
Body: combinedBody,
|
||||
RawBody: params.msg.body,
|
||||
@@ -334,7 +325,7 @@ export async function processMessage(params: {
|
||||
replyResolver: params.replyResolver,
|
||||
dispatcherOptions: {
|
||||
responsePrefix,
|
||||
responsePrefixContextProvider: () => prefixContext,
|
||||
responsePrefixContextProvider: prefixContext.responsePrefixContextProvider,
|
||||
onHeartbeatStrip: () => {
|
||||
if (!didLogHeartbeatStrip) {
|
||||
didLogHeartbeatStrip = true;
|
||||
@@ -393,13 +384,7 @@ export async function processMessage(params: {
|
||||
typeof params.cfg.channels?.whatsapp?.blockStreaming === "boolean"
|
||||
? !params.cfg.channels.whatsapp.blockStreaming
|
||||
: undefined,
|
||||
onModelSelected: (ctx) => {
|
||||
// Mutate the object directly instead of reassigning to ensure the closure sees updates
|
||||
prefixContext.provider = ctx.provider;
|
||||
prefixContext.model = extractShortModelName(ctx.model);
|
||||
prefixContext.modelFull = `${ctx.provider}/${ctx.model}`;
|
||||
prefixContext.thinkingLevel = ctx.thinkLevel ?? "off";
|
||||
},
|
||||
onModelSelected: prefixContext.onModelSelected,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user