@agents24/client 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/base64url.ts","../src/dpop.ts","../src/sessions.ts"],"names":[],"mappings":"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","file":"index.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 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\nexport function createManagedSessionProvider(options: ManagedSessionProviderOptions): 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 (!minting) {\n const url = absoluteUrl(baseUrl, `/public/client-runtime/deployments/${encodePath(options.deploymentId)}/sessions/anonymous`);\n minting = options\n .mint({ fetch, url, dpopKeyProvider: options.dpopKeyProvider, signal })\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 (!refreshGrant && options.storage) {\n const stored = await loadStored();\n 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 signal,\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 }\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 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 const ids = options.ids ?? defaultIds();\n return createManagedSessionProvider({\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 idempotencyKey: ids.createId(),\n });\n if (!response.ok) throw await responseError(response);\n return responseJson(response);\n },\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 idempotencyKey: ids.createId(),\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":[],"names":[],"mappings":"","file":"index.js"}
@@ -1,5 +1,5 @@
1
1
  export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent, } from "./generated/protocol.js";
2
- export type { AbortSignalLike as ProtocolAbortSignalLike, JsonScalar, JsonValue, ProtocolErrorCategory, PublicResponseBlock, RuntimeEvent, SseParser, ThreadSummaryEvent, Utf8Decoder, } from "./generated/protocol.js";
2
+ export type { AbortSignalLike as ProtocolAbortSignalLike, JsonScalar, JsonValue, ModelTurnEventName, ModelTurnKind, ModelTurnOutcome, ModelTurnPayload, ModelTurnRuntimeEvent, ModelTurnStatus, ProtocolErrorCategory, PublicResponseBlock, ExtendedRuntimeEvent, RuntimeEvent, RuntimeEventValidationOptions, SseParser, ThreadSummaryEvent, Utf8Decoder, } from "./generated/protocol.js";
3
3
  export { compressionFromContextWindow, createContextWindowTracker, mergeContextWindow, mergeContextWindowUpdate, normalizeContextCompression, normalizeContextWindow, } from "./context-window.js";
4
- export type { ActiveThreadRun, Attachment, AttachmentUploadResult, RunCancelResult, RunContext, RunResumeResult, ThreadDeleteResult, ThreadDetail, ThreadSummary, ThreadTurn, ThreadsResponse, ToolInputOverrides, Turn, } from "./runtime-types.js";
4
+ export type { ActiveThreadRun, Attachment, AttachmentContentAccess, AttachmentUploadResult, FeedbackRating, FeedbackReason, ResponseFeedback, ResponseFeedbackResult, RunCancelResult, RunContext, RunResumeResult, ThreadDeleteResult, ThreadDetail, ThreadSummary, ThreadTurn, ThreadsResponse, ToolInputOverrides, Turn, } from "./runtime-types.js";
5
5
  export type { ContextCompression, ContextWindow, ContextWindowConfidence, ContextWindowSource, ContextWindowStage, ContextWindowTracker, } from "./context-window.js";
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-VVLMMNXI.js';
1
+ export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent } from './chunk-IOVCURGW.js';
2
2
 
3
3
  // src/context-window.ts
4
4
  var SOURCE_PRIORITY = {
@@ -10,6 +10,8 @@ var SOURCE_PRIORITY = {
10
10
  provider_cached_estimate: 1,
11
11
  multimodal_estimate: 2,
12
12
  hf_tokenizer: 3,
13
+ lab_tokenizer: 3,
14
+ tiktoken: 3,
13
15
  runtime_tokenizer: 3,
14
16
  provider_count_api: 4,
15
17
  provider_usage: 5,
@@ -48,16 +50,29 @@ function windowWeight(value) {
48
50
  function normalizeContextCompression(value) {
49
51
  if (!value || typeof value !== "object" || Array.isArray(value)) return null;
50
52
  const payload = value;
53
+ const rawStatus = String(payload.status || "").trim();
54
+ const rawStrategy = String(payload.strategy || "").trim();
51
55
  return {
52
56
  active: Boolean(payload.active),
57
+ status: rawStatus === "started" || rawStatus === "completed" || rawStatus === "failed" ? rawStatus : null,
58
+ strategy: rawStrategy === "artifact_references" || rawStrategy === "semantic_checkpoint" ? rawStrategy : null,
53
59
  reason: typeof payload.reason === "string" ? payload.reason : null,
54
60
  input_tokens: numberOrNull(payload.input_tokens),
55
61
  max_tokens: numberOrNull(payload.max_tokens),
56
62
  usage_ratio: numberOrNull(payload.usage_ratio),
63
+ admission_input_tokens: numberOrNull(payload.admission_input_tokens),
64
+ admission_input_tokens_before: numberOrNull(payload.admission_input_tokens_before),
65
+ admission_input_tokens_after: numberOrNull(payload.admission_input_tokens_after),
66
+ admission_ratio: numberOrNull(payload.admission_ratio),
67
+ admission_confidence: normalizeConfidence(payload.admission_confidence),
68
+ applied_margin: numberOrNull(payload.applied_margin),
57
69
  full_frame_count: numberOrNull(payload.full_frame_count),
58
70
  compact_frame_count: numberOrNull(payload.compact_frame_count),
59
71
  dropped_frame_count: numberOrNull(payload.dropped_frame_count),
60
72
  artifact_ref_count: numberOrNull(payload.artifact_ref_count),
73
+ checkpoint_frame_count: numberOrNull(payload.checkpoint_frame_count),
74
+ input_tokens_before: numberOrNull(payload.input_tokens_before),
75
+ input_tokens_after: numberOrNull(payload.input_tokens_after),
61
76
  compression_trigger_budget: numberOrNull(payload.compression_trigger_budget),
62
77
  compression_target_budget: numberOrNull(payload.compression_target_budget),
63
78
  compression_target_ratio: numberOrNull(payload.compression_target_ratio),
@@ -79,6 +94,10 @@ function normalizeContextWindow(value) {
79
94
  input_tokens: numberOrNull(payload.input_tokens),
80
95
  remaining_tokens: numberOrNull(payload.remaining_tokens),
81
96
  usage_ratio: numberOrNull(payload.usage_ratio),
97
+ admission_input_tokens: numberOrNull(payload.admission_input_tokens),
98
+ admission_ratio: numberOrNull(payload.admission_ratio),
99
+ admission_confidence: normalizeConfidence(payload.admission_confidence),
100
+ applied_margin: numberOrNull(payload.applied_margin),
82
101
  assembly: payload.assembly && typeof payload.assembly === "object" && !Array.isArray(payload.assembly) ? payload.assembly : null,
83
102
  context_compression: normalizeContextCompression(payload.context_compression)
84
103
  };
@@ -110,14 +129,25 @@ function compressionFromContextWindow(value) {
110
129
  const reason = typeof assembly.compaction_reason === "string" ? assembly.compaction_reason : "none";
111
130
  return {
112
131
  active: reason !== "none" || compactFrameCount > 0 || droppedFrameCount > 0,
132
+ status: assembly.status === "started" || assembly.status === "completed" || assembly.status === "failed" ? assembly.status : null,
133
+ strategy: assembly.strategy === "artifact_references" || assembly.strategy === "semantic_checkpoint" ? assembly.strategy : null,
113
134
  reason,
114
135
  input_tokens: value.input_tokens ?? null,
115
136
  max_tokens: value.max_tokens ?? null,
116
137
  usage_ratio: value.usage_ratio ?? null,
138
+ admission_input_tokens: value.admission_input_tokens ?? null,
139
+ admission_input_tokens_before: numberOrNull(assembly.admission_input_tokens_before),
140
+ admission_input_tokens_after: numberOrNull(assembly.admission_input_tokens_after),
141
+ admission_ratio: value.admission_ratio ?? null,
142
+ admission_confidence: value.admission_confidence ?? null,
143
+ applied_margin: value.applied_margin ?? null,
117
144
  full_frame_count: numberOrNull(assembly.full_frame_count),
118
145
  compact_frame_count: compactFrameCount,
119
146
  dropped_frame_count: droppedFrameCount,
120
147
  artifact_ref_count: artifactRefs.length,
148
+ checkpoint_frame_count: numberOrNull(assembly.checkpoint_frame_count),
149
+ input_tokens_before: numberOrNull(assembly.input_tokens_before),
150
+ input_tokens_after: numberOrNull(assembly.input_tokens_after),
121
151
  compression_trigger_budget: numberOrNull(assembly.compression_trigger_budget),
122
152
  compression_target_budget: numberOrNull(assembly.compression_target_budget),
123
153
  compression_target_ratio: numberOrNull(assembly.compression_target_ratio),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context-window.ts"],"names":[],"mappings":"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","file":"protocol.js","sourcesContent":["export type ContextWindowSource =\n | \"exact\"\n | \"estimated\"\n | \"provider_count_api\"\n | \"provider_usage\"\n | \"provider_cached_estimate\"\n | \"runtime_tokenizer\"\n | \"hf_tokenizer\"\n | \"multimodal_estimate\"\n | \"text_estimate\"\n | \"tokenizer_estimate\"\n | \"heuristic_estimate\"\n | \"unknown\";\n\nexport type ContextWindowStage = \"preflight\" | \"sent_prompt\" | \"final_usage\";\nexport type ContextWindowConfidence = \"exact\" | \"high\" | \"medium\" | \"low\" | \"unknown\";\n\nexport type ContextCompression = {\n active: boolean;\n reason?: string | null;\n input_tokens?: number | null;\n max_tokens?: number | null;\n usage_ratio?: number | null;\n full_frame_count?: number | null;\n compact_frame_count?: number | null;\n dropped_frame_count?: number | null;\n artifact_ref_count?: number | null;\n compression_trigger_budget?: number | null;\n compression_target_budget?: number | null;\n compression_target_ratio?: number | null;\n threshold_used?: number | null;\n};\n\nexport type ContextWindow = {\n source: ContextWindowSource;\n run_id?: string | null;\n stage?: ContextWindowStage | null;\n confidence?: ContextWindowConfidence | null;\n counter?: string | null;\n model_id?: string | null;\n max_tokens?: number | null;\n max_tokens_source?: string | null;\n input_tokens?: number | null;\n remaining_tokens?: number | null;\n usage_ratio?: number | null;\n assembly?: Record<string, unknown> | null;\n context_compression?: ContextCompression | null;\n};\n\nconst SOURCE_PRIORITY: Record<ContextWindowSource, number> = {\n unknown: 0,\n heuristic_estimate: 1,\n tokenizer_estimate: 1,\n text_estimate: 1,\n estimated: 1,\n provider_cached_estimate: 1,\n multimodal_estimate: 2,\n hf_tokenizer: 3,\n runtime_tokenizer: 3,\n provider_count_api: 4,\n provider_usage: 5,\n exact: 5,\n};\n\nconst STAGE_PRIORITY: Record<ContextWindowStage, number> = {\n preflight: 0,\n sent_prompt: 1,\n final_usage: 2,\n};\n\nfunction numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeSource(value: unknown): ContextWindowSource {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw in SOURCE_PRIORITY ? raw as ContextWindowSource : raw ? \"estimated\" : \"unknown\";\n}\n\nfunction normalizeStage(value: unknown): ContextWindowStage {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"preflight\" || raw === \"sent_prompt\" || raw === \"final_usage\" ? raw : \"sent_prompt\";\n}\n\nfunction normalizeConfidence(value: unknown): ContextWindowConfidence | null {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"exact\" || raw === \"high\" || raw === \"medium\" || raw === \"low\" || raw === \"unknown\" ? raw : null;\n}\n\nfunction stagePriority(value: ContextWindow | null | undefined): number {\n return STAGE_PRIORITY[value?.stage || \"sent_prompt\"] ?? STAGE_PRIORITY.sent_prompt;\n}\n\nfunction hasRenderableWindow(value: ContextWindow | null | undefined): boolean {\n const maxTokens = numberOrNull(value?.max_tokens);\n return maxTokens !== null && maxTokens > 0;\n}\n\nfunction windowWeight(value: ContextWindow | null | undefined): [number, number] {\n return value ? [stagePriority(value), SOURCE_PRIORITY[value.source] || 0] : [0, 0];\n}\n\nexport function normalizeContextCompression(value: unknown): ContextCompression | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n return {\n active: Boolean(payload.active),\n reason: typeof payload.reason === \"string\" ? payload.reason : null,\n input_tokens: numberOrNull(payload.input_tokens),\n max_tokens: numberOrNull(payload.max_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n full_frame_count: numberOrNull(payload.full_frame_count),\n compact_frame_count: numberOrNull(payload.compact_frame_count),\n dropped_frame_count: numberOrNull(payload.dropped_frame_count),\n artifact_ref_count: numberOrNull(payload.artifact_ref_count),\n compression_trigger_budget: numberOrNull(payload.compression_trigger_budget),\n compression_target_budget: numberOrNull(payload.compression_target_budget),\n compression_target_ratio: numberOrNull(payload.compression_target_ratio),\n threshold_used: numberOrNull(payload.threshold_used),\n };\n}\n\nexport function normalizeContextWindow(value: unknown): ContextWindow | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n return {\n source: normalizeSource(payload.source),\n run_id: typeof payload.run_id === \"string\" ? payload.run_id : null,\n stage: normalizeStage(payload.stage),\n confidence: normalizeConfidence(payload.confidence),\n counter: typeof payload.counter === \"string\" ? payload.counter : null,\n model_id: typeof payload.model_id === \"string\" ? payload.model_id : null,\n max_tokens: numberOrNull(payload.max_tokens),\n max_tokens_source: typeof payload.max_tokens_source === \"string\" ? payload.max_tokens_source : null,\n input_tokens: numberOrNull(payload.input_tokens),\n remaining_tokens: numberOrNull(payload.remaining_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n assembly: payload.assembly && typeof payload.assembly === \"object\" && !Array.isArray(payload.assembly)\n ? payload.assembly as Record<string, unknown>\n : null,\n context_compression: normalizeContextCompression(payload.context_compression),\n };\n}\n\nexport function mergeContextWindow(\n current: ContextWindow | null | undefined,\n incoming: ContextWindow | null | undefined,\n): ContextWindow | null {\n const before = current || null;\n const next = incoming || null;\n if (!next) return before;\n if (!before) return next;\n if (hasRenderableWindow(before) && !hasRenderableWindow(next)) return before;\n if (before.run_id && next.run_id && before.run_id !== next.run_id) {\n return stagePriority(next) >= STAGE_PRIORITY.sent_prompt ? next : before;\n }\n const beforeWeight = windowWeight(before);\n const nextWeight = windowWeight(next);\n return nextWeight[0] > beforeWeight[0] || (nextWeight[0] === beforeWeight[0] && nextWeight[1] >= beforeWeight[1])\n ? next\n : before;\n}\n\nexport function mergeContextWindowUpdate(\n current: ContextWindow | null | undefined,\n incoming: unknown,\n): ContextWindow | null {\n return mergeContextWindow(current, normalizeContextWindow(incoming));\n}\n\nexport function compressionFromContextWindow(value: ContextWindow | null | undefined): ContextCompression | null {\n if (!value) return null;\n if (value.context_compression) return value.context_compression;\n const assembly = value.assembly;\n if (!assembly || typeof assembly !== \"object\" || Array.isArray(assembly)) return null;\n const artifactRefs = Array.isArray(assembly.artifact_refs) ? assembly.artifact_refs : [];\n const compactFrameCount = numberOrNull(assembly.compact_frame_count) ?? 0;\n const droppedFrameCount = numberOrNull(assembly.dropped_frame_count) ?? 0;\n const reason = typeof assembly.compaction_reason === \"string\" ? assembly.compaction_reason : \"none\";\n return {\n active: reason !== \"none\" || compactFrameCount > 0 || droppedFrameCount > 0,\n reason,\n input_tokens: value.input_tokens ?? null,\n max_tokens: value.max_tokens ?? null,\n usage_ratio: value.usage_ratio ?? null,\n full_frame_count: numberOrNull(assembly.full_frame_count),\n compact_frame_count: compactFrameCount,\n dropped_frame_count: droppedFrameCount,\n artifact_ref_count: artifactRefs.length,\n compression_trigger_budget: numberOrNull(assembly.compression_trigger_budget),\n compression_target_budget: numberOrNull(assembly.compression_target_budget),\n compression_target_ratio: numberOrNull(assembly.compression_target_ratio),\n threshold_used: numberOrNull(assembly.threshold_used),\n };\n}\n\nexport type ContextWindowTracker = {\n readonly current: ContextWindow | null;\n update(incoming: unknown): ContextWindow | null;\n reset(next?: unknown): ContextWindow | null;\n};\n\nexport function createContextWindowTracker(initial?: unknown): ContextWindowTracker {\n let current = normalizeContextWindow(initial);\n return {\n get current() { return current; },\n update(incoming) {\n current = mergeContextWindowUpdate(current, incoming);\n return current;\n },\n reset(next) {\n current = normalizeContextWindow(next);\n return current;\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/context-window.ts"],"names":[],"mappings":"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","file":"protocol.js","sourcesContent":["export type ContextWindowSource =\n | \"exact\"\n | \"estimated\"\n | \"provider_count_api\"\n | \"provider_usage\"\n | \"provider_cached_estimate\"\n | \"runtime_tokenizer\"\n | \"hf_tokenizer\"\n | \"lab_tokenizer\"\n | \"tiktoken\"\n | \"multimodal_estimate\"\n | \"text_estimate\"\n | \"tokenizer_estimate\"\n | \"heuristic_estimate\"\n | \"unknown\";\n\nexport type ContextWindowStage = \"preflight\" | \"sent_prompt\" | \"final_usage\";\nexport type ContextWindowConfidence = \"exact\" | \"high\" | \"medium\" | \"low\" | \"unknown\";\n\nexport type ContextCompression = {\n active: boolean;\n status?: \"started\" | \"completed\" | \"failed\" | null;\n strategy?: \"artifact_references\" | \"semantic_checkpoint\" | null;\n reason?: string | null;\n input_tokens?: number | null;\n max_tokens?: number | null;\n usage_ratio?: number | null;\n admission_input_tokens?: number | null;\n admission_input_tokens_before?: number | null;\n admission_input_tokens_after?: number | null;\n admission_ratio?: number | null;\n admission_confidence?: ContextWindowConfidence | null;\n applied_margin?: number | null;\n full_frame_count?: number | null;\n compact_frame_count?: number | null;\n dropped_frame_count?: number | null;\n artifact_ref_count?: number | null;\n checkpoint_frame_count?: number | null;\n input_tokens_before?: number | null;\n input_tokens_after?: number | null;\n compression_trigger_budget?: number | null;\n compression_target_budget?: number | null;\n compression_target_ratio?: number | null;\n threshold_used?: number | null;\n};\n\nexport type ContextWindow = {\n source: ContextWindowSource;\n run_id?: string | null;\n stage?: ContextWindowStage | null;\n confidence?: ContextWindowConfidence | null;\n counter?: string | null;\n model_id?: string | null;\n max_tokens?: number | null;\n max_tokens_source?: string | null;\n input_tokens?: number | null;\n remaining_tokens?: number | null;\n usage_ratio?: number | null;\n admission_input_tokens?: number | null;\n admission_ratio?: number | null;\n admission_confidence?: ContextWindowConfidence | null;\n applied_margin?: number | null;\n assembly?: Record<string, unknown> | null;\n context_compression?: ContextCompression | null;\n};\n\nconst SOURCE_PRIORITY: Record<ContextWindowSource, number> = {\n unknown: 0,\n heuristic_estimate: 1,\n tokenizer_estimate: 1,\n text_estimate: 1,\n estimated: 1,\n provider_cached_estimate: 1,\n multimodal_estimate: 2,\n hf_tokenizer: 3,\n lab_tokenizer: 3,\n tiktoken: 3,\n runtime_tokenizer: 3,\n provider_count_api: 4,\n provider_usage: 5,\n exact: 5,\n};\n\nconst STAGE_PRIORITY: Record<ContextWindowStage, number> = {\n preflight: 0,\n sent_prompt: 1,\n final_usage: 2,\n};\n\nfunction numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeSource(value: unknown): ContextWindowSource {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw in SOURCE_PRIORITY ? raw as ContextWindowSource : raw ? \"estimated\" : \"unknown\";\n}\n\nfunction normalizeStage(value: unknown): ContextWindowStage {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"preflight\" || raw === \"sent_prompt\" || raw === \"final_usage\" ? raw : \"sent_prompt\";\n}\n\nfunction normalizeConfidence(value: unknown): ContextWindowConfidence | null {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"exact\" || raw === \"high\" || raw === \"medium\" || raw === \"low\" || raw === \"unknown\" ? raw : null;\n}\n\nfunction stagePriority(value: ContextWindow | null | undefined): number {\n return STAGE_PRIORITY[value?.stage || \"sent_prompt\"] ?? STAGE_PRIORITY.sent_prompt;\n}\n\nfunction hasRenderableWindow(value: ContextWindow | null | undefined): boolean {\n const maxTokens = numberOrNull(value?.max_tokens);\n return maxTokens !== null && maxTokens > 0;\n}\n\nfunction windowWeight(value: ContextWindow | null | undefined): [number, number] {\n return value ? [stagePriority(value), SOURCE_PRIORITY[value.source] || 0] : [0, 0];\n}\n\nexport function normalizeContextCompression(value: unknown): ContextCompression | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n const rawStatus = String(payload.status || \"\").trim();\n const rawStrategy = String(payload.strategy || \"\").trim();\n return {\n active: Boolean(payload.active),\n status: rawStatus === \"started\" || rawStatus === \"completed\" || rawStatus === \"failed\" ? rawStatus : null,\n strategy:\n rawStrategy === \"artifact_references\" || rawStrategy === \"semantic_checkpoint\"\n ? rawStrategy\n : null,\n reason: typeof payload.reason === \"string\" ? payload.reason : null,\n input_tokens: numberOrNull(payload.input_tokens),\n max_tokens: numberOrNull(payload.max_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n admission_input_tokens: numberOrNull(payload.admission_input_tokens),\n admission_input_tokens_before: numberOrNull(payload.admission_input_tokens_before),\n admission_input_tokens_after: numberOrNull(payload.admission_input_tokens_after),\n admission_ratio: numberOrNull(payload.admission_ratio),\n admission_confidence: normalizeConfidence(payload.admission_confidence),\n applied_margin: numberOrNull(payload.applied_margin),\n full_frame_count: numberOrNull(payload.full_frame_count),\n compact_frame_count: numberOrNull(payload.compact_frame_count),\n dropped_frame_count: numberOrNull(payload.dropped_frame_count),\n artifact_ref_count: numberOrNull(payload.artifact_ref_count),\n checkpoint_frame_count: numberOrNull(payload.checkpoint_frame_count),\n input_tokens_before: numberOrNull(payload.input_tokens_before),\n input_tokens_after: numberOrNull(payload.input_tokens_after),\n compression_trigger_budget: numberOrNull(payload.compression_trigger_budget),\n compression_target_budget: numberOrNull(payload.compression_target_budget),\n compression_target_ratio: numberOrNull(payload.compression_target_ratio),\n threshold_used: numberOrNull(payload.threshold_used),\n };\n}\n\nexport function normalizeContextWindow(value: unknown): ContextWindow | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n return {\n source: normalizeSource(payload.source),\n run_id: typeof payload.run_id === \"string\" ? payload.run_id : null,\n stage: normalizeStage(payload.stage),\n confidence: normalizeConfidence(payload.confidence),\n counter: typeof payload.counter === \"string\" ? payload.counter : null,\n model_id: typeof payload.model_id === \"string\" ? payload.model_id : null,\n max_tokens: numberOrNull(payload.max_tokens),\n max_tokens_source: typeof payload.max_tokens_source === \"string\" ? payload.max_tokens_source : null,\n input_tokens: numberOrNull(payload.input_tokens),\n remaining_tokens: numberOrNull(payload.remaining_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n admission_input_tokens: numberOrNull(payload.admission_input_tokens),\n admission_ratio: numberOrNull(payload.admission_ratio),\n admission_confidence: normalizeConfidence(payload.admission_confidence),\n applied_margin: numberOrNull(payload.applied_margin),\n assembly: payload.assembly && typeof payload.assembly === \"object\" && !Array.isArray(payload.assembly)\n ? payload.assembly as Record<string, unknown>\n : null,\n context_compression: normalizeContextCompression(payload.context_compression),\n };\n}\n\nexport function mergeContextWindow(\n current: ContextWindow | null | undefined,\n incoming: ContextWindow | null | undefined,\n): ContextWindow | null {\n const before = current || null;\n const next = incoming || null;\n if (!next) return before;\n if (!before) return next;\n if (hasRenderableWindow(before) && !hasRenderableWindow(next)) return before;\n if (before.run_id && next.run_id && before.run_id !== next.run_id) {\n return stagePriority(next) >= STAGE_PRIORITY.sent_prompt ? next : before;\n }\n const beforeWeight = windowWeight(before);\n const nextWeight = windowWeight(next);\n return nextWeight[0] > beforeWeight[0] || (nextWeight[0] === beforeWeight[0] && nextWeight[1] >= beforeWeight[1])\n ? next\n : before;\n}\n\nexport function mergeContextWindowUpdate(\n current: ContextWindow | null | undefined,\n incoming: unknown,\n): ContextWindow | null {\n return mergeContextWindow(current, normalizeContextWindow(incoming));\n}\n\nexport function compressionFromContextWindow(value: ContextWindow | null | undefined): ContextCompression | null {\n if (!value) return null;\n if (value.context_compression) return value.context_compression;\n const assembly = value.assembly;\n if (!assembly || typeof assembly !== \"object\" || Array.isArray(assembly)) return null;\n const artifactRefs = Array.isArray(assembly.artifact_refs) ? assembly.artifact_refs : [];\n const compactFrameCount = numberOrNull(assembly.compact_frame_count) ?? 0;\n const droppedFrameCount = numberOrNull(assembly.dropped_frame_count) ?? 0;\n const reason = typeof assembly.compaction_reason === \"string\" ? assembly.compaction_reason : \"none\";\n return {\n active: reason !== \"none\" || compactFrameCount > 0 || droppedFrameCount > 0,\n status:\n assembly.status === \"started\" || assembly.status === \"completed\" || assembly.status === \"failed\"\n ? assembly.status\n : null,\n strategy:\n assembly.strategy === \"artifact_references\" || assembly.strategy === \"semantic_checkpoint\"\n ? assembly.strategy\n : null,\n reason,\n input_tokens: value.input_tokens ?? null,\n max_tokens: value.max_tokens ?? null,\n usage_ratio: value.usage_ratio ?? null,\n admission_input_tokens: value.admission_input_tokens ?? null,\n admission_input_tokens_before: numberOrNull(assembly.admission_input_tokens_before),\n admission_input_tokens_after: numberOrNull(assembly.admission_input_tokens_after),\n admission_ratio: value.admission_ratio ?? null,\n admission_confidence: value.admission_confidence ?? null,\n applied_margin: value.applied_margin ?? null,\n full_frame_count: numberOrNull(assembly.full_frame_count),\n compact_frame_count: compactFrameCount,\n dropped_frame_count: droppedFrameCount,\n artifact_ref_count: artifactRefs.length,\n checkpoint_frame_count: numberOrNull(assembly.checkpoint_frame_count),\n input_tokens_before: numberOrNull(assembly.input_tokens_before),\n input_tokens_after: numberOrNull(assembly.input_tokens_after),\n compression_trigger_budget: numberOrNull(assembly.compression_trigger_budget),\n compression_target_budget: numberOrNull(assembly.compression_target_budget),\n compression_target_ratio: numberOrNull(assembly.compression_target_ratio),\n threshold_used: numberOrNull(assembly.threshold_used),\n };\n}\n\nexport type ContextWindowTracker = {\n readonly current: ContextWindow | null;\n update(incoming: unknown): ContextWindow | null;\n reset(next?: unknown): ContextWindow | null;\n};\n\nexport function createContextWindowTracker(initial?: unknown): ContextWindowTracker {\n let current = normalizeContextWindow(initial);\n return {\n get current() { return current; },\n update(incoming) {\n current = mergeContextWindowUpdate(current, incoming);\n return current;\n },\n reset(next) {\n current = normalizeContextWindow(next);\n return current;\n },\n };\n}\n"]}
@@ -11,7 +11,16 @@ export type Attachment = {
11
11
  filename: string;
12
12
  mime_type: string;
13
13
  byte_size: number;
14
- status: string;
14
+ processing_status: "uploaded" | "processed" | "failed";
15
+ content_status: "available" | "expired";
16
+ retention: {
17
+ mode: "duration";
18
+ seconds: 3600 | 18000 | 86400;
19
+ } | {
20
+ mode: "thread_lifetime";
21
+ };
22
+ bound_at: string | null;
23
+ expires_at: string | null;
15
24
  processing_error: string | null;
16
25
  metadata: Record<string, unknown>;
17
26
  created_at: string;
@@ -20,12 +29,34 @@ export type Attachment = {
20
29
  export type AttachmentUploadResult = {
21
30
  items: Attachment[];
22
31
  };
32
+ export type AttachmentContentAccess = {
33
+ url: string;
34
+ disposition: "inline" | "attachment";
35
+ valid_until: string;
36
+ filename: string;
37
+ mime_type: string;
38
+ byte_size: number;
39
+ };
23
40
  export type ActiveThreadRun = {
24
41
  run_id: string;
25
42
  status: string;
43
+ is_cancellable: boolean;
26
44
  started_at: string | null;
27
45
  created_at: string;
28
46
  };
47
+ export type FeedbackRating = "like" | "dislike";
48
+ export type FeedbackReason = "incorrect" | "irrelevant" | "incomplete" | "unsafe" | "citation_issue" | "other";
49
+ export type ResponseFeedback = {
50
+ rating: FeedbackRating;
51
+ reason: FeedbackReason | null;
52
+ comment: string | null;
53
+ created_at: string;
54
+ updated_at: string;
55
+ };
56
+ export type ResponseFeedbackResult = {
57
+ run_id: string;
58
+ feedback: ResponseFeedback | null;
59
+ };
29
60
  export type ThreadSummary = {
30
61
  id: string;
31
62
  agent_id: string | null;
@@ -54,6 +85,8 @@ export type ThreadTurn = {
54
85
  attachments: Attachment[];
55
86
  created_at: string;
56
87
  completed_at: string | null;
88
+ feedback: ResponseFeedback | null;
89
+ context_window: ContextWindow | null;
57
90
  run_events?: RuntimeEvent[];
58
91
  };
59
92
  export type Turn = ThreadTurn;
@@ -77,8 +110,10 @@ export type RunContext = {
77
110
  };
78
111
  export type RunCancelResult = {
79
112
  run_id: string;
80
- status: string;
113
+ status: "cancelling" | "cancelled" | "completed" | "failed";
81
114
  thread_id?: string | null;
115
+ cancellation_requested_at?: string;
116
+ cancellation_deadline_at?: string;
82
117
  };
83
118
  export type RunResumeResult = {
84
119
  run_id: string;
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { RuntimeEvent, ThreadSummaryEvent } from "./generated/protocol.js";
2
+ import type { ContextWindow } from "./context-window.js";
2
3
  export type MaybePromise<T> = T | Promise<T>;
3
4
  export interface AbortSignalLike {
4
5
  readonly aborted: boolean;
@@ -41,7 +42,7 @@ export interface FetchRequestLike {
41
42
  signal?: AbortSignalLike | undefined;
42
43
  redirect?: "error";
43
44
  cache?: "no-store";
44
- credentials?: "omit";
45
+ credentials?: "omit" | "same-origin";
45
46
  }
46
47
  export type FetchLike = (url: string, init?: FetchRequestLike) => Promise<FetchResponseLike>;
47
48
  export interface TextDecoderLike {
@@ -185,12 +186,59 @@ export interface Agents24ClientOptions {
185
186
  transport?: TransportSelection;
186
187
  maxReconnectAttempts?: number;
187
188
  }
189
+ export interface ClientModelSelectionFeature {
190
+ selectable: boolean;
191
+ node_id: string | null;
192
+ node_type: "agent" | "classify" | "evaluate" | null;
193
+ label: string | null;
194
+ default_id: string | null;
195
+ options: readonly {
196
+ id: string;
197
+ label: string;
198
+ }[];
199
+ }
200
+ export interface ClientInputModalityFeature {
201
+ enabled: boolean;
202
+ required: boolean;
203
+ }
204
+ export interface ClientAttachmentInputModalityFeature extends ClientInputModalityFeature {
205
+ allowed_mime_types: readonly string[];
206
+ }
207
+ export interface ClientInputFeature {
208
+ version: "agents24.runtime-inputs.v2";
209
+ modalities: {
210
+ text: ClientInputModalityFeature;
211
+ files: ClientAttachmentInputModalityFeature;
212
+ images: ClientAttachmentInputModalityFeature;
213
+ audio: ClientAttachmentInputModalityFeature & {
214
+ recording_enabled: boolean;
215
+ };
216
+ };
217
+ limits: {
218
+ max_attachments_per_turn: number;
219
+ max_file_bytes: number;
220
+ max_total_bytes: number;
221
+ };
222
+ retention: {
223
+ mode: "duration";
224
+ seconds: 3600 | 18000 | 86400;
225
+ } | {
226
+ mode: "thread_lifetime";
227
+ };
228
+ }
188
229
  export interface ClientBootstrap {
189
230
  version: string;
190
231
  deployment: {
191
232
  id: string;
192
233
  name: string;
193
- agent_version_id: string;
234
+ version_policy: {
235
+ mode: "latest_published";
236
+ } | {
237
+ mode: "pinned";
238
+ version_id: string;
239
+ };
240
+ resolved_agent_version_id: string;
241
+ resolved_agent_version_number: number;
194
242
  policy_epoch: number;
195
243
  };
196
244
  authentication: {
@@ -199,7 +247,10 @@ export interface ClientBootstrap {
199
247
  jwks_path: string;
200
248
  };
201
249
  capabilities: readonly string[];
202
- features: Record<string, unknown>;
250
+ features: Record<string, unknown> & {
251
+ models?: ClientModelSelectionFeature;
252
+ inputs: ClientInputFeature;
253
+ };
203
254
  native_profiles: readonly Record<string, unknown>[];
204
255
  }
205
256
  export interface ClientHints {
@@ -235,11 +286,38 @@ export interface RunAttachInput {
235
286
  headers?: Readonly<Record<string, string>>;
236
287
  signal?: AbortSignalLike | undefined;
237
288
  }
289
+ export type FeedbackRating = "like" | "dislike";
290
+ export type FeedbackReason = "incorrect" | "irrelevant" | "incomplete" | "unsafe" | "citation_issue" | "other";
291
+ export interface ResponseFeedback {
292
+ rating: FeedbackRating;
293
+ reason: FeedbackReason | null;
294
+ comment: string | null;
295
+ created_at: string;
296
+ updated_at: string;
297
+ }
298
+ export interface ResponseFeedbackResult {
299
+ run_id: string;
300
+ feedback: ResponseFeedback | null;
301
+ }
302
+ export interface SetFeedbackInput {
303
+ runId: string;
304
+ rating: FeedbackRating | null;
305
+ reason?: FeedbackReason | null;
306
+ comment?: string | null;
307
+ signal?: AbortSignalLike;
308
+ }
238
309
  export interface ThreadListInput {
239
310
  skip?: number;
240
311
  limit?: number;
241
312
  signal?: AbortSignalLike | undefined;
242
313
  }
314
+ export interface ActiveThreadRun {
315
+ run_id: string;
316
+ status: "queued" | "running" | "paused" | "cancelling";
317
+ is_cancellable: boolean;
318
+ started_at: string | null;
319
+ created_at: string;
320
+ }
243
321
  export interface ThreadSummary {
244
322
  id: string;
245
323
  title?: string | null;
@@ -248,6 +326,7 @@ export interface ThreadSummary {
248
326
  last_activity_at?: string | null;
249
327
  last_run_id?: string | null;
250
328
  last_run_status?: string | null;
329
+ active_run?: ActiveThreadRun | null;
251
330
  [key: string]: unknown;
252
331
  }
253
332
  export interface ThreadListResult {
@@ -255,7 +334,9 @@ export interface ThreadListResult {
255
334
  total?: number;
256
335
  }
257
336
  export interface ThreadDetail extends ThreadSummary {
258
- turns?: readonly Record<string, unknown>[];
337
+ turns?: readonly (Record<string, unknown> & {
338
+ context_window?: ContextWindow | null;
339
+ })[];
259
340
  paging?: {
260
341
  has_more?: boolean;
261
342
  next_before_turn_index?: number | null;
@@ -267,10 +348,29 @@ export interface AttachmentResult {
267
348
  filename: string;
268
349
  mime_type: string;
269
350
  byte_size: number;
270
- status: string;
351
+ processing_status: "uploaded" | "processed" | "failed";
352
+ content_status: "available" | "expired";
353
+ retention: {
354
+ mode: "duration";
355
+ seconds: 3600 | 18000 | 86400;
356
+ } | {
357
+ mode: "thread_lifetime";
358
+ };
359
+ bound_at: string | null;
360
+ expires_at: string | null;
271
361
  [key: string]: unknown;
272
362
  }
273
- export type HitlAction = "approve" | "reject" | "connect" | "skip";
363
+ export type HitlAction = "approve" | "reject" | "connect" | "skip" | "respond";
364
+ export interface HitlAnswer {
365
+ question_id: string;
366
+ selected_option_ids: string[];
367
+ custom_text?: string;
368
+ }
369
+ export type HitlResponse = {
370
+ action: HitlAction;
371
+ comment?: string;
372
+ answers?: HitlAnswer[];
373
+ };
274
374
  export interface HitlResumeResult {
275
375
  run_id: string;
276
376
  thread_id?: string | null;
@@ -288,10 +388,42 @@ export interface McpCallbackResult {
288
388
  connection_id: string;
289
389
  server_id?: string;
290
390
  }
391
+ export interface EffectiveResourcePolicy {
392
+ customer_principal_ref: string | null;
393
+ model_selection: {
394
+ selectable: boolean;
395
+ node_id: string | null;
396
+ default_id: string | null;
397
+ options: readonly {
398
+ id: string;
399
+ label: string;
400
+ }[];
401
+ };
402
+ quota_constraints: readonly {
403
+ model: {
404
+ id: string;
405
+ name: string;
406
+ };
407
+ boundary_kind: "agent" | "client_deployment" | "organization_user" | "customer_principal";
408
+ boundary_ref: string;
409
+ used: number;
410
+ reserved: number;
411
+ limit: number;
412
+ remaining: number;
413
+ period_start: string;
414
+ reset_at: string;
415
+ blocked: boolean;
416
+ }[];
417
+ }
291
418
  export interface AgentClient {
292
419
  bootstrap(input?: {
293
420
  signal?: AbortSignalLike;
294
421
  }): Promise<ClientBootstrap>;
422
+ readonly resourcePolicies: {
423
+ getEffective(input?: {
424
+ signal?: AbortSignalLike;
425
+ }): Promise<EffectiveResourcePolicy>;
426
+ };
295
427
  readonly chat: {
296
428
  stream(input: ChatStreamInput, onEvent: RuntimeEventHandler): Promise<StreamResult>;
297
429
  };
@@ -302,6 +434,7 @@ export interface AgentClient {
302
434
  idempotencyKey: string;
303
435
  signal?: AbortSignalLike;
304
436
  }): Promise<Record<string, unknown>>;
437
+ setFeedback(input: SetFeedbackInput): Promise<ResponseFeedbackResult>;
305
438
  };
306
439
  readonly threads: {
307
440
  list(input?: ThreadListInput): Promise<ThreadListResult>;
@@ -309,7 +442,6 @@ export interface AgentClient {
309
442
  threadId: string;
310
443
  limit?: number;
311
444
  beforeTurnIndex?: number;
312
- includeRunEvents?: boolean;
313
445
  signal?: AbortSignalLike;
314
446
  }): Promise<ThreadDetail>;
315
447
  events(input: {
@@ -323,12 +455,17 @@ export interface AgentClient {
323
455
  }): Promise<Record<string, unknown>>;
324
456
  };
325
457
  readonly attachments: {
326
- upload(input: {
327
- upload: PortableUpload;
458
+ uploadBatch(input: {
459
+ uploads: readonly PortableUpload[];
328
460
  threadId?: string;
329
461
  idempotencyKey: string;
330
462
  signal?: AbortSignalLike;
331
- }): Promise<AttachmentResult>;
463
+ }): Promise<readonly AttachmentResult[]>;
464
+ createContentAccess(input: {
465
+ attachmentId: string;
466
+ disposition: "inline" | "attachment";
467
+ signal?: AbortSignalLike;
468
+ }): Promise<import("./runtime-types.js").AttachmentContentAccess>;
332
469
  };
333
470
  readonly hitl: {
334
471
  resume(input: {
@@ -336,6 +473,7 @@ export interface AgentClient {
336
473
  interruptId: string;
337
474
  action: HitlAction;
338
475
  comment?: string;
476
+ answers?: HitlAnswer[];
339
477
  idempotencyKey: string;
340
478
  signal?: AbortSignalLike;
341
479
  }): Promise<HitlResumeResult>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents24/client",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Framework-neutral end-user runtime client for deployment-scoped Agents24 sessions.",
5
5
  "keywords": [
6
6
  "agents24",
@@ -29,6 +29,10 @@
29
29
  "types": "./dist/protocol.d.ts",
30
30
  "default": "./dist/protocol.js"
31
31
  },
32
+ "./bff": {
33
+ "types": "./dist/bff.d.ts",
34
+ "default": "./dist/bff.js"
35
+ },
32
36
  "./browser": {
33
37
  "types": "./dist/adapters/browser.d.ts",
34
38
  "default": "./dist/adapters/browser.js"