import type { AgentManager } from "../agent-manager.js"; import { getAnimationStyle, getDashboardRefreshInterval, getOrchestrationMode, getPromptCompressionLevel, getUiStyle, isShowActivityStream, isShowAgentTopWidget, isShowTokenUsage, isShowTurnProgress, } from "../agent-registry.js"; import type { SettingsGetters, SubagentsSettings } from "../settings.js"; /** * Build a settings snapshot for persistence. */ export function buildSettingsSnapshot(manager: AgentManager, getters: SettingsGetters): SubagentsSettings { return { maxConcurrent: manager.getMaxConcurrent(), perAgentTokenLimit: manager.getPerAgentTokenLimit(), ...manager.getSessionLimits(), // 0 = unlimited — per SubagentsSettings.defaultMaxTurns docstring and // normalizeMaxTurns() in agent-runner.ts (which maps 0 → undefined). defaultMaxTurns: getters.getDefaultMaxTurns() ?? 0, graceTurns: getters.getGraceTurns(), maxEndHookRevisions: getters.getMaxEndHookRevisions(), defaultJoinMode: getters.getDefaultJoinMode(), schedulingEnabled: getters.isSchedulingEnabled(), animationStyle: getAnimationStyle(), uiStyle: getUiStyle(), orchestrationMode: getOrchestrationMode(), dashboardRefreshInterval: getDashboardRefreshInterval(), promptCompressionLevel: getPromptCompressionLevel(), showActivityStream: isShowActivityStream(), showTokenUsage: isShowTokenUsage(), showTurnProgress: isShowTurnProgress(), showAgentTopWidget: isShowAgentTopWidget(), }; }