@dbx-tools/genie-shared 0.1.18

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