@agents24/node 0.5.9 → 0.5.10
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.
- package/compatibility.json +3 -3
- package/dist/bff.cjs +1 -1
- package/dist/bff.cjs.map +1 -1
- package/dist/bff.d.cts +1 -1
- package/dist/bff.d.ts +1 -1
- package/dist/bff.js +1 -1
- package/dist/bff.js.map +1 -1
- package/dist/{client-DA9J56wi.d.cts → client-xs_JXgvz.d.cts} +15 -1
- package/dist/{client-DA9J56wi.d.ts → client-xs_JXgvz.d.ts} +15 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/types/generated/resourceInstallations.d.ts.map +1 -1
- package/dist/types/types.d.ts +14 -0
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/bff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bff-agent-resolution.ts","../src/errors.ts","../src/bff-errors.ts","../src/bff-diagnostics.ts","../src/bff.ts"],"names":["clean","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\nexport interface Agents24BffDiagnostic {\n operation: string;\n method: string;\n path: string;\n status: number;\n failureId?: string;\n requestId?: string;\n code?: string;\n category?: string;\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 onDiagnostic?(diagnostic: Agents24BffDiagnostic): Promise<void> | 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\nconst FAILURE_CATEGORIES = new Set([\n \"validation\", \"authentication\", \"authorization\", \"not_found\", \"policy\",\n \"conflict\", \"billing\", \"quota\", \"rate_limit\", \"capacity\", \"dependency\",\n \"protocol\", \"timeout\", \"internal\",\n]);\nconst SAFE_VIOLATION_KEYS = new Set([\n \"field\", \"code\", \"message\", \"policy_subject_type\", \"rule_type\", \"aggregation_scope\",\n \"resource_type\", \"resource_name\", \"quota_unit\", \"quota_window\", \"limit\", \"remaining\", \"resets_at\",\n]);\n\nfunction safeFailure(details: unknown): {\n failureId: string;\n code: string;\n category: string;\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 if (candidate.schema_version !== \"agents24.failure.v1\") return null;\n const code = typeof candidate.code === \"string\" && /^[A-Z0-9_]{2,128}$/.test(candidate.code)\n ? candidate.code\n : \"\";\n const category = typeof candidate.category === \"string\" && FAILURE_CATEGORIES.has(candidate.category)\n ? candidate.category\n : \"\";\n if (!code || !category) 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() && candidate.message.length <= 1000\n ? candidate.message.trim()\n : \"The Agent request failed.\";\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]) => SAFE_VIOLATION_KEYS.has(key) && [\"string\", \"number\", \"boolean\"].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,\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 upstreamFailureResponse(\n status: number,\n failure: NonNullable<ReturnType<typeof safeFailure>>,\n): Response {\n const candidateDetails = failure.violations?.length ? { violations: failure.violations } : {};\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: candidateDetails,\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 upstreamFailure = safeFailure(sdkError.failure);\n if (upstreamFailure) return upstreamFailureResponse(status, upstreamFailure);\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 { Agents24BffDiagnostic } from \"./bff-agent-resolution.js\";\n\ntype DiagnosticCallback = (diagnostic: Agents24BffDiagnostic) => Promise<void> | void;\n\nfunction emitDiagnostic(callback: DiagnosticCallback, diagnostic: Agents24BffDiagnostic): void {\n void Promise.resolve(callback(diagnostic)).catch(() => undefined);\n}\n\nexport function reportFailureResponse(\n callback: DiagnosticCallback | undefined,\n request: Request,\n operation: string,\n response: Response,\n): Response {\n if (!callback || response.status < 400) return response;\n void response.clone().json().then((payload: unknown) => {\n const row = payload && typeof payload === \"object\" && !Array.isArray(payload)\n ? payload as Record<string, unknown>\n : {};\n const clean = (value: unknown, pattern: RegExp) =>\n typeof value === \"string\" && pattern.test(value) ? value : undefined;\n emitDiagnostic(callback, {\n operation,\n method: request.method,\n path: new URL(request.url).pathname,\n status: response.status,\n ...(clean(row.failure_id, /^[A-Za-z0-9_-]{1,128}$/) ? { failureId: String(row.failure_id) } : {}),\n ...(clean(row.request_id, /^[A-Za-z0-9_.:-]{1,128}$/) ? { requestId: String(row.request_id) } : {}),\n ...(clean(row.code, /^[A-Z0-9_]{2,128}$/) ? { code: String(row.code) } : {}),\n ...(clean(row.category, /^[a-z_]{2,64}$/) ? { category: String(row.category) } : {}),\n });\n }).catch(() => emitDiagnostic(callback, {\n operation,\n method: request.method,\n path: new URL(request.url).pathname,\n status: response.status,\n }));\n return response;\n}\n","import type { Agents24 } from \"./client.js\";\nimport { prepareAgents24BffAgentResolution } from \"./bff-agent-resolution.js\";\nimport type { AgentBffPrincipal, AgentBffPrincipalResolution, Agents24BffDiagnostic, Agents24BffHandler, Agents24BffHandlerOptions, ResolvedAgents24BffAgent } from \"./bff-agent-resolution.js\";\nimport { errorResponse, publicError } from \"./bff-errors.js\";\nimport { reportFailureResponse } from \"./bff-diagnostics.js\";\nimport type { RuntimeEvent, ThreadSummaryEvent, ToolInputOverrides } from \"./types.js\";\n\nexport type { AgentBffPrincipal, AgentBffPrincipalResolution, Agents24BffAgent, Agents24BffDiagnostic, 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 onDiagnostic?(diagnostic: Agents24BffDiagnostic): Promise<void> | 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 onFailure?: (error: unknown) => void,\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 onFailure?.(error);\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 const streamFailure = (request: Request, operation: string) => (error: unknown) => {\n reportFailureResponse(options.onDiagnostic, request, operation, errorResponse(error));\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) {\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 }, undefined, undefined, streamFailure(request, \"chat.stream\"));\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 }, undefined, undefined, streamFailure(request, \"run.attach\"));\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 }), streamFailure(request, \"threads.events\"));\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(reportFailureResponse(options.onDiagnostic, request, \"request\", publicError(error.status, error.code, error.message)), resolution.responseHeaders);\n }\n return mergeHeaders(reportFailureResponse(options.onDiagnostic, request, \"request\", 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 onDiagnostic: options.onDiagnostic,\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 }, undefined, undefined, (error) => reportFailureResponse(options.onDiagnostic, request, \"chat.stream\", errorResponse(error))), 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 }), (error) => reportFailureResponse(options.onDiagnostic, request, \"threads.events\", errorResponse(error))), 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(reportFailureResponse(options.onDiagnostic, request, \"request\", publicError(error.status, error.code, error.message)), resolution.responseHeaders);\n return mergeHeaders(reportFailureResponse(options.onDiagnostic, request, \"request\", 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 reportFailureResponse(options.onDiagnostic, request, \"agent.resolve\", errorResponse(error));\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/bff-agent-resolution.ts","../src/errors.ts","../src/bff-errors.ts","../src/bff-diagnostics.ts","../src/bff.ts"],"names":["clean","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\nexport interface Agents24BffDiagnostic {\n operation: string;\n method: string;\n path: string;\n status: number;\n failureId?: string;\n requestId?: string;\n code?: string;\n category?: string;\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 onDiagnostic?(diagnostic: Agents24BffDiagnostic): Promise<void> | 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\nconst FAILURE_CATEGORIES = new Set([\n \"validation\", \"authentication\", \"authorization\", \"not_found\", \"policy\",\n \"conflict\", \"billing\", \"quota\", \"rate_limit\", \"capacity\", \"dependency\",\n \"protocol\", \"timeout\", \"internal\",\n]);\nconst SAFE_VIOLATION_KEYS = new Set([\n \"field\", \"code\", \"message\", \"policy_subject_type\", \"rule_type\", \"aggregation_scope\",\n \"resource_type\", \"resource_name\", \"quota_unit\", \"quota_window\", \"limit\", \"remaining\", \"resets_at\",\n]);\n\nfunction safeFailure(details: unknown): {\n failureId: string;\n code: string;\n category: string;\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 if (candidate.schema_version !== \"agents24.failure.v1\") return null;\n const code = typeof candidate.code === \"string\" && /^[A-Z0-9_]{2,128}$/.test(candidate.code)\n ? candidate.code\n : \"\";\n const category = typeof candidate.category === \"string\" && FAILURE_CATEGORIES.has(candidate.category)\n ? candidate.category\n : \"\";\n if (!code || !category) 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() && candidate.message.length <= 1000\n ? candidate.message.trim()\n : \"The Agent request failed.\";\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]) => SAFE_VIOLATION_KEYS.has(key) && [\"string\", \"number\", \"boolean\"].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,\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 upstreamFailureResponse(\n status: number,\n failure: NonNullable<ReturnType<typeof safeFailure>>,\n): Response {\n const candidateDetails = failure.violations?.length ? { violations: failure.violations } : {};\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: candidateDetails,\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 upstreamFailure = safeFailure(sdkError.failure);\n if (upstreamFailure) return upstreamFailureResponse(status, upstreamFailure);\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 { Agents24BffDiagnostic } from \"./bff-agent-resolution.js\";\n\ntype DiagnosticCallback = (diagnostic: Agents24BffDiagnostic) => Promise<void> | void;\n\nfunction emitDiagnostic(callback: DiagnosticCallback, diagnostic: Agents24BffDiagnostic): void {\n void Promise.resolve().then(() => callback(diagnostic)).catch(() => undefined);\n}\n\nexport function reportFailureResponse(\n callback: DiagnosticCallback | undefined,\n request: Request,\n operation: string,\n response: Response,\n): Response {\n if (!callback || response.status < 400) return response;\n void response.clone().json().then((payload: unknown) => {\n const row = payload && typeof payload === \"object\" && !Array.isArray(payload)\n ? payload as Record<string, unknown>\n : {};\n const clean = (value: unknown, pattern: RegExp) =>\n typeof value === \"string\" && pattern.test(value) ? value : undefined;\n emitDiagnostic(callback, {\n operation,\n method: request.method,\n path: new URL(request.url).pathname,\n status: response.status,\n ...(clean(row.failure_id, /^[A-Za-z0-9_-]{1,128}$/) ? { failureId: String(row.failure_id) } : {}),\n ...(clean(row.request_id, /^[A-Za-z0-9_.:-]{1,128}$/) ? { requestId: String(row.request_id) } : {}),\n ...(clean(row.code, /^[A-Z0-9_]{2,128}$/) ? { code: String(row.code) } : {}),\n ...(clean(row.category, /^[a-z_]{2,64}$/) ? { category: String(row.category) } : {}),\n });\n }).catch(() => emitDiagnostic(callback, {\n operation,\n method: request.method,\n path: new URL(request.url).pathname,\n status: response.status,\n }));\n return response;\n}\n","import type { Agents24 } from \"./client.js\";\nimport { prepareAgents24BffAgentResolution } from \"./bff-agent-resolution.js\";\nimport type { AgentBffPrincipal, AgentBffPrincipalResolution, Agents24BffDiagnostic, Agents24BffHandler, Agents24BffHandlerOptions, ResolvedAgents24BffAgent } from \"./bff-agent-resolution.js\";\nimport { errorResponse, publicError } from \"./bff-errors.js\";\nimport { reportFailureResponse } from \"./bff-diagnostics.js\";\nimport type { RuntimeEvent, ThreadSummaryEvent, ToolInputOverrides } from \"./types.js\";\n\nexport type { AgentBffPrincipal, AgentBffPrincipalResolution, Agents24BffAgent, Agents24BffDiagnostic, 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 onDiagnostic?(diagnostic: Agents24BffDiagnostic): Promise<void> | 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 onFailure?: (error: unknown) => void,\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 onFailure?.(error);\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 const streamFailure = (request: Request, operation: string) => (error: unknown) => {\n reportFailureResponse(options.onDiagnostic, request, operation, errorResponse(error));\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) {\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 }, undefined, undefined, streamFailure(request, \"chat.stream\"));\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 }, undefined, undefined, streamFailure(request, \"run.attach\"));\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 }), streamFailure(request, \"threads.events\"));\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(reportFailureResponse(options.onDiagnostic, request, \"request\", publicError(error.status, error.code, error.message)), resolution.responseHeaders);\n }\n return mergeHeaders(reportFailureResponse(options.onDiagnostic, request, \"request\", 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 onDiagnostic: options.onDiagnostic,\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 }, undefined, undefined, (error) => reportFailureResponse(options.onDiagnostic, request, \"chat.stream\", errorResponse(error))), 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 }), (error) => reportFailureResponse(options.onDiagnostic, request, \"threads.events\", errorResponse(error))), 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(reportFailureResponse(options.onDiagnostic, request, \"request\", publicError(error.status, error.code, error.message)), resolution.responseHeaders);\n return mergeHeaders(reportFailureResponse(options.onDiagnostic, request, \"request\", 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 reportFailureResponse(options.onDiagnostic, request, \"agent.resolve\", errorResponse(error));\n }\n };\n}\n"]}
|
|
@@ -476,6 +476,12 @@ type RunStatus = {
|
|
|
476
476
|
id: string;
|
|
477
477
|
status: string;
|
|
478
478
|
result?: unknown;
|
|
479
|
+
assistant_output?: {
|
|
480
|
+
text: string | null;
|
|
481
|
+
final_output: unknown;
|
|
482
|
+
final_output_available: boolean;
|
|
483
|
+
};
|
|
484
|
+
model_context_summary?: Record<string, unknown>;
|
|
479
485
|
failure?: FailureView | null;
|
|
480
486
|
checkpoint?: Record<string, unknown> | null;
|
|
481
487
|
run_usage?: Record<string, unknown>;
|
|
@@ -737,6 +743,8 @@ type ResourcePackageImportUpload = ResourcePackageUpload & {
|
|
|
737
743
|
};
|
|
738
744
|
type ResourceInstallationPlanUpload = ResourcePackageUpload & {
|
|
739
745
|
prune?: boolean;
|
|
746
|
+
integrationMode?: "publish-only" | "bff" | "client-deployment";
|
|
747
|
+
primaryResourceKey?: string;
|
|
740
748
|
};
|
|
741
749
|
type ResourceInstallationPullChange = {
|
|
742
750
|
status: "A" | "M" | "D";
|
|
@@ -975,12 +983,18 @@ type ResourceInstallationCreateRequest = {
|
|
|
975
983
|
package_name: string;
|
|
976
984
|
operation_id: string;
|
|
977
985
|
};
|
|
986
|
+
type ResourceInstallationApplication = {
|
|
987
|
+
integration_mode: "publish-only" | "bff" | "client-deployment";
|
|
988
|
+
primary_resource_key: string | null;
|
|
989
|
+
};
|
|
978
990
|
type ResourceInstallationPlan = {
|
|
979
991
|
installation_id: string | null;
|
|
980
992
|
operation_id: string;
|
|
981
993
|
package_id: string;
|
|
982
994
|
package_name: string;
|
|
983
995
|
package_hash: string;
|
|
996
|
+
application: ResourceInstallationApplication;
|
|
997
|
+
pending_selections: Array<Record<string, unknown>>;
|
|
984
998
|
actions: Array<Record<string, unknown>>;
|
|
985
999
|
external_requirements: Array<Record<string, unknown>>;
|
|
986
1000
|
artifact_actions: Array<Record<string, unknown>>;
|
|
@@ -1392,4 +1406,4 @@ declare class Agents24 {
|
|
|
1392
1406
|
graph(): GraphBuilder;
|
|
1393
1407
|
}
|
|
1394
1408
|
|
|
1395
|
-
export { type EffectiveResourcePolicy as $, Agents24 as A, type BackendSessionRequestOptions as B, type ClearCustomerResourcePolicyAssignmentResult as C, type ClientDeploymentListQuery as D, type ClientDeploymentListResponse as E, type ClientNativeProfile as F, type ClientRuntimeNativeProfileInput as G, type ClientRuntimeOidcConfig as H, type ClientRuntimePolicyInput as I, type ClientSessionCredentials as J, type ControlPlaneAgentRunRequest as K, type ControlPlaneRunEventsResponse as L, type ConversationRunRequest as M, type ConversationRunResult as N, type ConversationRuntimeSelectionRequest as O, type ConversationRuntimeSelectionResult as P, type ConversationThreadOptions as Q, type CreateBackendClientSessionRequest as R, type CreateClientDeploymentRequest as S, type CustomerIdentityRequest as T, type CustomerPrincipalRefRequest as U, type CustomerProfile as V, type CustomerProfileList as W, type CustomerProfilePatch as X, type CustomerProfileSearchOptions as Y, type CustomerResourcePolicyAssignment as Z, type EffectiveCustomerResourcePolicyRequest as _, type AgentCreateRequest as a, type
|
|
1409
|
+
export { type EffectiveResourcePolicy as $, Agents24 as A, type BackendSessionRequestOptions as B, type ClearCustomerResourcePolicyAssignmentResult as C, type ClientDeploymentListQuery as D, type ClientDeploymentListResponse as E, type ClientNativeProfile as F, type ClientRuntimeNativeProfileInput as G, type ClientRuntimeOidcConfig as H, type ClientRuntimePolicyInput as I, type ClientSessionCredentials as J, type ControlPlaneAgentRunRequest as K, type ControlPlaneRunEventsResponse as L, type ConversationRunRequest as M, type ConversationRunResult as N, type ConversationRuntimeSelectionRequest as O, type ConversationRuntimeSelectionResult as P, type ConversationThreadOptions as Q, type CreateBackendClientSessionRequest as R, type CreateClientDeploymentRequest as S, type CustomerIdentityRequest as T, type CustomerPrincipalRefRequest as U, type CustomerProfile as V, type CustomerProfileList as W, type CustomerProfilePatch as X, type CustomerProfileSearchOptions as Y, type CustomerResourcePolicyAssignment as Z, type EffectiveCustomerResourcePolicyRequest as _, type AgentCreateRequest as a, type ResourcePackageExportRequest as a$, type EmbedAgentAliasResolution as a0, type EmbedAttachmentContentAccessRequest as a1, type EmbedCustomerPrincipalResolveRequest as a2, type EmbedCustomerPrincipalResolveResponse as a3, type EmbedResourcePolicyRequest as a4, type EmbedRunCancelOptions as a5, type EmbedRunStartRequest as a6, type EmbedRuntimeBootstrap as a7, type EmbedStreamRequest as a8, type EmbeddedResponseFeedbackInput as a9, type ResourceCallableBindingStatus as aA, type ResourceCandidateList as aB, type ResourceInstallation as aC, type ResourceInstallationApplication as aD, type ResourceInstallationApplyRequest as aE, type ResourceInstallationBinding as aF, type ResourceInstallationCreateRequest as aG, type ResourceInstallationDeploymentRequest as aH, type ResourceInstallationLinkRequest as aI, type ResourceInstallationList as aJ, type ResourceInstallationOperation as aK, type ResourceInstallationPlan as aL, type ResourceInstallationPlanUpload as aM, type ResourceInstallationPublication as aN, type ResourceInstallationPublishRequest as aO, type ResourceInstallationPullAcceptRequest as aP, type ResourceInstallationPullChange as aQ, type ResourceInstallationPullPayload as aR, type ResourceInstallationPullPlan as aS, type ResourceInstallationResourceListOptions as aT, type ResourceInstallationSecretStatus as aU, type ResourceInstallationSecretsRequest as aV, type ResourcePackageArchive as aW, type ResourcePackageCandidateOptions as aX, type ResourcePackageDependency as aY, type ResourcePackageDiagnostic as aZ, type ResourcePackageExportPlan as a_, type FailureCategory as aa, type FailureView as ab, type FeedbackRating as ac, type FeedbackReason as ad, GraphBuilder as ae, type GraphDefinition as af, type GraphEdge as ag, type GraphHints as ah, type GraphNode as ai, type GraphValueRef as aj, type HitlAction as ak, type HitlAnswer as al, type LatestOrPinnedPolicy as am, type McpAuthStartRequest as an, type McpAuthStartResult as ao, type MultiAgentThreadListRequest as ap, type MultiAgentThreadSummaryEventOptions as aq, type NativePlatform as ar, type NodeAuthoringSpec as as, type NodeCatalogItem as at, type NodeCatalogResponse as au, type NodeSchemaResponse as av, type PortableResourceKind as aw, type RequestOptions as ax, type ResetResourcePolicyQuotaRequest as ay, type ResourceCallableBinding as az, AgentDefinitionBuilder as b, type ResourcePackageImportPreview as b0, type ResourcePackageImportResult as b1, type ResourcePackageImportUpload as b2, type ResourcePackageUpload as b3, type ResourcePackageValidationResult as b4, type ResourcePolicyList as b5, type ResourcePolicyQuotaSchedule as b6, type ResourcePolicyQuotaScheduleResult as b7, type ResourcePolicySubjectRef as b8, type ResourcePolicySummary as b9, type TraceView as bA, type UpdateClientDeploymentRequest as bB, type WorkflowInputDefinition as bC, type ResourceSelector as ba, type ResourceToolExport as bb, type ResponseFeedback as bc, type ResponseFeedbackResult as bd, type ResumeRunRequest as be, type RunCancelOptions as bf, type RunContextOptions as bg, type RunStatus as bh, type RunTrace as bi, type ServerAttachmentUploadOptions as bj, type ServerEmbedAttachmentUploadOptions as bk, type SetCustomerResourcePolicyAssignmentRequest as bl, type SetResourcePolicyQuotaScheduleRequest as bm, type StartRunResult as bn, type StateVariableDefinition as bo, type StreamRequestOptions as bp, type StreamResult as bq, type ThreadDeleteOptions as br, type ThreadDetailOptions as bs, type ThreadListOptions as bt, type ThreadSummaryEventOptions as bu, type TraceContent as bv, type TraceError as bw, type TraceSpan as bx, type TraceSpanKind as by, type TraceSpanStatus as bz, type AgentDefinitionOptions as c, type AgentListResponse as d, type AgentRef as e, type AgentResponse as f, type AgentStreamRequest as g, type AgentSummary as h, type AgentToolsetAttachment as i, type AgentUpdateRequest as j, type AgentValidationIssue as k, type AgentValidationResult as l, Agents24SDKError as m, type Agents24NodeErrorKind as n, type Agents24NodeOptions as o, type Agents24Options as p, type Agents24SDKErrorKind as q, type Agents24SDKSerializedError as r, type ArtifactDevelopmentSession as s, type ArtifactDevelopmentSessionAdmission as t, type ArtifactDevelopmentSessionPrepareRequest as u, type AttachRunRequest as v, type AttachmentContentAccessRequest as w, type BranchingHint as x, type ClientAuthMode as y, type ClientDeployment as z };
|