import { createCopilotEndpointSingleRoute } from "../../../v2/runtime"; import { CreateCopilotRuntimeServerOptions, getCommonConfig } from "../shared"; import telemetry, { getRuntimeInstanceTelemetryInfo, } from "../../telemetry-client"; import { handle } from "hono/vercel"; export function copilotRuntimeNextJSAppRouterEndpoint( options: CreateCopilotRuntimeServerOptions, ) { const commonConfig = getCommonConfig(options); telemetry.setGlobalProperties({ runtime: { framework: "nextjs-app-router", }, }); if (options.properties?._copilotkit) { telemetry.setGlobalProperties({ _copilotkit: options.properties._copilotkit, }); } telemetry.capture( "oss.runtime.instance_created", getRuntimeInstanceTelemetryInfo(options), ); const logger = commonConfig.logging; logger.debug("Creating NextJS App Router endpoint"); const serviceAdapter = options.serviceAdapter; if (serviceAdapter) { options.runtime.handleServiceAdapter(serviceAdapter); } // Note: cors option requires @copilotkit/runtime with credentials support const copilotRoute = createCopilotEndpointSingleRoute({ runtime: options.runtime.instance, basePath: options.baseUrl ?? options.endpoint, ...(options.cors && { cors: options.cors }), } as any); const handleRequest = handle(copilotRoute as any); return { handleRequest }; }