UNPKG

@copilotkit/runtime

Version:

<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />

137 lines (135 loc) 6 kB
require("reflect-metadata"); const require_runtime = require('../../../../_virtual/_rolldown/runtime.cjs'); const require_runtime$1 = require('../../core/runtime.cjs'); const require_open_generative_ui_middleware = require('../../open-generative-ui-middleware.cjs'); const require_client = require('../../intelligence-platform/client.cjs'); const require_header_utils = require('../header-utils.cjs'); const require_resolve_intelligence_user = require('./resolve-intelligence-user.cjs'); let _copilotkit_shared = require("@copilotkit/shared"); let _ag_ui_client = require("@ag-ui/client"); let _ag_ui_a2ui_middleware = require("@ag-ui/a2ui-middleware"); let _ag_ui_mcp_apps_middleware = require("@ag-ui/mcp-apps-middleware"); let _ag_ui_mcp_middleware = require("@ag-ui/mcp-middleware"); //#region src/v2/runtime/handlers/shared/agent-utils.ts async function cloneAgentForRequest(runtime, agentId, request) { const agents = await require_runtime$1.resolveAgents(runtime.agents, request); if (!agents[agentId]) return new Response(JSON.stringify({ error: "Agent not found", message: `Agent '${agentId}' does not exist` }), { status: 404, headers: { "Content-Type": "application/json" } }); return agents[agentId].clone(); } function configureAgentForRequest(params) { const { runtime, request, agentId } = params; const agent = params.agent; if (runtime.a2ui) { const { agents: targetAgents, ...a2uiOptions } = runtime.a2ui; if ((!targetAgents || targetAgents.includes(agentId)) && typeof agent.use === "function") agent.use(new _ag_ui_a2ui_middleware.A2UIMiddleware(a2uiOptions)); } if (runtime.mcpApps?.servers?.length) { const mcpServers = runtime.mcpApps.servers.filter((server) => !server.agentId || server.agentId === agentId).map((server) => { const mcpServer = { ...server }; delete mcpServer.agentId; return mcpServer; }); if (mcpServers.length > 0 && typeof agent.use === "function") agent.use(new _ag_ui_mcp_apps_middleware.MCPAppsMiddleware({ mcpServers })); } if (runtime.openGenerativeUI) { const config = runtime.openGenerativeUI; const targetAgents = typeof config === "object" ? config.agents : void 0; if ((!targetAgents || targetAgents.includes(agentId)) && typeof agent.use === "function") agent.use(new require_open_generative_ui_middleware.OpenGenerativeUIMiddleware()); } agent.headers = { ...agent.headers, ...require_header_utils.extractForwardableHeaders(request) }; } /** * Attach the Intelligence platform's MCP tools to the agent run when * `CopilotKitIntelligence` was constructed with * `enableEnterpriseLearning: true`. Uses `@ag-ui/mcp-middleware`, so the * tools are available uniformly across agent frameworks (not just * `BuiltInAgent`). * * The middleware sits on a per-request agent clone, so the per-request * auth (Bearer apiKey + resolved user-id) is baked into the transport * headers at attach time. If user resolution fails, attachment is * skipped silently — the intelligence run handler will reject the * request with the same error. Note this means `identifyUser` is * resolved twice per learning-enabled run (here and in the run handler); * the callback is expected to be idempotent and side-effect-free. * * Intentionally split out from `configureAgentForRequest`: this is only * relevant to actual agent runs, not auxiliary flows like thread-name * generation (which has no need for MCP tools and shouldn't pay the * `listTools` round-trip). */ async function attachIntelligenceEnterpriseLearning(params) { const { runtime, request } = params; const agent = params.agent; if (!require_runtime$1.isIntelligenceRuntime(runtime) || !runtime.intelligence?.ɵisEnterpriseLearningEnabled?.()) return; if (typeof agent.use !== "function") { _copilotkit_shared.logger.warn("CopilotKitIntelligence.enableEnterpriseLearning is enabled, but the agent does not support middleware (no `.use()` method); Intelligence tools were not attached for this run."); return; } const userResult = await require_resolve_intelligence_user.resolveIntelligenceUser({ runtime, request }); if (userResult instanceof Response) return; agent.use(new _ag_ui_mcp_middleware.MCPMiddleware([{ type: "http", url: `${runtime.intelligence.ɵgetApiUrl()}/mcp`, serverId: "intelligence", headers: { Authorization: `Bearer ${runtime.intelligence.ɵgetApiKey()}`, [require_client.INTELLIGENCE_USER_ID_HEADER]: userResult.id } }])); } async function parseRunRequest(request) { try { const requestBody = await request.json(); return _ag_ui_client.RunAgentInputSchema.parse(requestBody); } catch (error) { _copilotkit_shared.logger.error("Invalid run request body:", error); return new Response(JSON.stringify({ error: "Invalid request body", details: error instanceof Error ? error.message : String(error) }), { status: 400, headers: { "Content-Type": "application/json" } }); } } async function parseConnectRequest(request) { try { const requestBody = await request.json(); const input = _ag_ui_client.RunAgentInputSchema.parse(requestBody); let lastSeenEventId = null; if ("lastSeenEventId" in requestBody && (typeof requestBody.lastSeenEventId === "string" || requestBody.lastSeenEventId === null)) lastSeenEventId = requestBody.lastSeenEventId ?? null; return { input, lastSeenEventId }; } catch (error) { _copilotkit_shared.logger.error("Invalid connect request body:", error); return new Response(JSON.stringify({ error: "Invalid request body", details: error instanceof Error ? error.message : String(error) }), { status: 400, headers: { "Content-Type": "application/json" } }); } } //#endregion exports.attachIntelligenceEnterpriseLearning = attachIntelligenceEnterpriseLearning; exports.cloneAgentForRequest = cloneAgentForRequest; exports.configureAgentForRequest = configureAgentForRequest; exports.parseConnectRequest = parseConnectRequest; exports.parseRunRequest = parseRunRequest; //# sourceMappingURL=agent-utils.cjs.map