mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 08:29:33 +00:00
refactor(reply): share verbose gate helpers
This commit is contained in:
@@ -11,54 +11,43 @@ const hasAudioMedia = (urls?: string[]): boolean =>
|
||||
export const isAudioPayload = (payload: ReplyPayload): boolean =>
|
||||
hasAudioMedia(payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : undefined));
|
||||
|
||||
export const createShouldEmitToolResult = (params: {
|
||||
type VerboseGateParams = {
|
||||
sessionKey?: string;
|
||||
storePath?: string;
|
||||
resolvedVerboseLevel: VerboseLevel;
|
||||
}): (() => boolean) => {
|
||||
// Normalize verbose values from session store/config so false/"false" still means off.
|
||||
const fallbackVerbose = normalizeVerboseLevel(String(params.resolvedVerboseLevel ?? "")) ?? "off";
|
||||
return () => {
|
||||
if (!params.sessionKey || !params.storePath) {
|
||||
return fallbackVerbose !== "off";
|
||||
}
|
||||
try {
|
||||
const store = loadSessionStore(params.storePath);
|
||||
const entry = store[params.sessionKey];
|
||||
const current = normalizeVerboseLevel(String(entry?.verboseLevel ?? ""));
|
||||
if (current) {
|
||||
return current !== "off";
|
||||
}
|
||||
} catch {
|
||||
// ignore store read failures
|
||||
}
|
||||
return fallbackVerbose !== "off";
|
||||
};
|
||||
};
|
||||
|
||||
export const createShouldEmitToolOutput = (params: {
|
||||
sessionKey?: string;
|
||||
storePath?: string;
|
||||
resolvedVerboseLevel: VerboseLevel;
|
||||
}): (() => boolean) => {
|
||||
function resolveCurrentVerboseLevel(params: VerboseGateParams): VerboseLevel | undefined {
|
||||
if (!params.sessionKey || !params.storePath) {
|
||||
return undefined;
|
||||
}
|
||||
try {
|
||||
const store = loadSessionStore(params.storePath);
|
||||
const entry = store[params.sessionKey];
|
||||
return normalizeVerboseLevel(String(entry?.verboseLevel ?? ""));
|
||||
} catch {
|
||||
// ignore store read failures
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function createVerboseGate(
|
||||
params: VerboseGateParams,
|
||||
shouldEmit: (level: VerboseLevel) => boolean,
|
||||
): () => boolean {
|
||||
// Normalize verbose values from session store/config so false/"false" still means off.
|
||||
const fallbackVerbose = normalizeVerboseLevel(String(params.resolvedVerboseLevel ?? "")) ?? "off";
|
||||
return () => {
|
||||
if (!params.sessionKey || !params.storePath) {
|
||||
return fallbackVerbose === "full";
|
||||
}
|
||||
try {
|
||||
const store = loadSessionStore(params.storePath);
|
||||
const entry = store[params.sessionKey];
|
||||
const current = normalizeVerboseLevel(String(entry?.verboseLevel ?? ""));
|
||||
if (current) {
|
||||
return current === "full";
|
||||
}
|
||||
} catch {
|
||||
// ignore store read failures
|
||||
}
|
||||
return fallbackVerbose === "full";
|
||||
return shouldEmit(resolveCurrentVerboseLevel(params) ?? fallbackVerbose);
|
||||
};
|
||||
}
|
||||
|
||||
export const createShouldEmitToolResult = (params: VerboseGateParams): (() => boolean) => {
|
||||
return createVerboseGate(params, (level) => level !== "off");
|
||||
};
|
||||
|
||||
export const createShouldEmitToolOutput = (params: VerboseGateParams): (() => boolean) => {
|
||||
return createVerboseGate(params, (level) => level === "full");
|
||||
};
|
||||
|
||||
export const finalizeWithFollowup = <T>(
|
||||
|
||||
Reference in New Issue
Block a user