@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;" />
57 lines (55 loc) • 1.97 kB
JavaScript
import "reflect-metadata";
import { isHandlerResponse } from "../shared/json-response.mjs";
import { getPlatformErrorStatus } from "../shared/intelligence-utils.mjs";
import { resolveIntelligenceUser } from "../shared/resolve-intelligence-user.mjs";
//#region src/v2/runtime/handlers/intelligence/connect.ts
/**
* Builds browser-facing realtime connection metadata owned by the runtime.
*/
function buildRealtimeConnectionInfo(params) {
return {
clientUrl: params.clientUrl,
topic: `thread:${params.threadId}`
};
}
async function handleIntelligenceConnect({ runtime, request, agentId, threadId }) {
if (!runtime.intelligence) return Response.json({
error: "Intelligence not configured",
message: "Intelligence mode requires a CopilotKitIntelligence"
}, { status: 500 });
try {
const user = await resolveIntelligenceUser({
runtime,
request
});
if (isHandlerResponse(user)) return user;
const result = await runtime.intelligence.ɵconnectThread({
threadId,
userId: user.id,
agentId
});
if (result === null) return new Response(null, { status: 204 });
return Response.json({
threadId: result.threadId,
joinToken: result.joinToken,
realtime: buildRealtimeConnectionInfo({
clientUrl: runtime.intelligence.ɵgetClientWsUrl(),
threadId: result.threadId
})
}, { headers: {
"Cache-Control": "no-cache",
Connection: "keep-alive"
} });
} catch (error) {
const status = getPlatformErrorStatus(error);
if (status === 400 || status === 401 || status === 403 || status === 404 || status === 409) return Response.json({
error: "Connect request rejected",
message: error instanceof Error ? error.message : "Intelligence platform rejected the connect request"
}, { status });
console.error("Connect plan not available:", error);
return Response.json({ error: "Connect plan not available" }, { status: 404 });
}
}
//#endregion
export { handleIntelligenceConnect };
//# sourceMappingURL=connect.mjs.map