UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

108 lines (107 loc) • 5 kB
import { n as listAgentEntries } from "./agent-roster-DH6r_8f4.mjs"; import { h as resolveSessionAgentId } from "./agent-scope-bJOokm5r.mjs"; import { t as resolveDefaultModelForAgent } from "./model-selection-config-BC0CegJ7.mjs"; import { r as getRuntimeConfig } from "./io.runtime-B134MOMz.mjs"; import "./io-BGddrCVX.mjs"; import "./model-selection-Cpoq0B2R.mjs"; import { t as loadGatewaySessionEntryReadOnlyInWorker } from "./session-utils-store-worker-9uML4l0-.mjs"; import { t as resolveDefaultModel } from "./directive-handling.defaults-UaSwgrvK.mjs"; import { t as createModelSelectionState } from "./model-selection-DooXqHG0.mjs"; import { n as buildStatusReply } from "./commands-status-D7sWPuML.mjs"; import { t as resolveCurrentDirectiveLevels } from "./directive-handling.levels-CpsGHyQp.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 = await loadGatewaySessionEntryReadOnlyInWorker({ cfg: getRuntimeConfig(), key: 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 selectionEntry = statusEntry ? structuredClone(statusEntry) : void 0; const selectionStore = { ...statusLoaded.store }; if (selectionEntry) selectionStore[statusSessionKey] = selectionEntry; const modelState = await createModelSelectionState({ cfg: statusCfg, agentId: statusAgentId, agentCfg, sessionEntry: selectionEntry, sessionStore: selectionStore, sessionKey: statusSessionKey, parentSessionKey: statusEntry?.parentSessionKey, 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 };