MCPcopy Index your code
hub / github.com/codeaashu/claude-code / parseAgentFromJson

Function parseAgentFromJson

src/tools/AgentTool/loadAgentsDir.ts:445–516  ·  view source on GitHub ↗
(
  name: string,
  definition: unknown,
  source: SettingSource = 'flagSettings',
)

Source from the content-addressed store, hash-verified

443 * Parses agent definition from JSON data
444 */
445export function parseAgentFromJson(
446 name: string,
447 definition: unknown,
448 source: SettingSource = 'flagSettings',
449): CustomAgentDefinition | null {
450 try {
451 const parsed = AgentJsonSchema().parse(definition)
452
453 let tools = parseAgentToolsFromFrontmatter(parsed.tools)
454
455 // If memory is enabled, inject Write/Edit/Read tools for memory access
456 if (isAutoMemoryEnabled() && parsed.memory && tools !== undefined) {
457 const toolSet = new Set(tools)
458 for (const tool of [
459 FILE_WRITE_TOOL_NAME,
460 FILE_EDIT_TOOL_NAME,
461 FILE_READ_TOOL_NAME,
462 ]) {
463 if (!toolSet.has(tool)) {
464 tools = [...tools, tool]
465 }
466 }
467 }
468
469 const disallowedTools =
470 parsed.disallowedTools !== undefined
471 ? parseAgentToolsFromFrontmatter(parsed.disallowedTools)
472 : undefined
473
474 const systemPrompt = parsed.prompt
475
476 const agent: CustomAgentDefinition = {
477 agentType: name,
478 whenToUse: parsed.description,
479 ...(tools !== undefined ? { tools } : {}),
480 ...(disallowedTools !== undefined ? { disallowedTools } : {}),
481 getSystemPrompt: () => {
482 if (isAutoMemoryEnabled() && parsed.memory) {
483 return (
484 systemPrompt + '\n\n' + loadAgentMemoryPrompt(name, parsed.memory)
485 )
486 }
487 return systemPrompt
488 },
489 source,
490 ...(parsed.model ? { model: parsed.model } : {}),
491 ...(parsed.effort !== undefined ? { effort: parsed.effort } : {}),
492 ...(parsed.permissionMode
493 ? { permissionMode: parsed.permissionMode }
494 : {}),
495 ...(parsed.mcpServers && parsed.mcpServers.length > 0
496 ? { mcpServers: parsed.mcpServers }
497 : {}),
498 ...(parsed.hooks ? { hooks: parsed.hooks } : {}),
499 ...(parsed.maxTurns !== undefined ? { maxTurns: parsed.maxTurns } : {}),
500 ...(parsed.skills && parsed.skills.length > 0
501 ? { skills: parsed.skills }
502 : {}),

Callers 1

parseAgentsFromJsonFunction · 0.85

Calls 7

isAutoMemoryEnabledFunction · 0.85
loadAgentMemoryPromptFunction · 0.85
logForDebuggingFunction · 0.85
logErrorFunction · 0.50
parseMethod · 0.45
hasMethod · 0.45

Tested by

no test coverage detected