MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / validateAgents

Function validateAgents

common/src/templates/agent-validation.ts:59–147  ·  view source on GitHub ↗
(params: {
  agentTemplates?: Record<string, any>
  logger: Logger
})

Source from the content-addressed store, hash-verified

57 * Validate and load dynamic agent templates from user-provided agentTemplates
58 */
59export 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 }

Calls 1

validateSingleAgentFunction · 0.85

Tested by

no test coverage detected