(params: {
agentTemplates?: Record<string, any>
logger: Logger
})
| 57 | * Validate and load dynamic agent templates from user-provided agentTemplates |
| 58 | */ |
| 59 | export function validateAgents(params: { |
| 60 | agentTemplates?: Record<string, any> |
| 61 | logger: Logger |
| 62 | }): { |
| 63 | templates: Record<string, AgentTemplate> |
| 64 | dynamicTemplates: Record<string, DynamicAgentTemplate> |
| 65 | validationErrors: DynamicAgentValidationError[] |
| 66 | } { |
| 67 | const { agentTemplates = {}, logger } = params |
| 68 | |
| 69 | const templates: Record<string, AgentTemplate> = {} |
| 70 | const dynamicTemplates: Record<string, DynamicAgentTemplate> = {} |
| 71 | const validationErrors: DynamicAgentValidationError[] = [] |
| 72 | |
| 73 | const hasAgentTemplates = Object.keys(agentTemplates).length > 0 |
| 74 | |
| 75 | if (!hasAgentTemplates) { |
| 76 | return { |
| 77 | templates, |
| 78 | dynamicTemplates, |
| 79 | validationErrors, |
| 80 | } |
| 81 | } |
| 82 | |
| 83 | const agentKeys = Object.keys(agentTemplates) |
| 84 | |
| 85 | // Load and validate each agent template |
| 86 | for (const agentKey of agentKeys) { |
| 87 | const content = agentTemplates[agentKey] |
| 88 | try { |
| 89 | if (!content) { |
| 90 | continue |
| 91 | } |
| 92 | |
| 93 | const validationResult = validateSingleAgent({ |
| 94 | template: content, |
| 95 | filePath: agentKey, |
| 96 | }) |
| 97 | |
| 98 | if (!validationResult.success) { |
| 99 | validationErrors.push({ |
| 100 | filePath: agentKey, |
| 101 | message: validationResult.error!, |
| 102 | }) |
| 103 | continue |
| 104 | } |
| 105 | |
| 106 | if (templates[validationResult.agentTemplate!.id]) { |
| 107 | const agentContext = validationResult.agentTemplate!.displayName |
| 108 | ? `Agent "${validationResult.agentTemplate!.id}" (${validationResult.agentTemplate!.displayName})` |
| 109 | : `Agent "${validationResult.agentTemplate!.id}"` |
| 110 | |
| 111 | validationErrors.push({ |
| 112 | filePath: agentKey, |
| 113 | message: `${agentContext}: Duplicate agent ID`, |
| 114 | }) |
| 115 | continue |
| 116 | } |
no test coverage detected