@trigger.dev/sdk 0.0.0-prerelease-20260304181730 → 0.0.0-prerelease-20260305142821
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/dist/commonjs/v3/ai.d.ts +118 -16
- package/dist/commonjs/v3/ai.js +212 -33
- package/dist/commonjs/v3/ai.js.map +1 -1
- package/dist/commonjs/v3/chat-react.d.ts +3 -0
- package/dist/commonjs/v3/chat-react.js +8 -0
- package/dist/commonjs/v3/chat-react.js.map +1 -1
- package/dist/commonjs/v3/chat.d.ts +85 -0
- package/dist/commonjs/v3/chat.js +76 -3
- package/dist/commonjs/v3/chat.js.map +1 -1
- package/dist/commonjs/v3/chat.test.js +325 -72
- package/dist/commonjs/v3/chat.test.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/ai.d.ts +118 -16
- package/dist/esm/v3/ai.js +212 -33
- package/dist/esm/v3/ai.js.map +1 -1
- package/dist/esm/v3/chat-react.d.ts +3 -0
- package/dist/esm/v3/chat-react.js +9 -1
- package/dist/esm/v3/chat-react.js.map +1 -1
- package/dist/esm/v3/chat.d.ts +85 -0
- package/dist/esm/v3/chat.js +76 -3
- package/dist/esm/v3/chat.js.map +1 -1
- package/dist/esm/v3/chat.test.js +325 -72
- package/dist/esm/v3/chat.test.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +2 -2
|
@@ -84,6 +84,60 @@ export type TriggerChatTransportOptions = {
|
|
|
84
84
|
* ```
|
|
85
85
|
*/
|
|
86
86
|
metadata?: Record<string, unknown>;
|
|
87
|
+
/**
|
|
88
|
+
* Restore active chat sessions from external storage (e.g. localStorage).
|
|
89
|
+
*
|
|
90
|
+
* After a page refresh, pass previously persisted sessions here so the
|
|
91
|
+
* transport can reconnect to existing runs instead of starting new ones.
|
|
92
|
+
* Use `getSession()` to retrieve session state for persistence.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* new TriggerChatTransport({
|
|
97
|
+
* task: "my-chat",
|
|
98
|
+
* accessToken,
|
|
99
|
+
* sessions: {
|
|
100
|
+
* "chat-abc": { runId: "run_123", publicAccessToken: "...", lastEventId: "42" },
|
|
101
|
+
* },
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
sessions?: Record<string, {
|
|
106
|
+
runId: string;
|
|
107
|
+
publicAccessToken: string;
|
|
108
|
+
lastEventId?: string;
|
|
109
|
+
}>;
|
|
110
|
+
/**
|
|
111
|
+
* Called whenever a chat session's state changes.
|
|
112
|
+
*
|
|
113
|
+
* Fires when:
|
|
114
|
+
* - A new session is created (after triggering a task)
|
|
115
|
+
* - A turn completes (lastEventId updated)
|
|
116
|
+
* - A session is removed (run ended or input stream send failed) — `session` will be `null`
|
|
117
|
+
*
|
|
118
|
+
* Use this to persist session state for reconnection after page refreshes,
|
|
119
|
+
* without needing to call `getSession()` manually.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* new TriggerChatTransport({
|
|
124
|
+
* task: "my-chat",
|
|
125
|
+
* accessToken,
|
|
126
|
+
* onSessionChange: (chatId, session) => {
|
|
127
|
+
* if (session) {
|
|
128
|
+
* localStorage.setItem(`session:${chatId}`, JSON.stringify(session));
|
|
129
|
+
* } else {
|
|
130
|
+
* localStorage.removeItem(`session:${chatId}`);
|
|
131
|
+
* }
|
|
132
|
+
* },
|
|
133
|
+
* });
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
onSessionChange?: (chatId: string, session: {
|
|
137
|
+
runId: string;
|
|
138
|
+
publicAccessToken: string;
|
|
139
|
+
lastEventId?: string;
|
|
140
|
+
} | null) => void;
|
|
87
141
|
};
|
|
88
142
|
/**
|
|
89
143
|
* A custom AI SDK `ChatTransport` that runs chat completions as durable Trigger.dev tasks.
|
|
@@ -121,6 +175,7 @@ export declare class TriggerChatTransport implements ChatTransport<UIMessage> {
|
|
|
121
175
|
private readonly extraHeaders;
|
|
122
176
|
private readonly streamTimeoutSeconds;
|
|
123
177
|
private readonly defaultMetadata;
|
|
178
|
+
private _onSessionChange;
|
|
124
179
|
private sessions;
|
|
125
180
|
constructor(options: TriggerChatTransportOptions);
|
|
126
181
|
sendMessages: (options: {
|
|
@@ -133,6 +188,36 @@ export declare class TriggerChatTransport implements ChatTransport<UIMessage> {
|
|
|
133
188
|
reconnectToStream: (options: {
|
|
134
189
|
chatId: string;
|
|
135
190
|
} & ChatRequestOptions) => Promise<ReadableStream<UIMessageChunk> | null>;
|
|
191
|
+
/**
|
|
192
|
+
* Get the current session state for a chat, suitable for external persistence.
|
|
193
|
+
*
|
|
194
|
+
* Returns `undefined` if no active session exists for this chatId.
|
|
195
|
+
* Persist the returned value to localStorage so it can be restored
|
|
196
|
+
* after a page refresh via `restoreSession()`.
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```ts
|
|
200
|
+
* const session = transport.getSession(chatId);
|
|
201
|
+
* if (session) {
|
|
202
|
+
* localStorage.setItem(`session:${chatId}`, JSON.stringify(session));
|
|
203
|
+
* }
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
getSession: (chatId: string) => {
|
|
207
|
+
runId: string;
|
|
208
|
+
publicAccessToken: string;
|
|
209
|
+
lastEventId?: string;
|
|
210
|
+
} | undefined;
|
|
211
|
+
/**
|
|
212
|
+
* Update the `onSessionChange` callback.
|
|
213
|
+
* Useful for React hooks that need to update the callback without recreating the transport.
|
|
214
|
+
*/
|
|
215
|
+
setOnSessionChange(callback: ((chatId: string, session: {
|
|
216
|
+
runId: string;
|
|
217
|
+
publicAccessToken: string;
|
|
218
|
+
lastEventId?: string;
|
|
219
|
+
} | null) => void) | undefined): void;
|
|
220
|
+
private notifySessionChange;
|
|
136
221
|
private subscribeToStream;
|
|
137
222
|
}
|
|
138
223
|
/**
|
package/dist/commonjs/v3/chat.js
CHANGED
|
@@ -66,6 +66,7 @@ class TriggerChatTransport {
|
|
|
66
66
|
extraHeaders;
|
|
67
67
|
streamTimeoutSeconds;
|
|
68
68
|
defaultMetadata;
|
|
69
|
+
_onSessionChange;
|
|
69
70
|
sessions = new Map();
|
|
70
71
|
constructor(options) {
|
|
71
72
|
this.taskId = options.task;
|
|
@@ -78,6 +79,17 @@ class TriggerChatTransport {
|
|
|
78
79
|
this.extraHeaders = options.headers ?? {};
|
|
79
80
|
this.streamTimeoutSeconds = options.streamTimeoutSeconds ?? DEFAULT_STREAM_TIMEOUT_SECONDS;
|
|
80
81
|
this.defaultMetadata = options.metadata;
|
|
82
|
+
this._onSessionChange = options.onSessionChange;
|
|
83
|
+
// Restore sessions from external storage
|
|
84
|
+
if (options.sessions) {
|
|
85
|
+
for (const [chatId, session] of Object.entries(options.sessions)) {
|
|
86
|
+
this.sessions.set(chatId, {
|
|
87
|
+
runId: session.runId,
|
|
88
|
+
publicAccessToken: session.publicAccessToken,
|
|
89
|
+
lastEventId: session.lastEventId,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
81
93
|
}
|
|
82
94
|
sendMessages = async (options) => {
|
|
83
95
|
const { trigger, chatId, messageId, messages, abortSignal, body, metadata } = options;
|
|
@@ -97,13 +109,21 @@ class TriggerChatTransport {
|
|
|
97
109
|
// to resume the conversation in the same run.
|
|
98
110
|
if (session?.runId) {
|
|
99
111
|
try {
|
|
112
|
+
// Keep wire payloads minimal — the backend accumulates the full history.
|
|
113
|
+
// For submit-message: only send the new user message (always the last one).
|
|
114
|
+
// For regenerate-message: send full history so the backend can reset its accumulator.
|
|
115
|
+
const minimalPayload = {
|
|
116
|
+
...payload,
|
|
117
|
+
messages: trigger === "submit-message" ? messages.slice(-1) : messages,
|
|
118
|
+
};
|
|
100
119
|
const apiClient = new v3_1.ApiClient(this.baseURL, session.publicAccessToken);
|
|
101
|
-
await apiClient.sendInputStream(session.runId, chat_constants_js_1.CHAT_MESSAGES_STREAM_ID,
|
|
120
|
+
await apiClient.sendInputStream(session.runId, chat_constants_js_1.CHAT_MESSAGES_STREAM_ID, minimalPayload);
|
|
102
121
|
return this.subscribeToStream(session.runId, session.publicAccessToken, abortSignal, chatId);
|
|
103
122
|
}
|
|
104
123
|
catch {
|
|
105
124
|
// If sending fails (run died, etc.), fall through to trigger a new run.
|
|
106
125
|
this.sessions.delete(chatId);
|
|
126
|
+
this.notifySessionChange(chatId, null);
|
|
107
127
|
}
|
|
108
128
|
}
|
|
109
129
|
// First message or run has ended — trigger a new run
|
|
@@ -119,10 +139,12 @@ class TriggerChatTransport {
|
|
|
119
139
|
const publicAccessToken = "publicAccessToken" in triggerResponse
|
|
120
140
|
? triggerResponse.publicAccessToken
|
|
121
141
|
: undefined;
|
|
122
|
-
|
|
142
|
+
const newSession = {
|
|
123
143
|
runId,
|
|
124
144
|
publicAccessToken: publicAccessToken ?? currentToken,
|
|
125
|
-
}
|
|
145
|
+
};
|
|
146
|
+
this.sessions.set(chatId, newSession);
|
|
147
|
+
this.notifySessionChange(chatId, newSession);
|
|
126
148
|
return this.subscribeToStream(runId, publicAccessToken ?? currentToken, abortSignal, chatId);
|
|
127
149
|
};
|
|
128
150
|
reconnectToStream = async (options) => {
|
|
@@ -132,6 +154,52 @@ class TriggerChatTransport {
|
|
|
132
154
|
}
|
|
133
155
|
return this.subscribeToStream(session.runId, session.publicAccessToken, undefined, options.chatId);
|
|
134
156
|
};
|
|
157
|
+
/**
|
|
158
|
+
* Get the current session state for a chat, suitable for external persistence.
|
|
159
|
+
*
|
|
160
|
+
* Returns `undefined` if no active session exists for this chatId.
|
|
161
|
+
* Persist the returned value to localStorage so it can be restored
|
|
162
|
+
* after a page refresh via `restoreSession()`.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* const session = transport.getSession(chatId);
|
|
167
|
+
* if (session) {
|
|
168
|
+
* localStorage.setItem(`session:${chatId}`, JSON.stringify(session));
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
getSession = (chatId) => {
|
|
173
|
+
const session = this.sessions.get(chatId);
|
|
174
|
+
if (!session)
|
|
175
|
+
return undefined;
|
|
176
|
+
return {
|
|
177
|
+
runId: session.runId,
|
|
178
|
+
publicAccessToken: session.publicAccessToken,
|
|
179
|
+
lastEventId: session.lastEventId,
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Update the `onSessionChange` callback.
|
|
184
|
+
* Useful for React hooks that need to update the callback without recreating the transport.
|
|
185
|
+
*/
|
|
186
|
+
setOnSessionChange(callback) {
|
|
187
|
+
this._onSessionChange = callback;
|
|
188
|
+
}
|
|
189
|
+
notifySessionChange(chatId, session) {
|
|
190
|
+
if (!this._onSessionChange)
|
|
191
|
+
return;
|
|
192
|
+
if (session) {
|
|
193
|
+
this._onSessionChange(chatId, {
|
|
194
|
+
runId: session.runId,
|
|
195
|
+
publicAccessToken: session.publicAccessToken,
|
|
196
|
+
lastEventId: session.lastEventId,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
this._onSessionChange(chatId, null);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
135
203
|
subscribeToStream(runId, accessToken, abortSignal, chatId) {
|
|
136
204
|
const headers = {
|
|
137
205
|
Authorization: `Bearer ${accessToken}`,
|
|
@@ -183,6 +251,7 @@ class TriggerChatTransport {
|
|
|
183
251
|
// the next message via input streams.
|
|
184
252
|
if (chatId && !combinedSignal.aborted) {
|
|
185
253
|
this.sessions.delete(chatId);
|
|
254
|
+
this.notifySessionChange(chatId, null);
|
|
186
255
|
}
|
|
187
256
|
controller.close();
|
|
188
257
|
return;
|
|
@@ -210,6 +279,10 @@ class TriggerChatTransport {
|
|
|
210
279
|
continue;
|
|
211
280
|
}
|
|
212
281
|
if (chunk.type === "__trigger_turn_complete" && chatId) {
|
|
282
|
+
// Notify with updated lastEventId before closing
|
|
283
|
+
if (session) {
|
|
284
|
+
this.notifySessionChange(chatId, session);
|
|
285
|
+
}
|
|
213
286
|
internalAbort.abort();
|
|
214
287
|
try {
|
|
215
288
|
controller.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/v3/chat.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/v3/chat.ts"],"names":[],"mappings":"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"}
|