@agents24/client 0.2.5 → 0.2.6

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.
@@ -1,7 +1,7 @@
1
- import { createFencedRefreshCoordinator, createWebCryptoDpopKeyProvider, createAnonymousSessionProvider, createHostedOidcSessionProvider, createPkcePair } from '../chunk-ZDLWNALI.js';
2
- import { createAgents24Client } from '../chunk-PXCTIXO2.js';
3
- import '../chunk-LG3ZMQ2W.js';
4
- import '../chunk-FLTCOJZR.js';
1
+ import { createFencedRefreshCoordinator, createWebCryptoDpopKeyProvider, createAnonymousSessionProvider, createHostedOidcSessionProvider, createPkcePair } from '../chunk-ZJUK7D4O.js';
2
+ import { createAgents24Client } from '../chunk-UJEKDFKB.js';
3
+ import '../chunk-BMD35ROR.js';
4
+ import '../chunk-5LH5VDWT.js';
5
5
 
6
6
  // src/adapters/browser.ts
7
7
  var runtimeAdapter = "browser";
@@ -1,6 +1,6 @@
1
- import { createAgents24Client } from '../chunk-PXCTIXO2.js';
2
- import '../chunk-LG3ZMQ2W.js';
3
- import '../chunk-FLTCOJZR.js';
1
+ import { createAgents24Client } from '../chunk-UJEKDFKB.js';
2
+ import '../chunk-BMD35ROR.js';
3
+ import '../chunk-5LH5VDWT.js';
4
4
 
5
5
  // src/adapters/cloudflare.ts
6
6
  var runtimeAdapter = "cloudflare";
@@ -1,6 +1,6 @@
1
- import { createAgents24Client } from '../chunk-PXCTIXO2.js';
2
- import '../chunk-LG3ZMQ2W.js';
3
- import '../chunk-FLTCOJZR.js';
1
+ import { createAgents24Client } from '../chunk-UJEKDFKB.js';
2
+ import '../chunk-BMD35ROR.js';
3
+ import '../chunk-5LH5VDWT.js';
4
4
 
5
5
  // src/adapters/node.ts
6
6
  var runtimeAdapter = "node";
@@ -1,6 +1,6 @@
1
- import { createAgents24Client } from '../chunk-PXCTIXO2.js';
2
- import '../chunk-LG3ZMQ2W.js';
3
- import '../chunk-FLTCOJZR.js';
1
+ import { createAgents24Client } from '../chunk-UJEKDFKB.js';
2
+ import '../chunk-BMD35ROR.js';
3
+ import '../chunk-5LH5VDWT.js';
4
4
 
5
5
  // src/adapters/worker.ts
6
6
  var runtimeAdapter = "worker";
package/dist/bff.js CHANGED
@@ -1,5 +1,5 @@
1
- import { resolveFetch, resolveDecoderFactory, resolveEncoder, defaultIds, encodePath, createByteMultipartEncoder, appendQuery, consumeThreadSummaryStream, Agents24ClientError, responseError, responseJson, consumeRuntimeStream } from './chunk-LG3ZMQ2W.js';
2
- import './chunk-FLTCOJZR.js';
1
+ import { resolveFetch, resolveDecoderFactory, resolveEncoder, defaultIds, encodePath, createByteMultipartEncoder, appendQuery, consumeThreadSummaryStream, Agents24ClientError, responseError, responseJson, consumeRuntimeStream } from './chunk-BMD35ROR.js';
2
+ import './chunk-5LH5VDWT.js';
3
3
 
4
4
  // src/bff.ts
5
5
  function normalizeBasePath(value) {
@@ -181,7 +181,8 @@ function createBffAgentClient(options = {}) {
181
181
  while (!input.signal?.aborted) {
182
182
  try {
183
183
  const response = await request("GET", appendQuery("/threads/events", { cursor }), {
184
- accept: "text/event-stream"
184
+ accept: "text/event-stream",
185
+ ...input.signal ? { signal: input.signal } : {}
185
186
  });
186
187
  cursor = await consumeThreadSummaryStream({
187
188
  response,
package/dist/bff.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bff.ts"],"names":[],"mappings":"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","file":"bff.js","sourcesContent":["import { defaultIds, resolveDecoderFactory, resolveEncoder, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { responseError, responseJson } from \"./http.js\";\nimport { createByteMultipartEncoder } from \"./multipart.js\";\nimport { consumeRuntimeStream, consumeThreadSummaryStream, type RuntimeStreamState } from \"./stream.js\";\nimport { appendQuery, encodePath } from \"./url.js\";\nimport type {\n AgentClient,\n AbortSignalLike,\n AttachmentResult,\n EffectiveResourcePolicy,\n FetchLike,\n MultipartEncoder,\n RuntimeEventHandler,\n ResponseFeedbackResult,\n StreamResult,\n TextDecoderLike,\n TextEncoderLike,\n ThreadDetail,\n ThreadListResult,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\nimport type { AttachmentContentAccess } from \"./runtime-types.js\";\n\nexport interface Agents24BffClientOptions {\n basePath?: string;\n fetch?: FetchLike;\n decoder?: () => TextDecoderLike;\n encoder?: TextEncoderLike;\n multipart?: MultipartEncoder;\n maxReconnectAttempts?: number;\n}\n\nfunction normalizeBasePath(value: string | undefined): string {\n const path = String(value || \"/api/agents24\").trim();\n if (!path.startsWith(\"/\") || /[\\r\\n\\0?#]/.test(path)) {\n throw new Agents24ClientError(\"basePath must be a same-origin absolute path.\", {\n kind: \"configuration\",\n code: \"INVALID_BFF_BASE_PATH\",\n });\n }\n return path.replace(/\\/+$/, \"\");\n}\n\nfunction objectResult<T extends object>(value: unknown, operation: string): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(`${operation} returned an invalid response.`, {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n });\n }\n return value as T;\n}\n\nfunction shouldReconnect(error: unknown): boolean {\n return error instanceof Agents24ClientError && error.kind === \"network\" && error.retryable;\n}\n\nexport function createBffAgentClient(options: Agents24BffClientOptions = {}): AgentClient {\n const basePath = normalizeBasePath(options.basePath);\n const fetch = resolveFetch(options.fetch);\n const decoder = resolveDecoderFactory(options.decoder);\n const encoder = resolveEncoder(options.encoder);\n const ids = defaultIds();\n const maxReconnectAttempts = Math.max(0, Math.min(options.maxReconnectAttempts ?? 3, 10));\n\n const request = async (method: string, path: string, init: {\n accept?: string;\n body?: unknown;\n contentType?: string;\n idempotencyKey?: string;\n signal?: AbortSignalLike;\n } = {}) => {\n let response;\n try {\n response = await fetch(`${basePath}${path}`, {\n method,\n headers: {\n Accept: init.accept || \"application/json\",\n ...(init.contentType ? { \"Content-Type\": init.contentType } : {}),\n ...(init.idempotencyKey ? { \"Idempotency-Key\": init.idempotencyKey } : {}),\n },\n ...(init.body === undefined ? {} : { body: init.body }),\n ...(init.signal ? { signal: init.signal } : {}),\n credentials: \"same-origin\",\n redirect: \"error\",\n cache: \"no-store\",\n });\n } catch (cause) {\n throw new Agents24ClientError(\"The Agents24 BFF could not be reached.\", {\n kind: init.signal?.aborted ? \"aborted\" : \"network\",\n code: init.signal?.aborted ? \"ABORTED\" : \"NETWORK_ERROR\",\n retryable: !init.signal?.aborted,\n cause,\n });\n }\n if (!response.ok) throw await responseError(response);\n return response;\n };\n\n const json = async <T extends object>(method: string, path: string, init: Parameters<typeof request>[2] = {}): Promise<T> => {\n const body = init.body === undefined || init.contentType\n ? init.body\n : JSON.stringify(init.body);\n const response = await request(method, path, {\n ...init,\n ...(body === undefined ? {} : { body }),\n ...(init.body === undefined || init.contentType ? {} : { contentType: \"application/json\" }),\n });\n return objectResult<T>(await responseJson(response), path);\n };\n\n const attachOnce = async (\n runId: string,\n cursor: number | undefined,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n ): Promise<RuntimeStreamState> => {\n const response = await request(\"POST\", `/runs/${encodePath(runId)}/attach`, {\n accept: \"text/event-stream\",\n body: JSON.stringify(cursor === undefined ? {} : { cursor }),\n contentType: \"application/json\",\n ...(signal ? { signal } : {}),\n });\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(signal ? { signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n });\n };\n\n const withReconnect = async (\n initial: () => Promise<RuntimeStreamState>,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n ): Promise<StreamResult> => {\n let state: RuntimeStreamState | undefined;\n let attempts = 0;\n while (true) {\n try {\n state = state?.runId\n ? await attachOnce(state.runId, state.cursor ?? undefined, signal, onEvent)\n : await initial();\n } catch (error) {\n if (signal?.aborted || !shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n continue;\n }\n if (!state.detached || signal?.aborted || attempts >= maxReconnectAttempts) return state;\n attempts += 1;\n }\n };\n\n return {\n async bootstrap(input) {\n return json(\"GET\", appendQuery(\"/bootstrap\", { agent_id: input?.agentId }), input?.signal ? { signal: input.signal } : {});\n },\n resourcePolicies: {\n getEffective(input) {\n return json<EffectiveResourcePolicy>(\"GET\", \"/resource-policy\", input?.signal ? { signal: input.signal } : {});\n },\n },\n chat: {\n async stream(input, onEvent) {\n const initial = async () => consumeRuntimeStream({\n response: await request(\"POST\", \"/chat/stream\", {\n accept: \"text/event-stream\",\n body: JSON.stringify({\n input: input.input,\n attachmentIds: [...(input.attachmentIds ?? [])],\n ...(input.threadId ? { threadId: input.threadId } : {}),\n ...(input.requestedModelId ? { requestedModelId: input.requestedModelId } : {}),\n ...(input.requestedAgentId ? { requestedAgentId: input.requestedAgentId } : {}),\n toolInputs: input.toolInputs ?? {},\n metadata: input.metadata ?? {},\n client: input.client ?? { sdk_name: \"@agents24/client/bff\", sdk_version: \"0.2.2\" },\n }),\n contentType: \"application/json\",\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n }),\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n return withReconnect(initial, input.signal, onEvent);\n },\n },\n runs: {\n attach(input, onEvent) {\n return withReconnect(\n () => attachOnce(input.runId, input.cursor, input.signal, onEvent),\n input.signal,\n onEvent,\n );\n },\n cancel(input) {\n return json(\"POST\", `/runs/${encodePath(input.runId)}/cancel`, {\n body: {},\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n setFeedback(input) {\n return json<ResponseFeedbackResult>(\n \"PUT\",\n `/runs/${encodePath(input.runId)}/feedback`,\n {\n body: {\n rating: input.rating,\n ...(input.reason ? { reason: input.reason } : {}),\n ...(input.comment ? { comment: input.comment } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n },\n },\n threads: {\n list(input) {\n return json<ThreadListResult>(\"GET\", appendQuery(\"/threads\", {\n skip: input?.skip,\n limit: input?.limit,\n }), input?.signal ? { signal: input.signal } : {});\n },\n get(input) {\n return json<ThreadDetail>(\"GET\", appendQuery(`/threads/${encodePath(input.threadId)}`, {\n limit: input.limit,\n before_turn_index: input.beforeTurnIndex,\n }), input.signal ? { signal: input.signal } : {});\n },\n async events(input, onEvent: ThreadSummaryEventHandler) {\n let cursor = input.cursor;\n let attempts = 0;\n while (!input.signal?.aborted) {\n try {\n const response = await request(\"GET\", appendQuery(\"/threads/events\", { cursor }), {\n accept: \"text/event-stream\",\n });\n cursor = (await consumeThreadSummaryStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n })) ?? undefined;\n return;\n } catch (error) {\n if (input.signal?.aborted) return;\n if (!shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n }\n }\n },\n delete(input) {\n return json(\"DELETE\", `/threads/${encodePath(input.threadId)}`, {\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n setRuntimeSelection(input) {\n return json(\"PATCH\", `/threads/${encodePath(input.threadId)}/runtime-selection`, {\n body: {\n preferredAgentId: input.preferredAgentId,\n ...(input.preferredModelId ? { preferredModelId: input.preferredModelId } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n },\n attachments: {\n async uploadBatch(input) {\n const multipart = options.multipart ?? createByteMultipartEncoder(encoder);\n const encoded = await multipart.encode([\n ...(input.threadId ? [{ field: \"thread_id\", value: input.threadId }] : []),\n ...(input.requestedAgentId ? [{ field: \"requested_agent_id\", value: input.requestedAgentId }] : []),\n ...input.uploads.map((upload) => ({ field: \"files\", value: upload })),\n ]);\n const body = await json<Record<string, unknown>>(\"POST\", \"/attachments/upload\", {\n body: encoded.body,\n contentType: encoded.contentType,\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n if (!Array.isArray(body.items)) throw new Error(\"Attachment upload returned an invalid batch\");\n return body.items.map((item) => objectResult<AttachmentResult>(item, \"Attachment upload\"));\n },\n createContentAccess(input) {\n return json<AttachmentContentAccess>(\n \"POST\",\n `/attachments/${encodePath(input.attachmentId)}/content-access`,\n {\n body: { disposition: input.disposition },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n },\n },\n hitl: {\n resume(input) {\n return json(\"POST\", `/runs/${encodePath(input.runId)}/hitl/${encodePath(input.interruptId)}/resume`, {\n body: {\n interruptId: input.interruptId,\n action: input.action,\n ...(input.comment ? { comment: input.comment } : {}),\n ...(input.answers ? { answers: input.answers } : {}),\n },\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n },\n mcp: {\n startAuthorization(input) {\n return json(\"POST\", `/runs/${encodePath(input.runId)}/mcp/servers/${encodePath(input.serverId)}/auth/start`, {\n body: {\n interruptId: input.interruptId,\n redirectUri: input.redirectUri,\n popupNonce: input.popupNonce,\n codeChallenge: input.codeChallenge,\n },\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n redeemCallback(input) {\n return json(\"POST\", \"/mcp/callback/redeem\", {\n body: { code: input.code, codeVerifier: input.codeVerifier },\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n },\n sessions: {\n async revoke(input) {\n await request(\"POST\", \"/session/revoke\", {\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n },\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/bff.ts"],"names":[],"mappings":"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","file":"bff.js","sourcesContent":["import { defaultIds, resolveDecoderFactory, resolveEncoder, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { responseError, responseJson } from \"./http.js\";\nimport { createByteMultipartEncoder } from \"./multipart.js\";\nimport { consumeRuntimeStream, consumeThreadSummaryStream, type RuntimeStreamState } from \"./stream.js\";\nimport { appendQuery, encodePath } from \"./url.js\";\nimport type {\n AgentClient,\n AbortSignalLike,\n AttachmentResult,\n EffectiveResourcePolicy,\n FetchLike,\n MultipartEncoder,\n RuntimeEventHandler,\n ResponseFeedbackResult,\n StreamResult,\n TextDecoderLike,\n TextEncoderLike,\n ThreadDetail,\n ThreadListResult,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\nimport type { AttachmentContentAccess } from \"./runtime-types.js\";\n\nexport interface Agents24BffClientOptions {\n basePath?: string;\n fetch?: FetchLike;\n decoder?: () => TextDecoderLike;\n encoder?: TextEncoderLike;\n multipart?: MultipartEncoder;\n maxReconnectAttempts?: number;\n}\n\nfunction normalizeBasePath(value: string | undefined): string {\n const path = String(value || \"/api/agents24\").trim();\n if (!path.startsWith(\"/\") || /[\\r\\n\\0?#]/.test(path)) {\n throw new Agents24ClientError(\"basePath must be a same-origin absolute path.\", {\n kind: \"configuration\",\n code: \"INVALID_BFF_BASE_PATH\",\n });\n }\n return path.replace(/\\/+$/, \"\");\n}\n\nfunction objectResult<T extends object>(value: unknown, operation: string): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(`${operation} returned an invalid response.`, {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n });\n }\n return value as T;\n}\n\nfunction shouldReconnect(error: unknown): boolean {\n return error instanceof Agents24ClientError && error.kind === \"network\" && error.retryable;\n}\n\nexport function createBffAgentClient(options: Agents24BffClientOptions = {}): AgentClient {\n const basePath = normalizeBasePath(options.basePath);\n const fetch = resolveFetch(options.fetch);\n const decoder = resolveDecoderFactory(options.decoder);\n const encoder = resolveEncoder(options.encoder);\n const ids = defaultIds();\n const maxReconnectAttempts = Math.max(0, Math.min(options.maxReconnectAttempts ?? 3, 10));\n\n const request = async (method: string, path: string, init: {\n accept?: string;\n body?: unknown;\n contentType?: string;\n idempotencyKey?: string;\n signal?: AbortSignalLike;\n } = {}) => {\n let response;\n try {\n response = await fetch(`${basePath}${path}`, {\n method,\n headers: {\n Accept: init.accept || \"application/json\",\n ...(init.contentType ? { \"Content-Type\": init.contentType } : {}),\n ...(init.idempotencyKey ? { \"Idempotency-Key\": init.idempotencyKey } : {}),\n },\n ...(init.body === undefined ? {} : { body: init.body }),\n ...(init.signal ? { signal: init.signal } : {}),\n credentials: \"same-origin\",\n redirect: \"error\",\n cache: \"no-store\",\n });\n } catch (cause) {\n throw new Agents24ClientError(\"The Agents24 BFF could not be reached.\", {\n kind: init.signal?.aborted ? \"aborted\" : \"network\",\n code: init.signal?.aborted ? \"ABORTED\" : \"NETWORK_ERROR\",\n retryable: !init.signal?.aborted,\n cause,\n });\n }\n if (!response.ok) throw await responseError(response);\n return response;\n };\n\n const json = async <T extends object>(method: string, path: string, init: Parameters<typeof request>[2] = {}): Promise<T> => {\n const body = init.body === undefined || init.contentType\n ? init.body\n : JSON.stringify(init.body);\n const response = await request(method, path, {\n ...init,\n ...(body === undefined ? {} : { body }),\n ...(init.body === undefined || init.contentType ? {} : { contentType: \"application/json\" }),\n });\n return objectResult<T>(await responseJson(response), path);\n };\n\n const attachOnce = async (\n runId: string,\n cursor: number | undefined,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n ): Promise<RuntimeStreamState> => {\n const response = await request(\"POST\", `/runs/${encodePath(runId)}/attach`, {\n accept: \"text/event-stream\",\n body: JSON.stringify(cursor === undefined ? {} : { cursor }),\n contentType: \"application/json\",\n ...(signal ? { signal } : {}),\n });\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(signal ? { signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n });\n };\n\n const withReconnect = async (\n initial: () => Promise<RuntimeStreamState>,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n ): Promise<StreamResult> => {\n let state: RuntimeStreamState | undefined;\n let attempts = 0;\n while (true) {\n try {\n state = state?.runId\n ? await attachOnce(state.runId, state.cursor ?? undefined, signal, onEvent)\n : await initial();\n } catch (error) {\n if (signal?.aborted || !shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n continue;\n }\n if (!state.detached || signal?.aborted || attempts >= maxReconnectAttempts) return state;\n attempts += 1;\n }\n };\n\n return {\n async bootstrap(input) {\n return json(\"GET\", appendQuery(\"/bootstrap\", { agent_id: input?.agentId }), input?.signal ? { signal: input.signal } : {});\n },\n resourcePolicies: {\n getEffective(input) {\n return json<EffectiveResourcePolicy>(\"GET\", \"/resource-policy\", input?.signal ? { signal: input.signal } : {});\n },\n },\n chat: {\n async stream(input, onEvent) {\n const initial = async () => consumeRuntimeStream({\n response: await request(\"POST\", \"/chat/stream\", {\n accept: \"text/event-stream\",\n body: JSON.stringify({\n input: input.input,\n attachmentIds: [...(input.attachmentIds ?? [])],\n ...(input.threadId ? { threadId: input.threadId } : {}),\n ...(input.requestedModelId ? { requestedModelId: input.requestedModelId } : {}),\n ...(input.requestedAgentId ? { requestedAgentId: input.requestedAgentId } : {}),\n toolInputs: input.toolInputs ?? {},\n metadata: input.metadata ?? {},\n client: input.client ?? { sdk_name: \"@agents24/client/bff\", sdk_version: \"0.2.2\" },\n }),\n contentType: \"application/json\",\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n }),\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n return withReconnect(initial, input.signal, onEvent);\n },\n },\n runs: {\n attach(input, onEvent) {\n return withReconnect(\n () => attachOnce(input.runId, input.cursor, input.signal, onEvent),\n input.signal,\n onEvent,\n );\n },\n cancel(input) {\n return json(\"POST\", `/runs/${encodePath(input.runId)}/cancel`, {\n body: {},\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n setFeedback(input) {\n return json<ResponseFeedbackResult>(\n \"PUT\",\n `/runs/${encodePath(input.runId)}/feedback`,\n {\n body: {\n rating: input.rating,\n ...(input.reason ? { reason: input.reason } : {}),\n ...(input.comment ? { comment: input.comment } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n },\n },\n threads: {\n list(input) {\n return json<ThreadListResult>(\"GET\", appendQuery(\"/threads\", {\n skip: input?.skip,\n limit: input?.limit,\n }), input?.signal ? { signal: input.signal } : {});\n },\n get(input) {\n return json<ThreadDetail>(\"GET\", appendQuery(`/threads/${encodePath(input.threadId)}`, {\n limit: input.limit,\n before_turn_index: input.beforeTurnIndex,\n }), input.signal ? { signal: input.signal } : {});\n },\n async events(input, onEvent: ThreadSummaryEventHandler) {\n let cursor = input.cursor;\n let attempts = 0;\n while (!input.signal?.aborted) {\n try {\n const response = await request(\"GET\", appendQuery(\"/threads/events\", { cursor }), {\n accept: \"text/event-stream\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n cursor = (await consumeThreadSummaryStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n })) ?? undefined;\n return;\n } catch (error) {\n if (input.signal?.aborted) return;\n if (!shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n }\n }\n },\n delete(input) {\n return json(\"DELETE\", `/threads/${encodePath(input.threadId)}`, {\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n setRuntimeSelection(input) {\n return json(\"PATCH\", `/threads/${encodePath(input.threadId)}/runtime-selection`, {\n body: {\n preferredAgentId: input.preferredAgentId,\n ...(input.preferredModelId ? { preferredModelId: input.preferredModelId } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n },\n attachments: {\n async uploadBatch(input) {\n const multipart = options.multipart ?? createByteMultipartEncoder(encoder);\n const encoded = await multipart.encode([\n ...(input.threadId ? [{ field: \"thread_id\", value: input.threadId }] : []),\n ...(input.requestedAgentId ? [{ field: \"requested_agent_id\", value: input.requestedAgentId }] : []),\n ...input.uploads.map((upload) => ({ field: \"files\", value: upload })),\n ]);\n const body = await json<Record<string, unknown>>(\"POST\", \"/attachments/upload\", {\n body: encoded.body,\n contentType: encoded.contentType,\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n if (!Array.isArray(body.items)) throw new Error(\"Attachment upload returned an invalid batch\");\n return body.items.map((item) => objectResult<AttachmentResult>(item, \"Attachment upload\"));\n },\n createContentAccess(input) {\n return json<AttachmentContentAccess>(\n \"POST\",\n `/attachments/${encodePath(input.attachmentId)}/content-access`,\n {\n body: { disposition: input.disposition },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n },\n },\n hitl: {\n resume(input) {\n return json(\"POST\", `/runs/${encodePath(input.runId)}/hitl/${encodePath(input.interruptId)}/resume`, {\n body: {\n interruptId: input.interruptId,\n action: input.action,\n ...(input.comment ? { comment: input.comment } : {}),\n ...(input.answers ? { answers: input.answers } : {}),\n },\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n },\n mcp: {\n startAuthorization(input) {\n return json(\"POST\", `/runs/${encodePath(input.runId)}/mcp/servers/${encodePath(input.serverId)}/auth/start`, {\n body: {\n interruptId: input.interruptId,\n redirectUri: input.redirectUri,\n popupNonce: input.popupNonce,\n codeChallenge: input.codeChallenge,\n },\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n redeemCallback(input) {\n return json(\"POST\", \"/mcp/callback/redeem\", {\n body: { code: input.code, codeVerifier: input.codeVerifier },\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n },\n },\n sessions: {\n async revoke(input) {\n await request(\"POST\", \"/session/revoke\", {\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n },\n },\n };\n}\n"]}
@@ -73,12 +73,14 @@ function validateRuntimeEvent(value, options = {}) {
73
73
  if (value.version !== RUNTIME_PROTOCOL_VERSION) {
74
74
  return protocolError("unsupported_version", "Runtime event version is unsupported.", value.version);
75
75
  }
76
- if (!RUNTIME_EVENTS.has(value.event) && !includesProtocolName(options.additionalEventNames, value.event)) {
76
+ const unknownInternal = options.allowUnknownInternalEvents === true && !RUNTIME_EVENTS.has(value.event) && nonEmptyString(value.event);
77
+ if (!unknownInternal && !RUNTIME_EVENTS.has(value.event) && !includesProtocolName(options.additionalEventNames, value.event)) {
77
78
  return protocolError("unknown_event", "Runtime event name is not in the public protocol.", value.event);
78
79
  }
79
- if (!Number.isInteger(value.seq) || value.seq < 0 || !UTC_TIMESTAMP.test(value.ts || "") || !nonEmptyString(value.run_id) || !RUNTIME_STAGES.has(value.stage) && !includesProtocolName(options.additionalStages, value.stage) || !record(value.payload)) {
80
+ if (!Number.isInteger(value.seq) || value.seq < 0 || !UTC_TIMESTAMP.test(value.ts || "") || !nonEmptyString(value.run_id) || !RUNTIME_STAGES.has(value.stage) && !includesProtocolName(options.additionalStages, value.stage) && !(unknownInternal && nonEmptyString(value.stage)) || !record(value.payload)) {
80
81
  return protocolError("invalid_envelope", "Runtime event is missing a required public field.", value);
81
82
  }
83
+ if (unknownInternal) return value;
82
84
  validateBlocks(value.payload);
83
85
  validateModelTurn(value.event, value.payload);
84
86
  return value;
@@ -177,5 +179,5 @@ function parseThreadSummarySsePayload(payload) {
177
179
  }
178
180
 
179
181
  export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent };
180
- //# sourceMappingURL=chunk-FLTCOJZR.js.map
181
- //# sourceMappingURL=chunk-FLTCOJZR.js.map
182
+ //# sourceMappingURL=chunk-5LH5VDWT.js.map
183
+ //# sourceMappingURL=chunk-5LH5VDWT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generated/protocol.js"],"names":[],"mappings":"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","file":"chunk-5LH5VDWT.js","sourcesContent":["// @generated by @agents24/sdk-contract; DO NOT EDIT.\n// contract-sha256: a409af6996d10a8d94e0f6332c9a381c3535a9c8511314b6c42b237d7e057029\nconst RUNTIME_EVENTS = new Set([\"run.accepted\",\"run.snapshot\",\"run.completed\",\"run.cancelled\",\"run.paused\",\"run.failed\",\"run.detached\",\"assistant.delta\",\"model.turn.started\",\"model.turn.completed\",\"model.turn.failed\",\"reasoning.update\",\"node.status.updated\",\"tool.started\",\"tool.completed\",\"tool.failed\",\"tool.cancelled\",\"tool.child_run_started\",\"tool.child_run_finished\",\"tool.child_tool_started\",\"tool.child_tool_completed\",\"tool.child_tool_failed\",\"tool.child_tool_cancelled\",\"context_window.updated\",\"context.compression.updated\",\"run_usage.updated\",\"hitl.requested\",\"hitl.resolved\",\"mcp.authorization.required\",\"mcp.authorization.completed\",\"mcp.authorization.failed\",\"attachment.created\",\"attachment.updated\",\"attachment.ready\",\"attachment.failed\",\"source.added\",\"citation.added\",\"ui_blocks.updated\"]);\nconst RUNTIME_STAGES = new Set([\"run\",\"assistant\",\"model\",\"reasoning\",\"node\",\"tool\",\"context\",\"usage\",\"attachment\",\"source\",\"system\"]);\nconst RESPONSE_BLOCK_KINDS = new Set([\"assistant_text\",\"reasoning_note\",\"context_compression\",\"node_activity\",\"tool_call\",\"ui_blocks\",\"hitl_request\",\"error\",\"source\",\"citation\",\"attachment\",\"mcp_authorization\",\"user_message\"]);\nconst THREAD_EVENTS = new Set([\"thread.summary.updated\",\"thread.deleted\",\"snapshot_required\"]);\nconst UTC_TIMESTAMP = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$/;\n\nexport const CONTRACT_HASH = \"a409af6996d10a8d94e0f6332c9a381c3535a9c8511314b6c42b237d7e057029\";\nexport const RUNTIME_PROTOCOL_VERSION = \"run-stream.v3\";\nexport const THREAD_SUMMARY_PROTOCOL_VERSION = \"agents24.thread_summary_event.v1\";\n\nexport class Agents24ProtocolError extends Error {\n constructor(category, message, details) {\n super(message);\n this.name = \"Agents24ProtocolError\";\n this.category = category;\n this.details = details;\n }\n}\n\nfunction record(value) {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction nonEmptyString(value) {\n return typeof value === \"string\" && value.length > 0;\n}\n\nfunction protocolError(category, message, details) {\n throw new Agents24ProtocolError(category, message, details);\n}\n\nfunction includesProtocolName(values, value) {\n return Array.isArray(values) && values.includes(value);\n}\n\nexport function parseProtocolJson(payload) {\n try {\n return JSON.parse(payload);\n } catch (cause) {\n return protocolError(\"invalid_json\", \"Protocol payload is not valid JSON.\", cause);\n }\n}\n\nexport function validateResponseBlock(value) {\n if (!record(value) || !nonEmptyString(value.id) || !RESPONSE_BLOCK_KINDS.has(value.kind)) {\n return protocolError(\"invalid_response_block\", \"Response block identity or kind is invalid.\", value);\n }\n if (!Number.isInteger(value.seq) || value.seq < 0 || !nonEmptyString(value.status)) {\n return protocolError(\"invalid_response_block\", \"Response block sequence or status is invalid.\", value);\n }\n return value;\n}\n\nfunction validateBlocks(value) {\n if (!record(value)) return;\n if (value.response_block !== undefined) validateResponseBlock(value.response_block);\n const blocks = value.response_blocks;\n if (blocks === undefined) return;\n if (!Array.isArray(blocks)) {\n protocolError(\"invalid_response_block\", \"response_blocks must be an array.\", blocks);\n }\n for (const block of blocks) validateResponseBlock(block);\n}\n\nfunction validateModelTurn(event, payload) {\n if (!event.startsWith(\"model.turn.\")) return;\n const expectedStatus = event === \"model.turn.started\" ? \"running\" : event === \"model.turn.completed\" ? \"completed\" : \"failed\";\n if (!nonEmptyString(payload.model_turn_id) || ![\"agent\", \"model\"].includes(payload.kind) || payload.status !== expectedStatus) {\n protocolError(\"invalid_event\", \"Model-turn lifecycle payload is invalid.\", payload);\n }\n if (payload.iteration !== undefined && (!Number.isInteger(payload.iteration) || payload.iteration < 0)) {\n protocolError(\"invalid_event\", \"Model-turn iteration is invalid.\", payload.iteration);\n }\n if (event === \"model.turn.completed\" && ![\"text\", \"tool_calls\", \"completed\"].includes(payload.outcome)) {\n protocolError(\"invalid_event\", \"Completed model turn requires a valid outcome.\", payload.outcome);\n }\n}\n\nexport function validateRuntimeEvent(value, options = {}) {\n if (!record(value)) {\n return protocolError(\"invalid_envelope\", \"Runtime event must be an object.\", value);\n }\n if (value.version !== RUNTIME_PROTOCOL_VERSION) {\n return protocolError(\"unsupported_version\", \"Runtime event version is unsupported.\", value.version);\n }\n const unknownInternal = options.allowUnknownInternalEvents === true && !RUNTIME_EVENTS.has(value.event) && nonEmptyString(value.event);\n if (!unknownInternal && !RUNTIME_EVENTS.has(value.event) && !includesProtocolName(options.additionalEventNames, value.event)) {\n return protocolError(\"unknown_event\", \"Runtime event name is not in the public protocol.\", value.event);\n }\n if (!Number.isInteger(value.seq) || value.seq < 0 || !UTC_TIMESTAMP.test(value.ts || \"\") ||\n !nonEmptyString(value.run_id) ||\n (!RUNTIME_STAGES.has(value.stage) && !includesProtocolName(options.additionalStages, value.stage) && !(unknownInternal && nonEmptyString(value.stage))) ||\n !record(value.payload)) {\n return protocolError(\"invalid_envelope\", \"Runtime event is missing a required public field.\", value);\n }\n if (unknownInternal) return value;\n validateBlocks(value.payload);\n validateModelTurn(value.event, value.payload);\n return value;\n}\n\nexport function parseRuntimeEvent(payload, options) {\n return validateRuntimeEvent(parseProtocolJson(payload), options);\n}\n\nexport function validateThreadSummaryEvent(value) {\n if (!record(value) || value.schema_version !== THREAD_SUMMARY_PROTOCOL_VERSION ||\n !THREAD_EVENTS.has(value.event) || !Number.isInteger(value.cursor) || value.cursor < 0) {\n return protocolError(\"invalid_thread_summary\", \"Thread-summary event envelope is invalid.\", value);\n }\n if (value.event === \"thread.summary.updated\" && !record(value.thread)) {\n return protocolError(\"invalid_thread_summary\", \"Updated thread-summary event requires thread.\", value);\n }\n if (value.event === \"thread.deleted\" && !nonEmptyString(value.thread_id)) {\n return protocolError(\"invalid_thread_summary\", \"Deleted thread-summary event requires thread_id.\", value);\n }\n return value;\n}\n\nfunction parseSseBlock(block) {\n const data = [];\n for (const line of block.split(/\\r\\n|\\r|\\n/)) {\n if (!line || line.startsWith(\":\")) continue;\n const separator = line.indexOf(\":\");\n const field = separator < 0 ? line : line.slice(0, separator);\n let value = separator < 0 ? \"\" : line.slice(separator + 1);\n if (value.startsWith(\" \")) value = value.slice(1);\n if (field === \"data\") data.push(value);\n }\n return data.length ? data.join(\"\\n\") : null;\n}\n\nfunction nextSseBoundary(buffer) {\n const match = /\\r\\n\\r\\n|\\n\\n|\\r\\r/.exec(buffer);\n return match ? { index: match.index, length: match[0].length } : null;\n}\n\nexport function createSseParser(options) {\n const { decoder, onPayload, signal } = options;\n if (!decoder || typeof decoder.decode !== \"function\" || typeof onPayload !== \"function\") {\n protocolError(\"invalid_envelope\", \"SSE parser requires decoder and onPayload capabilities.\");\n }\n let buffer = \"\";\n let finished = false;\n\n async function drain(allowTrailing) {\n let boundary = nextSseBoundary(buffer);\n while (boundary) {\n const block = buffer.slice(0, boundary.index);\n buffer = buffer.slice(boundary.index + boundary.length);\n const payload = parseSseBlock(block);\n if (payload !== null) await onPayload(payload);\n if (signal?.aborted) return;\n boundary = nextSseBoundary(buffer);\n }\n if (allowTrailing && buffer.trim()) {\n const payload = parseSseBlock(buffer);\n buffer = \"\";\n if (payload !== null) await onPayload(payload);\n }\n }\n\n return {\n async push(chunk) {\n if (finished) protocolError(\"invalid_envelope\", \"Cannot push after SSE parser finish.\");\n if (signal?.aborted) return;\n buffer += decoder.decode(chunk, { stream: true });\n await drain(false);\n },\n async finish() {\n if (finished) return;\n finished = true;\n if (signal?.aborted) return;\n buffer += decoder.decode();\n await drain(true);\n },\n };\n}\n\nexport async function parseSseBytes(chunks, options) {\n const payloads = [];\n const parser = createSseParser({\n ...options,\n onPayload: async (payload) => {\n payloads.push(payload);\n if (options.onPayload) await options.onPayload(payload);\n },\n });\n for await (const chunk of chunks) {\n if (options.signal?.aborted) break;\n await parser.push(chunk);\n }\n await parser.finish();\n return payloads;\n}\n\nexport function parseRuntimeSsePayload(payload, options) {\n return parseRuntimeEvent(payload, options);\n}\n\nexport function parseThreadSummarySsePayload(payload) {\n return validateThreadSummaryEvent(parseProtocolJson(payload));\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { createSseParser, Agents24ProtocolError, parseRuntimeSsePayload, parseThreadSummarySsePayload } from './chunk-FLTCOJZR.js';
1
+ import { createSseParser, Agents24ProtocolError, parseRuntimeSsePayload, parseThreadSummarySsePayload } from './chunk-5LH5VDWT.js';
2
2
 
3
3
  // src/errors.ts
4
4
  var Agents24ClientError = class extends Error {
@@ -619,5 +619,5 @@ async function consumeThreadSummaryStream(input) {
619
619
  }
620
620
 
621
621
  export { Agents24ClientError, AuthenticatedHttp, absoluteUrl, appendQuery, canonicalHtu, consumeRuntimeStream, consumeThreadSummaryStream, createByteMultipartEncoder, defaultClock, defaultIds, dpopTokenRequest, encodePath, missingCapability, normalizeBaseUrl, resolveDecoderFactory, resolveEncoder, resolveFetch, responseError, responseJson };
622
- //# sourceMappingURL=chunk-LG3ZMQ2W.js.map
623
- //# sourceMappingURL=chunk-LG3ZMQ2W.js.map
622
+ //# sourceMappingURL=chunk-BMD35ROR.js.map
623
+ //# sourceMappingURL=chunk-BMD35ROR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/capabilities.ts","../src/url.ts","../src/http.ts","../src/multipart.ts","../src/stream.ts"],"names":["safeToken"],"mappings":"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","file":"chunk-LG3ZMQ2W.js","sourcesContent":["export type Agents24ErrorKind =\n | \"configuration\"\n | \"missing_capability\"\n | \"authentication\"\n | \"authorization\"\n | \"not_found\"\n | \"conflict\"\n | \"quota\"\n | \"rate_limit\"\n | \"validation\"\n | \"protocol\"\n | \"network\"\n | \"aborted\"\n | \"server\";\n\nexport interface FailureView {\n schema_version: \"agents24.failure.v1\";\n failure_id: string;\n code: string;\n category: string;\n message: string;\n retryable: boolean;\n request_id: string | null;\n retry_after_ms: number | null;\n details: Readonly<Record<string, unknown>>;\n}\n\nexport interface ResourcePolicyViolation {\n policy_subject_type: \"agent\" | \"client_deployment\" | \"user\";\n rule_type: \"allow\" | \"quota\";\n resource_type: \"agent\" | \"model\" | \"tool\" | \"toolset\" | \"knowledge_store\";\n resource_name: string;\n aggregation_scope?: \"subject\" | \"consumer\";\n quota_unit?: \"tokens\";\n quota_window?: \"monthly\";\n limit?: number;\n remaining?: number;\n resets_at?: string;\n}\n\nexport class Agents24ClientError extends Error {\n readonly kind: Agents24ErrorKind;\n readonly code: string;\n readonly status: number | undefined;\n readonly failure: FailureView | undefined;\n readonly requestId: string | undefined;\n readonly retryable: boolean;\n readonly violations: readonly ResourcePolicyViolation[];\n readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n kind: Agents24ErrorKind;\n code?: string;\n status?: number;\n failure?: FailureView;\n requestId?: string;\n retryable?: boolean;\n violations?: readonly ResourcePolicyViolation[];\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"Agents24ClientError\";\n this.kind = options.kind;\n this.code = options.failure?.code ?? options.code ?? \"CLIENT_ERROR\";\n this.status = options.status;\n this.failure = options.failure;\n this.requestId = options.failure?.request_id ?? options.requestId;\n this.retryable = options.failure?.retryable ?? options.retryable ?? false;\n const violations = options.failure?.details.violations;\n this.violations = Array.isArray(violations)\n ? violations as unknown as readonly ResourcePolicyViolation[]\n : options.violations ?? [];\n this.cause = options.cause;\n }\n\n get failureId(): string | undefined { return this.failure?.failure_id; }\n get category(): string | undefined { return this.failure?.category; }\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 function missingCapability(name: string): Agents24ClientError {\n return new Agents24ClientError(`Required capability is unavailable: ${name}.`, {\n kind: \"missing_capability\",\n code: \"MISSING_CAPABILITY\",\n });\n}\n\nexport function abortedError(cause?: unknown): Agents24ClientError {\n return new Agents24ClientError(\"The operation was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n cause,\n });\n}\n\nexport function protocolError(message: string, cause?: unknown): Agents24ClientError {\n return new Agents24ClientError(message, {\n kind: \"protocol\",\n code: \"PROTOCOL_ERROR\",\n cause,\n });\n}\n\nexport function errorKindForStatus(status: number): Agents24ErrorKind {\n if (status === 401) return \"authentication\";\n if (status === 403) return \"authorization\";\n if (status === 404) return \"not_found\";\n if (status === 409) return \"conflict\";\n if (status === 422 || status === 400) return \"validation\";\n if (status === 429) return \"rate_limit\";\n return \"server\";\n}\n","import { missingCapability } from \"./errors.js\";\nimport type { Clock, FetchLike, IdProvider, TextDecoderLike, TextEncoderLike } from \"./types.js\";\n\ntype GlobalCapabilities = {\n fetch?: FetchLike;\n TextDecoder?: new (label?: string, options?: { fatal?: boolean }) => TextDecoderLike;\n TextEncoder?: new () => TextEncoderLike;\n crypto?: {\n randomUUID?: () => string;\n getRandomValues?: (array: Uint8Array) => Uint8Array;\n };\n};\n\nfunction globals(): GlobalCapabilities {\n return globalThis as unknown as GlobalCapabilities;\n}\n\nexport function resolveFetch(injected?: FetchLike): FetchLike {\n if (injected) return injected;\n const implementation = globals().fetch;\n if (!implementation) throw missingCapability(\"fetch\");\n return implementation.bind(globalThis) as FetchLike;\n}\n\nexport function resolveDecoderFactory(\n injected?: () => TextDecoderLike,\n): () => TextDecoderLike {\n if (injected) return injected;\n const Constructor = globals().TextDecoder;\n if (!Constructor) throw missingCapability(\"TextDecoder\");\n return () => new Constructor(\"utf-8\", { fatal: true });\n}\n\nexport function resolveEncoder(injected?: TextEncoderLike): TextEncoderLike {\n if (injected) return injected;\n const Constructor = globals().TextEncoder;\n if (!Constructor) throw missingCapability(\"TextEncoder\");\n return new Constructor();\n}\n\nexport function defaultClock(): Clock {\n return { now: () => Date.now() };\n}\n\nfunction randomHex(bytes: number): string {\n const target = new Uint8Array(bytes);\n const crypto = globals().crypto;\n const getRandomValues = crypto?.getRandomValues?.bind(crypto);\n if (!getRandomValues) throw missingCapability(\"crypto.getRandomValues\");\n getRandomValues(target);\n return Array.from(target, (value) => value.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport function defaultIds(): IdProvider {\n return {\n createId() {\n const crypto = globals().crypto;\n const randomUUID = crypto?.randomUUID?.bind(crypto);\n return randomUUID ? randomUUID() : randomHex(16);\n },\n };\n}\n\nexport function secureRandomBytes(length: number): Uint8Array {\n const target = new Uint8Array(length);\n const crypto = globals().crypto;\n const getRandomValues = crypto?.getRandomValues?.bind(crypto);\n if (!getRandomValues) throw missingCapability(\"crypto.getRandomValues\");\n return getRandomValues(target);\n}\n","import { Agents24ClientError, missingCapability } from \"./errors.js\";\n\ninterface UrlLike {\n protocol: string;\n username: string;\n password: string;\n hash: string;\n origin: string;\n pathname: string;\n search: string;\n toString(): string;\n}\n\ntype UrlConstructor = new (input: string, base?: string) => UrlLike;\n\nfunction urlConstructor(): UrlConstructor {\n const Constructor = (globalThis as unknown as { URL?: UrlConstructor }).URL;\n if (!Constructor) throw missingCapability(\"URL\");\n return Constructor;\n}\n\nexport function normalizeBaseUrl(input: string): string {\n let parsed: UrlLike;\n try {\n parsed = new (urlConstructor())(input);\n } catch (cause) {\n throw new Agents24ClientError(\"baseUrl must be an absolute HTTP(S) URL.\", {\n kind: \"configuration\",\n code: \"INVALID_BASE_URL\",\n cause,\n });\n }\n if (!/^https?:$/.test(parsed.protocol) || parsed.username || parsed.password || parsed.hash) {\n throw new Agents24ClientError(\"baseUrl must be an absolute HTTP(S) origin without credentials or a fragment.\", {\n kind: \"configuration\",\n code: \"INVALID_BASE_URL\",\n });\n }\n return `${parsed.origin}${parsed.pathname.replace(/\\/+$/, \"\")}`;\n}\n\nexport function absoluteUrl(baseUrl: string, path: string): string {\n return new (urlConstructor())(path, `${baseUrl}/`).toString();\n}\n\nexport function canonicalHtu(input: string): string {\n const parsed = new (urlConstructor())(input);\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n}\n\nexport function encodePath(value: string): string {\n return encodeURIComponent(value);\n}\n\nexport function appendQuery(path: string, values: Readonly<Record<string, string | number | boolean | undefined>>): string {\n const query = Object.entries(values)\n .filter((entry): entry is [string, string | number | boolean] => entry[1] !== undefined)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join(\"&\");\n return query ? `${path}?${query}` : path;\n}\n","import { defaultClock } from \"./capabilities.js\";\nimport { Agents24ClientError, errorKindForStatus, type FailureView } from \"./errors.js\";\nimport { absoluteUrl } from \"./url.js\";\nimport type {\n AbortSignalLike,\n ClientSessionAccess,\n ClientSessionProvider,\n Clock,\n FetchLike,\n FetchResponseLike,\n TelemetrySink,\n} from \"./types.js\";\n\nexport interface AuthenticatedHttpOptions {\n baseUrl: string;\n sessionProvider: ClientSessionProvider;\n fetch: FetchLike;\n clock?: Clock;\n telemetry?: TelemetrySink;\n}\n\nexport interface HttpRequestOptions {\n body?: unknown;\n rawBody?: unknown;\n contentType?: string;\n accept?: string;\n idempotencyKey?: string;\n headers?: Readonly<Record<string, string>>;\n signal?: AbortSignalLike | undefined;\n operation: string;\n}\n\nconst RESERVED_REQUEST_HEADERS = new Set([\n \"accept\",\n \"authorization\",\n \"cache-control\",\n \"content-type\",\n \"cookie\",\n \"dpop\",\n \"host\",\n \"idempotency-key\",\n \"origin\",\n \"pragma\",\n \"proxy-authorization\",\n]);\n\nfunction safeToken(value: string, field: string): string {\n if (!value || /[\\r\\n\\0]/.test(value)) {\n throw new Agents24ClientError(`${field} is invalid.`, {\n kind: \"configuration\",\n code: \"INVALID_CREDENTIAL\",\n });\n }\n return value;\n}\n\nfunction appendAdditionalHeaders(\n target: Record<string, string>,\n additional: Readonly<Record<string, string>> | undefined,\n): void {\n for (const [name, value] of Object.entries(additional ?? {})) {\n const normalized = name.toLowerCase();\n if (!/^[a-z0-9!#$%&'*+.^_`|~-]+$/.test(normalized) || RESERVED_REQUEST_HEADERS.has(normalized)) {\n throw new Agents24ClientError(`Reserved or invalid request header: ${name}.`, {\n kind: \"configuration\",\n code: \"RESERVED_REQUEST_HEADER\",\n });\n }\n target[name] = safeToken(value, `Request header ${name}`);\n }\n}\n\nfunction isPublicError(value: unknown): value is FailureView {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const candidate = value as Record<string, unknown>;\n return (\n candidate.schema_version === \"agents24.failure.v1\" &&\n typeof candidate.failure_id === \"string\" &&\n typeof candidate.code === \"string\" &&\n typeof candidate.category === \"string\" &&\n typeof candidate.message === \"string\" &&\n typeof candidate.retryable === \"boolean\" &&\n Boolean(candidate.details && typeof candidate.details === \"object\" && !Array.isArray(candidate.details))\n );\n}\n\nexport async function responseError(response: FetchResponseLike): Promise<Agents24ClientError> {\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = undefined;\n }\n if (isPublicError(body)) {\n return new Agents24ClientError(body.message, {\n kind: body.code === \"RESOURCE_POLICY_QUOTA_EXCEEDED\"\n ? \"quota\"\n : errorKindForStatus(response.status),\n code: body.code,\n status: response.status,\n failure: body,\n });\n }\n return new Agents24ClientError(\"The Agents24 runtime request failed.\", {\n kind: errorKindForStatus(response.status),\n code: `HTTP_${response.status}`,\n status: response.status,\n retryable: response.status >= 500,\n });\n}\n\nexport async function responseJson(response: FetchResponseLike): Promise<unknown> {\n try {\n return await response.json();\n } catch (cause) {\n throw new Agents24ClientError(\"The runtime returned invalid JSON.\", {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n cause,\n });\n }\n}\n\nfunction assertPrivateResponse(response: FetchResponseLike): void {\n if (response.redirected || (response.status >= 300 && response.status < 400)) {\n throw new Agents24ClientError(\"Authenticated redirects are not allowed.\", {\n kind: \"network\",\n code: \"REDIRECT_REJECTED\",\n status: response.status,\n });\n }\n}\n\nexport class AuthenticatedHttp {\n readonly #baseUrl: string;\n readonly #provider: ClientSessionProvider;\n readonly #fetch: FetchLike;\n readonly #clock: Clock;\n readonly #telemetry: TelemetrySink | undefined;\n readonly #nonces = new Map<string, string>();\n #requestQueue: Promise<void> = Promise.resolve();\n\n constructor(options: AuthenticatedHttpOptions) {\n this.#baseUrl = options.baseUrl;\n this.#provider = options.sessionProvider;\n this.#fetch = options.fetch;\n this.#clock = options.clock ?? defaultClock();\n this.#telemetry = options.telemetry;\n }\n\n async #emit(event: Parameters<TelemetrySink[\"emit\"]>[0]): Promise<void> {\n try {\n await this.#telemetry?.emit(event);\n } catch {\n // Telemetry can never affect the authenticated operation.\n }\n }\n\n async #access(signal?: AbortSignalLike): Promise<ClientSessionAccess> {\n let access = await this.#provider.getAccess({ reason: \"request\", ...(signal ? { signal } : {}) });\n if (access.expiresAt <= this.#clock.now() + 30_000 && this.#provider.refresh) {\n access = await this.#provider.refresh({ reason: \"expired\", ...(signal ? { signal } : {}) });\n }\n return access;\n }\n\n async request(method: string, path: string, options: HttpRequestOptions): Promise<FetchResponseLike> {\n let releaseQueue!: () => void;\n const previousRequest = this.#requestQueue;\n this.#requestQueue = new Promise<void>((resolve) => { releaseQueue = resolve; });\n await previousRequest;\n try {\n return await this.#requestUnlocked(method, path, options);\n } finally {\n releaseQueue();\n }\n }\n\n async #requestUnlocked(method: string, path: string, options: HttpRequestOptions): Promise<FetchResponseLike> {\n const url = absoluteUrl(this.#baseUrl, path);\n const startedAt = this.#clock.now();\n let access = await this.#access(options.signal);\n let nonceRetried = false;\n let refreshRetried = false;\n let retryCount = 0;\n await this.#emit({ type: \"request.started\", operation: options.operation, method, retryCount });\n\n while (true) {\n const token = safeToken(access.accessToken, \"Access token\");\n if (access.tokenType === \"DPoP\" && !access.dpopKeyProvider) {\n throw new Agents24ClientError(\"A DPoP-bound session requires a DPoP key provider.\", {\n kind: \"configuration\",\n code: \"MISSING_DPOP_PROVIDER\",\n });\n }\n const headers: Record<string, string> = {\n Accept: options.accept ?? \"application/json\",\n Authorization: `${access.tokenType} ${token}`,\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\",\n };\n appendAdditionalHeaders(headers, options.headers);\n if (options.body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n if (options.contentType) headers[\"Content-Type\"] = options.contentType;\n if (options.idempotencyKey) headers[\"Idempotency-Key\"] = safeToken(options.idempotencyKey, \"Idempotency key\");\n if (access.dpopKeyProvider) {\n headers.DPoP = await access.dpopKeyProvider.signProof({\n method,\n url,\n accessToken: token,\n nonce: this.#nonces.get(access.sessionId ?? \"default\") ?? access.dpopNonce,\n });\n }\n let response: FetchResponseLike;\n try {\n response = await this.#fetch(url, {\n method,\n headers,\n body: options.rawBody ?? (options.body === undefined ? undefined : JSON.stringify(options.body)),\n ...(options.signal ? { signal: options.signal } : {}),\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n });\n } catch (cause) {\n if (options.signal?.aborted) {\n throw new Agents24ClientError(\"The operation was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n cause,\n });\n }\n throw new Agents24ClientError(\"The Agents24 runtime could not be reached.\", {\n kind: \"network\",\n code: \"NETWORK_ERROR\",\n retryable: true,\n cause,\n });\n }\n assertPrivateResponse(response);\n const challengedNonce = response.headers.get(\"DPoP-Nonce\");\n if (challengedNonce && access.dpopKeyProvider) {\n this.#nonces.set(access.sessionId ?? \"default\", safeToken(challengedNonce, \"DPoP nonce\"));\n }\n if (\n response.status === 401 &&\n challengedNonce &&\n access.dpopKeyProvider &&\n !nonceRetried\n ) {\n nonceRetried = true;\n retryCount += 1;\n continue;\n }\n if (response.status === 401 && this.#provider.refresh && !refreshRetried) {\n access = await this.#provider.refresh({\n reason: \"unauthorized\",\n ...(options.signal ? { signal: options.signal } : {}),\n });\n refreshRetried = true;\n nonceRetried = false;\n retryCount += 1;\n continue;\n }\n await this.#emit({\n type: \"request.completed\",\n operation: options.operation,\n method,\n status: response.status,\n durationMs: this.#clock.now() - startedAt,\n retryCount,\n });\n return response;\n }\n }\n\n async json<T>(method: string, path: string, options: HttpRequestOptions): Promise<T> {\n const response = await this.request(method, path, options);\n if (!response.ok) throw await responseError(response);\n return (await responseJson(response)) as T;\n }\n}\n\nexport async function dpopTokenRequest(input: {\n fetch: FetchLike;\n url: string;\n method?: string;\n body: unknown;\n dpopKeyProvider?: ClientSessionAccess[\"dpopKeyProvider\"];\n signal?: AbortSignalLike | undefined;\n idempotencyKey?: string;\n nonce?: string | undefined;\n prooflessInitialRequest?: boolean;\n}): Promise<FetchResponseLike> {\n const method = input.method ?? \"POST\";\n let nonce = input.nonce;\n for (let attempt = 0; attempt < 2; attempt += 1) {\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\",\n };\n if (input.idempotencyKey) headers[\"Idempotency-Key\"] = safeToken(input.idempotencyKey, \"Idempotency key\");\n if (input.dpopKeyProvider && !(input.prooflessInitialRequest && attempt === 0)) {\n headers.DPoP = await input.dpopKeyProvider.signProof({ method, url: input.url, nonce });\n }\n let response: FetchResponseLike;\n try {\n response = await input.fetch(input.url, {\n method,\n headers,\n body: JSON.stringify(input.body),\n ...(input.signal ? { signal: input.signal } : {}),\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n });\n } catch (cause) {\n if (input.signal?.aborted) {\n throw new Agents24ClientError(\"The operation was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n cause,\n });\n }\n throw new Agents24ClientError(\"The Agents24 session endpoint could not be reached.\", {\n kind: \"network\",\n code: \"NETWORK_ERROR\",\n retryable: true,\n cause,\n });\n }\n assertPrivateResponse(response);\n const challenge = response.headers.get(\"DPoP-Nonce\");\n if (response.status === 401 && challenge && input.dpopKeyProvider && attempt === 0) {\n nonce = safeToken(challenge, \"DPoP nonce\");\n continue;\n }\n if (input.prooflessInitialRequest && input.dpopKeyProvider && attempt === 0 && response.ok) {\n throw new Agents24ClientError(\"DPoP enrollment succeeded without the required nonce challenge.\", {\n kind: \"authentication\",\n code: \"DPOP_ENROLLMENT_FAILED\",\n });\n }\n return response;\n }\n throw new Agents24ClientError(\"DPoP enrollment failed.\", {\n kind: \"authentication\",\n code: \"DPOP_ENROLLMENT_FAILED\",\n });\n}\n","import { secureRandomBytes } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport type { BinaryUploadData, MultipartEncoder, MultipartPart, PortableUpload, TextEncoderLike } from \"./types.js\";\n\nfunction isBlobLike(value: BinaryUploadData): value is Exclude<BinaryUploadData, Uint8Array | ArrayBuffer> {\n return typeof (value as { arrayBuffer?: unknown }).arrayBuffer === \"function\";\n}\n\nasync function toBytes(value: BinaryUploadData): Promise<Uint8Array> {\n if (value instanceof Uint8Array) return value;\n if (value instanceof ArrayBuffer) return new Uint8Array(value);\n if (isBlobLike(value)) return new Uint8Array(await value.arrayBuffer());\n throw new Agents24ClientError(\"Upload data must be bytes, an ArrayBuffer, or a compatible blob-like value.\", {\n kind: \"validation\",\n code: \"INVALID_UPLOAD_DATA\",\n });\n}\n\nfunction safeToken(value: string, field: string): string {\n if (!value || /[\\r\\n\\0]/.test(value)) {\n throw new Agents24ClientError(`${field} contains invalid characters.`, {\n kind: \"validation\",\n code: \"INVALID_MULTIPART_METADATA\",\n });\n }\n return value.replace(/[\"\\\\]/g, \"_\");\n}\n\nfunction concat(chunks: readonly Uint8Array[]): Uint8Array {\n const length = chunks.reduce((total, chunk) => total + chunk.byteLength, 0);\n const output = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n output.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return output;\n}\n\nasync function encodePart(part: MultipartPart, boundary: string, encoder: TextEncoderLike): Promise<Uint8Array[]> {\n const field = safeToken(part.field, \"Multipart field\");\n if (typeof part.value === \"string\") {\n return [encoder.encode(`--${boundary}\\r\\nContent-Disposition: form-data; name=\"${field}\"\\r\\n\\r\\n${part.value}\\r\\n`)];\n }\n const upload = part.value as PortableUpload;\n const filename = safeToken(upload.name, \"Upload filename\");\n const mediaType = safeToken(upload.mediaType, \"Upload media type\");\n return [\n encoder.encode(\n `--${boundary}\\r\\nContent-Disposition: form-data; name=\"${field}\"; filename=\"${filename}\"\\r\\nContent-Type: ${mediaType}\\r\\n\\r\\n`,\n ),\n await toBytes(upload.data),\n encoder.encode(\"\\r\\n\"),\n ];\n}\n\nexport function createByteMultipartEncoder(encoder: TextEncoderLike): MultipartEncoder {\n return {\n async encode(parts) {\n const boundary = `agents24-${Array.from(secureRandomBytes(18), (value) => value.toString(16).padStart(2, \"0\")).join(\"\")}`;\n const chunks: Uint8Array[] = [];\n for (const part of parts) chunks.push(...(await encodePart(part, boundary, encoder)));\n chunks.push(encoder.encode(`--${boundary}--\\r\\n`));\n return {\n body: concat(chunks),\n contentType: `multipart/form-data; boundary=${boundary}`,\n };\n },\n };\n}\n","import {\n Agents24ProtocolError,\n createSseParser,\n parseRuntimeSsePayload,\n parseThreadSummarySsePayload,\n type RuntimeEvent,\n type ThreadSummaryEvent,\n} from \"./generated/protocol.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { responseError } from \"./http.js\";\nimport type {\n AbortSignalLike,\n FetchResponseLike,\n RuntimeEventHandler,\n StreamResult,\n TextDecoderLike,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\n\nexport type RuntimeStreamState = StreamResult & {\n detachReason?: \"token_expired\" | \"revoked\" | \"policy_changed\" | \"server_detach\";\n};\n\nfunction detachReason(event: RuntimeEvent): RuntimeStreamState[\"detachReason\"] {\n if (event.event !== \"run.detached\") return undefined;\n const reason = event.payload.reason;\n if (reason === \"token_expired\" || reason === \"revoked\" || reason === \"policy_changed\") return reason;\n return \"server_detach\";\n}\n\nfunction threadId(event: RuntimeEvent): string | undefined {\n const value = event.payload.thread_id;\n return typeof value === \"string\" && value ? value : undefined;\n}\n\nasync function consumeBody(input: {\n response: FetchResponseLike;\n signal?: AbortSignalLike;\n decoder: TextDecoderLike;\n onPayload(payload: string): Promise<void>;\n}): Promise<void> {\n if (!input.response.ok) throw await responseError(input.response);\n if (!input.response.body) {\n throw new Agents24ClientError(\"The stream response did not include a readable body.\", {\n kind: \"protocol\",\n code: \"MISSING_STREAM_BODY\",\n });\n }\n const reader = input.response.body.getReader();\n let locallyAborted = input.signal?.aborted ?? false;\n const onAbort = () => {\n locallyAborted = true;\n void reader.cancel(input.signal?.reason).catch(() => undefined);\n };\n input.signal?.addEventListener(\"abort\", onAbort, { once: true });\n const parser = createSseParser({\n decoder: input.decoder,\n onPayload: input.onPayload,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n try {\n while (!locallyAborted) {\n const chunk = await reader.read();\n if (chunk.value) await parser.push(chunk.value);\n if (chunk.done) break;\n }\n if (!locallyAborted) await parser.finish();\n } catch (cause) {\n if (!locallyAborted) {\n if (cause instanceof Agents24ProtocolError) throw cause;\n throw new Agents24ClientError(\"The runtime stream was interrupted.\", {\n kind: \"network\",\n code: \"STREAM_INTERRUPTED\",\n retryable: true,\n cause,\n });\n }\n } finally {\n input.signal?.removeEventListener(\"abort\", onAbort);\n reader.releaseLock?.();\n }\n if (locallyAborted) {\n throw new Agents24ClientError(\"The runtime stream was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n retryable: false,\n });\n }\n}\n\nexport async function consumeRuntimeStream(input: {\n response: FetchResponseLike;\n signal?: AbortSignalLike;\n decoder: TextDecoderLike;\n onEvent: RuntimeEventHandler;\n afterCursor?: number;\n onProgress?: (state: RuntimeStreamState) => void;\n}): Promise<RuntimeStreamState> {\n let cursor = input.afterCursor ?? null;\n let runId: string | null = null;\n let resolvedThreadId: string | null = null;\n let detached = false;\n let streamComplete = false;\n let reason: RuntimeStreamState[\"detachReason\"];\n await consumeBody({\n response: input.response,\n ...(input.signal ? { signal: input.signal } : {}),\n decoder: input.decoder,\n async onPayload(payload) {\n const event = parseRuntimeSsePayload(payload);\n if (cursor !== null && event.seq <= cursor) return;\n // Public projections preserve the durable run cursor while omitting\n // private events, so visible sequence numbers are monotonic but may skip.\n cursor = event.seq;\n runId = event.run_id;\n resolvedThreadId = threadId(event) ?? resolvedThreadId;\n reason = detachReason(event);\n detached = reason !== undefined;\n streamComplete = (\n event.event === \"run.completed\"\n || event.event === \"run.failed\"\n || event.event === \"run.cancelled\"\n || event.event === \"run.paused\"\n );\n await input.onEvent(event);\n input.onProgress?.({\n runId,\n threadId: resolvedThreadId,\n cursor,\n detached,\n ...(reason ? { detachReason: reason } : {}),\n });\n },\n });\n if (runId && !streamComplete && !detached && !input.signal?.aborted) {\n throw new Agents24ClientError(\"The runtime stream ended before a terminal or detach event.\", {\n kind: \"network\",\n code: \"STREAM_ENDED_BEFORE_TERMINAL\",\n retryable: true,\n });\n }\n return {\n runId,\n threadId: resolvedThreadId,\n cursor,\n detached,\n ...(reason ? { detachReason: reason } : {}),\n };\n}\n\nexport async function consumeThreadSummaryStream(input: {\n response: FetchResponseLike;\n signal?: AbortSignalLike;\n decoder: TextDecoderLike;\n onEvent: ThreadSummaryEventHandler;\n afterCursor?: number;\n onCursor?: (cursor: number) => void;\n}): Promise<number | null> {\n let cursor = input.afterCursor ?? null;\n await consumeBody({\n response: input.response,\n ...(input.signal ? { signal: input.signal } : {}),\n decoder: input.decoder,\n async onPayload(payload) {\n const event: ThreadSummaryEvent = parseThreadSummarySsePayload(payload);\n if (event.event !== \"snapshot_required\" && cursor !== null && event.cursor <= cursor) return;\n cursor = cursor === null ? event.cursor : Math.max(cursor, event.cursor);\n await input.onEvent(event);\n input.onCursor?.(cursor);\n },\n });\n return cursor;\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/capabilities.ts","../src/url.ts","../src/http.ts","../src/multipart.ts","../src/stream.ts"],"names":["safeToken"],"mappings":"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","file":"chunk-BMD35ROR.js","sourcesContent":["export type Agents24ErrorKind =\n | \"configuration\"\n | \"missing_capability\"\n | \"authentication\"\n | \"authorization\"\n | \"not_found\"\n | \"conflict\"\n | \"quota\"\n | \"rate_limit\"\n | \"validation\"\n | \"protocol\"\n | \"network\"\n | \"aborted\"\n | \"server\";\n\nexport interface FailureView {\n schema_version: \"agents24.failure.v1\";\n failure_id: string;\n code: string;\n category: string;\n message: string;\n retryable: boolean;\n request_id: string | null;\n retry_after_ms: number | null;\n details: Readonly<Record<string, unknown>>;\n}\n\nexport interface ResourcePolicyViolation {\n policy_subject_type: \"agent\" | \"client_deployment\" | \"user\";\n rule_type: \"allow\" | \"quota\";\n resource_type: \"agent\" | \"model\" | \"tool\" | \"toolset\" | \"knowledge_store\";\n resource_name: string;\n aggregation_scope?: \"subject\" | \"consumer\";\n quota_unit?: \"tokens\";\n quota_window?: \"monthly\";\n limit?: number;\n remaining?: number;\n resets_at?: string;\n}\n\nexport class Agents24ClientError extends Error {\n readonly kind: Agents24ErrorKind;\n readonly code: string;\n readonly status: number | undefined;\n readonly failure: FailureView | undefined;\n readonly requestId: string | undefined;\n readonly retryable: boolean;\n readonly violations: readonly ResourcePolicyViolation[];\n readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n kind: Agents24ErrorKind;\n code?: string;\n status?: number;\n failure?: FailureView;\n requestId?: string;\n retryable?: boolean;\n violations?: readonly ResourcePolicyViolation[];\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"Agents24ClientError\";\n this.kind = options.kind;\n this.code = options.failure?.code ?? options.code ?? \"CLIENT_ERROR\";\n this.status = options.status;\n this.failure = options.failure;\n this.requestId = options.failure?.request_id ?? options.requestId;\n this.retryable = options.failure?.retryable ?? options.retryable ?? false;\n const violations = options.failure?.details.violations;\n this.violations = Array.isArray(violations)\n ? violations as unknown as readonly ResourcePolicyViolation[]\n : options.violations ?? [];\n this.cause = options.cause;\n }\n\n get failureId(): string | undefined { return this.failure?.failure_id; }\n get category(): string | undefined { return this.failure?.category; }\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 function missingCapability(name: string): Agents24ClientError {\n return new Agents24ClientError(`Required capability is unavailable: ${name}.`, {\n kind: \"missing_capability\",\n code: \"MISSING_CAPABILITY\",\n });\n}\n\nexport function abortedError(cause?: unknown): Agents24ClientError {\n return new Agents24ClientError(\"The operation was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n cause,\n });\n}\n\nexport function protocolError(message: string, cause?: unknown): Agents24ClientError {\n return new Agents24ClientError(message, {\n kind: \"protocol\",\n code: \"PROTOCOL_ERROR\",\n cause,\n });\n}\n\nexport function errorKindForStatus(status: number): Agents24ErrorKind {\n if (status === 401) return \"authentication\";\n if (status === 403) return \"authorization\";\n if (status === 404) return \"not_found\";\n if (status === 409) return \"conflict\";\n if (status === 422 || status === 400) return \"validation\";\n if (status === 429) return \"rate_limit\";\n return \"server\";\n}\n","import { missingCapability } from \"./errors.js\";\nimport type { Clock, FetchLike, IdProvider, TextDecoderLike, TextEncoderLike } from \"./types.js\";\n\ntype GlobalCapabilities = {\n fetch?: FetchLike;\n TextDecoder?: new (label?: string, options?: { fatal?: boolean }) => TextDecoderLike;\n TextEncoder?: new () => TextEncoderLike;\n crypto?: {\n randomUUID?: () => string;\n getRandomValues?: (array: Uint8Array) => Uint8Array;\n };\n};\n\nfunction globals(): GlobalCapabilities {\n return globalThis as unknown as GlobalCapabilities;\n}\n\nexport function resolveFetch(injected?: FetchLike): FetchLike {\n if (injected) return injected;\n const implementation = globals().fetch;\n if (!implementation) throw missingCapability(\"fetch\");\n return implementation.bind(globalThis) as FetchLike;\n}\n\nexport function resolveDecoderFactory(\n injected?: () => TextDecoderLike,\n): () => TextDecoderLike {\n if (injected) return injected;\n const Constructor = globals().TextDecoder;\n if (!Constructor) throw missingCapability(\"TextDecoder\");\n return () => new Constructor(\"utf-8\", { fatal: true });\n}\n\nexport function resolveEncoder(injected?: TextEncoderLike): TextEncoderLike {\n if (injected) return injected;\n const Constructor = globals().TextEncoder;\n if (!Constructor) throw missingCapability(\"TextEncoder\");\n return new Constructor();\n}\n\nexport function defaultClock(): Clock {\n return { now: () => Date.now() };\n}\n\nfunction randomHex(bytes: number): string {\n const target = new Uint8Array(bytes);\n const crypto = globals().crypto;\n const getRandomValues = crypto?.getRandomValues?.bind(crypto);\n if (!getRandomValues) throw missingCapability(\"crypto.getRandomValues\");\n getRandomValues(target);\n return Array.from(target, (value) => value.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport function defaultIds(): IdProvider {\n return {\n createId() {\n const crypto = globals().crypto;\n const randomUUID = crypto?.randomUUID?.bind(crypto);\n return randomUUID ? randomUUID() : randomHex(16);\n },\n };\n}\n\nexport function secureRandomBytes(length: number): Uint8Array {\n const target = new Uint8Array(length);\n const crypto = globals().crypto;\n const getRandomValues = crypto?.getRandomValues?.bind(crypto);\n if (!getRandomValues) throw missingCapability(\"crypto.getRandomValues\");\n return getRandomValues(target);\n}\n","import { Agents24ClientError, missingCapability } from \"./errors.js\";\n\ninterface UrlLike {\n protocol: string;\n username: string;\n password: string;\n hash: string;\n origin: string;\n pathname: string;\n search: string;\n toString(): string;\n}\n\ntype UrlConstructor = new (input: string, base?: string) => UrlLike;\n\nfunction urlConstructor(): UrlConstructor {\n const Constructor = (globalThis as unknown as { URL?: UrlConstructor }).URL;\n if (!Constructor) throw missingCapability(\"URL\");\n return Constructor;\n}\n\nexport function normalizeBaseUrl(input: string): string {\n let parsed: UrlLike;\n try {\n parsed = new (urlConstructor())(input);\n } catch (cause) {\n throw new Agents24ClientError(\"baseUrl must be an absolute HTTP(S) URL.\", {\n kind: \"configuration\",\n code: \"INVALID_BASE_URL\",\n cause,\n });\n }\n if (!/^https?:$/.test(parsed.protocol) || parsed.username || parsed.password || parsed.hash) {\n throw new Agents24ClientError(\"baseUrl must be an absolute HTTP(S) origin without credentials or a fragment.\", {\n kind: \"configuration\",\n code: \"INVALID_BASE_URL\",\n });\n }\n return `${parsed.origin}${parsed.pathname.replace(/\\/+$/, \"\")}`;\n}\n\nexport function absoluteUrl(baseUrl: string, path: string): string {\n return new (urlConstructor())(path, `${baseUrl}/`).toString();\n}\n\nexport function canonicalHtu(input: string): string {\n const parsed = new (urlConstructor())(input);\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n}\n\nexport function encodePath(value: string): string {\n return encodeURIComponent(value);\n}\n\nexport function appendQuery(path: string, values: Readonly<Record<string, string | number | boolean | undefined>>): string {\n const query = Object.entries(values)\n .filter((entry): entry is [string, string | number | boolean] => entry[1] !== undefined)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join(\"&\");\n return query ? `${path}?${query}` : path;\n}\n","import { defaultClock } from \"./capabilities.js\";\nimport { Agents24ClientError, errorKindForStatus, type FailureView } from \"./errors.js\";\nimport { absoluteUrl } from \"./url.js\";\nimport type {\n AbortSignalLike,\n ClientSessionAccess,\n ClientSessionProvider,\n Clock,\n FetchLike,\n FetchResponseLike,\n TelemetrySink,\n} from \"./types.js\";\n\nexport interface AuthenticatedHttpOptions {\n baseUrl: string;\n sessionProvider: ClientSessionProvider;\n fetch: FetchLike;\n clock?: Clock;\n telemetry?: TelemetrySink;\n}\n\nexport interface HttpRequestOptions {\n body?: unknown;\n rawBody?: unknown;\n contentType?: string;\n accept?: string;\n idempotencyKey?: string;\n headers?: Readonly<Record<string, string>>;\n signal?: AbortSignalLike | undefined;\n operation: string;\n}\n\nconst RESERVED_REQUEST_HEADERS = new Set([\n \"accept\",\n \"authorization\",\n \"cache-control\",\n \"content-type\",\n \"cookie\",\n \"dpop\",\n \"host\",\n \"idempotency-key\",\n \"origin\",\n \"pragma\",\n \"proxy-authorization\",\n]);\n\nfunction safeToken(value: string, field: string): string {\n if (!value || /[\\r\\n\\0]/.test(value)) {\n throw new Agents24ClientError(`${field} is invalid.`, {\n kind: \"configuration\",\n code: \"INVALID_CREDENTIAL\",\n });\n }\n return value;\n}\n\nfunction appendAdditionalHeaders(\n target: Record<string, string>,\n additional: Readonly<Record<string, string>> | undefined,\n): void {\n for (const [name, value] of Object.entries(additional ?? {})) {\n const normalized = name.toLowerCase();\n if (!/^[a-z0-9!#$%&'*+.^_`|~-]+$/.test(normalized) || RESERVED_REQUEST_HEADERS.has(normalized)) {\n throw new Agents24ClientError(`Reserved or invalid request header: ${name}.`, {\n kind: \"configuration\",\n code: \"RESERVED_REQUEST_HEADER\",\n });\n }\n target[name] = safeToken(value, `Request header ${name}`);\n }\n}\n\nfunction isPublicError(value: unknown): value is FailureView {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const candidate = value as Record<string, unknown>;\n return (\n candidate.schema_version === \"agents24.failure.v1\" &&\n typeof candidate.failure_id === \"string\" &&\n typeof candidate.code === \"string\" &&\n typeof candidate.category === \"string\" &&\n typeof candidate.message === \"string\" &&\n typeof candidate.retryable === \"boolean\" &&\n Boolean(candidate.details && typeof candidate.details === \"object\" && !Array.isArray(candidate.details))\n );\n}\n\nexport async function responseError(response: FetchResponseLike): Promise<Agents24ClientError> {\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = undefined;\n }\n if (isPublicError(body)) {\n return new Agents24ClientError(body.message, {\n kind: body.code === \"RESOURCE_POLICY_QUOTA_EXCEEDED\"\n ? \"quota\"\n : errorKindForStatus(response.status),\n code: body.code,\n status: response.status,\n failure: body,\n });\n }\n return new Agents24ClientError(\"The Agents24 runtime request failed.\", {\n kind: errorKindForStatus(response.status),\n code: `HTTP_${response.status}`,\n status: response.status,\n retryable: response.status >= 500,\n });\n}\n\nexport async function responseJson(response: FetchResponseLike): Promise<unknown> {\n try {\n return await response.json();\n } catch (cause) {\n throw new Agents24ClientError(\"The runtime returned invalid JSON.\", {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n cause,\n });\n }\n}\n\nfunction assertPrivateResponse(response: FetchResponseLike): void {\n if (response.redirected || (response.status >= 300 && response.status < 400)) {\n throw new Agents24ClientError(\"Authenticated redirects are not allowed.\", {\n kind: \"network\",\n code: \"REDIRECT_REJECTED\",\n status: response.status,\n });\n }\n}\n\nexport class AuthenticatedHttp {\n readonly #baseUrl: string;\n readonly #provider: ClientSessionProvider;\n readonly #fetch: FetchLike;\n readonly #clock: Clock;\n readonly #telemetry: TelemetrySink | undefined;\n readonly #nonces = new Map<string, string>();\n #requestQueue: Promise<void> = Promise.resolve();\n\n constructor(options: AuthenticatedHttpOptions) {\n this.#baseUrl = options.baseUrl;\n this.#provider = options.sessionProvider;\n this.#fetch = options.fetch;\n this.#clock = options.clock ?? defaultClock();\n this.#telemetry = options.telemetry;\n }\n\n async #emit(event: Parameters<TelemetrySink[\"emit\"]>[0]): Promise<void> {\n try {\n await this.#telemetry?.emit(event);\n } catch {\n // Telemetry can never affect the authenticated operation.\n }\n }\n\n async #access(signal?: AbortSignalLike): Promise<ClientSessionAccess> {\n let access = await this.#provider.getAccess({ reason: \"request\", ...(signal ? { signal } : {}) });\n if (access.expiresAt <= this.#clock.now() + 30_000 && this.#provider.refresh) {\n access = await this.#provider.refresh({ reason: \"expired\", ...(signal ? { signal } : {}) });\n }\n return access;\n }\n\n async request(method: string, path: string, options: HttpRequestOptions): Promise<FetchResponseLike> {\n let releaseQueue!: () => void;\n const previousRequest = this.#requestQueue;\n this.#requestQueue = new Promise<void>((resolve) => { releaseQueue = resolve; });\n await previousRequest;\n try {\n return await this.#requestUnlocked(method, path, options);\n } finally {\n releaseQueue();\n }\n }\n\n async #requestUnlocked(method: string, path: string, options: HttpRequestOptions): Promise<FetchResponseLike> {\n const url = absoluteUrl(this.#baseUrl, path);\n const startedAt = this.#clock.now();\n let access = await this.#access(options.signal);\n let nonceRetried = false;\n let refreshRetried = false;\n let retryCount = 0;\n await this.#emit({ type: \"request.started\", operation: options.operation, method, retryCount });\n\n while (true) {\n const token = safeToken(access.accessToken, \"Access token\");\n if (access.tokenType === \"DPoP\" && !access.dpopKeyProvider) {\n throw new Agents24ClientError(\"A DPoP-bound session requires a DPoP key provider.\", {\n kind: \"configuration\",\n code: \"MISSING_DPOP_PROVIDER\",\n });\n }\n const headers: Record<string, string> = {\n Accept: options.accept ?? \"application/json\",\n Authorization: `${access.tokenType} ${token}`,\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\",\n };\n appendAdditionalHeaders(headers, options.headers);\n if (options.body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n if (options.contentType) headers[\"Content-Type\"] = options.contentType;\n if (options.idempotencyKey) headers[\"Idempotency-Key\"] = safeToken(options.idempotencyKey, \"Idempotency key\");\n if (access.dpopKeyProvider) {\n headers.DPoP = await access.dpopKeyProvider.signProof({\n method,\n url,\n accessToken: token,\n nonce: this.#nonces.get(access.sessionId ?? \"default\") ?? access.dpopNonce,\n });\n }\n let response: FetchResponseLike;\n try {\n response = await this.#fetch(url, {\n method,\n headers,\n body: options.rawBody ?? (options.body === undefined ? undefined : JSON.stringify(options.body)),\n ...(options.signal ? { signal: options.signal } : {}),\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n });\n } catch (cause) {\n if (options.signal?.aborted) {\n throw new Agents24ClientError(\"The operation was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n cause,\n });\n }\n throw new Agents24ClientError(\"The Agents24 runtime could not be reached.\", {\n kind: \"network\",\n code: \"NETWORK_ERROR\",\n retryable: true,\n cause,\n });\n }\n assertPrivateResponse(response);\n const challengedNonce = response.headers.get(\"DPoP-Nonce\");\n if (challengedNonce && access.dpopKeyProvider) {\n this.#nonces.set(access.sessionId ?? \"default\", safeToken(challengedNonce, \"DPoP nonce\"));\n }\n if (\n response.status === 401 &&\n challengedNonce &&\n access.dpopKeyProvider &&\n !nonceRetried\n ) {\n nonceRetried = true;\n retryCount += 1;\n continue;\n }\n if (response.status === 401 && this.#provider.refresh && !refreshRetried) {\n access = await this.#provider.refresh({\n reason: \"unauthorized\",\n ...(options.signal ? { signal: options.signal } : {}),\n });\n refreshRetried = true;\n nonceRetried = false;\n retryCount += 1;\n continue;\n }\n await this.#emit({\n type: \"request.completed\",\n operation: options.operation,\n method,\n status: response.status,\n durationMs: this.#clock.now() - startedAt,\n retryCount,\n });\n return response;\n }\n }\n\n async json<T>(method: string, path: string, options: HttpRequestOptions): Promise<T> {\n const response = await this.request(method, path, options);\n if (!response.ok) throw await responseError(response);\n return (await responseJson(response)) as T;\n }\n}\n\nexport async function dpopTokenRequest(input: {\n fetch: FetchLike;\n url: string;\n method?: string;\n body: unknown;\n dpopKeyProvider?: ClientSessionAccess[\"dpopKeyProvider\"];\n signal?: AbortSignalLike | undefined;\n idempotencyKey?: string;\n nonce?: string | undefined;\n prooflessInitialRequest?: boolean;\n}): Promise<FetchResponseLike> {\n const method = input.method ?? \"POST\";\n let nonce = input.nonce;\n for (let attempt = 0; attempt < 2; attempt += 1) {\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-store\",\n Pragma: \"no-cache\",\n };\n if (input.idempotencyKey) headers[\"Idempotency-Key\"] = safeToken(input.idempotencyKey, \"Idempotency key\");\n if (input.dpopKeyProvider && !(input.prooflessInitialRequest && attempt === 0)) {\n headers.DPoP = await input.dpopKeyProvider.signProof({ method, url: input.url, nonce });\n }\n let response: FetchResponseLike;\n try {\n response = await input.fetch(input.url, {\n method,\n headers,\n body: JSON.stringify(input.body),\n ...(input.signal ? { signal: input.signal } : {}),\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n });\n } catch (cause) {\n if (input.signal?.aborted) {\n throw new Agents24ClientError(\"The operation was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n cause,\n });\n }\n throw new Agents24ClientError(\"The Agents24 session endpoint could not be reached.\", {\n kind: \"network\",\n code: \"NETWORK_ERROR\",\n retryable: true,\n cause,\n });\n }\n assertPrivateResponse(response);\n const challenge = response.headers.get(\"DPoP-Nonce\");\n if (response.status === 401 && challenge && input.dpopKeyProvider && attempt === 0) {\n nonce = safeToken(challenge, \"DPoP nonce\");\n continue;\n }\n if (input.prooflessInitialRequest && input.dpopKeyProvider && attempt === 0 && response.ok) {\n throw new Agents24ClientError(\"DPoP enrollment succeeded without the required nonce challenge.\", {\n kind: \"authentication\",\n code: \"DPOP_ENROLLMENT_FAILED\",\n });\n }\n return response;\n }\n throw new Agents24ClientError(\"DPoP enrollment failed.\", {\n kind: \"authentication\",\n code: \"DPOP_ENROLLMENT_FAILED\",\n });\n}\n","import { secureRandomBytes } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport type { BinaryUploadData, MultipartEncoder, MultipartPart, PortableUpload, TextEncoderLike } from \"./types.js\";\n\nfunction isBlobLike(value: BinaryUploadData): value is Exclude<BinaryUploadData, Uint8Array | ArrayBuffer> {\n return typeof (value as { arrayBuffer?: unknown }).arrayBuffer === \"function\";\n}\n\nasync function toBytes(value: BinaryUploadData): Promise<Uint8Array> {\n if (value instanceof Uint8Array) return value;\n if (value instanceof ArrayBuffer) return new Uint8Array(value);\n if (isBlobLike(value)) return new Uint8Array(await value.arrayBuffer());\n throw new Agents24ClientError(\"Upload data must be bytes, an ArrayBuffer, or a compatible blob-like value.\", {\n kind: \"validation\",\n code: \"INVALID_UPLOAD_DATA\",\n });\n}\n\nfunction safeToken(value: string, field: string): string {\n if (!value || /[\\r\\n\\0]/.test(value)) {\n throw new Agents24ClientError(`${field} contains invalid characters.`, {\n kind: \"validation\",\n code: \"INVALID_MULTIPART_METADATA\",\n });\n }\n return value.replace(/[\"\\\\]/g, \"_\");\n}\n\nfunction concat(chunks: readonly Uint8Array[]): Uint8Array {\n const length = chunks.reduce((total, chunk) => total + chunk.byteLength, 0);\n const output = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n output.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return output;\n}\n\nasync function encodePart(part: MultipartPart, boundary: string, encoder: TextEncoderLike): Promise<Uint8Array[]> {\n const field = safeToken(part.field, \"Multipart field\");\n if (typeof part.value === \"string\") {\n return [encoder.encode(`--${boundary}\\r\\nContent-Disposition: form-data; name=\"${field}\"\\r\\n\\r\\n${part.value}\\r\\n`)];\n }\n const upload = part.value as PortableUpload;\n const filename = safeToken(upload.name, \"Upload filename\");\n const mediaType = safeToken(upload.mediaType, \"Upload media type\");\n return [\n encoder.encode(\n `--${boundary}\\r\\nContent-Disposition: form-data; name=\"${field}\"; filename=\"${filename}\"\\r\\nContent-Type: ${mediaType}\\r\\n\\r\\n`,\n ),\n await toBytes(upload.data),\n encoder.encode(\"\\r\\n\"),\n ];\n}\n\nexport function createByteMultipartEncoder(encoder: TextEncoderLike): MultipartEncoder {\n return {\n async encode(parts) {\n const boundary = `agents24-${Array.from(secureRandomBytes(18), (value) => value.toString(16).padStart(2, \"0\")).join(\"\")}`;\n const chunks: Uint8Array[] = [];\n for (const part of parts) chunks.push(...(await encodePart(part, boundary, encoder)));\n chunks.push(encoder.encode(`--${boundary}--\\r\\n`));\n return {\n body: concat(chunks),\n contentType: `multipart/form-data; boundary=${boundary}`,\n };\n },\n };\n}\n","import {\n Agents24ProtocolError,\n createSseParser,\n parseRuntimeSsePayload,\n parseThreadSummarySsePayload,\n type RuntimeEvent,\n type ThreadSummaryEvent,\n} from \"./generated/protocol.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { responseError } from \"./http.js\";\nimport type {\n AbortSignalLike,\n FetchResponseLike,\n RuntimeEventHandler,\n StreamResult,\n TextDecoderLike,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\n\nexport type RuntimeStreamState = StreamResult & {\n detachReason?: \"token_expired\" | \"revoked\" | \"policy_changed\" | \"server_detach\";\n};\n\nfunction detachReason(event: RuntimeEvent): RuntimeStreamState[\"detachReason\"] {\n if (event.event !== \"run.detached\") return undefined;\n const reason = event.payload.reason;\n if (reason === \"token_expired\" || reason === \"revoked\" || reason === \"policy_changed\") return reason;\n return \"server_detach\";\n}\n\nfunction threadId(event: RuntimeEvent): string | undefined {\n const value = event.payload.thread_id;\n return typeof value === \"string\" && value ? value : undefined;\n}\n\nasync function consumeBody(input: {\n response: FetchResponseLike;\n signal?: AbortSignalLike;\n decoder: TextDecoderLike;\n onPayload(payload: string): Promise<void>;\n}): Promise<void> {\n if (!input.response.ok) throw await responseError(input.response);\n if (!input.response.body) {\n throw new Agents24ClientError(\"The stream response did not include a readable body.\", {\n kind: \"protocol\",\n code: \"MISSING_STREAM_BODY\",\n });\n }\n const reader = input.response.body.getReader();\n let locallyAborted = input.signal?.aborted ?? false;\n const onAbort = () => {\n locallyAborted = true;\n void reader.cancel(input.signal?.reason).catch(() => undefined);\n };\n input.signal?.addEventListener(\"abort\", onAbort, { once: true });\n const parser = createSseParser({\n decoder: input.decoder,\n onPayload: input.onPayload,\n ...(input.signal ? { signal: input.signal } : {}),\n });\n try {\n while (!locallyAborted) {\n const chunk = await reader.read();\n if (chunk.value) await parser.push(chunk.value);\n if (chunk.done) break;\n }\n if (!locallyAborted) await parser.finish();\n } catch (cause) {\n if (!locallyAborted) {\n if (cause instanceof Agents24ProtocolError) throw cause;\n throw new Agents24ClientError(\"The runtime stream was interrupted.\", {\n kind: \"network\",\n code: \"STREAM_INTERRUPTED\",\n retryable: true,\n cause,\n });\n }\n } finally {\n input.signal?.removeEventListener(\"abort\", onAbort);\n reader.releaseLock?.();\n }\n if (locallyAborted) {\n throw new Agents24ClientError(\"The runtime stream was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n retryable: false,\n });\n }\n}\n\nexport async function consumeRuntimeStream(input: {\n response: FetchResponseLike;\n signal?: AbortSignalLike;\n decoder: TextDecoderLike;\n onEvent: RuntimeEventHandler;\n afterCursor?: number;\n onProgress?: (state: RuntimeStreamState) => void;\n}): Promise<RuntimeStreamState> {\n let cursor = input.afterCursor ?? null;\n let runId: string | null = null;\n let resolvedThreadId: string | null = null;\n let detached = false;\n let streamComplete = false;\n let reason: RuntimeStreamState[\"detachReason\"];\n await consumeBody({\n response: input.response,\n ...(input.signal ? { signal: input.signal } : {}),\n decoder: input.decoder,\n async onPayload(payload) {\n const event = parseRuntimeSsePayload(payload);\n if (cursor !== null && event.seq <= cursor) return;\n // Public projections preserve the durable run cursor while omitting\n // private events, so visible sequence numbers are monotonic but may skip.\n cursor = event.seq;\n runId = event.run_id;\n resolvedThreadId = threadId(event) ?? resolvedThreadId;\n reason = detachReason(event);\n detached = reason !== undefined;\n streamComplete = (\n event.event === \"run.completed\"\n || event.event === \"run.failed\"\n || event.event === \"run.cancelled\"\n || event.event === \"run.paused\"\n );\n await input.onEvent(event);\n input.onProgress?.({\n runId,\n threadId: resolvedThreadId,\n cursor,\n detached,\n ...(reason ? { detachReason: reason } : {}),\n });\n },\n });\n if (runId && !streamComplete && !detached && !input.signal?.aborted) {\n throw new Agents24ClientError(\"The runtime stream ended before a terminal or detach event.\", {\n kind: \"network\",\n code: \"STREAM_ENDED_BEFORE_TERMINAL\",\n retryable: true,\n });\n }\n return {\n runId,\n threadId: resolvedThreadId,\n cursor,\n detached,\n ...(reason ? { detachReason: reason } : {}),\n };\n}\n\nexport async function consumeThreadSummaryStream(input: {\n response: FetchResponseLike;\n signal?: AbortSignalLike;\n decoder: TextDecoderLike;\n onEvent: ThreadSummaryEventHandler;\n afterCursor?: number;\n onCursor?: (cursor: number) => void;\n}): Promise<number | null> {\n let cursor = input.afterCursor ?? null;\n await consumeBody({\n response: input.response,\n ...(input.signal ? { signal: input.signal } : {}),\n decoder: input.decoder,\n async onPayload(payload) {\n const event: ThreadSummaryEvent = parseThreadSummarySsePayload(payload);\n if (event.event !== \"snapshot_required\" && cursor !== null && event.cursor <= cursor) return;\n cursor = cursor === null ? event.cursor : Math.max(cursor, event.cursor);\n await input.onEvent(event);\n input.onCursor?.(cursor);\n },\n });\n return cursor;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Agents24ClientError, normalizeBaseUrl, resolveFetch, resolveDecoderFactory, defaultClock, defaultIds, AuthenticatedHttp, encodePath, createByteMultipartEncoder, resolveEncoder, appendQuery, consumeThreadSummaryStream, responseJson, responseError, consumeRuntimeStream } from './chunk-LG3ZMQ2W.js';
1
+ import { Agents24ClientError, normalizeBaseUrl, resolveFetch, resolveDecoderFactory, defaultClock, defaultIds, AuthenticatedHttp, encodePath, createByteMultipartEncoder, resolveEncoder, appendQuery, consumeThreadSummaryStream, responseJson, responseError, consumeRuntimeStream } from './chunk-BMD35ROR.js';
2
2
 
3
3
  // src/client.ts
4
4
  function objectResult(value, operation) {
@@ -427,5 +427,5 @@ function createAgents24Client(options) {
427
427
  }
428
428
 
429
429
  export { createAgents24Client };
430
- //# sourceMappingURL=chunk-PXCTIXO2.js.map
431
- //# sourceMappingURL=chunk-PXCTIXO2.js.map
430
+ //# sourceMappingURL=chunk-UJEKDFKB.js.map
431
+ //# sourceMappingURL=chunk-UJEKDFKB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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","file":"chunk-PXCTIXO2.js","sourcesContent":["import { defaultClock, defaultIds, resolveDecoderFactory, resolveEncoder, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { AuthenticatedHttp, responseError, responseJson } from \"./http.js\";\nimport { createByteMultipartEncoder } from \"./multipart.js\";\nimport { consumeRuntimeStream, consumeThreadSummaryStream, type RuntimeStreamState } from \"./stream.js\";\nimport { appendQuery, encodePath, normalizeBaseUrl } from \"./url.js\";\nimport type {\n AgentClient,\n Agents24ClientOptions,\n AttachmentResult,\n ClientBootstrap,\n EffectiveResourcePolicy,\n HitlResumeResult,\n McpAuthorizationResult,\n McpCallbackResult,\n ResponseFeedbackResult,\n RuntimeEventHandler,\n StreamResult,\n ThreadDetail,\n ThreadListResult,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\nimport type { AttachmentContentAccess } from \"./runtime-types.js\";\n\nfunction objectResult<T extends object>(value: unknown, operation: string): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(`${operation} returned an invalid response.`, {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n });\n }\n return value as T;\n}\n\nfunction deploymentPath(deploymentId: string, suffix: string): string {\n return `/public/client-runtime/deployments/${encodePath(deploymentId)}${suffix}`;\n}\n\nfunction shouldReconnect(error: unknown): boolean {\n return error instanceof Agents24ClientError && error.kind === \"network\" && error.retryable;\n}\n\nexport function createAgents24Client(options: Agents24ClientOptions): AgentClient {\n if (!options.deploymentId || /[\\r\\n\\0/]/.test(options.deploymentId)) {\n throw new Agents24ClientError(\"deploymentId is invalid.\", {\n kind: \"configuration\",\n code: \"INVALID_DEPLOYMENT_ID\",\n });\n }\n if (options.transport !== undefined && options.transport !== \"auto\" && options.transport !== \"fetch\") {\n throw new Agents24ClientError(\"The requested transport is unavailable.\", {\n kind: \"missing_capability\",\n code: \"MISSING_TRANSPORT\",\n });\n }\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const decoder = resolveDecoderFactory(options.decoder);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const maxReconnectAttempts = Math.max(0, Math.min(options.maxReconnectAttempts ?? 3, 10));\n const http = new AuthenticatedHttp({\n baseUrl,\n sessionProvider: options.sessionProvider,\n fetch,\n clock,\n ...(options.telemetry ? { telemetry: options.telemetry } : {}),\n });\n const emit = async (event: Parameters<NonNullable<typeof options.telemetry>[\"emit\"]>[0]): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Telemetry is isolated from runtime behavior and credentials.\n }\n };\n\n const attach = async (\n runId: string,\n cursor: number | undefined,\n headers: Readonly<Record<string, string>> | undefined,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n onProgress?: (state: RuntimeStreamState) => void,\n ): Promise<RuntimeStreamState> => {\n const response = await http.request(\n \"POST\",\n deploymentPath(options.deploymentId, `/runs/${encodePath(runId)}/attach`),\n {\n operation: \"runs.attach\",\n accept: \"text/event-stream\",\n body: cursor === undefined ? {} : { cursor },\n ...(headers ? { headers } : {}),\n ...(signal ? { signal } : {}),\n },\n );\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(signal ? { signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n ...(onProgress ? { onProgress } : {}),\n });\n };\n\n const reconnect = async (\n initial: (onProgress: (next: RuntimeStreamState) => void) => Promise<RuntimeStreamState>,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n operation: \"chat.stream\" | \"runs.attach\",\n headers?: Readonly<Record<string, string>>,\n ): Promise<StreamResult> => {\n let state: RuntimeStreamState | undefined;\n let attempt = 0;\n const onProgress = (next: RuntimeStreamState) => {\n if (!state) {\n void emit({\n type: \"stream.connected\",\n operation,\n ...(next.runId ? { runId: next.runId } : {}),\n ...(next.cursor === null ? {} : { cursor: next.cursor }),\n attempt,\n });\n }\n state = next;\n };\n while (true) {\n try {\n state = state?.runId\n ? await attach(state.runId, state.cursor ?? undefined, headers, signal, onEvent, onProgress)\n : await initial(onProgress);\n } catch (error) {\n if (signal?.aborted || !shouldReconnect(error) || attempt >= maxReconnectAttempts) throw error;\n attempt += 1;\n await emit({\n type: \"stream.reconnecting\",\n operation,\n ...(state?.runId ? { runId: state.runId } : {}),\n ...(state?.cursor == null ? {} : { cursor: state.cursor }),\n attempt,\n reason: \"network\",\n });\n continue;\n }\n if (!state.detached || signal?.aborted) {\n await emit({\n type: \"stream.completed\",\n operation,\n ...(state.runId ? { runId: state.runId } : {}),\n ...(state.cursor === null ? {} : { cursor: state.cursor }),\n attempt,\n });\n return state;\n }\n await emit({\n type: \"stream.detached\",\n operation,\n ...(state.runId ? { runId: state.runId } : {}),\n ...(state.cursor === null ? {} : { cursor: state.cursor }),\n attempt,\n reason: state.detachReason ?? \"server_detach\",\n });\n if (attempt >= maxReconnectAttempts || state.detachReason === \"revoked\" || state.detachReason === \"policy_changed\") {\n return state;\n }\n if (state.detachReason === \"token_expired\" && options.sessionProvider.refresh) {\n await options.sessionProvider.refresh({ reason: \"stream_detached\", ...(signal ? { signal } : {}) });\n }\n attempt += 1;\n }\n };\n\n return {\n async bootstrap(input) {\n let response: Awaited<ReturnType<typeof fetch>>;\n try {\n response = await fetch(\n `${baseUrl}${deploymentPath(options.deploymentId, \"/bootstrap\")}`,\n {\n method: \"GET\",\n headers: { Accept: \"application/json\", \"Cache-Control\": \"no-store\", Pragma: \"no-cache\" },\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n ...(input?.signal ? { signal: input.signal } : {}),\n },\n );\n } catch (cause) {\n throw new Agents24ClientError(\"The Agents24 deployment bootstrap could not be reached.\", {\n kind: input?.signal?.aborted ? \"aborted\" : \"network\",\n code: input?.signal?.aborted ? \"ABORTED\" : \"NETWORK_ERROR\",\n retryable: !input?.signal?.aborted,\n cause,\n });\n }\n if (response.redirected || (response.status >= 300 && response.status < 400)) {\n throw new Agents24ClientError(\"Client-runtime redirects are not allowed.\", {\n kind: \"network\",\n code: \"REDIRECT_REJECTED\",\n status: response.status,\n });\n }\n if (!response.ok) throw await responseError(response);\n return objectResult<ClientBootstrap>(await responseJson(response), \"Bootstrap\");\n },\n resourcePolicies: {\n async getEffective(input) {\n const response = await http.request(\n \"GET\",\n deploymentPath(options.deploymentId, \"/resource-policy\"),\n { operation: \"resourcePolicies.getEffective\", ...(input?.signal ? { signal: input.signal } : {}) },\n );\n return objectResult<EffectiveResourcePolicy>(await responseJson(response), \"Effective Resource Policy\");\n },\n },\n chat: {\n async stream(input, onEvent) {\n const initial = async (onProgress: (state: RuntimeStreamState) => void) => {\n const response = await http.request(\n \"POST\",\n deploymentPath(options.deploymentId, \"/chat/stream\"),\n {\n operation: \"chat.stream\",\n accept: \"text/event-stream\",\n idempotencyKey: input.idempotencyKey,\n ...(input.headers ? { headers: input.headers } : {}),\n body: {\n input: input.input,\n attachment_ids: [...(input.attachmentIds ?? [])],\n ...(input.threadId ? { thread_id: input.threadId } : {}),\n ...(input.requestedModelId ? { requested_model_id: input.requestedModelId } : {}),\n tool_inputs: input.toolInputs ?? {},\n metadata: input.metadata ?? {},\n client: input.client ?? { sdk_name: \"@agents24/client\", sdk_version: \"0.2.2\" },\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n onProgress,\n });\n };\n return reconnect(initial, input.signal, onEvent, \"chat.stream\", input.headers);\n },\n },\n runs: {\n async attach(input, onEvent) {\n const initial = (onProgress: (state: RuntimeStreamState) => void) =>\n attach(input.runId, input.cursor, input.headers, input.signal, onEvent, onProgress);\n return reconnect(initial, input.signal, onEvent, \"runs.attach\", input.headers);\n },\n async cancel(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, `/runs/${encodePath(input.runId)}/cancel`),\n {\n operation: \"runs.cancel\",\n body: {},\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<Record<string, unknown>>(result, \"Run cancellation\");\n },\n async setFeedback(input) {\n const result = await http.json<unknown>(\n \"PUT\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/feedback`,\n ),\n {\n operation: \"runs.setFeedback\",\n body: {\n rating: input.rating,\n ...(input.reason ? { reason: input.reason } : {}),\n ...(input.comment ? { comment: input.comment } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<ResponseFeedbackResult>(result, \"Response feedback\");\n },\n },\n threads: {\n async list(input) {\n const path = appendQuery(deploymentPath(options.deploymentId, \"/threads\"), {\n skip: input?.skip,\n limit: input?.limit,\n });\n const result = await http.json<unknown>(\"GET\", path, {\n operation: \"threads.list\",\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n return objectResult<ThreadListResult>(result, \"Thread listing\");\n },\n async get(input) {\n const path = appendQuery(\n deploymentPath(options.deploymentId, `/threads/${encodePath(input.threadId)}`),\n {\n limit: input.limit,\n before_turn_index: input.beforeTurnIndex,\n },\n );\n const result = await http.json<unknown>(\"GET\", path, {\n operation: \"threads.get\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n return objectResult<ThreadDetail>(result, \"Thread detail\");\n },\n async events(input, onEvent: ThreadSummaryEventHandler) {\n let cursor = input.cursor;\n let attempts = 0;\n while (!input.signal?.aborted) {\n try {\n const path = appendQuery(deploymentPath(options.deploymentId, \"/threads/events\"), { cursor });\n const response = await http.request(\"GET\", path, {\n operation: \"threads.events\",\n accept: \"text/event-stream\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n cursor = (await consumeThreadSummaryStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n onCursor(next) {\n cursor = next;\n },\n })) ?? undefined;\n return;\n } catch (error) {\n if (input.signal?.aborted) return;\n if (!shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n }\n }\n },\n async delete(input) {\n const result = await http.json<unknown>(\n \"DELETE\",\n deploymentPath(options.deploymentId, `/threads/${encodePath(input.threadId)}`),\n {\n operation: \"threads.delete\",\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<Record<string, unknown>>(result, \"Thread deletion\");\n },\n },\n attachments: {\n async uploadBatch(input) {\n const multipart = options.multipart ?? createByteMultipartEncoder(resolveEncoder(options.encoder));\n const encoded = await multipart.encode([\n ...(input.threadId ? [{ field: \"thread_id\", value: input.threadId }] : []),\n ...input.uploads.map((upload) => ({ field: \"files\", value: upload })),\n ]);\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, \"/attachments/upload\"),\n {\n operation: \"attachments.upload\",\n rawBody: encoded.body,\n contentType: encoded.contentType,\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n const body = objectResult<Record<string, unknown>>(result, \"Attachment upload\");\n if (!Array.isArray(body.items)) throw new Error(\"Attachment upload returned an invalid batch\");\n return body.items.map((item) => objectResult<AttachmentResult>(item, \"Attachment upload\"));\n },\n async createContentAccess(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/attachments/${encodePath(input.attachmentId)}/content-access`,\n ),\n {\n operation: \"attachments.create_content_access\",\n body: { disposition: input.disposition },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<AttachmentContentAccess>(result, \"Attachment content access\");\n },\n },\n hitl: {\n async resume(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/hitl/${encodePath(input.interruptId)}/resume`,\n ),\n {\n operation: \"hitl.resume\",\n idempotencyKey: input.idempotencyKey,\n body: {\n schema_version: \"agents24.hitl.resume.v2\",\n interrupt_id: input.interruptId,\n action: input.action,\n ...(input.comment ? { comment: input.comment } : {}),\n ...(input.answers ? { answers: input.answers } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<HitlResumeResult>(result, \"HITL resume\");\n },\n },\n mcp: {\n async startAuthorization(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/mcp/servers/${encodePath(input.serverId)}/auth/start`,\n ),\n {\n operation: \"mcp.startAuthorization\",\n idempotencyKey: input.idempotencyKey,\n body: {\n interrupt_id: input.interruptId,\n redirect_uri: input.redirectUri,\n popup_nonce: input.popupNonce,\n code_challenge: input.codeChallenge,\n code_challenge_method: \"S256\",\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<McpAuthorizationResult>(result, \"MCP authorization start\");\n },\n async redeemCallback(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, \"/mcp/callback/redeem\"),\n {\n operation: \"mcp.redeemCallback\",\n idempotencyKey: input.idempotencyKey,\n body: { code: input.code, code_verifier: input.codeVerifier },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<McpCallbackResult>(result, \"MCP callback redemption\");\n },\n },\n sessions: {\n async revoke(input) {\n if (!options.sessionProvider.revoke) {\n throw new Agents24ClientError(\"The configured session provider cannot revoke sessions.\", {\n kind: \"missing_capability\",\n code: \"SESSION_REVOKE_UNAVAILABLE\",\n });\n }\n await options.sessionProvider.revoke({\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n },\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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","file":"chunk-UJEKDFKB.js","sourcesContent":["import { defaultClock, defaultIds, resolveDecoderFactory, resolveEncoder, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { AuthenticatedHttp, responseError, responseJson } from \"./http.js\";\nimport { createByteMultipartEncoder } from \"./multipart.js\";\nimport { consumeRuntimeStream, consumeThreadSummaryStream, type RuntimeStreamState } from \"./stream.js\";\nimport { appendQuery, encodePath, normalizeBaseUrl } from \"./url.js\";\nimport type {\n AgentClient,\n Agents24ClientOptions,\n AttachmentResult,\n ClientBootstrap,\n EffectiveResourcePolicy,\n HitlResumeResult,\n McpAuthorizationResult,\n McpCallbackResult,\n ResponseFeedbackResult,\n RuntimeEventHandler,\n StreamResult,\n ThreadDetail,\n ThreadListResult,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\nimport type { AttachmentContentAccess } from \"./runtime-types.js\";\n\nfunction objectResult<T extends object>(value: unknown, operation: string): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(`${operation} returned an invalid response.`, {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n });\n }\n return value as T;\n}\n\nfunction deploymentPath(deploymentId: string, suffix: string): string {\n return `/public/client-runtime/deployments/${encodePath(deploymentId)}${suffix}`;\n}\n\nfunction shouldReconnect(error: unknown): boolean {\n return error instanceof Agents24ClientError && error.kind === \"network\" && error.retryable;\n}\n\nexport function createAgents24Client(options: Agents24ClientOptions): AgentClient {\n if (!options.deploymentId || /[\\r\\n\\0/]/.test(options.deploymentId)) {\n throw new Agents24ClientError(\"deploymentId is invalid.\", {\n kind: \"configuration\",\n code: \"INVALID_DEPLOYMENT_ID\",\n });\n }\n if (options.transport !== undefined && options.transport !== \"auto\" && options.transport !== \"fetch\") {\n throw new Agents24ClientError(\"The requested transport is unavailable.\", {\n kind: \"missing_capability\",\n code: \"MISSING_TRANSPORT\",\n });\n }\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const decoder = resolveDecoderFactory(options.decoder);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const maxReconnectAttempts = Math.max(0, Math.min(options.maxReconnectAttempts ?? 3, 10));\n const http = new AuthenticatedHttp({\n baseUrl,\n sessionProvider: options.sessionProvider,\n fetch,\n clock,\n ...(options.telemetry ? { telemetry: options.telemetry } : {}),\n });\n const emit = async (event: Parameters<NonNullable<typeof options.telemetry>[\"emit\"]>[0]): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Telemetry is isolated from runtime behavior and credentials.\n }\n };\n\n const attach = async (\n runId: string,\n cursor: number | undefined,\n headers: Readonly<Record<string, string>> | undefined,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n onProgress?: (state: RuntimeStreamState) => void,\n ): Promise<RuntimeStreamState> => {\n const response = await http.request(\n \"POST\",\n deploymentPath(options.deploymentId, `/runs/${encodePath(runId)}/attach`),\n {\n operation: \"runs.attach\",\n accept: \"text/event-stream\",\n body: cursor === undefined ? {} : { cursor },\n ...(headers ? { headers } : {}),\n ...(signal ? { signal } : {}),\n },\n );\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(signal ? { signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n ...(onProgress ? { onProgress } : {}),\n });\n };\n\n const reconnect = async (\n initial: (onProgress: (next: RuntimeStreamState) => void) => Promise<RuntimeStreamState>,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n operation: \"chat.stream\" | \"runs.attach\",\n headers?: Readonly<Record<string, string>>,\n ): Promise<StreamResult> => {\n let state: RuntimeStreamState | undefined;\n let attempt = 0;\n const onProgress = (next: RuntimeStreamState) => {\n if (!state) {\n void emit({\n type: \"stream.connected\",\n operation,\n ...(next.runId ? { runId: next.runId } : {}),\n ...(next.cursor === null ? {} : { cursor: next.cursor }),\n attempt,\n });\n }\n state = next;\n };\n while (true) {\n try {\n state = state?.runId\n ? await attach(state.runId, state.cursor ?? undefined, headers, signal, onEvent, onProgress)\n : await initial(onProgress);\n } catch (error) {\n if (signal?.aborted || !shouldReconnect(error) || attempt >= maxReconnectAttempts) throw error;\n attempt += 1;\n await emit({\n type: \"stream.reconnecting\",\n operation,\n ...(state?.runId ? { runId: state.runId } : {}),\n ...(state?.cursor == null ? {} : { cursor: state.cursor }),\n attempt,\n reason: \"network\",\n });\n continue;\n }\n if (!state.detached || signal?.aborted) {\n await emit({\n type: \"stream.completed\",\n operation,\n ...(state.runId ? { runId: state.runId } : {}),\n ...(state.cursor === null ? {} : { cursor: state.cursor }),\n attempt,\n });\n return state;\n }\n await emit({\n type: \"stream.detached\",\n operation,\n ...(state.runId ? { runId: state.runId } : {}),\n ...(state.cursor === null ? {} : { cursor: state.cursor }),\n attempt,\n reason: state.detachReason ?? \"server_detach\",\n });\n if (attempt >= maxReconnectAttempts || state.detachReason === \"revoked\" || state.detachReason === \"policy_changed\") {\n return state;\n }\n if (state.detachReason === \"token_expired\" && options.sessionProvider.refresh) {\n await options.sessionProvider.refresh({ reason: \"stream_detached\", ...(signal ? { signal } : {}) });\n }\n attempt += 1;\n }\n };\n\n return {\n async bootstrap(input) {\n let response: Awaited<ReturnType<typeof fetch>>;\n try {\n response = await fetch(\n `${baseUrl}${deploymentPath(options.deploymentId, \"/bootstrap\")}`,\n {\n method: \"GET\",\n headers: { Accept: \"application/json\", \"Cache-Control\": \"no-store\", Pragma: \"no-cache\" },\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n ...(input?.signal ? { signal: input.signal } : {}),\n },\n );\n } catch (cause) {\n throw new Agents24ClientError(\"The Agents24 deployment bootstrap could not be reached.\", {\n kind: input?.signal?.aborted ? \"aborted\" : \"network\",\n code: input?.signal?.aborted ? \"ABORTED\" : \"NETWORK_ERROR\",\n retryable: !input?.signal?.aborted,\n cause,\n });\n }\n if (response.redirected || (response.status >= 300 && response.status < 400)) {\n throw new Agents24ClientError(\"Client-runtime redirects are not allowed.\", {\n kind: \"network\",\n code: \"REDIRECT_REJECTED\",\n status: response.status,\n });\n }\n if (!response.ok) throw await responseError(response);\n return objectResult<ClientBootstrap>(await responseJson(response), \"Bootstrap\");\n },\n resourcePolicies: {\n async getEffective(input) {\n const response = await http.request(\n \"GET\",\n deploymentPath(options.deploymentId, \"/resource-policy\"),\n { operation: \"resourcePolicies.getEffective\", ...(input?.signal ? { signal: input.signal } : {}) },\n );\n return objectResult<EffectiveResourcePolicy>(await responseJson(response), \"Effective Resource Policy\");\n },\n },\n chat: {\n async stream(input, onEvent) {\n const initial = async (onProgress: (state: RuntimeStreamState) => void) => {\n const response = await http.request(\n \"POST\",\n deploymentPath(options.deploymentId, \"/chat/stream\"),\n {\n operation: \"chat.stream\",\n accept: \"text/event-stream\",\n idempotencyKey: input.idempotencyKey,\n ...(input.headers ? { headers: input.headers } : {}),\n body: {\n input: input.input,\n attachment_ids: [...(input.attachmentIds ?? [])],\n ...(input.threadId ? { thread_id: input.threadId } : {}),\n ...(input.requestedModelId ? { requested_model_id: input.requestedModelId } : {}),\n tool_inputs: input.toolInputs ?? {},\n metadata: input.metadata ?? {},\n client: input.client ?? { sdk_name: \"@agents24/client\", sdk_version: \"0.2.2\" },\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n onProgress,\n });\n };\n return reconnect(initial, input.signal, onEvent, \"chat.stream\", input.headers);\n },\n },\n runs: {\n async attach(input, onEvent) {\n const initial = (onProgress: (state: RuntimeStreamState) => void) =>\n attach(input.runId, input.cursor, input.headers, input.signal, onEvent, onProgress);\n return reconnect(initial, input.signal, onEvent, \"runs.attach\", input.headers);\n },\n async cancel(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, `/runs/${encodePath(input.runId)}/cancel`),\n {\n operation: \"runs.cancel\",\n body: {},\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<Record<string, unknown>>(result, \"Run cancellation\");\n },\n async setFeedback(input) {\n const result = await http.json<unknown>(\n \"PUT\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/feedback`,\n ),\n {\n operation: \"runs.setFeedback\",\n body: {\n rating: input.rating,\n ...(input.reason ? { reason: input.reason } : {}),\n ...(input.comment ? { comment: input.comment } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<ResponseFeedbackResult>(result, \"Response feedback\");\n },\n },\n threads: {\n async list(input) {\n const path = appendQuery(deploymentPath(options.deploymentId, \"/threads\"), {\n skip: input?.skip,\n limit: input?.limit,\n });\n const result = await http.json<unknown>(\"GET\", path, {\n operation: \"threads.list\",\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n return objectResult<ThreadListResult>(result, \"Thread listing\");\n },\n async get(input) {\n const path = appendQuery(\n deploymentPath(options.deploymentId, `/threads/${encodePath(input.threadId)}`),\n {\n limit: input.limit,\n before_turn_index: input.beforeTurnIndex,\n },\n );\n const result = await http.json<unknown>(\"GET\", path, {\n operation: \"threads.get\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n return objectResult<ThreadDetail>(result, \"Thread detail\");\n },\n async events(input, onEvent: ThreadSummaryEventHandler) {\n let cursor = input.cursor;\n let attempts = 0;\n while (!input.signal?.aborted) {\n try {\n const path = appendQuery(deploymentPath(options.deploymentId, \"/threads/events\"), { cursor });\n const response = await http.request(\"GET\", path, {\n operation: \"threads.events\",\n accept: \"text/event-stream\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n cursor = (await consumeThreadSummaryStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n onCursor(next) {\n cursor = next;\n },\n })) ?? undefined;\n return;\n } catch (error) {\n if (input.signal?.aborted) return;\n if (!shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n }\n }\n },\n async delete(input) {\n const result = await http.json<unknown>(\n \"DELETE\",\n deploymentPath(options.deploymentId, `/threads/${encodePath(input.threadId)}`),\n {\n operation: \"threads.delete\",\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<Record<string, unknown>>(result, \"Thread deletion\");\n },\n },\n attachments: {\n async uploadBatch(input) {\n const multipart = options.multipart ?? createByteMultipartEncoder(resolveEncoder(options.encoder));\n const encoded = await multipart.encode([\n ...(input.threadId ? [{ field: \"thread_id\", value: input.threadId }] : []),\n ...input.uploads.map((upload) => ({ field: \"files\", value: upload })),\n ]);\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, \"/attachments/upload\"),\n {\n operation: \"attachments.upload\",\n rawBody: encoded.body,\n contentType: encoded.contentType,\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n const body = objectResult<Record<string, unknown>>(result, \"Attachment upload\");\n if (!Array.isArray(body.items)) throw new Error(\"Attachment upload returned an invalid batch\");\n return body.items.map((item) => objectResult<AttachmentResult>(item, \"Attachment upload\"));\n },\n async createContentAccess(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/attachments/${encodePath(input.attachmentId)}/content-access`,\n ),\n {\n operation: \"attachments.create_content_access\",\n body: { disposition: input.disposition },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<AttachmentContentAccess>(result, \"Attachment content access\");\n },\n },\n hitl: {\n async resume(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/hitl/${encodePath(input.interruptId)}/resume`,\n ),\n {\n operation: \"hitl.resume\",\n idempotencyKey: input.idempotencyKey,\n body: {\n schema_version: \"agents24.hitl.resume.v2\",\n interrupt_id: input.interruptId,\n action: input.action,\n ...(input.comment ? { comment: input.comment } : {}),\n ...(input.answers ? { answers: input.answers } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<HitlResumeResult>(result, \"HITL resume\");\n },\n },\n mcp: {\n async startAuthorization(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/mcp/servers/${encodePath(input.serverId)}/auth/start`,\n ),\n {\n operation: \"mcp.startAuthorization\",\n idempotencyKey: input.idempotencyKey,\n body: {\n interrupt_id: input.interruptId,\n redirect_uri: input.redirectUri,\n popup_nonce: input.popupNonce,\n code_challenge: input.codeChallenge,\n code_challenge_method: \"S256\",\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<McpAuthorizationResult>(result, \"MCP authorization start\");\n },\n async redeemCallback(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, \"/mcp/callback/redeem\"),\n {\n operation: \"mcp.redeemCallback\",\n idempotencyKey: input.idempotencyKey,\n body: { code: input.code, code_verifier: input.codeVerifier },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<McpCallbackResult>(result, \"MCP callback redemption\");\n },\n },\n sessions: {\n async revoke(input) {\n if (!options.sessionProvider.revoke) {\n throw new Agents24ClientError(\"The configured session provider cannot revoke sessions.\", {\n kind: \"missing_capability\",\n code: \"SESSION_REVOKE_UNAVAILABLE\",\n });\n }\n await options.sessionProvider.revoke({\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n },\n },\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { defaultClock, defaultIds, resolveEncoder, canonicalHtu, Agents24ClientError, missingCapability, normalizeBaseUrl, resolveFetch, dpopTokenRequest, absoluteUrl, encodePath, responseError, responseJson, AuthenticatedHttp } from './chunk-LG3ZMQ2W.js';
1
+ import { defaultClock, defaultIds, resolveEncoder, canonicalHtu, Agents24ClientError, missingCapability, normalizeBaseUrl, resolveFetch, dpopTokenRequest, absoluteUrl, encodePath, responseError, responseJson, AuthenticatedHttp } from './chunk-BMD35ROR.js';
2
2
 
3
3
  // src/base64url.ts
4
4
  function base64UrlEncode(bytes) {
@@ -565,5 +565,5 @@ function createHostedOidcSessionProvider(options) {
565
565
  }
566
566
 
567
567
  export { createAnonymousSessionProvider, createFencedRefreshCoordinator, createHostedOidcSessionProvider, createInMemoryRefreshCoordinator, createManagedSessionProvider, createPkcePair, createStaticSessionProvider, createWebCryptoDpopKeyProvider };
568
- //# sourceMappingURL=chunk-ZDLWNALI.js.map
569
- //# sourceMappingURL=chunk-ZDLWNALI.js.map
568
+ //# sourceMappingURL=chunk-ZJUK7D4O.js.map
569
+ //# sourceMappingURL=chunk-ZJUK7D4O.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/base64url.ts","../src/dpop.ts","../src/sessions.ts"],"names":[],"mappings":"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","file":"chunk-ZDLWNALI.js","sourcesContent":["export function base64UrlEncode(bytes: Uint8Array): string {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n let output = \"\";\n for (let index = 0; index < bytes.length; index += 3) {\n const first = bytes[index] ?? 0;\n const second = bytes[index + 1];\n const third = bytes[index + 2];\n const packed = (first << 16) | ((second ?? 0) << 8) | (third ?? 0);\n output += alphabet[(packed >>> 18) & 63];\n output += alphabet[(packed >>> 12) & 63];\n output += second === undefined ? \"=\" : alphabet[(packed >>> 6) & 63];\n output += third === undefined ? \"=\" : alphabet[packed & 63];\n }\n return output.replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nexport function utf8Bytes(input: string): Uint8Array {\n const Constructor = (globalThis as unknown as { TextEncoder?: new () => { encode(value: string): Uint8Array } }).TextEncoder;\n if (!Constructor) {\n throw new Error(\"TextEncoder capability is required.\");\n }\n return new Constructor().encode(input);\n}\n","import { base64UrlEncode } from \"./base64url.js\";\nimport { defaultClock, defaultIds, resolveEncoder } from \"./capabilities.js\";\nimport { Agents24ClientError, missingCapability } from \"./errors.js\";\nimport { canonicalHtu } from \"./url.js\";\nimport type { Clock, DpopKeyProvider, DpopProofInput, IdProvider, PublicJwk, TextEncoderLike } from \"./types.js\";\n\ntype CryptoKeyLike = object;\n\ninterface SubtleCryptoLike {\n generateKey(\n algorithm: { name: \"ECDSA\"; namedCurve: \"P-256\" },\n extractable: false,\n usages: readonly [\"sign\", \"verify\"],\n ): Promise<{ privateKey: CryptoKeyLike; publicKey: CryptoKeyLike }>;\n exportKey(format: \"jwk\", key: CryptoKeyLike): Promise<PublicJwk>;\n sign(algorithm: { name: \"ECDSA\"; hash: \"SHA-256\" }, key: CryptoKeyLike, data: Uint8Array): Promise<ArrayBuffer>;\n digest(algorithm: \"SHA-256\", data: Uint8Array): Promise<ArrayBuffer>;\n}\n\nexport interface WebCryptoLike {\n subtle: SubtleCryptoLike;\n getRandomValues?<T extends Uint8Array>(target: T): T;\n}\n\nexport interface DpopKeyHandle {\n privateKey: CryptoKeyLike;\n publicKey: CryptoKeyLike;\n}\n\nexport interface DpopKeyHandleStorage {\n load(): Promise<DpopKeyHandle | null>;\n save(handle: DpopKeyHandle): Promise<void>;\n clear?(): Promise<void>;\n}\n\nexport interface WebCryptoDpopOptions {\n crypto?: WebCryptoLike;\n storage?: DpopKeyHandleStorage;\n clock?: Clock;\n ids?: IdProvider;\n encoder?: TextEncoderLike;\n}\n\nfunction resolveCrypto(injected?: WebCryptoLike): WebCryptoLike {\n const value = injected ?? (globalThis as unknown as { crypto?: WebCryptoLike }).crypto;\n if (!value?.subtle) throw missingCapability(\"crypto.subtle\");\n return value;\n}\n\nfunction publicJwkOnly(jwk: PublicJwk): PublicJwk {\n if (jwk.kty !== \"EC\" || jwk.crv !== \"P-256\" || !jwk.x || !jwk.y) {\n throw new Agents24ClientError(\"DPoP requires a P-256 public key.\", {\n kind: \"configuration\",\n code: \"INVALID_DPOP_KEY\",\n });\n }\n return { kty: \"EC\", crv: \"P-256\", x: jwk.x, y: jwk.y };\n}\n\nasync function hash(subtle: SubtleCryptoLike, encoder: TextEncoderLike, input: string): Promise<string> {\n return base64UrlEncode(new Uint8Array(await subtle.digest(\"SHA-256\", encoder.encode(input))));\n}\n\nexport function createWebCryptoDpopKeyProvider(options: WebCryptoDpopOptions = {}): DpopKeyProvider {\n const crypto = resolveCrypto(options.crypto);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const encoder = resolveEncoder(options.encoder);\n let handlePromise: Promise<DpopKeyHandle> | undefined;\n let jwkPromise: Promise<PublicJwk> | undefined;\n\n const getHandle = (): Promise<DpopKeyHandle> => {\n if (!handlePromise) {\n handlePromise = (async () => {\n const stored = await options.storage?.load();\n if (stored) return stored;\n const generated = await crypto.subtle.generateKey(\n { name: \"ECDSA\", namedCurve: \"P-256\" },\n false,\n [\"sign\", \"verify\"],\n );\n await options.storage?.save(generated);\n return generated;\n })();\n }\n return handlePromise;\n };\n\n const getPublicJwk = (): Promise<PublicJwk> => {\n if (!jwkPromise) {\n jwkPromise = getHandle().then(async (handle) => publicJwkOnly(await crypto.subtle.exportKey(\"jwk\", handle.publicKey)));\n }\n return jwkPromise;\n };\n\n return {\n getPublicJwk,\n async getThumbprint() {\n const jwk = await getPublicJwk();\n return hash(crypto.subtle, encoder, JSON.stringify({ crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y }));\n },\n async signProof(input: DpopProofInput) {\n const jwk = await getPublicJwk();\n const header = base64UrlEncode(encoder.encode(JSON.stringify({ typ: \"dpop+jwt\", alg: \"ES256\", jwk })));\n const claims: Record<string, string | number> = {\n jti: ids.createId(),\n htm: input.method.toUpperCase(),\n htu: canonicalHtu(input.url),\n iat: Math.floor(clock.now() / 1000),\n };\n if (input.accessToken) claims.ath = await hash(crypto.subtle, encoder, input.accessToken);\n if (input.nonce) claims.nonce = input.nonce;\n const payload = base64UrlEncode(encoder.encode(JSON.stringify(claims)));\n const signingInput = `${header}.${payload}`;\n const handle = await getHandle();\n const signature = new Uint8Array(\n await crypto.subtle.sign({ name: \"ECDSA\", hash: \"SHA-256\" }, handle.privateKey, encoder.encode(signingInput)),\n );\n if (signature.byteLength !== 64) {\n throw new Agents24ClientError(\"The WebCrypto provider returned a non-JOSE ECDSA signature.\", {\n kind: \"configuration\",\n code: \"INVALID_DPOP_SIGNATURE\",\n });\n }\n return `${signingInput}.${base64UrlEncode(signature)}`;\n },\n };\n}\n\nexport async function createPkcePair(\n cryptoInput?: WebCryptoLike,\n encoderInput?: TextEncoderLike,\n): Promise<{ verifier: string; challenge: string }> {\n const crypto = resolveCrypto(cryptoInput);\n const encoder = resolveEncoder(encoderInput);\n const random = new Uint8Array(32);\n const getRandomValues = crypto.getRandomValues?.bind(crypto);\n if (!getRandomValues) throw missingCapability(\"crypto.getRandomValues\");\n getRandomValues(random);\n const verifier = base64UrlEncode(random);\n return { verifier, challenge: await hash(crypto.subtle, encoder, verifier) };\n}\n","import { defaultClock, defaultIds, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { AuthenticatedHttp, dpopTokenRequest, responseError, responseJson } from \"./http.js\";\nimport { absoluteUrl, encodePath, normalizeBaseUrl } from \"./url.js\";\nimport type {\n AbortSignalLike,\n ClientSessionAccess,\n ClientSessionProvider,\n ClientSessionStorage,\n Clock,\n DpopKeyProvider,\n FetchLike,\n IdProvider,\n SessionRefreshCoordinator,\n SessionRefreshFenceRecord,\n SessionRefreshFenceStorage,\n SessionRefreshLease,\n TelemetrySink,\n WaitCapability,\n} from \"./types.js\";\n\ntype SessionTokenBody = {\n access_token?: unknown;\n token_type?: unknown;\n expires_in?: unknown;\n expires_at?: unknown;\n refresh_grant?: unknown;\n refresh_expires_at?: unknown;\n refresh_grant_absolute_expires_at?: unknown;\n session_id?: unknown;\n capabilities?: unknown;\n dpop_nonce?: unknown;\n};\n\nfunction parseSessionToken(\n value: unknown,\n options: { clock: Clock; dpopKeyProvider?: DpopKeyProvider | undefined },\n): { access: ClientSessionAccess; refreshGrant?: string; absoluteExpiresAt?: string } {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(\"The session endpoint returned an invalid response.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_RESPONSE\",\n });\n }\n const body = value as SessionTokenBody;\n if (typeof body.access_token !== \"string\" || !body.access_token || /[\\r\\n\\0]/.test(body.access_token)) {\n throw new Agents24ClientError(\"The session endpoint returned an invalid access token.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_RESPONSE\",\n });\n }\n const tokenType = body.token_type === \"DPoP\" ? \"DPoP\" : body.token_type === \"Bearer\" ? \"Bearer\" : undefined;\n if (!tokenType || (tokenType === \"DPoP\" && !options.dpopKeyProvider)) {\n throw new Agents24ClientError(\"The session endpoint returned an unsupported token profile.\", {\n kind: \"protocol\",\n code: \"INVALID_TOKEN_PROFILE\",\n });\n }\n const parsedExpiresAt = typeof body.expires_at === \"string\" ? Date.parse(body.expires_at) : Number.NaN;\n const expiresIn = typeof body.expires_in === \"number\" && Number.isFinite(body.expires_in) ? body.expires_in : 0;\n const expiresAt = Number.isFinite(parsedExpiresAt) ? parsedExpiresAt : options.clock.now() + expiresIn * 1000;\n if (!Number.isFinite(expiresAt) || expiresAt <= options.clock.now()) {\n throw new Agents24ClientError(\"The session endpoint returned an expired access token.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_EXPIRY\",\n });\n }\n const refreshGrant = typeof body.refresh_grant === \"string\" && body.refresh_grant && !/[\\r\\n\\0]/.test(body.refresh_grant)\n ? body.refresh_grant\n : undefined;\n if (body.refresh_grant !== undefined && !refreshGrant) {\n throw new Agents24ClientError(\"The session endpoint returned an invalid refresh grant.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_RESPONSE\",\n });\n }\n if (refreshGrant && (tokenType !== \"DPoP\" || !options.dpopKeyProvider)) {\n throw new Agents24ClientError(\"Persistent sessions require a DPoP-bound token profile.\", {\n kind: \"protocol\",\n code: \"INVALID_TOKEN_PROFILE\",\n });\n }\n return {\n access: {\n accessToken: body.access_token,\n tokenType,\n expiresAt,\n ...(typeof body.session_id === \"string\" ? { sessionId: body.session_id } : {}),\n ...(Array.isArray(body.capabilities) && body.capabilities.every((item) => typeof item === \"string\")\n ? { capabilities: body.capabilities as string[] }\n : {}),\n ...(options.dpopKeyProvider ? { dpopKeyProvider: options.dpopKeyProvider } : {}),\n ...(typeof body.dpop_nonce === \"string\" ? { dpopNonce: body.dpop_nonce } : {}),\n },\n ...(refreshGrant ? { refreshGrant } : {}),\n ...(typeof (body.refresh_expires_at ?? body.refresh_grant_absolute_expires_at) === \"string\"\n ? { absoluteExpiresAt: (body.refresh_expires_at ?? body.refresh_grant_absolute_expires_at) as string }\n : {}),\n };\n}\n\nfunction refreshFenceLost(): Agents24ClientError {\n return new Agents24ClientError(\"Refresh coordination ownership changed before completion.\", {\n kind: \"conflict\",\n code: \"REFRESH_FENCE_LOST\",\n retryable: true,\n });\n}\n\nfunction sessionRequestAborted(): Agents24ClientError {\n return new Agents24ClientError(\"The session request was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n retryable: false,\n });\n}\n\nfunction defaultWait(milliseconds: number): Promise<void> {\n const schedule = (globalThis as unknown as {\n setTimeout?: (callback: () => void, delay: number) => unknown;\n }).setTimeout;\n if (!schedule) {\n throw new Agents24ClientError(\"Cross-runtime refresh coordination requires a wait capability.\", {\n kind: \"missing_capability\",\n code: \"MISSING_WAIT_CAPABILITY\",\n });\n }\n return new Promise((resolve) => schedule(resolve, milliseconds));\n}\n\nexport interface FencedRefreshCoordinatorOptions {\n storage: SessionRefreshFenceStorage;\n clock?: Clock;\n ids?: IdProvider;\n ownerId?: string;\n leaseDurationMs?: number;\n pollIntervalMs?: number;\n wait?: WaitCapability;\n}\n\n/**\n * Coordinates refresh-grant rotation across tabs/processes through an injected\n * atomic compare-and-swap store. Takeovers retain the same operation ID so a\n * timed-out owner and its successor address one server idempotency record.\n */\nexport function createFencedRefreshCoordinator(\n options: FencedRefreshCoordinatorOptions,\n): SessionRefreshCoordinator {\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const ownerId = options.ownerId ?? ids.createId();\n const leaseDurationMs = Math.max(1_000, options.leaseDurationMs ?? 60_000);\n const pollIntervalMs = Math.max(10, options.pollIntervalMs ?? 100);\n const wait = options.wait ?? defaultWait;\n let local: Promise<unknown> | undefined;\n\n const assertActive = async (record: SessionRefreshFenceRecord): Promise<void> => {\n const current = await options.storage.load();\n if (\n !current?.active ||\n current.fence !== record.fence ||\n current.operationId !== record.operationId ||\n current.ownerId !== ownerId ||\n current.expiresAt <= clock.now()\n ) {\n throw refreshFenceLost();\n }\n };\n\n const acquire = async (): Promise<SessionRefreshFenceRecord> => {\n while (true) {\n const current = await options.storage.load();\n const now = clock.now();\n if (current?.active && current.expiresAt > now) {\n await wait(Math.max(1, Math.min(pollIntervalMs, current.expiresAt - now)));\n continue;\n }\n const next: SessionRefreshFenceRecord = {\n active: true,\n expiresAt: now + leaseDurationMs,\n fence: (current?.fence ?? 0) + 1,\n operationId: current?.active ? current.operationId : ids.createId(),\n ownerId,\n };\n if (await options.storage.compareAndSwap(current?.fence ?? null, next)) return next;\n }\n };\n\n return {\n async runExclusive<T>(operation: (lease: SessionRefreshLease) => Promise<T>): Promise<T> {\n if (local) return local as Promise<T>;\n const pending = (async () => {\n const record = await acquire();\n const lease: SessionRefreshLease = {\n fence: record.fence,\n operationId: record.operationId,\n assertActive: () => assertActive(record),\n };\n try {\n return await operation(lease);\n } finally {\n const current = await options.storage.load();\n if (\n current?.active &&\n current.fence === record.fence &&\n current.operationId === record.operationId &&\n current.ownerId === ownerId\n ) {\n await options.storage.compareAndSwap(current.fence, {\n ...current,\n active: false,\n expiresAt: clock.now(),\n });\n }\n }\n })();\n local = pending;\n try {\n return await pending;\n } finally {\n if (local === pending) local = undefined;\n }\n },\n };\n}\n\nexport function createInMemoryRefreshCoordinator(): SessionRefreshCoordinator {\n let active: Promise<unknown> | undefined;\n let fence = 0;\n return {\n async runExclusive<T>(operation: (lease: SessionRefreshLease) => Promise<T>): Promise<T> {\n if (active) return active as Promise<T>;\n fence += 1;\n const ownedFence = fence;\n const current = Promise.resolve().then(() => operation({\n fence: ownedFence,\n operationId: `memory-refresh-${ownedFence}`,\n async assertActive() {\n if (active !== current) throw refreshFenceLost();\n },\n }));\n active = current;\n try {\n return await current;\n } finally {\n if (active === current) active = undefined;\n }\n },\n };\n}\n\nexport function createStaticSessionProvider(access: ClientSessionAccess): ClientSessionProvider {\n return {\n async getAccess() {\n return access;\n },\n };\n}\n\nexport interface ManagedSessionProviderOptions {\n baseUrl: string;\n deploymentId: string;\n fetch?: FetchLike;\n dpopKeyProvider?: DpopKeyProvider | undefined;\n storage?: ClientSessionStorage;\n coordinator?: SessionRefreshCoordinator;\n clock?: Clock;\n ids?: IdProvider;\n telemetry?: TelemetrySink;\n mint(input: {\n fetch: FetchLike;\n url: string;\n dpopKeyProvider?: DpopKeyProvider | undefined;\n signal?: AbortSignalLike | undefined;\n }): Promise<unknown>;\n}\n\nfunction createManagedSessionProviderInternal(\n options: ManagedSessionProviderOptions,\n recoverInvalidRefreshWithMint: boolean,\n): ClientSessionProvider {\n if (options.storage && !options.dpopKeyProvider) {\n throw new Agents24ClientError(\"Persistent session storage requires a DPoP key provider.\", {\n kind: \"configuration\",\n code: \"PERSISTENT_SESSION_REQUIRES_DPOP\",\n });\n }\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const coordinator = options.coordinator ?? createInMemoryRefreshCoordinator();\n let current: ClientSessionAccess | undefined;\n let refreshGrant: string | undefined;\n let minting: Promise<ClientSessionAccess> | undefined;\n\n const emit = async (event: Parameters<TelemetrySink[\"emit\"]>[0]): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Session telemetry is noncredential and cannot affect authentication.\n }\n };\n\n const loadStored = async (): Promise<Awaited<ReturnType<ClientSessionStorage[\"load\"]>>> => {\n const stored = await options.storage?.load() ?? null;\n if (!stored) return null;\n if (!stored.refreshGrant || /[\\r\\n\\0]/.test(stored.refreshGrant)) {\n throw new Agents24ClientError(\"Stored session state is invalid.\", {\n kind: \"authentication\",\n code: \"INVALID_STORED_SESSION\",\n });\n }\n if (stored.absoluteExpiresAt) {\n const absoluteExpiry = Date.parse(stored.absoluteExpiresAt);\n if (!Number.isFinite(absoluteExpiry) || absoluteExpiry <= clock.now()) {\n await options.storage?.clear();\n throw new Agents24ClientError(\"The persistent session has expired.\", {\n kind: \"authentication\",\n code: \"SESSION_EXPIRED\",\n });\n }\n }\n return stored;\n };\n\n const save = async (parsed: ReturnType<typeof parseSessionToken>): Promise<void> => {\n current = parsed.access;\n if (parsed.refreshGrant) refreshGrant = parsed.refreshGrant;\n if (refreshGrant && options.storage) {\n await options.storage.save({\n refreshGrant,\n ...(current.sessionId ? { sessionId: current.sessionId } : {}),\n ...(parsed.absoluteExpiresAt ? { absoluteExpiresAt: parsed.absoluteExpiresAt } : {}),\n });\n }\n };\n\n const mint = async (signal?: AbortSignalLike): Promise<ClientSessionAccess> => {\n if (signal?.aborted) throw sessionRequestAborted();\n if (!minting) {\n const url = absoluteUrl(baseUrl, `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/anonymous`);\n minting = options\n // Session establishment is shared infrastructure. Once started, it must\n // finish even if the request which triggered it is disposed by React.\n .mint({ fetch, url, dpopKeyProvider: options.dpopKeyProvider })\n .then(async (value) => {\n const parsed = parseSessionToken(value, { clock, dpopKeyProvider: options.dpopKeyProvider });\n await save(parsed);\n return parsed.access;\n })\n .finally(() => {\n minting = undefined;\n });\n }\n return minting;\n };\n\n const refresh = async (signal?: AbortSignalLike): Promise<ClientSessionAccess> =>\n coordinator.runExclusive(async (lease) => {\n if (signal?.aborted) throw sessionRequestAborted();\n if (options.storage) {\n // Another tab may have rotated while this caller waited for the fence.\n // The persisted record is canonical after lease acquisition.\n const stored = await loadStored();\n if (stored?.refreshGrant) refreshGrant = stored.refreshGrant;\n }\n if (!refreshGrant) return mint(signal);\n await lease.assertActive();\n const response = await dpopTokenRequest({\n fetch,\n url: absoluteUrl(baseUrl, \"/public/client-runtime/sessions/refresh\"),\n body: { refresh_grant: refreshGrant },\n dpopKeyProvider: options.dpopKeyProvider,\n // Refresh grants rotate exactly once. Never abandon the credential\n // transaction because a consuming request was locally cancelled.\n idempotencyKey: lease.operationId,\n });\n if (!response.ok) {\n if (response.status === 400 || response.status === 401 || response.status === 403) {\n await lease.assertActive();\n await options.storage?.clear();\n refreshGrant = undefined;\n current = undefined;\n if (recoverInvalidRefreshWithMint) return mint(signal);\n }\n throw await responseError(response);\n }\n await lease.assertActive();\n const parsed = parseSessionToken(await responseJson(response), { clock, dpopKeyProvider: options.dpopKeyProvider });\n await save(parsed);\n await emit({ type: \"session.refreshed\", operation: \"session\" });\n return parsed.access;\n });\n\n let provider: ClientSessionProvider;\n provider = {\n async getAccess(context) {\n if (current && current.expiresAt > clock.now()) return current;\n if (refreshGrant || (await loadStored())?.refreshGrant) return refresh(context.signal);\n return mint(context.signal);\n },\n async refresh(context) {\n return refresh(context.signal);\n },\n async revoke(input) {\n const authenticated = new AuthenticatedHttp({\n baseUrl,\n sessionProvider: provider,\n fetch,\n clock,\n });\n await authenticated.json<unknown>(\"POST\", \"/public/client-runtime/sessions/revoke\", {\n operation: \"sessions.revoke\",\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n current = undefined;\n refreshGrant = undefined;\n await options.storage?.clear();\n await emit({ type: \"session.revoked\", operation: \"session\" });\n },\n };\n return provider;\n}\n\nexport function createManagedSessionProvider(options: ManagedSessionProviderOptions): ClientSessionProvider {\n return createManagedSessionProviderInternal(options, false);\n}\n\nexport interface AnonymousSessionProviderOptions\n extends Omit<ManagedSessionProviderOptions, \"mint\"> {\n persistent?: boolean;\n nativeProfileId?: string;\n requestedCapabilities?: readonly string[];\n attestation?: string;\n}\n\nexport function createAnonymousSessionProvider(options: AnonymousSessionProviderOptions): ClientSessionProvider {\n if ((options.persistent || options.nativeProfileId) && !options.dpopKeyProvider) {\n throw new Agents24ClientError(\"Persistent and native anonymous sessions require a DPoP key provider.\", {\n kind: \"configuration\",\n code: \"MISSING_DPOP_PROVIDER\",\n });\n }\n return createManagedSessionProviderInternal(\n {\n ...options,\n async mint({ fetch, url, dpopKeyProvider, signal }) {\n const response = await dpopTokenRequest({\n fetch,\n url,\n body: {\n persistent: options.persistent ?? false,\n requested_capabilities: [...(options.requestedCapabilities ?? [])],\n ...(options.nativeProfileId ? { native_profile_id: options.nativeProfileId } : {}),\n ...(dpopKeyProvider ? { dpop_public_jwk: await dpopKeyProvider.getPublicJwk() } : {}),\n ...(options.attestation ? { attestation: options.attestation } : {}),\n },\n dpopKeyProvider,\n prooflessInitialRequest: Boolean(dpopKeyProvider),\n signal,\n });\n if (!response.ok) throw await responseError(response);\n return responseJson(response);\n },\n },\n true,\n );\n}\n\nexport interface HostedOidcSessionProvider extends ClientSessionProvider {\n beginAuthorization(input: {\n redirectUri: string;\n codeChallenge: string;\n nativeProfileId?: string;\n signal?: AbortSignalLike;\n }): Promise<{ authorizationUrl: string }>;\n exchange(input: { code: string; codeVerifier: string; signal?: AbortSignalLike }): Promise<ClientSessionAccess>;\n}\n\nexport interface HostedOidcSessionProviderOptions\n extends Omit<ManagedSessionProviderOptions, \"mint\"> {\n dpopKeyProvider: DpopKeyProvider;\n redirectUri?: string;\n}\n\nexport function createHostedOidcSessionProvider(options: HostedOidcSessionProviderOptions): HostedOidcSessionProvider {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const clock = options.clock ?? defaultClock();\n let current: ClientSessionAccess | undefined;\n let refreshGrant: string | undefined;\n let enrollmentNonce: string | undefined;\n const ids = options.ids ?? defaultIds();\n let memoryRecord: Awaited<ReturnType<ClientSessionStorage[\"load\"]>> = null;\n const effectiveStorage: ClientSessionStorage = {\n async load() {\n return (await options.storage?.load()) ?? memoryRecord;\n },\n async save(record) {\n memoryRecord = record;\n await options.storage?.save(record);\n },\n async clear() {\n memoryRecord = null;\n await options.storage?.clear();\n },\n };\n const baseProvider = createManagedSessionProvider({\n ...options,\n storage: effectiveStorage,\n async mint() {\n throw new Agents24ClientError(\"Complete the hosted OIDC authorization before requesting access.\", {\n kind: \"authentication\",\n code: \"OIDC_AUTHORIZATION_REQUIRED\",\n });\n },\n });\n\n return {\n async beginAuthorization(input) {\n const url = absoluteUrl(\n baseUrl,\n `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/oidc/authorize`,\n );\n const response = await dpopTokenRequest({\n fetch,\n url,\n dpopKeyProvider: options.dpopKeyProvider,\n signal: input.signal,\n body: {\n redirect_uri: input.redirectUri,\n code_challenge: input.codeChallenge,\n code_challenge_method: \"S256\",\n persistent: true,\n dpop_public_jwk: await options.dpopKeyProvider.getPublicJwk(),\n ...(input.nativeProfileId ? { native_profile_id: input.nativeProfileId } : {}),\n },\n });\n if (!response.ok) throw await responseError(response);\n const body = (await responseJson(response)) as Record<string, unknown>;\n if (typeof body.authorization_url !== \"string\") {\n throw new Agents24ClientError(\"The OIDC endpoint returned an invalid authorization URL.\", {\n kind: \"protocol\",\n code: \"INVALID_OIDC_RESPONSE\",\n });\n }\n if (typeof body.dpop_nonce !== \"string\" || !body.dpop_nonce) {\n throw new Agents24ClientError(\"The OIDC endpoint did not return a DPoP enrollment nonce.\", {\n kind: \"protocol\",\n code: \"INVALID_OIDC_RESPONSE\",\n });\n }\n enrollmentNonce = body.dpop_nonce;\n return { authorizationUrl: body.authorization_url };\n },\n async exchange(input) {\n const response = await dpopTokenRequest({\n fetch,\n url: absoluteUrl(\n baseUrl,\n `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/oidc/exchange`,\n ),\n dpopKeyProvider: options.dpopKeyProvider,\n signal: input.signal,\n idempotencyKey: ids.createId(),\n nonce: enrollmentNonce,\n body: { code: input.code, code_verifier: input.codeVerifier },\n });\n if (!response.ok) throw await responseError(response);\n const parsed = parseSessionToken(await responseJson(response), {\n clock,\n dpopKeyProvider: options.dpopKeyProvider,\n });\n current = parsed.access;\n enrollmentNonce = undefined;\n refreshGrant = parsed.refreshGrant;\n if (refreshGrant) {\n await effectiveStorage.save({\n refreshGrant,\n ...(current.sessionId ? { sessionId: current.sessionId } : {}),\n ...(parsed.absoluteExpiresAt ? { absoluteExpiresAt: parsed.absoluteExpiresAt } : {}),\n });\n }\n return current;\n },\n async getAccess(context) {\n if (current && current.expiresAt > clock.now()) return current;\n return baseProvider.getAccess(context);\n },\n async refresh(context) {\n return baseProvider.refresh?.(context) ?? Promise.reject(new Error(\"Refresh unavailable\"));\n },\n async revoke(input) {\n await baseProvider.revoke?.(input);\n current = undefined;\n refreshGrant = undefined;\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/base64url.ts","../src/dpop.ts","../src/sessions.ts"],"names":[],"mappings":"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","file":"chunk-ZJUK7D4O.js","sourcesContent":["export function base64UrlEncode(bytes: Uint8Array): string {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n let output = \"\";\n for (let index = 0; index < bytes.length; index += 3) {\n const first = bytes[index] ?? 0;\n const second = bytes[index + 1];\n const third = bytes[index + 2];\n const packed = (first << 16) | ((second ?? 0) << 8) | (third ?? 0);\n output += alphabet[(packed >>> 18) & 63];\n output += alphabet[(packed >>> 12) & 63];\n output += second === undefined ? \"=\" : alphabet[(packed >>> 6) & 63];\n output += third === undefined ? \"=\" : alphabet[packed & 63];\n }\n return output.replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nexport function utf8Bytes(input: string): Uint8Array {\n const Constructor = (globalThis as unknown as { TextEncoder?: new () => { encode(value: string): Uint8Array } }).TextEncoder;\n if (!Constructor) {\n throw new Error(\"TextEncoder capability is required.\");\n }\n return new Constructor().encode(input);\n}\n","import { base64UrlEncode } from \"./base64url.js\";\nimport { defaultClock, defaultIds, resolveEncoder } from \"./capabilities.js\";\nimport { Agents24ClientError, missingCapability } from \"./errors.js\";\nimport { canonicalHtu } from \"./url.js\";\nimport type { Clock, DpopKeyProvider, DpopProofInput, IdProvider, PublicJwk, TextEncoderLike } from \"./types.js\";\n\ntype CryptoKeyLike = object;\n\ninterface SubtleCryptoLike {\n generateKey(\n algorithm: { name: \"ECDSA\"; namedCurve: \"P-256\" },\n extractable: false,\n usages: readonly [\"sign\", \"verify\"],\n ): Promise<{ privateKey: CryptoKeyLike; publicKey: CryptoKeyLike }>;\n exportKey(format: \"jwk\", key: CryptoKeyLike): Promise<PublicJwk>;\n sign(algorithm: { name: \"ECDSA\"; hash: \"SHA-256\" }, key: CryptoKeyLike, data: Uint8Array): Promise<ArrayBuffer>;\n digest(algorithm: \"SHA-256\", data: Uint8Array): Promise<ArrayBuffer>;\n}\n\nexport interface WebCryptoLike {\n subtle: SubtleCryptoLike;\n getRandomValues?<T extends Uint8Array>(target: T): T;\n}\n\nexport interface DpopKeyHandle {\n privateKey: CryptoKeyLike;\n publicKey: CryptoKeyLike;\n}\n\nexport interface DpopKeyHandleStorage {\n load(): Promise<DpopKeyHandle | null>;\n save(handle: DpopKeyHandle): Promise<void>;\n clear?(): Promise<void>;\n}\n\nexport interface WebCryptoDpopOptions {\n crypto?: WebCryptoLike;\n storage?: DpopKeyHandleStorage;\n clock?: Clock;\n ids?: IdProvider;\n encoder?: TextEncoderLike;\n}\n\nfunction resolveCrypto(injected?: WebCryptoLike): WebCryptoLike {\n const value = injected ?? (globalThis as unknown as { crypto?: WebCryptoLike }).crypto;\n if (!value?.subtle) throw missingCapability(\"crypto.subtle\");\n return value;\n}\n\nfunction publicJwkOnly(jwk: PublicJwk): PublicJwk {\n if (jwk.kty !== \"EC\" || jwk.crv !== \"P-256\" || !jwk.x || !jwk.y) {\n throw new Agents24ClientError(\"DPoP requires a P-256 public key.\", {\n kind: \"configuration\",\n code: \"INVALID_DPOP_KEY\",\n });\n }\n return { kty: \"EC\", crv: \"P-256\", x: jwk.x, y: jwk.y };\n}\n\nasync function hash(subtle: SubtleCryptoLike, encoder: TextEncoderLike, input: string): Promise<string> {\n return base64UrlEncode(new Uint8Array(await subtle.digest(\"SHA-256\", encoder.encode(input))));\n}\n\nexport function createWebCryptoDpopKeyProvider(options: WebCryptoDpopOptions = {}): DpopKeyProvider {\n const crypto = resolveCrypto(options.crypto);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const encoder = resolveEncoder(options.encoder);\n let handlePromise: Promise<DpopKeyHandle> | undefined;\n let jwkPromise: Promise<PublicJwk> | undefined;\n\n const getHandle = (): Promise<DpopKeyHandle> => {\n if (!handlePromise) {\n handlePromise = (async () => {\n const stored = await options.storage?.load();\n if (stored) return stored;\n const generated = await crypto.subtle.generateKey(\n { name: \"ECDSA\", namedCurve: \"P-256\" },\n false,\n [\"sign\", \"verify\"],\n );\n await options.storage?.save(generated);\n return generated;\n })();\n }\n return handlePromise;\n };\n\n const getPublicJwk = (): Promise<PublicJwk> => {\n if (!jwkPromise) {\n jwkPromise = getHandle().then(async (handle) => publicJwkOnly(await crypto.subtle.exportKey(\"jwk\", handle.publicKey)));\n }\n return jwkPromise;\n };\n\n return {\n getPublicJwk,\n async getThumbprint() {\n const jwk = await getPublicJwk();\n return hash(crypto.subtle, encoder, JSON.stringify({ crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y }));\n },\n async signProof(input: DpopProofInput) {\n const jwk = await getPublicJwk();\n const header = base64UrlEncode(encoder.encode(JSON.stringify({ typ: \"dpop+jwt\", alg: \"ES256\", jwk })));\n const claims: Record<string, string | number> = {\n jti: ids.createId(),\n htm: input.method.toUpperCase(),\n htu: canonicalHtu(input.url),\n iat: Math.floor(clock.now() / 1000),\n };\n if (input.accessToken) claims.ath = await hash(crypto.subtle, encoder, input.accessToken);\n if (input.nonce) claims.nonce = input.nonce;\n const payload = base64UrlEncode(encoder.encode(JSON.stringify(claims)));\n const signingInput = `${header}.${payload}`;\n const handle = await getHandle();\n const signature = new Uint8Array(\n await crypto.subtle.sign({ name: \"ECDSA\", hash: \"SHA-256\" }, handle.privateKey, encoder.encode(signingInput)),\n );\n if (signature.byteLength !== 64) {\n throw new Agents24ClientError(\"The WebCrypto provider returned a non-JOSE ECDSA signature.\", {\n kind: \"configuration\",\n code: \"INVALID_DPOP_SIGNATURE\",\n });\n }\n return `${signingInput}.${base64UrlEncode(signature)}`;\n },\n };\n}\n\nexport async function createPkcePair(\n cryptoInput?: WebCryptoLike,\n encoderInput?: TextEncoderLike,\n): Promise<{ verifier: string; challenge: string }> {\n const crypto = resolveCrypto(cryptoInput);\n const encoder = resolveEncoder(encoderInput);\n const random = new Uint8Array(32);\n const getRandomValues = crypto.getRandomValues?.bind(crypto);\n if (!getRandomValues) throw missingCapability(\"crypto.getRandomValues\");\n getRandomValues(random);\n const verifier = base64UrlEncode(random);\n return { verifier, challenge: await hash(crypto.subtle, encoder, verifier) };\n}\n","import { defaultClock, defaultIds, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { AuthenticatedHttp, dpopTokenRequest, responseError, responseJson } from \"./http.js\";\nimport { absoluteUrl, encodePath, normalizeBaseUrl } from \"./url.js\";\nimport type {\n AbortSignalLike,\n ClientSessionAccess,\n ClientSessionProvider,\n ClientSessionStorage,\n Clock,\n DpopKeyProvider,\n FetchLike,\n IdProvider,\n SessionRefreshCoordinator,\n SessionRefreshFenceRecord,\n SessionRefreshFenceStorage,\n SessionRefreshLease,\n TelemetrySink,\n WaitCapability,\n} from \"./types.js\";\n\ntype SessionTokenBody = {\n access_token?: unknown;\n token_type?: unknown;\n expires_in?: unknown;\n expires_at?: unknown;\n refresh_grant?: unknown;\n refresh_expires_at?: unknown;\n refresh_grant_absolute_expires_at?: unknown;\n session_id?: unknown;\n capabilities?: unknown;\n dpop_nonce?: unknown;\n};\n\nfunction parseSessionToken(\n value: unknown,\n options: { clock: Clock; dpopKeyProvider?: DpopKeyProvider | undefined },\n): { access: ClientSessionAccess; refreshGrant?: string; absoluteExpiresAt?: string } {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(\"The session endpoint returned an invalid response.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_RESPONSE\",\n });\n }\n const body = value as SessionTokenBody;\n if (typeof body.access_token !== \"string\" || !body.access_token || /[\\r\\n\\0]/.test(body.access_token)) {\n throw new Agents24ClientError(\"The session endpoint returned an invalid access token.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_RESPONSE\",\n });\n }\n const tokenType = body.token_type === \"DPoP\" ? \"DPoP\" : body.token_type === \"Bearer\" ? \"Bearer\" : undefined;\n if (!tokenType || (tokenType === \"DPoP\" && !options.dpopKeyProvider)) {\n throw new Agents24ClientError(\"The session endpoint returned an unsupported token profile.\", {\n kind: \"protocol\",\n code: \"INVALID_TOKEN_PROFILE\",\n });\n }\n const parsedExpiresAt = typeof body.expires_at === \"string\" ? Date.parse(body.expires_at) : Number.NaN;\n const expiresIn = typeof body.expires_in === \"number\" && Number.isFinite(body.expires_in) ? body.expires_in : 0;\n const expiresAt = Number.isFinite(parsedExpiresAt) ? parsedExpiresAt : options.clock.now() + expiresIn * 1000;\n if (!Number.isFinite(expiresAt) || expiresAt <= options.clock.now()) {\n throw new Agents24ClientError(\"The session endpoint returned an expired access token.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_EXPIRY\",\n });\n }\n const refreshGrant = typeof body.refresh_grant === \"string\" && body.refresh_grant && !/[\\r\\n\\0]/.test(body.refresh_grant)\n ? body.refresh_grant\n : undefined;\n if (body.refresh_grant !== undefined && !refreshGrant) {\n throw new Agents24ClientError(\"The session endpoint returned an invalid refresh grant.\", {\n kind: \"protocol\",\n code: \"INVALID_SESSION_RESPONSE\",\n });\n }\n if (refreshGrant && (tokenType !== \"DPoP\" || !options.dpopKeyProvider)) {\n throw new Agents24ClientError(\"Persistent sessions require a DPoP-bound token profile.\", {\n kind: \"protocol\",\n code: \"INVALID_TOKEN_PROFILE\",\n });\n }\n return {\n access: {\n accessToken: body.access_token,\n tokenType,\n expiresAt,\n ...(typeof body.session_id === \"string\" ? { sessionId: body.session_id } : {}),\n ...(Array.isArray(body.capabilities) && body.capabilities.every((item) => typeof item === \"string\")\n ? { capabilities: body.capabilities as string[] }\n : {}),\n ...(options.dpopKeyProvider ? { dpopKeyProvider: options.dpopKeyProvider } : {}),\n ...(typeof body.dpop_nonce === \"string\" ? { dpopNonce: body.dpop_nonce } : {}),\n },\n ...(refreshGrant ? { refreshGrant } : {}),\n ...(typeof (body.refresh_expires_at ?? body.refresh_grant_absolute_expires_at) === \"string\"\n ? { absoluteExpiresAt: (body.refresh_expires_at ?? body.refresh_grant_absolute_expires_at) as string }\n : {}),\n };\n}\n\nfunction refreshFenceLost(): Agents24ClientError {\n return new Agents24ClientError(\"Refresh coordination ownership changed before completion.\", {\n kind: \"conflict\",\n code: \"REFRESH_FENCE_LOST\",\n retryable: true,\n });\n}\n\nfunction sessionRequestAborted(): Agents24ClientError {\n return new Agents24ClientError(\"The session request was locally detached.\", {\n kind: \"aborted\",\n code: \"ABORTED\",\n retryable: false,\n });\n}\n\nfunction defaultWait(milliseconds: number): Promise<void> {\n const schedule = (globalThis as unknown as {\n setTimeout?: (callback: () => void, delay: number) => unknown;\n }).setTimeout;\n if (!schedule) {\n throw new Agents24ClientError(\"Cross-runtime refresh coordination requires a wait capability.\", {\n kind: \"missing_capability\",\n code: \"MISSING_WAIT_CAPABILITY\",\n });\n }\n return new Promise((resolve) => schedule(resolve, milliseconds));\n}\n\nexport interface FencedRefreshCoordinatorOptions {\n storage: SessionRefreshFenceStorage;\n clock?: Clock;\n ids?: IdProvider;\n ownerId?: string;\n leaseDurationMs?: number;\n pollIntervalMs?: number;\n wait?: WaitCapability;\n}\n\n/**\n * Coordinates refresh-grant rotation across tabs/processes through an injected\n * atomic compare-and-swap store. Takeovers retain the same operation ID so a\n * timed-out owner and its successor address one server idempotency record.\n */\nexport function createFencedRefreshCoordinator(\n options: FencedRefreshCoordinatorOptions,\n): SessionRefreshCoordinator {\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const ownerId = options.ownerId ?? ids.createId();\n const leaseDurationMs = Math.max(1_000, options.leaseDurationMs ?? 60_000);\n const pollIntervalMs = Math.max(10, options.pollIntervalMs ?? 100);\n const wait = options.wait ?? defaultWait;\n let local: Promise<unknown> | undefined;\n\n const assertActive = async (record: SessionRefreshFenceRecord): Promise<void> => {\n const current = await options.storage.load();\n if (\n !current?.active ||\n current.fence !== record.fence ||\n current.operationId !== record.operationId ||\n current.ownerId !== ownerId ||\n current.expiresAt <= clock.now()\n ) {\n throw refreshFenceLost();\n }\n };\n\n const acquire = async (): Promise<SessionRefreshFenceRecord> => {\n while (true) {\n const current = await options.storage.load();\n const now = clock.now();\n if (current?.active && current.expiresAt > now) {\n await wait(Math.max(1, Math.min(pollIntervalMs, current.expiresAt - now)));\n continue;\n }\n const next: SessionRefreshFenceRecord = {\n active: true,\n expiresAt: now + leaseDurationMs,\n fence: (current?.fence ?? 0) + 1,\n operationId: current?.active ? current.operationId : ids.createId(),\n ownerId,\n };\n if (await options.storage.compareAndSwap(current?.fence ?? null, next)) return next;\n }\n };\n\n return {\n async runExclusive<T>(operation: (lease: SessionRefreshLease) => Promise<T>): Promise<T> {\n if (local) return local as Promise<T>;\n const pending = (async () => {\n const record = await acquire();\n const lease: SessionRefreshLease = {\n fence: record.fence,\n operationId: record.operationId,\n assertActive: () => assertActive(record),\n };\n try {\n return await operation(lease);\n } finally {\n const current = await options.storage.load();\n if (\n current?.active &&\n current.fence === record.fence &&\n current.operationId === record.operationId &&\n current.ownerId === ownerId\n ) {\n await options.storage.compareAndSwap(current.fence, {\n ...current,\n active: false,\n expiresAt: clock.now(),\n });\n }\n }\n })();\n local = pending;\n try {\n return await pending;\n } finally {\n if (local === pending) local = undefined;\n }\n },\n };\n}\n\nexport function createInMemoryRefreshCoordinator(): SessionRefreshCoordinator {\n let active: Promise<unknown> | undefined;\n let fence = 0;\n return {\n async runExclusive<T>(operation: (lease: SessionRefreshLease) => Promise<T>): Promise<T> {\n if (active) return active as Promise<T>;\n fence += 1;\n const ownedFence = fence;\n const current = Promise.resolve().then(() => operation({\n fence: ownedFence,\n operationId: `memory-refresh-${ownedFence}`,\n async assertActive() {\n if (active !== current) throw refreshFenceLost();\n },\n }));\n active = current;\n try {\n return await current;\n } finally {\n if (active === current) active = undefined;\n }\n },\n };\n}\n\nexport function createStaticSessionProvider(access: ClientSessionAccess): ClientSessionProvider {\n return {\n async getAccess() {\n return access;\n },\n };\n}\n\nexport interface ManagedSessionProviderOptions {\n baseUrl: string;\n deploymentId: string;\n fetch?: FetchLike;\n dpopKeyProvider?: DpopKeyProvider | undefined;\n storage?: ClientSessionStorage;\n coordinator?: SessionRefreshCoordinator;\n clock?: Clock;\n ids?: IdProvider;\n telemetry?: TelemetrySink;\n mint(input: {\n fetch: FetchLike;\n url: string;\n dpopKeyProvider?: DpopKeyProvider | undefined;\n signal?: AbortSignalLike | undefined;\n }): Promise<unknown>;\n}\n\nfunction createManagedSessionProviderInternal(\n options: ManagedSessionProviderOptions,\n recoverInvalidRefreshWithMint: boolean,\n): ClientSessionProvider {\n if (options.storage && !options.dpopKeyProvider) {\n throw new Agents24ClientError(\"Persistent session storage requires a DPoP key provider.\", {\n kind: \"configuration\",\n code: \"PERSISTENT_SESSION_REQUIRES_DPOP\",\n });\n }\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const coordinator = options.coordinator ?? createInMemoryRefreshCoordinator();\n let current: ClientSessionAccess | undefined;\n let refreshGrant: string | undefined;\n let minting: Promise<ClientSessionAccess> | undefined;\n\n const emit = async (event: Parameters<TelemetrySink[\"emit\"]>[0]): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Session telemetry is noncredential and cannot affect authentication.\n }\n };\n\n const loadStored = async (): Promise<Awaited<ReturnType<ClientSessionStorage[\"load\"]>>> => {\n const stored = await options.storage?.load() ?? null;\n if (!stored) return null;\n if (!stored.refreshGrant || /[\\r\\n\\0]/.test(stored.refreshGrant)) {\n throw new Agents24ClientError(\"Stored session state is invalid.\", {\n kind: \"authentication\",\n code: \"INVALID_STORED_SESSION\",\n });\n }\n if (stored.absoluteExpiresAt) {\n const absoluteExpiry = Date.parse(stored.absoluteExpiresAt);\n if (!Number.isFinite(absoluteExpiry) || absoluteExpiry <= clock.now()) {\n await options.storage?.clear();\n throw new Agents24ClientError(\"The persistent session has expired.\", {\n kind: \"authentication\",\n code: \"SESSION_EXPIRED\",\n });\n }\n }\n return stored;\n };\n\n const save = async (parsed: ReturnType<typeof parseSessionToken>): Promise<void> => {\n current = parsed.access;\n if (parsed.refreshGrant) refreshGrant = parsed.refreshGrant;\n if (refreshGrant && options.storage) {\n await options.storage.save({\n refreshGrant,\n ...(current.sessionId ? { sessionId: current.sessionId } : {}),\n ...(parsed.absoluteExpiresAt ? { absoluteExpiresAt: parsed.absoluteExpiresAt } : {}),\n });\n }\n };\n\n const mint = async (signal?: AbortSignalLike): Promise<ClientSessionAccess> => {\n if (signal?.aborted) throw sessionRequestAborted();\n if (!minting) {\n const url = absoluteUrl(baseUrl, `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/anonymous`);\n minting = options\n // Session establishment is shared infrastructure. Once started, it must\n // finish even if the request which triggered it is disposed by React.\n .mint({ fetch, url, dpopKeyProvider: options.dpopKeyProvider })\n .then(async (value) => {\n const parsed = parseSessionToken(value, { clock, dpopKeyProvider: options.dpopKeyProvider });\n await save(parsed);\n return parsed.access;\n })\n .finally(() => {\n minting = undefined;\n });\n }\n return minting;\n };\n\n const refresh = async (signal?: AbortSignalLike): Promise<ClientSessionAccess> =>\n coordinator.runExclusive(async (lease) => {\n if (signal?.aborted) throw sessionRequestAborted();\n if (options.storage) {\n // Another tab may have rotated while this caller waited for the fence.\n // The persisted record is canonical after lease acquisition.\n const stored = await loadStored();\n if (stored?.refreshGrant) refreshGrant = stored.refreshGrant;\n }\n if (!refreshGrant) return mint(signal);\n await lease.assertActive();\n const response = await dpopTokenRequest({\n fetch,\n url: absoluteUrl(baseUrl, \"/public/client-runtime/sessions/refresh\"),\n body: { refresh_grant: refreshGrant },\n dpopKeyProvider: options.dpopKeyProvider,\n // Refresh grants rotate exactly once. Never abandon the credential\n // transaction because a consuming request was locally cancelled.\n idempotencyKey: lease.operationId,\n });\n if (!response.ok) {\n if (response.status === 400 || response.status === 401 || response.status === 403) {\n await lease.assertActive();\n await options.storage?.clear();\n refreshGrant = undefined;\n current = undefined;\n if (recoverInvalidRefreshWithMint) return mint(signal);\n }\n throw await responseError(response);\n }\n await lease.assertActive();\n const parsed = parseSessionToken(await responseJson(response), { clock, dpopKeyProvider: options.dpopKeyProvider });\n await save(parsed);\n await emit({ type: \"session.refreshed\", operation: \"session\" });\n return parsed.access;\n });\n\n let provider: ClientSessionProvider;\n provider = {\n async getAccess(context) {\n if (current && current.expiresAt > clock.now()) return current;\n if (refreshGrant || (await loadStored())?.refreshGrant) return refresh(context.signal);\n return mint(context.signal);\n },\n async refresh(context) {\n return refresh(context.signal);\n },\n async revoke(input) {\n const authenticated = new AuthenticatedHttp({\n baseUrl,\n sessionProvider: provider,\n fetch,\n clock,\n });\n await authenticated.json<unknown>(\"POST\", \"/public/client-runtime/sessions/revoke\", {\n operation: \"sessions.revoke\",\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n current = undefined;\n refreshGrant = undefined;\n await options.storage?.clear();\n await emit({ type: \"session.revoked\", operation: \"session\" });\n },\n };\n return provider;\n}\n\nexport function createManagedSessionProvider(options: ManagedSessionProviderOptions): ClientSessionProvider {\n return createManagedSessionProviderInternal(options, false);\n}\n\nexport interface AnonymousSessionProviderOptions\n extends Omit<ManagedSessionProviderOptions, \"mint\"> {\n persistent?: boolean;\n nativeProfileId?: string;\n requestedCapabilities?: readonly string[];\n attestation?: string;\n}\n\nexport function createAnonymousSessionProvider(options: AnonymousSessionProviderOptions): ClientSessionProvider {\n if ((options.persistent || options.nativeProfileId) && !options.dpopKeyProvider) {\n throw new Agents24ClientError(\"Persistent and native anonymous sessions require a DPoP key provider.\", {\n kind: \"configuration\",\n code: \"MISSING_DPOP_PROVIDER\",\n });\n }\n return createManagedSessionProviderInternal(\n {\n ...options,\n async mint({ fetch, url, dpopKeyProvider, signal }) {\n const response = await dpopTokenRequest({\n fetch,\n url,\n body: {\n persistent: options.persistent ?? false,\n requested_capabilities: [...(options.requestedCapabilities ?? [])],\n ...(options.nativeProfileId ? { native_profile_id: options.nativeProfileId } : {}),\n ...(dpopKeyProvider ? { dpop_public_jwk: await dpopKeyProvider.getPublicJwk() } : {}),\n ...(options.attestation ? { attestation: options.attestation } : {}),\n },\n dpopKeyProvider,\n prooflessInitialRequest: Boolean(dpopKeyProvider),\n signal,\n });\n if (!response.ok) throw await responseError(response);\n return responseJson(response);\n },\n },\n true,\n );\n}\n\nexport interface HostedOidcSessionProvider extends ClientSessionProvider {\n beginAuthorization(input: {\n redirectUri: string;\n codeChallenge: string;\n nativeProfileId?: string;\n signal?: AbortSignalLike;\n }): Promise<{ authorizationUrl: string }>;\n exchange(input: { code: string; codeVerifier: string; signal?: AbortSignalLike }): Promise<ClientSessionAccess>;\n}\n\nexport interface HostedOidcSessionProviderOptions\n extends Omit<ManagedSessionProviderOptions, \"mint\"> {\n dpopKeyProvider: DpopKeyProvider;\n redirectUri?: string;\n}\n\nexport function createHostedOidcSessionProvider(options: HostedOidcSessionProviderOptions): HostedOidcSessionProvider {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const clock = options.clock ?? defaultClock();\n let current: ClientSessionAccess | undefined;\n let refreshGrant: string | undefined;\n let enrollmentNonce: string | undefined;\n const ids = options.ids ?? defaultIds();\n let memoryRecord: Awaited<ReturnType<ClientSessionStorage[\"load\"]>> = null;\n const effectiveStorage: ClientSessionStorage = {\n async load() {\n return (await options.storage?.load()) ?? memoryRecord;\n },\n async save(record) {\n memoryRecord = record;\n await options.storage?.save(record);\n },\n async clear() {\n memoryRecord = null;\n await options.storage?.clear();\n },\n };\n const baseProvider = createManagedSessionProvider({\n ...options,\n storage: effectiveStorage,\n async mint() {\n throw new Agents24ClientError(\"Complete the hosted OIDC authorization before requesting access.\", {\n kind: \"authentication\",\n code: \"OIDC_AUTHORIZATION_REQUIRED\",\n });\n },\n });\n\n return {\n async beginAuthorization(input) {\n const url = absoluteUrl(\n baseUrl,\n `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/oidc/authorize`,\n );\n const response = await dpopTokenRequest({\n fetch,\n url,\n dpopKeyProvider: options.dpopKeyProvider,\n signal: input.signal,\n body: {\n redirect_uri: input.redirectUri,\n code_challenge: input.codeChallenge,\n code_challenge_method: \"S256\",\n persistent: true,\n dpop_public_jwk: await options.dpopKeyProvider.getPublicJwk(),\n ...(input.nativeProfileId ? { native_profile_id: input.nativeProfileId } : {}),\n },\n });\n if (!response.ok) throw await responseError(response);\n const body = (await responseJson(response)) as Record<string, unknown>;\n if (typeof body.authorization_url !== \"string\") {\n throw new Agents24ClientError(\"The OIDC endpoint returned an invalid authorization URL.\", {\n kind: \"protocol\",\n code: \"INVALID_OIDC_RESPONSE\",\n });\n }\n if (typeof body.dpop_nonce !== \"string\" || !body.dpop_nonce) {\n throw new Agents24ClientError(\"The OIDC endpoint did not return a DPoP enrollment nonce.\", {\n kind: \"protocol\",\n code: \"INVALID_OIDC_RESPONSE\",\n });\n }\n enrollmentNonce = body.dpop_nonce;\n return { authorizationUrl: body.authorization_url };\n },\n async exchange(input) {\n const response = await dpopTokenRequest({\n fetch,\n url: absoluteUrl(\n baseUrl,\n `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/oidc/exchange`,\n ),\n dpopKeyProvider: options.dpopKeyProvider,\n signal: input.signal,\n idempotencyKey: ids.createId(),\n nonce: enrollmentNonce,\n body: { code: input.code, code_verifier: input.codeVerifier },\n });\n if (!response.ok) throw await responseError(response);\n const parsed = parseSessionToken(await responseJson(response), {\n clock,\n dpopKeyProvider: options.dpopKeyProvider,\n });\n current = parsed.access;\n enrollmentNonce = undefined;\n refreshGrant = parsed.refreshGrant;\n if (refreshGrant) {\n await effectiveStorage.save({\n refreshGrant,\n ...(current.sessionId ? { sessionId: current.sessionId } : {}),\n ...(parsed.absoluteExpiresAt ? { absoluteExpiresAt: parsed.absoluteExpiresAt } : {}),\n });\n }\n return current;\n },\n async getAccess(context) {\n if (current && current.expiresAt > clock.now()) return current;\n return baseProvider.getAccess(context);\n },\n async refresh(context) {\n return baseProvider.refresh?.(context) ?? Promise.reject(new Error(\"Refresh unavailable\"));\n },\n async revoke(input) {\n await baseProvider.revoke?.(input);\n current = undefined;\n refreshGrant = undefined;\n },\n };\n}\n"]}
@@ -65,6 +65,8 @@ export type ExtendedRuntimeEvent = {
65
65
  [key: string]: unknown;
66
66
  };
67
67
  export type RuntimeEventValidationOptions = {
68
+ /** Internal debug streams only; public events still use strict validation. */
69
+ allowUnknownInternalEvents?: boolean;
68
70
  additionalEventNames?: readonly string[];
69
71
  additionalStages?: readonly string[];
70
72
  };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { createAnonymousSessionProvider, createFencedRefreshCoordinator, createHostedOidcSessionProvider, createInMemoryRefreshCoordinator, createManagedSessionProvider, createPkcePair, createStaticSessionProvider, createWebCryptoDpopKeyProvider } from './chunk-ZDLWNALI.js';
2
- export { createAgents24Client } from './chunk-PXCTIXO2.js';
3
- export { Agents24ClientError, createByteMultipartEncoder } from './chunk-LG3ZMQ2W.js';
4
- import './chunk-FLTCOJZR.js';
1
+ export { createAnonymousSessionProvider, createFencedRefreshCoordinator, createHostedOidcSessionProvider, createInMemoryRefreshCoordinator, createManagedSessionProvider, createPkcePair, createStaticSessionProvider, createWebCryptoDpopKeyProvider } from './chunk-ZJUK7D4O.js';
2
+ export { createAgents24Client } from './chunk-UJEKDFKB.js';
3
+ export { Agents24ClientError, createByteMultipartEncoder } from './chunk-BMD35ROR.js';
4
+ import './chunk-5LH5VDWT.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
package/dist/protocol.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent } from './chunk-FLTCOJZR.js';
1
+ export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent } from './chunk-5LH5VDWT.js';
2
2
 
3
3
  // src/context-window.ts
4
4
  var SOURCE_PRIORITY = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents24/client",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Framework-neutral end-user runtime client for deployment-scoped Agents24 sessions.",
5
5
  "keywords": [
6
6
  "agents24",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/generated/protocol.js"],"names":[],"mappings":"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","file":"chunk-FLTCOJZR.js","sourcesContent":["// @generated by @agents24/sdk-contract; DO NOT EDIT.\n// contract-sha256: a409af6996d10a8d94e0f6332c9a381c3535a9c8511314b6c42b237d7e057029\nconst RUNTIME_EVENTS = new Set([\"run.accepted\",\"run.snapshot\",\"run.completed\",\"run.cancelled\",\"run.paused\",\"run.failed\",\"run.detached\",\"assistant.delta\",\"model.turn.started\",\"model.turn.completed\",\"model.turn.failed\",\"reasoning.update\",\"node.status.updated\",\"tool.started\",\"tool.completed\",\"tool.failed\",\"tool.cancelled\",\"tool.child_run_started\",\"tool.child_run_finished\",\"tool.child_tool_started\",\"tool.child_tool_completed\",\"tool.child_tool_failed\",\"tool.child_tool_cancelled\",\"context_window.updated\",\"context.compression.updated\",\"run_usage.updated\",\"hitl.requested\",\"hitl.resolved\",\"mcp.authorization.required\",\"mcp.authorization.completed\",\"mcp.authorization.failed\",\"attachment.created\",\"attachment.updated\",\"attachment.ready\",\"attachment.failed\",\"source.added\",\"citation.added\",\"ui_blocks.updated\"]);\nconst RUNTIME_STAGES = new Set([\"run\",\"assistant\",\"model\",\"reasoning\",\"node\",\"tool\",\"context\",\"usage\",\"attachment\",\"source\",\"system\"]);\nconst RESPONSE_BLOCK_KINDS = new Set([\"assistant_text\",\"reasoning_note\",\"context_compression\",\"node_activity\",\"tool_call\",\"ui_blocks\",\"hitl_request\",\"error\",\"source\",\"citation\",\"attachment\",\"mcp_authorization\",\"user_message\"]);\nconst THREAD_EVENTS = new Set([\"thread.summary.updated\",\"thread.deleted\",\"snapshot_required\"]);\nconst UTC_TIMESTAMP = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$/;\n\nexport const CONTRACT_HASH = \"a409af6996d10a8d94e0f6332c9a381c3535a9c8511314b6c42b237d7e057029\";\nexport const RUNTIME_PROTOCOL_VERSION = \"run-stream.v3\";\nexport const THREAD_SUMMARY_PROTOCOL_VERSION = \"agents24.thread_summary_event.v1\";\n\nexport class Agents24ProtocolError extends Error {\n constructor(category, message, details) {\n super(message);\n this.name = \"Agents24ProtocolError\";\n this.category = category;\n this.details = details;\n }\n}\n\nfunction record(value) {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction nonEmptyString(value) {\n return typeof value === \"string\" && value.length > 0;\n}\n\nfunction protocolError(category, message, details) {\n throw new Agents24ProtocolError(category, message, details);\n}\n\nfunction includesProtocolName(values, value) {\n return Array.isArray(values) && values.includes(value);\n}\n\nexport function parseProtocolJson(payload) {\n try {\n return JSON.parse(payload);\n } catch (cause) {\n return protocolError(\"invalid_json\", \"Protocol payload is not valid JSON.\", cause);\n }\n}\n\nexport function validateResponseBlock(value) {\n if (!record(value) || !nonEmptyString(value.id) || !RESPONSE_BLOCK_KINDS.has(value.kind)) {\n return protocolError(\"invalid_response_block\", \"Response block identity or kind is invalid.\", value);\n }\n if (!Number.isInteger(value.seq) || value.seq < 0 || !nonEmptyString(value.status)) {\n return protocolError(\"invalid_response_block\", \"Response block sequence or status is invalid.\", value);\n }\n return value;\n}\n\nfunction validateBlocks(value) {\n if (!record(value)) return;\n if (value.response_block !== undefined) validateResponseBlock(value.response_block);\n const blocks = value.response_blocks;\n if (blocks === undefined) return;\n if (!Array.isArray(blocks)) {\n protocolError(\"invalid_response_block\", \"response_blocks must be an array.\", blocks);\n }\n for (const block of blocks) validateResponseBlock(block);\n}\n\nfunction validateModelTurn(event, payload) {\n if (!event.startsWith(\"model.turn.\")) return;\n const expectedStatus = event === \"model.turn.started\" ? \"running\" : event === \"model.turn.completed\" ? \"completed\" : \"failed\";\n if (!nonEmptyString(payload.model_turn_id) || ![\"agent\", \"model\"].includes(payload.kind) || payload.status !== expectedStatus) {\n protocolError(\"invalid_event\", \"Model-turn lifecycle payload is invalid.\", payload);\n }\n if (payload.iteration !== undefined && (!Number.isInteger(payload.iteration) || payload.iteration < 0)) {\n protocolError(\"invalid_event\", \"Model-turn iteration is invalid.\", payload.iteration);\n }\n if (event === \"model.turn.completed\" && ![\"text\", \"tool_calls\", \"completed\"].includes(payload.outcome)) {\n protocolError(\"invalid_event\", \"Completed model turn requires a valid outcome.\", payload.outcome);\n }\n}\n\nexport function validateRuntimeEvent(value, options = {}) {\n if (!record(value)) {\n return protocolError(\"invalid_envelope\", \"Runtime event must be an object.\", value);\n }\n if (value.version !== RUNTIME_PROTOCOL_VERSION) {\n return protocolError(\"unsupported_version\", \"Runtime event version is unsupported.\", value.version);\n }\n if (!RUNTIME_EVENTS.has(value.event) && !includesProtocolName(options.additionalEventNames, value.event)) {\n return protocolError(\"unknown_event\", \"Runtime event name is not in the public protocol.\", value.event);\n }\n if (!Number.isInteger(value.seq) || value.seq < 0 || !UTC_TIMESTAMP.test(value.ts || \"\") ||\n !nonEmptyString(value.run_id) ||\n (!RUNTIME_STAGES.has(value.stage) && !includesProtocolName(options.additionalStages, value.stage)) ||\n !record(value.payload)) {\n return protocolError(\"invalid_envelope\", \"Runtime event is missing a required public field.\", value);\n }\n validateBlocks(value.payload);\n validateModelTurn(value.event, value.payload);\n return value;\n}\n\nexport function parseRuntimeEvent(payload, options) {\n return validateRuntimeEvent(parseProtocolJson(payload), options);\n}\n\nexport function validateThreadSummaryEvent(value) {\n if (!record(value) || value.schema_version !== THREAD_SUMMARY_PROTOCOL_VERSION ||\n !THREAD_EVENTS.has(value.event) || !Number.isInteger(value.cursor) || value.cursor < 0) {\n return protocolError(\"invalid_thread_summary\", \"Thread-summary event envelope is invalid.\", value);\n }\n if (value.event === \"thread.summary.updated\" && !record(value.thread)) {\n return protocolError(\"invalid_thread_summary\", \"Updated thread-summary event requires thread.\", value);\n }\n if (value.event === \"thread.deleted\" && !nonEmptyString(value.thread_id)) {\n return protocolError(\"invalid_thread_summary\", \"Deleted thread-summary event requires thread_id.\", value);\n }\n return value;\n}\n\nfunction parseSseBlock(block) {\n const data = [];\n for (const line of block.split(/\\r\\n|\\r|\\n/)) {\n if (!line || line.startsWith(\":\")) continue;\n const separator = line.indexOf(\":\");\n const field = separator < 0 ? line : line.slice(0, separator);\n let value = separator < 0 ? \"\" : line.slice(separator + 1);\n if (value.startsWith(\" \")) value = value.slice(1);\n if (field === \"data\") data.push(value);\n }\n return data.length ? data.join(\"\\n\") : null;\n}\n\nfunction nextSseBoundary(buffer) {\n const match = /\\r\\n\\r\\n|\\n\\n|\\r\\r/.exec(buffer);\n return match ? { index: match.index, length: match[0].length } : null;\n}\n\nexport function createSseParser(options) {\n const { decoder, onPayload, signal } = options;\n if (!decoder || typeof decoder.decode !== \"function\" || typeof onPayload !== \"function\") {\n protocolError(\"invalid_envelope\", \"SSE parser requires decoder and onPayload capabilities.\");\n }\n let buffer = \"\";\n let finished = false;\n\n async function drain(allowTrailing) {\n let boundary = nextSseBoundary(buffer);\n while (boundary) {\n const block = buffer.slice(0, boundary.index);\n buffer = buffer.slice(boundary.index + boundary.length);\n const payload = parseSseBlock(block);\n if (payload !== null) await onPayload(payload);\n if (signal?.aborted) return;\n boundary = nextSseBoundary(buffer);\n }\n if (allowTrailing && buffer.trim()) {\n const payload = parseSseBlock(buffer);\n buffer = \"\";\n if (payload !== null) await onPayload(payload);\n }\n }\n\n return {\n async push(chunk) {\n if (finished) protocolError(\"invalid_envelope\", \"Cannot push after SSE parser finish.\");\n if (signal?.aborted) return;\n buffer += decoder.decode(chunk, { stream: true });\n await drain(false);\n },\n async finish() {\n if (finished) return;\n finished = true;\n if (signal?.aborted) return;\n buffer += decoder.decode();\n await drain(true);\n },\n };\n}\n\nexport async function parseSseBytes(chunks, options) {\n const payloads = [];\n const parser = createSseParser({\n ...options,\n onPayload: async (payload) => {\n payloads.push(payload);\n if (options.onPayload) await options.onPayload(payload);\n },\n });\n for await (const chunk of chunks) {\n if (options.signal?.aborted) break;\n await parser.push(chunk);\n }\n await parser.finish();\n return payloads;\n}\n\nexport function parseRuntimeSsePayload(payload, options) {\n return parseRuntimeEvent(payload, options);\n}\n\nexport function parseThreadSummarySsePayload(payload) {\n return validateThreadSummaryEvent(parseProtocolJson(payload));\n}\n"]}