@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/README.md +38 -6
- package/compatibility.json +10 -10
- package/dist/adapters/browser.d.ts +83 -1
- package/dist/adapters/browser.js +303 -3
- package/dist/adapters/browser.js.map +1 -1
- package/dist/adapters/cloudflare.js +3 -2
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/node.js +3 -2
- package/dist/adapters/node.js.map +1 -1
- package/dist/adapters/worker.js +3 -2
- package/dist/adapters/worker.js.map +1 -1
- package/dist/bff.d.ts +10 -0
- package/dist/bff.js +282 -0
- package/dist/bff.js.map +1 -0
- package/dist/chunk-FNR3KPB6.js +569 -0
- package/dist/chunk-FNR3KPB6.js.map +1 -0
- package/dist/{chunk-45ITVMX3.js → chunk-GXISGBVW.js} +126 -480
- package/dist/chunk-GXISGBVW.js.map +1 -0
- package/dist/{chunk-VVLMMNXI.js → chunk-IOVCURGW.js} +32 -14
- package/dist/chunk-IOVCURGW.js.map +1 -0
- package/dist/chunk-SPWEZFHZ.js +430 -0
- package/dist/chunk-SPWEZFHZ.js.map +1 -0
- package/dist/context-window.d.ts +16 -1
- package/dist/errors.d.ts +27 -2
- package/dist/generated/protocol.d.ts +50 -9
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -555
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +2 -2
- package/dist/protocol.js +31 -1
- package/dist/protocol.js.map +1 -1
- package/dist/runtime-types.d.ts +37 -2
- package/dist/types.d.ts +148 -10
- package/package.json +5 -1
- package/dist/chunk-45ITVMX3.js.map +0 -1
- package/dist/chunk-VVLMMNXI.js.map +0 -1
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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -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-
|
|
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),
|
package/dist/protocol.js.map
CHANGED
|
@@ -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"]}
|
package/dist/runtime-types.d.ts
CHANGED
|
@@ -11,7 +11,16 @@ export type Attachment = {
|
|
|
11
11
|
filename: string;
|
|
12
12
|
mime_type: string;
|
|
13
13
|
byte_size: number;
|
|
14
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
327
|
-
|
|
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
|
|
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"
|