@sqlrooms/ai 0.7.0 → 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 (129) hide show
  1. package/README.md +377 -25
  2. package/dist/AiSlice.d.ts +489 -307
  3. package/dist/AiSlice.d.ts.map +1 -1
  4. package/dist/AiSlice.js +267 -177
  5. package/dist/AiSlice.js.map +1 -1
  6. package/dist/analysis.d.ts +25 -19
  7. package/dist/analysis.d.ts.map +1 -1
  8. package/dist/analysis.js +86 -145
  9. package/dist/analysis.js.map +1 -1
  10. package/dist/components/AnalysisAnswer.d.ts +14 -0
  11. package/dist/components/AnalysisAnswer.d.ts.map +1 -0
  12. package/dist/components/AnalysisAnswer.js +14 -0
  13. package/dist/components/AnalysisAnswer.js.map +1 -0
  14. package/dist/{AnalysisResult.d.ts → components/AnalysisResult.d.ts} +2 -1
  15. package/dist/components/AnalysisResult.d.ts.map +1 -0
  16. package/dist/components/AnalysisResult.js +46 -0
  17. package/dist/components/AnalysisResult.js.map +1 -0
  18. package/dist/components/AnalysisResultsContainer.d.ts +5 -0
  19. package/dist/components/AnalysisResultsContainer.d.ts.map +1 -0
  20. package/dist/components/AnalysisResultsContainer.js +27 -0
  21. package/dist/components/AnalysisResultsContainer.js.map +1 -0
  22. package/dist/components/ErrorMessage.d.ts +4 -0
  23. package/dist/components/ErrorMessage.d.ts.map +1 -0
  24. package/dist/components/ErrorMessage.js +7 -0
  25. package/dist/components/ErrorMessage.js.map +1 -0
  26. package/dist/components/MessageContainer.d.ts +10 -0
  27. package/dist/components/MessageContainer.d.ts.map +1 -0
  28. package/dist/components/MessageContainer.js +17 -0
  29. package/dist/components/MessageContainer.js.map +1 -0
  30. package/dist/components/ModelSelector.d.ts +13 -0
  31. package/dist/components/ModelSelector.d.ts.map +1 -0
  32. package/dist/components/ModelSelector.js +29 -0
  33. package/dist/components/ModelSelector.js.map +1 -0
  34. package/dist/components/QueryControls.d.ts +8 -0
  35. package/dist/components/QueryControls.d.ts.map +1 -0
  36. package/dist/components/QueryControls.js +45 -0
  37. package/dist/components/QueryControls.js.map +1 -0
  38. package/dist/components/SessionControls.d.ts +17 -0
  39. package/dist/components/SessionControls.d.ts.map +1 -0
  40. package/dist/components/SessionControls.js +20 -0
  41. package/dist/components/SessionControls.js.map +1 -0
  42. package/dist/components/session/DeleteSessionButton.d.ts +19 -0
  43. package/dist/components/session/DeleteSessionButton.d.ts.map +1 -0
  44. package/dist/components/session/DeleteSessionButton.js +54 -0
  45. package/dist/components/session/DeleteSessionButton.js.map +1 -0
  46. package/dist/components/session/DeleteSessionDialog.d.ts +27 -0
  47. package/dist/components/session/DeleteSessionDialog.d.ts.map +1 -0
  48. package/dist/components/session/DeleteSessionDialog.js +19 -0
  49. package/dist/components/session/DeleteSessionDialog.js.map +1 -0
  50. package/dist/components/session/SessionActions.d.ts +18 -0
  51. package/dist/components/session/SessionActions.d.ts.map +1 -0
  52. package/dist/components/session/SessionActions.js +19 -0
  53. package/dist/components/session/SessionActions.js.map +1 -0
  54. package/dist/components/session/SessionDropdown.d.ts +18 -0
  55. package/dist/components/session/SessionDropdown.d.ts.map +1 -0
  56. package/dist/components/session/SessionDropdown.js +21 -0
  57. package/dist/components/session/SessionDropdown.js.map +1 -0
  58. package/dist/components/session/SessionTitle.d.ts +18 -0
  59. package/dist/components/session/SessionTitle.d.ts.map +1 -0
  60. package/dist/components/session/SessionTitle.js +22 -0
  61. package/dist/components/session/SessionTitle.js.map +1 -0
  62. package/dist/components/session/SessionType.d.ts +24 -0
  63. package/dist/components/session/SessionType.d.ts.map +1 -0
  64. package/dist/components/session/SessionType.js +2 -0
  65. package/dist/components/session/SessionType.js.map +1 -0
  66. package/dist/components/session/index.d.ts +7 -0
  67. package/dist/components/session/index.d.ts.map +1 -0
  68. package/dist/components/session/index.js +7 -0
  69. package/dist/components/session/index.js.map +1 -0
  70. package/dist/components/tools/QueryToolResult.d.ts +7 -0
  71. package/dist/components/tools/QueryToolResult.d.ts.map +1 -0
  72. package/dist/components/tools/QueryToolResult.js +9 -0
  73. package/dist/components/tools/QueryToolResult.js.map +1 -0
  74. package/dist/components/tools/ToolChart.d.ts +13 -0
  75. package/dist/components/tools/ToolChart.d.ts.map +1 -0
  76. package/dist/components/tools/ToolChart.js +14 -0
  77. package/dist/components/tools/ToolChart.js.map +1 -0
  78. package/dist/components/tools/ToolQuery.d.ts +7 -0
  79. package/dist/components/tools/ToolQuery.d.ts.map +1 -0
  80. package/dist/components/tools/ToolQuery.js +9 -0
  81. package/dist/components/tools/ToolQuery.js.map +1 -0
  82. package/dist/components/tools/ToolResult.d.ts +9 -0
  83. package/dist/components/tools/ToolResult.d.ts.map +1 -0
  84. package/dist/components/tools/ToolResult.js +32 -0
  85. package/dist/components/tools/ToolResult.js.map +1 -0
  86. package/dist/components/tools/ToolResultErrorBoundary.d.ts +19 -0
  87. package/dist/components/tools/ToolResultErrorBoundary.d.ts.map +1 -0
  88. package/dist/components/tools/ToolResultErrorBoundary.js +23 -0
  89. package/dist/components/tools/ToolResultErrorBoundary.js.map +1 -0
  90. package/dist/hooks/useScrollToBottom.d.ts +82 -0
  91. package/dist/hooks/useScrollToBottom.d.ts.map +1 -0
  92. package/dist/hooks/useScrollToBottom.js +140 -0
  93. package/dist/hooks/useScrollToBottom.js.map +1 -0
  94. package/dist/index.d.ts +16 -5
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +15 -5
  97. package/dist/index.js.map +1 -1
  98. package/dist/schemas.d.ts +592 -201
  99. package/dist/schemas.d.ts.map +1 -1
  100. package/dist/schemas.js +36 -11
  101. package/dist/schemas.js.map +1 -1
  102. package/package.json +11 -10
  103. package/dist/AnalysisResult.d.ts.map +0 -1
  104. package/dist/AnalysisResult.js +0 -56
  105. package/dist/AnalysisResult.js.map +0 -1
  106. package/dist/AnalysisResultsContainer.d.ts +0 -2
  107. package/dist/AnalysisResultsContainer.d.ts.map +0 -1
  108. package/dist/AnalysisResultsContainer.js +0 -15
  109. package/dist/AnalysisResultsContainer.js.map +0 -1
  110. package/dist/QueryControls.d.ts +0 -6
  111. package/dist/QueryControls.d.ts.map +0 -1
  112. package/dist/QueryControls.js +0 -28
  113. package/dist/QueryControls.js.map +0 -1
  114. package/dist/QueryResult.d.ts +0 -9
  115. package/dist/QueryResult.d.ts.map +0 -1
  116. package/dist/QueryResult.js +0 -46
  117. package/dist/QueryResult.js.map +0 -1
  118. package/dist/ToolCall.d.ts +0 -66
  119. package/dist/ToolCall.d.ts.map +0 -1
  120. package/dist/ToolCall.js +0 -59
  121. package/dist/ToolCall.js.map +0 -1
  122. package/dist/ToolResult.d.ts +0 -10
  123. package/dist/ToolResult.d.ts.map +0 -1
  124. package/dist/ToolResult.js +0 -39
  125. package/dist/ToolResult.js.map +0 -1
  126. package/dist/hooks/use-scroll-to-bottom.d.ts +0 -7
  127. package/dist/hooks/use-scroll-to-bottom.d.ts.map +0 -1
  128. package/dist/hooks/use-scroll-to-bottom.js +0 -51
  129. package/dist/hooks/use-scroll-to-bottom.js.map +0 -1
package/dist/AiSlice.d.ts CHANGED
@@ -1,374 +1,556 @@
1
+ import { ExtendedTool } from '@openassistant/core';
1
2
  import { ProjectState, type StateCreator } from '@sqlrooms/project-builder';
2
3
  import { BaseProjectConfig } from '@sqlrooms/project-config';
3
- import { CoreAssistantMessage, CoreToolMessage, CoreUserMessage } from 'ai';
4
4
  import { z } from 'zod';
5
- type AiMessage = (CoreToolMessage | CoreAssistantMessage | CoreUserMessage) & {
6
- id: string;
7
- };
5
+ import { AnalysisSessionSchema } from './schemas';
6
+ import { DataTable } from '@sqlrooms/duckdb';
8
7
  export declare const AiSliceConfig: z.ZodObject<{
9
8
  ai: z.ZodObject<{
10
- modelProvider: z.ZodString;
11
- model: z.ZodString;
12
- analysisResults: z.ZodArray<z.ZodObject<{
9
+ sessions: z.ZodArray<z.ZodObject<{
13
10
  id: z.ZodString;
14
- prompt: z.ZodString;
15
- toolResults: z.ZodArray<z.ZodObject<{
16
- toolName: z.ZodString;
17
- toolCallId: z.ZodString;
18
- args: z.ZodRecord<z.ZodString, z.ZodAny>;
19
- result: z.ZodUnion<[z.ZodObject<{
20
- success: z.ZodLiteral<false>;
11
+ name: z.ZodString;
12
+ modelProvider: z.ZodString;
13
+ model: z.ZodString;
14
+ analysisResults: z.ZodArray<z.ZodObject<{
15
+ id: z.ZodString;
16
+ prompt: z.ZodString;
17
+ streamMessage: z.ZodObject<{
18
+ reasoning: z.ZodOptional<z.ZodString>;
19
+ toolCallMessages: z.ZodOptional<z.ZodArray<z.ZodObject<{
20
+ toolName: z.ZodString;
21
+ toolCallId: z.ZodString;
22
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
23
+ isCompleted: z.ZodBoolean;
24
+ llmResult: z.ZodOptional<z.ZodUnknown>;
25
+ additionalData: z.ZodOptional<z.ZodUnknown>;
26
+ text: z.ZodOptional<z.ZodString>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ toolName: string;
29
+ toolCallId: string;
30
+ args: Record<string, unknown>;
31
+ isCompleted: boolean;
32
+ text?: string | undefined;
33
+ llmResult?: unknown;
34
+ additionalData?: unknown;
35
+ }, {
36
+ toolName: string;
37
+ toolCallId: string;
38
+ args: Record<string, unknown>;
39
+ isCompleted: boolean;
40
+ text?: string | undefined;
41
+ llmResult?: unknown;
42
+ additionalData?: unknown;
43
+ }>, "many">>;
44
+ analysis: z.ZodOptional<z.ZodString>;
45
+ text: z.ZodOptional<z.ZodString>;
46
+ parts: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{
47
+ type: z.ZodLiteral<"text">;
48
+ text: z.ZodString;
49
+ }, "strip", z.ZodTypeAny, {
50
+ text: string;
51
+ type: "text";
52
+ }, {
53
+ text: string;
54
+ type: "text";
55
+ }>, z.ZodObject<{
56
+ type: z.ZodLiteral<"tool">;
57
+ toolCallMessages: z.ZodArray<z.ZodObject<{
58
+ toolName: z.ZodString;
59
+ toolCallId: z.ZodString;
60
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
61
+ isCompleted: z.ZodBoolean;
62
+ llmResult: z.ZodOptional<z.ZodUnknown>;
63
+ additionalData: z.ZodOptional<z.ZodUnknown>;
64
+ text: z.ZodOptional<z.ZodString>;
65
+ }, "strip", z.ZodTypeAny, {
66
+ toolName: string;
67
+ toolCallId: string;
68
+ args: Record<string, unknown>;
69
+ isCompleted: boolean;
70
+ text?: string | undefined;
71
+ llmResult?: unknown;
72
+ additionalData?: unknown;
73
+ }, {
74
+ toolName: string;
75
+ toolCallId: string;
76
+ args: Record<string, unknown>;
77
+ isCompleted: boolean;
78
+ text?: string | undefined;
79
+ llmResult?: unknown;
80
+ additionalData?: unknown;
81
+ }>, "many">;
82
+ }, "strip", z.ZodTypeAny, {
83
+ type: "tool";
84
+ toolCallMessages: {
85
+ toolName: string;
86
+ toolCallId: string;
87
+ args: Record<string, unknown>;
88
+ isCompleted: boolean;
89
+ text?: string | undefined;
90
+ llmResult?: unknown;
91
+ additionalData?: unknown;
92
+ }[];
93
+ }, {
94
+ type: "tool";
95
+ toolCallMessages: {
96
+ toolName: string;
97
+ toolCallId: string;
98
+ args: Record<string, unknown>;
99
+ isCompleted: boolean;
100
+ text?: string | undefined;
101
+ llmResult?: unknown;
102
+ additionalData?: unknown;
103
+ }[];
104
+ }>]>, "many">>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ text?: string | undefined;
107
+ toolCallMessages?: {
108
+ toolName: string;
109
+ toolCallId: string;
110
+ args: Record<string, unknown>;
111
+ isCompleted: boolean;
112
+ text?: string | undefined;
113
+ llmResult?: unknown;
114
+ additionalData?: unknown;
115
+ }[] | undefined;
116
+ reasoning?: string | undefined;
117
+ analysis?: string | undefined;
118
+ parts?: ({
119
+ text: string;
120
+ type: "text";
121
+ } | {
122
+ type: "tool";
123
+ toolCallMessages: {
124
+ toolName: string;
125
+ toolCallId: string;
126
+ args: Record<string, unknown>;
127
+ isCompleted: boolean;
128
+ text?: string | undefined;
129
+ llmResult?: unknown;
130
+ additionalData?: unknown;
131
+ }[];
132
+ })[] | undefined;
133
+ }, {
134
+ text?: string | undefined;
135
+ toolCallMessages?: {
136
+ toolName: string;
137
+ toolCallId: string;
138
+ args: Record<string, unknown>;
139
+ isCompleted: boolean;
140
+ text?: string | undefined;
141
+ llmResult?: unknown;
142
+ additionalData?: unknown;
143
+ }[] | undefined;
144
+ reasoning?: string | undefined;
145
+ analysis?: string | undefined;
146
+ parts?: ({
147
+ text: string;
148
+ type: "text";
149
+ } | {
150
+ type: "tool";
151
+ toolCallMessages: {
152
+ toolName: string;
153
+ toolCallId: string;
154
+ args: Record<string, unknown>;
155
+ isCompleted: boolean;
156
+ text?: string | undefined;
157
+ llmResult?: unknown;
158
+ additionalData?: unknown;
159
+ }[];
160
+ })[] | undefined;
161
+ }>;
162
+ errorMessage: z.ZodOptional<z.ZodObject<{
21
163
  error: z.ZodString;
22
164
  }, "strip", z.ZodTypeAny, {
23
- success: false;
24
165
  error: string;
25
166
  }, {
26
- success: false;
27
167
  error: string;
28
- }>, z.ZodObject<{
29
- success: z.ZodLiteral<true>;
30
- data: z.ZodRecord<z.ZodString, z.ZodAny>;
31
- }, "strip", z.ZodTypeAny, {
32
- success: true;
33
- data: Record<string, any>;
34
- }, {
35
- success: true;
36
- data: Record<string, any>;
37
- }>]>;
168
+ }>>;
169
+ isCompleted: z.ZodBoolean;
38
170
  }, "strip", z.ZodTypeAny, {
39
- toolName: string;
40
- toolCallId: string;
41
- args: Record<string, any>;
42
- result: {
43
- success: false;
44
- error: string;
45
- } | {
46
- success: true;
47
- data: Record<string, any>;
171
+ id: string;
172
+ prompt: string;
173
+ streamMessage: {
174
+ text?: string | undefined;
175
+ toolCallMessages?: {
176
+ toolName: string;
177
+ toolCallId: string;
178
+ args: Record<string, unknown>;
179
+ isCompleted: boolean;
180
+ text?: string | undefined;
181
+ llmResult?: unknown;
182
+ additionalData?: unknown;
183
+ }[] | undefined;
184
+ reasoning?: string | undefined;
185
+ analysis?: string | undefined;
186
+ parts?: ({
187
+ text: string;
188
+ type: "text";
189
+ } | {
190
+ type: "tool";
191
+ toolCallMessages: {
192
+ toolName: string;
193
+ toolCallId: string;
194
+ args: Record<string, unknown>;
195
+ isCompleted: boolean;
196
+ text?: string | undefined;
197
+ llmResult?: unknown;
198
+ additionalData?: unknown;
199
+ }[];
200
+ })[] | undefined;
48
201
  };
49
- }, {
50
- toolName: string;
51
- toolCallId: string;
52
- args: Record<string, any>;
53
- result: {
54
- success: false;
202
+ isCompleted: boolean;
203
+ errorMessage?: {
55
204
  error: string;
56
- } | {
57
- success: true;
58
- data: Record<string, any>;
59
- };
60
- }>, "many">;
61
- toolCalls: z.ZodArray<z.ZodObject<{
62
- toolName: z.ZodString;
63
- toolCallId: z.ZodString;
64
- args: z.ZodUnion<[z.ZodObject<{
65
- type: z.ZodLiteral<"query">;
66
- sqlQuery: z.ZodString;
67
- reasoning: z.ZodString;
68
- }, "strip", z.ZodTypeAny, {
69
- type: "query";
70
- sqlQuery: string;
71
- reasoning: string;
72
- }, {
73
- type: "query";
74
- sqlQuery: string;
75
- reasoning: string;
76
- }>, z.ZodObject<{
77
- sqlQuery: z.ZodString;
78
- vegaLiteSpec: z.ZodString;
79
- reasoning: z.ZodString;
80
- }, "strip", z.ZodTypeAny, {
81
- sqlQuery: string;
82
- reasoning: string;
83
- vegaLiteSpec: string;
84
- }, {
85
- sqlQuery: string;
86
- reasoning: string;
87
- vegaLiteSpec: string;
88
- }>]>;
89
- }, "strip", z.ZodTypeAny, {
90
- toolName: string;
91
- toolCallId: string;
92
- args: {
93
- type: "query";
94
- sqlQuery: string;
95
- reasoning: string;
96
- } | {
97
- sqlQuery: string;
98
- reasoning: string;
99
- vegaLiteSpec: string;
100
- };
205
+ } | undefined;
101
206
  }, {
102
- toolName: string;
103
- toolCallId: string;
104
- args: {
105
- type: "query";
106
- sqlQuery: string;
107
- reasoning: string;
108
- } | {
109
- sqlQuery: string;
110
- reasoning: string;
111
- vegaLiteSpec: string;
207
+ id: string;
208
+ prompt: string;
209
+ streamMessage: {
210
+ text?: string | undefined;
211
+ toolCallMessages?: {
212
+ toolName: string;
213
+ toolCallId: string;
214
+ args: Record<string, unknown>;
215
+ isCompleted: boolean;
216
+ text?: string | undefined;
217
+ llmResult?: unknown;
218
+ additionalData?: unknown;
219
+ }[] | undefined;
220
+ reasoning?: string | undefined;
221
+ analysis?: string | undefined;
222
+ parts?: ({
223
+ text: string;
224
+ type: "text";
225
+ } | {
226
+ type: "tool";
227
+ toolCallMessages: {
228
+ toolName: string;
229
+ toolCallId: string;
230
+ args: Record<string, unknown>;
231
+ isCompleted: boolean;
232
+ text?: string | undefined;
233
+ llmResult?: unknown;
234
+ additionalData?: unknown;
235
+ }[];
236
+ })[] | undefined;
112
237
  };
238
+ isCompleted: boolean;
239
+ errorMessage?: {
240
+ error: string;
241
+ } | undefined;
113
242
  }>, "many">;
114
- toolCallMessages: z.ZodArray<z.ZodObject<{
115
- toolCallId: z.ZodString;
116
- element: z.ZodAny;
117
- }, "strip", z.ZodTypeAny, {
118
- toolCallId: string;
119
- element?: any;
120
- }, {
121
- toolCallId: string;
122
- element?: any;
123
- }>, "many">;
124
- analysis: z.ZodString;
125
- isCompleted: z.ZodBoolean;
243
+ createdAt: z.ZodOptional<z.ZodDate>;
126
244
  }, "strip", z.ZodTypeAny, {
127
245
  id: string;
128
- prompt: string;
129
- toolResults: {
130
- toolName: string;
131
- toolCallId: string;
132
- args: Record<string, any>;
133
- result: {
134
- success: false;
135
- error: string;
136
- } | {
137
- success: true;
138
- data: Record<string, any>;
139
- };
140
- }[];
141
- toolCalls: {
142
- toolName: string;
143
- toolCallId: string;
144
- args: {
145
- type: "query";
146
- sqlQuery: string;
147
- reasoning: string;
148
- } | {
149
- sqlQuery: string;
150
- reasoning: string;
151
- vegaLiteSpec: string;
246
+ name: string;
247
+ modelProvider: string;
248
+ model: string;
249
+ analysisResults: {
250
+ id: string;
251
+ prompt: string;
252
+ streamMessage: {
253
+ text?: string | undefined;
254
+ toolCallMessages?: {
255
+ toolName: string;
256
+ toolCallId: string;
257
+ args: Record<string, unknown>;
258
+ isCompleted: boolean;
259
+ text?: string | undefined;
260
+ llmResult?: unknown;
261
+ additionalData?: unknown;
262
+ }[] | undefined;
263
+ reasoning?: string | undefined;
264
+ analysis?: string | undefined;
265
+ parts?: ({
266
+ text: string;
267
+ type: "text";
268
+ } | {
269
+ type: "tool";
270
+ toolCallMessages: {
271
+ toolName: string;
272
+ toolCallId: string;
273
+ args: Record<string, unknown>;
274
+ isCompleted: boolean;
275
+ text?: string | undefined;
276
+ llmResult?: unknown;
277
+ additionalData?: unknown;
278
+ }[];
279
+ })[] | undefined;
152
280
  };
281
+ isCompleted: boolean;
282
+ errorMessage?: {
283
+ error: string;
284
+ } | undefined;
153
285
  }[];
154
- toolCallMessages: {
155
- toolCallId: string;
156
- element?: any;
157
- }[];
158
- analysis: string;
159
- isCompleted: boolean;
286
+ createdAt?: Date | undefined;
160
287
  }, {
161
288
  id: string;
162
- prompt: string;
163
- toolResults: {
164
- toolName: string;
165
- toolCallId: string;
166
- args: Record<string, any>;
167
- result: {
168
- success: false;
169
- error: string;
170
- } | {
171
- success: true;
172
- data: Record<string, any>;
289
+ name: string;
290
+ modelProvider: string;
291
+ model: string;
292
+ analysisResults: {
293
+ id: string;
294
+ prompt: string;
295
+ streamMessage: {
296
+ text?: string | undefined;
297
+ toolCallMessages?: {
298
+ toolName: string;
299
+ toolCallId: string;
300
+ args: Record<string, unknown>;
301
+ isCompleted: boolean;
302
+ text?: string | undefined;
303
+ llmResult?: unknown;
304
+ additionalData?: unknown;
305
+ }[] | undefined;
306
+ reasoning?: string | undefined;
307
+ analysis?: string | undefined;
308
+ parts?: ({
309
+ text: string;
310
+ type: "text";
311
+ } | {
312
+ type: "tool";
313
+ toolCallMessages: {
314
+ toolName: string;
315
+ toolCallId: string;
316
+ args: Record<string, unknown>;
317
+ isCompleted: boolean;
318
+ text?: string | undefined;
319
+ llmResult?: unknown;
320
+ additionalData?: unknown;
321
+ }[];
322
+ })[] | undefined;
173
323
  };
324
+ isCompleted: boolean;
325
+ errorMessage?: {
326
+ error: string;
327
+ } | undefined;
174
328
  }[];
175
- toolCalls: {
176
- toolName: string;
177
- toolCallId: string;
178
- args: {
179
- type: "query";
180
- sqlQuery: string;
181
- reasoning: string;
182
- } | {
183
- sqlQuery: string;
184
- reasoning: string;
185
- vegaLiteSpec: string;
186
- };
187
- }[];
188
- toolCallMessages: {
189
- toolCallId: string;
190
- element?: any;
191
- }[];
192
- analysis: string;
193
- isCompleted: boolean;
329
+ createdAt?: Date | undefined;
194
330
  }>, "many">;
331
+ currentSessionId: z.ZodOptional<z.ZodString>;
195
332
  }, "strip", z.ZodTypeAny, {
196
- modelProvider: string;
197
- model: string;
198
- analysisResults: {
333
+ sessions: {
199
334
  id: string;
200
- prompt: string;
201
- toolResults: {
202
- toolName: string;
203
- toolCallId: string;
204
- args: Record<string, any>;
205
- result: {
206
- success: false;
207
- error: string;
208
- } | {
209
- success: true;
210
- data: Record<string, any>;
211
- };
212
- }[];
213
- toolCalls: {
214
- toolName: string;
215
- toolCallId: string;
216
- args: {
217
- type: "query";
218
- sqlQuery: string;
219
- reasoning: string;
220
- } | {
221
- sqlQuery: string;
222
- reasoning: string;
223
- vegaLiteSpec: string;
335
+ name: string;
336
+ modelProvider: string;
337
+ model: string;
338
+ analysisResults: {
339
+ id: string;
340
+ prompt: string;
341
+ streamMessage: {
342
+ text?: string | undefined;
343
+ toolCallMessages?: {
344
+ toolName: string;
345
+ toolCallId: string;
346
+ args: Record<string, unknown>;
347
+ isCompleted: boolean;
348
+ text?: string | undefined;
349
+ llmResult?: unknown;
350
+ additionalData?: unknown;
351
+ }[] | undefined;
352
+ reasoning?: string | undefined;
353
+ analysis?: string | undefined;
354
+ parts?: ({
355
+ text: string;
356
+ type: "text";
357
+ } | {
358
+ type: "tool";
359
+ toolCallMessages: {
360
+ toolName: string;
361
+ toolCallId: string;
362
+ args: Record<string, unknown>;
363
+ isCompleted: boolean;
364
+ text?: string | undefined;
365
+ llmResult?: unknown;
366
+ additionalData?: unknown;
367
+ }[];
368
+ })[] | undefined;
224
369
  };
370
+ isCompleted: boolean;
371
+ errorMessage?: {
372
+ error: string;
373
+ } | undefined;
225
374
  }[];
226
- toolCallMessages: {
227
- toolCallId: string;
228
- element?: any;
229
- }[];
230
- analysis: string;
231
- isCompleted: boolean;
375
+ createdAt?: Date | undefined;
232
376
  }[];
377
+ currentSessionId?: string | undefined;
233
378
  }, {
234
- modelProvider: string;
235
- model: string;
236
- analysisResults: {
379
+ sessions: {
237
380
  id: string;
238
- prompt: string;
239
- toolResults: {
240
- toolName: string;
241
- toolCallId: string;
242
- args: Record<string, any>;
243
- result: {
244
- success: false;
245
- error: string;
246
- } | {
247
- success: true;
248
- data: Record<string, any>;
249
- };
250
- }[];
251
- toolCalls: {
252
- toolName: string;
253
- toolCallId: string;
254
- args: {
255
- type: "query";
256
- sqlQuery: string;
257
- reasoning: string;
258
- } | {
259
- sqlQuery: string;
260
- reasoning: string;
261
- vegaLiteSpec: string;
381
+ name: string;
382
+ modelProvider: string;
383
+ model: string;
384
+ analysisResults: {
385
+ id: string;
386
+ prompt: string;
387
+ streamMessage: {
388
+ text?: string | undefined;
389
+ toolCallMessages?: {
390
+ toolName: string;
391
+ toolCallId: string;
392
+ args: Record<string, unknown>;
393
+ isCompleted: boolean;
394
+ text?: string | undefined;
395
+ llmResult?: unknown;
396
+ additionalData?: unknown;
397
+ }[] | undefined;
398
+ reasoning?: string | undefined;
399
+ analysis?: string | undefined;
400
+ parts?: ({
401
+ text: string;
402
+ type: "text";
403
+ } | {
404
+ type: "tool";
405
+ toolCallMessages: {
406
+ toolName: string;
407
+ toolCallId: string;
408
+ args: Record<string, unknown>;
409
+ isCompleted: boolean;
410
+ text?: string | undefined;
411
+ llmResult?: unknown;
412
+ additionalData?: unknown;
413
+ }[];
414
+ })[] | undefined;
262
415
  };
416
+ isCompleted: boolean;
417
+ errorMessage?: {
418
+ error: string;
419
+ } | undefined;
263
420
  }[];
264
- toolCallMessages: {
265
- toolCallId: string;
266
- element?: any;
267
- }[];
268
- analysis: string;
269
- isCompleted: boolean;
421
+ createdAt?: Date | undefined;
270
422
  }[];
423
+ currentSessionId?: string | undefined;
271
424
  }>;
272
425
  }, "strip", z.ZodTypeAny, {
273
426
  ai: {
274
- modelProvider: string;
275
- model: string;
276
- analysisResults: {
427
+ sessions: {
277
428
  id: string;
278
- prompt: string;
279
- toolResults: {
280
- toolName: string;
281
- toolCallId: string;
282
- args: Record<string, any>;
283
- result: {
284
- success: false;
285
- error: string;
286
- } | {
287
- success: true;
288
- data: Record<string, any>;
429
+ name: string;
430
+ modelProvider: string;
431
+ model: string;
432
+ analysisResults: {
433
+ id: string;
434
+ prompt: string;
435
+ streamMessage: {
436
+ text?: string | undefined;
437
+ toolCallMessages?: {
438
+ toolName: string;
439
+ toolCallId: string;
440
+ args: Record<string, unknown>;
441
+ isCompleted: boolean;
442
+ text?: string | undefined;
443
+ llmResult?: unknown;
444
+ additionalData?: unknown;
445
+ }[] | undefined;
446
+ reasoning?: string | undefined;
447
+ analysis?: string | undefined;
448
+ parts?: ({
449
+ text: string;
450
+ type: "text";
451
+ } | {
452
+ type: "tool";
453
+ toolCallMessages: {
454
+ toolName: string;
455
+ toolCallId: string;
456
+ args: Record<string, unknown>;
457
+ isCompleted: boolean;
458
+ text?: string | undefined;
459
+ llmResult?: unknown;
460
+ additionalData?: unknown;
461
+ }[];
462
+ })[] | undefined;
289
463
  };
464
+ isCompleted: boolean;
465
+ errorMessage?: {
466
+ error: string;
467
+ } | undefined;
290
468
  }[];
291
- toolCalls: {
292
- toolName: string;
293
- toolCallId: string;
294
- args: {
295
- type: "query";
296
- sqlQuery: string;
297
- reasoning: string;
298
- } | {
299
- sqlQuery: string;
300
- reasoning: string;
301
- vegaLiteSpec: string;
302
- };
303
- }[];
304
- toolCallMessages: {
305
- toolCallId: string;
306
- element?: any;
307
- }[];
308
- analysis: string;
309
- isCompleted: boolean;
469
+ createdAt?: Date | undefined;
310
470
  }[];
471
+ currentSessionId?: string | undefined;
311
472
  };
312
473
  }, {
313
474
  ai: {
314
- modelProvider: string;
315
- model: string;
316
- analysisResults: {
475
+ sessions: {
317
476
  id: string;
318
- prompt: string;
319
- toolResults: {
320
- toolName: string;
321
- toolCallId: string;
322
- args: Record<string, any>;
323
- result: {
324
- success: false;
325
- error: string;
326
- } | {
327
- success: true;
328
- data: Record<string, any>;
329
- };
330
- }[];
331
- toolCalls: {
332
- toolName: string;
333
- toolCallId: string;
334
- args: {
335
- type: "query";
336
- sqlQuery: string;
337
- reasoning: string;
338
- } | {
339
- sqlQuery: string;
340
- reasoning: string;
341
- vegaLiteSpec: string;
477
+ name: string;
478
+ modelProvider: string;
479
+ model: string;
480
+ analysisResults: {
481
+ id: string;
482
+ prompt: string;
483
+ streamMessage: {
484
+ text?: string | undefined;
485
+ toolCallMessages?: {
486
+ toolName: string;
487
+ toolCallId: string;
488
+ args: Record<string, unknown>;
489
+ isCompleted: boolean;
490
+ text?: string | undefined;
491
+ llmResult?: unknown;
492
+ additionalData?: unknown;
493
+ }[] | undefined;
494
+ reasoning?: string | undefined;
495
+ analysis?: string | undefined;
496
+ parts?: ({
497
+ text: string;
498
+ type: "text";
499
+ } | {
500
+ type: "tool";
501
+ toolCallMessages: {
502
+ toolName: string;
503
+ toolCallId: string;
504
+ args: Record<string, unknown>;
505
+ isCompleted: boolean;
506
+ text?: string | undefined;
507
+ llmResult?: unknown;
508
+ additionalData?: unknown;
509
+ }[];
510
+ })[] | undefined;
342
511
  };
512
+ isCompleted: boolean;
513
+ errorMessage?: {
514
+ error: string;
515
+ } | undefined;
343
516
  }[];
344
- toolCallMessages: {
345
- toolCallId: string;
346
- element?: any;
347
- }[];
348
- analysis: string;
349
- isCompleted: boolean;
517
+ createdAt?: Date | undefined;
350
518
  }[];
519
+ currentSessionId?: string | undefined;
351
520
  };
352
521
  }>;
353
522
  export type AiSliceConfig = z.infer<typeof AiSliceConfig>;
354
- export declare function createDefaultAiConfig(): AiSliceConfig;
523
+ export declare function createDefaultAiConfig(props: Partial<AiSliceConfig['ai']>): AiSliceConfig;
524
+ export type AiSliceTool = ExtendedTool<any>;
355
525
  export type AiSliceState = {
356
526
  ai: {
357
527
  analysisPrompt: string;
358
528
  isRunningAnalysis: boolean;
529
+ tools: Record<string, AiSliceTool>;
359
530
  analysisAbortController?: AbortController;
360
531
  setAnalysisPrompt: (prompt: string) => void;
361
532
  startAnalysis: () => Promise<void>;
362
533
  cancelAnalysis: () => void;
363
- messagesById: Map<string, AiMessage>;
364
- addMessages: (messages: AiMessage[]) => void;
365
- getMessages: () => AiMessage[];
366
- setAiModel: (model: string) => void;
534
+ setAiModel: (modelProvider: string, model: string) => void;
535
+ createSession: (name?: string, modelProvider?: string, model?: string) => void;
536
+ switchSession: (sessionId: string) => void;
537
+ renameSession: (sessionId: string, name: string) => void;
538
+ deleteSession: (sessionId: string) => void;
539
+ getCurrentSession: () => AnalysisSessionSchema | undefined;
540
+ deleteAnalysisResult: (sessionId: string, resultId: string) => void;
541
+ findToolComponent: (toolName: string) => React.ComponentType | undefined;
367
542
  };
368
543
  };
369
- export declare function createAiSlice<PC extends BaseProjectConfig & AiSliceConfig>({ getApiKey, initialAnalysisPrompt, }: {
370
- getApiKey: () => string;
544
+ export declare function createAiSlice<PC extends BaseProjectConfig & AiSliceConfig>({ getApiKey, initialAnalysisPrompt, customTools, getInstructions, }: {
545
+ getApiKey: (modelProvider: string) => string;
371
546
  initialAnalysisPrompt?: string;
547
+ customTools?: Record<string, AiSliceTool>;
548
+ /**
549
+ * Function to get custom instructions for the AI assistant
550
+ * @param tablesSchema - The schema of the tables in the database
551
+ * @returns The instructions string to use
552
+ */
553
+ getInstructions?: (tablesSchema: DataTable[]) => string;
372
554
  }): StateCreator<AiSliceState>;
373
555
  type ProjectConfigWithAi = BaseProjectConfig & AiSliceConfig;
374
556
  type ProjectStateWithAi = ProjectState<ProjectConfigWithAi> & AiSliceState;