@tanstack/ai 0.6.3 → 0.8.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.
Files changed (59) hide show
  1. package/dist/esm/activities/chat/index.d.ts +20 -0
  2. package/dist/esm/activities/chat/index.js +248 -213
  3. package/dist/esm/activities/chat/index.js.map +1 -1
  4. package/dist/esm/activities/chat/middleware/compose.d.ts +66 -0
  5. package/dist/esm/activities/chat/middleware/compose.js +327 -0
  6. package/dist/esm/activities/chat/middleware/compose.js.map +1 -0
  7. package/dist/esm/activities/chat/middleware/index.d.ts +2 -0
  8. package/dist/esm/activities/chat/middleware/tool-cache-middleware.d.ts +89 -0
  9. package/dist/esm/activities/chat/middleware/tool-cache-middleware.js +76 -0
  10. package/dist/esm/activities/chat/middleware/tool-cache-middleware.js.map +1 -0
  11. package/dist/esm/activities/chat/middleware/types.d.ts +307 -0
  12. package/dist/esm/activities/chat/tools/tool-calls.d.ts +16 -1
  13. package/dist/esm/activities/chat/tools/tool-calls.js +148 -64
  14. package/dist/esm/activities/chat/tools/tool-calls.js.map +1 -1
  15. package/dist/esm/activities/generateImage/index.js +1 -1
  16. package/dist/esm/activities/generateImage/index.js.map +1 -1
  17. package/dist/esm/activities/generateSpeech/index.js +1 -1
  18. package/dist/esm/activities/generateSpeech/index.js.map +1 -1
  19. package/dist/esm/activities/generateTranscription/index.js +1 -1
  20. package/dist/esm/activities/generateTranscription/index.js.map +1 -1
  21. package/dist/esm/activities/generateVideo/index.js +1 -1
  22. package/dist/esm/activities/generateVideo/index.js.map +1 -1
  23. package/dist/esm/activities/summarize/index.js +1 -1
  24. package/dist/esm/activities/summarize/index.js.map +1 -1
  25. package/dist/esm/index.d.ts +3 -1
  26. package/dist/esm/index.js +2 -2
  27. package/dist/esm/middlewares/content-guard.d.ts +77 -0
  28. package/dist/esm/middlewares/content-guard.js +155 -0
  29. package/dist/esm/middlewares/content-guard.js.map +1 -0
  30. package/dist/esm/middlewares/index.d.ts +2 -0
  31. package/dist/esm/middlewares/index.js +7 -0
  32. package/dist/esm/middlewares/index.js.map +1 -0
  33. package/dist/esm/middlewares/tool-cache.d.ts +1 -0
  34. package/dist/esm/realtime/index.d.ts +30 -0
  35. package/dist/esm/realtime/index.js +8 -0
  36. package/dist/esm/realtime/index.js.map +1 -0
  37. package/dist/esm/realtime/types.d.ts +234 -0
  38. package/package.json +6 -6
  39. package/src/activities/chat/index.ts +322 -256
  40. package/src/activities/chat/middleware/compose.ts +392 -0
  41. package/src/activities/chat/middleware/index.ts +17 -0
  42. package/src/activities/chat/middleware/tool-cache-middleware.ts +189 -0
  43. package/src/activities/chat/middleware/types.ts +419 -0
  44. package/src/activities/chat/tools/tool-calls.ts +225 -87
  45. package/src/activities/generateImage/index.ts +1 -1
  46. package/src/activities/generateSpeech/index.ts +1 -1
  47. package/src/activities/generateTranscription/index.ts +1 -1
  48. package/src/activities/generateVideo/index.ts +1 -1
  49. package/src/activities/summarize/index.ts +1 -1
  50. package/src/index.ts +41 -2
  51. package/src/middlewares/content-guard.ts +285 -0
  52. package/src/middlewares/index.ts +13 -0
  53. package/src/middlewares/tool-cache.ts +6 -0
  54. package/src/realtime/index.ts +38 -0
  55. package/src/realtime/types.ts +294 -0
  56. package/dist/esm/event-client.d.ts +0 -394
  57. package/dist/esm/event-client.js +0 -13
  58. package/dist/esm/event-client.js.map +0 -1
  59. package/src/event-client.ts +0 -497
@@ -1,394 +0,0 @@
1
- import { EventClient } from '@tanstack/devtools-event-client';
2
- import { MessagePart, ToolCall } from './types.js';
3
- /**
4
- * Tool call states - track the lifecycle of a tool call
5
- * Must match @tanstack/ai-client ToolCallState
6
- */
7
- export type ToolCallState = 'awaiting-input' | 'input-streaming' | 'input-complete' | 'approval-requested' | 'approval-responded';
8
- /**
9
- * Tool result states - track the lifecycle of a tool result
10
- * Must match @tanstack/ai-client ToolResultState
11
- */
12
- export type ToolResultState = 'streaming' | 'complete' | 'error';
13
- export interface TokenUsage {
14
- promptTokens: number;
15
- completionTokens: number;
16
- totalTokens: number;
17
- }
18
- export interface ImageUsage {
19
- inputTokens?: number;
20
- outputTokens?: number;
21
- totalTokens?: number;
22
- }
23
- interface BaseEventContext {
24
- timestamp: number;
25
- requestId?: string;
26
- streamId?: string;
27
- messageId?: string;
28
- clientId?: string;
29
- source?: 'client' | 'server';
30
- provider?: string;
31
- model?: string;
32
- systemPrompts?: Array<string>;
33
- options?: Record<string, unknown>;
34
- modelOptions?: Record<string, unknown>;
35
- toolNames?: Array<string>;
36
- messageCount?: number;
37
- hasTools?: boolean;
38
- streaming?: boolean;
39
- }
40
- /** Emitted when a text request starts execution. */
41
- export interface TextRequestStartedEvent extends BaseEventContext {
42
- requestId: string;
43
- streamId: string;
44
- provider: string;
45
- model: string;
46
- messageCount: number;
47
- hasTools: boolean;
48
- streaming: boolean;
49
- }
50
- /** Emitted when a text request completes with final output. */
51
- export interface TextRequestCompletedEvent extends BaseEventContext {
52
- requestId: string;
53
- streamId: string;
54
- provider: string;
55
- model: string;
56
- content: string;
57
- finishReason?: string;
58
- usage?: TokenUsage;
59
- duration?: number;
60
- streaming: boolean;
61
- messageCount: number;
62
- hasTools: boolean;
63
- }
64
- /** Emitted when a message is created (user/assistant/system/tool). */
65
- export interface TextMessageCreatedEvent extends BaseEventContext {
66
- requestId?: string;
67
- streamId?: string;
68
- messageId: string;
69
- role: 'user' | 'assistant' | 'system' | 'tool';
70
- content: string;
71
- parts?: Array<MessagePart>;
72
- toolCalls?: Array<ToolCall>;
73
- messageIndex?: number;
74
- }
75
- /** Emitted when a user message is created (full content). */
76
- export interface TextMessageUserEvent extends TextMessageCreatedEvent {
77
- role: 'user';
78
- }
79
- /** Emitted for streaming text content chunks. */
80
- export interface TextChunkContentEvent extends BaseEventContext {
81
- requestId?: string;
82
- streamId: string;
83
- messageId?: string;
84
- content: string;
85
- delta?: string;
86
- }
87
- /** Emitted for streaming tool call chunks. */
88
- export interface TextChunkToolCallEvent extends BaseEventContext {
89
- requestId?: string;
90
- streamId: string;
91
- messageId?: string;
92
- toolCallId: string;
93
- toolName: string;
94
- index: number;
95
- arguments: string;
96
- }
97
- /** Emitted for streaming tool result chunks. */
98
- export interface TextChunkToolResultEvent extends BaseEventContext {
99
- requestId?: string;
100
- streamId: string;
101
- messageId?: string;
102
- toolCallId: string;
103
- result: string;
104
- }
105
- /** Emitted for streaming thinking chunks. */
106
- export interface TextChunkThinkingEvent extends BaseEventContext {
107
- requestId?: string;
108
- streamId: string;
109
- messageId?: string;
110
- content: string;
111
- delta?: string;
112
- }
113
- /** Emitted when a stream finishes. */
114
- export interface TextChunkDoneEvent extends BaseEventContext {
115
- requestId?: string;
116
- streamId: string;
117
- messageId?: string;
118
- finishReason: string | null;
119
- usage?: TokenUsage;
120
- }
121
- /** Emitted on stream errors. */
122
- export interface TextChunkErrorEvent extends BaseEventContext {
123
- requestId?: string;
124
- streamId: string;
125
- messageId?: string;
126
- error: string;
127
- }
128
- /** Emitted when usage metrics are available for text. */
129
- export interface TextUsageEvent extends BaseEventContext {
130
- requestId: string;
131
- streamId: string;
132
- messageId?: string;
133
- model: string;
134
- usage: TokenUsage;
135
- }
136
- /** Emitted when tool approval is required. */
137
- export interface ToolsApprovalRequestedEvent extends BaseEventContext {
138
- requestId?: string;
139
- streamId: string;
140
- messageId?: string;
141
- toolCallId: string;
142
- toolName: string;
143
- input: unknown;
144
- approvalId: string;
145
- }
146
- /** Emitted when user responds to an approval request. */
147
- export interface ToolsApprovalRespondedEvent extends BaseEventContext {
148
- toolCallId: string;
149
- approvalId: string;
150
- approved: boolean;
151
- }
152
- /** Emitted when tool input is available for client execution. */
153
- export interface ToolsInputAvailableEvent extends BaseEventContext {
154
- requestId?: string;
155
- streamId: string;
156
- messageId?: string;
157
- toolCallId: string;
158
- toolName: string;
159
- input: unknown;
160
- }
161
- /** Emitted when a tool call completes with a result. */
162
- export interface ToolsCallCompletedEvent extends BaseEventContext {
163
- requestId?: string;
164
- streamId: string;
165
- messageId?: string;
166
- toolCallId: string;
167
- toolName: string;
168
- result: unknown;
169
- duration: number;
170
- }
171
- /** Emitted when a client tool result is added. */
172
- export interface ToolsResultAddedEvent extends BaseEventContext {
173
- toolCallId: string;
174
- toolName: string;
175
- output: unknown;
176
- state: 'output-available' | 'output-error';
177
- }
178
- /** Emitted when tool call state changes on the client. */
179
- export interface ToolsCallUpdatedEvent extends BaseEventContext {
180
- streamId: string;
181
- messageId: string;
182
- toolCallId: string;
183
- toolName: string;
184
- state: ToolCallState;
185
- arguments: string;
186
- }
187
- /** Emitted when summarize starts. */
188
- export interface SummarizeRequestStartedEvent extends BaseEventContext {
189
- requestId: string;
190
- provider: string;
191
- model: string;
192
- inputLength: number;
193
- }
194
- /** Emitted when summarize completes. */
195
- export interface SummarizeRequestCompletedEvent extends BaseEventContext {
196
- requestId: string;
197
- provider: string;
198
- model: string;
199
- inputLength: number;
200
- outputLength: number;
201
- duration: number;
202
- }
203
- /** Emitted when summarize usage metrics are available. */
204
- export interface SummarizeUsageEvent extends BaseEventContext {
205
- requestId: string;
206
- model: string;
207
- usage: TokenUsage;
208
- }
209
- /** Emitted when an image request starts. */
210
- export interface ImageRequestStartedEvent extends BaseEventContext {
211
- requestId: string;
212
- provider: string;
213
- model: string;
214
- prompt: string;
215
- numberOfImages?: number;
216
- size?: string;
217
- }
218
- /** Emitted when an image request completes. */
219
- export interface ImageRequestCompletedEvent extends BaseEventContext {
220
- requestId: string;
221
- provider: string;
222
- model: string;
223
- images: Array<{
224
- url?: string;
225
- b64Json?: string;
226
- }>;
227
- duration: number;
228
- }
229
- /** Emitted when image usage metrics are available. */
230
- export interface ImageUsageEvent extends BaseEventContext {
231
- requestId: string;
232
- model: string;
233
- usage: ImageUsage;
234
- }
235
- /** Emitted when a speech request starts. */
236
- export interface SpeechRequestStartedEvent extends BaseEventContext {
237
- requestId: string;
238
- provider: string;
239
- model: string;
240
- text: string;
241
- voice?: string;
242
- format?: string;
243
- speed?: number;
244
- }
245
- /** Emitted when a speech request completes. */
246
- export interface SpeechRequestCompletedEvent extends BaseEventContext {
247
- requestId: string;
248
- provider: string;
249
- model: string;
250
- audio: string;
251
- format: string;
252
- duration: number;
253
- audioDuration?: number;
254
- contentType?: string;
255
- }
256
- /** Emitted when speech usage metrics are available. */
257
- export interface SpeechUsageEvent extends BaseEventContext {
258
- requestId: string;
259
- model: string;
260
- usage: TokenUsage;
261
- }
262
- /** Emitted when a transcription request starts. */
263
- export interface TranscriptionRequestStartedEvent extends BaseEventContext {
264
- requestId: string;
265
- provider: string;
266
- model: string;
267
- language?: string;
268
- prompt?: string;
269
- responseFormat?: string;
270
- }
271
- /** Emitted when a transcription request completes. */
272
- export interface TranscriptionRequestCompletedEvent extends BaseEventContext {
273
- requestId: string;
274
- provider: string;
275
- model: string;
276
- text: string;
277
- language?: string;
278
- duration: number;
279
- }
280
- /** Emitted when transcription usage metrics are available. */
281
- export interface TranscriptionUsageEvent extends BaseEventContext {
282
- requestId: string;
283
- model: string;
284
- usage: TokenUsage;
285
- }
286
- /** Emitted when a video request starts. */
287
- export interface VideoRequestStartedEvent extends BaseEventContext {
288
- requestId: string;
289
- provider: string;
290
- model: string;
291
- requestType: 'create' | 'status' | 'url';
292
- jobId?: string;
293
- prompt?: string;
294
- size?: string;
295
- duration?: number;
296
- }
297
- /** Emitted when a video request completes. */
298
- export interface VideoRequestCompletedEvent extends BaseEventContext {
299
- requestId: string;
300
- provider: string;
301
- model: string;
302
- requestType: 'create' | 'status' | 'url';
303
- jobId?: string;
304
- status?: 'pending' | 'processing' | 'completed' | 'failed';
305
- progress?: number;
306
- url?: string;
307
- error?: string;
308
- duration: number;
309
- }
310
- /** Emitted when video usage metrics are available. */
311
- export interface VideoUsageEvent extends BaseEventContext {
312
- requestId: string;
313
- model: string;
314
- usage: TokenUsage;
315
- }
316
- /** Emitted when a client is created. */
317
- export interface ClientCreatedEvent {
318
- clientId: string;
319
- initialMessageCount: number;
320
- timestamp: number;
321
- }
322
- /** Emitted when client loading state changes. */
323
- export interface ClientLoadingChangedEvent {
324
- clientId: string;
325
- isLoading: boolean;
326
- timestamp: number;
327
- }
328
- /** Emitted when client error state changes. */
329
- export interface ClientErrorChangedEvent {
330
- clientId: string;
331
- error: string | null;
332
- timestamp: number;
333
- }
334
- /** Emitted when client messages are cleared. */
335
- export interface ClientMessagesClearedEvent {
336
- clientId: string;
337
- timestamp: number;
338
- }
339
- /** Emitted when client is reloaded. */
340
- export interface ClientReloadedEvent {
341
- clientId: string;
342
- fromMessageIndex: number;
343
- timestamp: number;
344
- }
345
- /** Emitted when client stops. */
346
- export interface ClientStoppedEvent {
347
- clientId: string;
348
- timestamp: number;
349
- }
350
- export interface AIDevtoolsEventMap {
351
- 'tanstack-ai-devtools:text:request:started': TextRequestStartedEvent;
352
- 'tanstack-ai-devtools:text:request:completed': TextRequestCompletedEvent;
353
- 'tanstack-ai-devtools:text:message:created': TextMessageCreatedEvent;
354
- 'tanstack-ai-devtools:text:message:user': TextMessageUserEvent;
355
- 'tanstack-ai-devtools:text:chunk:content': TextChunkContentEvent;
356
- 'tanstack-ai-devtools:text:chunk:tool-call': TextChunkToolCallEvent;
357
- 'tanstack-ai-devtools:text:chunk:tool-result': TextChunkToolResultEvent;
358
- 'tanstack-ai-devtools:text:chunk:thinking': TextChunkThinkingEvent;
359
- 'tanstack-ai-devtools:text:chunk:done': TextChunkDoneEvent;
360
- 'tanstack-ai-devtools:text:chunk:error': TextChunkErrorEvent;
361
- 'tanstack-ai-devtools:text:usage': TextUsageEvent;
362
- 'tanstack-ai-devtools:tools:approval:requested': ToolsApprovalRequestedEvent;
363
- 'tanstack-ai-devtools:tools:approval:responded': ToolsApprovalRespondedEvent;
364
- 'tanstack-ai-devtools:tools:input:available': ToolsInputAvailableEvent;
365
- 'tanstack-ai-devtools:tools:call:completed': ToolsCallCompletedEvent;
366
- 'tanstack-ai-devtools:tools:result:added': ToolsResultAddedEvent;
367
- 'tanstack-ai-devtools:tools:call:updated': ToolsCallUpdatedEvent;
368
- 'tanstack-ai-devtools:summarize:request:started': SummarizeRequestStartedEvent;
369
- 'tanstack-ai-devtools:summarize:request:completed': SummarizeRequestCompletedEvent;
370
- 'tanstack-ai-devtools:summarize:usage': SummarizeUsageEvent;
371
- 'tanstack-ai-devtools:image:request:started': ImageRequestStartedEvent;
372
- 'tanstack-ai-devtools:image:request:completed': ImageRequestCompletedEvent;
373
- 'tanstack-ai-devtools:image:usage': ImageUsageEvent;
374
- 'tanstack-ai-devtools:speech:request:started': SpeechRequestStartedEvent;
375
- 'tanstack-ai-devtools:speech:request:completed': SpeechRequestCompletedEvent;
376
- 'tanstack-ai-devtools:speech:usage': SpeechUsageEvent;
377
- 'tanstack-ai-devtools:transcription:request:started': TranscriptionRequestStartedEvent;
378
- 'tanstack-ai-devtools:transcription:request:completed': TranscriptionRequestCompletedEvent;
379
- 'tanstack-ai-devtools:transcription:usage': TranscriptionUsageEvent;
380
- 'tanstack-ai-devtools:video:request:started': VideoRequestStartedEvent;
381
- 'tanstack-ai-devtools:video:request:completed': VideoRequestCompletedEvent;
382
- 'tanstack-ai-devtools:video:usage': VideoUsageEvent;
383
- 'tanstack-ai-devtools:client:created': ClientCreatedEvent;
384
- 'tanstack-ai-devtools:client:loading:changed': ClientLoadingChangedEvent;
385
- 'tanstack-ai-devtools:client:error:changed': ClientErrorChangedEvent;
386
- 'tanstack-ai-devtools:client:messages:cleared': ClientMessagesClearedEvent;
387
- 'tanstack-ai-devtools:client:reloaded': ClientReloadedEvent;
388
- 'tanstack-ai-devtools:client:stopped': ClientStoppedEvent;
389
- }
390
- declare class AiEventClient extends EventClient<AIDevtoolsEventMap> {
391
- constructor();
392
- }
393
- declare const aiEventClient: AiEventClient;
394
- export { aiEventClient };
@@ -1,13 +0,0 @@
1
- import { EventClient } from "@tanstack/devtools-event-client";
2
- class AiEventClient extends EventClient {
3
- constructor() {
4
- super({
5
- pluginId: "tanstack-ai-devtools"
6
- });
7
- }
8
- }
9
- const aiEventClient = new AiEventClient();
10
- export {
11
- aiEventClient
12
- };
13
- //# sourceMappingURL=event-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-client.js","sources":["../../src/event-client.ts"],"sourcesContent":["import { EventClient } from '@tanstack/devtools-event-client'\nimport type { MessagePart, ToolCall } from './types'\n\n/**\n * Tool call states - track the lifecycle of a tool call\n * Must match @tanstack/ai-client ToolCallState\n */\nexport type ToolCallState =\n | 'awaiting-input' // Received start but no arguments yet\n | 'input-streaming' // Partial arguments received\n | 'input-complete' // All arguments received\n | 'approval-requested' // Waiting for user approval\n | 'approval-responded' // User has approved/denied\n\n/**\n * Tool result states - track the lifecycle of a tool result\n * Must match @tanstack/ai-client ToolResultState\n */\nexport type ToolResultState =\n | 'streaming' // Placeholder for future streamed output\n | 'complete' // Result is complete\n | 'error' // Error occurred\n\nexport interface TokenUsage {\n promptTokens: number\n completionTokens: number\n totalTokens: number\n}\n\nexport interface ImageUsage {\n inputTokens?: number\n outputTokens?: number\n totalTokens?: number\n}\n\ninterface BaseEventContext {\n timestamp: number\n requestId?: string\n streamId?: string\n messageId?: string\n clientId?: string\n source?: 'client' | 'server'\n provider?: string\n model?: string\n systemPrompts?: Array<string>\n options?: Record<string, unknown>\n modelOptions?: Record<string, unknown>\n toolNames?: Array<string>\n messageCount?: number\n hasTools?: boolean\n streaming?: boolean\n}\n\n// ===========================\n// Text Events\n// ===========================\n\n/** Emitted when a text request starts execution. */\nexport interface TextRequestStartedEvent extends BaseEventContext {\n requestId: string\n streamId: string\n provider: string\n model: string\n messageCount: number\n hasTools: boolean\n streaming: boolean\n}\n\n/** Emitted when a text request completes with final output. */\nexport interface TextRequestCompletedEvent extends BaseEventContext {\n requestId: string\n streamId: string\n provider: string\n model: string\n content: string\n finishReason?: string\n usage?: TokenUsage\n duration?: number\n streaming: boolean\n messageCount: number\n hasTools: boolean\n}\n\n/** Emitted when a message is created (user/assistant/system/tool). */\nexport interface TextMessageCreatedEvent extends BaseEventContext {\n requestId?: string\n streamId?: string\n messageId: string\n role: 'user' | 'assistant' | 'system' | 'tool'\n content: string\n parts?: Array<MessagePart>\n toolCalls?: Array<ToolCall>\n messageIndex?: number\n}\n\n/** Emitted when a user message is created (full content). */\nexport interface TextMessageUserEvent extends TextMessageCreatedEvent {\n role: 'user'\n}\n\n/** Emitted for streaming text content chunks. */\nexport interface TextChunkContentEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n content: string\n delta?: string\n}\n\n/** Emitted for streaming tool call chunks. */\nexport interface TextChunkToolCallEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n toolCallId: string\n toolName: string\n index: number\n arguments: string\n}\n\n/** Emitted for streaming tool result chunks. */\nexport interface TextChunkToolResultEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n toolCallId: string\n result: string\n}\n\n/** Emitted for streaming thinking chunks. */\nexport interface TextChunkThinkingEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n content: string\n delta?: string\n}\n\n/** Emitted when a stream finishes. */\nexport interface TextChunkDoneEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n finishReason: string | null\n usage?: TokenUsage\n}\n\n/** Emitted on stream errors. */\nexport interface TextChunkErrorEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n error: string\n}\n\n/** Emitted when usage metrics are available for text. */\nexport interface TextUsageEvent extends BaseEventContext {\n requestId: string\n streamId: string\n messageId?: string\n model: string\n usage: TokenUsage\n}\n\n// ===========================\n// Tool Events\n// ===========================\n\n/** Emitted when tool approval is required. */\nexport interface ToolsApprovalRequestedEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n toolCallId: string\n toolName: string\n input: unknown\n approvalId: string\n}\n\n/** Emitted when user responds to an approval request. */\nexport interface ToolsApprovalRespondedEvent extends BaseEventContext {\n toolCallId: string\n approvalId: string\n approved: boolean\n}\n\n/** Emitted when tool input is available for client execution. */\nexport interface ToolsInputAvailableEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n toolCallId: string\n toolName: string\n input: unknown\n}\n\n/** Emitted when a tool call completes with a result. */\nexport interface ToolsCallCompletedEvent extends BaseEventContext {\n requestId?: string\n streamId: string\n messageId?: string\n toolCallId: string\n toolName: string\n result: unknown\n duration: number\n}\n\n/** Emitted when a client tool result is added. */\nexport interface ToolsResultAddedEvent extends BaseEventContext {\n toolCallId: string\n toolName: string\n output: unknown\n state: 'output-available' | 'output-error'\n}\n\n/** Emitted when tool call state changes on the client. */\nexport interface ToolsCallUpdatedEvent extends BaseEventContext {\n streamId: string\n messageId: string\n toolCallId: string\n toolName: string\n state: ToolCallState\n arguments: string\n}\n\n// ===========================\n// Summarize Events\n// ===========================\n\n/** Emitted when summarize starts. */\nexport interface SummarizeRequestStartedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n inputLength: number\n}\n\n/** Emitted when summarize completes. */\nexport interface SummarizeRequestCompletedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n inputLength: number\n outputLength: number\n duration: number\n}\n\n/** Emitted when summarize usage metrics are available. */\nexport interface SummarizeUsageEvent extends BaseEventContext {\n requestId: string\n model: string\n usage: TokenUsage\n}\n\n// ===========================\n// Image Events\n// ===========================\n\n/** Emitted when an image request starts. */\nexport interface ImageRequestStartedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n prompt: string\n numberOfImages?: number\n size?: string\n}\n\n/** Emitted when an image request completes. */\nexport interface ImageRequestCompletedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n images: Array<{ url?: string; b64Json?: string }>\n duration: number\n}\n\n/** Emitted when image usage metrics are available. */\nexport interface ImageUsageEvent extends BaseEventContext {\n requestId: string\n model: string\n usage: ImageUsage\n}\n\n// ===========================\n// Speech Events\n// ===========================\n\n/** Emitted when a speech request starts. */\nexport interface SpeechRequestStartedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n text: string\n voice?: string\n format?: string\n speed?: number\n}\n\n/** Emitted when a speech request completes. */\nexport interface SpeechRequestCompletedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n audio: string\n format: string\n duration: number\n audioDuration?: number\n contentType?: string\n}\n\n/** Emitted when speech usage metrics are available. */\nexport interface SpeechUsageEvent extends BaseEventContext {\n requestId: string\n model: string\n usage: TokenUsage\n}\n\n// ===========================\n// Transcription Events\n// ===========================\n\n/** Emitted when a transcription request starts. */\nexport interface TranscriptionRequestStartedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n language?: string\n prompt?: string\n responseFormat?: string\n}\n\n/** Emitted when a transcription request completes. */\nexport interface TranscriptionRequestCompletedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n text: string\n language?: string\n duration: number\n}\n\n/** Emitted when transcription usage metrics are available. */\nexport interface TranscriptionUsageEvent extends BaseEventContext {\n requestId: string\n model: string\n usage: TokenUsage\n}\n\n// ===========================\n// Video Events\n// ===========================\n\n/** Emitted when a video request starts. */\nexport interface VideoRequestStartedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n requestType: 'create' | 'status' | 'url'\n jobId?: string\n prompt?: string\n size?: string\n duration?: number\n}\n\n/** Emitted when a video request completes. */\nexport interface VideoRequestCompletedEvent extends BaseEventContext {\n requestId: string\n provider: string\n model: string\n requestType: 'create' | 'status' | 'url'\n jobId?: string\n status?: 'pending' | 'processing' | 'completed' | 'failed'\n progress?: number\n url?: string\n error?: string\n duration: number\n}\n\n/** Emitted when video usage metrics are available. */\nexport interface VideoUsageEvent extends BaseEventContext {\n requestId: string\n model: string\n usage: TokenUsage\n}\n\n// ===========================\n// Client Events\n// ===========================\n\n/** Emitted when a client is created. */\nexport interface ClientCreatedEvent {\n clientId: string\n initialMessageCount: number\n timestamp: number\n}\n\n/** Emitted when client loading state changes. */\nexport interface ClientLoadingChangedEvent {\n clientId: string\n isLoading: boolean\n timestamp: number\n}\n\n/** Emitted when client error state changes. */\nexport interface ClientErrorChangedEvent {\n clientId: string\n error: string | null\n timestamp: number\n}\n\n/** Emitted when client messages are cleared. */\nexport interface ClientMessagesClearedEvent {\n clientId: string\n timestamp: number\n}\n\n/** Emitted when client is reloaded. */\nexport interface ClientReloadedEvent {\n clientId: string\n fromMessageIndex: number\n timestamp: number\n}\n\n/** Emitted when client stops. */\nexport interface ClientStoppedEvent {\n clientId: string\n timestamp: number\n}\n\nexport interface AIDevtoolsEventMap {\n // Text events\n 'tanstack-ai-devtools:text:request:started': TextRequestStartedEvent\n 'tanstack-ai-devtools:text:request:completed': TextRequestCompletedEvent\n 'tanstack-ai-devtools:text:message:created': TextMessageCreatedEvent\n 'tanstack-ai-devtools:text:message:user': TextMessageUserEvent\n 'tanstack-ai-devtools:text:chunk:content': TextChunkContentEvent\n 'tanstack-ai-devtools:text:chunk:tool-call': TextChunkToolCallEvent\n 'tanstack-ai-devtools:text:chunk:tool-result': TextChunkToolResultEvent\n 'tanstack-ai-devtools:text:chunk:thinking': TextChunkThinkingEvent\n 'tanstack-ai-devtools:text:chunk:done': TextChunkDoneEvent\n 'tanstack-ai-devtools:text:chunk:error': TextChunkErrorEvent\n 'tanstack-ai-devtools:text:usage': TextUsageEvent\n\n // Tool events\n 'tanstack-ai-devtools:tools:approval:requested': ToolsApprovalRequestedEvent\n 'tanstack-ai-devtools:tools:approval:responded': ToolsApprovalRespondedEvent\n 'tanstack-ai-devtools:tools:input:available': ToolsInputAvailableEvent\n 'tanstack-ai-devtools:tools:call:completed': ToolsCallCompletedEvent\n 'tanstack-ai-devtools:tools:result:added': ToolsResultAddedEvent\n 'tanstack-ai-devtools:tools:call:updated': ToolsCallUpdatedEvent\n\n // Summarize events\n 'tanstack-ai-devtools:summarize:request:started': SummarizeRequestStartedEvent\n 'tanstack-ai-devtools:summarize:request:completed': SummarizeRequestCompletedEvent\n 'tanstack-ai-devtools:summarize:usage': SummarizeUsageEvent\n\n // Image events\n 'tanstack-ai-devtools:image:request:started': ImageRequestStartedEvent\n 'tanstack-ai-devtools:image:request:completed': ImageRequestCompletedEvent\n 'tanstack-ai-devtools:image:usage': ImageUsageEvent\n\n // Speech events\n 'tanstack-ai-devtools:speech:request:started': SpeechRequestStartedEvent\n 'tanstack-ai-devtools:speech:request:completed': SpeechRequestCompletedEvent\n 'tanstack-ai-devtools:speech:usage': SpeechUsageEvent\n\n // Transcription events\n 'tanstack-ai-devtools:transcription:request:started': TranscriptionRequestStartedEvent\n 'tanstack-ai-devtools:transcription:request:completed': TranscriptionRequestCompletedEvent\n 'tanstack-ai-devtools:transcription:usage': TranscriptionUsageEvent\n\n // Video events\n 'tanstack-ai-devtools:video:request:started': VideoRequestStartedEvent\n 'tanstack-ai-devtools:video:request:completed': VideoRequestCompletedEvent\n 'tanstack-ai-devtools:video:usage': VideoUsageEvent\n\n // Client events\n 'tanstack-ai-devtools:client:created': ClientCreatedEvent\n 'tanstack-ai-devtools:client:loading:changed': ClientLoadingChangedEvent\n 'tanstack-ai-devtools:client:error:changed': ClientErrorChangedEvent\n 'tanstack-ai-devtools:client:messages:cleared': ClientMessagesClearedEvent\n 'tanstack-ai-devtools:client:reloaded': ClientReloadedEvent\n 'tanstack-ai-devtools:client:stopped': ClientStoppedEvent\n}\n\nclass AiEventClient extends EventClient<AIDevtoolsEventMap> {\n constructor() {\n super({\n pluginId: 'tanstack-ai-devtools',\n })\n }\n}\n\nconst aiEventClient = new AiEventClient()\n\nexport { aiEventClient }\n"],"names":[],"mappings":";AAseA,MAAM,sBAAsB,YAAgC;AAAA,EAC1D,cAAc;AACZ,UAAM;AAAA,MACJ,UAAU;AAAA,IAAA,CACX;AAAA,EACH;AACF;AAEA,MAAM,gBAAgB,IAAI,cAAA;"}