openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
96 lines (95 loc) • 4.46 kB
JavaScript
import { v as resolveSessionAgentId } from "./agent-scope-MrLta7Pq.js";
import { t as listAgentEntries } from "./agent-scope-config-CgCYpZfK.js";
import { c as resolveDefaultModelForAgent } from "./model-selection-CA_65iXi.js";
import { u as loadSessionEntry } from "./session-utils-CHNCuY8a.js";
import { t as resolveDefaultModel } from "./directive-handling.defaults-BnI754s0.js";
import { n as createModelSelectionState } from "./model-selection-DogVFfQv.js";
import { t as buildStatusReply } from "./commands-status-BypqrmkU.js";
import { t as resolveCurrentDirectiveLevels } from "./directive-handling.levels-CDp-Vcmr.js";
//#region src/plugin-sdk/command-status.runtime.ts
/**
* Builds a direct `/status` reply for an arbitrary session key.
* Unauthorized requesters may see the session exists, but configured reasoning
* state is masked so private agent/session defaults are not leaked.
*/
async function resolveDirectStatusReplyForSession(params) {
const requestedSessionKey = params.sessionKey.trim();
if (!requestedSessionKey) return;
const statusLoaded = loadSessionEntry(requestedSessionKey);
const statusCfg = statusLoaded.cfg ?? params.cfg;
const statusSessionKey = statusLoaded.canonicalKey;
const statusEntry = statusLoaded.entry;
const statusAgentId = resolveSessionAgentId({
sessionKey: statusSessionKey,
config: statusCfg
});
const agentCfg = statusCfg.agents?.defaults;
const agentEntry = listAgentEntries(statusCfg).find((entry) => entry.id?.trim().toLowerCase() === statusAgentId);
const statusModel = resolveDefaultModelForAgent({
cfg: statusCfg,
agentId: statusAgentId
});
const { defaultProvider, defaultModel } = resolveDefaultModel({
cfg: statusCfg,
agentId: statusAgentId
});
const selectedProvider = statusEntry?.providerOverride?.trim() || statusEntry?.modelProvider?.trim() || statusModel.provider;
const selectedModel = statusEntry?.modelOverride?.trim() || statusEntry?.model?.trim() || statusModel.model;
const modelState = await createModelSelectionState({
cfg: statusCfg,
agentId: statusAgentId,
agentCfg,
sessionEntry: statusEntry,
sessionStore: statusLoaded.store,
sessionKey: statusSessionKey,
parentSessionKey: statusEntry?.parentSessionKey,
storePath: statusLoaded.storePath,
defaultProvider,
defaultModel,
provider: selectedProvider,
model: selectedModel,
hasModelDirective: false
});
const { currentThinkLevel, currentFastMode, currentVerboseLevel, currentReasoningLevel, currentElevatedLevel } = await resolveCurrentDirectiveLevels({
sessionEntry: statusEntry,
agentEntry,
agentCfg,
resolveDefaultThinkingLevel: () => modelState.resolveDefaultThinkingLevel()
});
let resolvedReasoningLevel = currentReasoningLevel;
const hasAgentReasoningDefault = agentEntry?.reasoningDefault !== void 0 && agentEntry.reasoningDefault !== null || agentCfg?.reasoningDefault !== void 0 && agentCfg.reasoningDefault !== null;
const sessionReasoningExplicitlySet = statusEntry?.reasoningLevel !== void 0 && statusEntry.reasoningLevel !== null;
if (!(params.senderIsOwner || params.isAuthorizedSender) && (sessionReasoningExplicitlySet || hasAgentReasoningDefault)) resolvedReasoningLevel = "off";
if (!(sessionReasoningExplicitlySet || hasAgentReasoningDefault) && resolvedReasoningLevel === "off" && currentThinkLevel === "off") resolvedReasoningLevel = await modelState.resolveDefaultReasoningLevel();
return await buildStatusReply({
cfg: statusCfg,
command: {
surface: params.channel,
channel: params.channel,
ownerList: [],
senderIsOwner: params.senderIsOwner,
isAuthorizedSender: params.isAuthorizedSender,
senderId: params.senderId,
rawBodyNormalized: "/status",
commandBodyNormalized: "/status"
},
sessionEntry: statusEntry,
sessionKey: statusSessionKey,
parentSessionKey: statusEntry?.parentSessionKey,
sessionScope: statusCfg.session?.scope,
storePath: statusLoaded.storePath,
provider: selectedProvider,
model: selectedModel,
contextTokens: statusEntry?.contextTokens ?? 0,
resolvedThinkLevel: currentThinkLevel,
resolvedFastMode: currentFastMode,
resolvedVerboseLevel: currentVerboseLevel ?? "off",
resolvedReasoningLevel,
resolvedElevatedLevel: currentElevatedLevel,
resolveDefaultThinkingLevel: () => modelState.resolveDefaultThinkingLevel(),
isGroup: params.isGroup,
defaultGroupActivation: params.defaultGroupActivation
});
}
//#endregion
export { resolveDirectStatusReplyForSession };