Spaces:
Configuration error
Configuration error
| import { randomUUID } from "node:crypto"; | |
| import type { IncomingMessage } from "node:http"; | |
| import { buildAgentMainSessionKey, normalizeAgentId } from "../routing/session-key.js"; | |
| export function getHeader(req: IncomingMessage, name: string): string | undefined { | |
| const raw = req.headers[name.toLowerCase()]; | |
| if (typeof raw === "string") return raw; | |
| if (Array.isArray(raw)) return raw[0]; | |
| return undefined; | |
| } | |
| export function getBearerToken(req: IncomingMessage): string | undefined { | |
| const raw = getHeader(req, "authorization")?.trim() ?? ""; | |
| if (!raw.toLowerCase().startsWith("bearer ")) return undefined; | |
| const token = raw.slice(7).trim(); | |
| return token || undefined; | |
| } | |
| export function resolveAgentIdFromHeader(req: IncomingMessage): string | undefined { | |
| const raw = | |
| getHeader(req, "x-moltbot-agent-id")?.trim() || getHeader(req, "x-moltbot-agent")?.trim() || ""; | |
| if (!raw) return undefined; | |
| return normalizeAgentId(raw); | |
| } | |
| export function resolveAgentIdFromModel(model: string | undefined): string | undefined { | |
| const raw = model?.trim(); | |
| if (!raw) return undefined; | |
| const m = | |
| raw.match(/^moltbot[:/](?<agentId>[a-z0-9][a-z0-9_-]{0,63})$/i) ?? | |
| raw.match(/^agent:(?<agentId>[a-z0-9][a-z0-9_-]{0,63})$/i); | |
| const agentId = m?.groups?.agentId; | |
| if (!agentId) return undefined; | |
| return normalizeAgentId(agentId); | |
| } | |
| export function resolveAgentIdForRequest(params: { | |
| req: IncomingMessage; | |
| model: string | undefined; | |
| }): string { | |
| const fromHeader = resolveAgentIdFromHeader(params.req); | |
| if (fromHeader) return fromHeader; | |
| const fromModel = resolveAgentIdFromModel(params.model); | |
| return fromModel ?? "main"; | |
| } | |
| export function resolveSessionKey(params: { | |
| req: IncomingMessage; | |
| agentId: string; | |
| user?: string | undefined; | |
| prefix: string; | |
| }): string { | |
| const explicit = getHeader(params.req, "x-moltbot-session-key")?.trim(); | |
| if (explicit) return explicit; | |
| const user = params.user?.trim(); | |
| const mainKey = user ? `${params.prefix}-user:${user}` : `${params.prefix}:${randomUUID()}`; | |
| return buildAgentMainSessionKey({ agentId: params.agentId, mainKey }); | |
| } | |