@dbx-tools/shared-genie 0.3.44 → 0.4.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.
@@ -0,0 +1,1040 @@
1
+ /**
2
+ * Wire-format zod schemas + types and high-level event vocabulary
3
+ * for the Genie chat driver.
4
+ *
5
+ * Two related layers live here:
6
+ *
7
+ * 1. Genie wire shapes derived from `@dbx-tools/shared-sdk-model`'s
8
+ * generated `dashboards` schemas (regenerated from the upstream
9
+ * `@databricks/sdk-experimental` `apis/dashboards/model.d.ts`
10
+ * by the engine's codegen on synth). We extend the SDK schemas where Genie
11
+ * ships fields on the wire that the SDK doesn't currently type:
12
+ *
13
+ * - `GenieMessage.auto_regenerate_count: number` (stamped
14
+ * on every wire message, omitted from the SDK shape).
15
+ * - `GenieQueryAttachment.thoughts: GenieThought[]` (the
16
+ * streamed reasoning payload with `DESCRIPTION`,
17
+ * `DATA_SOURCING`, `STEPS`, and `UNDERSTANDING` thought
18
+ * kinds).
19
+ * - `GenieAttachment.attachment_type: AttachmentType`
20
+ * (an optional discriminator literal so callers can
21
+ * `switch (att.attachment_type)` instead of probing
22
+ * which sub-key is populated; compute it with
23
+ * {@link detectAttachmentType}).
24
+ *
25
+ * 2. Event vocabulary for the high-level `genieEventChat`
26
+ * driver. Each event is a flat `z.object` with a `type`
27
+ * literal discriminator and snake_case payload fields hoisted
28
+ * to the top level (no `payload` wrapper). Events that share
29
+ * the attachment-scoped location use
30
+ * {@link GenieChatLocationSchema} as a base; events that
31
+ * don't carry an `attachment_id` (status, result) omit it.
32
+ * {@link GenieChatEventSchema} bundles the variants into one
33
+ * discriminated union.
34
+ *
35
+ * Pure types: no runtime imports beyond zod + the generated
36
+ * sdk-type schemas, no Node-only code, safe for browser bundles.
37
+ *
38
+ * @module
39
+ */
40
+ import { dashboards } from "@dbx-tools/shared-sdk-model";
41
+ import { z } from "zod";
42
+ declare const MessageStatusSchema: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
43
+ /**
44
+ * The SDK's `MessageStatus` type, re-exported so consumers of the
45
+ * Genie contract get the full wire vocabulary from a single import
46
+ * path - mirrors the re-exports of the other SDK-derived schemas
47
+ * below.
48
+ */
49
+ export type MessageStatus = dashboards.MessageStatus;
50
+ export { MessageStatusSchema };
51
+ /**
52
+ * Genie's per-query "thoughts" surface. These appear on the
53
+ * `/messages/{id}` wire under `attachments[i].query.thoughts[]` but
54
+ * are not typed on the SDK's `GenieQueryAttachment` at v0.17.
55
+ *
56
+ * Known thought types observed in production polls:
57
+ *
58
+ * - `THOUGHT_TYPE_DESCRIPTION`: a one-paragraph restatement of
59
+ * what the user asked. The final `query.description` field on
60
+ * the attachment carries the same text.
61
+ * - `THOUGHT_TYPE_DATA_SOURCING`: markdown bullets of the
62
+ * fully-qualified `catalog.schema.table` sources Genie chose.
63
+ * - `THOUGHT_TYPE_STEPS`: the high-level plan Genie wrote before
64
+ * running SQL (one bullet per step).
65
+ * - `THOUGHT_TYPE_UNDERSTANDING`: ambiguity / interpretation
66
+ * notes (e.g. "'revenue' could be interpreted as gross,
67
+ * net, or recognized revenue...").
68
+ *
69
+ * Open at the type level (`| (string & {})`) so a new server-side
70
+ * thought type doesn't break compilation; the four known types
71
+ * still narrow correctly under `switch`.
72
+ */
73
+ export type GenieThoughtType = "THOUGHT_TYPE_DESCRIPTION" | "THOUGHT_TYPE_DATA_SOURCING" | "THOUGHT_TYPE_STEPS" | "THOUGHT_TYPE_UNDERSTANDING" | (string & {});
74
+ /**
75
+ * One reasoning step on a query attachment. See
76
+ * {@link GenieThoughtType} for the known `thought_type` values.
77
+ */
78
+ export declare const GenieThoughtSchema: z.ZodObject<{
79
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
80
+ content: z.ZodString;
81
+ }, z.core.$strip>;
82
+ export type GenieThought = z.infer<typeof GenieThoughtSchema>;
83
+ /**
84
+ * Discriminator for what's inside a `GenieAttachment`. Genie only
85
+ * ever populates one of `query` / `text` / `suggested_questions`
86
+ * per attachment. Open via `(string & {})` so a new server-side
87
+ * type doesn't break compilation; the three known types still
88
+ * narrow correctly under `switch`.
89
+ *
90
+ * Lifted into the schema as the optional
91
+ * {@link GenieAttachmentSchema}.`attachment_type` field (compute
92
+ * it with {@link detectAttachmentType}) so consumers can branch
93
+ * on a literal instead of probing which sub-object key is
94
+ * present. Also surfaced on {@link AttachmentEvent}'s payload as
95
+ * `attachment_type` (vs a bare `type`) to keep the field clear of
96
+ * the event-union discriminator key.
97
+ */
98
+ export declare const ATTACHMENT_TYPES: readonly ["query", "text", "suggested_questions"];
99
+ export type KnownAttachmentType = (typeof ATTACHMENT_TYPES)[number];
100
+ export type AttachmentType = KnownAttachmentType | (string & {});
101
+ /**
102
+ * `GenieQueryAttachment` widened with the `thoughts[]` field the
103
+ * Genie wire exposes but the SDK doesn't currently type. Every
104
+ * other field (`description`, `query`, `statement_id`,
105
+ * `query_result_metadata`, `title`, `parameters`,
106
+ * `last_updated_timestamp`, `id`) flows through verbatim from
107
+ * the SDK schema.
108
+ */
109
+ export declare const GenieQueryAttachmentSchema: z.ZodObject<{
110
+ description: z.ZodOptional<z.ZodString>;
111
+ id: z.ZodOptional<z.ZodString>;
112
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
113
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
114
+ keyword: z.ZodOptional<z.ZodString>;
115
+ sql_type: z.ZodOptional<z.ZodString>;
116
+ value: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>>>;
118
+ query: z.ZodOptional<z.ZodString>;
119
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
120
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
121
+ row_count: z.ZodOptional<z.ZodNumber>;
122
+ }, z.core.$strip>>;
123
+ statement_id: z.ZodOptional<z.ZodString>;
124
+ title: z.ZodOptional<z.ZodString>;
125
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
126
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
127
+ content: z.ZodString;
128
+ }, z.core.$strip>>>;
129
+ }, z.core.$strip>;
130
+ export type GenieQueryAttachment = z.infer<typeof GenieQueryAttachmentSchema>;
131
+ /**
132
+ * `GenieAttachment` with:
133
+ *
134
+ * - `query` re-typed to the thoughts-aware
135
+ * {@link GenieQueryAttachmentSchema}.
136
+ * - `attachment_type` discriminator literal
137
+ * ({@link AttachmentType}) so consumers can `switch
138
+ * (att.attachment_type)` to narrow which sub-object is
139
+ * populated. Optional on the wire (Genie doesn't send it);
140
+ * callers compute it with {@link detectAttachmentType} when
141
+ * they want the literal up-front.
142
+ *
143
+ * `attachment_id`, `text`, and `suggested_questions` pass through
144
+ * unchanged. `attachment_id` is genuinely optional on the wire:
145
+ * the first text attachment Genie emits per turn (the "main
146
+ * answer text") arrives with no id, only the follow-up text
147
+ * attachment gets one.
148
+ */
149
+ export declare const GenieAttachmentSchema: z.ZodObject<{
150
+ attachment_id: z.ZodOptional<z.ZodString>;
151
+ suggested_questions: z.ZodOptional<z.ZodObject<{
152
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
+ }, z.core.$strip>>;
154
+ text: z.ZodOptional<z.ZodObject<{
155
+ content: z.ZodOptional<z.ZodString>;
156
+ id: z.ZodOptional<z.ZodString>;
157
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
158
+ }, z.core.$strip>>;
159
+ query: z.ZodOptional<z.ZodObject<{
160
+ description: z.ZodOptional<z.ZodString>;
161
+ id: z.ZodOptional<z.ZodString>;
162
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
163
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
164
+ keyword: z.ZodOptional<z.ZodString>;
165
+ sql_type: z.ZodOptional<z.ZodString>;
166
+ value: z.ZodOptional<z.ZodString>;
167
+ }, z.core.$strip>>>;
168
+ query: z.ZodOptional<z.ZodString>;
169
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
170
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
171
+ row_count: z.ZodOptional<z.ZodNumber>;
172
+ }, z.core.$strip>>;
173
+ statement_id: z.ZodOptional<z.ZodString>;
174
+ title: z.ZodOptional<z.ZodString>;
175
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
176
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
177
+ content: z.ZodString;
178
+ }, z.core.$strip>>>;
179
+ }, z.core.$strip>>;
180
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
181
+ }, z.core.$strip>;
182
+ export type GenieAttachment = z.infer<typeof GenieAttachmentSchema>;
183
+ /**
184
+ * `GenieMessage` widened with:
185
+ *
186
+ * - `auto_regenerate_count`: number stamped on every wire
187
+ * message that the SDK type omits at v0.17.
188
+ * - `attachments`: re-typed to the local
189
+ * {@link GenieAttachmentSchema} so
190
+ * `attachment.query?.thoughts` (and the
191
+ * `attachment_type` discriminator) is reachable without a
192
+ * cast.
193
+ *
194
+ * Every other field (`id`, `space_id`, `conversation_id`,
195
+ * `user_id`, `created_timestamp`, `last_updated_timestamp`,
196
+ * `status`, `content`, `message_id`, `query_result`, `error`,
197
+ * `feedback`) passes through from the SDK schema.
198
+ */
199
+ export declare const GenieMessageSchema: z.ZodObject<{
200
+ content: z.ZodString;
201
+ conversation_id: z.ZodString;
202
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
203
+ error: z.ZodOptional<z.ZodObject<{
204
+ error: z.ZodOptional<z.ZodString>;
205
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
206
+ }, z.core.$strip>>;
207
+ feedback: z.ZodOptional<z.ZodObject<{
208
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
209
+ }, z.core.$strip>>;
210
+ id: z.ZodString;
211
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
212
+ message_id: z.ZodString;
213
+ query_result: z.ZodOptional<z.ZodObject<{
214
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
215
+ row_count: z.ZodOptional<z.ZodNumber>;
216
+ statement_id: z.ZodOptional<z.ZodString>;
217
+ statement_id_signature: z.ZodOptional<z.ZodString>;
218
+ }, z.core.$strip>>;
219
+ space_id: z.ZodString;
220
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
221
+ user_id: z.ZodOptional<z.ZodNumber>;
222
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
223
+ attachment_id: z.ZodOptional<z.ZodString>;
224
+ suggested_questions: z.ZodOptional<z.ZodObject<{
225
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
226
+ }, z.core.$strip>>;
227
+ text: z.ZodOptional<z.ZodObject<{
228
+ content: z.ZodOptional<z.ZodString>;
229
+ id: z.ZodOptional<z.ZodString>;
230
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
231
+ }, z.core.$strip>>;
232
+ query: z.ZodOptional<z.ZodObject<{
233
+ description: z.ZodOptional<z.ZodString>;
234
+ id: z.ZodOptional<z.ZodString>;
235
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
236
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
237
+ keyword: z.ZodOptional<z.ZodString>;
238
+ sql_type: z.ZodOptional<z.ZodString>;
239
+ value: z.ZodOptional<z.ZodString>;
240
+ }, z.core.$strip>>>;
241
+ query: z.ZodOptional<z.ZodString>;
242
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
243
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
244
+ row_count: z.ZodOptional<z.ZodNumber>;
245
+ }, z.core.$strip>>;
246
+ statement_id: z.ZodOptional<z.ZodString>;
247
+ title: z.ZodOptional<z.ZodString>;
248
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
249
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
250
+ content: z.ZodString;
251
+ }, z.core.$strip>>>;
252
+ }, z.core.$strip>>;
253
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
254
+ }, z.core.$strip>>>;
255
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
256
+ }, z.core.$strip>;
257
+ export type GenieMessage = z.infer<typeof GenieMessageSchema>;
258
+ /**
259
+ * Domain projection of {@link GenieMessageSchema} that drops every
260
+ * turn-level field (`id`, `status`, `created_timestamp`,
261
+ * `query_result`, ...) and yields just the response payload as a
262
+ * flat `GenieAttachment[]`. Parses the same wire shape as
263
+ * {@link GenieMessageSchema}; missing `attachments` defaults to
264
+ * `[]` so the output is always an array.
265
+ *
266
+ * Use when consumers only care about the model's response
267
+ * attachments and not the surrounding message envelope.
268
+ */
269
+ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
270
+ content: z.ZodString;
271
+ conversation_id: z.ZodString;
272
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
273
+ error: z.ZodOptional<z.ZodObject<{
274
+ error: z.ZodOptional<z.ZodString>;
275
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
276
+ }, z.core.$strip>>;
277
+ feedback: z.ZodOptional<z.ZodObject<{
278
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
279
+ }, z.core.$strip>>;
280
+ id: z.ZodString;
281
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
282
+ message_id: z.ZodString;
283
+ query_result: z.ZodOptional<z.ZodObject<{
284
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
285
+ row_count: z.ZodOptional<z.ZodNumber>;
286
+ statement_id: z.ZodOptional<z.ZodString>;
287
+ statement_id_signature: z.ZodOptional<z.ZodString>;
288
+ }, z.core.$strip>>;
289
+ space_id: z.ZodString;
290
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
291
+ user_id: z.ZodOptional<z.ZodNumber>;
292
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
293
+ attachment_id: z.ZodOptional<z.ZodString>;
294
+ suggested_questions: z.ZodOptional<z.ZodObject<{
295
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
296
+ }, z.core.$strip>>;
297
+ text: z.ZodOptional<z.ZodObject<{
298
+ content: z.ZodOptional<z.ZodString>;
299
+ id: z.ZodOptional<z.ZodString>;
300
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
301
+ }, z.core.$strip>>;
302
+ query: z.ZodOptional<z.ZodObject<{
303
+ description: z.ZodOptional<z.ZodString>;
304
+ id: z.ZodOptional<z.ZodString>;
305
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
306
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
307
+ keyword: z.ZodOptional<z.ZodString>;
308
+ sql_type: z.ZodOptional<z.ZodString>;
309
+ value: z.ZodOptional<z.ZodString>;
310
+ }, z.core.$strip>>>;
311
+ query: z.ZodOptional<z.ZodString>;
312
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
313
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
314
+ row_count: z.ZodOptional<z.ZodNumber>;
315
+ }, z.core.$strip>>;
316
+ statement_id: z.ZodOptional<z.ZodString>;
317
+ title: z.ZodOptional<z.ZodString>;
318
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
319
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
320
+ content: z.ZodString;
321
+ }, z.core.$strip>>>;
322
+ }, z.core.$strip>>;
323
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
324
+ }, z.core.$strip>>>;
325
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
326
+ }, z.core.$strip>, z.ZodTransform<{
327
+ attachment_id?: string | undefined;
328
+ suggested_questions?: {
329
+ questions?: string[] | undefined;
330
+ } | undefined;
331
+ text?: {
332
+ content?: string | undefined;
333
+ id?: string | undefined;
334
+ purpose?: "FOLLOW_UP_QUESTION" | undefined;
335
+ } | undefined;
336
+ query?: {
337
+ description?: string | undefined;
338
+ id?: string | undefined;
339
+ last_updated_timestamp?: number | undefined;
340
+ parameters?: {
341
+ keyword?: string | undefined;
342
+ sql_type?: string | undefined;
343
+ value?: string | undefined;
344
+ }[] | undefined;
345
+ query?: string | undefined;
346
+ query_result_metadata?: {
347
+ is_truncated?: boolean | undefined;
348
+ row_count?: number | undefined;
349
+ } | undefined;
350
+ statement_id?: string | undefined;
351
+ title?: string | undefined;
352
+ thoughts?: {
353
+ thought_type: GenieThoughtType;
354
+ content: string;
355
+ }[] | undefined;
356
+ } | undefined;
357
+ attachment_type?: AttachmentType | undefined;
358
+ }[], {
359
+ content: string;
360
+ conversation_id: string;
361
+ id: string;
362
+ message_id: string;
363
+ space_id: string;
364
+ created_timestamp?: number | undefined;
365
+ error?: {
366
+ error?: string | undefined;
367
+ type?: "BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION" | "CHAT_COMPLETION_CLIENT_EXCEPTION" | "CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION" | "CHAT_COMPLETION_NETWORK_EXCEPTION" | "CONTENT_FILTER_EXCEPTION" | "CONTEXT_EXCEEDED_EXCEPTION" | "COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION" | "COULD_NOT_GET_UC_SCHEMA_EXCEPTION" | "DEPLOYMENT_NOT_FOUND_EXCEPTION" | "DESCRIBE_QUERY_INVALID_SQL_ERROR" | "DESCRIBE_QUERY_TIMEOUT" | "DESCRIBE_QUERY_UNEXPECTED_FAILURE" | "EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION" | "FUNCTIONS_NOT_AVAILABLE_EXCEPTION" | "FUNCTION_ARGUMENTS_INVALID_EXCEPTION" | "FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION" | "FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION" | "FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION" | "GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION" | "GENERIC_CHAT_COMPLETION_EXCEPTION" | "GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION" | "GENERIC_SQL_EXEC_API_CALL_EXCEPTION" | "ILLEGAL_PARAMETER_DEFINITION_EXCEPTION" | "INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION" | "INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION" | "INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION" | "INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION" | "INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION" | "INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION" | "INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION" | "INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION" | "INVALID_CHAT_COMPLETION_JSON_EXCEPTION" | "INVALID_COMPLETION_REQUEST_EXCEPTION" | "INVALID_FUNCTION_CALL_EXCEPTION" | "INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION" | "INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION" | "INVALID_SQL_UNKNOWN_TABLE_EXCEPTION" | "INVALID_TABLE_IDENTIFIER_EXCEPTION" | "LOCAL_CONTEXT_EXCEEDED_EXCEPTION" | "MESSAGE_ATTACHMENT_TOO_LONG_ERROR" | "MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION" | "MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION" | "MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION" | "MISSING_SQL_QUERY_EXCEPTION" | "NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE" | "NO_QUERY_TO_VISUALIZE_EXCEPTION" | "NO_TABLES_TO_QUERY_EXCEPTION" | "RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION" | "RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION" | "REPLY_PROCESS_TIMEOUT_EXCEPTION" | "RETRYABLE_PROCESSING_EXCEPTION" | "SQL_EXECUTION_EXCEPTION" | "STOP_PROCESS_DUE_TO_AUTO_REGENERATE" | "TABLES_MISSING_EXCEPTION" | "TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION" | "TOO_MANY_TABLES_EXCEPTION" | "UNEXPECTED_REPLY_PROCESS_EXCEPTION" | "UNKNOWN_AI_MODEL" | "UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION" | "WAREHOUSE_ACCESS_MISSING_EXCEPTION" | "WAREHOUSE_NOT_FOUND_EXCEPTION" | undefined;
368
+ } | undefined;
369
+ feedback?: {
370
+ rating?: "NEGATIVE" | "NONE" | "POSITIVE" | undefined;
371
+ } | undefined;
372
+ last_updated_timestamp?: number | undefined;
373
+ query_result?: {
374
+ is_truncated?: boolean | undefined;
375
+ row_count?: number | undefined;
376
+ statement_id?: string | undefined;
377
+ statement_id_signature?: string | undefined;
378
+ } | undefined;
379
+ status?: "ASKING_AI" | "CANCELLED" | "COMPLETED" | "EXECUTING_QUERY" | "FAILED" | "FETCHING_METADATA" | "FILTERING_CONTEXT" | "PENDING_WAREHOUSE" | "QUERY_RESULT_EXPIRED" | "SUBMITTED" | undefined;
380
+ user_id?: number | undefined;
381
+ attachments?: {
382
+ attachment_id?: string | undefined;
383
+ suggested_questions?: {
384
+ questions?: string[] | undefined;
385
+ } | undefined;
386
+ text?: {
387
+ content?: string | undefined;
388
+ id?: string | undefined;
389
+ purpose?: "FOLLOW_UP_QUESTION" | undefined;
390
+ } | undefined;
391
+ query?: {
392
+ description?: string | undefined;
393
+ id?: string | undefined;
394
+ last_updated_timestamp?: number | undefined;
395
+ parameters?: {
396
+ keyword?: string | undefined;
397
+ sql_type?: string | undefined;
398
+ value?: string | undefined;
399
+ }[] | undefined;
400
+ query?: string | undefined;
401
+ query_result_metadata?: {
402
+ is_truncated?: boolean | undefined;
403
+ row_count?: number | undefined;
404
+ } | undefined;
405
+ statement_id?: string | undefined;
406
+ title?: string | undefined;
407
+ thoughts?: {
408
+ thought_type: GenieThoughtType;
409
+ content: string;
410
+ }[] | undefined;
411
+ } | undefined;
412
+ attachment_type?: AttachmentType | undefined;
413
+ }[] | undefined;
414
+ auto_regenerate_count?: number | undefined;
415
+ }>>;
416
+ export type GenieResponse = z.infer<typeof GenieResponseSchema>;
417
+ /**
418
+ * `GenieSpace` widened with an optional `serialized_space` field
419
+ * carrying a JSON-string representation of the space's full
420
+ * definition (catalogs, schemas, tables, sample questions, prompts,
421
+ * etc.) as exported by the workspace export endpoint.
422
+ *
423
+ * The base SDK shape (`description`, `space_id`, `title`,
424
+ * `warehouse_id`) covers the directory-listing surface - enough to
425
+ * route a chat. `serialized_space` is opt-in so callers that need
426
+ * the full space schema (e.g. to seed a system prompt or to ship
427
+ * the definition to an agent) can attach it without a second type.
428
+ */
429
+ export declare const GenieSpaceSchema: z.ZodObject<{
430
+ description: z.ZodOptional<z.ZodString>;
431
+ space_id: z.ZodString;
432
+ title: z.ZodString;
433
+ warehouse_id: z.ZodOptional<z.ZodString>;
434
+ serialized_space: z.ZodOptional<z.ZodString>;
435
+ }, z.core.$strip>;
436
+ export type GenieSpace = z.infer<typeof GenieSpaceSchema>;
437
+ /**
438
+ * Terminal Genie message statuses. The polling loop in the chat
439
+ * driver stops as soon as the latest message has one of these
440
+ * statuses.
441
+ */
442
+ export declare const TERMINAL_STATUSES: readonly ["COMPLETED", "FAILED", "CANCELLED"];
443
+ export type TerminalStatus = (typeof TERMINAL_STATUSES)[number];
444
+ /** Narrow `MessageStatus | undefined` to a {@link TerminalStatus}. */
445
+ export declare function isTerminalStatus(s: MessageStatus | undefined): s is TerminalStatus;
446
+ /**
447
+ * Convert a raw Genie wire status (`FETCHING_METADATA`,
448
+ * `ASKING_AI`, `EXECUTING_QUERY`, ...) into a short, sentence-cased
449
+ * label safe to drop into a UI pill. Known states get a curated
450
+ * label; unknown states fall back to `string.tokenizeWithOptions`
451
+ * so new states still render cleanly without code changes.
452
+ *
453
+ * Pure (no Node-only deps), safe for browser bundles. Both the
454
+ * Genie agent (server) and any UI that subscribes to status events
455
+ * call this so labels stay in lock-step across the wire.
456
+ */
457
+ export declare function humanizeStatus(status: MessageStatus): string;
458
+ /**
459
+ * Inspect a {@link GenieAttachment} and return the
460
+ * {@link AttachmentType} of payload it carries. Returns the first
461
+ * known sub-object that's present; if none of the known ones are
462
+ * populated, falls back to the first non-bookkeeping key
463
+ * (forward-compat for types we don't model yet), else `"unknown"`.
464
+ *
465
+ * Honors a pre-set `attachment_type` if one is already on the
466
+ * value, so this is idempotent across re-detections.
467
+ */
468
+ export declare function detectAttachmentType(att: GenieAttachment): AttachmentType;
469
+ /**
470
+ * Where on the wire an event was observed. Spread into every
471
+ * attachment-scoped event payload so subscribers can route, log,
472
+ * or correlate without re-walking the message.
473
+ *
474
+ * Fields:
475
+ * - `space_id`: the Genie space the conversation lives in.
476
+ * - `conversation_id`: conversation id once Genie has assigned one.
477
+ * - `message_id`: Genie message id for the active turn.
478
+ * - `attachment_id`: attachment the event came from. Optional
479
+ * because Genie sometimes emits an anonymous main-answer
480
+ * attachment without an id; those still get events, just with
481
+ * `attachment_id` undefined.
482
+ */
483
+ export declare const GenieChatLocationSchema: z.ZodObject<{
484
+ space_id: z.ZodString;
485
+ conversation_id: z.ZodOptional<z.ZodString>;
486
+ message_id: z.ZodOptional<z.ZodString>;
487
+ attachment_id: z.ZodOptional<z.ZodString>;
488
+ }, z.core.$strip>;
489
+ export type GenieChatLocation = z.infer<typeof GenieChatLocationSchema>;
490
+ /**
491
+ * Lifecycle event: the question this turn is asking Genie. Fires
492
+ * once per `genieEventChat` call, the first time the underlying
493
+ * `genieChat` loop yields a `GenieMessage`. Carries the prompt
494
+ * text Genie echoed back on `message.content` and the assigned
495
+ * `message_id` so subscribers can group every subsequent event
496
+ * for this turn under one stable key. `conversation_id` is
497
+ * populated for both opening and follow-up turns (Genie assigns
498
+ * it on `startConversation`).
499
+ *
500
+ * Deferred (instead of fired synchronously on entry) so the
501
+ * `message_id` is available when the event lands - that one round
502
+ * trip costs ~200ms but lets UIs render question / thinking /
503
+ * query / text as a single grouped block per Genie call instead
504
+ * of a flat stream.
505
+ *
506
+ * `attachment_id` is intentionally absent - questions are turn
507
+ * scoped, not attachment scoped.
508
+ */
509
+ export declare const QuestionEventSchema: z.ZodObject<{
510
+ conversation_id: z.ZodOptional<z.ZodString>;
511
+ space_id: z.ZodString;
512
+ message_id: z.ZodOptional<z.ZodString>;
513
+ type: z.ZodLiteral<"question">;
514
+ content: z.ZodString;
515
+ }, z.core.$strip>;
516
+ export type QuestionEvent = z.infer<typeof QuestionEventSchema>;
517
+ /**
518
+ * Lifecycle event: raw `GenieMessage` snapshot for the active
519
+ * turn. Fires once per poll yield. The full message shape
520
+ * (including the widened thought / regen / attachment-type
521
+ * fields) is exposed inline as `message`; consumers narrow on
522
+ * `event.type === "message"` and reach for `event.message`.
523
+ */
524
+ export declare const MessageEventSchema: z.ZodObject<{
525
+ conversation_id: z.ZodOptional<z.ZodString>;
526
+ space_id: z.ZodString;
527
+ message_id: z.ZodOptional<z.ZodString>;
528
+ type: z.ZodLiteral<"message">;
529
+ message: z.ZodObject<{
530
+ content: z.ZodString;
531
+ conversation_id: z.ZodString;
532
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
533
+ error: z.ZodOptional<z.ZodObject<{
534
+ error: z.ZodOptional<z.ZodString>;
535
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
536
+ }, z.core.$strip>>;
537
+ feedback: z.ZodOptional<z.ZodObject<{
538
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
539
+ }, z.core.$strip>>;
540
+ id: z.ZodString;
541
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
542
+ message_id: z.ZodString;
543
+ query_result: z.ZodOptional<z.ZodObject<{
544
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
545
+ row_count: z.ZodOptional<z.ZodNumber>;
546
+ statement_id: z.ZodOptional<z.ZodString>;
547
+ statement_id_signature: z.ZodOptional<z.ZodString>;
548
+ }, z.core.$strip>>;
549
+ space_id: z.ZodString;
550
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
551
+ user_id: z.ZodOptional<z.ZodNumber>;
552
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
553
+ attachment_id: z.ZodOptional<z.ZodString>;
554
+ suggested_questions: z.ZodOptional<z.ZodObject<{
555
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
556
+ }, z.core.$strip>>;
557
+ text: z.ZodOptional<z.ZodObject<{
558
+ content: z.ZodOptional<z.ZodString>;
559
+ id: z.ZodOptional<z.ZodString>;
560
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
561
+ }, z.core.$strip>>;
562
+ query: z.ZodOptional<z.ZodObject<{
563
+ description: z.ZodOptional<z.ZodString>;
564
+ id: z.ZodOptional<z.ZodString>;
565
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
566
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
567
+ keyword: z.ZodOptional<z.ZodString>;
568
+ sql_type: z.ZodOptional<z.ZodString>;
569
+ value: z.ZodOptional<z.ZodString>;
570
+ }, z.core.$strip>>>;
571
+ query: z.ZodOptional<z.ZodString>;
572
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
573
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
574
+ row_count: z.ZodOptional<z.ZodNumber>;
575
+ }, z.core.$strip>>;
576
+ statement_id: z.ZodOptional<z.ZodString>;
577
+ title: z.ZodOptional<z.ZodString>;
578
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
579
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
580
+ content: z.ZodString;
581
+ }, z.core.$strip>>>;
582
+ }, z.core.$strip>>;
583
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
584
+ }, z.core.$strip>>>;
585
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
586
+ }, z.core.$strip>;
587
+ }, z.core.$strip>;
588
+ export type MessageEvent = z.infer<typeof MessageEventSchema>;
589
+ /**
590
+ * Top-level `message.status` transitioned. Fires for every
591
+ * distinct status seen on the wire (e.g. `SUBMITTED` ->
592
+ * `FILTERING_CONTEXT` -> `ASKING_AI` -> `PENDING_WAREHOUSE` ->
593
+ * `ASKING_AI` -> `COMPLETED`).
594
+ */
595
+ export declare const StatusEventSchema: z.ZodObject<{
596
+ conversation_id: z.ZodOptional<z.ZodString>;
597
+ space_id: z.ZodString;
598
+ message_id: z.ZodOptional<z.ZodString>;
599
+ type: z.ZodLiteral<"status">;
600
+ status: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
601
+ previous_status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
602
+ }, z.core.$strip>;
603
+ export type StatusEvent = z.infer<typeof StatusEventSchema>;
604
+ /**
605
+ * A new attachment slot appeared in `message.attachments[]`.
606
+ * Fires exactly once per attachment (matched by `attachment_id`,
607
+ * positionally for anonymous attachments) the first time we see
608
+ * it. The slot's payload kind lands in `attachment_type` so the
609
+ * outer `type` discriminator stays unambiguous.
610
+ */
611
+ export declare const AttachmentEventSchema: z.ZodObject<{
612
+ space_id: z.ZodString;
613
+ conversation_id: z.ZodOptional<z.ZodString>;
614
+ message_id: z.ZodOptional<z.ZodString>;
615
+ attachment_id: z.ZodOptional<z.ZodString>;
616
+ type: z.ZodLiteral<"attachment">;
617
+ index: z.ZodNumber;
618
+ attachment_type: z.ZodCustom<AttachmentType, AttachmentType>;
619
+ }, z.core.$strip>;
620
+ export type AttachmentEvent = z.infer<typeof AttachmentEventSchema>;
621
+ /**
622
+ * A new reasoning step appeared on a query attachment
623
+ * (`attachments[i].query.thoughts[i]`). Deduplicated per
624
+ * `(thought_type, content)` tuple within an attachment so
625
+ * subscribers don't see the same thought multiple times - Genie
626
+ * sometimes mutates existing thought slots in place, so the diff
627
+ * is value-based rather than positional.
628
+ */
629
+ export declare const ThinkingEventSchema: z.ZodObject<{
630
+ space_id: z.ZodString;
631
+ conversation_id: z.ZodOptional<z.ZodString>;
632
+ message_id: z.ZodOptional<z.ZodString>;
633
+ attachment_id: z.ZodOptional<z.ZodString>;
634
+ type: z.ZodLiteral<"thinking">;
635
+ text: z.ZodString;
636
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
637
+ }, z.core.$strip>;
638
+ export type ThinkingEvent = z.infer<typeof ThinkingEventSchema>;
639
+ /**
640
+ * A text-attachment `content` field appeared or changed
641
+ * (`attachments[i].text.content`). Fires whenever the snapshot
642
+ * value differs from the previous one for the same attachment.
643
+ */
644
+ export declare const TextEventSchema: z.ZodObject<{
645
+ space_id: z.ZodString;
646
+ conversation_id: z.ZodOptional<z.ZodString>;
647
+ message_id: z.ZodOptional<z.ZodString>;
648
+ attachment_id: z.ZodOptional<z.ZodString>;
649
+ type: z.ZodLiteral<"text">;
650
+ text: z.ZodString;
651
+ }, z.core.$strip>;
652
+ export type TextEvent = z.infer<typeof TextEventSchema>;
653
+ /**
654
+ * SQL was finalized on a query attachment
655
+ * (`attachments[i].query.query`). Fires once when the SQL string
656
+ * transitions from undefined to defined, and again if Genie ever
657
+ * rewrites it. `title` and `description` are denormalised off the
658
+ * attachment's `query.title` / `query.description` so consumers
659
+ * can label the SQL pill without re-walking the message.
660
+ */
661
+ export declare const QueryEventSchema: z.ZodObject<{
662
+ space_id: z.ZodString;
663
+ conversation_id: z.ZodOptional<z.ZodString>;
664
+ message_id: z.ZodOptional<z.ZodString>;
665
+ attachment_id: z.ZodOptional<z.ZodString>;
666
+ type: z.ZodLiteral<"query">;
667
+ sql: z.ZodString;
668
+ title: z.ZodOptional<z.ZodString>;
669
+ description: z.ZodOptional<z.ZodString>;
670
+ }, z.core.$strip>;
671
+ export type QueryEvent = z.infer<typeof QueryEventSchema>;
672
+ /**
673
+ * SQL was submitted to a SQL warehouse and a statement id was
674
+ * assigned (`attachments[i].query.statement_id`). Fires when the
675
+ * statement id transitions from undefined to defined - this is the
676
+ * point at which `client.statementExecution.getStatement({ statement_id })`
677
+ * becomes a valid call.
678
+ */
679
+ export declare const StatementEventSchema: z.ZodObject<{
680
+ space_id: z.ZodString;
681
+ conversation_id: z.ZodOptional<z.ZodString>;
682
+ message_id: z.ZodOptional<z.ZodString>;
683
+ attachment_id: z.ZodOptional<z.ZodString>;
684
+ type: z.ZodLiteral<"statement">;
685
+ statement_id: z.ZodString;
686
+ }, z.core.$strip>;
687
+ export type StatementEvent = z.infer<typeof StatementEventSchema>;
688
+ /**
689
+ * Row count for a query attachment's result changed
690
+ * (`attachments[i].query.query_result_metadata.row_count`). Fires
691
+ * on every change, including the initial `undefined -> 0` and the
692
+ * later `0 -> N` once the warehouse finishes execution.
693
+ */
694
+ export declare const RowsEventSchema: z.ZodObject<{
695
+ space_id: z.ZodString;
696
+ conversation_id: z.ZodOptional<z.ZodString>;
697
+ message_id: z.ZodOptional<z.ZodString>;
698
+ attachment_id: z.ZodOptional<z.ZodString>;
699
+ type: z.ZodLiteral<"rows">;
700
+ row_count: z.ZodNumber;
701
+ previous_row_count: z.ZodOptional<z.ZodNumber>;
702
+ statement_id: z.ZodOptional<z.ZodString>;
703
+ }, z.core.$strip>;
704
+ export type RowsEvent = z.infer<typeof RowsEventSchema>;
705
+ /**
706
+ * Genie produced a follow-up suggested-questions list
707
+ * (`attachments[i].suggested_questions.questions[]`). Fires once
708
+ * when the list appears, and again if Genie rewrites it.
709
+ */
710
+ export declare const SuggestedQuestionsEventSchema: z.ZodObject<{
711
+ space_id: z.ZodString;
712
+ conversation_id: z.ZodOptional<z.ZodString>;
713
+ message_id: z.ZodOptional<z.ZodString>;
714
+ attachment_id: z.ZodOptional<z.ZodString>;
715
+ type: z.ZodLiteral<"suggested_questions">;
716
+ questions: z.ZodArray<z.ZodString>;
717
+ }, z.core.$strip>;
718
+ export type SuggestedQuestionsEvent = z.infer<typeof SuggestedQuestionsEventSchema>;
719
+ /**
720
+ * The active turn reached a terminal status. Always fires once
721
+ * per turn (immediately after the terminal `message` event).
722
+ * Carries the final `GenieMessage` snapshot inline so subscribers
723
+ * don't need to keep their own copy of the last message.
724
+ */
725
+ export declare const ResultEventSchema: z.ZodObject<{
726
+ conversation_id: z.ZodOptional<z.ZodString>;
727
+ space_id: z.ZodString;
728
+ message_id: z.ZodOptional<z.ZodString>;
729
+ type: z.ZodLiteral<"result">;
730
+ status: z.ZodEnum<{
731
+ CANCELLED: "CANCELLED";
732
+ COMPLETED: "COMPLETED";
733
+ FAILED: "FAILED";
734
+ }>;
735
+ message: z.ZodObject<{
736
+ content: z.ZodString;
737
+ conversation_id: z.ZodString;
738
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
739
+ error: z.ZodOptional<z.ZodObject<{
740
+ error: z.ZodOptional<z.ZodString>;
741
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
742
+ }, z.core.$strip>>;
743
+ feedback: z.ZodOptional<z.ZodObject<{
744
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
745
+ }, z.core.$strip>>;
746
+ id: z.ZodString;
747
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
748
+ message_id: z.ZodString;
749
+ query_result: z.ZodOptional<z.ZodObject<{
750
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
751
+ row_count: z.ZodOptional<z.ZodNumber>;
752
+ statement_id: z.ZodOptional<z.ZodString>;
753
+ statement_id_signature: z.ZodOptional<z.ZodString>;
754
+ }, z.core.$strip>>;
755
+ space_id: z.ZodString;
756
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
757
+ user_id: z.ZodOptional<z.ZodNumber>;
758
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
759
+ attachment_id: z.ZodOptional<z.ZodString>;
760
+ suggested_questions: z.ZodOptional<z.ZodObject<{
761
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
762
+ }, z.core.$strip>>;
763
+ text: z.ZodOptional<z.ZodObject<{
764
+ content: z.ZodOptional<z.ZodString>;
765
+ id: z.ZodOptional<z.ZodString>;
766
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
767
+ }, z.core.$strip>>;
768
+ query: z.ZodOptional<z.ZodObject<{
769
+ description: z.ZodOptional<z.ZodString>;
770
+ id: z.ZodOptional<z.ZodString>;
771
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
772
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
773
+ keyword: z.ZodOptional<z.ZodString>;
774
+ sql_type: z.ZodOptional<z.ZodString>;
775
+ value: z.ZodOptional<z.ZodString>;
776
+ }, z.core.$strip>>>;
777
+ query: z.ZodOptional<z.ZodString>;
778
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
779
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
780
+ row_count: z.ZodOptional<z.ZodNumber>;
781
+ }, z.core.$strip>>;
782
+ statement_id: z.ZodOptional<z.ZodString>;
783
+ title: z.ZodOptional<z.ZodString>;
784
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
785
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
786
+ content: z.ZodString;
787
+ }, z.core.$strip>>>;
788
+ }, z.core.$strip>>;
789
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
790
+ }, z.core.$strip>>>;
791
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
792
+ }, z.core.$strip>;
793
+ }, z.core.$strip>;
794
+ export type ResultEvent = z.infer<typeof ResultEventSchema>;
795
+ /**
796
+ * Discriminated union yielded by `genieEventChat`. Each variant
797
+ * is a single flat object with `type` as the discriminator and
798
+ * the payload fields hoisted directly to the top level - no
799
+ * `payload` wrapper. Consumers narrow on `type` and read fields
800
+ * inline:
801
+ *
802
+ * @example
803
+ * for await (const event of genieEventChat(spaceId, "Top stores?")) {
804
+ * switch (event.type) {
805
+ * case "thinking":
806
+ * console.log(event.thought_type, event.text);
807
+ * break;
808
+ * case "result":
809
+ * console.log("done:", event.status);
810
+ * break;
811
+ * }
812
+ * }
813
+ *
814
+ * Stream order per turn:
815
+ *
816
+ * 1. `question`, emitted with the first `message` yield (deferred so
817
+ * the assigned `message_id` is available), carrying the prompt
818
+ * this turn sent to Genie.
819
+ * 2. `message` for every poll yield (raw `GenieMessage` on
820
+ * `event.message`).
821
+ * 3. Any derived events the snapshot diff produced (`status`,
822
+ * `attachment`, `thinking`, `text`, `query`, `statement`,
823
+ * `rows`, `suggested_questions`) in that fixed order.
824
+ * 4. On the terminal snapshot, a final `result` event.
825
+ *
826
+ * Errors propagate via the generator throwing (`try`/`catch` the
827
+ * `for await`), not via an `error` variant on this union.
828
+ */
829
+ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
830
+ conversation_id: z.ZodOptional<z.ZodString>;
831
+ space_id: z.ZodString;
832
+ message_id: z.ZodOptional<z.ZodString>;
833
+ type: z.ZodLiteral<"question">;
834
+ content: z.ZodString;
835
+ }, z.core.$strip>, z.ZodObject<{
836
+ conversation_id: z.ZodOptional<z.ZodString>;
837
+ space_id: z.ZodString;
838
+ message_id: z.ZodOptional<z.ZodString>;
839
+ type: z.ZodLiteral<"message">;
840
+ message: z.ZodObject<{
841
+ content: z.ZodString;
842
+ conversation_id: z.ZodString;
843
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
844
+ error: z.ZodOptional<z.ZodObject<{
845
+ error: z.ZodOptional<z.ZodString>;
846
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
847
+ }, z.core.$strip>>;
848
+ feedback: z.ZodOptional<z.ZodObject<{
849
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
850
+ }, z.core.$strip>>;
851
+ id: z.ZodString;
852
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
853
+ message_id: z.ZodString;
854
+ query_result: z.ZodOptional<z.ZodObject<{
855
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
856
+ row_count: z.ZodOptional<z.ZodNumber>;
857
+ statement_id: z.ZodOptional<z.ZodString>;
858
+ statement_id_signature: z.ZodOptional<z.ZodString>;
859
+ }, z.core.$strip>>;
860
+ space_id: z.ZodString;
861
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
862
+ user_id: z.ZodOptional<z.ZodNumber>;
863
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
864
+ attachment_id: z.ZodOptional<z.ZodString>;
865
+ suggested_questions: z.ZodOptional<z.ZodObject<{
866
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
867
+ }, z.core.$strip>>;
868
+ text: z.ZodOptional<z.ZodObject<{
869
+ content: z.ZodOptional<z.ZodString>;
870
+ id: z.ZodOptional<z.ZodString>;
871
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
872
+ }, z.core.$strip>>;
873
+ query: z.ZodOptional<z.ZodObject<{
874
+ description: z.ZodOptional<z.ZodString>;
875
+ id: z.ZodOptional<z.ZodString>;
876
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
877
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
878
+ keyword: z.ZodOptional<z.ZodString>;
879
+ sql_type: z.ZodOptional<z.ZodString>;
880
+ value: z.ZodOptional<z.ZodString>;
881
+ }, z.core.$strip>>>;
882
+ query: z.ZodOptional<z.ZodString>;
883
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
884
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
885
+ row_count: z.ZodOptional<z.ZodNumber>;
886
+ }, z.core.$strip>>;
887
+ statement_id: z.ZodOptional<z.ZodString>;
888
+ title: z.ZodOptional<z.ZodString>;
889
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
890
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
891
+ content: z.ZodString;
892
+ }, z.core.$strip>>>;
893
+ }, z.core.$strip>>;
894
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
895
+ }, z.core.$strip>>>;
896
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
897
+ }, z.core.$strip>;
898
+ }, z.core.$strip>, z.ZodObject<{
899
+ conversation_id: z.ZodOptional<z.ZodString>;
900
+ space_id: z.ZodString;
901
+ message_id: z.ZodOptional<z.ZodString>;
902
+ type: z.ZodLiteral<"status">;
903
+ status: z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>;
904
+ previous_status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
905
+ }, z.core.$strip>, z.ZodObject<{
906
+ space_id: z.ZodString;
907
+ conversation_id: z.ZodOptional<z.ZodString>;
908
+ message_id: z.ZodOptional<z.ZodString>;
909
+ attachment_id: z.ZodOptional<z.ZodString>;
910
+ type: z.ZodLiteral<"attachment">;
911
+ index: z.ZodNumber;
912
+ attachment_type: z.ZodCustom<AttachmentType, AttachmentType>;
913
+ }, z.core.$strip>, z.ZodObject<{
914
+ space_id: z.ZodString;
915
+ conversation_id: z.ZodOptional<z.ZodString>;
916
+ message_id: z.ZodOptional<z.ZodString>;
917
+ attachment_id: z.ZodOptional<z.ZodString>;
918
+ type: z.ZodLiteral<"thinking">;
919
+ text: z.ZodString;
920
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
921
+ }, z.core.$strip>, z.ZodObject<{
922
+ space_id: z.ZodString;
923
+ conversation_id: z.ZodOptional<z.ZodString>;
924
+ message_id: z.ZodOptional<z.ZodString>;
925
+ attachment_id: z.ZodOptional<z.ZodString>;
926
+ type: z.ZodLiteral<"text">;
927
+ text: z.ZodString;
928
+ }, z.core.$strip>, z.ZodObject<{
929
+ space_id: z.ZodString;
930
+ conversation_id: z.ZodOptional<z.ZodString>;
931
+ message_id: z.ZodOptional<z.ZodString>;
932
+ attachment_id: z.ZodOptional<z.ZodString>;
933
+ type: z.ZodLiteral<"query">;
934
+ sql: z.ZodString;
935
+ title: z.ZodOptional<z.ZodString>;
936
+ description: z.ZodOptional<z.ZodString>;
937
+ }, z.core.$strip>, z.ZodObject<{
938
+ space_id: z.ZodString;
939
+ conversation_id: z.ZodOptional<z.ZodString>;
940
+ message_id: z.ZodOptional<z.ZodString>;
941
+ attachment_id: z.ZodOptional<z.ZodString>;
942
+ type: z.ZodLiteral<"statement">;
943
+ statement_id: z.ZodString;
944
+ }, z.core.$strip>, z.ZodObject<{
945
+ space_id: z.ZodString;
946
+ conversation_id: z.ZodOptional<z.ZodString>;
947
+ message_id: z.ZodOptional<z.ZodString>;
948
+ attachment_id: z.ZodOptional<z.ZodString>;
949
+ type: z.ZodLiteral<"rows">;
950
+ row_count: z.ZodNumber;
951
+ previous_row_count: z.ZodOptional<z.ZodNumber>;
952
+ statement_id: z.ZodOptional<z.ZodString>;
953
+ }, z.core.$strip>, z.ZodObject<{
954
+ space_id: z.ZodString;
955
+ conversation_id: z.ZodOptional<z.ZodString>;
956
+ message_id: z.ZodOptional<z.ZodString>;
957
+ attachment_id: z.ZodOptional<z.ZodString>;
958
+ type: z.ZodLiteral<"suggested_questions">;
959
+ questions: z.ZodArray<z.ZodString>;
960
+ }, z.core.$strip>, z.ZodObject<{
961
+ conversation_id: z.ZodOptional<z.ZodString>;
962
+ space_id: z.ZodString;
963
+ message_id: z.ZodOptional<z.ZodString>;
964
+ type: z.ZodLiteral<"result">;
965
+ status: z.ZodEnum<{
966
+ CANCELLED: "CANCELLED";
967
+ COMPLETED: "COMPLETED";
968
+ FAILED: "FAILED";
969
+ }>;
970
+ message: z.ZodObject<{
971
+ content: z.ZodString;
972
+ conversation_id: z.ZodString;
973
+ created_timestamp: z.ZodOptional<z.ZodNumber>;
974
+ error: z.ZodOptional<z.ZodObject<{
975
+ error: z.ZodOptional<z.ZodString>;
976
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION">, z.ZodLiteral<"CHAT_COMPLETION_NETWORK_EXCEPTION">, z.ZodLiteral<"CONTENT_FILTER_EXCEPTION">, z.ZodLiteral<"CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION">, z.ZodLiteral<"COULD_NOT_GET_UC_SCHEMA_EXCEPTION">, z.ZodLiteral<"DEPLOYMENT_NOT_FOUND_EXCEPTION">, z.ZodLiteral<"DESCRIBE_QUERY_INVALID_SQL_ERROR">, z.ZodLiteral<"DESCRIBE_QUERY_TIMEOUT">, z.ZodLiteral<"DESCRIBE_QUERY_UNEXPECTED_FAILURE">, z.ZodLiteral<"EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION">, z.ZodLiteral<"FUNCTIONS_NOT_AVAILABLE_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION">, z.ZodLiteral<"FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION">, z.ZodLiteral<"FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION">, z.ZodLiteral<"GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_EXCEPTION">, z.ZodLiteral<"GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION">, z.ZodLiteral<"GENERIC_SQL_EXEC_API_CALL_EXCEPTION">, z.ZodLiteral<"ILLEGAL_PARAMETER_DEFINITION_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION">, z.ZodLiteral<"INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION">, z.ZodLiteral<"INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_CHAT_COMPLETION_JSON_EXCEPTION">, z.ZodLiteral<"INVALID_COMPLETION_REQUEST_EXCEPTION">, z.ZodLiteral<"INVALID_FUNCTION_CALL_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION">, z.ZodLiteral<"INVALID_SQL_UNKNOWN_TABLE_EXCEPTION">, z.ZodLiteral<"INVALID_TABLE_IDENTIFIER_EXCEPTION">, z.ZodLiteral<"LOCAL_CONTEXT_EXCEEDED_EXCEPTION">, z.ZodLiteral<"MESSAGE_ATTACHMENT_TOO_LONG_ERROR">, z.ZodLiteral<"MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION">, z.ZodLiteral<"MISSING_SQL_QUERY_EXCEPTION">, z.ZodLiteral<"NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE">, z.ZodLiteral<"NO_QUERY_TO_VISUALIZE_EXCEPTION">, z.ZodLiteral<"NO_TABLES_TO_QUERY_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION">, z.ZodLiteral<"RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION">, z.ZodLiteral<"REPLY_PROCESS_TIMEOUT_EXCEPTION">, z.ZodLiteral<"RETRYABLE_PROCESSING_EXCEPTION">, z.ZodLiteral<"SQL_EXECUTION_EXCEPTION">, z.ZodLiteral<"STOP_PROCESS_DUE_TO_AUTO_REGENERATE">, z.ZodLiteral<"TABLES_MISSING_EXCEPTION">, z.ZodLiteral<"TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION">, z.ZodLiteral<"TOO_MANY_TABLES_EXCEPTION">, z.ZodLiteral<"UNEXPECTED_REPLY_PROCESS_EXCEPTION">, z.ZodLiteral<"UNKNOWN_AI_MODEL">, z.ZodLiteral<"UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_ACCESS_MISSING_EXCEPTION">, z.ZodLiteral<"WAREHOUSE_NOT_FOUND_EXCEPTION">]>>;
977
+ }, z.core.$strip>>;
978
+ feedback: z.ZodOptional<z.ZodObject<{
979
+ rating: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"NEGATIVE">, z.ZodLiteral<"NONE">, z.ZodLiteral<"POSITIVE">]>>;
980
+ }, z.core.$strip>>;
981
+ id: z.ZodString;
982
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
983
+ message_id: z.ZodString;
984
+ query_result: z.ZodOptional<z.ZodObject<{
985
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
986
+ row_count: z.ZodOptional<z.ZodNumber>;
987
+ statement_id: z.ZodOptional<z.ZodString>;
988
+ statement_id_signature: z.ZodOptional<z.ZodString>;
989
+ }, z.core.$strip>>;
990
+ space_id: z.ZodString;
991
+ status: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"ASKING_AI">, z.ZodLiteral<"CANCELLED">, z.ZodLiteral<"COMPLETED">, z.ZodLiteral<"EXECUTING_QUERY">, z.ZodLiteral<"FAILED">, z.ZodLiteral<"FETCHING_METADATA">, z.ZodLiteral<"FILTERING_CONTEXT">, z.ZodLiteral<"PENDING_WAREHOUSE">, z.ZodLiteral<"QUERY_RESULT_EXPIRED">, z.ZodLiteral<"SUBMITTED">]>>;
992
+ user_id: z.ZodOptional<z.ZodNumber>;
993
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
994
+ attachment_id: z.ZodOptional<z.ZodString>;
995
+ suggested_questions: z.ZodOptional<z.ZodObject<{
996
+ questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
997
+ }, z.core.$strip>>;
998
+ text: z.ZodOptional<z.ZodObject<{
999
+ content: z.ZodOptional<z.ZodString>;
1000
+ id: z.ZodOptional<z.ZodString>;
1001
+ purpose: z.ZodOptional<z.ZodLiteral<"FOLLOW_UP_QUESTION">>;
1002
+ }, z.core.$strip>>;
1003
+ query: z.ZodOptional<z.ZodObject<{
1004
+ description: z.ZodOptional<z.ZodString>;
1005
+ id: z.ZodOptional<z.ZodString>;
1006
+ last_updated_timestamp: z.ZodOptional<z.ZodNumber>;
1007
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
1008
+ keyword: z.ZodOptional<z.ZodString>;
1009
+ sql_type: z.ZodOptional<z.ZodString>;
1010
+ value: z.ZodOptional<z.ZodString>;
1011
+ }, z.core.$strip>>>;
1012
+ query: z.ZodOptional<z.ZodString>;
1013
+ query_result_metadata: z.ZodOptional<z.ZodObject<{
1014
+ is_truncated: z.ZodOptional<z.ZodBoolean>;
1015
+ row_count: z.ZodOptional<z.ZodNumber>;
1016
+ }, z.core.$strip>>;
1017
+ statement_id: z.ZodOptional<z.ZodString>;
1018
+ title: z.ZodOptional<z.ZodString>;
1019
+ thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1020
+ thought_type: z.ZodCustom<GenieThoughtType, GenieThoughtType>;
1021
+ content: z.ZodString;
1022
+ }, z.core.$strip>>>;
1023
+ }, z.core.$strip>>;
1024
+ attachment_type: z.ZodOptional<z.ZodCustom<AttachmentType, AttachmentType>>;
1025
+ }, z.core.$strip>>>;
1026
+ auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
1027
+ }, z.core.$strip>;
1028
+ }, z.core.$strip>], "type">;
1029
+ export type GenieChatEvent = z.infer<typeof GenieChatEventSchema>;
1030
+ /** Discriminator type for {@link GenieChatEvent}. */
1031
+ export type GenieChatEventType = GenieChatEvent["type"];
1032
+ /**
1033
+ * Field set for a given {@link GenieChatEventType} - the variant
1034
+ * with the `type` discriminator stripped. Used by detectors in
1035
+ * `event.ts` so each detector returns just the payload fields and
1036
+ * the orchestrator stamps `type` at yield time.
1037
+ */
1038
+ export type GenieChatEventFields<T extends GenieChatEventType> = Omit<Extract<GenieChatEvent, {
1039
+ type: T;
1040
+ }>, "type">;