mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-17 09:45:25 +00:00
fix: display proper persona names in custom agent manifests
## Problem Custom agents showed generic names (like "Commit Poet") instead of their actual persona names (like "Inkwell Von Comitizen") in the agent manifest. ## Root Cause The extractManifestData function was using metadata.name/title instead of extracting the persona name from the compiled agent XML. ## Solution 1. Added extractAgentAttribute function to pull attributes from <agent> tag 2. Prioritize XML extraction over metadata for persona info: - displayName: uses agent title attribute from XML - title: uses agent title attribute from XML - icon: uses agent icon attribute from XML - Falls back to metadata if XML extraction fails ## Result Custom agents now display their actual persona names in manifests: - Before: "Commit Poet" - After: "Inkwell Von Comitizen" This provides better user experience with proper agent identification in IDE integrations and manifests.
This commit is contained in:
parent
efc2b6d0df
commit
6907d44810
@ -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);
|
||||
}
|
||||
|
||||
@ -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(`<agent[^>]*\\s${attr}=["']([^"']+)["']`));
|
||||
return match ? match[1] : '';
|
||||
};
|
||||
|
||||
const extractPrinciples = () => {
|
||||
const match = xmlContent.match(/<principles>([\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'),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user