mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 10:00:21 +00:00
94 lines
2.3 KiB
TypeScript
94 lines
2.3 KiB
TypeScript
import type { ReplyPayload } from "../types.js";
|
|
import { handleDirectiveOnly } from "./directive-handling.impl.js";
|
|
import { resolveCurrentDirectiveLevels } from "./directive-handling.levels.js";
|
|
import type { ApplyInlineDirectivesFastLaneParams } from "./directive-handling.params.js";
|
|
import { isDirectiveOnly } from "./directive-handling.parse.js";
|
|
|
|
export async function applyInlineDirectivesFastLane(
|
|
params: ApplyInlineDirectivesFastLaneParams,
|
|
): Promise<{ directiveAck?: ReplyPayload; provider: string; model: string }> {
|
|
const {
|
|
directives,
|
|
commandAuthorized,
|
|
ctx,
|
|
cfg,
|
|
agentId,
|
|
isGroup,
|
|
sessionEntry,
|
|
sessionStore,
|
|
sessionKey,
|
|
storePath,
|
|
elevatedEnabled,
|
|
elevatedAllowed,
|
|
elevatedFailures,
|
|
messageProviderKey,
|
|
defaultProvider,
|
|
defaultModel,
|
|
aliasIndex,
|
|
allowedModelKeys,
|
|
allowedModelCatalog,
|
|
resetModelOverride,
|
|
formatModelSwitchEvent,
|
|
modelState,
|
|
} = params;
|
|
|
|
let { provider, model } = params;
|
|
if (
|
|
!commandAuthorized ||
|
|
isDirectiveOnly({
|
|
directives,
|
|
cleanedBody: directives.cleaned,
|
|
ctx,
|
|
cfg,
|
|
agentId,
|
|
isGroup,
|
|
})
|
|
) {
|
|
return { directiveAck: undefined, provider, model };
|
|
}
|
|
|
|
const agentCfg = params.agentCfg;
|
|
const { currentThinkLevel, currentVerboseLevel, currentReasoningLevel, currentElevatedLevel } =
|
|
await resolveCurrentDirectiveLevels({
|
|
sessionEntry,
|
|
agentCfg,
|
|
resolveDefaultThinkingLevel: () => modelState.resolveDefaultThinkingLevel(),
|
|
});
|
|
|
|
const directiveAck = await handleDirectiveOnly({
|
|
cfg,
|
|
directives,
|
|
sessionEntry,
|
|
sessionStore,
|
|
sessionKey,
|
|
storePath,
|
|
elevatedEnabled,
|
|
elevatedAllowed,
|
|
elevatedFailures,
|
|
messageProviderKey,
|
|
defaultProvider,
|
|
defaultModel,
|
|
aliasIndex,
|
|
allowedModelKeys,
|
|
allowedModelCatalog,
|
|
resetModelOverride,
|
|
provider,
|
|
model,
|
|
initialModelLabel: params.initialModelLabel,
|
|
formatModelSwitchEvent,
|
|
currentThinkLevel,
|
|
currentVerboseLevel,
|
|
currentReasoningLevel,
|
|
currentElevatedLevel,
|
|
});
|
|
|
|
if (sessionEntry?.providerOverride) {
|
|
provider = sessionEntry.providerOverride;
|
|
}
|
|
if (sessionEntry?.modelOverride) {
|
|
model = sessionEntry.modelOverride;
|
|
}
|
|
|
|
return { directiveAck, provider, model };
|
|
}
|