@langchain/langgraph-sdk 1.12.1 → 1.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/client/assistants/index.cjs +10 -9
  2. package/dist/client/assistants/index.cjs.map +1 -1
  3. package/dist/client/assistants/index.d.cts.map +1 -1
  4. package/dist/client/assistants/index.d.ts.map +1 -1
  5. package/dist/client/assistants/index.js +11 -10
  6. package/dist/client/assistants/index.js.map +1 -1
  7. package/dist/client/base.cjs +10 -0
  8. package/dist/client/base.cjs.map +1 -1
  9. package/dist/client/base.d.cts.map +1 -1
  10. package/dist/client/base.d.ts.map +1 -1
  11. package/dist/client/base.js +10 -1
  12. package/dist/client/base.js.map +1 -1
  13. package/dist/client/crons/index.cjs +3 -3
  14. package/dist/client/crons/index.cjs.map +1 -1
  15. package/dist/client/crons/index.js +4 -4
  16. package/dist/client/crons/index.js.map +1 -1
  17. package/dist/client/runs/index.cjs +9 -9
  18. package/dist/client/runs/index.cjs.map +1 -1
  19. package/dist/client/runs/index.d.cts.map +1 -1
  20. package/dist/client/runs/index.d.ts.map +1 -1
  21. package/dist/client/runs/index.js +10 -10
  22. package/dist/client/runs/index.js.map +1 -1
  23. package/dist/client/stream/transport/http.cjs +4 -3
  24. package/dist/client/stream/transport/http.cjs.map +1 -1
  25. package/dist/client/stream/transport/http.d.cts.map +1 -1
  26. package/dist/client/stream/transport/http.d.ts.map +1 -1
  27. package/dist/client/stream/transport/http.js +4 -3
  28. package/dist/client/stream/transport/http.js.map +1 -1
  29. package/dist/client/stream/transport/utils.cjs +2 -2
  30. package/dist/client/stream/transport/utils.cjs.map +1 -1
  31. package/dist/client/stream/transport/utils.js +2 -2
  32. package/dist/client/stream/transport/utils.js.map +1 -1
  33. package/dist/client/stream/transport/websocket.cjs +2 -1
  34. package/dist/client/stream/transport/websocket.cjs.map +1 -1
  35. package/dist/client/stream/transport/websocket.d.cts.map +1 -1
  36. package/dist/client/stream/transport/websocket.d.ts.map +1 -1
  37. package/dist/client/stream/transport/websocket.js +2 -1
  38. package/dist/client/stream/transport/websocket.js.map +1 -1
  39. package/dist/client/threads/index.cjs +11 -11
  40. package/dist/client/threads/index.cjs.map +1 -1
  41. package/dist/client/threads/index.d.cts.map +1 -1
  42. package/dist/client/threads/index.d.ts.map +1 -1
  43. package/dist/client/threads/index.js +12 -12
  44. package/dist/client/threads/index.js.map +1 -1
  45. package/dist/client/ui-internal/index.cjs +1 -1
  46. package/dist/client/ui-internal/index.cjs.map +1 -1
  47. package/dist/client/ui-internal/index.js +2 -2
  48. package/dist/client/ui-internal/index.js.map +1 -1
  49. package/dist/index.d.cts +2 -2
  50. package/dist/index.d.ts +2 -2
  51. package/dist/types.d.cts +10 -1
  52. package/dist/types.d.cts.map +1 -1
  53. package/dist/types.d.ts +10 -1
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +1 -1
@@ -13,7 +13,7 @@ var ThreadsClient = class extends require_base.BaseClient {
13
13
  * @returns The thread.
14
14
  */
15
15
  async get(threadId, options) {
16
- return this.fetch(`/threads/${threadId}`, {
16
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}`, {
17
17
  params: { include: options?.include ?? void 0 },
18
18
  signal: options?.signal
19
19
  });
@@ -54,7 +54,7 @@ var ThreadsClient = class extends require_base.BaseClient {
54
54
  * @returns Newly copied thread
55
55
  */
56
56
  async copy(threadId, options) {
57
- return this.fetch(`/threads/${threadId}/copy`, {
57
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/copy`, {
58
58
  method: "POST",
59
59
  signal: options?.signal
60
60
  });
@@ -64,7 +64,7 @@ var ThreadsClient = class extends require_base.BaseClient {
64
64
  ttl: payload.ttl,
65
65
  strategy: "delete"
66
66
  } : payload?.ttl;
67
- return this.fetch(`/threads/${threadId}`, {
67
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}`, {
68
68
  method: "PATCH",
69
69
  headers: payload?.returnMinimal ? { Prefer: "return=minimal" } : void 0,
70
70
  json: {
@@ -80,7 +80,7 @@ var ThreadsClient = class extends require_base.BaseClient {
80
80
  * @param threadId ID of the thread.
81
81
  */
82
82
  async delete(threadId, options) {
83
- return this.fetch(`/threads/${threadId}`, {
83
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}`, {
84
84
  method: "DELETE",
85
85
  signal: options?.signal
86
86
  });
@@ -157,7 +157,7 @@ var ThreadsClient = class extends require_base.BaseClient {
157
157
  */
158
158
  async getState(threadId, checkpoint, options) {
159
159
  if (checkpoint != null) {
160
- if (typeof checkpoint !== "string") return this.fetch(`/threads/${threadId}/state/checkpoint`, {
160
+ if (typeof checkpoint !== "string") return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/state/checkpoint`, {
161
161
  method: "POST",
162
162
  json: {
163
163
  checkpoint,
@@ -165,12 +165,12 @@ var ThreadsClient = class extends require_base.BaseClient {
165
165
  },
166
166
  signal: options?.signal
167
167
  });
168
- return this.fetch(`/threads/${threadId}/state/${checkpoint}`, {
168
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/state/${require_base.encodePathSegment(checkpoint)}`, {
169
169
  params: { subgraphs: options?.subgraphs },
170
170
  signal: options?.signal
171
171
  });
172
172
  }
173
- return this.fetch(`/threads/${threadId}/state`, {
173
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/state`, {
174
174
  params: { subgraphs: options?.subgraphs },
175
175
  signal: options?.signal,
176
176
  dedupe: true
@@ -183,7 +183,7 @@ var ThreadsClient = class extends require_base.BaseClient {
183
183
  * @returns
184
184
  */
185
185
  async updateState(threadId, options) {
186
- return this.fetch(`/threads/${threadId}/state`, {
186
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/state`, {
187
187
  method: "POST",
188
188
  json: {
189
189
  values: options.values,
@@ -206,7 +206,7 @@ var ThreadsClient = class extends require_base.BaseClient {
206
206
  if (typeof threadIdOrConfig.configurable?.thread_id !== "string") throw new Error("Thread ID is required when updating state with a config.");
207
207
  threadId = threadIdOrConfig.configurable.thread_id;
208
208
  } else threadId = threadIdOrConfig;
209
- return this.fetch(`/threads/${threadId}/state`, {
209
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/state`, {
210
210
  method: "PATCH",
211
211
  json: { metadata },
212
212
  signal: options?.signal
@@ -220,7 +220,7 @@ var ThreadsClient = class extends require_base.BaseClient {
220
220
  * @returns List of thread states.
221
221
  */
222
222
  async getHistory(threadId, options) {
223
- return this.fetch(`/threads/${threadId}/history`, {
223
+ return this.fetch(`/threads/${require_base.encodePathSegment(threadId)}/history`, {
224
224
  method: "POST",
225
225
  json: {
226
226
  limit: options?.limit ?? 10,
@@ -234,7 +234,7 @@ var ThreadsClient = class extends require_base.BaseClient {
234
234
  }
235
235
  async *joinStream(threadId, options) {
236
236
  yield* this.streamWithRetry({
237
- endpoint: `/threads/${threadId}/stream`,
237
+ endpoint: `/threads/${require_base.encodePathSegment(threadId)}/stream`,
238
238
  method: "GET",
239
239
  signal: options?.signal,
240
240
  headers: options?.lastEventId ? { "Last-Event-ID": options.lastEventId } : void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BaseClient","ProtocolWebSocketTransportAdapter","ProtocolSseTransportAdapter","ThreadStream"],"sources":["../../../src/client/threads/index.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"@langchain/core/utils/uuid\";\n\nimport {\n Checkpoint,\n Config,\n DefaultValues,\n Metadata,\n SortOrder,\n Thread,\n ThreadSelectField,\n ThreadSortBy,\n ThreadState,\n ThreadStatus,\n ThreadValuesFilter,\n} from \"../../schema.js\";\nimport type { Command, OnConflictBehavior, StreamEvent } from \"../../types.js\";\nimport type { ThreadStreamMode } from \"../../types.stream.js\";\nimport { BaseClient } from \"../base.js\";\nimport { ThreadStream } from \"../stream/index.js\";\nimport type {\n ThreadStreamOptions,\n ThreadStreamTransportKind,\n} from \"../stream/types.js\";\nimport { DEFAULT_MAX_RECONNECT_ATTEMPTS } from \"../../utils/reconnect.js\";\nimport { ProtocolSseTransportAdapter } from \"../stream/transport/http.js\";\nimport { ProtocolWebSocketTransportAdapter } from \"../stream/transport/websocket.js\";\nimport type { TransportAdapter } from \"../stream/transport.js\";\n\nexport class ThreadsClient<\n TStateType = DefaultValues,\n TUpdateType = TStateType,\n> extends BaseClient {\n /**\n * Get a thread by ID.\n *\n * @param threadId ID of the thread.\n * @returns The thread.\n */\n async get<ValuesType = TStateType>(\n threadId: string,\n options?: { signal?: AbortSignal; include?: string[] }\n ): Promise<Thread<ValuesType>> {\n return this.fetch<Thread<ValuesType>>(`/threads/${threadId}`, {\n params: {\n include: options?.include ?? undefined,\n },\n signal: options?.signal,\n });\n }\n\n /**\n * Create a new thread.\n *\n * @param payload Payload for creating a thread.\n * @returns The created thread.\n */\n async create(payload?: {\n metadata?: Metadata;\n threadId?: string;\n ifExists?: OnConflictBehavior;\n graphId?: string;\n supersteps?: Array<{\n updates: Array<{ values: unknown; command?: Command; asNode: string }>;\n }>;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n signal?: AbortSignal;\n }): Promise<Thread<TStateType>> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread<TStateType>>(`/threads`, {\n method: \"POST\",\n json: {\n metadata: {\n ...payload?.metadata,\n graph_id: payload?.graphId,\n },\n thread_id: payload?.threadId,\n if_exists: payload?.ifExists,\n supersteps: payload?.supersteps?.map((s) => ({\n updates: s.updates.map((u) => ({\n values: u.values,\n command: u.command,\n as_node: u.asNode,\n })),\n })),\n ttl: ttlPayload,\n },\n signal: payload?.signal,\n });\n }\n\n /**\n * Copy an existing thread\n * @param threadId ID of the thread to be copied\n * @returns Newly copied thread\n */\n async copy(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<Thread<TStateType>> {\n return this.fetch<Thread<TStateType>>(`/threads/${threadId}/copy`, {\n method: \"POST\",\n signal: options?.signal,\n });\n }\n\n /**\n * Update a thread.\n *\n * @param threadId ID of the thread.\n * @param payload Payload for updating the thread.\n * @returns The updated thread.\n */\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: false;\n signal?: AbortSignal;\n }\n ): Promise<Thread>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: true;\n signal?: AbortSignal;\n }\n ): Promise<void>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void>;\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread | void>(`/threads/${threadId}`, {\n method: \"PATCH\",\n headers: payload?.returnMinimal\n ? { Prefer: \"return=minimal\" }\n : undefined,\n json: { metadata: payload?.metadata, ttl: ttlPayload },\n signal: payload?.signal,\n });\n }\n\n /**\n * Delete a thread.\n *\n * @param threadId ID of the thread.\n */\n async delete(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n return this.fetch<void>(`/threads/${threadId}`, {\n method: \"DELETE\",\n signal: options?.signal,\n });\n }\n\n /**\n * Prune threads by ID. The 'delete' strategy removes threads entirely.\n * The 'keep_latest' strategy prunes old checkpoints but keeps threads\n * and their latest state.\n *\n * @param threadIds List of thread IDs to prune.\n * @param options Additional options for pruning.\n * @param options.strategy The prune strategy. Defaults to 'delete'.\n * @param options.signal Signal to abort the request.\n * @returns An object containing `pruned_count`.\n */\n async prune(\n threadIds: string[],\n options?: {\n strategy?: \"delete\" | \"keep_latest\";\n signal?: AbortSignal;\n }\n ): Promise<{ pruned_count: number }> {\n return this.fetch<{ pruned_count: number }>(\"/threads/prune\", {\n method: \"POST\",\n json: {\n thread_ids: threadIds,\n strategy: options?.strategy ?? \"delete\",\n },\n signal: options?.signal,\n });\n }\n\n /**\n * List threads\n *\n * @param query Query options\n * @returns List of threads\n */\n async search<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n ids?: string[];\n limit?: number;\n offset?: number;\n status?: ThreadStatus;\n sortBy?: ThreadSortBy;\n sortOrder?: SortOrder;\n select?: ThreadSelectField[];\n values?: ThreadValuesFilter;\n extract?: Record<string, string>;\n signal?: AbortSignal;\n }): Promise<Thread<ValuesType>[]> {\n return this.fetch<Thread<ValuesType>[]>(\"/threads/search\", {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n ids: query?.ids ?? undefined,\n limit: query?.limit ?? 10,\n offset: query?.offset ?? 0,\n status: query?.status,\n sort_by: query?.sortBy,\n sort_order: query?.sortOrder,\n select: query?.select ?? undefined,\n values: query?.values ?? undefined,\n extract: query?.extract ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Count threads matching filters.\n *\n * @param query.metadata Thread metadata to filter on.\n * @param query.values State values to filter on.\n * @param query.status Thread status to filter on.\n * @returns Number of threads matching the criteria.\n */\n async count<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n values?: ValuesType;\n status?: ThreadStatus;\n signal?: AbortSignal;\n }): Promise<number> {\n return this.fetch<number>(`/threads/count`, {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n values: query?.values ?? undefined,\n status: query?.status ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Get state for a thread.\n *\n * @param threadId ID of the thread.\n * @returns Thread state.\n */\n async getState<ValuesType = TStateType>(\n threadId: string,\n checkpoint?: Checkpoint | string,\n options?: { subgraphs?: boolean; signal?: AbortSignal }\n ): Promise<ThreadState<ValuesType>> {\n if (checkpoint != null) {\n if (typeof checkpoint !== \"string\") {\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${threadId}/state/checkpoint`,\n {\n method: \"POST\",\n json: { checkpoint, subgraphs: options?.subgraphs },\n signal: options?.signal,\n }\n );\n }\n\n // deprecated\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${threadId}/state/${checkpoint}`,\n { params: { subgraphs: options?.subgraphs }, signal: options?.signal }\n );\n }\n\n return this.fetch<ThreadState<ValuesType>>(`/threads/${threadId}/state`, {\n params: { subgraphs: options?.subgraphs },\n signal: options?.signal,\n // Coalesce concurrent identical reads (e.g. two controllers\n // hydrating the same thread on reconnect). Skipped automatically\n // when a caller supplies its own `signal`.\n dedupe: true,\n });\n }\n\n /**\n * Add state to a thread.\n *\n * @param threadId The ID of the thread.\n * @returns\n */\n async updateState<ValuesType = TUpdateType>(\n threadId: string,\n options: {\n values: ValuesType;\n checkpoint?: Checkpoint;\n checkpointId?: string;\n asNode?: string;\n signal?: AbortSignal;\n }\n ): Promise<Pick<Config, \"configurable\">> {\n return this.fetch<Pick<Config, \"configurable\">>(\n `/threads/${threadId}/state`,\n {\n method: \"POST\",\n json: {\n values: options.values,\n checkpoint: options.checkpoint,\n checkpoint_id: options.checkpointId,\n as_node: options?.asNode,\n },\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Patch the metadata of a thread.\n *\n * @param threadIdOrConfig Thread ID or config to patch the state of.\n * @param metadata Metadata to patch the state with.\n */\n async patchState(\n threadIdOrConfig: string | Config,\n metadata: Metadata,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n let threadId: string;\n\n if (typeof threadIdOrConfig !== \"string\") {\n if (typeof threadIdOrConfig.configurable?.thread_id !== \"string\") {\n throw new Error(\n \"Thread ID is required when updating state with a config.\"\n );\n }\n threadId = threadIdOrConfig.configurable.thread_id;\n } else {\n threadId = threadIdOrConfig;\n }\n\n return this.fetch<void>(`/threads/${threadId}/state`, {\n method: \"PATCH\",\n json: { metadata },\n signal: options?.signal,\n });\n }\n\n /**\n * Get all past states for a thread.\n *\n * @param threadId ID of the thread.\n * @param options Additional options.\n * @returns List of thread states.\n */\n async getHistory<ValuesType = TStateType>(\n threadId: string,\n options?: {\n limit?: number;\n before?: Config;\n checkpoint?: Partial<Omit<Checkpoint, \"thread_id\">>;\n metadata?: Metadata;\n signal?: AbortSignal;\n }\n ): Promise<ThreadState<ValuesType>[]> {\n return this.fetch<ThreadState<ValuesType>[]>(\n `/threads/${threadId}/history`,\n {\n method: \"POST\",\n json: {\n limit: options?.limit ?? 10,\n before: options?.before,\n metadata: options?.metadata,\n checkpoint: options?.checkpoint,\n },\n signal: options?.signal,\n // `getHistory` is a read despite using POST — coalesce the\n // hydrate-time discovery seed when two controllers reconnect to\n // the same thread concurrently. Skipped when `signal` is set.\n dedupe: true,\n }\n );\n }\n\n async *joinStream(\n threadId: string,\n options?: {\n lastEventId?: string;\n streamMode?: ThreadStreamMode | ThreadStreamMode[];\n signal?: AbortSignal;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): AsyncGenerator<{ id?: string; event: StreamEvent; data: any }> {\n yield* this.streamWithRetry({\n endpoint: `/threads/${threadId}/stream`,\n method: \"GET\",\n signal: options?.signal,\n headers: options?.lastEventId\n ? { \"Last-Event-ID\": options.lastEventId }\n : undefined,\n params: options?.streamMode\n ? { stream_mode: options.streamMode }\n : undefined,\n });\n }\n\n /**\n * Open a protocol stream over the thread-centric v2 protocol.\n *\n * Returns a {@link ThreadStream} with lazy getters\n * (`.messages`, `.values`, `.toolCalls`, `.subgraphs`, `.subagents`,\n * `.output`) and `thread.run.start({ input, ... })` for starting runs.\n * Mirrors the in-process `graph.streamEvents(..., { version: \"v3\" })` API.\n *\n * The thread is bound to `options.assistantId` for its lifetime.\n * The wire transport defaults to SSE; pass `transport: \"websocket\"`\n * in options (or configure `streamProtocol: \"v2-websocket\"` on the\n * client) to use a WebSocket instead.\n *\n * @example New thread (UUID generated client-side)\n * ```ts\n * const thread = client.threads.stream({ assistantId: \"my-agent\" });\n * ```\n *\n * @example Attach to an existing thread\n * ```ts\n * const thread = client.threads.stream(threadId, { assistantId: \"my-agent\" });\n * ```\n *\n * @example WebSocket transport\n * ```ts\n * const thread = client.threads.stream({\n * assistantId: \"my-agent\",\n * transport: \"websocket\",\n * });\n * ```\n */\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadId: string,\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadIdOrOptions: string | ThreadStreamOptions,\n maybeOptions?: ThreadStreamOptions\n ): ThreadStream<TExtensions> {\n const { threadId, options } =\n typeof threadIdOrOptions === \"string\"\n ? {\n threadId: threadIdOrOptions,\n options: maybeOptions as ThreadStreamOptions,\n }\n : // A nullish first arg is the generate-thread-id form, not the\n // options-only overload. Without this branch, a runtime\n // `stream(null, opts)` binds `null` to `options` and the\n // `options.fetch` read below throws. Use the second arg as options.\n // (Cast: the declared type excludes null, but callers can reach\n // here at runtime, e.g. an in-flight reconnect after the id clears.)\n (threadIdOrOptions as ThreadStreamOptions | null | undefined) == null\n ? {\n threadId: uuidv7(),\n options: maybeOptions as ThreadStreamOptions,\n }\n : { threadId: uuidv7(), options: threadIdOrOptions };\n\n // `transport` accepts either a preset string (`\"sse\"` / `\"websocket\"`)\n // or a custom {@link AgentServerAdapter}. A custom adapter replaces\n // the built-in factories entirely — this is the seam that lets users\n // point `useStream` at any agent server (including the thin wrappers\n // produced by `HttpAgentServerAdapter`).\n // When callers supply `fetch`, use it verbatim (tests, auth shims). Otherwise\n // route protocol HTTP and media URL fetches through AsyncCaller like REST.\n const userFetch = options.fetch;\n const protocolFetch =\n userFetch ?? this.asyncCaller.fetch.bind(this.asyncCaller);\n\n let transport: TransportAdapter;\n if (options.transport != null && typeof options.transport !== \"string\") {\n transport = options.transport;\n // Bind (or re-bind) the caller-supplied adapter to this thread so a\n // single instance can follow lazy creation (the first `submit()` on a\n // `threadId: null` controller mints the id here) and thread switches.\n // No-op for adapters that bake `threadId` at construction.\n transport.setThreadId?.(threadId);\n } else {\n const transportKind: ThreadStreamTransportKind =\n options.transport ??\n (this.streamProtocol === \"v2-websocket\" ? \"websocket\" : \"sse\");\n const maxReconnectAttempts =\n options.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n /**\n * Common options for both transports.\n */\n const commonOpts = {\n apiUrl: this.apiUrl,\n threadId,\n defaultHeaders: this.defaultHeaders,\n onRequest: this.onRequest,\n maxReconnectAttempts,\n reconnectDelayMs: options.reconnectDelayMs,\n onReconnect: options.onReconnect,\n onConnected: options.onConnected,\n };\n\n transport =\n transportKind === \"websocket\"\n ? new ProtocolWebSocketTransportAdapter({\n ...commonOpts,\n webSocketFactory: options.webSocketFactory,\n })\n : new ProtocolSseTransportAdapter({\n ...commonOpts,\n idleReconnect: options.streamIdleReconnect,\n fetch: userFetch,\n asyncCaller: userFetch ? undefined : this.asyncCaller,\n });\n }\n\n return new ThreadStream<TExtensions>(transport, {\n ...options,\n fetch: protocolFetch,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["BaseClient","encodePathSegment","ProtocolWebSocketTransportAdapter","ProtocolSseTransportAdapter","ThreadStream"],"sources":["../../../src/client/threads/index.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"@langchain/core/utils/uuid\";\n\nimport {\n Checkpoint,\n Config,\n DefaultValues,\n Metadata,\n SortOrder,\n Thread,\n ThreadSelectField,\n ThreadSortBy,\n ThreadState,\n ThreadStatus,\n ThreadValuesFilter,\n} from \"../../schema.js\";\nimport type { Command, OnConflictBehavior, StreamEvent } from \"../../types.js\";\nimport type { ThreadStreamMode } from \"../../types.stream.js\";\nimport { BaseClient, encodePathSegment } from \"../base.js\";\nimport { ThreadStream } from \"../stream/index.js\";\nimport type {\n ThreadStreamOptions,\n ThreadStreamTransportKind,\n} from \"../stream/types.js\";\nimport { DEFAULT_MAX_RECONNECT_ATTEMPTS } from \"../../utils/reconnect.js\";\nimport { ProtocolSseTransportAdapter } from \"../stream/transport/http.js\";\nimport { ProtocolWebSocketTransportAdapter } from \"../stream/transport/websocket.js\";\nimport type { TransportAdapter } from \"../stream/transport.js\";\n\nexport class ThreadsClient<\n TStateType = DefaultValues,\n TUpdateType = TStateType,\n> extends BaseClient {\n /**\n * Get a thread by ID.\n *\n * @param threadId ID of the thread.\n * @returns The thread.\n */\n async get<ValuesType = TStateType>(\n threadId: string,\n options?: { signal?: AbortSignal; include?: string[] }\n ): Promise<Thread<ValuesType>> {\n return this.fetch<Thread<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}`,\n {\n params: {\n include: options?.include ?? undefined,\n },\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Create a new thread.\n *\n * @param payload Payload for creating a thread.\n * @returns The created thread.\n */\n async create(payload?: {\n metadata?: Metadata;\n threadId?: string;\n ifExists?: OnConflictBehavior;\n graphId?: string;\n supersteps?: Array<{\n updates: Array<{ values: unknown; command?: Command; asNode: string }>;\n }>;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n signal?: AbortSignal;\n }): Promise<Thread<TStateType>> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread<TStateType>>(`/threads`, {\n method: \"POST\",\n json: {\n metadata: {\n ...payload?.metadata,\n graph_id: payload?.graphId,\n },\n thread_id: payload?.threadId,\n if_exists: payload?.ifExists,\n supersteps: payload?.supersteps?.map((s) => ({\n updates: s.updates.map((u) => ({\n values: u.values,\n command: u.command,\n as_node: u.asNode,\n })),\n })),\n ttl: ttlPayload,\n },\n signal: payload?.signal,\n });\n }\n\n /**\n * Copy an existing thread\n * @param threadId ID of the thread to be copied\n * @returns Newly copied thread\n */\n async copy(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<Thread<TStateType>> {\n return this.fetch<Thread<TStateType>>(\n `/threads/${encodePathSegment(threadId)}/copy`,\n {\n method: \"POST\",\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Update a thread.\n *\n * @param threadId ID of the thread.\n * @param payload Payload for updating the thread.\n * @returns The updated thread.\n */\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: false;\n signal?: AbortSignal;\n }\n ): Promise<Thread>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: true;\n signal?: AbortSignal;\n }\n ): Promise<void>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void>;\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread | void>(\n `/threads/${encodePathSegment(threadId)}`,\n {\n method: \"PATCH\",\n headers: payload?.returnMinimal\n ? { Prefer: \"return=minimal\" }\n : undefined,\n json: { metadata: payload?.metadata, ttl: ttlPayload },\n signal: payload?.signal,\n }\n );\n }\n\n /**\n * Delete a thread.\n *\n * @param threadId ID of the thread.\n */\n async delete(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n return this.fetch<void>(`/threads/${encodePathSegment(threadId)}`, {\n method: \"DELETE\",\n signal: options?.signal,\n });\n }\n\n /**\n * Prune threads by ID. The 'delete' strategy removes threads entirely.\n * The 'keep_latest' strategy prunes old checkpoints but keeps threads\n * and their latest state.\n *\n * @param threadIds List of thread IDs to prune.\n * @param options Additional options for pruning.\n * @param options.strategy The prune strategy. Defaults to 'delete'.\n * @param options.signal Signal to abort the request.\n * @returns An object containing `pruned_count`.\n */\n async prune(\n threadIds: string[],\n options?: {\n strategy?: \"delete\" | \"keep_latest\";\n signal?: AbortSignal;\n }\n ): Promise<{ pruned_count: number }> {\n return this.fetch<{ pruned_count: number }>(\"/threads/prune\", {\n method: \"POST\",\n json: {\n thread_ids: threadIds,\n strategy: options?.strategy ?? \"delete\",\n },\n signal: options?.signal,\n });\n }\n\n /**\n * List threads\n *\n * @param query Query options\n * @returns List of threads\n */\n async search<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n ids?: string[];\n limit?: number;\n offset?: number;\n status?: ThreadStatus;\n sortBy?: ThreadSortBy;\n sortOrder?: SortOrder;\n select?: ThreadSelectField[];\n values?: ThreadValuesFilter;\n extract?: Record<string, string>;\n signal?: AbortSignal;\n }): Promise<Thread<ValuesType>[]> {\n return this.fetch<Thread<ValuesType>[]>(\"/threads/search\", {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n ids: query?.ids ?? undefined,\n limit: query?.limit ?? 10,\n offset: query?.offset ?? 0,\n status: query?.status,\n sort_by: query?.sortBy,\n sort_order: query?.sortOrder,\n select: query?.select ?? undefined,\n values: query?.values ?? undefined,\n extract: query?.extract ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Count threads matching filters.\n *\n * @param query.metadata Thread metadata to filter on.\n * @param query.values State values to filter on.\n * @param query.status Thread status to filter on.\n * @returns Number of threads matching the criteria.\n */\n async count<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n values?: ValuesType;\n status?: ThreadStatus;\n signal?: AbortSignal;\n }): Promise<number> {\n return this.fetch<number>(`/threads/count`, {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n values: query?.values ?? undefined,\n status: query?.status ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Get state for a thread.\n *\n * @param threadId ID of the thread.\n * @returns Thread state.\n */\n async getState<ValuesType = TStateType>(\n threadId: string,\n checkpoint?: Checkpoint | string,\n options?: { subgraphs?: boolean; signal?: AbortSignal }\n ): Promise<ThreadState<ValuesType>> {\n if (checkpoint != null) {\n if (typeof checkpoint !== \"string\") {\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}/state/checkpoint`,\n {\n method: \"POST\",\n json: { checkpoint, subgraphs: options?.subgraphs },\n signal: options?.signal,\n }\n );\n }\n\n // deprecated\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}/state/${encodePathSegment(checkpoint)}`,\n { params: { subgraphs: options?.subgraphs }, signal: options?.signal }\n );\n }\n\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}/state`,\n {\n params: { subgraphs: options?.subgraphs },\n signal: options?.signal,\n // Coalesce concurrent identical reads (e.g. two controllers\n // hydrating the same thread on reconnect). Skipped automatically\n // when a caller supplies its own `signal`.\n dedupe: true,\n }\n );\n }\n\n /**\n * Add state to a thread.\n *\n * @param threadId The ID of the thread.\n * @returns\n */\n async updateState<ValuesType = TUpdateType>(\n threadId: string,\n options: {\n values: ValuesType;\n checkpoint?: Checkpoint;\n checkpointId?: string;\n asNode?: string;\n signal?: AbortSignal;\n }\n ): Promise<Pick<Config, \"configurable\">> {\n return this.fetch<Pick<Config, \"configurable\">>(\n `/threads/${encodePathSegment(threadId)}/state`,\n {\n method: \"POST\",\n json: {\n values: options.values,\n checkpoint: options.checkpoint,\n checkpoint_id: options.checkpointId,\n as_node: options?.asNode,\n },\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Patch the metadata of a thread.\n *\n * @param threadIdOrConfig Thread ID or config to patch the state of.\n * @param metadata Metadata to patch the state with.\n */\n async patchState(\n threadIdOrConfig: string | Config,\n metadata: Metadata,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n let threadId: string;\n\n if (typeof threadIdOrConfig !== \"string\") {\n if (typeof threadIdOrConfig.configurable?.thread_id !== \"string\") {\n throw new Error(\n \"Thread ID is required when updating state with a config.\"\n );\n }\n threadId = threadIdOrConfig.configurable.thread_id;\n } else {\n threadId = threadIdOrConfig;\n }\n\n return this.fetch<void>(`/threads/${encodePathSegment(threadId)}/state`, {\n method: \"PATCH\",\n json: { metadata },\n signal: options?.signal,\n });\n }\n\n /**\n * Get all past states for a thread.\n *\n * @param threadId ID of the thread.\n * @param options Additional options.\n * @returns List of thread states.\n */\n async getHistory<ValuesType = TStateType>(\n threadId: string,\n options?: {\n limit?: number;\n before?: Config;\n checkpoint?: Partial<Omit<Checkpoint, \"thread_id\">>;\n metadata?: Metadata;\n signal?: AbortSignal;\n }\n ): Promise<ThreadState<ValuesType>[]> {\n return this.fetch<ThreadState<ValuesType>[]>(\n `/threads/${encodePathSegment(threadId)}/history`,\n {\n method: \"POST\",\n json: {\n limit: options?.limit ?? 10,\n before: options?.before,\n metadata: options?.metadata,\n checkpoint: options?.checkpoint,\n },\n signal: options?.signal,\n // `getHistory` is a read despite using POST — coalesce the\n // hydrate-time discovery seed when two controllers reconnect to\n // the same thread concurrently. Skipped when `signal` is set.\n dedupe: true,\n }\n );\n }\n\n async *joinStream(\n threadId: string,\n options?: {\n lastEventId?: string;\n streamMode?: ThreadStreamMode | ThreadStreamMode[];\n signal?: AbortSignal;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): AsyncGenerator<{ id?: string; event: StreamEvent; data: any }> {\n yield* this.streamWithRetry({\n endpoint: `/threads/${encodePathSegment(threadId)}/stream`,\n method: \"GET\",\n signal: options?.signal,\n headers: options?.lastEventId\n ? { \"Last-Event-ID\": options.lastEventId }\n : undefined,\n params: options?.streamMode\n ? { stream_mode: options.streamMode }\n : undefined,\n });\n }\n\n /**\n * Open a protocol stream over the thread-centric v2 protocol.\n *\n * Returns a {@link ThreadStream} with lazy getters\n * (`.messages`, `.values`, `.toolCalls`, `.subgraphs`, `.subagents`,\n * `.output`) and `thread.run.start({ input, ... })` for starting runs.\n * Mirrors the in-process `graph.streamEvents(..., { version: \"v3\" })` API.\n *\n * The thread is bound to `options.assistantId` for its lifetime.\n * The wire transport defaults to SSE; pass `transport: \"websocket\"`\n * in options (or configure `streamProtocol: \"v2-websocket\"` on the\n * client) to use a WebSocket instead.\n *\n * @example New thread (UUID generated client-side)\n * ```ts\n * const thread = client.threads.stream({ assistantId: \"my-agent\" });\n * ```\n *\n * @example Attach to an existing thread\n * ```ts\n * const thread = client.threads.stream(threadId, { assistantId: \"my-agent\" });\n * ```\n *\n * @example WebSocket transport\n * ```ts\n * const thread = client.threads.stream({\n * assistantId: \"my-agent\",\n * transport: \"websocket\",\n * });\n * ```\n */\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadId: string,\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadIdOrOptions: string | ThreadStreamOptions,\n maybeOptions?: ThreadStreamOptions\n ): ThreadStream<TExtensions> {\n const { threadId, options } =\n typeof threadIdOrOptions === \"string\"\n ? {\n threadId: threadIdOrOptions,\n options: maybeOptions as ThreadStreamOptions,\n }\n : // A nullish first arg is the generate-thread-id form, not the\n // options-only overload. Without this branch, a runtime\n // `stream(null, opts)` binds `null` to `options` and the\n // `options.fetch` read below throws. Use the second arg as options.\n // (Cast: the declared type excludes null, but callers can reach\n // here at runtime, e.g. an in-flight reconnect after the id clears.)\n (threadIdOrOptions as ThreadStreamOptions | null | undefined) == null\n ? {\n threadId: uuidv7(),\n options: maybeOptions as ThreadStreamOptions,\n }\n : { threadId: uuidv7(), options: threadIdOrOptions };\n\n // `transport` accepts either a preset string (`\"sse\"` / `\"websocket\"`)\n // or a custom {@link AgentServerAdapter}. A custom adapter replaces\n // the built-in factories entirely — this is the seam that lets users\n // point `useStream` at any agent server (including the thin wrappers\n // produced by `HttpAgentServerAdapter`).\n // When callers supply `fetch`, use it verbatim (tests, auth shims). Otherwise\n // route protocol HTTP and media URL fetches through AsyncCaller like REST.\n const userFetch = options.fetch;\n const protocolFetch =\n userFetch ?? this.asyncCaller.fetch.bind(this.asyncCaller);\n\n let transport: TransportAdapter;\n if (options.transport != null && typeof options.transport !== \"string\") {\n transport = options.transport;\n // Bind (or re-bind) the caller-supplied adapter to this thread so a\n // single instance can follow lazy creation (the first `submit()` on a\n // `threadId: null` controller mints the id here) and thread switches.\n // No-op for adapters that bake `threadId` at construction.\n transport.setThreadId?.(threadId);\n } else {\n const transportKind: ThreadStreamTransportKind =\n options.transport ??\n (this.streamProtocol === \"v2-websocket\" ? \"websocket\" : \"sse\");\n const maxReconnectAttempts =\n options.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n /**\n * Common options for both transports.\n */\n const commonOpts = {\n apiUrl: this.apiUrl,\n threadId,\n defaultHeaders: this.defaultHeaders,\n onRequest: this.onRequest,\n maxReconnectAttempts,\n reconnectDelayMs: options.reconnectDelayMs,\n onReconnect: options.onReconnect,\n onConnected: options.onConnected,\n };\n\n transport =\n transportKind === \"websocket\"\n ? new ProtocolWebSocketTransportAdapter({\n ...commonOpts,\n webSocketFactory: options.webSocketFactory,\n })\n : new ProtocolSseTransportAdapter({\n ...commonOpts,\n idleReconnect: options.streamIdleReconnect,\n fetch: userFetch,\n asyncCaller: userFetch ? undefined : this.asyncCaller,\n });\n }\n\n return new ThreadStream<TExtensions>(transport, {\n ...options,\n fetch: protocolFetch,\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/client/threads/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/client/threads/index.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/client/threads/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/client/threads/index.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { BaseClient } from "../base.js";
1
+ import { BaseClient, encodePathSegment } from "../base.js";
2
2
  import { ThreadStream } from "../stream/index.js";
3
3
  import { ProtocolSseTransportAdapter } from "../stream/transport/http.js";
4
4
  import { ProtocolWebSocketTransportAdapter } from "../stream/transport/websocket.js";
@@ -12,7 +12,7 @@ var ThreadsClient = class extends BaseClient {
12
12
  * @returns The thread.
13
13
  */
14
14
  async get(threadId, options) {
15
- return this.fetch(`/threads/${threadId}`, {
15
+ return this.fetch(`/threads/${encodePathSegment(threadId)}`, {
16
16
  params: { include: options?.include ?? void 0 },
17
17
  signal: options?.signal
18
18
  });
@@ -53,7 +53,7 @@ var ThreadsClient = class extends BaseClient {
53
53
  * @returns Newly copied thread
54
54
  */
55
55
  async copy(threadId, options) {
56
- return this.fetch(`/threads/${threadId}/copy`, {
56
+ return this.fetch(`/threads/${encodePathSegment(threadId)}/copy`, {
57
57
  method: "POST",
58
58
  signal: options?.signal
59
59
  });
@@ -63,7 +63,7 @@ var ThreadsClient = class extends BaseClient {
63
63
  ttl: payload.ttl,
64
64
  strategy: "delete"
65
65
  } : payload?.ttl;
66
- return this.fetch(`/threads/${threadId}`, {
66
+ return this.fetch(`/threads/${encodePathSegment(threadId)}`, {
67
67
  method: "PATCH",
68
68
  headers: payload?.returnMinimal ? { Prefer: "return=minimal" } : void 0,
69
69
  json: {
@@ -79,7 +79,7 @@ var ThreadsClient = class extends BaseClient {
79
79
  * @param threadId ID of the thread.
80
80
  */
81
81
  async delete(threadId, options) {
82
- return this.fetch(`/threads/${threadId}`, {
82
+ return this.fetch(`/threads/${encodePathSegment(threadId)}`, {
83
83
  method: "DELETE",
84
84
  signal: options?.signal
85
85
  });
@@ -156,7 +156,7 @@ var ThreadsClient = class extends BaseClient {
156
156
  */
157
157
  async getState(threadId, checkpoint, options) {
158
158
  if (checkpoint != null) {
159
- if (typeof checkpoint !== "string") return this.fetch(`/threads/${threadId}/state/checkpoint`, {
159
+ if (typeof checkpoint !== "string") return this.fetch(`/threads/${encodePathSegment(threadId)}/state/checkpoint`, {
160
160
  method: "POST",
161
161
  json: {
162
162
  checkpoint,
@@ -164,12 +164,12 @@ var ThreadsClient = class extends BaseClient {
164
164
  },
165
165
  signal: options?.signal
166
166
  });
167
- return this.fetch(`/threads/${threadId}/state/${checkpoint}`, {
167
+ return this.fetch(`/threads/${encodePathSegment(threadId)}/state/${encodePathSegment(checkpoint)}`, {
168
168
  params: { subgraphs: options?.subgraphs },
169
169
  signal: options?.signal
170
170
  });
171
171
  }
172
- return this.fetch(`/threads/${threadId}/state`, {
172
+ return this.fetch(`/threads/${encodePathSegment(threadId)}/state`, {
173
173
  params: { subgraphs: options?.subgraphs },
174
174
  signal: options?.signal,
175
175
  dedupe: true
@@ -182,7 +182,7 @@ var ThreadsClient = class extends BaseClient {
182
182
  * @returns
183
183
  */
184
184
  async updateState(threadId, options) {
185
- return this.fetch(`/threads/${threadId}/state`, {
185
+ return this.fetch(`/threads/${encodePathSegment(threadId)}/state`, {
186
186
  method: "POST",
187
187
  json: {
188
188
  values: options.values,
@@ -205,7 +205,7 @@ var ThreadsClient = class extends BaseClient {
205
205
  if (typeof threadIdOrConfig.configurable?.thread_id !== "string") throw new Error("Thread ID is required when updating state with a config.");
206
206
  threadId = threadIdOrConfig.configurable.thread_id;
207
207
  } else threadId = threadIdOrConfig;
208
- return this.fetch(`/threads/${threadId}/state`, {
208
+ return this.fetch(`/threads/${encodePathSegment(threadId)}/state`, {
209
209
  method: "PATCH",
210
210
  json: { metadata },
211
211
  signal: options?.signal
@@ -219,7 +219,7 @@ var ThreadsClient = class extends BaseClient {
219
219
  * @returns List of thread states.
220
220
  */
221
221
  async getHistory(threadId, options) {
222
- return this.fetch(`/threads/${threadId}/history`, {
222
+ return this.fetch(`/threads/${encodePathSegment(threadId)}/history`, {
223
223
  method: "POST",
224
224
  json: {
225
225
  limit: options?.limit ?? 10,
@@ -233,7 +233,7 @@ var ThreadsClient = class extends BaseClient {
233
233
  }
234
234
  async *joinStream(threadId, options) {
235
235
  yield* this.streamWithRetry({
236
- endpoint: `/threads/${threadId}/stream`,
236
+ endpoint: `/threads/${encodePathSegment(threadId)}/stream`,
237
237
  method: "GET",
238
238
  signal: options?.signal,
239
239
  headers: options?.lastEventId ? { "Last-Event-ID": options.lastEventId } : void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["uuidv7"],"sources":["../../../src/client/threads/index.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"@langchain/core/utils/uuid\";\n\nimport {\n Checkpoint,\n Config,\n DefaultValues,\n Metadata,\n SortOrder,\n Thread,\n ThreadSelectField,\n ThreadSortBy,\n ThreadState,\n ThreadStatus,\n ThreadValuesFilter,\n} from \"../../schema.js\";\nimport type { Command, OnConflictBehavior, StreamEvent } from \"../../types.js\";\nimport type { ThreadStreamMode } from \"../../types.stream.js\";\nimport { BaseClient } from \"../base.js\";\nimport { ThreadStream } from \"../stream/index.js\";\nimport type {\n ThreadStreamOptions,\n ThreadStreamTransportKind,\n} from \"../stream/types.js\";\nimport { DEFAULT_MAX_RECONNECT_ATTEMPTS } from \"../../utils/reconnect.js\";\nimport { ProtocolSseTransportAdapter } from \"../stream/transport/http.js\";\nimport { ProtocolWebSocketTransportAdapter } from \"../stream/transport/websocket.js\";\nimport type { TransportAdapter } from \"../stream/transport.js\";\n\nexport class ThreadsClient<\n TStateType = DefaultValues,\n TUpdateType = TStateType,\n> extends BaseClient {\n /**\n * Get a thread by ID.\n *\n * @param threadId ID of the thread.\n * @returns The thread.\n */\n async get<ValuesType = TStateType>(\n threadId: string,\n options?: { signal?: AbortSignal; include?: string[] }\n ): Promise<Thread<ValuesType>> {\n return this.fetch<Thread<ValuesType>>(`/threads/${threadId}`, {\n params: {\n include: options?.include ?? undefined,\n },\n signal: options?.signal,\n });\n }\n\n /**\n * Create a new thread.\n *\n * @param payload Payload for creating a thread.\n * @returns The created thread.\n */\n async create(payload?: {\n metadata?: Metadata;\n threadId?: string;\n ifExists?: OnConflictBehavior;\n graphId?: string;\n supersteps?: Array<{\n updates: Array<{ values: unknown; command?: Command; asNode: string }>;\n }>;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n signal?: AbortSignal;\n }): Promise<Thread<TStateType>> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread<TStateType>>(`/threads`, {\n method: \"POST\",\n json: {\n metadata: {\n ...payload?.metadata,\n graph_id: payload?.graphId,\n },\n thread_id: payload?.threadId,\n if_exists: payload?.ifExists,\n supersteps: payload?.supersteps?.map((s) => ({\n updates: s.updates.map((u) => ({\n values: u.values,\n command: u.command,\n as_node: u.asNode,\n })),\n })),\n ttl: ttlPayload,\n },\n signal: payload?.signal,\n });\n }\n\n /**\n * Copy an existing thread\n * @param threadId ID of the thread to be copied\n * @returns Newly copied thread\n */\n async copy(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<Thread<TStateType>> {\n return this.fetch<Thread<TStateType>>(`/threads/${threadId}/copy`, {\n method: \"POST\",\n signal: options?.signal,\n });\n }\n\n /**\n * Update a thread.\n *\n * @param threadId ID of the thread.\n * @param payload Payload for updating the thread.\n * @returns The updated thread.\n */\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: false;\n signal?: AbortSignal;\n }\n ): Promise<Thread>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: true;\n signal?: AbortSignal;\n }\n ): Promise<void>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void>;\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread | void>(`/threads/${threadId}`, {\n method: \"PATCH\",\n headers: payload?.returnMinimal\n ? { Prefer: \"return=minimal\" }\n : undefined,\n json: { metadata: payload?.metadata, ttl: ttlPayload },\n signal: payload?.signal,\n });\n }\n\n /**\n * Delete a thread.\n *\n * @param threadId ID of the thread.\n */\n async delete(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n return this.fetch<void>(`/threads/${threadId}`, {\n method: \"DELETE\",\n signal: options?.signal,\n });\n }\n\n /**\n * Prune threads by ID. The 'delete' strategy removes threads entirely.\n * The 'keep_latest' strategy prunes old checkpoints but keeps threads\n * and their latest state.\n *\n * @param threadIds List of thread IDs to prune.\n * @param options Additional options for pruning.\n * @param options.strategy The prune strategy. Defaults to 'delete'.\n * @param options.signal Signal to abort the request.\n * @returns An object containing `pruned_count`.\n */\n async prune(\n threadIds: string[],\n options?: {\n strategy?: \"delete\" | \"keep_latest\";\n signal?: AbortSignal;\n }\n ): Promise<{ pruned_count: number }> {\n return this.fetch<{ pruned_count: number }>(\"/threads/prune\", {\n method: \"POST\",\n json: {\n thread_ids: threadIds,\n strategy: options?.strategy ?? \"delete\",\n },\n signal: options?.signal,\n });\n }\n\n /**\n * List threads\n *\n * @param query Query options\n * @returns List of threads\n */\n async search<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n ids?: string[];\n limit?: number;\n offset?: number;\n status?: ThreadStatus;\n sortBy?: ThreadSortBy;\n sortOrder?: SortOrder;\n select?: ThreadSelectField[];\n values?: ThreadValuesFilter;\n extract?: Record<string, string>;\n signal?: AbortSignal;\n }): Promise<Thread<ValuesType>[]> {\n return this.fetch<Thread<ValuesType>[]>(\"/threads/search\", {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n ids: query?.ids ?? undefined,\n limit: query?.limit ?? 10,\n offset: query?.offset ?? 0,\n status: query?.status,\n sort_by: query?.sortBy,\n sort_order: query?.sortOrder,\n select: query?.select ?? undefined,\n values: query?.values ?? undefined,\n extract: query?.extract ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Count threads matching filters.\n *\n * @param query.metadata Thread metadata to filter on.\n * @param query.values State values to filter on.\n * @param query.status Thread status to filter on.\n * @returns Number of threads matching the criteria.\n */\n async count<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n values?: ValuesType;\n status?: ThreadStatus;\n signal?: AbortSignal;\n }): Promise<number> {\n return this.fetch<number>(`/threads/count`, {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n values: query?.values ?? undefined,\n status: query?.status ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Get state for a thread.\n *\n * @param threadId ID of the thread.\n * @returns Thread state.\n */\n async getState<ValuesType = TStateType>(\n threadId: string,\n checkpoint?: Checkpoint | string,\n options?: { subgraphs?: boolean; signal?: AbortSignal }\n ): Promise<ThreadState<ValuesType>> {\n if (checkpoint != null) {\n if (typeof checkpoint !== \"string\") {\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${threadId}/state/checkpoint`,\n {\n method: \"POST\",\n json: { checkpoint, subgraphs: options?.subgraphs },\n signal: options?.signal,\n }\n );\n }\n\n // deprecated\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${threadId}/state/${checkpoint}`,\n { params: { subgraphs: options?.subgraphs }, signal: options?.signal }\n );\n }\n\n return this.fetch<ThreadState<ValuesType>>(`/threads/${threadId}/state`, {\n params: { subgraphs: options?.subgraphs },\n signal: options?.signal,\n // Coalesce concurrent identical reads (e.g. two controllers\n // hydrating the same thread on reconnect). Skipped automatically\n // when a caller supplies its own `signal`.\n dedupe: true,\n });\n }\n\n /**\n * Add state to a thread.\n *\n * @param threadId The ID of the thread.\n * @returns\n */\n async updateState<ValuesType = TUpdateType>(\n threadId: string,\n options: {\n values: ValuesType;\n checkpoint?: Checkpoint;\n checkpointId?: string;\n asNode?: string;\n signal?: AbortSignal;\n }\n ): Promise<Pick<Config, \"configurable\">> {\n return this.fetch<Pick<Config, \"configurable\">>(\n `/threads/${threadId}/state`,\n {\n method: \"POST\",\n json: {\n values: options.values,\n checkpoint: options.checkpoint,\n checkpoint_id: options.checkpointId,\n as_node: options?.asNode,\n },\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Patch the metadata of a thread.\n *\n * @param threadIdOrConfig Thread ID or config to patch the state of.\n * @param metadata Metadata to patch the state with.\n */\n async patchState(\n threadIdOrConfig: string | Config,\n metadata: Metadata,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n let threadId: string;\n\n if (typeof threadIdOrConfig !== \"string\") {\n if (typeof threadIdOrConfig.configurable?.thread_id !== \"string\") {\n throw new Error(\n \"Thread ID is required when updating state with a config.\"\n );\n }\n threadId = threadIdOrConfig.configurable.thread_id;\n } else {\n threadId = threadIdOrConfig;\n }\n\n return this.fetch<void>(`/threads/${threadId}/state`, {\n method: \"PATCH\",\n json: { metadata },\n signal: options?.signal,\n });\n }\n\n /**\n * Get all past states for a thread.\n *\n * @param threadId ID of the thread.\n * @param options Additional options.\n * @returns List of thread states.\n */\n async getHistory<ValuesType = TStateType>(\n threadId: string,\n options?: {\n limit?: number;\n before?: Config;\n checkpoint?: Partial<Omit<Checkpoint, \"thread_id\">>;\n metadata?: Metadata;\n signal?: AbortSignal;\n }\n ): Promise<ThreadState<ValuesType>[]> {\n return this.fetch<ThreadState<ValuesType>[]>(\n `/threads/${threadId}/history`,\n {\n method: \"POST\",\n json: {\n limit: options?.limit ?? 10,\n before: options?.before,\n metadata: options?.metadata,\n checkpoint: options?.checkpoint,\n },\n signal: options?.signal,\n // `getHistory` is a read despite using POST — coalesce the\n // hydrate-time discovery seed when two controllers reconnect to\n // the same thread concurrently. Skipped when `signal` is set.\n dedupe: true,\n }\n );\n }\n\n async *joinStream(\n threadId: string,\n options?: {\n lastEventId?: string;\n streamMode?: ThreadStreamMode | ThreadStreamMode[];\n signal?: AbortSignal;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): AsyncGenerator<{ id?: string; event: StreamEvent; data: any }> {\n yield* this.streamWithRetry({\n endpoint: `/threads/${threadId}/stream`,\n method: \"GET\",\n signal: options?.signal,\n headers: options?.lastEventId\n ? { \"Last-Event-ID\": options.lastEventId }\n : undefined,\n params: options?.streamMode\n ? { stream_mode: options.streamMode }\n : undefined,\n });\n }\n\n /**\n * Open a protocol stream over the thread-centric v2 protocol.\n *\n * Returns a {@link ThreadStream} with lazy getters\n * (`.messages`, `.values`, `.toolCalls`, `.subgraphs`, `.subagents`,\n * `.output`) and `thread.run.start({ input, ... })` for starting runs.\n * Mirrors the in-process `graph.streamEvents(..., { version: \"v3\" })` API.\n *\n * The thread is bound to `options.assistantId` for its lifetime.\n * The wire transport defaults to SSE; pass `transport: \"websocket\"`\n * in options (or configure `streamProtocol: \"v2-websocket\"` on the\n * client) to use a WebSocket instead.\n *\n * @example New thread (UUID generated client-side)\n * ```ts\n * const thread = client.threads.stream({ assistantId: \"my-agent\" });\n * ```\n *\n * @example Attach to an existing thread\n * ```ts\n * const thread = client.threads.stream(threadId, { assistantId: \"my-agent\" });\n * ```\n *\n * @example WebSocket transport\n * ```ts\n * const thread = client.threads.stream({\n * assistantId: \"my-agent\",\n * transport: \"websocket\",\n * });\n * ```\n */\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadId: string,\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadIdOrOptions: string | ThreadStreamOptions,\n maybeOptions?: ThreadStreamOptions\n ): ThreadStream<TExtensions> {\n const { threadId, options } =\n typeof threadIdOrOptions === \"string\"\n ? {\n threadId: threadIdOrOptions,\n options: maybeOptions as ThreadStreamOptions,\n }\n : // A nullish first arg is the generate-thread-id form, not the\n // options-only overload. Without this branch, a runtime\n // `stream(null, opts)` binds `null` to `options` and the\n // `options.fetch` read below throws. Use the second arg as options.\n // (Cast: the declared type excludes null, but callers can reach\n // here at runtime, e.g. an in-flight reconnect after the id clears.)\n (threadIdOrOptions as ThreadStreamOptions | null | undefined) == null\n ? {\n threadId: uuidv7(),\n options: maybeOptions as ThreadStreamOptions,\n }\n : { threadId: uuidv7(), options: threadIdOrOptions };\n\n // `transport` accepts either a preset string (`\"sse\"` / `\"websocket\"`)\n // or a custom {@link AgentServerAdapter}. A custom adapter replaces\n // the built-in factories entirely — this is the seam that lets users\n // point `useStream` at any agent server (including the thin wrappers\n // produced by `HttpAgentServerAdapter`).\n // When callers supply `fetch`, use it verbatim (tests, auth shims). Otherwise\n // route protocol HTTP and media URL fetches through AsyncCaller like REST.\n const userFetch = options.fetch;\n const protocolFetch =\n userFetch ?? this.asyncCaller.fetch.bind(this.asyncCaller);\n\n let transport: TransportAdapter;\n if (options.transport != null && typeof options.transport !== \"string\") {\n transport = options.transport;\n // Bind (or re-bind) the caller-supplied adapter to this thread so a\n // single instance can follow lazy creation (the first `submit()` on a\n // `threadId: null` controller mints the id here) and thread switches.\n // No-op for adapters that bake `threadId` at construction.\n transport.setThreadId?.(threadId);\n } else {\n const transportKind: ThreadStreamTransportKind =\n options.transport ??\n (this.streamProtocol === \"v2-websocket\" ? \"websocket\" : \"sse\");\n const maxReconnectAttempts =\n options.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n /**\n * Common options for both transports.\n */\n const commonOpts = {\n apiUrl: this.apiUrl,\n threadId,\n defaultHeaders: this.defaultHeaders,\n onRequest: this.onRequest,\n maxReconnectAttempts,\n reconnectDelayMs: options.reconnectDelayMs,\n onReconnect: options.onReconnect,\n onConnected: options.onConnected,\n };\n\n transport =\n transportKind === \"websocket\"\n ? new ProtocolWebSocketTransportAdapter({\n ...commonOpts,\n webSocketFactory: options.webSocketFactory,\n })\n : new ProtocolSseTransportAdapter({\n ...commonOpts,\n idleReconnect: options.streamIdleReconnect,\n fetch: userFetch,\n asyncCaller: userFetch ? undefined : this.asyncCaller,\n });\n }\n\n return new ThreadStream<TExtensions>(transport, {\n ...options,\n fetch: protocolFetch,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["uuidv7"],"sources":["../../../src/client/threads/index.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"@langchain/core/utils/uuid\";\n\nimport {\n Checkpoint,\n Config,\n DefaultValues,\n Metadata,\n SortOrder,\n Thread,\n ThreadSelectField,\n ThreadSortBy,\n ThreadState,\n ThreadStatus,\n ThreadValuesFilter,\n} from \"../../schema.js\";\nimport type { Command, OnConflictBehavior, StreamEvent } from \"../../types.js\";\nimport type { ThreadStreamMode } from \"../../types.stream.js\";\nimport { BaseClient, encodePathSegment } from \"../base.js\";\nimport { ThreadStream } from \"../stream/index.js\";\nimport type {\n ThreadStreamOptions,\n ThreadStreamTransportKind,\n} from \"../stream/types.js\";\nimport { DEFAULT_MAX_RECONNECT_ATTEMPTS } from \"../../utils/reconnect.js\";\nimport { ProtocolSseTransportAdapter } from \"../stream/transport/http.js\";\nimport { ProtocolWebSocketTransportAdapter } from \"../stream/transport/websocket.js\";\nimport type { TransportAdapter } from \"../stream/transport.js\";\n\nexport class ThreadsClient<\n TStateType = DefaultValues,\n TUpdateType = TStateType,\n> extends BaseClient {\n /**\n * Get a thread by ID.\n *\n * @param threadId ID of the thread.\n * @returns The thread.\n */\n async get<ValuesType = TStateType>(\n threadId: string,\n options?: { signal?: AbortSignal; include?: string[] }\n ): Promise<Thread<ValuesType>> {\n return this.fetch<Thread<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}`,\n {\n params: {\n include: options?.include ?? undefined,\n },\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Create a new thread.\n *\n * @param payload Payload for creating a thread.\n * @returns The created thread.\n */\n async create(payload?: {\n metadata?: Metadata;\n threadId?: string;\n ifExists?: OnConflictBehavior;\n graphId?: string;\n supersteps?: Array<{\n updates: Array<{ values: unknown; command?: Command; asNode: string }>;\n }>;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n signal?: AbortSignal;\n }): Promise<Thread<TStateType>> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread<TStateType>>(`/threads`, {\n method: \"POST\",\n json: {\n metadata: {\n ...payload?.metadata,\n graph_id: payload?.graphId,\n },\n thread_id: payload?.threadId,\n if_exists: payload?.ifExists,\n supersteps: payload?.supersteps?.map((s) => ({\n updates: s.updates.map((u) => ({\n values: u.values,\n command: u.command,\n as_node: u.asNode,\n })),\n })),\n ttl: ttlPayload,\n },\n signal: payload?.signal,\n });\n }\n\n /**\n * Copy an existing thread\n * @param threadId ID of the thread to be copied\n * @returns Newly copied thread\n */\n async copy(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<Thread<TStateType>> {\n return this.fetch<Thread<TStateType>>(\n `/threads/${encodePathSegment(threadId)}/copy`,\n {\n method: \"POST\",\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Update a thread.\n *\n * @param threadId ID of the thread.\n * @param payload Payload for updating the thread.\n * @returns The updated thread.\n */\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: false;\n signal?: AbortSignal;\n }\n ): Promise<Thread>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: true;\n signal?: AbortSignal;\n }\n ): Promise<void>;\n async update(\n threadId: string,\n payload: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void>;\n async update(\n threadId: string,\n payload?: {\n metadata?: Metadata;\n ttl?: number | { ttl: number; strategy?: \"delete\" };\n returnMinimal?: boolean;\n signal?: AbortSignal;\n }\n ): Promise<Thread | void> {\n const ttlPayload =\n typeof payload?.ttl === \"number\"\n ? { ttl: payload.ttl, strategy: \"delete\" as const }\n : payload?.ttl;\n\n return this.fetch<Thread | void>(\n `/threads/${encodePathSegment(threadId)}`,\n {\n method: \"PATCH\",\n headers: payload?.returnMinimal\n ? { Prefer: \"return=minimal\" }\n : undefined,\n json: { metadata: payload?.metadata, ttl: ttlPayload },\n signal: payload?.signal,\n }\n );\n }\n\n /**\n * Delete a thread.\n *\n * @param threadId ID of the thread.\n */\n async delete(\n threadId: string,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n return this.fetch<void>(`/threads/${encodePathSegment(threadId)}`, {\n method: \"DELETE\",\n signal: options?.signal,\n });\n }\n\n /**\n * Prune threads by ID. The 'delete' strategy removes threads entirely.\n * The 'keep_latest' strategy prunes old checkpoints but keeps threads\n * and their latest state.\n *\n * @param threadIds List of thread IDs to prune.\n * @param options Additional options for pruning.\n * @param options.strategy The prune strategy. Defaults to 'delete'.\n * @param options.signal Signal to abort the request.\n * @returns An object containing `pruned_count`.\n */\n async prune(\n threadIds: string[],\n options?: {\n strategy?: \"delete\" | \"keep_latest\";\n signal?: AbortSignal;\n }\n ): Promise<{ pruned_count: number }> {\n return this.fetch<{ pruned_count: number }>(\"/threads/prune\", {\n method: \"POST\",\n json: {\n thread_ids: threadIds,\n strategy: options?.strategy ?? \"delete\",\n },\n signal: options?.signal,\n });\n }\n\n /**\n * List threads\n *\n * @param query Query options\n * @returns List of threads\n */\n async search<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n ids?: string[];\n limit?: number;\n offset?: number;\n status?: ThreadStatus;\n sortBy?: ThreadSortBy;\n sortOrder?: SortOrder;\n select?: ThreadSelectField[];\n values?: ThreadValuesFilter;\n extract?: Record<string, string>;\n signal?: AbortSignal;\n }): Promise<Thread<ValuesType>[]> {\n return this.fetch<Thread<ValuesType>[]>(\"/threads/search\", {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n ids: query?.ids ?? undefined,\n limit: query?.limit ?? 10,\n offset: query?.offset ?? 0,\n status: query?.status,\n sort_by: query?.sortBy,\n sort_order: query?.sortOrder,\n select: query?.select ?? undefined,\n values: query?.values ?? undefined,\n extract: query?.extract ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Count threads matching filters.\n *\n * @param query.metadata Thread metadata to filter on.\n * @param query.values State values to filter on.\n * @param query.status Thread status to filter on.\n * @returns Number of threads matching the criteria.\n */\n async count<ValuesType = TStateType>(query?: {\n metadata?: Metadata;\n values?: ValuesType;\n status?: ThreadStatus;\n signal?: AbortSignal;\n }): Promise<number> {\n return this.fetch<number>(`/threads/count`, {\n method: \"POST\",\n json: {\n metadata: query?.metadata ?? undefined,\n values: query?.values ?? undefined,\n status: query?.status ?? undefined,\n },\n signal: query?.signal,\n });\n }\n\n /**\n * Get state for a thread.\n *\n * @param threadId ID of the thread.\n * @returns Thread state.\n */\n async getState<ValuesType = TStateType>(\n threadId: string,\n checkpoint?: Checkpoint | string,\n options?: { subgraphs?: boolean; signal?: AbortSignal }\n ): Promise<ThreadState<ValuesType>> {\n if (checkpoint != null) {\n if (typeof checkpoint !== \"string\") {\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}/state/checkpoint`,\n {\n method: \"POST\",\n json: { checkpoint, subgraphs: options?.subgraphs },\n signal: options?.signal,\n }\n );\n }\n\n // deprecated\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}/state/${encodePathSegment(checkpoint)}`,\n { params: { subgraphs: options?.subgraphs }, signal: options?.signal }\n );\n }\n\n return this.fetch<ThreadState<ValuesType>>(\n `/threads/${encodePathSegment(threadId)}/state`,\n {\n params: { subgraphs: options?.subgraphs },\n signal: options?.signal,\n // Coalesce concurrent identical reads (e.g. two controllers\n // hydrating the same thread on reconnect). Skipped automatically\n // when a caller supplies its own `signal`.\n dedupe: true,\n }\n );\n }\n\n /**\n * Add state to a thread.\n *\n * @param threadId The ID of the thread.\n * @returns\n */\n async updateState<ValuesType = TUpdateType>(\n threadId: string,\n options: {\n values: ValuesType;\n checkpoint?: Checkpoint;\n checkpointId?: string;\n asNode?: string;\n signal?: AbortSignal;\n }\n ): Promise<Pick<Config, \"configurable\">> {\n return this.fetch<Pick<Config, \"configurable\">>(\n `/threads/${encodePathSegment(threadId)}/state`,\n {\n method: \"POST\",\n json: {\n values: options.values,\n checkpoint: options.checkpoint,\n checkpoint_id: options.checkpointId,\n as_node: options?.asNode,\n },\n signal: options?.signal,\n }\n );\n }\n\n /**\n * Patch the metadata of a thread.\n *\n * @param threadIdOrConfig Thread ID or config to patch the state of.\n * @param metadata Metadata to patch the state with.\n */\n async patchState(\n threadIdOrConfig: string | Config,\n metadata: Metadata,\n options?: { signal?: AbortSignal }\n ): Promise<void> {\n let threadId: string;\n\n if (typeof threadIdOrConfig !== \"string\") {\n if (typeof threadIdOrConfig.configurable?.thread_id !== \"string\") {\n throw new Error(\n \"Thread ID is required when updating state with a config.\"\n );\n }\n threadId = threadIdOrConfig.configurable.thread_id;\n } else {\n threadId = threadIdOrConfig;\n }\n\n return this.fetch<void>(`/threads/${encodePathSegment(threadId)}/state`, {\n method: \"PATCH\",\n json: { metadata },\n signal: options?.signal,\n });\n }\n\n /**\n * Get all past states for a thread.\n *\n * @param threadId ID of the thread.\n * @param options Additional options.\n * @returns List of thread states.\n */\n async getHistory<ValuesType = TStateType>(\n threadId: string,\n options?: {\n limit?: number;\n before?: Config;\n checkpoint?: Partial<Omit<Checkpoint, \"thread_id\">>;\n metadata?: Metadata;\n signal?: AbortSignal;\n }\n ): Promise<ThreadState<ValuesType>[]> {\n return this.fetch<ThreadState<ValuesType>[]>(\n `/threads/${encodePathSegment(threadId)}/history`,\n {\n method: \"POST\",\n json: {\n limit: options?.limit ?? 10,\n before: options?.before,\n metadata: options?.metadata,\n checkpoint: options?.checkpoint,\n },\n signal: options?.signal,\n // `getHistory` is a read despite using POST — coalesce the\n // hydrate-time discovery seed when two controllers reconnect to\n // the same thread concurrently. Skipped when `signal` is set.\n dedupe: true,\n }\n );\n }\n\n async *joinStream(\n threadId: string,\n options?: {\n lastEventId?: string;\n streamMode?: ThreadStreamMode | ThreadStreamMode[];\n signal?: AbortSignal;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): AsyncGenerator<{ id?: string; event: StreamEvent; data: any }> {\n yield* this.streamWithRetry({\n endpoint: `/threads/${encodePathSegment(threadId)}/stream`,\n method: \"GET\",\n signal: options?.signal,\n headers: options?.lastEventId\n ? { \"Last-Event-ID\": options.lastEventId }\n : undefined,\n params: options?.streamMode\n ? { stream_mode: options.streamMode }\n : undefined,\n });\n }\n\n /**\n * Open a protocol stream over the thread-centric v2 protocol.\n *\n * Returns a {@link ThreadStream} with lazy getters\n * (`.messages`, `.values`, `.toolCalls`, `.subgraphs`, `.subagents`,\n * `.output`) and `thread.run.start({ input, ... })` for starting runs.\n * Mirrors the in-process `graph.streamEvents(..., { version: \"v3\" })` API.\n *\n * The thread is bound to `options.assistantId` for its lifetime.\n * The wire transport defaults to SSE; pass `transport: \"websocket\"`\n * in options (or configure `streamProtocol: \"v2-websocket\"` on the\n * client) to use a WebSocket instead.\n *\n * @example New thread (UUID generated client-side)\n * ```ts\n * const thread = client.threads.stream({ assistantId: \"my-agent\" });\n * ```\n *\n * @example Attach to an existing thread\n * ```ts\n * const thread = client.threads.stream(threadId, { assistantId: \"my-agent\" });\n * ```\n *\n * @example WebSocket transport\n * ```ts\n * const thread = client.threads.stream({\n * assistantId: \"my-agent\",\n * transport: \"websocket\",\n * });\n * ```\n */\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadId: string,\n options: ThreadStreamOptions\n ): ThreadStream<TExtensions>;\n stream<TExtensions extends Record<string, unknown> = Record<string, unknown>>(\n threadIdOrOptions: string | ThreadStreamOptions,\n maybeOptions?: ThreadStreamOptions\n ): ThreadStream<TExtensions> {\n const { threadId, options } =\n typeof threadIdOrOptions === \"string\"\n ? {\n threadId: threadIdOrOptions,\n options: maybeOptions as ThreadStreamOptions,\n }\n : // A nullish first arg is the generate-thread-id form, not the\n // options-only overload. Without this branch, a runtime\n // `stream(null, opts)` binds `null` to `options` and the\n // `options.fetch` read below throws. Use the second arg as options.\n // (Cast: the declared type excludes null, but callers can reach\n // here at runtime, e.g. an in-flight reconnect after the id clears.)\n (threadIdOrOptions as ThreadStreamOptions | null | undefined) == null\n ? {\n threadId: uuidv7(),\n options: maybeOptions as ThreadStreamOptions,\n }\n : { threadId: uuidv7(), options: threadIdOrOptions };\n\n // `transport` accepts either a preset string (`\"sse\"` / `\"websocket\"`)\n // or a custom {@link AgentServerAdapter}. A custom adapter replaces\n // the built-in factories entirely — this is the seam that lets users\n // point `useStream` at any agent server (including the thin wrappers\n // produced by `HttpAgentServerAdapter`).\n // When callers supply `fetch`, use it verbatim (tests, auth shims). Otherwise\n // route protocol HTTP and media URL fetches through AsyncCaller like REST.\n const userFetch = options.fetch;\n const protocolFetch =\n userFetch ?? this.asyncCaller.fetch.bind(this.asyncCaller);\n\n let transport: TransportAdapter;\n if (options.transport != null && typeof options.transport !== \"string\") {\n transport = options.transport;\n // Bind (or re-bind) the caller-supplied adapter to this thread so a\n // single instance can follow lazy creation (the first `submit()` on a\n // `threadId: null` controller mints the id here) and thread switches.\n // No-op for adapters that bake `threadId` at construction.\n transport.setThreadId?.(threadId);\n } else {\n const transportKind: ThreadStreamTransportKind =\n options.transport ??\n (this.streamProtocol === \"v2-websocket\" ? \"websocket\" : \"sse\");\n const maxReconnectAttempts =\n options.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n /**\n * Common options for both transports.\n */\n const commonOpts = {\n apiUrl: this.apiUrl,\n threadId,\n defaultHeaders: this.defaultHeaders,\n onRequest: this.onRequest,\n maxReconnectAttempts,\n reconnectDelayMs: options.reconnectDelayMs,\n onReconnect: options.onReconnect,\n onConnected: options.onConnected,\n };\n\n transport =\n transportKind === \"websocket\"\n ? new ProtocolWebSocketTransportAdapter({\n ...commonOpts,\n webSocketFactory: options.webSocketFactory,\n })\n : new ProtocolSseTransportAdapter({\n ...commonOpts,\n idleReconnect: options.streamIdleReconnect,\n fetch: userFetch,\n asyncCaller: userFetch ? undefined : this.asyncCaller,\n });\n }\n\n return new ThreadStream<TExtensions>(transport, {\n ...options,\n fetch: protocolFetch,\n });\n }\n}\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ var UiClient = class UiClient extends require_base.BaseClient {
10
10
  }
11
11
  async getComponent(assistantId, agentName) {
12
12
  return UiClient.getOrCached(`${this.apiUrl}-${assistantId}-${agentName}`, async () => {
13
- let [url, init] = this.prepareFetchOptions(`/ui/${assistantId}`, {
13
+ let [url, init] = this.prepareFetchOptions(`/ui/${require_base.encodePathSegment(assistantId)}`, {
14
14
  headers: {
15
15
  Accept: "text/html",
16
16
  "Content-Type": "application/json"
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BaseClient"],"sources":["../../../src/client/ui-internal/index.ts"],"sourcesContent":["import { BaseClient } from \"../base.js\";\n\nexport class UiClient extends BaseClient {\n private static promiseCache: Record<string, Promise<unknown> | undefined> =\n {};\n\n private static getOrCached<T>(key: string, fn: () => Promise<T>): Promise<T> {\n if (UiClient.promiseCache[key] != null) {\n return UiClient.promiseCache[key] as Promise<T>;\n }\n\n const promise = fn();\n UiClient.promiseCache[key] = promise;\n return promise;\n }\n\n async getComponent(assistantId: string, agentName: string): Promise<string> {\n return UiClient.getOrCached(\n `${this.apiUrl}-${assistantId}-${agentName}`,\n async () => {\n // oxlint-disable-next-line prefer-const -- init is reassigned by onRequest hook\n let [url, init] = this.prepareFetchOptions(`/ui/${assistantId}`, {\n headers: {\n Accept: \"text/html\",\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n json: { name: agentName },\n });\n if (this.onRequest != null) init = await this.onRequest(url, init);\n\n const response = await this.asyncCaller.fetch(url.toString(), init);\n return response.text();\n }\n );\n }\n}\n"],"mappings":";;AAEA,IAAa,WAAb,MAAa,iBAAiBA,aAAAA,WAAW;CACvC,OAAe,eACb,EAAE;CAEJ,OAAe,YAAe,KAAa,IAAkC;AAC3E,MAAI,SAAS,aAAa,QAAQ,KAChC,QAAO,SAAS,aAAa;EAG/B,MAAM,UAAU,IAAI;AACpB,WAAS,aAAa,OAAO;AAC7B,SAAO;;CAGT,MAAM,aAAa,aAAqB,WAAoC;AAC1E,SAAO,SAAS,YACd,GAAG,KAAK,OAAO,GAAG,YAAY,GAAG,aACjC,YAAY;GAEV,IAAI,CAAC,KAAK,QAAQ,KAAK,oBAAoB,OAAO,eAAe;IAC/D,SAAS;KACP,QAAQ;KACR,gBAAgB;KACjB;IACD,QAAQ;IACR,MAAM,EAAE,MAAM,WAAW;IAC1B,CAAC;AACF,OAAI,KAAK,aAAa,KAAM,QAAO,MAAM,KAAK,UAAU,KAAK,KAAK;AAGlE,WADiB,MAAM,KAAK,YAAY,MAAM,IAAI,UAAU,EAAE,KAAK,EACnD,MAAM;IAEzB"}
1
+ {"version":3,"file":"index.cjs","names":["BaseClient","encodePathSegment"],"sources":["../../../src/client/ui-internal/index.ts"],"sourcesContent":["import { BaseClient, encodePathSegment } from \"../base.js\";\n\nexport class UiClient extends BaseClient {\n private static promiseCache: Record<string, Promise<unknown> | undefined> =\n {};\n\n private static getOrCached<T>(key: string, fn: () => Promise<T>): Promise<T> {\n if (UiClient.promiseCache[key] != null) {\n return UiClient.promiseCache[key] as Promise<T>;\n }\n\n const promise = fn();\n UiClient.promiseCache[key] = promise;\n return promise;\n }\n\n async getComponent(assistantId: string, agentName: string): Promise<string> {\n return UiClient.getOrCached(\n `${this.apiUrl}-${assistantId}-${agentName}`,\n async () => {\n // oxlint-disable-next-line prefer-const -- init is reassigned by onRequest hook\n let [url, init] = this.prepareFetchOptions(\n `/ui/${encodePathSegment(assistantId)}`,\n {\n headers: {\n Accept: \"text/html\",\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n json: { name: agentName },\n }\n );\n if (this.onRequest != null) init = await this.onRequest(url, init);\n\n const response = await this.asyncCaller.fetch(url.toString(), init);\n return response.text();\n }\n );\n }\n}\n"],"mappings":";;AAEA,IAAa,WAAb,MAAa,iBAAiBA,aAAAA,WAAW;CACvC,OAAe,eACb,EAAE;CAEJ,OAAe,YAAe,KAAa,IAAkC;AAC3E,MAAI,SAAS,aAAa,QAAQ,KAChC,QAAO,SAAS,aAAa;EAG/B,MAAM,UAAU,IAAI;AACpB,WAAS,aAAa,OAAO;AAC7B,SAAO;;CAGT,MAAM,aAAa,aAAqB,WAAoC;AAC1E,SAAO,SAAS,YACd,GAAG,KAAK,OAAO,GAAG,YAAY,GAAG,aACjC,YAAY;GAEV,IAAI,CAAC,KAAK,QAAQ,KAAK,oBACrB,OAAOC,aAAAA,kBAAkB,YAAY,IACrC;IACE,SAAS;KACP,QAAQ;KACR,gBAAgB;KACjB;IACD,QAAQ;IACR,MAAM,EAAE,MAAM,WAAW;IAC1B,CACF;AACD,OAAI,KAAK,aAAa,KAAM,QAAO,MAAM,KAAK,UAAU,KAAK,KAAK;AAGlE,WADiB,MAAM,KAAK,YAAY,MAAM,IAAI,UAAU,EAAE,KAAK,EACnD,MAAM;IAEzB"}
@@ -1,4 +1,4 @@
1
- import { BaseClient } from "../base.js";
1
+ import { BaseClient, encodePathSegment } from "../base.js";
2
2
  //#region src/client/ui-internal/index.ts
3
3
  var UiClient = class UiClient extends BaseClient {
4
4
  static promiseCache = {};
@@ -10,7 +10,7 @@ var UiClient = class UiClient extends BaseClient {
10
10
  }
11
11
  async getComponent(assistantId, agentName) {
12
12
  return UiClient.getOrCached(`${this.apiUrl}-${assistantId}-${agentName}`, async () => {
13
- let [url, init] = this.prepareFetchOptions(`/ui/${assistantId}`, {
13
+ let [url, init] = this.prepareFetchOptions(`/ui/${encodePathSegment(assistantId)}`, {
14
14
  headers: {
15
15
  Accept: "text/html",
16
16
  "Content-Type": "application/json"
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/client/ui-internal/index.ts"],"sourcesContent":["import { BaseClient } from \"../base.js\";\n\nexport class UiClient extends BaseClient {\n private static promiseCache: Record<string, Promise<unknown> | undefined> =\n {};\n\n private static getOrCached<T>(key: string, fn: () => Promise<T>): Promise<T> {\n if (UiClient.promiseCache[key] != null) {\n return UiClient.promiseCache[key] as Promise<T>;\n }\n\n const promise = fn();\n UiClient.promiseCache[key] = promise;\n return promise;\n }\n\n async getComponent(assistantId: string, agentName: string): Promise<string> {\n return UiClient.getOrCached(\n `${this.apiUrl}-${assistantId}-${agentName}`,\n async () => {\n // oxlint-disable-next-line prefer-const -- init is reassigned by onRequest hook\n let [url, init] = this.prepareFetchOptions(`/ui/${assistantId}`, {\n headers: {\n Accept: \"text/html\",\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n json: { name: agentName },\n });\n if (this.onRequest != null) init = await this.onRequest(url, init);\n\n const response = await this.asyncCaller.fetch(url.toString(), init);\n return response.text();\n }\n );\n }\n}\n"],"mappings":";;AAEA,IAAa,WAAb,MAAa,iBAAiB,WAAW;CACvC,OAAe,eACb,EAAE;CAEJ,OAAe,YAAe,KAAa,IAAkC;AAC3E,MAAI,SAAS,aAAa,QAAQ,KAChC,QAAO,SAAS,aAAa;EAG/B,MAAM,UAAU,IAAI;AACpB,WAAS,aAAa,OAAO;AAC7B,SAAO;;CAGT,MAAM,aAAa,aAAqB,WAAoC;AAC1E,SAAO,SAAS,YACd,GAAG,KAAK,OAAO,GAAG,YAAY,GAAG,aACjC,YAAY;GAEV,IAAI,CAAC,KAAK,QAAQ,KAAK,oBAAoB,OAAO,eAAe;IAC/D,SAAS;KACP,QAAQ;KACR,gBAAgB;KACjB;IACD,QAAQ;IACR,MAAM,EAAE,MAAM,WAAW;IAC1B,CAAC;AACF,OAAI,KAAK,aAAa,KAAM,QAAO,MAAM,KAAK,UAAU,KAAK,KAAK;AAGlE,WADiB,MAAM,KAAK,YAAY,MAAM,IAAI,UAAU,EAAE,KAAK,EACnD,MAAM;IAEzB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/client/ui-internal/index.ts"],"sourcesContent":["import { BaseClient, encodePathSegment } from \"../base.js\";\n\nexport class UiClient extends BaseClient {\n private static promiseCache: Record<string, Promise<unknown> | undefined> =\n {};\n\n private static getOrCached<T>(key: string, fn: () => Promise<T>): Promise<T> {\n if (UiClient.promiseCache[key] != null) {\n return UiClient.promiseCache[key] as Promise<T>;\n }\n\n const promise = fn();\n UiClient.promiseCache[key] = promise;\n return promise;\n }\n\n async getComponent(assistantId: string, agentName: string): Promise<string> {\n return UiClient.getOrCached(\n `${this.apiUrl}-${assistantId}-${agentName}`,\n async () => {\n // oxlint-disable-next-line prefer-const -- init is reassigned by onRequest hook\n let [url, init] = this.prepareFetchOptions(\n `/ui/${encodePathSegment(assistantId)}`,\n {\n headers: {\n Accept: \"text/html\",\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n json: { name: agentName },\n }\n );\n if (this.onRequest != null) init = await this.onRequest(url, init);\n\n const response = await this.asyncCaller.fetch(url.toString(), init);\n return response.text();\n }\n );\n }\n}\n"],"mappings":";;AAEA,IAAa,WAAb,MAAa,iBAAiB,WAAW;CACvC,OAAe,eACb,EAAE;CAEJ,OAAe,YAAe,KAAa,IAAkC;AAC3E,MAAI,SAAS,aAAa,QAAQ,KAChC,QAAO,SAAS,aAAa;EAG/B,MAAM,UAAU,IAAI;AACpB,WAAS,aAAa,OAAO;AAC7B,SAAO;;CAGT,MAAM,aAAa,aAAqB,WAAoC;AAC1E,SAAO,SAAS,YACd,GAAG,KAAK,OAAO,GAAG,YAAY,GAAG,aACjC,YAAY;GAEV,IAAI,CAAC,KAAK,QAAQ,KAAK,oBACrB,OAAO,kBAAkB,YAAY,IACrC;IACE,SAAS;KACP,QAAQ;KACR,gBAAgB;KACjB;IACD,QAAQ;IACR,MAAM,EAAE,MAAM,WAAW;IAC1B,CACF;AACD,OAAI,KAAK,aAAa,KAAM,QAAO,MAAM,KAAK,UAAU,KAAK,KAAK;AAGlE,WADiB,MAAM,KAAK,YAAY,MAAM,IAAI,UAAU,EAAE,KAAK,EACnD,MAAM;IAEzB"}
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Assistant, AssistantBase, AssistantGraph, AssistantVersion, AssistantsSearchResponse, Checkpoint, Config, Cron, CronCreateForThreadResponse, CronCreateResponse, DefaultValues, GraphSchema, Interrupt, Item, ListNamespaceResponse, Metadata, Run, SearchItem, SearchItemsResponse, Thread, ThreadState, ThreadStatus, ThreadTask } from "./schema.cjs";
2
2
  import { AIMessage, DefaultToolCall, FunctionMessage, HumanMessage, InferToolOutput, Message, RemoveMessage, SystemMessage, ToolCallFromTool, ToolCallState, ToolCallWithResult, ToolCallsFromTools, ToolMessage } from "./types.messages.cjs";
3
3
  import { CustomStreamEvent, DebugStreamEvent, ErrorStreamEvent, EventsStreamEvent, FeedbackStreamEvent, MessagesStreamEvent, MessagesTupleStreamEvent, MetadataStreamEvent, StreamMode, ToolProgress, ToolsStreamEvent, UpdatesStreamEvent, ValuesStreamEvent } from "./types.stream.cjs";
4
- import { Command, OnConflictBehavior, RunsInvokePayload, StreamEvent } from "./types.cjs";
4
+ import { Command, OnConflictBehavior, RunsInvokePayload, ServerRuntime, StreamEvent } from "./types.cjs";
5
5
  import { ClientConfig, RequestHook, getApiKey } from "./client/base.cjs";
6
6
  import { AssembledMessage, MessageAssembler } from "./client/stream/messages.cjs";
7
7
  import { AnyMediaHandle, AudioMedia, FileMedia, ImageMedia, MediaAssembler, MediaAssemblerCallbacks, MediaAssemblerOptions, MediaAssemblyError, MediaAssemblyErrorKind, MediaBase, MediaBlockType, VideoMedia } from "./client/stream/media.cjs";
@@ -23,4 +23,4 @@ import { UseDeepAgentStream, UseDeepAgentStreamOptions } from "./ui/stream/deep-
23
23
  import { InferBag, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentStates, InferToolCalls, ResolveStreamInterface, ResolveStreamOptions } from "./ui/stream/index.cjs";
24
24
  import { DEFAULT_MESSAGES_KEY, NAMESPACE_SEPARATOR } from "./stream/constants.cjs";
25
25
  import { StreamError } from "./ui/errors.cjs";
26
- export { type AIMessage, type AgentServerAdapter, type AnyHeadlessToolImplementation, type AnyMediaHandle, type AssembledMessage, type Assistant, type AssistantBase, type AssistantGraph, type AssistantVersion, type AssistantsSearchResponse, type AudioMedia, type BagTemplate, BaseStream, type Checkpoint, Client, type ClientConfig, type Command, type Config, type Cron, type CronCreateForThreadResponse, type CronCreateResponse, type CustomStreamEvent, DEFAULT_MESSAGES_KEY, type DebugStreamEvent, type DefaultToolCall, type DefaultValues, type ErrorStreamEvent, type EventSubscription, type EventsStreamEvent, type FeedbackStreamEvent, type FileMedia, type FlushPendingHeadlessToolInterruptsOptions, type FunctionMessage, type GraphSchema, type HeadlessToolImplementation, type HeadlessToolInterrupt, type HeadlessToolResumeCommand, type HeadlessToolResumeController, HttpAgentServerAdapter, type HttpAgentServerAdapterOptions, type HumanMessage, type ImageMedia, InferBag, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentStates, InferToolCalls, type InferToolOutput, type Interrupt, type Item, type ListNamespaceResponse, MediaAssembler, type MediaAssemblerCallbacks, type MediaAssemblerOptions, MediaAssemblyError, type MediaAssemblyErrorKind, type MediaBase, type MediaBlockType, type Message, MessageAssembler, type MessageSubscription, type MessagesStreamEvent, type MessagesTupleStreamEvent, type Metadata, type MetadataStreamEvent, NAMESPACE_SEPARATOR, type OnConflictBehavior, type OnToolCallback, ProtocolError, type ProtocolRequestHook, ProtocolSseTransportAdapter, type ProtocolSseTransportOptions, type ProtocolTransportPaths, ProtocolWebSocketTransportAdapter, type ProtocolWebSocketTransportOptions, type RemoveMessage, type RequestHook, ResolveStreamInterface, ResolveStreamOptions, type Run, type RunsInvokePayload, type SearchItem, type SearchItemsResponse, type SessionOrderingState, StateRecord, StreamError, type StreamEvent, type StreamMode, SubscriptionHandle, type SystemMessage, type Thread, type ThreadExtension, type ThreadExtensions, type ThreadState, type ThreadStatus, ThreadStream, type ThreadStreamOptions, type ThreadTask, type ToolCallFromTool, type ToolCallState, type ToolCallWithResult, type ToolCallsFromTools, type ToolEvent, type ToolMessage, type ToolProgress, type ToolsStreamEvent, type TransportAdapter, type UnwrapExtension, type UpdatesStreamEvent, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, type ValuesStreamEvent, type VideoMedia, applyHeadlessToolResumeCommand, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getApiKey, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, overrideFetchImplementation, parseHeadlessToolInterruptPayload, scheduleCoalescedHeadlessToolFlush };
26
+ export { type AIMessage, type AgentServerAdapter, type AnyHeadlessToolImplementation, type AnyMediaHandle, type AssembledMessage, type Assistant, type AssistantBase, type AssistantGraph, type AssistantVersion, type AssistantsSearchResponse, type AudioMedia, type BagTemplate, BaseStream, type Checkpoint, Client, type ClientConfig, type Command, type Config, type Cron, type CronCreateForThreadResponse, type CronCreateResponse, type CustomStreamEvent, DEFAULT_MESSAGES_KEY, type DebugStreamEvent, type DefaultToolCall, type DefaultValues, type ErrorStreamEvent, type EventSubscription, type EventsStreamEvent, type FeedbackStreamEvent, type FileMedia, type FlushPendingHeadlessToolInterruptsOptions, type FunctionMessage, type GraphSchema, type HeadlessToolImplementation, type HeadlessToolInterrupt, type HeadlessToolResumeCommand, type HeadlessToolResumeController, HttpAgentServerAdapter, type HttpAgentServerAdapterOptions, type HumanMessage, type ImageMedia, InferBag, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentStates, InferToolCalls, type InferToolOutput, type Interrupt, type Item, type ListNamespaceResponse, MediaAssembler, type MediaAssemblerCallbacks, type MediaAssemblerOptions, MediaAssemblyError, type MediaAssemblyErrorKind, type MediaBase, type MediaBlockType, type Message, MessageAssembler, type MessageSubscription, type MessagesStreamEvent, type MessagesTupleStreamEvent, type Metadata, type MetadataStreamEvent, NAMESPACE_SEPARATOR, type OnConflictBehavior, type OnToolCallback, ProtocolError, type ProtocolRequestHook, ProtocolSseTransportAdapter, type ProtocolSseTransportOptions, type ProtocolTransportPaths, ProtocolWebSocketTransportAdapter, type ProtocolWebSocketTransportOptions, type RemoveMessage, type RequestHook, ResolveStreamInterface, ResolveStreamOptions, type Run, type RunsInvokePayload, type SearchItem, type SearchItemsResponse, type ServerRuntime, type SessionOrderingState, StateRecord, StreamError, type StreamEvent, type StreamMode, SubscriptionHandle, type SystemMessage, type Thread, type ThreadExtension, type ThreadExtensions, type ThreadState, type ThreadStatus, ThreadStream, type ThreadStreamOptions, type ThreadTask, type ToolCallFromTool, type ToolCallState, type ToolCallWithResult, type ToolCallsFromTools, type ToolEvent, type ToolMessage, type ToolProgress, type ToolsStreamEvent, type TransportAdapter, type UnwrapExtension, type UpdatesStreamEvent, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, type ValuesStreamEvent, type VideoMedia, applyHeadlessToolResumeCommand, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getApiKey, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, overrideFetchImplementation, parseHeadlessToolInterruptPayload, scheduleCoalescedHeadlessToolFlush };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Assistant, AssistantBase, AssistantGraph, AssistantVersion, AssistantsSearchResponse, Checkpoint, Config, Cron, CronCreateForThreadResponse, CronCreateResponse, DefaultValues, GraphSchema, Interrupt, Item, ListNamespaceResponse, Metadata, Run, SearchItem, SearchItemsResponse, Thread, ThreadState, ThreadStatus, ThreadTask } from "./schema.js";
2
2
  import { AIMessage, DefaultToolCall, FunctionMessage, HumanMessage, InferToolOutput, Message, RemoveMessage, SystemMessage, ToolCallFromTool, ToolCallState, ToolCallWithResult, ToolCallsFromTools, ToolMessage } from "./types.messages.js";
3
3
  import { CustomStreamEvent, DebugStreamEvent, ErrorStreamEvent, EventsStreamEvent, FeedbackStreamEvent, MessagesStreamEvent, MessagesTupleStreamEvent, MetadataStreamEvent, StreamMode, ToolProgress, ToolsStreamEvent, UpdatesStreamEvent, ValuesStreamEvent } from "./types.stream.js";
4
- import { Command, OnConflictBehavior, RunsInvokePayload, StreamEvent } from "./types.js";
4
+ import { Command, OnConflictBehavior, RunsInvokePayload, ServerRuntime, StreamEvent } from "./types.js";
5
5
  import { ClientConfig, RequestHook, getApiKey } from "./client/base.js";
6
6
  import { AssembledMessage, MessageAssembler } from "./client/stream/messages.js";
7
7
  import { AnyMediaHandle, AudioMedia, FileMedia, ImageMedia, MediaAssembler, MediaAssemblerCallbacks, MediaAssemblerOptions, MediaAssemblyError, MediaAssemblyErrorKind, MediaBase, MediaBlockType, VideoMedia } from "./client/stream/media.js";
@@ -23,4 +23,4 @@ import { UseDeepAgentStream, UseDeepAgentStreamOptions } from "./ui/stream/deep-
23
23
  import { InferBag, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentStates, InferToolCalls, ResolveStreamInterface, ResolveStreamOptions } from "./ui/stream/index.js";
24
24
  import { DEFAULT_MESSAGES_KEY, NAMESPACE_SEPARATOR } from "./stream/constants.js";
25
25
  import { StreamError } from "./ui/errors.js";
26
- export { type AIMessage, type AgentServerAdapter, type AnyHeadlessToolImplementation, type AnyMediaHandle, type AssembledMessage, type Assistant, type AssistantBase, type AssistantGraph, type AssistantVersion, type AssistantsSearchResponse, type AudioMedia, type BagTemplate, BaseStream, type Checkpoint, Client, type ClientConfig, type Command, type Config, type Cron, type CronCreateForThreadResponse, type CronCreateResponse, type CustomStreamEvent, DEFAULT_MESSAGES_KEY, type DebugStreamEvent, type DefaultToolCall, type DefaultValues, type ErrorStreamEvent, type EventSubscription, type EventsStreamEvent, type FeedbackStreamEvent, type FileMedia, type FlushPendingHeadlessToolInterruptsOptions, type FunctionMessage, type GraphSchema, type HeadlessToolImplementation, type HeadlessToolInterrupt, type HeadlessToolResumeCommand, type HeadlessToolResumeController, HttpAgentServerAdapter, type HttpAgentServerAdapterOptions, type HumanMessage, type ImageMedia, InferBag, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentStates, InferToolCalls, type InferToolOutput, type Interrupt, type Item, type ListNamespaceResponse, MediaAssembler, type MediaAssemblerCallbacks, type MediaAssemblerOptions, MediaAssemblyError, type MediaAssemblyErrorKind, type MediaBase, type MediaBlockType, type Message, MessageAssembler, type MessageSubscription, type MessagesStreamEvent, type MessagesTupleStreamEvent, type Metadata, type MetadataStreamEvent, NAMESPACE_SEPARATOR, type OnConflictBehavior, type OnToolCallback, ProtocolError, type ProtocolRequestHook, ProtocolSseTransportAdapter, type ProtocolSseTransportOptions, type ProtocolTransportPaths, ProtocolWebSocketTransportAdapter, type ProtocolWebSocketTransportOptions, type RemoveMessage, type RequestHook, ResolveStreamInterface, ResolveStreamOptions, type Run, type RunsInvokePayload, type SearchItem, type SearchItemsResponse, type SessionOrderingState, StateRecord, StreamError, type StreamEvent, type StreamMode, SubscriptionHandle, type SystemMessage, type Thread, type ThreadExtension, type ThreadExtensions, type ThreadState, type ThreadStatus, ThreadStream, type ThreadStreamOptions, type ThreadTask, type ToolCallFromTool, type ToolCallState, type ToolCallWithResult, type ToolCallsFromTools, type ToolEvent, type ToolMessage, type ToolProgress, type ToolsStreamEvent, type TransportAdapter, type UnwrapExtension, type UpdatesStreamEvent, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, type ValuesStreamEvent, type VideoMedia, applyHeadlessToolResumeCommand, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getApiKey, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, overrideFetchImplementation, parseHeadlessToolInterruptPayload, scheduleCoalescedHeadlessToolFlush };
26
+ export { type AIMessage, type AgentServerAdapter, type AnyHeadlessToolImplementation, type AnyMediaHandle, type AssembledMessage, type Assistant, type AssistantBase, type AssistantGraph, type AssistantVersion, type AssistantsSearchResponse, type AudioMedia, type BagTemplate, BaseStream, type Checkpoint, Client, type ClientConfig, type Command, type Config, type Cron, type CronCreateForThreadResponse, type CronCreateResponse, type CustomStreamEvent, DEFAULT_MESSAGES_KEY, type DebugStreamEvent, type DefaultToolCall, type DefaultValues, type ErrorStreamEvent, type EventSubscription, type EventsStreamEvent, type FeedbackStreamEvent, type FileMedia, type FlushPendingHeadlessToolInterruptsOptions, type FunctionMessage, type GraphSchema, type HeadlessToolImplementation, type HeadlessToolInterrupt, type HeadlessToolResumeCommand, type HeadlessToolResumeController, HttpAgentServerAdapter, type HttpAgentServerAdapterOptions, type HumanMessage, type ImageMedia, InferBag, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentStates, InferToolCalls, type InferToolOutput, type Interrupt, type Item, type ListNamespaceResponse, MediaAssembler, type MediaAssemblerCallbacks, type MediaAssemblerOptions, MediaAssemblyError, type MediaAssemblyErrorKind, type MediaBase, type MediaBlockType, type Message, MessageAssembler, type MessageSubscription, type MessagesStreamEvent, type MessagesTupleStreamEvent, type Metadata, type MetadataStreamEvent, NAMESPACE_SEPARATOR, type OnConflictBehavior, type OnToolCallback, ProtocolError, type ProtocolRequestHook, ProtocolSseTransportAdapter, type ProtocolSseTransportOptions, type ProtocolTransportPaths, ProtocolWebSocketTransportAdapter, type ProtocolWebSocketTransportOptions, type RemoveMessage, type RequestHook, ResolveStreamInterface, ResolveStreamOptions, type Run, type RunsInvokePayload, type SearchItem, type SearchItemsResponse, type ServerRuntime, type SessionOrderingState, StateRecord, StreamError, type StreamEvent, type StreamMode, SubscriptionHandle, type SystemMessage, type Thread, type ThreadExtension, type ThreadExtensions, type ThreadState, type ThreadStatus, ThreadStream, type ThreadStreamOptions, type ThreadTask, type ToolCallFromTool, type ToolCallState, type ToolCallWithResult, type ToolCallsFromTools, type ToolEvent, type ToolMessage, type ToolProgress, type ToolsStreamEvent, type TransportAdapter, type UnwrapExtension, type UpdatesStreamEvent, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, type ValuesStreamEvent, type VideoMedia, applyHeadlessToolResumeCommand, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getApiKey, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, overrideFetchImplementation, parseHeadlessToolInterruptPayload, scheduleCoalescedHeadlessToolFlush };
package/dist/types.d.cts CHANGED
@@ -4,6 +4,15 @@ import { StreamMode } from "./types.stream.cjs";
4
4
  import { LangChainTracer } from "@langchain/core/tracers/tracer_langchain";
5
5
 
6
6
  //#region src/types.d.ts
7
+ type ServerRuntime<Context = unknown> = {
8
+ accessContext: "threads.create_run";
9
+ executionRuntime: {
10
+ context: Context | undefined;
11
+ };
12
+ } | {
13
+ accessContext: "assistants.read" | "threads.read" | "threads.update";
14
+ executionRuntime: null;
15
+ };
7
16
  type MultitaskStrategy = "reject" | "interrupt" | "rollback" | "enqueue";
8
17
  type OnConflictBehavior = "raise" | "do_nothing";
9
18
  type OnCompletionBehavior = "complete" | "continue";
@@ -262,5 +271,5 @@ interface RunsWaitPayload extends RunsStreamPayload {
262
271
  raiseError?: boolean;
263
272
  }
264
273
  //#endregion
265
- export { Command, CronsCreatePayload, CronsUpdatePayload, DisconnectMode, Durability, MultitaskStrategy, OnCompletionBehavior, OnConflictBehavior, RunsCreatePayload, RunsInvokePayload, RunsStreamPayload, RunsWaitPayload, StreamEvent, StreamProtocol };
274
+ export { Command, CronsCreatePayload, CronsUpdatePayload, DisconnectMode, Durability, MultitaskStrategy, OnCompletionBehavior, OnConflictBehavior, RunsCreatePayload, RunsInvokePayload, RunsStreamPayload, RunsWaitPayload, ServerRuntime, StreamEvent, StreamProtocol };
266
275
  //# sourceMappingURL=types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;;KAKY,iBAAA;AAAA,KACA,kBAAA;AAAA,KACA,oBAAA;AAAA,KACA,cAAA;AAAA,KACA,UAAA;AAAA,KACA,cAAA;AAAA,KACA,WAAA;AAAA,UAYK,IAAA;EACf,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,OAAA;EArBL;;;EAyBV,MAAA,GAAS,MAAA;EAzBqB;AAChC;;EA6BE,MAAA;EA7BwB;;AAC1B;;;EAmCE,IAAA,GAAO,IAAA,GAAO,IAAA;AAAA;AAAA,UAGC,iBAAA;EArCS;;;EAyCxB,KAAA,GAAQ,MAAA;EAxCE;;;EA6CV,QAAA,GAAW,QAAA;EA7CU;AAYvB;;EAsCE,MAAA,GAAS,MAAA;EArCT;;AAIF;;EAuCE,OAAA;EAnCS;;;EAwCT,YAAA;EA5BkB;;;EAiClB,UAAA,GAAa,IAAA,CAAK,UAAA;EAjClB;;;;EAuCA,gBAAA;EApCe;;;;;;;EA6Cf,UAAA,GAAa,UAAA;EAAA;;;EAKb,eAAA;EA2Ce;;;EAtCf,cAAA;EAiEkC;;;;;;;;;;EArDlC,iBAAA,GAAoB,iBAAA;EArCF;;;EA0ClB,MAAA,GAAS,eAAA;EAtBT;;;;;;EA8BA,YAAA,GAAe,oBAAA;EAAA;;;EAKf,OAAA;EAcA;;;;;;EANA,YAAA,GAAe,cAAA;EAqBC;;;;EAfhB,YAAA;EAwBe;;;EAnBf,WAAA;EAoBiC;;;EAfjC,OAAA,GAAU,OAAA;EAiBF;;;EAZR,YAAA,IAAgB,MAAA;IAAU,MAAA;IAAgB,SAAA;EAAA;EAYlC;;;;EANR,gBAAA,GAAmB,eAAA;AAAA;AAAA,UAGJ,iBAAA,qBACK,UAAA,GAAa,UAAA,qDAEzB,iBAAA;EAmCc;;;EA/BtB,UAAA,GAAa,WAAA;EAwCE;;;EAnCf,eAAA,GAAkB,UAAA;EAuCc;;;;EAjChC,eAAA;EA6ByC;;;;;;;;;;AAwB3C;;;;;;;;EAjCE,mBAAA,GAAsB,iBAAA;EA8DtB;;;AAGF;EA3DE,YAAA;AAAA;AAAA,UAGe,iBAAA,SAA0B,iBAAA;EAwET;;;EApEhC,UAAA,GAAa,UAAA,GAAa,KAAA,CAAM,UAAA;EAoD2B;;;EA/C3D,eAAA;EA0DA;;;;EApDA,eAAA;EA8DA;;;;EAxDA,YAAA;AAAA;AAAA,UAGe,kBAAA,SAA2B,iBAAA;EAsEX;;;;EAjE/B,QAAA;;;;;EAMA,QAAA;;;;;;;EAQA,cAAA;;;;EAKA,OAAA;;;;EAKA,OAAA;AAAA;AAAA,UAGe,kBAAA,SAA2B,iBAAA;EAC1C,QAAA;;;;;EAKA,OAAA;;;;EAKA,QAAA;;;;EAKA,UAAA,GAAa,UAAA,GAAa,KAAA,CAAM,UAAA;;;;EAKhC,eAAA;;;;EAKA,eAAA;;;;;;;EAQA,cAAA;EACA,OAAA;AAAA;AAAA,UAGe,eAAA,SAAwB,iBAAA;;;;EAIvC,UAAA;AAAA"}
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;;KAKY,aAAA;EAEN,aAAA;EACA,gBAAA;IAAoB,OAAA,EAAS,OAAA;EAAA;AAAA;EAG7B,aAAA;EACA,gBAAA;AAAA;AAAA,KAGM,iBAAA;AAAA,KACA,kBAAA;AAAA,KACA,oBAAA;AAAA,KACA,cAAA;AAAA,KACA,UAAA;AAAA,KACA,cAAA;AAAA,KACA,WAAA;AAAA,UAYK,IAAA;EACf,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,OAAA;EAtBa;;;EA0B5B,MAAA,GAAS,MAAA;EAzBC;;;EA8BV,MAAA;EA9B8B;AAChC;;;;EAoCE,IAAA,GAAO,IAAA,GAAO,IAAA;AAAA;AAAA,UAGC,iBAAA;;;;EAIf,KAAA,GAAQ,MAAA;EAzCgB;;;EA8CxB,QAAA,GAAW,QAAA;EA7CD;;;EAkDV,MAAA,GAAS,MAAA;EAlDY;AAYvB;;;EA4CE,OAAA;EA1CK;AAGP;;EA4CE,YAAA;EAxCS;;;EA6CT,UAAA,GAAa,IAAA,CAAK,UAAA;EAjCA;;;;EAuClB,gBAAA;EAvCO;;;;AAGT;;;EA6CE,UAAA,GAAa,UAAA;EApCF;;;EAyCX,eAAA;EALa;;;EAUb,cAAA;EAsCe;;;;;;;;;;EA1Bf,iBAAA,GAAoB,iBAAA;EA/CpB;;;EAoDA,MAAA,GAAS,eAAA;EA1CS;;;;;;EAkDlB,YAAA,GAAe,oBAAA;EAbK;;;EAkBpB,OAAA;EALe;;;;;;EAaf,YAAA,GAAe,cAAA;EAgBL;;;;EAVV,YAAA;EAqBA;;;EAhBA,WAAA;EAmBe;;;EAdf,OAAA,GAAU,OAAA;EAeuB;;;EAVjC,YAAA,IAAgB,MAAA;IAAU,MAAA;IAAgB,SAAA;EAAA;EAU1C;;;;EAJA,gBAAA,GAAmB,eAAA;AAAA;AAAA,UAGJ,iBAAA,qBACK,UAAA,GAAa,UAAA,qDAEzB,iBAAA;EASR;;;EALA,UAAA,GAAa,WAAA;EA+BS;;;EA1BtB,eAAA,GAAkB,UAAA;EAmCH;;;;EA7Bf,eAAA;EAiC0B;;;;;;;;;;;;;;AAoB5B;;;;EAjCE,mBAAA,GAAsB,iBAAA;EAsCtB;;;;EAhCA,YAAA;AAAA;AAAA,UAGe,iBAAA,SAA0B,iBAAA;EAwD1B;;;EApDf,UAAA,GAAa,UAAA,GAAa,KAAA,CAAM,UAAA;EAoEA;;;EA/DhC,eAAA;EA+C2D;;;;EAzC3D,eAAA;EAyDA;;;;EAnDA,YAAA;AAAA;AAAA,UAGe,kBAAA,SAA2B,iBAAA;EAmE1C;;;AAGF;EAjEE,QAAA;;;;;EAMA,QAAA;;;;;;;EAQA,cAAA;;;;EAKA,OAAA;;;;EAKA,OAAA;AAAA;AAAA,UAGe,kBAAA,SAA2B,iBAAA;EAC1C,QAAA;;;;;EAKA,OAAA;;;;EAKA,QAAA;;;;EAKA,UAAA,GAAa,UAAA,GAAa,KAAA,CAAM,UAAA;;;;EAKhC,eAAA;;;;EAKA,eAAA;;;;;;;EAQA,cAAA;EACA,OAAA;AAAA;AAAA,UAGe,eAAA,SAAwB,iBAAA;;;;EAIvC,UAAA;AAAA"}