@langchain/langgraph-sdk 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @langchain/langgraph-sdk
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 379de5e: Fix tool calls arguments not being streamed to the client
8
+
9
+ ### Patch Changes
10
+
11
+ - d08e484: Add support for sending `AbortSignal` to all SDK methods
12
+ - d08e484: Fix `useStream().stop()` not cancelling creation of thread.
13
+
3
14
  ## 1.1.0
4
15
 
5
16
  ### Minor Changes
package/dist/client.cjs CHANGED
@@ -177,7 +177,8 @@ var CronsClient = class extends BaseClient {
177
177
  };
178
178
  return this.fetch(`/threads/${threadId}/runs/crons`, {
179
179
  method: "POST",
180
- json
180
+ json,
181
+ signal: payload?.signal
181
182
  });
182
183
  }
183
184
  /**
@@ -204,15 +205,19 @@ var CronsClient = class extends BaseClient {
204
205
  };
205
206
  return this.fetch(`/runs/crons`, {
206
207
  method: "POST",
207
- json
208
+ json,
209
+ signal: payload?.signal
208
210
  });
209
211
  }
210
212
  /**
211
213
  *
212
214
  * @param cronId Cron ID of Cron job to delete.
213
215
  */
214
- async delete(cronId) {
215
- await this.fetch(`/runs/crons/${cronId}`, { method: "DELETE" });
216
+ async delete(cronId, options) {
217
+ await this.fetch(`/runs/crons/${cronId}`, {
218
+ method: "DELETE",
219
+ signal: options?.signal
220
+ });
216
221
  }
217
222
  /**
218
223
  *
@@ -230,7 +235,8 @@ var CronsClient = class extends BaseClient {
230
235
  sort_by: query?.sortBy ?? void 0,
231
236
  sort_order: query?.sortOrder ?? void 0,
232
237
  select: query?.select ?? void 0
233
- }
238
+ },
239
+ signal: query?.signal
234
240
  });
235
241
  }
236
242
  /**
@@ -246,7 +252,8 @@ var CronsClient = class extends BaseClient {
246
252
  json: {
247
253
  assistant_id: query?.assistantId ?? void 0,
248
254
  thread_id: query?.threadId ?? void 0
249
- }
255
+ },
256
+ signal: query?.signal
250
257
  });
251
258
  }
252
259
  };
@@ -257,8 +264,8 @@ var AssistantsClient = class extends BaseClient {
257
264
  * @param assistantId The ID of the assistant.
258
265
  * @returns Assistant
259
266
  */
260
- async get(assistantId) {
261
- return this.fetch(`/assistants/${assistantId}`);
267
+ async get(assistantId, options) {
268
+ return this.fetch(`/assistants/${assistantId}`, { signal: options?.signal });
262
269
  }
263
270
  /**
264
271
  * Get the JSON representation of the graph assigned to a runnable
@@ -267,15 +274,18 @@ var AssistantsClient = class extends BaseClient {
267
274
  * @returns Serialized graph
268
275
  */
269
276
  async getGraph(assistantId, options) {
270
- return this.fetch(`/assistants/${assistantId}/graph`, { params: { xray: options?.xray } });
277
+ return this.fetch(`/assistants/${assistantId}/graph`, {
278
+ params: { xray: options?.xray },
279
+ signal: options?.signal
280
+ });
271
281
  }
272
282
  /**
273
283
  * Get the state and config schema of the graph assigned to a runnable
274
284
  * @param assistantId The ID of the assistant.
275
285
  * @returns Graph schema
276
286
  */
277
- async getSchemas(assistantId) {
278
- return this.fetch(`/assistants/${assistantId}/schemas`);
287
+ async getSchemas(assistantId, options) {
288
+ return this.fetch(`/assistants/${assistantId}/schemas`, { signal: options?.signal });
279
289
  }
280
290
  /**
281
291
  * Get the schemas of an assistant by ID.
@@ -285,8 +295,14 @@ var AssistantsClient = class extends BaseClient {
285
295
  * @returns The subgraphs of the assistant.
286
296
  */
287
297
  async getSubgraphs(assistantId, options) {
288
- if (options?.namespace) return this.fetch(`/assistants/${assistantId}/subgraphs/${options.namespace}`, { params: { recurse: options?.recurse } });
289
- return this.fetch(`/assistants/${assistantId}/subgraphs`, { params: { recurse: options?.recurse } });
298
+ if (options?.namespace) return this.fetch(`/assistants/${assistantId}/subgraphs/${options.namespace}`, {
299
+ params: { recurse: options?.recurse },
300
+ signal: options?.signal
301
+ });
302
+ return this.fetch(`/assistants/${assistantId}/subgraphs`, {
303
+ params: { recurse: options?.recurse },
304
+ signal: options?.signal
305
+ });
290
306
  }
291
307
  /**
292
308
  * Create a new assistant.
@@ -305,7 +321,8 @@ var AssistantsClient = class extends BaseClient {
305
321
  if_exists: payload.ifExists,
306
322
  name: payload.name,
307
323
  description: payload.description
308
- }
324
+ },
325
+ signal: payload.signal
309
326
  });
310
327
  }
311
328
  /**
@@ -324,7 +341,8 @@ var AssistantsClient = class extends BaseClient {
324
341
  metadata: payload.metadata,
325
342
  name: payload.name,
326
343
  description: payload.description
327
- }
344
+ },
345
+ signal: payload.signal
328
346
  });
329
347
  }
330
348
  /**
@@ -332,8 +350,11 @@ var AssistantsClient = class extends BaseClient {
332
350
  *
333
351
  * @param assistantId ID of the assistant.
334
352
  */
335
- async delete(assistantId) {
336
- return this.fetch(`/assistants/${assistantId}`, { method: "DELETE" });
353
+ async delete(assistantId, options) {
354
+ return this.fetch(`/assistants/${assistantId}`, {
355
+ method: "DELETE",
356
+ signal: options?.signal
357
+ });
337
358
  }
338
359
  async search(query) {
339
360
  const json = {
@@ -349,7 +370,8 @@ var AssistantsClient = class extends BaseClient {
349
370
  const [assistants, response] = await this.fetch("/assistants/search", {
350
371
  method: "POST",
351
372
  json,
352
- withResponse: true
373
+ withResponse: true,
374
+ signal: query?.signal
353
375
  });
354
376
  if (query?.includePagination) {
355
377
  const next = response.headers.get("X-Pagination-Next");
@@ -375,7 +397,8 @@ var AssistantsClient = class extends BaseClient {
375
397
  metadata: query?.metadata ?? void 0,
376
398
  graph_id: query?.graphId ?? void 0,
377
399
  name: query?.name ?? void 0
378
- }
400
+ },
401
+ signal: query?.signal
379
402
  });
380
403
  }
381
404
  /**
@@ -391,7 +414,8 @@ var AssistantsClient = class extends BaseClient {
391
414
  metadata: payload?.metadata ?? void 0,
392
415
  limit: payload?.limit ?? 10,
393
416
  offset: payload?.offset ?? 0
394
- }
417
+ },
418
+ signal: payload?.signal
395
419
  });
396
420
  }
397
421
  /**
@@ -401,10 +425,11 @@ var AssistantsClient = class extends BaseClient {
401
425
  * @param version The version to change to.
402
426
  * @returns The updated assistant.
403
427
  */
404
- async setLatest(assistantId, version) {
428
+ async setLatest(assistantId, version, options) {
405
429
  return this.fetch(`/assistants/${assistantId}/latest`, {
406
430
  method: "POST",
407
- json: { version }
431
+ json: { version },
432
+ signal: options?.signal
408
433
  });
409
434
  }
410
435
  };
@@ -415,8 +440,8 @@ var ThreadsClient = class extends BaseClient {
415
440
  * @param threadId ID of the thread.
416
441
  * @returns The thread.
417
442
  */
418
- async get(threadId) {
419
- return this.fetch(`/threads/${threadId}`);
443
+ async get(threadId, options) {
444
+ return this.fetch(`/threads/${threadId}`, { signal: options?.signal });
420
445
  }
421
446
  /**
422
447
  * Create a new thread.
@@ -444,7 +469,8 @@ var ThreadsClient = class extends BaseClient {
444
469
  as_node: u.asNode
445
470
  })) })),
446
471
  ttl: ttlPayload
447
- }
472
+ },
473
+ signal: payload?.signal
448
474
  });
449
475
  }
450
476
  /**
@@ -452,8 +478,11 @@ var ThreadsClient = class extends BaseClient {
452
478
  * @param threadId ID of the thread to be copied
453
479
  * @returns Newly copied thread
454
480
  */
455
- async copy(threadId) {
456
- return this.fetch(`/threads/${threadId}/copy`, { method: "POST" });
481
+ async copy(threadId, options) {
482
+ return this.fetch(`/threads/${threadId}/copy`, {
483
+ method: "POST",
484
+ signal: options?.signal
485
+ });
457
486
  }
458
487
  /**
459
488
  * Update a thread.
@@ -472,7 +501,8 @@ var ThreadsClient = class extends BaseClient {
472
501
  json: {
473
502
  metadata: payload?.metadata,
474
503
  ttl: ttlPayload
475
- }
504
+ },
505
+ signal: payload?.signal
476
506
  });
477
507
  }
478
508
  /**
@@ -480,8 +510,11 @@ var ThreadsClient = class extends BaseClient {
480
510
  *
481
511
  * @param threadId ID of the thread.
482
512
  */
483
- async delete(threadId) {
484
- return this.fetch(`/threads/${threadId}`, { method: "DELETE" });
513
+ async delete(threadId, options) {
514
+ return this.fetch(`/threads/${threadId}`, {
515
+ method: "DELETE",
516
+ signal: options?.signal
517
+ });
485
518
  }
486
519
  /**
487
520
  * List threads
@@ -502,7 +535,8 @@ var ThreadsClient = class extends BaseClient {
502
535
  sort_order: query?.sortOrder,
503
536
  select: query?.select ?? void 0,
504
537
  values: query?.values ?? void 0
505
- }
538
+ },
539
+ signal: query?.signal
506
540
  });
507
541
  }
508
542
  /**
@@ -520,7 +554,8 @@ var ThreadsClient = class extends BaseClient {
520
554
  metadata: query?.metadata ?? void 0,
521
555
  values: query?.values ?? void 0,
522
556
  status: query?.status ?? void 0
523
- }
557
+ },
558
+ signal: query?.signal
524
559
  });
525
560
  }
526
561
  /**
@@ -536,11 +571,18 @@ var ThreadsClient = class extends BaseClient {
536
571
  json: {
537
572
  checkpoint,
538
573
  subgraphs: options?.subgraphs
539
- }
574
+ },
575
+ signal: options?.signal
576
+ });
577
+ return this.fetch(`/threads/${threadId}/state/${checkpoint}`, {
578
+ params: { subgraphs: options?.subgraphs },
579
+ signal: options?.signal
540
580
  });
541
- return this.fetch(`/threads/${threadId}/state/${checkpoint}`, { params: { subgraphs: options?.subgraphs } });
542
581
  }
543
- return this.fetch(`/threads/${threadId}/state`, { params: { subgraphs: options?.subgraphs } });
582
+ return this.fetch(`/threads/${threadId}/state`, {
583
+ params: { subgraphs: options?.subgraphs },
584
+ signal: options?.signal
585
+ });
544
586
  }
545
587
  /**
546
588
  * Add state to a thread.
@@ -556,7 +598,8 @@ var ThreadsClient = class extends BaseClient {
556
598
  checkpoint_id: options.checkpointId,
557
599
  checkpoint: options.checkpoint,
558
600
  as_node: options?.asNode
559
- }
601
+ },
602
+ signal: options?.signal
560
603
  });
561
604
  }
562
605
  /**
@@ -565,7 +608,7 @@ var ThreadsClient = class extends BaseClient {
565
608
  * @param threadIdOrConfig Thread ID or config to patch the state of.
566
609
  * @param metadata Metadata to patch the state with.
567
610
  */
568
- async patchState(threadIdOrConfig, metadata) {
611
+ async patchState(threadIdOrConfig, metadata, options) {
569
612
  let threadId;
570
613
  if (typeof threadIdOrConfig !== "string") {
571
614
  if (typeof threadIdOrConfig.configurable?.thread_id !== "string") throw new Error("Thread ID is required when updating state with a config.");
@@ -573,7 +616,8 @@ var ThreadsClient = class extends BaseClient {
573
616
  } else threadId = threadIdOrConfig;
574
617
  return this.fetch(`/threads/${threadId}/state`, {
575
618
  method: "PATCH",
576
- json: { metadata }
619
+ json: { metadata },
620
+ signal: options?.signal
577
621
  });
578
622
  }
579
623
  /**
@@ -591,14 +635,16 @@ var ThreadsClient = class extends BaseClient {
591
635
  before: options?.before,
592
636
  metadata: options?.metadata,
593
637
  checkpoint: options?.checkpoint
594
- }
638
+ },
639
+ signal: options?.signal
595
640
  });
596
641
  }
597
642
  async *joinStream(threadId, options) {
598
643
  let [url, init] = this.prepareFetchOptions(`/threads/${threadId}/stream`, {
599
644
  method: "GET",
600
645
  headers: options?.lastEventId ? { "Last-Event-ID": options.lastEventId } : void 0,
601
- params: options?.streamMode ? { stream_mode: options.streamMode } : void 0
646
+ params: options?.streamMode ? { stream_mode: options.streamMode } : void 0,
647
+ signal: options?.signal
602
648
  });
603
649
  if (this.onRequest != null) init = await this.onRequest(url, init);
604
650
  const response = await this.asyncCaller.fetch(url, init);
@@ -704,7 +750,7 @@ var RunsClient = class extends BaseClient {
704
750
  * @param payloads An array of payloads for creating runs.
705
751
  * @returns An array of created runs.
706
752
  */
707
- async createBatch(payloads) {
753
+ async createBatch(payloads, options) {
708
754
  const filteredPayloads = payloads.map((payload) => ({
709
755
  ...payload,
710
756
  assistant_id: payload.assistantId
@@ -713,7 +759,8 @@ var RunsClient = class extends BaseClient {
713
759
  });
714
760
  return this.fetch("/runs/batch", {
715
761
  method: "POST",
716
- json: filteredPayloads
762
+ json: filteredPayloads,
763
+ signal: options?.signal
717
764
  });
718
765
  }
719
766
  /**
@@ -771,12 +818,15 @@ var RunsClient = class extends BaseClient {
771
818
  * @returns List of runs.
772
819
  */
773
820
  async list(threadId, options) {
774
- return this.fetch(`/threads/${threadId}/runs`, { params: {
775
- limit: options?.limit ?? 10,
776
- offset: options?.offset ?? 0,
777
- status: options?.status ?? void 0,
778
- select: options?.select ?? void 0
779
- } });
821
+ return this.fetch(`/threads/${threadId}/runs`, {
822
+ params: {
823
+ limit: options?.limit ?? 10,
824
+ offset: options?.offset ?? 0,
825
+ status: options?.status ?? void 0,
826
+ select: options?.select ?? void 0
827
+ },
828
+ signal: options?.signal
829
+ });
780
830
  }
781
831
  /**
782
832
  * Get a run by ID.
@@ -785,8 +835,8 @@ var RunsClient = class extends BaseClient {
785
835
  * @param runId The ID of the run.
786
836
  * @returns The run.
787
837
  */
788
- async get(threadId, runId) {
789
- return this.fetch(`/threads/${threadId}/runs/${runId}`);
838
+ async get(threadId, runId, options) {
839
+ return this.fetch(`/threads/${threadId}/runs/${runId}`, { signal: options?.signal });
790
840
  }
791
841
  /**
792
842
  * Cancel a run.
@@ -797,13 +847,14 @@ var RunsClient = class extends BaseClient {
797
847
  * @param action Action to take when cancelling the run. Possible values are `interrupt` or `rollback`. Default is `interrupt`.
798
848
  * @returns
799
849
  */
800
- async cancel(threadId, runId, wait = false, action = "interrupt") {
850
+ async cancel(threadId, runId, wait = false, action = "interrupt", options = {}) {
801
851
  return this.fetch(`/threads/${threadId}/runs/${runId}/cancel`, {
802
852
  method: "POST",
803
853
  params: {
804
854
  wait: wait ? "1" : "0",
805
855
  action
806
- }
856
+ },
857
+ signal: options?.signal
807
858
  });
808
859
  }
809
860
  /**
@@ -857,8 +908,11 @@ var RunsClient = class extends BaseClient {
857
908
  * @param runId The ID of the run.
858
909
  * @returns
859
910
  */
860
- async delete(threadId, runId) {
861
- return this.fetch(`/threads/${threadId}/runs/${runId}`, { method: "DELETE" });
911
+ async delete(threadId, runId, options) {
912
+ return this.fetch(`/threads/${threadId}/runs/${runId}`, {
913
+ method: "DELETE",
914
+ signal: options?.signal
915
+ });
862
916
  }
863
917
  };
864
918
  var StoreClient = class extends BaseClient {
@@ -895,7 +949,8 @@ var StoreClient = class extends BaseClient {
895
949
  };
896
950
  return this.fetch("/store/items", {
897
951
  method: "PUT",
898
- json: payload
952
+ json: payload,
953
+ signal: options?.signal
899
954
  });
900
955
  }
901
956
  /**
@@ -932,7 +987,10 @@ var StoreClient = class extends BaseClient {
932
987
  key
933
988
  };
934
989
  if (options?.refreshTtl !== void 0) params.refresh_ttl = options.refreshTtl;
935
- const response = await this.fetch("/store/items", { params });
990
+ const response = await this.fetch("/store/items", {
991
+ params,
992
+ signal: options?.signal
993
+ });
936
994
  return response ? {
937
995
  ...response,
938
996
  createdAt: response.created_at,
@@ -946,7 +1004,7 @@ var StoreClient = class extends BaseClient {
946
1004
  * @param key The unique identifier for the item.
947
1005
  * @returns Promise<void>
948
1006
  */
949
- async deleteItem(namespace, key) {
1007
+ async deleteItem(namespace, key, options) {
950
1008
  namespace.forEach((label) => {
951
1009
  if (label.includes(".")) throw new Error(`Invalid namespace label '${label}'. Namespace labels cannot contain periods ('.')`);
952
1010
  });
@@ -955,7 +1013,8 @@ var StoreClient = class extends BaseClient {
955
1013
  json: {
956
1014
  namespace,
957
1015
  key
958
- }
1016
+ },
1017
+ signal: options?.signal
959
1018
  });
960
1019
  }
961
1020
  /**
@@ -1005,7 +1064,8 @@ var StoreClient = class extends BaseClient {
1005
1064
  };
1006
1065
  const response = await this.fetch("/store/items/search", {
1007
1066
  method: "POST",
1008
- json: payload
1067
+ json: payload,
1068
+ signal: options?.signal
1009
1069
  });
1010
1070
  return { items: response.items.map((item) => ({
1011
1071
  ...item,
@@ -1033,7 +1093,8 @@ var StoreClient = class extends BaseClient {
1033
1093
  };
1034
1094
  return this.fetch("/store/namespaces", {
1035
1095
  method: "POST",
1036
- json: payload
1096
+ json: payload,
1097
+ signal: options?.signal
1037
1098
  });
1038
1099
  }
1039
1100
  };