mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-18 23:37:26 +00:00
refactor(auto-reply): share directive level resolution
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import type { ReplyPayload } from "../types.js";
|
||||
import type { ApplyInlineDirectivesFastLaneParams } from "./directive-handling.params.js";
|
||||
import type { ElevatedLevel, ReasoningLevel, ThinkLevel, VerboseLevel } from "./directives.js";
|
||||
import { handleDirectiveOnly } from "./directive-handling.impl.js";
|
||||
import { resolveCurrentDirectiveLevels } from "./directive-handling.levels.js";
|
||||
import { isDirectiveOnly } from "./directive-handling.parse.js";
|
||||
|
||||
export async function applyInlineDirectivesFastLane(
|
||||
@@ -48,19 +48,12 @@ export async function applyInlineDirectivesFastLane(
|
||||
}
|
||||
|
||||
const agentCfg = params.agentCfg;
|
||||
const resolvedDefaultThinkLevel =
|
||||
(sessionEntry?.thinkingLevel as ThinkLevel | undefined) ??
|
||||
(agentCfg?.thinkingDefault as ThinkLevel | undefined) ??
|
||||
(await modelState.resolveDefaultThinkingLevel());
|
||||
const currentThinkLevel = resolvedDefaultThinkLevel;
|
||||
const currentVerboseLevel =
|
||||
(sessionEntry?.verboseLevel as VerboseLevel | undefined) ??
|
||||
(agentCfg?.verboseDefault as VerboseLevel | undefined);
|
||||
const currentReasoningLevel =
|
||||
(sessionEntry?.reasoningLevel as ReasoningLevel | undefined) ?? "off";
|
||||
const currentElevatedLevel =
|
||||
(sessionEntry?.elevatedLevel as ElevatedLevel | undefined) ??
|
||||
(agentCfg?.elevatedDefault as ElevatedLevel | undefined);
|
||||
const { currentThinkLevel, currentVerboseLevel, currentReasoningLevel, currentElevatedLevel } =
|
||||
await resolveCurrentDirectiveLevels({
|
||||
sessionEntry,
|
||||
agentCfg,
|
||||
resolveDefaultThinkingLevel: () => modelState.resolveDefaultThinkingLevel(),
|
||||
});
|
||||
|
||||
const directiveAck = await handleDirectiveOnly({
|
||||
cfg,
|
||||
|
||||
41
src/auto-reply/reply/directive-handling.levels.ts
Normal file
41
src/auto-reply/reply/directive-handling.levels.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import type { ElevatedLevel, ReasoningLevel, ThinkLevel, VerboseLevel } from "../thinking.js";
|
||||
|
||||
export async function resolveCurrentDirectiveLevels(params: {
|
||||
sessionEntry?: {
|
||||
thinkingLevel?: unknown;
|
||||
verboseLevel?: unknown;
|
||||
reasoningLevel?: unknown;
|
||||
elevatedLevel?: unknown;
|
||||
};
|
||||
agentCfg?: {
|
||||
thinkingDefault?: unknown;
|
||||
verboseDefault?: unknown;
|
||||
elevatedDefault?: unknown;
|
||||
};
|
||||
resolveDefaultThinkingLevel: () => Promise<ThinkLevel | undefined>;
|
||||
}): Promise<{
|
||||
currentThinkLevel: ThinkLevel | undefined;
|
||||
currentVerboseLevel: VerboseLevel | undefined;
|
||||
currentReasoningLevel: ReasoningLevel;
|
||||
currentElevatedLevel: ElevatedLevel | undefined;
|
||||
}> {
|
||||
const resolvedDefaultThinkLevel =
|
||||
(params.sessionEntry?.thinkingLevel as ThinkLevel | undefined) ??
|
||||
(params.agentCfg?.thinkingDefault as ThinkLevel | undefined) ??
|
||||
(await params.resolveDefaultThinkingLevel());
|
||||
const currentThinkLevel = resolvedDefaultThinkLevel;
|
||||
const currentVerboseLevel =
|
||||
(params.sessionEntry?.verboseLevel as VerboseLevel | undefined) ??
|
||||
(params.agentCfg?.verboseDefault as VerboseLevel | undefined);
|
||||
const currentReasoningLevel =
|
||||
(params.sessionEntry?.reasoningLevel as ReasoningLevel | undefined) ?? "off";
|
||||
const currentElevatedLevel =
|
||||
(params.sessionEntry?.elevatedLevel as ElevatedLevel | undefined) ??
|
||||
(params.agentCfg?.elevatedDefault as ElevatedLevel | undefined);
|
||||
return {
|
||||
currentThinkLevel,
|
||||
currentVerboseLevel,
|
||||
currentReasoningLevel,
|
||||
currentElevatedLevel,
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
import type { SessionEntry } from "../../config/sessions.js";
|
||||
import type { MsgContext } from "../templating.js";
|
||||
import type { ElevatedLevel, ReasoningLevel, ThinkLevel, VerboseLevel } from "../thinking.js";
|
||||
import type { ElevatedLevel } from "../thinking.js";
|
||||
import type { ReplyPayload } from "../types.js";
|
||||
import type { createModelSelectionState } from "./model-selection.js";
|
||||
import type { TypingController } from "./typing.js";
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
isDirectiveOnly,
|
||||
persistInlineDirectives,
|
||||
} from "./directive-handling.js";
|
||||
import { resolveCurrentDirectiveLevels } from "./directive-handling.levels.js";
|
||||
import { clearInlineDirectives } from "./get-reply-directives-utils.js";
|
||||
|
||||
type AgentDefaults = NonNullable<OpenClawConfig["agents"]>["defaults"];
|
||||
@@ -122,19 +123,17 @@ export async function applyInlineDirectiveOverrides(params: {
|
||||
typing.cleanup();
|
||||
return { kind: "reply", reply: undefined };
|
||||
}
|
||||
const resolvedDefaultThinkLevel =
|
||||
(sessionEntry?.thinkingLevel as ThinkLevel | undefined) ??
|
||||
(agentCfg?.thinkingDefault as ThinkLevel | undefined) ??
|
||||
(await modelState.resolveDefaultThinkingLevel());
|
||||
const {
|
||||
currentThinkLevel: resolvedDefaultThinkLevel,
|
||||
currentVerboseLevel,
|
||||
currentReasoningLevel,
|
||||
currentElevatedLevel,
|
||||
} = await resolveCurrentDirectiveLevels({
|
||||
sessionEntry,
|
||||
agentCfg,
|
||||
resolveDefaultThinkingLevel: () => modelState.resolveDefaultThinkingLevel(),
|
||||
});
|
||||
const currentThinkLevel = resolvedDefaultThinkLevel;
|
||||
const currentVerboseLevel =
|
||||
(sessionEntry?.verboseLevel as VerboseLevel | undefined) ??
|
||||
(agentCfg?.verboseDefault as VerboseLevel | undefined);
|
||||
const currentReasoningLevel =
|
||||
(sessionEntry?.reasoningLevel as ReasoningLevel | undefined) ?? "off";
|
||||
const currentElevatedLevel =
|
||||
(sessionEntry?.elevatedLevel as ElevatedLevel | undefined) ??
|
||||
(agentCfg?.elevatedDefault as ElevatedLevel | undefined);
|
||||
const directiveReply = await handleDirectiveOnly({
|
||||
cfg,
|
||||
directives,
|
||||
|
||||
Reference in New Issue
Block a user