import type { AgentState, VersionRecord } from './types'; export const isActiveVersion = ( version: VersionRecord, currentAgent: AgentState, versions: VersionRecord[], ): boolean => { if (!versions || versions.length === 0) { return false; } if (!currentAgent) { const versionIndex = versions.findIndex( (v) => v.name === version.name && v.instructions === version.instructions && v.artifacts === version.artifacts, ); return versionIndex === 0; } const matchesName = version.name === currentAgent.name; const matchesDescription = version.description === currentAgent.description; const matchesInstructions = version.instructions === currentAgent.instructions; const matchesArtifacts = version.artifacts === currentAgent.artifacts; const toolsMatch = () => { if (!version.tools && !currentAgent.tools) return true; if (!version.tools || !currentAgent.tools) return false; if (version.tools.length !== currentAgent.tools.length) return false; const sortedVersionTools = [...version.tools].sort(); const sortedCurrentTools = [...currentAgent.tools].sort(); return sortedVersionTools.every((tool, i) => tool === sortedCurrentTools[i]); }; const capabilitiesMatch = () => { if (!version.capabilities && !currentAgent.capabilities) return true; if (!version.capabilities || !currentAgent.capabilities) return false; if (version.capabilities.length !== currentAgent.capabilities.length) return false; const sortedVersionCapabilities = [...version.capabilities].sort(); const sortedCurrentCapabilities = [...currentAgent.capabilities].sort(); return sortedVersionCapabilities.every( (capability, i) => capability === sortedCurrentCapabilities[i], ); }; return ( matchesName && matchesDescription && matchesInstructions && matchesArtifacts && toolsMatch() && capabilitiesMatch() ); };