UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

49 lines (48 loc) 1.82 kB
import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js"; import { S as toAgentEntriesRecord, i as listAgentEntries, m as resolveAgentWorkspaceDir } from "./agent-scope-config-DcbEhP0R.js"; import "./session-key-BnWWjqNc.js"; //#region src/config/agent-workspace-roster-transition.ts function pinSurvivorWorkspaceForRosterCollapse(sourceConfig, targetConfig, env = process.env) { const sourceEntries = listAgentEntries(sourceConfig); const targetEntries = listAgentEntries(targetConfig); if (sourceEntries.length <= 1 || targetEntries.length !== 1) return { config: targetConfig, insertedPaths: [] }; const survivorId = normalizeAgentId(targetEntries[0].id); if (!sourceEntries.some((entry) => normalizeAgentId(entry.id) === survivorId)) return { config: targetConfig, insertedPaths: [] }; const targetAgents = targetConfig.agents ?? {}; const entries = targetAgents.entries ? { ...targetAgents.entries } : toAgentEntriesRecord(targetEntries); const entryKey = Object.keys(entries).find((candidate) => normalizeAgentId(candidate) === survivorId); const entry = entryKey ? entries[entryKey] : void 0; const workspaceNeedsPin = entry !== void 0 && (!Object.hasOwn(entry, "workspace") || typeof entry.workspace === "string" && entry.workspace.trim().length === 0); if (!entryKey || !entry || !workspaceNeedsPin) return { config: targetConfig, insertedPaths: [] }; entries[entryKey] = { ...entry, workspace: resolveAgentWorkspaceDir(sourceConfig, survivorId, env) }; const { list: _legacyList, ...canonicalAgents } = targetAgents; return { config: { ...targetConfig, agents: { ...canonicalAgents, entries } }, insertedPaths: [[ "agents", "entries", entryKey, "workspace" ]] }; } //#endregion export { pinSurvivorWorkspaceForRosterCollapse as t };