Skip to content

Commit f9dcafa

Browse files
Export explicit send/reconnect option helper types
Co-authored-by: Eric Allam <eric@trigger.dev>
1 parent b7c2b2e commit f9dcafa

File tree

5 files changed

+55
-30
lines changed

5 files changed

+55
-30
lines changed

packages/ai/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ AI SDK integrations for Trigger.dev.
77
- `TriggerChatTransport` for wiring AI SDK `useChat()` to Trigger.dev tasks + Realtime Streams v2
88
- `createTriggerChatTransport(...)` factory helper
99
- `ai.tool(...)` and `ai.currentToolOptions()` helpers for tool-calling flows
10+
- helper types such as `TriggerChatSendMessagesOptions`, `TriggerChatReconnectOptions`, and `TriggerChatHeadersInput`
1011

1112
## Install
1213

packages/ai/src/chatTransport.ts

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ import {
88
TriggerOptions,
99
} from "@trigger.dev/core/v3";
1010
import type {
11-
ChatRequestOptions,
1211
ChatTransport,
1312
InferUIMessageChunk,
1413
UIMessage,
1514
UIMessageChunk,
1615
} from "ai";
1716
import type {
17+
TriggerChatHeadersInput,
18+
TriggerChatReconnectOptions,
19+
TriggerChatSendMessagesOptions,
1820
TriggerChatOnTriggeredRun,
1921
TriggerChatPayloadMapper,
2022
TriggerChatRunState,
@@ -62,12 +64,6 @@ type TriggerTaskRequestBody = {
6264
options?: TriggerTaskRequestOptions;
6365
};
6466

65-
type TriggerChatRequestOptionsWithTupleHeaders = Omit<ChatRequestOptions, "headers"> & {
66-
headers?:
67-
| ChatRequestOptions["headers"]
68-
| Array<[string, string]>;
69-
};
70-
7167
type TriggerChatTransportCommonOptions<
7268
UI_MESSAGE extends UIMessage = UIMessage,
7369
> = {
@@ -158,13 +154,7 @@ export class TriggerChatTransport<
158154
}
159155

160156
public async sendMessages(
161-
options: {
162-
trigger: "submit-message" | "regenerate-message";
163-
chatId: string;
164-
messageId: string | undefined;
165-
messages: UI_MESSAGE[];
166-
abortSignal: AbortSignal | undefined;
167-
} & TriggerChatRequestOptionsWithTupleHeaders
157+
options: TriggerChatSendMessagesOptions<UI_MESSAGE>
168158
): Promise<ReadableStream<UIMessageChunk>> {
169159
const transportRequest = createTransportRequest<UI_MESSAGE>(options);
170160
const payload = await this.payloadMapper(transportRequest);
@@ -199,9 +189,7 @@ export class TriggerChatTransport<
199189
}
200190

201191
public async reconnectToStream(
202-
options: {
203-
chatId: string;
204-
} & ChatRequestOptions
192+
options: TriggerChatReconnectOptions
205193
): Promise<ReadableStream<UIMessageChunk> | null> {
206194
const runState = await this.runStore.get(options.chatId);
207195

@@ -342,13 +330,7 @@ function resolvePayloadMapper<
342330
}
343331

344332
function createTransportRequest<UI_MESSAGE extends UIMessage>(
345-
options: {
346-
trigger: "submit-message" | "regenerate-message";
347-
chatId: string;
348-
messageId: string | undefined;
349-
messages: UI_MESSAGE[];
350-
abortSignal: AbortSignal | undefined;
351-
} & TriggerChatRequestOptionsWithTupleHeaders
333+
options: TriggerChatSendMessagesOptions<UI_MESSAGE>
352334
): TriggerChatTransportRequest<UI_MESSAGE> {
353335
return {
354336
chatId: options.chatId,
@@ -395,11 +377,7 @@ function resolveStreamKey<UI_MESSAGE extends UIMessage>(
395377
}
396378

397379
function normalizeHeaders(
398-
headers:
399-
| Record<string, string>
400-
| Headers
401-
| Array<[string, string]>
402-
| undefined
380+
headers: TriggerChatHeadersInput | undefined
403381
): Record<string, string> | undefined {
404382
if (!headers) {
405383
return undefined;

packages/ai/src/chatTransport.types.test.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import {
44
createTriggerChatTransport,
55
TriggerChatTransport,
66
TriggerChatTransportOptions,
7+
type TriggerChatHeadersInput,
8+
type TriggerChatReconnectOptions,
9+
type TriggerChatSendMessagesOptions,
710
type TriggerChatTransportPayload,
811
type TriggerChatTransportRequest,
912
type TriggerChatRunState,
@@ -129,8 +132,25 @@ it("accepts tuple-style headers in sendMessages options", function () {
129132
accessToken: "pk_test",
130133
});
131134

135+
const headersInput: TriggerChatHeadersInput = [["x-header", "x-value"]];
136+
137+
const sendOptions: TriggerChatSendMessagesOptions<UIMessage> = {
138+
trigger: "submit-message",
139+
chatId: "chat_123",
140+
messageId: undefined,
141+
messages: [],
142+
abortSignal: undefined,
143+
headers: headersInput,
144+
};
145+
146+
const reconnectOptions: TriggerChatReconnectOptions = {
147+
chatId: "chat_123",
148+
headers: headersInput,
149+
};
150+
132151
type SendMessagesParams = Parameters<typeof transport.sendMessages>[0];
133-
const tupleHeaders: SendMessagesParams["headers"] = [["x-header", "x-value"]];
152+
const tupleHeaders: SendMessagesParams["headers"] = sendOptions.headers;
153+
expectTypeOf(reconnectOptions).toBeObject();
134154
expectTypeOf(transport.sendMessages).toBeFunction();
135155
void tupleHeaders;
136156
});

packages/ai/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ export {
66
type TriggerChatTransportOptions,
77
} from "./chatTransport.js";
88
export type {
9+
TriggerChatHeadersInput,
910
TriggerChatPayloadMapper,
1011
TriggerChatOnTriggeredRun,
12+
TriggerChatReconnectOptions,
1113
TriggerChatRunState,
1214
TriggerChatRunStore,
15+
TriggerChatSendMessagesOptions,
1316
TriggerChatStream,
1417
TriggerChatTaskContext,
1518
TriggerChatTransportPayload,

packages/ai/src/types.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ export type TriggerChatTransportTrigger =
1212
| "submit-message"
1313
| "regenerate-message";
1414

15+
export type TriggerChatHeadersInput =
16+
| Record<string, string>
17+
| Headers
18+
| Array<[string, string]>;
19+
1520
export type TriggerChatTransportRequest<
1621
UI_MESSAGE extends UIMessage = UIMessage,
1722
> = {
@@ -85,3 +90,21 @@ export interface TriggerChatRunStore {
8590
set(state: TriggerChatRunState): Promise<void> | void;
8691
delete(chatId: string): Promise<void> | void;
8792
}
93+
94+
export type TriggerChatSendMessagesOptions<
95+
UI_MESSAGE extends UIMessage = UIMessage,
96+
> = {
97+
trigger: TriggerChatTransportTrigger;
98+
chatId: string;
99+
messageId: string | undefined;
100+
messages: UI_MESSAGE[];
101+
abortSignal: AbortSignal | undefined;
102+
} & Omit<ChatRequestOptions, "headers"> & {
103+
headers?: TriggerChatHeadersInput;
104+
};
105+
106+
export type TriggerChatReconnectOptions = {
107+
chatId: string;
108+
} & Omit<ChatRequestOptions, "headers"> & {
109+
headers?: TriggerChatHeadersInput;
110+
};

0 commit comments

Comments
 (0)