UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

147 lines (146 loc) 6 kB
import { t as sanitizeForLog } from "./ansi-BI9w76Cm.js"; import { i as formatErrorMessage } from "./errors-BXgSefBE.js"; import { i as resolveAgentModelPrimaryValue } from "./model-input-B2zxl6MM.js"; import "./agent-scope-MrLta7Pq.js"; import { a as resolveAgentDir, n as listAgentIds, o as resolveAgentWorkspaceDir, r as resolveAgentConfig } from "./agent-scope-config-CgCYpZfK.js"; import "./defaults-mDjiWzE5.js"; import { c as parseModelRef } from "./model-selection-normalize-roKDxQ9_.js"; import { n as extractModelCompat } from "./provider-model-compat-DhKi-Qv5.js"; import { i as getPluginToolMeta } from "./tools-oBw0X8xm.js"; import { t as createOpenClawCodingTools } from "./agent-tools-uBjiioJ8.js"; import { t as resolveModel } from "./model-Cp9whgWq.js"; import { n as filterRuntimeCompatibleTools } from "./tool-schema-projection-DRzFBr6V.js"; import { n as normalizeAgentRuntimeTools } from "./tools-C5Dgo3sN.js"; //#region src/commands/doctor/shared/active-tool-schema-warnings.ts function resolvePrimaryModelRef(cfg, agentModel) { return parseModelRef(resolveAgentModelPrimaryValue(agentModel) ?? resolveAgentModelPrimaryValue(cfg.agents?.defaults?.model) ?? "gpt-5.5", "openai", { allowPluginNormalization: false }) ?? { provider: "openai", model: "gpt-5.5" }; } function resolveRuntimeModelContext(params) { const model = resolveModel(params.provider, params.modelId, params.agentDir, params.cfg, { workspaceDir: params.workspaceDir }).model; if (!model) return {}; return { modelApi: model.api, model, modelCompat: extractModelCompat(model), ...typeof model.contextWindow === "number" ? { modelContextWindowTokens: model.contextWindow } : {} }; } function formatDiagnostic(params) { const plugin = params.pluginId ? ` from plugin "${params.pluginId}"` : ""; return sanitizeForLog(`- agents.${params.agentId}: active tool "${params.diagnostic.toolName}"${plugin} has unsupported runtime input schema (${params.diagnostic.violations.join(", ")}). OpenClaw will quarantine this tool at runtime; fix or disable the plugin, or remove the tool from active allowlists.`); } function buildReadableToolsByName(tools) { const toolsByName = /* @__PURE__ */ new Map(); let toolCount; try { toolCount = tools.length; } catch { return toolsByName; } for (let index = 0; index < toolCount; index += 1) try { const tool = tools[index]; toolsByName.set(tool.name, tool); } catch {} return toolsByName; } function readToolByIndex(tools, index) { try { return tools[index]; } catch { return; } } function readPluginId(tool) { try { return tool ? getPluginToolMeta(tool)?.pluginId : void 0; } catch { return; } } /** Collect per-agent warnings for active plugin tools rejected by runtime schema projection. */ function collectActiveToolSchemaProjectionWarnings(params) { if (params.cfg.plugins?.enabled === false) return []; const env = params.env ?? process.env; const warnings = []; for (const agentId of listAgentIds(params.cfg)) { const agentConfig = resolveAgentConfig(params.cfg, agentId); const modelRef = resolvePrimaryModelRef(params.cfg, agentConfig?.model); const agentDir = resolveAgentDir(params.cfg, agentId, env); const workspaceDir = resolveAgentWorkspaceDir(params.cfg, agentId, env); let runtimeModelContext = {}; try { runtimeModelContext = resolveRuntimeModelContext({ cfg: params.cfg, agentDir, workspaceDir, provider: modelRef.provider, modelId: modelRef.model }); } catch (error) { warnings.push(sanitizeForLog(`- agents.${agentId}: active tool schema validation could not resolve the runtime model context (${formatErrorMessage(error)}). Fix provider/model loading errors before relying on assistant tool startup.`)); } let tools; try { tools = createOpenClawCodingTools({ agentId, agentDir, workspaceDir, config: params.cfg, modelProvider: modelRef.provider, modelId: modelRef.model, modelApi: runtimeModelContext.modelApi, modelCompat: runtimeModelContext.modelCompat, modelContextWindowTokens: runtimeModelContext.modelContextWindowTokens, allowGatewaySubagentBinding: true, toolPolicyAuditLogLevel: "debug" }); } catch (error) { warnings.push(sanitizeForLog(`- agents.${agentId}: active tool schema validation could not load the runtime tool set (${formatErrorMessage(error)}). Fix plugin loading errors before relying on assistant tool startup.`)); continue; } const rawToolsByName = buildReadableToolsByName(tools); const preNormalizationDiagnostics = []; let normalizedTools; try { normalizedTools = normalizeAgentRuntimeTools({ tools, provider: modelRef.provider, config: params.cfg, workspaceDir, env, modelId: modelRef.model, modelApi: runtimeModelContext.modelApi, model: runtimeModelContext.model, onPreNormalizationSchemaDiagnostics: (diagnostics) => preNormalizationDiagnostics.push(...diagnostics) }); } catch (error) { warnings.push(sanitizeForLog(`- agents.${agentId}: active tool schema validation could not normalize the runtime tool set (${formatErrorMessage(error)}). Fix provider/plugin loading errors before relying on assistant tool startup.`)); continue; } for (const diagnostic of preNormalizationDiagnostics) { const pluginId = readPluginId(rawToolsByName.get(diagnostic.toolName)); warnings.push(formatDiagnostic({ agentId, diagnostic, ...pluginId ? { pluginId } : {} })); } const projection = filterRuntimeCompatibleTools(normalizedTools); for (const diagnostic of projection.diagnostics) { const tool = readToolByIndex(normalizedTools, diagnostic.toolIndex); const rawTool = rawToolsByName.get(diagnostic.toolName); const pluginId = readPluginId(tool) ?? readPluginId(rawTool); warnings.push(formatDiagnostic({ agentId, diagnostic, ...pluginId ? { pluginId } : {} })); } } return warnings; } //#endregion export { collectActiveToolSchemaProjectionWarnings as t };