@agents24/node 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +27 -3
  2. package/compatibility.json +6 -6
  3. package/dist/bff.cjs +481 -52
  4. package/dist/bff.cjs.map +1 -1
  5. package/dist/bff.d.cts +24 -4
  6. package/dist/bff.d.ts +24 -4
  7. package/dist/bff.js +481 -52
  8. package/dist/bff.js.map +1 -1
  9. package/dist/{client-Rmk3dh_D.d.cts → client-xWr_OGEe.d.cts} +437 -76
  10. package/dist/{client-Rmk3dh_D.d.ts → client-xWr_OGEe.d.ts} +437 -76
  11. package/dist/index.cjs +302 -57
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +2 -2
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.js +302 -57
  16. package/dist/index.js.map +1 -1
  17. package/dist/types/bff-agent-resolution.d.ts +41 -0
  18. package/dist/types/bff-agent-resolution.d.ts.map +1 -0
  19. package/dist/types/bff-errors.d.ts +3 -0
  20. package/dist/types/bff-errors.d.ts.map +1 -0
  21. package/dist/types/bff.d.ts +6 -19
  22. package/dist/types/bff.d.ts.map +1 -1
  23. package/dist/types/client.d.ts +4 -2
  24. package/dist/types/client.d.ts.map +1 -1
  25. package/dist/types/embed.d.ts +8 -2
  26. package/dist/types/embed.d.ts.map +1 -1
  27. package/dist/types/generated/customerProfiles.d.ts +11 -0
  28. package/dist/types/generated/customerProfiles.d.ts.map +1 -0
  29. package/dist/types/generated/manifest.d.ts +1 -1
  30. package/dist/types/generated/manifest.d.ts.map +1 -1
  31. package/dist/types/generated/resourceInstallations.d.ts +25 -0
  32. package/dist/types/generated/resourceInstallations.d.ts.map +1 -0
  33. package/dist/types/generated/resourcePackages.d.ts +7 -3
  34. package/dist/types/generated/resourcePackages.d.ts.map +1 -1
  35. package/dist/types/generated/resourcePolicies.d.ts +3 -3
  36. package/dist/types/generated/resourcePolicies.d.ts.map +1 -1
  37. package/dist/types/types.d.ts +389 -61
  38. package/dist/types/types.d.ts.map +1 -1
  39. package/package.json +2 -2
  40. package/dist/types/generated/resourceBundles.d.ts +0 -12
  41. package/dist/types/generated/resourceBundles.d.ts.map +0 -1
package/dist/bff.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/bff.ts"],"names":[],"mappings":"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","file":"bff.js","sourcesContent":["export type Agents24SDKErrorKind = \"protocol\" | \"network\" | \"http\";\nexport type Agents24NodeErrorKind = Agents24SDKErrorKind;\nimport type { FailureView } from \"./types.js\";\n\nexport class Agents24SDKError extends Error {\n readonly kind: Agents24SDKErrorKind;\n readonly status?: number;\n readonly failure?: FailureView;\n readonly responseHeaders?: Readonly<Record<string, string>>;\n\n constructor(\n message: string,\n options: {\n kind: Agents24SDKErrorKind;\n status?: number;\n failure?: FailureView;\n responseHeaders?: Readonly<Record<string, string>>;\n cause?: unknown;\n },\n ) {\n super(message, { cause: options.cause });\n this.name = \"Agents24SDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.failure = options.failure;\n this.responseHeaders = options.responseHeaders;\n }\n\n get code(): string | undefined { return this.failure?.code; }\n get category(): string | undefined { return this.failure?.category; }\n get failureId(): string | undefined { return this.failure?.failure_id; }\n get requestId(): string | undefined { return this.failure?.request_id ?? undefined; }\n get retryable(): boolean { return this.failure?.retryable ?? false; }\n get retryAfterMs(): number | undefined { return this.failure?.retry_after_ms ?? undefined; }\n get details(): Readonly<Record<string, unknown>> { return this.failure?.details ?? {}; }\n}\n\nexport { Agents24SDKError as Agents24NodeError };\n","import { randomUUID } from \"node:crypto\";\n\nimport type { Agents24 } from \"./client.js\";\nimport { Agents24SDKError } from \"./errors.js\";\nimport type { RuntimeEvent, ThreadSummaryEvent, ToolInputOverrides } from \"./types.js\";\n\nexport interface AgentBffPrincipal {\n subject: string;\n issuer?: string;\n externalSessionId?: string;\n}\n\nexport interface AgentBffPrincipalResolution {\n principal: AgentBffPrincipal;\n responseHeaders?: HeadersInit;\n}\n\nexport interface Agents24BffHandlerOptions {\n client: Pick<Agents24, \"embed\">;\n agentId: string;\n agentVersionId?: string;\n basePath?: string;\n resolvePrincipal(request: Request): Promise<AgentBffPrincipalResolution> | AgentBffPrincipalResolution;\n revokePrincipal?(\n request: Request,\n principal: AgentBffPrincipal,\n ): Promise<HeadersInit | void> | HeadersInit | void;\n}\n\nexport type Agents24BffHandler = (request: Request) => Promise<Response>;\n\nconst JSON_LIMIT_BYTES = 1_048_576;\n\nfunction normalized(value: string, field: string): string {\n const result = String(value || \"\").trim();\n if (!result || /[\\r\\n\\0]/.test(result)) throw new Error(`${field} is required.`);\n return result;\n}\n\nfunction normalizeBasePath(value: string | undefined): string {\n const path = String(value || \"/api/agents24\").trim().replace(/\\/+$/, \"\");\n if (!path.startsWith(\"/\") || /[\\r\\n\\0?#]/.test(path)) throw new Error(\"basePath must be an absolute path.\");\n return path;\n}\n\nfunction browserRequestIsSameOrigin(request: Request): boolean {\n const fetchSite = String(request.headers.get(\"sec-fetch-site\") || \"\").trim().toLowerCase();\n if (fetchSite) return fetchSite === \"same-origin\";\n\n const rawOrigin = String(request.headers.get(\"origin\") || \"\").trim();\n if (!rawOrigin) return true;\n try {\n return rawOrigin !== \"null\" && new URL(rawOrigin).origin === new URL(request.url).origin;\n } catch {\n return false;\n }\n}\n\nfunction publicError(\n status: number,\n code: string,\n message: string,\n retryable = false,\n violations?: readonly Record<string, unknown>[],\n): Response {\n const category = status === 401 ? \"authentication\"\n : status === 403 ? \"authorization\"\n : status === 404 ? \"not_found\"\n : status === 409 ? \"conflict\"\n : status === 429 ? \"rate_limit\"\n : status >= 500 ? \"internal\"\n : \"validation\";\n return Response.json({\n schema_version: \"agents24.failure.v1\",\n failure_id: randomUUID(),\n code,\n category,\n message,\n request_id: randomUUID(),\n retryable,\n retry_after_ms: null,\n details: violations?.length ? { violations } : {},\n }, {\n status,\n headers: { \"Cache-Control\": \"no-store\", \"Content-Type\": \"application/json; charset=utf-8\" },\n });\n}\n\nfunction safeResourcePolicyError(details: unknown): {\n failureId: string;\n code: string;\n category: \"policy\" | \"quota\";\n message: string;\n requestId: string | null;\n retryable: boolean;\n retryAfterMs: number | null;\n violations?: readonly Record<string, unknown>[];\n} | null {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) return null;\n const outer = details as Record<string, unknown>;\n const candidate = outer.schema_version === \"agents24.failure.v1\"\n ? outer\n : outer.detail && typeof outer.detail === \"object\" && !Array.isArray(outer.detail)\n ? outer.detail as Record<string, unknown>\n : outer;\n const code = typeof candidate.code === \"string\" ? candidate.code : \"\";\n if (![\"RESOURCE_POLICY_ACCESS_DENIED\", \"RESOURCE_POLICY_QUOTA_EXCEEDED\", \"RESOURCE_POLICY_CONFIGURATION_ERROR\"].includes(code)) return null;\n const failureId = typeof candidate.failure_id === \"string\" && candidate.failure_id.trim()\n ? candidate.failure_id\n : \"\";\n if (!failureId) return null;\n const message = typeof candidate.message === \"string\" && candidate.message.trim()\n ? candidate.message.trim()\n : \"The resource policy prevented this request.\";\n const allowedViolationKeys = new Set([\n \"policy_subject_type\", \"rule_type\", \"aggregation_scope\", \"resource_type\",\n \"resource_name\", \"quota_unit\", \"quota_window\", \"limit\", \"remaining\", \"resets_at\",\n ]);\n const candidateDetails = candidate.details && typeof candidate.details === \"object\"\n ? candidate.details as Record<string, unknown>\n : candidate;\n const violations = Array.isArray(candidateDetails.violations)\n ? candidateDetails.violations.flatMap((item): Record<string, unknown>[] => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) return [];\n return [Object.fromEntries(\n Object.entries(item as Record<string, unknown>)\n .filter(([key, value]) => allowedViolationKeys.has(key) && [\"string\", \"number\"].includes(typeof value)),\n )];\n }).filter((item) => Object.keys(item).length > 0).slice(0, 20)\n : undefined;\n return {\n failureId,\n code,\n category: code === \"RESOURCE_POLICY_QUOTA_EXCEEDED\" ? \"quota\" : \"policy\",\n message,\n requestId: typeof candidate.request_id === \"string\" ? candidate.request_id : null,\n retryable: candidate.retryable === true,\n retryAfterMs: typeof candidate.retry_after_ms === \"number\" && candidate.retry_after_ms >= 0\n ? candidate.retry_after_ms\n : null,\n ...(violations?.length ? { violations } : {}),\n };\n}\n\nfunction resourcePolicyFailureResponse(\n status: number,\n failure: NonNullable<ReturnType<typeof safeResourcePolicyError>>,\n): Response {\n return Response.json({\n schema_version: \"agents24.failure.v1\",\n failure_id: failure.failureId,\n code: failure.code,\n category: failure.category,\n message: failure.message,\n retryable: failure.retryable,\n request_id: failure.requestId,\n retry_after_ms: failure.retryAfterMs,\n details: failure.violations?.length ? { violations: failure.violations } : {},\n }, {\n status,\n headers: { \"Cache-Control\": \"no-store\", \"Content-Type\": \"application/json; charset=utf-8\" },\n });\n}\n\nfunction errorResponse(error: unknown): Response {\n const isSdkError = error instanceof Agents24SDKError || (\n error instanceof Error\n && error.name === \"Agents24SDKError\"\n && \"kind\" in error\n && [\"protocol\", \"network\", \"http\"].includes(String(error.kind))\n );\n if (isSdkError) {\n const sdkError = error as Agents24SDKError;\n const status = sdkError.status && sdkError.status >= 400 && sdkError.status <= 599 ? sdkError.status : 502;\n const policyError = safeResourcePolicyError(sdkError.failure);\n if (policyError) {\n return resourcePolicyFailureResponse(status, policyError);\n }\n return publicError(status, `UPSTREAM_${status}`, \"The Agent request failed.\", status >= 500);\n }\n return publicError(500, \"BFF_REQUEST_FAILED\", \"The Agent request could not be completed.\", true);\n}\n\nfunction mergeHeaders(response: Response, additional: HeadersInit | undefined): Response {\n if (!additional) return response;\n const headers = new Headers(response.headers);\n const extras = new Headers(additional);\n for (const [name, value] of extras) headers.append(name, value);\n return new Response(response.body, { status: response.status, statusText: response.statusText, headers });\n}\n\nfunction json(value: unknown, headers?: HeadersInit, status = 200): Response {\n const responseHeaders = new Headers(headers);\n responseHeaders.set(\"Cache-Control\", \"no-store\");\n responseHeaders.set(\"Content-Type\", \"application/json; charset=utf-8\");\n return new Response(JSON.stringify(value), { status, headers: responseHeaders });\n}\n\nasync function requestJson(request: Request): Promise<Record<string, unknown>> {\n const contentLength = Number(request.headers.get(\"content-length\") || 0);\n if (contentLength > JSON_LIMIT_BYTES) throw new BffInputError(413, \"REQUEST_TOO_LARGE\", \"The request body is too large.\");\n const value = await request.json().catch(() => null);\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new BffInputError(400, \"INVALID_JSON\", \"A JSON object is required.\");\n }\n return value as Record<string, unknown>;\n}\n\nclass BffInputError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); }\n}\n\nfunction stringValue(value: unknown): string | undefined {\n const result = typeof value === \"string\" ? value.trim() : \"\";\n return result || undefined;\n}\n\nfunction stringList(value: unknown): string[] {\n return Array.isArray(value) ? value.map(stringValue).filter((item): item is string => Boolean(item)) : [];\n}\n\nfunction objectValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\nfunction routeId(path: string, pattern: RegExp, field: string): string {\n const match = pattern.exec(path);\n if (!match?.[1]) throw new BffInputError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n try { return normalized(decodeURIComponent(match[1]), field); }\n catch { throw new BffInputError(400, \"INVALID_PATH\", `${field} is invalid.`); }\n}\n\nfunction sseHeaders(headers?: HeadersInit): Headers {\n const result = new Headers(headers);\n result.set(\"Cache-Control\", \"no-cache, no-transform\");\n result.set(\"Content-Type\", \"text/event-stream; charset=utf-8\");\n result.set(\"X-Accel-Buffering\", \"no\");\n return result;\n}\n\nfunction sseResponse(\n execute: (write: (value: unknown) => Promise<void>) => Promise<void>,\n headers?: HeadersInit,\n): Response {\n const stream = new TransformStream<Uint8Array, Uint8Array>();\n const writer = stream.writable.getWriter();\n const encoder = new TextEncoder();\n const write = (value: unknown) => writer.write(encoder.encode(`data: ${JSON.stringify(value)}\\n\\n`));\n void execute(write)\n .catch(async (error: unknown) => {\n const message = \"The Agent stream failed.\";\n const event: RuntimeEvent = {\n version: \"run-stream.v3\",\n seq: Number.MAX_SAFE_INTEGER,\n ts: new Date().toISOString(),\n event: \"run.failed\",\n run_id: \"bff-stream-error\",\n stage: \"run\",\n payload: { error: message },\n };\n await write(event).catch(() => undefined);\n })\n .finally(() => writer.close().catch(() => undefined));\n return new Response(stream.readable, { headers: sseHeaders(headers) });\n}\n\nfunction bootstrapDocument(raw: Record<string, unknown>, agentVersionId: string | undefined): Record<string, unknown> {\n const features = objectValue(raw.features);\n const selectable = objectValue(features.models).selectable === true;\n const resolvedVersionId = stringValue(raw.agent_version_id) || agentVersionId || \"\";\n const versionNumber = Number(raw.agent_version_number || 0);\n return {\n version: String(raw.version || \"agents24.embed.bootstrap.v1\"),\n deployment: {\n id: \"server-embed\",\n name: String(raw.agent_name || \"Agents24 Agent\"),\n version_policy: agentVersionId\n ? { mode: \"pinned\", version_id: agentVersionId }\n : { mode: \"latest_published\" },\n resolved_agent_version_id: resolvedVersionId,\n resolved_agent_version_number: Number.isFinite(versionNumber) ? versionNumber : 0,\n policy_epoch: 0,\n },\n authentication: { modes: [\"server_embed\"], access_token_lifetime_seconds: 0, jwks_path: \"\" },\n capabilities: [\"attachments.read\", \"attachments.write\", \"feedback.write\", ...(selectable ? [\"models.select\"] : [])],\n features,\n native_profiles: [],\n };\n}\n\nexport function createAgents24BffHandler(options: Agents24BffHandlerOptions): Agents24BffHandler {\n const agentId = normalized(options.agentId, \"agentId\");\n const agentVersionId = stringValue(options.agentVersionId);\n const basePath = normalizeBasePath(options.basePath);\n const embed = options.client.embed;\n\n return async (request) => {\n const url = new URL(request.url);\n if (url.pathname !== basePath && !url.pathname.startsWith(`${basePath}/`)) {\n return publicError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n }\n if (!browserRequestIsSameOrigin(request)) {\n return publicError(403, \"BFF_ORIGIN_DENIED\", \"The BFF accepts same-origin browser requests only.\");\n }\n const path = url.pathname.slice(basePath.length) || \"/\";\n let resolution: AgentBffPrincipalResolution;\n try {\n resolution = await options.resolvePrincipal(request);\n resolution.principal.subject = normalized(resolution.principal.subject, \"subject\");\n if (resolution.principal.issuer !== undefined) {\n resolution.principal.issuer = normalized(resolution.principal.issuer, \"issuer\");\n }\n } catch {\n return publicError(401, \"PRINCIPAL_REQUIRED\", \"A valid application session is required.\");\n }\n const principal = resolution.principal;\n const idempotencyKey = stringValue(request.headers.get(\"idempotency-key\"));\n\n try {\n let customerPrincipalRef = \"\";\n if (!(request.method === \"GET\" && (path === \"/bootstrap\" || path === \"/resource-policy\"))) {\n const entitlement = await embed.getResourcePolicy(agentId, {\n external_user_id: principal.subject,\n ...(principal.issuer ? { external_user_issuer: principal.issuer } : {}),\n ...(agentVersionId ? { agent_version_id: agentVersionId } : {}),\n });\n customerPrincipalRef = stringValue(entitlement.customer_principal_ref) || principal.subject;\n }\n const identity = {\n external_user_id: customerPrincipalRef,\n ...(principal.externalSessionId ? { external_session_id: principal.externalSessionId } : {}),\n };\n const threadIdentity = {\n externalUserId: customerPrincipalRef,\n ...(principal.externalSessionId ? { externalSessionId: principal.externalSessionId } : {}),\n };\n let response: Response;\n if (request.method === \"GET\" && path === \"/bootstrap\") {\n const raw = await embed.getRuntimeBootstrap(agentId, agentVersionId) as Record<string, unknown>;\n response = json(bootstrapDocument(raw, agentVersionId));\n } else if (request.method === \"GET\" && path === \"/resource-policy\") {\n response = json(await embed.getResourcePolicy(agentId, {\n external_user_id: principal.subject,\n ...(principal.issuer ? { external_user_issuer: principal.issuer } : {}),\n ...(agentVersionId ? { agent_version_id: agentVersionId } : {}),\n }));\n } else if (request.method === \"POST\" && path === \"/chat/stream\") {\n const body = await requestJson(request);\n const input = stringValue(body.input);\n const attachmentIds = stringList(body.attachmentIds);\n if (!input && attachmentIds.length === 0) throw new BffInputError(400, \"INPUT_REQUIRED\", \"A message or attachment is required.\");\n response = sseResponse(async (write) => {\n await embed.streamAgent(agentId, {\n ...identity,\n ...(agentVersionId ? { agent_version_id: agentVersionId } : {}),\n ...(input ? { input } : {}),\n attachment_ids: attachmentIds,\n ...(stringValue(body.threadId) ? { thread_id: stringValue(body.threadId) } : {}),\n ...(stringValue(body.requestedModelId) ? { requested_model_id: stringValue(body.requestedModelId) } : {}),\n tool_inputs: objectValue(body.toolInputs) as ToolInputOverrides,\n metadata: objectValue(body.metadata),\n client: objectValue(body.client),\n }, (event) => write(event), { idempotencyKey, signal: request.signal });\n });\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/attach$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/attach$/, \"runId\");\n const body = await requestJson(request);\n const cursor = body.cursor;\n if (cursor !== undefined && (!Number.isInteger(cursor) || Number(cursor) < 0)) {\n throw new BffInputError(400, \"INVALID_CURSOR\", \"cursor must be a non-negative integer.\");\n }\n response = sseResponse(async (write) => {\n await embed.attachAgentRun(agentId, runId, {\n ...identity,\n ...(cursor === undefined ? {} : { cursor: Number(cursor) }),\n }, (event) => write(event), {\n idempotencyKey,\n signal: request.signal,\n });\n });\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/cancel$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/cancel$/, \"runId\");\n response = json(await embed.cancelAgentRun(agentId, runId, threadIdentity, { idempotencyKey }));\n } else if (request.method === \"PUT\" && /^\\/runs\\/[^/]+\\/feedback$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/feedback$/, \"runId\");\n const body = await requestJson(request);\n const rating = body.rating === null ? null : stringValue(body.rating);\n const reasons = new Set([\"incorrect\", \"irrelevant\", \"incomplete\", \"unsafe\", \"citation_issue\", \"other\"]);\n const reason = stringValue(body.reason);\n const comment = stringValue(body.comment);\n if (rating !== null && rating !== \"like\" && rating !== \"dislike\") {\n throw new BffInputError(422, \"INVALID_FEEDBACK\", \"rating must be like, dislike, or null.\");\n }\n if (reason && !reasons.has(reason)) {\n throw new BffInputError(422, \"INVALID_FEEDBACK\", \"The feedback reason is invalid.\");\n }\n if (comment && comment.length > 1000) {\n throw new BffInputError(422, \"INVALID_FEEDBACK\", \"The feedback comment is too long.\");\n }\n response = json(await embed.setAgentRunFeedback(agentId, runId, {\n ...identity,\n rating,\n ...(rating === \"dislike\" && reason ? { reason: reason as import(\"./types\").FeedbackReason } : {}),\n ...(rating === \"dislike\" && comment ? { comment } : {}),\n }));\n } else if (request.method === \"GET\" && path === \"/threads\") {\n const skip = Number(url.searchParams.get(\"skip\") || 0);\n const limit = Number(url.searchParams.get(\"limit\") || 20);\n response = json(await embed.listAgentThreads(agentId, {\n ...threadIdentity,\n skip: Number.isFinite(skip) ? skip : 0,\n limit: Number.isFinite(limit) ? limit : 20,\n }));\n } else if (request.method === \"GET\" && path === \"/threads/events\") {\n const rawCursor = url.searchParams.get(\"cursor\");\n const cursor = rawCursor === null ? undefined : Number(rawCursor);\n response = sseResponse(async (write) => {\n await embed.subscribeAgentThreadEvents(agentId, {\n ...threadIdentity,\n ...(cursor !== undefined && Number.isFinite(cursor) ? { cursor } : {}),\n signal: request.signal,\n }, (event: ThreadSummaryEvent) => write(event));\n });\n } else if (/^\\/threads\\/[^/]+$/.test(path) && request.method === \"GET\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)$/, \"threadId\");\n const rawBefore = url.searchParams.get(\"before_turn_index\");\n const rawLimit = url.searchParams.get(\"limit\");\n const before = rawBefore === null ? undefined : Number(rawBefore);\n const limit = rawLimit === null ? undefined : Number(rawLimit);\n response = json(await embed.getAgentThread(agentId, threadId, {\n ...threadIdentity,\n ...(before !== undefined && Number.isFinite(before) ? { beforeTurnIndex: before } : {}),\n ...(limit !== undefined && Number.isFinite(limit) ? { limit } : {}),\n }));\n } else if (/^\\/threads\\/[^/]+$/.test(path) && request.method === \"DELETE\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)$/, \"threadId\");\n response = json(await embed.deleteAgentThread(agentId, threadId, threadIdentity, { idempotencyKey }));\n } else if (request.method === \"POST\" && path === \"/attachments/upload\") {\n const form = await request.formData();\n const files = form.getAll(\"files\").filter((entry): entry is File => entry instanceof File);\n if (files.length === 0) throw new BffInputError(400, \"ATTACHMENT_REQUIRED\", \"At least one attachment is required.\");\n response = json(await embed.uploadAgentAttachments(agentId, {\n ...threadIdentity,\n files,\n ...(stringValue(form.get(\"thread_id\")) ? { threadId: stringValue(form.get(\"thread_id\")) } : {}),\n idempotencyKey,\n }));\n } else if (request.method === \"POST\" && /^\\/attachments\\/[^/]+\\/content-access$/.test(path)) {\n const attachmentId = routeId(path, /^\\/attachments\\/([^/]+)\\/content-access$/, \"attachmentId\");\n const body = await requestJson(request);\n const disposition = stringValue(body.disposition);\n if (disposition !== \"inline\" && disposition !== \"attachment\") {\n throw new BffInputError(400, \"INVALID_DISPOSITION\", \"Attachment disposition is invalid.\");\n }\n response = json(await embed.createAttachmentContentAccess(agentId, attachmentId, {\n external_user_id: threadIdentity.externalUserId,\n ...(threadIdentity.externalSessionId ? { external_session_id: threadIdentity.externalSessionId } : {}),\n disposition,\n }));\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/hitl\\/[^/]+\\/resume$/.test(path)) {\n const match = /^\\/runs\\/([^/]+)\\/hitl\\/([^/]+)\\/resume$/.exec(path);\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/hitl\\//, \"runId\");\n const interruptId = match?.[2] ? decodeURIComponent(match[2]) : \"\";\n const body = await requestJson(request);\n response = json(await embed.resumeAgentRun(agentId, runId, {\n ...identity,\n schema_version: \"agents24.hitl.resume.v2\",\n interrupt_id: normalized(interruptId, \"interruptId\"),\n action: normalized(String(body.action || \"\"), \"action\") as \"approve\" | \"reject\" | \"connect\" | \"skip\" | \"respond\",\n ...(stringValue(body.comment) ? { comment: stringValue(body.comment) } : {}),\n ...(Array.isArray(body.answers) ? { answers: body.answers as import(\"./types\").HitlAnswer[] } : {}),\n }, { idempotencyKey }));\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/mcp\\/servers\\/[^/]+\\/auth\\/start$/.test(path)) {\n const match = /^\\/runs\\/([^/]+)\\/mcp\\/servers\\/([^/]+)\\/auth\\/start$/.exec(path);\n const runId = match?.[1] ? decodeURIComponent(match[1]) : \"\";\n const serverId = match?.[2] ? decodeURIComponent(match[2]) : \"\";\n const body = await requestJson(request);\n const callbackOrigin = new URL(request.url).origin;\n response = json(await embed.startAgentRunMcpAuth(agentId, normalized(runId, \"runId\"), normalized(serverId, \"serverId\"), {\n ...identity,\n interrupt_id: normalized(String(body.interruptId || \"\"), \"interruptId\"),\n callback_origin: callbackOrigin,\n popup_nonce: normalized(String(body.popupNonce || \"\"), \"popupNonce\"),\n }, { idempotencyKey }));\n } else if (request.method === \"POST\" && path === \"/mcp/callback/redeem\") {\n throw new BffInputError(409, \"MCP_CALLBACK_DIRECT\", \"Server-embed MCP callbacks complete in the authorization popup.\");\n } else if (request.method === \"POST\" && path === \"/session/revoke\") {\n const headers = await options.revokePrincipal?.(request, principal);\n response = new Response(null, { status: 204, ...(headers ? { headers } : {}) });\n } else {\n response = publicError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n }\n return mergeHeaders(response, resolution.responseHeaders);\n } catch (error) {\n if (error instanceof BffInputError) {\n return mergeHeaders(publicError(error.status, error.code, error.message), resolution.responseHeaders);\n }\n return mergeHeaders(errorResponse(error), resolution.responseHeaders);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/bff-agent-resolution.ts","../src/errors.ts","../src/bff-errors.ts","../src/bff.ts"],"names":["value"],"mappings":"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","file":"bff.js","sourcesContent":["import type { Agents24 } from \"./client.js\";\n\nexport interface AgentBffPrincipal {\n subject: string;\n issuer?: string;\n displayName?: string | null;\n email?: string | null;\n avatarUrl?: string | null;\n externalSessionId?: string;\n}\n\nexport interface AgentBffPrincipalResolution {\n principal: AgentBffPrincipal;\n responseHeaders?: HeadersInit;\n}\n\ntype Agents24BffAgentVersion = {\n agentVersionId?: string;\n};\n\nexport type Agents24BffAgent = Agents24BffAgentVersion & (\n | { agentId: string; agentAlias?: never }\n | { agentAlias: string; agentId?: never }\n);\n\nexport interface ResolvedAgents24BffAgent extends Agents24BffAgentVersion {\n agentId: string;\n agentAlias?: string;\n}\n\nexport interface Agents24BffHandlerOptions {\n client: Pick<Agents24, \"embed\">;\n agents: readonly Agents24BffAgent[];\n integrationId: string;\n integrationName?: string;\n runtimeTarget?: \"draft\" | \"published\";\n basePath?: string;\n resolvePrincipal(request: Request): Promise<AgentBffPrincipalResolution> | AgentBffPrincipalResolution;\n revokePrincipal?(\n request: Request,\n principal: AgentBffPrincipal,\n ): Promise<HeadersInit | void> | HeadersInit | void;\n}\n\nexport type Agents24BffHandler = (request: Request) => Promise<Response>;\n\ntype ConfiguredAgent = Agents24BffAgentVersion & {\n agentId?: string;\n agentAlias?: string;\n};\n\nfunction clean(value: unknown): string | undefined {\n const result = typeof value === \"string\" ? value.trim() : \"\";\n return result || undefined;\n}\n\nfunction required(value: unknown, field: string): string {\n const result = clean(value);\n if (!result || /[\\r\\n\\0]/.test(result)) throw new Error(`${field} is required.`);\n return result;\n}\n\nexport function prepareAgents24BffAgentResolution(\n options: Agents24BffHandlerOptions,\n): () => Promise<ResolvedAgents24BffAgent[]> {\n if (!options.agents.length || options.agents.length > 50) {\n throw new Error(\"agents must contain between one and 50 Agents.\");\n }\n const configured: ConfiguredAgent[] = options.agents.map((item) => {\n const agentId = clean(item.agentId);\n const agentAlias = clean(item.agentAlias);\n if (Boolean(agentId) === Boolean(agentAlias)) {\n throw new Error(\"Each Agent requires exactly one of agentId or agentAlias.\");\n }\n return { agentId, agentAlias, agentVersionId: clean(item.agentVersionId) };\n });\n\n return async () => {\n const agents = await Promise.all(configured.map(async (item) => {\n if (item.agentAlias) {\n const resolution = await options.client.embed.resolveAgentAlias(item.agentAlias);\n return {\n agentId: required(resolution.agent_id, \"agentId\"),\n agentAlias: required(item.agentAlias, \"agentAlias\"),\n agentVersionId: item.agentVersionId,\n };\n }\n return { agentId: required(item.agentId, \"agentId\"), agentVersionId: item.agentVersionId };\n }));\n if (new Set(agents.map((item) => item.agentId)).size !== agents.length) {\n throw new Error(\"Configured Agent selectors must resolve to unique Agents.\");\n }\n return agents;\n };\n}\n","export type Agents24SDKErrorKind = \"protocol\" | \"network\" | \"http\";\nexport type Agents24NodeErrorKind = Agents24SDKErrorKind;\nimport type { FailureView } from \"./types.js\";\n\nexport class Agents24SDKError extends Error {\n readonly kind: Agents24SDKErrorKind;\n readonly status?: number;\n readonly failure?: FailureView;\n readonly responseHeaders?: Readonly<Record<string, string>>;\n\n constructor(\n message: string,\n options: {\n kind: Agents24SDKErrorKind;\n status?: number;\n failure?: FailureView;\n responseHeaders?: Readonly<Record<string, string>>;\n cause?: unknown;\n },\n ) {\n super(message, { cause: options.cause });\n this.name = \"Agents24SDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.failure = options.failure;\n this.responseHeaders = options.responseHeaders;\n }\n\n get code(): string | undefined { return this.failure?.code; }\n get category(): string | undefined { return this.failure?.category; }\n get failureId(): string | undefined { return this.failure?.failure_id; }\n get requestId(): string | undefined { return this.failure?.request_id ?? undefined; }\n get retryable(): boolean { return this.failure?.retryable ?? false; }\n get retryAfterMs(): number | undefined { return this.failure?.retry_after_ms ?? undefined; }\n get details(): Readonly<Record<string, unknown>> { return this.failure?.details ?? {}; }\n}\n\nexport { Agents24SDKError as Agents24NodeError };\n","import { randomUUID } from \"node:crypto\";\n\nimport { Agents24SDKError } from \"./errors.js\";\n\nexport function publicError(\n status: number,\n code: string,\n message: string,\n retryable = false,\n violations?: readonly Record<string, unknown>[],\n): Response {\n const category = status === 401 ? \"authentication\"\n : status === 403 ? \"authorization\"\n : status === 404 ? \"not_found\"\n : status === 409 ? \"conflict\"\n : status === 429 ? \"rate_limit\"\n : status >= 500 ? \"internal\"\n : \"validation\";\n return Response.json({\n schema_version: \"agents24.failure.v1\",\n failure_id: randomUUID(),\n code,\n category,\n message,\n request_id: randomUUID(),\n retryable,\n retry_after_ms: null,\n details: violations?.length ? { violations } : {},\n }, {\n status,\n headers: { \"Cache-Control\": \"no-store\", \"Content-Type\": \"application/json; charset=utf-8\" },\n });\n}\n\nfunction safeResourcePolicyError(details: unknown): {\n failureId: string;\n code: string;\n category: \"policy\" | \"quota\";\n message: string;\n requestId: string | null;\n retryable: boolean;\n retryAfterMs: number | null;\n violations?: readonly Record<string, unknown>[];\n} | null {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) return null;\n const outer = details as Record<string, unknown>;\n const candidate = outer.schema_version === \"agents24.failure.v1\"\n ? outer\n : outer.detail && typeof outer.detail === \"object\" && !Array.isArray(outer.detail)\n ? outer.detail as Record<string, unknown>\n : outer;\n const code = typeof candidate.code === \"string\" ? candidate.code : \"\";\n if (![\"RESOURCE_POLICY_ACCESS_DENIED\", \"RESOURCE_POLICY_QUOTA_EXCEEDED\", \"RESOURCE_POLICY_CONFIGURATION_ERROR\"].includes(code)) return null;\n const failureId = typeof candidate.failure_id === \"string\" && candidate.failure_id.trim()\n ? candidate.failure_id\n : \"\";\n if (!failureId) return null;\n const message = typeof candidate.message === \"string\" && candidate.message.trim()\n ? candidate.message.trim()\n : \"The resource policy prevented this request.\";\n const allowedViolationKeys = new Set([\n \"policy_subject_type\", \"rule_type\", \"aggregation_scope\", \"resource_type\",\n \"resource_name\", \"quota_unit\", \"quota_window\", \"limit\", \"remaining\", \"resets_at\",\n ]);\n const candidateDetails = candidate.details && typeof candidate.details === \"object\"\n ? candidate.details as Record<string, unknown>\n : candidate;\n const violations = Array.isArray(candidateDetails.violations)\n ? candidateDetails.violations.flatMap((item): Record<string, unknown>[] => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) return [];\n return [Object.fromEntries(\n Object.entries(item as Record<string, unknown>)\n .filter(([key, value]) => allowedViolationKeys.has(key) && [\"string\", \"number\"].includes(typeof value)),\n )];\n }).filter((item) => Object.keys(item).length > 0).slice(0, 20)\n : undefined;\n return {\n failureId,\n code,\n category: code === \"RESOURCE_POLICY_QUOTA_EXCEEDED\" ? \"quota\" : \"policy\",\n message,\n requestId: typeof candidate.request_id === \"string\" ? candidate.request_id : null,\n retryable: candidate.retryable === true,\n retryAfterMs: typeof candidate.retry_after_ms === \"number\" && candidate.retry_after_ms >= 0\n ? candidate.retry_after_ms\n : null,\n ...(violations?.length ? { violations } : {}),\n };\n}\n\nfunction resourcePolicyFailureResponse(\n status: number,\n failure: NonNullable<ReturnType<typeof safeResourcePolicyError>>,\n): Response {\n return Response.json({\n schema_version: \"agents24.failure.v1\",\n failure_id: failure.failureId,\n code: failure.code,\n category: failure.category,\n message: failure.message,\n retryable: failure.retryable,\n request_id: failure.requestId,\n retry_after_ms: failure.retryAfterMs,\n details: failure.violations?.length ? { violations: failure.violations } : {},\n }, {\n status,\n headers: { \"Cache-Control\": \"no-store\", \"Content-Type\": \"application/json; charset=utf-8\" },\n });\n}\n\nexport function errorResponse(error: unknown): Response {\n const isSdkError = error instanceof Agents24SDKError || (\n error instanceof Error\n && error.name === \"Agents24SDKError\"\n && \"kind\" in error\n && [\"protocol\", \"network\", \"http\"].includes(String(error.kind))\n );\n if (isSdkError) {\n const sdkError = error as Agents24SDKError;\n const status = sdkError.status && sdkError.status >= 400 && sdkError.status <= 599 ? sdkError.status : 502;\n const policyError = safeResourcePolicyError(sdkError.failure);\n if (policyError) return resourcePolicyFailureResponse(status, policyError);\n return publicError(status, `UPSTREAM_${status}`, \"The Agent request failed.\", status >= 500);\n }\n return publicError(500, \"BFF_REQUEST_FAILED\", \"The Agent request could not be completed.\", true);\n}\n","import type { Agents24 } from \"./client.js\";\nimport { prepareAgents24BffAgentResolution } from \"./bff-agent-resolution.js\";\nimport type { AgentBffPrincipal, AgentBffPrincipalResolution, Agents24BffHandler, Agents24BffHandlerOptions, ResolvedAgents24BffAgent } from \"./bff-agent-resolution.js\";\nimport { errorResponse, publicError } from \"./bff-errors.js\";\nimport type { RuntimeEvent, ThreadSummaryEvent, ToolInputOverrides } from \"./types.js\";\n\nexport type { AgentBffPrincipal, AgentBffPrincipalResolution, Agents24BffAgent, Agents24BffHandler, Agents24BffHandlerOptions } from \"./bff-agent-resolution.js\";\n\ninterface SingleAgentBffHandlerOptions {\n client: Pick<Agents24, \"embed\">;\n agentId: string;\n agentVersionId?: string;\n runtimeTarget?: \"draft\" | \"published\";\n integrationId: string;\n integrationName?: string;\n basePath?: string;\n resolvePrincipal(request: Request): Promise<AgentBffPrincipalResolution> | AgentBffPrincipalResolution;\n revokePrincipal?(\n request: Request,\n principal: AgentBffPrincipal,\n ): Promise<HeadersInit | void> | HeadersInit | void;\n}\n\nconst JSON_LIMIT_BYTES = 1_048_576;\nconst MAX_INPUT_LENGTH = 200_000;\nconst MAX_ATTACHMENTS = 10;\nconst MAX_ATTACHMENT_BYTES = 25 * 1024 * 1024;\nconst HITL_ACTIONS = new Set([\"approve\", \"reject\", \"connect\", \"skip\", \"respond\"]);\nconst CUSTOMER_IDENTITY_CACHE_TTL_MS = 60_000;\nconst CUSTOMER_IDENTITY_CACHE_MAX_ENTRIES = 1_024;\n\ntype CustomerIdentityResolver = (principal: AgentBffPrincipal) => Promise<string>;\n\nfunction createCustomerIdentityResolver(\n embed: Pick<Agents24, \"embed\">[\"embed\"],\n integrationId: string,\n integrationName?: string,\n): CustomerIdentityResolver {\n const cache = new Map<string, { expiresAt: number; value: Promise<string> }>();\n return async (principal) => {\n const profile = {\n display_name: principal.displayName,\n email: principal.email,\n avatar_url: principal.avatarUrl,\n };\n const profileFields = Object.fromEntries(Object.entries(profile).filter(([, value]) => value !== undefined));\n const key = JSON.stringify([integrationId, principal.issuer, principal.subject, profileFields]);\n const now = Date.now();\n const cached = cache.get(key);\n if (cached && cached.expiresAt > now) {\n cache.delete(key);\n cache.set(key, cached);\n return cached.value;\n }\n if (cached) cache.delete(key);\n const value = embed.resolveCustomerPrincipal({\n integration_id: integrationId,\n ...(integrationName ? { integration_name: integrationName } : {}),\n ...(principal.issuer ? { issuer: principal.issuer } : {}),\n subject: principal.subject,\n ...(Object.keys(profileFields).length ? { profile: profileFields } : {}),\n }).then((result) => normalized(result.customer_principal_ref, \"customer_principal_ref\"));\n const entry = { expiresAt: now + CUSTOMER_IDENTITY_CACHE_TTL_MS, value };\n cache.set(key, entry);\n while (cache.size > CUSTOMER_IDENTITY_CACHE_MAX_ENTRIES) {\n const oldest = cache.keys().next().value as string | undefined;\n if (oldest === undefined) break;\n cache.delete(oldest);\n }\n void value.catch(() => {\n if (cache.get(key) === entry) cache.delete(key);\n });\n return value;\n };\n}\n\nfunction normalized(value: string, field: string): string {\n const result = String(value || \"\").trim();\n if (!result || /[\\r\\n\\0]/.test(result)) throw new Error(`${field} is required.`);\n return result;\n}\n\nfunction normalizeBasePath(value: string | undefined): string {\n const path = String(value || \"/api/agents24\").trim().replace(/\\/+$/, \"\");\n if (!path.startsWith(\"/\") || /[\\r\\n\\0?#]/.test(path)) throw new Error(\"basePath must be an absolute path.\");\n return path;\n}\n\nfunction browserRequestIsSameOrigin(request: Request): boolean {\n const fetchSite = String(request.headers.get(\"sec-fetch-site\") || \"\").trim().toLowerCase();\n if (fetchSite) return fetchSite === \"same-origin\";\n\n const rawOrigin = String(request.headers.get(\"origin\") || \"\").trim();\n if (!rawOrigin) return true;\n try {\n return rawOrigin !== \"null\" && new URL(rawOrigin).origin === new URL(request.url).origin;\n } catch {\n return false;\n }\n}\n\nfunction mergeHeaders(response: Response, additional: HeadersInit | undefined): Response {\n if (!additional) return response;\n const headers = new Headers(response.headers);\n const extras = new Headers(additional);\n for (const [name, value] of extras) headers.append(name, value);\n return new Response(response.body, { status: response.status, statusText: response.statusText, headers });\n}\n\nfunction json(value: unknown, headers?: HeadersInit, status = 200): Response {\n const responseHeaders = new Headers(headers);\n responseHeaders.set(\"Cache-Control\", \"no-store\");\n responseHeaders.set(\"Content-Type\", \"application/json; charset=utf-8\");\n return new Response(JSON.stringify(value), { status, headers: responseHeaders });\n}\n\nasync function requestJson(request: Request): Promise<Record<string, unknown>> {\n const contentLength = Number(request.headers.get(\"content-length\") || 0);\n if (contentLength > JSON_LIMIT_BYTES) throw new BffInputError(413, \"REQUEST_TOO_LARGE\", \"The request body is too large.\");\n const value = await request.json().catch(() => null);\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new BffInputError(400, \"INVALID_JSON\", \"A JSON object is required.\");\n }\n return value as Record<string, unknown>;\n}\n\nclass BffInputError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); }\n}\n\nfunction stringValue(value: unknown): string | undefined {\n const result = typeof value === \"string\" ? value.trim() : \"\";\n return result || undefined;\n}\n\nfunction stringList(value: unknown): string[] {\n return Array.isArray(value) ? value.map(stringValue).filter((item): item is string => Boolean(item)) : [];\n}\n\nfunction objectValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : {};\n}\n\nfunction routeId(path: string, pattern: RegExp, field: string): string {\n const match = pattern.exec(path);\n if (!match?.[1]) throw new BffInputError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n try { return normalized(decodeURIComponent(match[1]), field); }\n catch { throw new BffInputError(400, \"INVALID_PATH\", `${field} is invalid.`); }\n}\n\nfunction sseHeaders(headers?: HeadersInit): Headers {\n const result = new Headers(headers);\n result.set(\"Cache-Control\", \"no-cache, no-transform\");\n result.set(\"Content-Type\", \"text/event-stream; charset=utf-8\");\n result.set(\"X-Accel-Buffering\", \"no\");\n return result;\n}\n\nfunction sseResponse(\n execute: (write: (value: unknown) => Promise<void>) => Promise<void>,\n headers?: HeadersInit,\n failurePayload?: (error: unknown) => unknown,\n): Response {\n const stream = new TransformStream<Uint8Array, Uint8Array>();\n const writer = stream.writable.getWriter();\n const encoder = new TextEncoder();\n const write = (value: unknown) => writer.write(encoder.encode(`data: ${JSON.stringify(value)}\\n\\n`));\n void execute(write)\n .catch(async (error: unknown) => {\n if (failurePayload) {\n await write(failurePayload(error)).catch(() => undefined);\n return;\n }\n const message = \"The Agent stream failed.\";\n const event: RuntimeEvent = {\n version: \"run-stream.v3\",\n seq: Number.MAX_SAFE_INTEGER,\n ts: new Date().toISOString(),\n event: \"run.failed\",\n run_id: \"bff-stream-error\",\n stage: \"run\",\n payload: { error: message },\n };\n await write(event).catch(() => undefined);\n })\n .finally(() => writer.close().catch(() => undefined));\n return new Response(stream.readable, { headers: sseHeaders(headers) });\n}\n\nfunction bootstrapDocument(raw: Record<string, unknown>, agentVersionId: string | undefined): Record<string, unknown> {\n const features = objectValue(raw.features);\n const selectable = objectValue(features.models).selectable === true;\n const resolvedVersionId = stringValue(raw.agent_version_id) || agentVersionId || \"\";\n const versionNumber = Number(raw.agent_version_number || 0);\n return {\n version: String(raw.version || \"agents24.embed.bootstrap.v1\"),\n deployment: {\n id: \"server-embed\",\n name: normalized(String(raw.agent_name || \"\"), \"agent_name\"),\n version_policy: agentVersionId\n ? { mode: \"pinned\", version_id: agentVersionId }\n : { mode: \"latest_published\" },\n resolved_agent_version_id: resolvedVersionId,\n resolved_agent_version_number: Number.isFinite(versionNumber) ? versionNumber : 0,\n policy_epoch: 0,\n },\n authentication: { modes: [\"server_embed\"], access_token_lifetime_seconds: 0, jwks_path: \"\" },\n capabilities: [\"attachments.read\", \"attachments.write\", \"feedback.write\", ...(selectable ? [\"models.select\"] : [])],\n features,\n native_profiles: [],\n };\n}\n\nfunction createAgents24BffHandlerWithResolver(\n options: SingleAgentBffHandlerOptions,\n resolveCustomerIdentity: CustomerIdentityResolver,\n): Agents24BffHandler {\n const agentId = normalized(options.agentId, \"agentId\");\n const agentVersionId = stringValue(options.agentVersionId);\n const runtimeTarget = options.runtimeTarget || \"published\";\n const integrationId = normalized(options.integrationId, \"integrationId\");\n if (runtimeTarget === \"draft\" && agentVersionId) throw new Error(\"agentVersionId cannot be used with draft runtimeTarget.\");\n const basePath = normalizeBasePath(options.basePath);\n const embed = options.client.embed;\n\n return async (request) => {\n const url = new URL(request.url);\n if (url.pathname !== basePath && !url.pathname.startsWith(`${basePath}/`)) {\n return publicError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n }\n if (!browserRequestIsSameOrigin(request)) {\n return publicError(403, \"BFF_ORIGIN_DENIED\", \"The BFF accepts same-origin browser requests only.\");\n }\n const path = url.pathname.slice(basePath.length) || \"/\";\n let resolution: AgentBffPrincipalResolution;\n try {\n resolution = await options.resolvePrincipal(request);\n resolution.principal.subject = normalized(resolution.principal.subject, \"subject\");\n if (resolution.principal.issuer !== undefined) {\n resolution.principal.issuer = normalized(resolution.principal.issuer, \"issuer\");\n }\n } catch {\n return publicError(401, \"PRINCIPAL_REQUIRED\", \"A valid application session is required.\");\n }\n const principal = resolution.principal;\n const idempotencyKey = stringValue(request.headers.get(\"idempotency-key\"));\n\n try {\n const customerPrincipalRef = await resolveCustomerIdentity(principal);\n const identity = {\n external_user_id: customerPrincipalRef,\n ...(principal.externalSessionId ? { external_session_id: principal.externalSessionId } : {}),\n };\n const threadIdentity = {\n externalUserId: customerPrincipalRef,\n runtimeTarget,\n ...(principal.externalSessionId ? { externalSessionId: principal.externalSessionId } : {}),\n };\n let response: Response;\n if (request.method === \"GET\" && path === \"/bootstrap\") {\n const raw = await embed.getRuntimeBootstrap(agentId, agentVersionId, runtimeTarget) as Record<string, unknown>;\n response = json(bootstrapDocument(raw, agentVersionId));\n } else if (request.method === \"GET\" && path === \"/resource-policy\") {\n response = json(await embed.getResourcePolicy(agentId, {\n external_user_id: customerPrincipalRef,\n integration_id: integrationId,\n ...(agentVersionId ? { agent_version_id: agentVersionId } : {}),\n runtime_target: runtimeTarget,\n }));\n } else if (request.method === \"POST\" && path === \"/chat/stream\") {\n const body = await requestJson(request);\n const input = stringValue(body.input);\n const attachmentIds = stringList(body.attachmentIds);\n if (!input && attachmentIds.length === 0) throw new BffInputError(400, \"INPUT_REQUIRED\", \"A message or attachment is required.\");\n if (input && input.length > MAX_INPUT_LENGTH) {\n throw new BffInputError(413, \"INPUT_TOO_LARGE\", \"The message is too large.\");\n }\n if (attachmentIds.length > MAX_ATTACHMENTS) {\n throw new BffInputError(400, \"TOO_MANY_ATTACHMENTS\", `At most ${MAX_ATTACHMENTS} attachments are allowed.`);\n }\n response = sseResponse(async (write) => {\n await embed.streamAgent(agentId, {\n ...identity,\n integration_id: integrationId,\n ...(agentVersionId ? { agent_version_id: agentVersionId } : {}),\n runtime_target: runtimeTarget,\n ...(input ? { input } : {}),\n attachment_ids: attachmentIds,\n ...(stringValue(body.threadId) ? { thread_id: stringValue(body.threadId) } : {}),\n ...(stringValue(body.requestedModelId) ? { requested_model_id: stringValue(body.requestedModelId) } : {}),\n tool_inputs: objectValue(body.toolInputs) as ToolInputOverrides,\n metadata: objectValue(body.metadata),\n client: objectValue(body.client),\n }, (event) => write(event), { idempotencyKey, signal: request.signal });\n });\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/attach$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/attach$/, \"runId\");\n const body = await requestJson(request);\n const cursor = body.cursor;\n if (cursor !== undefined && (!Number.isInteger(cursor) || Number(cursor) < 0)) {\n throw new BffInputError(400, \"INVALID_CURSOR\", \"cursor must be a non-negative integer.\");\n }\n response = sseResponse(async (write) => {\n await embed.attachAgentRun(agentId, runId, {\n ...identity,\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n ...(cursor === undefined ? {} : { cursor: Number(cursor) }),\n }, (event) => write(event), {\n idempotencyKey,\n signal: request.signal,\n });\n });\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/cancel$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/cancel$/, \"runId\");\n response = json(await embed.cancelAgentRun(agentId, runId, {\n ...threadIdentity,\n integrationId,\n }, { idempotencyKey }));\n } else if (request.method === \"PUT\" && /^\\/runs\\/[^/]+\\/feedback$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/feedback$/, \"runId\");\n const body = await requestJson(request);\n const rating = body.rating === null ? null : stringValue(body.rating);\n const reasons = new Set([\"incorrect\", \"irrelevant\", \"incomplete\", \"unsafe\", \"citation_issue\", \"other\"]);\n const reason = stringValue(body.reason);\n const comment = stringValue(body.comment);\n if (rating !== null && rating !== \"like\" && rating !== \"dislike\") {\n throw new BffInputError(422, \"INVALID_FEEDBACK\", \"rating must be like, dislike, or null.\");\n }\n if (reason && !reasons.has(reason)) {\n throw new BffInputError(422, \"INVALID_FEEDBACK\", \"The feedback reason is invalid.\");\n }\n if (comment && comment.length > 1000) {\n throw new BffInputError(422, \"INVALID_FEEDBACK\", \"The feedback comment is too long.\");\n }\n response = json(await embed.setAgentRunFeedback(agentId, runId, {\n ...identity,\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n rating,\n ...(rating === \"dislike\" && reason ? { reason: reason as import(\"./types\").FeedbackReason } : {}),\n ...(rating === \"dislike\" && comment ? { comment } : {}),\n }));\n } else if (request.method === \"GET\" && path === \"/threads\") {\n const skip = Number(url.searchParams.get(\"skip\") || 0);\n const limit = Number(url.searchParams.get(\"limit\") || 20);\n if (!Number.isInteger(skip) || skip < 0 || !Number.isInteger(limit) || limit < 1 || limit > 100) {\n throw new BffInputError(400, \"INVALID_PAGINATION\", \"skip must be non-negative and limit must be between 1 and 100.\");\n }\n response = json(await embed.listAgentThreads(agentId, {\n ...threadIdentity,\n integrationId,\n runtimeTarget,\n skip,\n limit,\n }));\n } else if (request.method === \"GET\" && path === \"/threads/events\") {\n const rawCursor = url.searchParams.get(\"cursor\");\n const cursor = rawCursor === null ? undefined : Number(rawCursor);\n if (cursor !== undefined && (!Number.isInteger(cursor) || cursor < 0)) {\n throw new BffInputError(400, \"INVALID_CURSOR\", \"cursor must be a non-negative integer.\");\n }\n response = sseResponse(async (write) => {\n await embed.subscribeAgentThreadEvents(agentId, {\n ...threadIdentity,\n integrationId,\n ...(cursor !== undefined ? { cursor } : {}),\n signal: request.signal,\n }, (event: ThreadSummaryEvent) => write(event));\n }, undefined, () => ({\n schema_version: \"agents24.thread_summary_event.v1\",\n event: \"snapshot_required\",\n cursor,\n reason: \"stream_failed\",\n }));\n } else if (/^\\/threads\\/[^/]+$/.test(path) && request.method === \"GET\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)$/, \"threadId\");\n const rawBefore = url.searchParams.get(\"before_turn_index\");\n const rawLimit = url.searchParams.get(\"limit\");\n const before = rawBefore === null ? undefined : Number(rawBefore);\n const limit = rawLimit === null ? undefined : Number(rawLimit);\n if (before !== undefined && (!Number.isInteger(before) || before < 0)) {\n throw new BffInputError(400, \"INVALID_PAGINATION\", \"before_turn_index is invalid.\");\n }\n if (limit !== undefined && (!Number.isInteger(limit) || limit < 1 || limit > 100)) {\n throw new BffInputError(400, \"INVALID_PAGINATION\", \"limit must be between 1 and 100.\");\n }\n response = json(await embed.getAgentThread(agentId, threadId, {\n ...threadIdentity,\n integrationId,\n ...(before !== undefined ? { beforeTurnIndex: before } : {}),\n ...(limit !== undefined ? { limit } : {}),\n }));\n } else if (/^\\/threads\\/[^/]+$/.test(path) && request.method === \"DELETE\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)$/, \"threadId\");\n response = json(await embed.deleteAgentThread(agentId, threadId, { ...threadIdentity, integrationId }, { idempotencyKey }));\n } else if (request.method === \"POST\" && path === \"/attachments/upload\") {\n const form = await request.formData();\n const files = form.getAll(\"files\").filter((entry): entry is File => entry instanceof File);\n if (files.length === 0) throw new BffInputError(400, \"ATTACHMENT_REQUIRED\", \"At least one attachment is required.\");\n if (files.length > MAX_ATTACHMENTS) {\n throw new BffInputError(400, \"TOO_MANY_ATTACHMENTS\", `At most ${MAX_ATTACHMENTS} attachments are allowed.`);\n }\n if (files.some((file) => file.size > MAX_ATTACHMENT_BYTES)) {\n throw new BffInputError(413, \"ATTACHMENT_TOO_LARGE\", \"An attachment exceeds the allowed size.\");\n }\n response = json(await embed.uploadAgentAttachments(agentId, {\n ...threadIdentity,\n files,\n ...(stringValue(form.get(\"thread_id\")) ? { threadId: stringValue(form.get(\"thread_id\")) } : {}),\n integrationId,\n idempotencyKey,\n }));\n } else if (request.method === \"POST\" && /^\\/attachments\\/[^/]+\\/content-access$/.test(path)) {\n const attachmentId = routeId(path, /^\\/attachments\\/([^/]+)\\/content-access$/, \"attachmentId\");\n const body = await requestJson(request);\n const disposition = stringValue(body.disposition);\n if (disposition !== \"inline\" && disposition !== \"attachment\") {\n throw new BffInputError(400, \"INVALID_DISPOSITION\", \"Attachment disposition is invalid.\");\n }\n response = json(await embed.createAttachmentContentAccess(agentId, attachmentId, {\n external_user_id: threadIdentity.externalUserId,\n ...(threadIdentity.externalSessionId ? { external_session_id: threadIdentity.externalSessionId } : {}),\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n disposition,\n }));\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/hitl\\/[^/]+\\/resume$/.test(path)) {\n const match = /^\\/runs\\/([^/]+)\\/hitl\\/([^/]+)\\/resume$/.exec(path);\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\/hitl\\//, \"runId\");\n const interruptId = match?.[2] ? decodeURIComponent(match[2]) : \"\";\n const body = await requestJson(request);\n const action = stringValue(body.action);\n if (!action || !HITL_ACTIONS.has(action)) {\n throw new BffInputError(400, \"INVALID_HITL_ACTION\", \"The HITL action is invalid.\");\n }\n response = json(await embed.resumeAgentRun(agentId, runId, {\n ...identity,\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n schema_version: \"agents24.hitl.resume.v2\",\n interrupt_id: normalized(interruptId, \"interruptId\"),\n action: action as \"approve\" | \"reject\" | \"connect\" | \"skip\" | \"respond\",\n ...(stringValue(body.comment) ? { comment: stringValue(body.comment) } : {}),\n ...(Array.isArray(body.answers) ? { answers: body.answers as import(\"./types\").HitlAnswer[] } : {}),\n }, { idempotencyKey }));\n } else if (request.method === \"POST\" && /^\\/runs\\/[^/]+\\/mcp\\/servers\\/[^/]+\\/auth\\/start$/.test(path)) {\n const match = /^\\/runs\\/([^/]+)\\/mcp\\/servers\\/([^/]+)\\/auth\\/start$/.exec(path);\n const runId = match?.[1] ? decodeURIComponent(match[1]) : \"\";\n const serverId = match?.[2] ? decodeURIComponent(match[2]) : \"\";\n const body = await requestJson(request);\n const callbackOrigin = new URL(request.url).origin;\n response = json(await embed.startAgentRunMcpAuth(agentId, normalized(runId, \"runId\"), normalized(serverId, \"serverId\"), {\n ...identity,\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n interrupt_id: normalized(String(body.interruptId || \"\"), \"interruptId\"),\n callback_origin: callbackOrigin,\n popup_nonce: normalized(String(body.popupNonce || \"\"), \"popupNonce\"),\n }, { idempotencyKey }));\n } else if (request.method === \"POST\" && path === \"/mcp/callback/redeem\") {\n throw new BffInputError(409, \"MCP_CALLBACK_DIRECT\", \"Server-embed MCP callbacks complete in the authorization popup.\");\n } else if (request.method === \"POST\" && path === \"/session/revoke\") {\n const headers = await options.revokePrincipal?.(request, principal);\n response = new Response(null, { status: 204, ...(headers ? { headers } : {}) });\n } else {\n response = publicError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n }\n return mergeHeaders(response, resolution.responseHeaders);\n } catch (error) {\n if (error instanceof BffInputError) {\n return mergeHeaders(publicError(error.status, error.code, error.message), resolution.responseHeaders);\n }\n return mergeHeaders(errorResponse(error), resolution.responseHeaders);\n }\n };\n}\n\n/**\n * Creates one Agent-neutral same-origin BFF for a fixed server-owned Agent set.\n * Agent choice is execution configuration; conversation ownership stays stable.\n */\nfunction createResolvedAgents24BffHandler(\n options: Omit<Agents24BffHandlerOptions, \"agents\"> & { agents: readonly ResolvedAgents24BffAgent[] },\n): Agents24BffHandler {\n const runtimeTarget = options.runtimeTarget || \"published\";\n const basePath = normalizeBasePath(options.basePath);\n const integrationId = normalized(options.integrationId, \"integrationId\");\n const agents = options.agents.map((item) => ({\n agentId: normalized(item.agentId, \"agentId\"),\n agentAlias: stringValue(item.agentAlias),\n agentVersionId: stringValue(item.agentVersionId),\n }));\n if (!agents.length || agents.length > 50) throw new Error(\"agents must contain between one and 50 Agents.\");\n if (new Set(agents.map((agent) => agent.agentId)).size !== agents.length) throw new Error(\"agents must contain unique Agent IDs.\");\n if (runtimeTarget === \"draft\" && agents.some((agent) => agent.agentVersionId)) {\n throw new Error(\"agentVersionId cannot be used with draft runtimeTarget.\");\n }\n const resolveCustomerIdentity = createCustomerIdentityResolver(\n options.client.embed,\n integrationId,\n stringValue(options.integrationName),\n );\n const scopedHandlers = new Map(agents.map((agent) => [\n agent.agentId,\n createAgents24BffHandlerWithResolver({\n client: options.client,\n agentId: agent.agentId,\n agentVersionId: agent.agentVersionId,\n runtimeTarget,\n integrationId: integrationId,\n integrationName: options.integrationName,\n basePath: `${basePath}/agents/${encodeURIComponent(agent.agentId)}`,\n resolvePrincipal: options.resolvePrincipal,\n revokePrincipal: options.revokePrincipal,\n }, resolveCustomerIdentity),\n ]));\n const agentBySelector = new Map<string, (typeof agents)[number]>();\n for (const agent of agents) {\n agentBySelector.set(agent.agentId, agent);\n if (agent.agentAlias) agentBySelector.set(agent.agentAlias, agent);\n }\n\n return async (request) => {\n const url = new URL(request.url);\n if (url.pathname !== basePath && !url.pathname.startsWith(`${basePath}/`)) {\n return publicError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\");\n }\n if (!browserRequestIsSameOrigin(request)) {\n return publicError(403, \"BFF_ORIGIN_DENIED\", \"The BFF accepts same-origin browser requests only.\");\n }\n const path = url.pathname.slice(basePath.length) || \"/\";\n let resolution: AgentBffPrincipalResolution;\n try {\n resolution = await options.resolvePrincipal(request);\n resolution.principal.subject = normalized(resolution.principal.subject, \"subject\");\n if (resolution.principal.issuer !== undefined) resolution.principal.issuer = normalized(resolution.principal.issuer, \"issuer\");\n } catch {\n return publicError(401, \"PRINCIPAL_REQUIRED\", \"A valid application session is required.\");\n }\n try {\n const externalUserId = await resolveCustomerIdentity(resolution.principal);\n const identity = {\n external_user_id: externalUserId,\n ...(resolution.principal.externalSessionId ? { external_session_id: resolution.principal.externalSessionId } : {}),\n };\n const requestedAgent = (value: unknown) => {\n const agentId = stringValue(value) || agents[0]!.agentId;\n const configured = agentBySelector.get(agentId);\n if (!configured) throw new BffInputError(404, \"AGENT_NOT_CONFIGURED\", \"The requested Agent is not available.\");\n return configured;\n };\n const dispatchToAgent = async (agentId: string): Promise<Response> => {\n const handler = scopedHandlers.get(agentId);\n if (!handler) throw new BffInputError(404, \"NOT_FOUND\", \"The requested resource does not exist.\");\n const target = new URL(request.url);\n target.pathname = `${basePath}/agents/${encodeURIComponent(agentId)}${path}`;\n const body = request.method === \"GET\" || request.method === \"HEAD\"\n ? undefined\n : await request.arrayBuffer();\n return handler(new Request(target, {\n method: request.method,\n headers: request.headers,\n body,\n signal: request.signal,\n }));\n };\n const resolveRunAgent = async (runId: string): Promise<string> => {\n const result = await options.client.embed.resolveConversationRun(runId, {\n agent_ids: agents.map((agent) => agent.agentId),\n ...identity,\n integration_id: integrationId,\n runtime_target: runtimeTarget,\n });\n return requestedAgent(result.agent_id).agentId;\n };\n if (request.method === \"GET\" && path === \"/bootstrap\") {\n const candidates = await Promise.all(agents.map(async (agent) => {\n const [raw, policy] = await Promise.all([\n options.client.embed.getRuntimeBootstrap(agent.agentId, agent.agentVersionId, runtimeTarget) as Promise<Record<string, unknown>>,\n options.client.embed.getResourcePolicy(agent.agentId, {\n external_user_id: externalUserId,\n integration_id: integrationId,\n ...(agent.agentVersionId ? { agent_version_id: agent.agentVersionId } : {}),\n runtime_target: runtimeTarget,\n }),\n ]);\n const alias = normalized(String(raw.agent_alias || \"\"), \"agent_alias\");\n agent.agentAlias = alias;\n agentBySelector.set(alias, agent);\n for (const item of stringList(raw.agent_aliases)) agentBySelector.set(item, agent);\n return { agent, raw, policy };\n }));\n const selected = requestedAgent(url.searchParams.get(\"agent_id\"));\n const allowed = candidates.filter((candidate) => candidate.policy.agent_access_allowed !== false);\n const selectedCandidate = allowed.find((candidate) => candidate.agent.agentId === selected.agentId) || allowed[0];\n if (!selectedCandidate) throw new BffInputError(403, \"RESOURCE_POLICY_ACCESS_DENIED\", \"No configured Agent is available.\");\n const document = bootstrapDocument(selectedCandidate.raw, selectedCandidate.agent.agentVersionId);\n const features = objectValue(document.features);\n features.models = selectedCandidate.policy.model_selection;\n features.agents = {\n selectable: allowed.length > 1,\n default_id: normalized(String(allowed[0]!.raw.agent_alias || \"\"), \"agent_alias\"),\n options: allowed.map((candidate) => ({\n id: normalized(String(candidate.raw.agent_alias || \"\"), \"agent_alias\"),\n label: normalized(String(candidate.raw.agent_name || \"\"), \"agent_name\"),\n })),\n };\n document.features = features;\n document.capabilities = [\n ...new Set([\n ...((document.capabilities as string[]) || []),\n ...(allowed.length > 1 ? [\"agents.select\"] : []),\n ...(selectedCandidate.policy.model_selection.selectable ? [\"models.select\"] : []),\n ]),\n ];\n return mergeHeaders(json(document), resolution.responseHeaders);\n }\n if (request.method === \"POST\" && path === \"/chat/stream\") {\n const body = await requestJson(request);\n const selected = requestedAgent(body.requestedAgentId);\n const input = stringValue(body.input);\n const attachmentIds = stringList(body.attachmentIds);\n if (!input && attachmentIds.length === 0) throw new BffInputError(400, \"INPUT_REQUIRED\", \"A message or attachment is required.\");\n if (input && input.length > MAX_INPUT_LENGTH) throw new BffInputError(413, \"INPUT_TOO_LARGE\", \"The message is too large.\");\n if (attachmentIds.length > MAX_ATTACHMENTS) throw new BffInputError(400, \"TOO_MANY_ATTACHMENTS\", `At most ${MAX_ATTACHMENTS} attachments are allowed.`);\n return mergeHeaders(sseResponse(async (write) => {\n await options.client.embed.streamAgent(selected.agentId, {\n ...identity,\n ...(selected.agentVersionId ? { agent_version_id: selected.agentVersionId } : {}),\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n ...(input ? { input } : {}),\n attachment_ids: attachmentIds,\n ...(stringValue(body.threadId) ? { thread_id: stringValue(body.threadId) } : {}),\n ...(stringValue(body.requestedModelId) ? { requested_model_id: stringValue(body.requestedModelId) } : {}),\n tool_inputs: objectValue(body.toolInputs) as ToolInputOverrides,\n metadata: objectValue(body.metadata),\n client: objectValue(body.client),\n }, (event) => write(event), { idempotencyKey: stringValue(request.headers.get(\"idempotency-key\")), signal: request.signal });\n }), resolution.responseHeaders);\n }\n if (request.method === \"GET\" && path === \"/threads\") {\n const skip = Number(url.searchParams.get(\"skip\") || 0);\n const limit = Number(url.searchParams.get(\"limit\") || 20);\n if (!Number.isInteger(skip) || skip < 0 || !Number.isInteger(limit) || limit < 1 || limit > 100) {\n throw new BffInputError(400, \"INVALID_PAGINATION\", \"skip must be non-negative and limit must be between 1 and 100.\");\n }\n return mergeHeaders(json(await options.client.embed.listAgentThreadsMulti({\n agent_ids: agents.map((agent) => agent.agentId),\n external_user_id: externalUserId,\n ...(resolution.principal.externalSessionId ? { external_session_id: resolution.principal.externalSessionId } : {}),\n runtime_target: runtimeTarget,\n integration_id: integrationId,\n skip,\n limit,\n })), resolution.responseHeaders);\n }\n if (request.method === \"GET\" && path === \"/threads/events\") {\n const rawCursor = url.searchParams.get(\"cursor\");\n const cursor = rawCursor === null ? undefined : Number(rawCursor);\n if (cursor !== undefined && (!Number.isInteger(cursor) || cursor < 0)) {\n throw new BffInputError(400, \"INVALID_CURSOR\", \"cursor must be a non-negative integer.\");\n }\n return mergeHeaders(sseResponse(async (write) => {\n await options.client.embed.subscribeAgentThreadEventsMulti({\n agentIds: agents.map((agent) => agent.agentId),\n externalUserId,\n ...(resolution.principal.externalSessionId ? { externalSessionId: resolution.principal.externalSessionId } : {}),\n ...(cursor === undefined ? {} : { cursor }),\n runtimeTarget,\n integrationId,\n signal: request.signal,\n }, (event: ThreadSummaryEvent) => write(event));\n }, undefined, () => ({\n schema_version: \"agents24.thread_summary_event.v1\",\n event: \"snapshot_required\",\n cursor,\n reason: \"stream_failed\",\n })), resolution.responseHeaders);\n }\n if (/^\\/threads\\/[^/]+$/.test(path) && request.method === \"GET\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)$/, \"threadId\");\n const rawBefore = url.searchParams.get(\"before_turn_index\");\n const rawLimit = url.searchParams.get(\"limit\");\n const beforeTurnIndex = rawBefore === null ? undefined : Number(rawBefore);\n const detailLimit = rawLimit === null ? undefined : Number(rawLimit);\n if (beforeTurnIndex !== undefined && (!Number.isInteger(beforeTurnIndex) || beforeTurnIndex < 0)) {\n throw new BffInputError(400, \"INVALID_PAGINATION\", \"before_turn_index is invalid.\");\n }\n if (detailLimit !== undefined && (!Number.isInteger(detailLimit) || detailLimit < 1 || detailLimit > 100)) {\n throw new BffInputError(400, \"INVALID_PAGINATION\", \"limit must be between 1 and 100.\");\n }\n return mergeHeaders(json(await options.client.embed.getConversationThread(threadId, {\n agentIds: agents.map((agent) => agent.agentId),\n externalUserId,\n ...(resolution.principal.externalSessionId ? { externalSessionId: resolution.principal.externalSessionId } : {}),\n integrationId,\n runtimeTarget,\n beforeTurnIndex,\n limit: detailLimit,\n })), resolution.responseHeaders);\n }\n if (/^\\/threads\\/[^/]+\\/runtime-selection$/.test(path) && request.method === \"PATCH\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)\\//, \"threadId\");\n const body = await requestJson(request);\n const selected = requestedAgent(body.preferredAgentId);\n return mergeHeaders(json(await options.client.embed.setConversationRuntimeSelection(threadId, {\n agent_ids: agents.map((agent) => agent.agentId),\n preferred_agent_id: selected.agentId,\n ...(stringValue(body.preferredModelId) ? { preferred_model_id: stringValue(body.preferredModelId) } : {}),\n ...identity,\n integration_id: integrationId,\n runtime_target: runtimeTarget,\n })), resolution.responseHeaders);\n }\n if (/^\\/threads\\/[^/]+$/.test(path) && request.method === \"DELETE\") {\n const threadId = routeId(path, /^\\/threads\\/([^/]+)$/, \"threadId\");\n return mergeHeaders(json(await options.client.embed.deleteConversationThread(threadId, {\n agentIds: agents.map((agent) => agent.agentId),\n externalUserId,\n ...(resolution.principal.externalSessionId ? { externalSessionId: resolution.principal.externalSessionId } : {}),\n integrationId,\n runtimeTarget,\n }, { idempotencyKey: stringValue(request.headers.get(\"idempotency-key\")) })), resolution.responseHeaders);\n }\n if (request.method === \"POST\" && path === \"/attachments/upload\") {\n const form = await request.clone().formData();\n const selected = requestedAgent(form.get(\"requested_agent_id\"));\n const policy = await options.client.embed.getResourcePolicy(selected.agentId, {\n external_user_id: externalUserId,\n integration_id: integrationId,\n ...(selected.agentVersionId ? { agent_version_id: selected.agentVersionId } : {}),\n runtime_target: runtimeTarget,\n });\n if (policy.agent_access_allowed === false) throw new BffInputError(403, \"RESOURCE_POLICY_ACCESS_DENIED\", \"The requested Agent is not available.\");\n return dispatchToAgent(selected.agentId);\n }\n if (request.method === \"POST\" && /^\\/attachments\\/[^/]+\\/content-access$/.test(path)) {\n return dispatchToAgent(agents[0]!.agentId);\n }\n if (/^\\/runs\\/[^/]+\\/(?:attach|cancel|feedback)$/.test(path)\n || /^\\/runs\\/[^/]+\\/hitl\\/[^/]+\\/resume$/.test(path)\n || /^\\/runs\\/[^/]+\\/mcp\\/servers\\/[^/]+\\/auth\\/start$/.test(path)) {\n const runId = routeId(path, /^\\/runs\\/([^/]+)\\//, \"runId\");\n return dispatchToAgent(await resolveRunAgent(runId));\n }\n if (request.method === \"POST\" && path === \"/mcp/callback/redeem\") {\n throw new BffInputError(409, \"MCP_CALLBACK_DIRECT\", \"Server-embed MCP callbacks complete in the authorization popup.\");\n }\n if (request.method === \"POST\" && path === \"/session/revoke\") {\n const headers = await options.revokePrincipal?.(request, resolution.principal);\n return mergeHeaders(new Response(null, { status: 204, ...(headers ? { headers } : {}) }), resolution.responseHeaders);\n }\n return mergeHeaders(publicError(404, \"NOT_FOUND\", \"The requested BFF route does not exist.\"), resolution.responseHeaders);\n } catch (error) {\n if (error instanceof BffInputError) return mergeHeaders(publicError(error.status, error.code, error.message), resolution.responseHeaders);\n return mergeHeaders(errorResponse(error), resolution.responseHeaders);\n }\n };\n}\n\n/**\n * Creates an Agent-neutral BFF from permanent UUID or human-readable alias selectors.\n * Aliases resolve once for the lifetime of this server process; UUID routes remain canonical.\n */\nexport function createAgents24BffHandler(\n options: Agents24BffHandlerOptions,\n): Agents24BffHandler {\n const resolveAgents = prepareAgents24BffAgentResolution(options);\n let resolvedHandler: Promise<Agents24BffHandler> | undefined;\n const resolve = async (): Promise<Agents24BffHandler> => {\n const agents = await resolveAgents();\n return createResolvedAgents24BffHandler({ ...options, agents });\n };\n return async (request) => {\n if (!browserRequestIsSameOrigin(request)) {\n return publicError(403, \"BFF_ORIGIN_DENIED\", \"The BFF accepts same-origin browser requests only.\");\n }\n resolvedHandler ||= resolve();\n try {\n return (await resolvedHandler)(request);\n } catch (error) {\n resolvedHandler = undefined;\n return errorResponse(error);\n }\n };\n}\n"]}