MCPcopy Create free account
hub / github.com/Noumena-Network/code / parseAgentFromJson

Function parseAgentFromJson

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

Source from the content-addressed store, hash-verified

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

Callers 1

parseAgentsFromJsonFunction · 0.85

Calls 6

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

Tested by

no test coverage detected