@langchain/langgraph-sdk 1.9.9 → 1.9.11

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 (51) hide show
  1. package/dist/client/stream/index.cjs +37 -5
  2. package/dist/client/stream/index.cjs.map +1 -1
  3. package/dist/client/stream/index.d.cts +7 -14
  4. package/dist/client/stream/index.d.cts.map +1 -1
  5. package/dist/client/stream/index.d.ts +7 -14
  6. package/dist/client/stream/index.d.ts.map +1 -1
  7. package/dist/client/stream/index.js +37 -5
  8. package/dist/client/stream/index.js.map +1 -1
  9. package/dist/client/stream/types.d.cts +8 -3
  10. package/dist/client/stream/types.d.cts.map +1 -1
  11. package/dist/client/stream/types.d.ts +8 -3
  12. package/dist/client/stream/types.d.ts.map +1 -1
  13. package/dist/headless-tools.cjs +0 -24
  14. package/dist/headless-tools.cjs.map +1 -1
  15. package/dist/headless-tools.d.cts.map +1 -1
  16. package/dist/headless-tools.d.ts.map +1 -1
  17. package/dist/headless-tools.js +1 -24
  18. package/dist/headless-tools.js.map +1 -1
  19. package/dist/stream/controller.cjs +156 -19
  20. package/dist/stream/controller.cjs.map +1 -1
  21. package/dist/stream/controller.d.cts +113 -10
  22. package/dist/stream/controller.d.cts.map +1 -1
  23. package/dist/stream/controller.d.ts +113 -10
  24. package/dist/stream/controller.d.ts.map +1 -1
  25. package/dist/stream/controller.js +157 -20
  26. package/dist/stream/controller.js.map +1 -1
  27. package/dist/stream/index.d.cts +2 -2
  28. package/dist/stream/index.d.ts +2 -2
  29. package/dist/stream/message-metadata-tracker.cjs +1 -1
  30. package/dist/stream/message-metadata-tracker.cjs.map +1 -1
  31. package/dist/stream/message-metadata-tracker.d.cts +1 -1
  32. package/dist/stream/message-metadata-tracker.d.ts +1 -1
  33. package/dist/stream/message-metadata-tracker.js +1 -1
  34. package/dist/stream/message-metadata-tracker.js.map +1 -1
  35. package/dist/stream/submit-coordinator.cjs +45 -79
  36. package/dist/stream/submit-coordinator.cjs.map +1 -1
  37. package/dist/stream/submit-coordinator.d.cts.map +1 -1
  38. package/dist/stream/submit-coordinator.d.ts.map +1 -1
  39. package/dist/stream/submit-coordinator.js +45 -79
  40. package/dist/stream/submit-coordinator.js.map +1 -1
  41. package/dist/stream/types.d.cts +52 -30
  42. package/dist/stream/types.d.cts.map +1 -1
  43. package/dist/stream/types.d.ts +52 -30
  44. package/dist/stream/types.d.ts.map +1 -1
  45. package/dist/ui/manager.cjs +47 -34
  46. package/dist/ui/manager.cjs.map +1 -1
  47. package/dist/ui/manager.d.cts.map +1 -1
  48. package/dist/ui/manager.d.ts.map +1 -1
  49. package/dist/ui/manager.js +47 -34
  50. package/dist/ui/manager.js.map +1 -1
  51. package/package.json +3 -3
@@ -150,6 +150,37 @@ function normalizeSubscribeParams(paramsOrChannels, options = {}) {
150
150
  };
151
151
  }
152
152
  /**
153
+ * Fold the ergonomic top-level `forkFrom` checkpoint id into
154
+ * `config.configurable.checkpoint_id` and strip `forkFrom` from the
155
+ * outgoing params.
156
+ *
157
+ * `forkFrom` is purely an SDK-side convenience: callers say
158
+ * `submit(input, { forkFrom })` instead of hand-building a nested
159
+ * RunnableConfig. The agent server only ever accepts the fork target via
160
+ * `config.configurable.checkpoint_id` (the same field the legacy run
161
+ * endpoints use), so we translate here — before the `run.start` message
162
+ * hits the wire — keeping a single, legacy-compliant way to provide it.
163
+ *
164
+ * `forkFrom` takes precedence over any `checkpoint_id` the caller already
165
+ * placed in `config.configurable`, matching the prior server-side merge.
166
+ */
167
+ function foldForkFromIntoConfig(params) {
168
+ const { forkFrom, ...rest } = params;
169
+ if (typeof forkFrom !== "string" || forkFrom.length === 0) return rest;
170
+ const config = rest.config != null && typeof rest.config === "object" ? rest.config : {};
171
+ const configurable = config.configurable != null && typeof config.configurable === "object" ? config.configurable : {};
172
+ return {
173
+ ...rest,
174
+ config: {
175
+ ...config,
176
+ configurable: {
177
+ ...configurable,
178
+ checkpoint_id: forkFrom
179
+ }
180
+ }
181
+ };
182
+ }
183
+ /**
153
184
  * Async iterable handle for raw event subscriptions.
154
185
  *
155
186
  * An optional `transform` maps each incoming event before it is queued
@@ -383,7 +414,7 @@ var ThreadStream = class {
383
414
  this.#ensureLifecycleTracking();
384
415
  this.values;
385
416
  return this.#send("run.start", {
386
- ...params,
417
+ ...foldForkFromIntoConfig(params),
387
418
  assistant_id: this.assistantId
388
419
  });
389
420
  });
@@ -485,8 +516,8 @@ var ThreadStream = class {
485
516
  #prepareForNextRun(respondedInterruptId) {
486
517
  this.interrupted = false;
487
518
  if (respondedInterruptId != null) {
488
- const index = this.interrupts.findIndex((entry) => entry.interruptId === respondedInterruptId);
489
- if (index >= 0) this.interrupts.splice(index, 1);
519
+ const respondedIds = new Set(Array.isArray(respondedInterruptId) ? respondedInterruptId : [respondedInterruptId]);
520
+ for (let index = this.interrupts.length - 1; index >= 0; index -= 1) if (respondedIds.has(this.interrupts[index].interruptId)) this.interrupts.splice(index, 1);
490
521
  } else this.interrupts.length = 0;
491
522
  if (this.#terminalPauseTimer != null) {
492
523
  clearTimeout(this.#terminalPauseTimer);
@@ -826,7 +857,7 @@ var ThreadStream = class {
826
857
  return await this.#withRunStartGate(() => {
827
858
  this.#startLifecycleWatcher();
828
859
  return this.#send("run.start", {
829
- ...params,
860
+ ...foldForkFromIntoConfig(params),
830
861
  assistant_id: this.assistantId
831
862
  });
832
863
  });
@@ -837,7 +868,8 @@ var ThreadStream = class {
837
868
  * {@link input.respond}.
838
869
  */
839
870
  async respondInput(params) {
840
- this.#prepareForNextRun(params.interrupt_id);
871
+ const respondedIds = "responses" in params ? params.responses.map((entry) => entry.interrupt_id) : params.interrupt_id;
872
+ this.#prepareForNextRun(respondedIds);
841
873
  this.#startLifecycleWatcher();
842
874
  await this.#send("input.respond", params);
843
875
  }