UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

102 lines (101 loc) • 4.71 kB
import { n as listAgentEntries } from "./agent-roster-BXD1uMJD.mjs"; import { g as resolveSessionAgentId } from "./agent-scope-CG17uXFn.mjs"; import { t as resolveDefaultModelForAgent } from "./model-selection-config-BdeHEviO.mjs"; import "./model-selection-CC48fyGE.mjs"; import { i as loadGatewaySessionEntryReadOnly } from "./session-utils-store-BAlWJHht.mjs"; import "./session-utils-seGz8XhX.mjs"; import { t as resolveDefaultModel } from "./directive-handling.defaults-mC8m3Xql.mjs"; import { t as createModelSelectionState } from "./model-selection-B_lcJs0p.mjs"; import { n as buildStatusReply } from "./commands-status-CtO5uHB3.mjs"; import { t as resolveCurrentDirectiveLevels } from "./directive-handling.levels-DlrGb4QG.mjs"; //#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 resolveDirectStatusReplyForSessionCore(params) { const requestedSessionKey = params.sessionKey.trim(); if (!requestedSessionKey) return; const statusLoaded = loadGatewaySessionEntryReadOnly(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() }); const thinkingCatalog = await modelState.resolveThinkingCatalog(); 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(); const command = { surface: params.channel, channel: params.channel, ownerList: [], senderIsOwner: params.senderIsOwner, isAuthorizedSender: params.isAuthorizedSender, senderId: params.senderId, rawBodyNormalized: "/status", commandBodyNormalized: "/status" }; return await buildStatusReply({ cfg: statusCfg, agentId: statusAgentId, command, sessionEntry: statusEntry, sessionKey: statusSessionKey, parentSessionKey: statusEntry?.parentSessionKey, sessionScope: statusCfg.session?.scope, storePath: statusLoaded.storePath, provider: selectedProvider, model: selectedModel, contextTokens: statusEntry?.contextTokens ?? 0, thinkingCatalog, resolvedThinkLevel: currentThinkLevel, resolvedFastMode: currentFastMode, resolvedVerboseLevel: currentVerboseLevel ?? "off", resolvedReasoningLevel, resolvedElevatedLevel: currentElevatedLevel, resolveDefaultThinkingLevel: () => modelState.resolveDefaultThinkingLevel(), isGroup: params.isGroup, defaultGroupActivation: params.defaultGroupActivation }); } //#endregion export { resolveDirectStatusReplyForSessionCore };