UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

149 lines (148 loc) 7.32 kB
import { m as shortenHomePath } from "./utils-P__uGsPB.js"; import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js"; import { D as tryResolveLegacyCompatibilityAgentId, S as toAgentEntriesRecord, b as resolveMutableAgentEntry, i as listAgentEntries, m as resolveAgentWorkspaceDir, u as resolveAgentDir, x as resolveSoleAgentId } from "./agent-scope-config-DcbEhP0R.js"; import "./session-key-BnWWjqNc.js"; import "./legacy.default-agent-owner-BGwEdQRe.js"; import { t as formatErrorMessage } from "./errors-Db3Ymjlb.js"; import { i as resolveAgentModelFallbackValues, n as normalizeAgentModelRefForConfig, s as toAgentModelListLike, t as normalizeAgentModelMapForConfig } from "./model-input-BuGMCNOz.js"; import { t as applyPrimaryModel } from "./provider-model-primary-CLkLxJfc.js"; import { r as ensureWorkspaceAndSessions } from "./onboard-helpers-BDY-6Z-t.js"; import { isDeepStrictEqual } from "node:util"; //#region src/commands/onboard-agent-target.ts function resolveOnboardingAgentTarget(config, explicitAgentId) { const agentId = normalizeAgentId(explicitAgentId ?? tryResolveLegacyCompatibilityAgentId(config) ?? resolveSoleAgentId(config)); return { agentId, agentDir: resolveAgentDir(config, agentId), workspaceDir: resolveAgentWorkspaceDir(config, agentId) }; } /** Resolve the configured System Agent as the owner of onboarding effects. */ function resolveSystemAgentOnboardingTarget(config) { return resolveOnboardingAgentTarget(config, config.agents?.defaults?.systemAgent?.agentId); } /** Resolve onboarding setup to its existing or pending first-agent owner. */ function resolveOnboardingSetupTarget(config, pendingAgent) { if (config.agents?.ownership === "explicit") return resolveSystemAgentOnboardingTarget(config); if (pendingAgent) return { ...resolveOnboardingAgentTarget(config, pendingAgent.name), workspaceDir: pendingAgent.workspaceDir }; return resolveOnboardingAgentTarget(config); } async function ensureOnboardingAgentWorkspace(target, runtime, options) { try { return await ensureWorkspaceAndSessions(target.workspaceDir, runtime, { ...options, agentId: target.agentId }); } catch (error) { throw new Error(`Workspace provisioning for agent "${target.agentId}" at ${shortenHomePath(target.workspaceDir)} failed: ${formatErrorMessage(error)}`, { cause: error }); } } function replaceOnboardingAgentEntry(config, updated, target, nextEntry) { const entries = listAgentEntries(config); const index = entries.findIndex((entry) => normalizeAgentId(entry.id) === target.agentId); const nextEntries = [...entries]; const replacement = { id: index >= 0 ? entries[index].id : target.agentId, ...nextEntry }; if (index >= 0) nextEntries[index] = replacement; else nextEntries.push(replacement); const { list: _list, entries: _entries, ...agents } = config.agents ?? {}; return { ...updated, agents: { ...agents, entries: toAgentEntriesRecord(nextEntries) } }; } function applyOnboardingWorkspace(config, target, workspace) { const entry = resolveMutableAgentEntry(config, target.agentId); if (entry?.workspace !== void 0 || config.agents?.ownership === "explicit" && entry) return replaceOnboardingAgentEntry(config, config, target, { ...entry, workspace }); return { ...config, agents: { ...config.agents, defaults: { ...config.agents?.defaults, workspace } } }; } function applyOnboardingPrimaryModel(config, target, model) { const entry = resolveMutableAgentEntry(config, target.agentId); if (entry?.model === void 0 && config.agents?.ownership !== "explicit") return applyPrimaryModel(config, model); const primary = normalizeAgentModelRefForConfig(model); const fallbackValues = resolveAgentModelFallbackValues(entry?.model).map((fallback) => normalizeAgentModelRefForConfig(fallback)); const models = normalizeAgentModelMapForConfig(entry?.models ?? {}); return replaceOnboardingAgentEntry(config, config, target, { ...entry, model: { ...fallbackValues.length > 0 ? { fallbacks: fallbackValues } : {}, primary }, models: { ...models, [primary]: models[primary] ?? {} } }); } /** Expose one agent's effective model settings through the defaults-based provider contract. */ function prepareAgentModelDefaults(config, target) { const entry = resolveMutableAgentEntry(config, target.agentId); return { ...config, agents: { ...config.agents, defaults: { ...config.agents?.defaults, ...entry?.model !== void 0 ? { model: entry.model } : {}, ...entry?.models !== void 0 ? { models: entry.models } : {}, ...entry?.modelPolicy !== void 0 ? { modelPolicy: entry.modelPolicy } : {} } } }; } /** Apply a model-default mutation to one agent without flattening it globally. */ function applyAgentModelDefaults(config, target, mutate) { return projectAgentModelDefaults(config, target, mutate(prepareAgentModelDefaults(config, target))); } /** Move a defaults-based model mutation onto one agent while preserving its other config changes. */ function projectAgentModelDefaults(config, target, updated) { const entry = resolveMutableAgentEntry(config, target.agentId); if (!entry && config.agents?.ownership !== "explicit") return updated; const updatedDefaults = updated.agents?.defaults; const originalDefaults = config.agents?.defaults; const agentModels = entry?.models !== void 0 ? updatedDefaults?.models : Object.fromEntries(Object.entries(updatedDefaults?.models ?? {}).filter(([modelRef, model]) => !Object.hasOwn(originalDefaults?.models ?? {}, modelRef) || !isDeepStrictEqual(model, originalDefaults?.models?.[modelRef]))); const hasAgentModel = entry?.model !== void 0 || !isDeepStrictEqual(toAgentModelListLike(updatedDefaults?.model), toAgentModelListLike(originalDefaults?.model)); const hasAgentModelPolicy = entry?.modelPolicy !== void 0 || !isDeepStrictEqual(updatedDefaults?.modelPolicy, originalDefaults?.modelPolicy); const { model: _model, models: _models, modelPolicy: _modelPolicy, ...entryRest } = entry ?? {}; const nextEntry = { ...entryRest, ...hasAgentModel && updatedDefaults?.model !== void 0 ? { model: updatedDefaults.model } : {}, ...agentModels && Object.keys(agentModels).length > 0 ? { models: agentModels } : {}, ...hasAgentModelPolicy && updatedDefaults?.modelPolicy !== void 0 ? { modelPolicy: updatedDefaults.modelPolicy } : {} }; const { model: _updatedModel, models: _updatedModels, modelPolicy: _updatedModelPolicy, ...sharedDefaults } = updatedDefaults ?? {}; return replaceOnboardingAgentEntry({ ...config, agents: { ...config.agents, ...originalDefaults || updatedDefaults ? { defaults: { ...sharedDefaults, ...originalDefaults?.model !== void 0 ? { model: originalDefaults.model } : {}, ...originalDefaults?.models !== void 0 ? { models: originalDefaults.models } : {}, ...originalDefaults?.modelPolicy !== void 0 ? { modelPolicy: originalDefaults.modelPolicy } : {} } } : {} } }, updated, target, nextEntry); } //#endregion export { prepareAgentModelDefaults as a, resolveOnboardingSetupTarget as c, ensureOnboardingAgentWorkspace as i, resolveSystemAgentOnboardingTarget as l, applyOnboardingPrimaryModel as n, projectAgentModelDefaults as o, applyOnboardingWorkspace as r, resolveOnboardingAgentTarget as s, applyAgentModelDefaults as t };