@trigger.dev/sdk 0.0.0-prerelease-20260908122921 → 0.0.0-prerelease-20260909071038

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 (76) hide show
  1. package/dist/commonjs/v3/ai-shared.d.ts +15 -0
  2. package/dist/commonjs/v3/ai-shared.js +35 -1
  3. package/dist/commonjs/v3/ai-shared.js.map +1 -1
  4. package/dist/commonjs/v3/ai.d.ts +76 -9
  5. package/dist/commonjs/v3/ai.js +316 -222
  6. package/dist/commonjs/v3/ai.js.map +1 -1
  7. package/dist/commonjs/v3/chat-client.d.ts +8 -0
  8. package/dist/commonjs/v3/chat-client.js +199 -109
  9. package/dist/commonjs/v3/chat-client.js.map +1 -1
  10. package/dist/commonjs/v3/chat-react.d.ts +54 -0
  11. package/dist/commonjs/v3/chat-react.js +83 -0
  12. package/dist/commonjs/v3/chat-react.js.map +1 -1
  13. package/dist/commonjs/v3/chat.d.ts +11 -0
  14. package/dist/commonjs/v3/chat.js +36 -27
  15. package/dist/commonjs/v3/chat.js.map +1 -1
  16. package/dist/commonjs/v3/chatSnapshotIo.d.ts +2 -0
  17. package/dist/commonjs/v3/chatSnapshotIo.js +174 -0
  18. package/dist/commonjs/v3/chatSnapshotIo.js.map +1 -0
  19. package/dist/commonjs/v3/test/index.d.ts +1 -0
  20. package/dist/commonjs/v3/test/index.js +3 -1
  21. package/dist/commonjs/v3/test/index.js.map +1 -1
  22. package/dist/commonjs/v3/test/mock-chat-agent.d.ts +4 -4
  23. package/dist/commonjs/v3/test/mock-chat-agent.js +25 -4
  24. package/dist/commonjs/v3/test/mock-chat-agent.js.map +1 -1
  25. package/dist/commonjs/v3/test/transcript-storage-tests.d.ts +40 -0
  26. package/dist/commonjs/v3/test/transcript-storage-tests.js +258 -0
  27. package/dist/commonjs/v3/test/transcript-storage-tests.js.map +1 -0
  28. package/dist/commonjs/v3/transcriptStorage.d.ts +229 -0
  29. package/dist/commonjs/v3/transcriptStorage.js +321 -0
  30. package/dist/commonjs/v3/transcriptStorage.js.map +1 -0
  31. package/dist/commonjs/version.js +1 -1
  32. package/dist/esm/v3/ai-shared.d.ts +15 -0
  33. package/dist/esm/v3/ai-shared.js +33 -0
  34. package/dist/esm/v3/ai-shared.js.map +1 -1
  35. package/dist/esm/v3/ai.d.ts +76 -9
  36. package/dist/esm/v3/ai.js +306 -217
  37. package/dist/esm/v3/ai.js.map +1 -1
  38. package/dist/esm/v3/chat-client.d.ts +8 -0
  39. package/dist/esm/v3/chat-client.js +200 -110
  40. package/dist/esm/v3/chat-client.js.map +1 -1
  41. package/dist/esm/v3/chat-react.d.ts +54 -0
  42. package/dist/esm/v3/chat-react.js +81 -0
  43. package/dist/esm/v3/chat-react.js.map +1 -1
  44. package/dist/esm/v3/chat.d.ts +11 -0
  45. package/dist/esm/v3/chat.js +36 -27
  46. package/dist/esm/v3/chat.js.map +1 -1
  47. package/dist/esm/v3/chatSnapshotIo.d.ts +2 -0
  48. package/dist/esm/v3/chatSnapshotIo.js +166 -0
  49. package/dist/esm/v3/chatSnapshotIo.js.map +1 -0
  50. package/dist/esm/v3/test/index.d.ts +1 -0
  51. package/dist/esm/v3/test/index.js +1 -0
  52. package/dist/esm/v3/test/index.js.map +1 -1
  53. package/dist/esm/v3/test/mock-chat-agent.d.ts +4 -4
  54. package/dist/esm/v3/test/mock-chat-agent.js +25 -4
  55. package/dist/esm/v3/test/mock-chat-agent.js.map +1 -1
  56. package/dist/esm/v3/test/transcript-storage-tests.d.ts +40 -0
  57. package/dist/esm/v3/test/transcript-storage-tests.js +255 -0
  58. package/dist/esm/v3/test/transcript-storage-tests.js.map +1 -0
  59. package/dist/esm/v3/transcriptStorage.d.ts +229 -0
  60. package/dist/esm/v3/transcriptStorage.js +309 -0
  61. package/dist/esm/v3/transcriptStorage.js.map +1 -0
  62. package/dist/esm/version.js +1 -1
  63. package/docs/ai-chat/actions.mdx +2 -2
  64. package/docs/ai-chat/background-injection.mdx +2 -0
  65. package/docs/ai-chat/compaction.mdx +2 -0
  66. package/docs/ai-chat/frontend.mdx +2 -0
  67. package/docs/ai-chat/lifecycle-hooks.mdx +6 -2
  68. package/docs/ai-chat/patterns/database-persistence.mdx +6 -2
  69. package/docs/ai-chat/patterns/persistence-and-replay.mdx +34 -23
  70. package/docs/ai-chat/reference.mdx +56 -5
  71. package/docs/ai-chat/transcript-storage.mdx +233 -0
  72. package/docs/config/extensions/syncEnvVars.mdx +6 -0
  73. package/docs/deploy-environment-variables.mdx +23 -2
  74. package/package.json +2 -2
  75. package/skills/trigger-authoring-chat-agent/SKILL.md +3 -2
  76. package/skills/trigger-chat-agent-advanced/SKILL.md +5 -5
@@ -181,6 +181,14 @@ export declare class AgentChat<TAgent = unknown> {
181
181
  private readonly baseURLResolver;
182
182
  private readonly fetchOverride;
183
183
  private state;
184
+ /**
185
+ * Which subscription armed `skipToTurnComplete`, so only that stream ends at
186
+ * the gated boundary. A later stream reads the same boundary as stale history
187
+ * and keeps reading to its own turn. Deliberately not in `state`: a stop does
188
+ * not outlive the process that issued it.
189
+ */
190
+ private streamSeq;
191
+ private stoppedStreamId;
184
192
  constructor(options: AgentChatOptions<TAgent>);
185
193
  /** The conversation ID. */
186
194
  get id(): string;
@@ -19,7 +19,7 @@
19
19
  // build can `require` ESM-only `ai@7` (see ../imports/ai-runtime.ts).
20
20
  import { readUIMessageStream } from "../imports/ai-runtime.js";
21
21
  import { apiClientManager, controlSubtype, SSEStreamSubscription, TRIGGER_CONTROL_SUBTYPE, } from "@trigger.dev/core/v3";
22
- import { chatRunTags, slimSubmitMessageForWire } from "./ai-shared.js";
22
+ import { chatRunTags, MAX_EOF_RESUBSCRIBES, slimSubmitMessageForWire, waitBeforeEofResubscribe, } from "./ai-shared.js";
23
23
  import { sessions } from "./sessions.js";
24
24
  /**
25
25
  * A single turn's response stream from an agent.
@@ -164,6 +164,14 @@ export class AgentChat {
164
164
  baseURLResolver;
165
165
  fetchOverride;
166
166
  state;
167
+ /**
168
+ * Which subscription armed `skipToTurnComplete`, so only that stream ends at
169
+ * the gated boundary. A later stream reads the same boundary as stale history
170
+ * and keeps reading to its own turn. Deliberately not in `state`: a stop does
171
+ * not outlive the process that issued it.
172
+ */
173
+ streamSeq = 0;
174
+ stoppedStreamId;
167
175
  constructor(options) {
168
176
  this.taskId = options.agent;
169
177
  this.chatId = options.id ?? crypto.randomUUID();
@@ -252,7 +260,7 @@ export class AgentChat {
252
260
  metadata: this.clientData,
253
261
  };
254
262
  await this.appendInputChunk(serializeInputChunk({ kind: "message", payload }));
255
- return this.subscribeToSessionStream(options?.abortSignal);
263
+ return this.subscribeToSessionStream(options?.abortSignal, { resumeAfterEof: true });
256
264
  }
257
265
  /** Send a steering message during an active stream. */
258
266
  async steer(text) {
@@ -281,6 +289,7 @@ export class AgentChat {
281
289
  if (!this.state.started)
282
290
  return;
283
291
  this.state.skipToTurnComplete = true;
292
+ this.stoppedStreamId = this.streamSeq;
284
293
  await this.appendInputChunk(serializeInputChunk({ kind: "stop" })).catch(() => { });
285
294
  }
286
295
  /**
@@ -353,7 +362,9 @@ export class AgentChat {
353
362
  catch {
354
363
  throw new Error("Failed to send action. The session may have ended.");
355
364
  }
356
- const rawStream = this.subscribeToSessionStream(options?.abortSignal);
365
+ const rawStream = this.subscribeToSessionStream(options?.abortSignal, {
366
+ resumeAfterEof: true,
367
+ });
357
368
  return new ChatStream(rawStream);
358
369
  }
359
370
  /** Close the conversation — agent exits its loop gracefully. */
@@ -500,6 +511,12 @@ export class AgentChat {
500
511
  }
501
512
  subscribeToSessionStream(abortSignal, options) {
502
513
  const state = this.state;
514
+ const streamId = ++this.streamSeq;
515
+ // A stop was outstanding when I subscribed and it isn't mine: my window
516
+ // replays the stopped turn's tail, so I drop records up to and including
517
+ // its boundary. Captured per subscription — the stopped stream is still
518
+ // live and may consume the shared seed before I reach that record.
519
+ let skipStaleBoundary = state.skipToTurnComplete === true && this.stoppedStreamId !== streamId;
503
520
  const accessToken = apiClientManager.accessToken ?? "";
504
521
  const onTurnComplete = this.onTurnComplete;
505
522
  const chatId = this.chatId;
@@ -527,135 +544,208 @@ export class AgentChat {
527
544
  const combinedSignal = abortSignal
528
545
  ? AbortSignal.any([abortSignal, internalAbort.signal])
529
546
  : internalAbort.signal;
530
- if (abortSignal) {
531
- abortSignal.addEventListener("abort", () => {
532
- if (options?.sendStopOnAbort !== false) {
533
- state.skipToTurnComplete = true;
534
- this.appendInputChunk(serializeInputChunk({ kind: "stop" })).catch(() => { });
535
- }
536
- internalAbort.abort();
537
- }, { once: true });
538
- }
547
+ // Detached once the stream ends (see the `finally` below): a caller reusing
548
+ // one signal across turns would otherwise stack listeners, and a late abort
549
+ // would post a stop that gates the next turn.
550
+ const onExternalAbort = () => {
551
+ if (options?.sendStopOnAbort !== false) {
552
+ state.skipToTurnComplete = true;
553
+ this.stoppedStreamId = streamId;
554
+ this.appendInputChunk(serializeInputChunk({ kind: "stop" })).catch(() => { });
555
+ }
556
+ internalAbort.abort();
557
+ };
558
+ abortSignal?.addEventListener("abort", onExternalAbort, { once: true });
539
559
  const streamUrl = `${this.resolveBaseURL("out")}/realtime/v1/sessions/${encodeURIComponent(chatId)}/out`;
540
560
  return new ReadableStream({
541
561
  start: async (controller) => {
542
- try {
543
- const subscription = new SSEStreamSubscription(streamUrl, {
544
- headers: {
545
- Authorization: `Bearer ${accessToken}`,
546
- // Preview-env sessions are branch-scoped (see appendInputChunk).
547
- ...(apiClientManager.branchName
548
- ? { "x-trigger-branch": apiClientManager.branchName }
549
- : {}),
550
- ...(options?.peekSettled ? { "X-Peek-Settled": "1" } : {}),
551
- },
552
- signal: combinedSignal,
553
- timeoutInSeconds: this.streamTimeoutSeconds,
554
- lastEventId: state.lastEventId,
555
- fetchClient: sseFetchClient,
556
- });
557
- const sseStream = await subscription.subscribe();
558
- const reader = sseStream.getReader();
562
+ let eofResubscribes = 0;
563
+ let sawLiveTurn = false;
564
+ const closeController = () => {
559
565
  try {
560
- while (true) {
561
- const next = await reader.read();
562
- if (next.done) {
563
- controller.close();
564
- return;
565
- }
566
- if (combinedSignal.aborted) {
567
- internalAbort.abort();
568
- await reader.cancel();
569
- controller.close();
570
- return;
571
- }
572
- const value = next.value;
573
- if (value.id)
574
- state.lastEventId = value.id;
575
- // Trigger control records (turn-complete, upgrade-required)
576
- // route by header — see `client-protocol.mdx`. Their bodies
577
- // are empty; everything substantive is on `value.headers`.
578
- //
579
- // Cross-version bridge: an old agent SDK still writing
580
- // turn-complete / upgrade-required as `chunk.type` data
581
- // records would otherwise stall this loop. Fall back to
582
- // the legacy chunk-type form when no header is present
583
- // so the deploy-skew window between an `AgentChat`
584
- // consumer and a not-yet-redeployed agent doesn't hang.
585
- let controlValue = controlSubtype(value.headers);
586
- if (!controlValue && value.chunk && typeof value.chunk === "object") {
587
- const chunk = value.chunk;
588
- if (chunk.type === "trigger:turn-complete") {
589
- controlValue = TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE;
566
+ controller.close();
567
+ }
568
+ catch {
569
+ // Controller may already be closed
570
+ }
571
+ };
572
+ const openSubscription = () => new SSEStreamSubscription(streamUrl, {
573
+ headers: {
574
+ Authorization: `Bearer ${accessToken}`,
575
+ // Preview-env sessions are branch-scoped (see appendInputChunk).
576
+ ...(apiClientManager.branchName
577
+ ? { "x-trigger-branch": apiClientManager.branchName }
578
+ : {}),
579
+ ...(options?.peekSettled ? { "X-Peek-Settled": "1" } : {}),
580
+ },
581
+ signal: combinedSignal,
582
+ timeoutInSeconds: this.streamTimeoutSeconds,
583
+ lastEventId: state.lastEventId,
584
+ fetchClient: sseFetchClient,
585
+ });
586
+ try {
587
+ while (true) {
588
+ const subscription = openSubscription();
589
+ const sseStream = await subscription.subscribe();
590
+ const reader = sseStream.getReader();
591
+ try {
592
+ while (true) {
593
+ const next = await reader.read();
594
+ if (next.done) {
595
+ break;
596
+ }
597
+ if (combinedSignal.aborted) {
598
+ internalAbort.abort();
599
+ await reader.cancel();
600
+ closeController();
601
+ return;
590
602
  }
591
- else if (chunk.type === "trigger:upgrade-required") {
592
- controlValue = TRIGGER_CONTROL_SUBTYPE.UPGRADE_REQUIRED;
603
+ const value = next.value;
604
+ if (value.id)
605
+ state.lastEventId = value.id;
606
+ // Any record re-earns the resubscribe budget: a clean EOF is
607
+ // the normal end of every long-poll window, so a long turn
608
+ // spanning many windows must not exhaust it.
609
+ eofResubscribes = 0;
610
+ // Trigger control records (turn-complete, upgrade-required)
611
+ // route by header — see `client-protocol.mdx`. Their bodies
612
+ // are empty; everything substantive is on `value.headers`.
613
+ //
614
+ // Cross-version bridge: an old agent SDK still writing
615
+ // turn-complete / upgrade-required as `chunk.type` data
616
+ // records would otherwise stall this loop. Fall back to
617
+ // the legacy chunk-type form when no header is present
618
+ // so the deploy-skew window between an `AgentChat`
619
+ // consumer and a not-yet-redeployed agent doesn't hang.
620
+ let controlValue = controlSubtype(value.headers);
621
+ if (!controlValue && value.chunk && typeof value.chunk === "object") {
622
+ const chunk = value.chunk;
623
+ if (chunk.type === "trigger:turn-complete") {
624
+ controlValue = TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE;
625
+ }
626
+ else if (chunk.type === "trigger:upgrade-required") {
627
+ controlValue = TRIGGER_CONTROL_SUBTYPE.UPGRADE_REQUIRED;
628
+ }
629
+ else if (typeof chunk.type === "string" && chunk.type.startsWith("trigger:")) {
630
+ // Future / unknown `trigger:*` legacy control type —
631
+ // drop so it doesn't leak as a UIMessageChunk.
632
+ continue;
633
+ }
593
634
  }
594
- else if (typeof chunk.type === "string" && chunk.type.startsWith("trigger:")) {
595
- // Future / unknown `trigger:*` legacy control type —
596
- // drop so it doesn't leak as a UIMessageChunk.
635
+ // Stale tail of a turn someone else stopped: swallow it and
636
+ // keep reading to my own turn.
637
+ if (skipStaleBoundary) {
638
+ if (controlValue === TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
639
+ skipStaleBoundary = false;
640
+ state.skipToTurnComplete = false;
641
+ }
597
642
  continue;
598
643
  }
599
- }
600
- if (state.skipToTurnComplete) {
601
- if (controlValue === TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
602
- state.skipToTurnComplete = false;
644
+ // I am the stopped stream, so this turn is over at its
645
+ // boundary: close rather than resume into windows it will
646
+ // never fill. Keyed on the id alone, so it holds however far
647
+ // the follow-up subscription has got.
648
+ if (this.stoppedStreamId === streamId) {
649
+ if (controlValue === TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
650
+ state.skipToTurnComplete = false;
651
+ this.stoppedStreamId = undefined;
652
+ internalAbort.abort();
653
+ closeController();
654
+ return;
655
+ }
656
+ continue;
603
657
  }
604
- continue;
605
- }
606
- if (controlValue === TRIGGER_CONTROL_SUBTYPE.UPGRADE_REQUIRED) {
607
- // Server has already triggered the new run via
608
- // `end-and-continue`; v2's chunks arrive on the same
609
- // S2 stream. Filter the marker for cleanliness and
610
- // keep reading.
611
- continue;
612
- }
613
- if (controlValue === TRIGGER_CONTROL_SUBTYPE.PENDING_VERSION) {
614
- continue;
615
- }
616
- if (controlValue === TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
617
- // Customer's callback may be async (e.g. persisting
618
- // lastEventId to a DB). Wrap so a rejected Promise
619
- // doesn't surface as an unhandled rejection — that
620
- // would crash Node under `--unhandled-rejections=throw`.
621
- Promise.resolve(onTurnComplete?.({
622
- chatId,
623
- lastEventId: state.lastEventId,
624
- })).catch(() => { });
625
- internalAbort.abort();
626
- try {
627
- controller.close();
658
+ // Both handover markers mean the turn carries on in a
659
+ // successor run, so they count as a live turn: its chunks
660
+ // may only arrive in a later window.
661
+ if (controlValue === TRIGGER_CONTROL_SUBTYPE.UPGRADE_REQUIRED) {
662
+ // Server has already triggered the new run via
663
+ // `end-and-continue`; v2's chunks arrive on the same
664
+ // S2 stream. Filter the marker for cleanliness and
665
+ // keep reading.
666
+ sawLiveTurn = true;
667
+ continue;
668
+ }
669
+ if (controlValue === TRIGGER_CONTROL_SUBTYPE.PENDING_VERSION) {
670
+ sawLiveTurn = true;
671
+ continue;
672
+ }
673
+ // A standalone session-closed record is written after
674
+ // turn-complete, so only a reconnect ever reads it. The
675
+ // conversation is over: end the stream, no stop, no error.
676
+ if (controlValue === TRIGGER_CONTROL_SUBTYPE.SESSION_CLOSED) {
677
+ internalAbort.abort();
678
+ closeController();
679
+ return;
628
680
  }
629
- catch {
630
- // Controller may already be closed
681
+ if (controlValue === TRIGGER_CONTROL_SUBTYPE.TURN_COMPLETE) {
682
+ // Customer's callback may be async (e.g. persisting
683
+ // lastEventId to a DB). Wrap so a rejected Promise
684
+ // doesn't surface as an unhandled rejection — that
685
+ // would crash Node under `--unhandled-rejections=throw`.
686
+ Promise.resolve(onTurnComplete?.({
687
+ chatId,
688
+ lastEventId: state.lastEventId,
689
+ })).catch(() => { });
690
+ internalAbort.abort();
691
+ closeController();
692
+ return;
631
693
  }
632
- return;
694
+ // Data record — `value.chunk` is the parsed UIMessageChunk
695
+ // (the SSE parser does the JSON envelope unwrap). Drop
696
+ // empty/malformed payloads defensively.
697
+ if (value.chunk == null)
698
+ continue;
699
+ // Parts and the handover markers above are the only evidence of
700
+ // a live turn. Unknown control records stay neutral: they are no
701
+ // reason for a reconnect to pin another long-poll window.
702
+ sawLiveTurn = true;
703
+ controller.enqueue(value.chunk);
633
704
  }
634
- // Data record — `value.chunk` is the parsed UIMessageChunk
635
- // (the SSE parser does the JSON envelope unwrap). Drop
636
- // empty/malformed payloads defensively.
637
- if (value.chunk == null)
638
- continue;
639
- controller.enqueue(value.chunk);
640
705
  }
641
- }
642
- catch (readError) {
706
+ catch (readError) {
707
+ reader.releaseLock();
708
+ throw readError;
709
+ }
643
710
  reader.releaseLock();
644
- throw readError;
711
+ // The body ended without a turn-complete. A turn is in flight
712
+ // either by construction (the send paths) or because records have
713
+ // already flowed on this stream — so unless the server says the
714
+ // session settled we lost the window mid-turn, and resubscribing
715
+ // from the last event id beats truncating the turn. A `reconnect()`
716
+ // that never saw a record can't tell a live turn from a dead
717
+ // session, so it closes rather than pin another long-poll window.
718
+ const turnInFlight = options?.resumeAfterEof || sawLiveTurn;
719
+ if (!turnInFlight || subscription.sessionSettled || combinedSignal.aborted) {
720
+ closeController();
721
+ return;
722
+ }
723
+ if (eofResubscribes >= MAX_EOF_RESUBSCRIBES) {
724
+ throw new Error("Chat stream ended before the turn completed (reconnect budget exhausted).");
725
+ }
726
+ eofResubscribes++;
727
+ await waitBeforeEofResubscribe(eofResubscribes, combinedSignal);
728
+ if (combinedSignal.aborted) {
729
+ closeController();
730
+ return;
731
+ }
645
732
  }
646
733
  }
647
734
  catch (error) {
648
735
  if (error instanceof Error && error.name === "AbortError") {
649
- try {
650
- controller.close();
651
- }
652
- catch {
653
- // Controller may already be closed
654
- }
736
+ closeController();
655
737
  return;
656
738
  }
657
739
  controller.error(error);
658
740
  }
741
+ finally {
742
+ abortSignal?.removeEventListener("abort", onExternalAbort);
743
+ }
744
+ },
745
+ // A consumer that stops reading must also stop the resubscribe loop —
746
+ // otherwise it keeps reopening a subscription nobody is draining.
747
+ cancel: () => {
748
+ internalAbort.abort();
659
749
  },
660
750
  });
661
751
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-client.js","sourceRoot":"","sources":["../../../src/v3/chat-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-client.js","sourceRoot":"","sources":["../../../src/v3/chat-client.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,60 @@ export type UseTriggerChatTransportOptions<TTask extends AnyTask = AnyTask> = Om
16
16
  };
17
17
  export type { InferChatUIMessage };
18
18
  export type { ChatTransportEvent, ChatTransportSendSource } from "./chat.js";
19
+ /** What a `chat.createLoadTranscriptAction` action returns, as `useLoadTranscript` reads it. */
20
+ export type LoadTranscriptResult<TUIMessage extends UIMessage = UIMessage> = {
21
+ messages: TUIMessage[];
22
+ cursors?: {
23
+ lastOutEventId?: string;
24
+ lastInEventId?: string;
25
+ };
26
+ nextCursor?: string;
27
+ };
28
+ export type UseLoadTranscriptOptions = {
29
+ /**
30
+ * When given, the transport's resume cursor for this chat is seeded from
31
+ * the loaded transcript, so the live subscription opens just past the
32
+ * persisted history instead of replaying it. Only applies once the
33
+ * transport knows the session (from `sessions` or after `start`).
34
+ */
35
+ transport?: TriggerChatTransport;
36
+ /** Page size passed to the action. */
37
+ limit?: number;
38
+ };
39
+ /**
40
+ * Move the transport's resume cursor for `chatId` to the transcript's
41
+ * `lastOutEventId`, so the live subscription opens just past the persisted
42
+ * history. Applied to the session now if it exists, otherwise held by the
43
+ * transport until the session is created, so a load that resolves before the
44
+ * session exists still moves the cursor. A no-op when the transcript carries
45
+ * no cursor. Returns whether a cursor was provided.
46
+ */
47
+ export declare function seedTranscriptCursor(transport: Pick<TriggerChatTransport, "seedResumeCursor">, chatId: string, cursors: {
48
+ lastOutEventId?: string;
49
+ } | undefined): boolean;
50
+ /**
51
+ * Load a conversation's history through a server action created with
52
+ * `chat.createLoadTranscriptAction`, for rendering before the chat connects.
53
+ *
54
+ * Re-runs when `chatId` changes. Pass `undefined` to load nothing.
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * const { messages, isLoading } = useLoadTranscript(chatId, loadTranscript, { transport });
59
+ * if (isLoading) return <Spinner />;
60
+ * return <ChatView chatId={chatId} initialMessages={messages} transport={transport} />;
61
+ * ```
62
+ */
63
+ export declare function useLoadTranscript<TUIMessage extends UIMessage = UIMessage>(chatId: string | undefined, load: (params: {
64
+ chatId: string;
65
+ limit?: number;
66
+ }) => Promise<LoadTranscriptResult<TUIMessage>>, options?: UseLoadTranscriptOptions): {
67
+ messages: TUIMessage[];
68
+ isLoading: boolean;
69
+ error: Error | undefined;
70
+ /** The id to pass as `before` to the action for the page before this one. */
71
+ nextCursor: string | undefined;
72
+ };
19
73
  /**
20
74
  * React hook that creates and memoizes a `TriggerChatTransport` instance.
21
75
  *
@@ -24,6 +24,87 @@
24
24
  import { useCallback, useEffect, useRef, useState } from "react";
25
25
  import { TriggerChatTransport } from "./chat.js";
26
26
  import { PENDING_MESSAGE_INJECTED_TYPE, } from "./ai-shared.js";
27
+ /**
28
+ * Move the transport's resume cursor for `chatId` to the transcript's
29
+ * `lastOutEventId`, so the live subscription opens just past the persisted
30
+ * history. Applied to the session now if it exists, otherwise held by the
31
+ * transport until the session is created, so a load that resolves before the
32
+ * session exists still moves the cursor. A no-op when the transcript carries
33
+ * no cursor. Returns whether a cursor was provided.
34
+ */
35
+ export function seedTranscriptCursor(transport, chatId, cursors) {
36
+ const lastEventId = cursors?.lastOutEventId;
37
+ if (!lastEventId)
38
+ return false;
39
+ transport.seedResumeCursor(chatId, lastEventId);
40
+ return true;
41
+ }
42
+ /**
43
+ * Load a conversation's history through a server action created with
44
+ * `chat.createLoadTranscriptAction`, for rendering before the chat connects.
45
+ *
46
+ * Re-runs when `chatId` changes. Pass `undefined` to load nothing.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * const { messages, isLoading } = useLoadTranscript(chatId, loadTranscript, { transport });
51
+ * if (isLoading) return <Spinner />;
52
+ * return <ChatView chatId={chatId} initialMessages={messages} transport={transport} />;
53
+ * ```
54
+ */
55
+ export function useLoadTranscript(chatId, load, options) {
56
+ const [state, setState] = useState({
57
+ chatId,
58
+ messages: [],
59
+ isLoading: chatId !== undefined,
60
+ error: undefined,
61
+ nextCursor: undefined,
62
+ });
63
+ const loadRef = useRef(load);
64
+ loadRef.current = load;
65
+ const transportRef = useRef(options?.transport);
66
+ transportRef.current = options?.transport;
67
+ const limit = options?.limit;
68
+ useEffect(() => {
69
+ if (chatId === undefined) {
70
+ setState({ chatId, messages: [], isLoading: false, error: undefined, nextCursor: undefined });
71
+ return;
72
+ }
73
+ let cancelled = false;
74
+ setState({ chatId, messages: [], isLoading: true, error: undefined, nextCursor: undefined });
75
+ loadRef
76
+ .current({ chatId, ...(limit !== undefined ? { limit } : {}) })
77
+ .then((result) => {
78
+ if (cancelled)
79
+ return;
80
+ if (transportRef.current) {
81
+ seedTranscriptCursor(transportRef.current, chatId, result.cursors);
82
+ }
83
+ setState({
84
+ chatId,
85
+ messages: result.messages,
86
+ isLoading: false,
87
+ error: undefined,
88
+ nextCursor: result.nextCursor,
89
+ });
90
+ })
91
+ .catch((cause) => {
92
+ if (cancelled)
93
+ return;
94
+ const error = cause instanceof Error ? cause : new Error(String(cause));
95
+ setState({ chatId, messages: [], isLoading: false, error, nextCursor: undefined });
96
+ });
97
+ return () => {
98
+ cancelled = true;
99
+ };
100
+ }, [chatId, limit]);
101
+ return {
102
+ messages: state.chatId === chatId ? state.messages : [],
103
+ isLoading: state.chatId === chatId ? state.isLoading : chatId !== undefined,
104
+ error: state.chatId === chatId ? state.error : undefined,
105
+ nextCursor: state.chatId === chatId ? state.nextCursor : undefined,
106
+ };
107
+ }
27
108
  /**
28
109
  * React hook that creates and memoizes a `TriggerChatTransport` instance.
29
110
  *