{
	"$schema": "https://ui.shadcn.com/schema/registry-item.json",
	"name": "agent-respond",
	"type": "registry:lib",
	"description": "A function to respond to a message with an agent.",
	"dependencies": ["ai"],
	"registryDependencies": ["@simple-ai/id-to-readable-text"],
	"files": [
		{
			"path": "./src/registry/ai/agent-route-respond.ts",
			"content": "import type { Experimental_Agent as Agent } from \"ai\";\nimport { convertToModelMessages } from \"ai\";\nimport { AGENTS, type agentId } from \"@/registry/ai/agents/agents-registry\";\nimport type { AIUIMessage } from \"@/registry/ai/messages\";\nimport { idToReadableText } from \"@/registry/lib/id-to-readable-text\";\n\nexport function agentRoute(mentions: { id: string; name: string }[]): agentId {\n\tlet mentionedAgentId = mentions?.[0]?.id;\n\n\tif (!mentionedAgentId) {\n\t\tmentionedAgentId = AGENTS[0];\n\t}\n\n\treturn mentionedAgentId as agentId;\n}\n\nexport async function agentExecute({\n\tagentId,\n\tagent,\n\tmessages,\n}: {\n\tagentId: string;\n\t// biome-ignore lint/suspicious/noExplicitAny: Agent type is not known\n\tagent: Agent<any, any, any>;\n\tmessages: AIUIMessage[];\n}) {\n\tconst agentStream = agent.stream({\n\t\tmessages: convertToModelMessages(messages),\n\t});\n\n\treturn agentStream.toUIMessageStreamResponse<AIUIMessage>({\n\t\toriginalMessages: messages,\n\t\tsendReasoning: true,\n\t\tmessageMetadata: ({ part }) => {\n\t\t\tif (part.type === \"start\") {\n\t\t\t\treturn {\n\t\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t\t\tagent: {\n\t\t\t\t\t\tid: agentId,\n\t\t\t\t\t\tname: idToReadableText(agentId),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (part.type === \"finish\") {\n\t\t\t\treturn {\n\t\t\t\t\toutputTokens: part.totalUsage.outputTokens,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n}\n",
			"type": "registry:lib",
			"target": "lib/ai/agent-route-respond.ts"
		}
	]
}
