diff --git a/tools/cli/installers/lib/core/installer.js b/tools/cli/installers/lib/core/installer.js index 186ab2a7..4124f5d8 100644 --- a/tools/cli/installers/lib/core/installer.js +++ b/tools/cli/installers/lib/core/installer.js @@ -2371,7 +2371,6 @@ class Installer { if (await fs.pathExists(manifestFile)) { const manifestData = extractManifestData(xml, { ...metadata, name: finalAgentName }, relativePath, 'custom'); manifestData.name = finalAgentName; - manifestData.displayName = metadata.name || finalAgentName; manifestData.path = relativePath; addToManifest(manifestFile, manifestData); } diff --git a/tools/cli/lib/agent/installer.js b/tools/cli/lib/agent/installer.js index be9a4a96..7e3b364d 100644 --- a/tools/cli/lib/agent/installer.js +++ b/tools/cli/lib/agent/installer.js @@ -677,6 +677,12 @@ function extractManifestData(xmlContent, metadata, agentPath, moduleName = 'cust return match[1].trim().replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ').trim(); }; + // Extract attributes from agent tag + const extractAgentAttribute = (attr) => { + const match = xmlContent.match(new RegExp(`]*\\s${attr}=["']([^"']+)["']`)); + return match ? match[1] : ''; + }; + const extractPrinciples = () => { const match = xmlContent.match(/([\s\S]*?)<\/principles>/); if (!match) return ''; @@ -689,11 +695,15 @@ function extractManifestData(xmlContent, metadata, agentPath, moduleName = 'cust return principles; }; + // Prioritize XML extraction over metadata for agent persona info + const xmlTitle = extractAgentAttribute('title') || extractTag('name'); + const xmlIcon = extractAgentAttribute('icon'); + return { name: metadata.id ? path.basename(metadata.id, '.md') : metadata.name.toLowerCase().replaceAll(/\s+/g, '-'), - displayName: metadata.name || '', - title: metadata.title || '', - icon: metadata.icon || '', + displayName: xmlTitle || metadata.name || '', + title: xmlTitle || metadata.title || '', + icon: xmlIcon || metadata.icon || '', role: extractTag('role'), identity: extractTag('identity'), communicationStyle: extractTag('communication_style'),