Function: genieChat()
genieChat(
space_id,content,options?):AsyncGenerator<{attachments?:object[];auto_regenerate_count?:number;content:string;conversation_id:string;created_timestamp?:number;error?: {error?:string;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"; };feedback?: {rating?:"NEGATIVE"|"NONE"|"POSITIVE"; };id:string;last_updated_timestamp?:number;message_id:string;query_result?: {is_truncated?:boolean;row_count?:number;statement_id?:string;statement_id_signature?:string; };space_id:string;status?:"ASKING_AI"|"CANCELLED"|"COMPLETED"|"EXECUTING_QUERY"|"FAILED"|"FETCHING_METADATA"|"FILTERING_CONTEXT"|"PENDING_WAREHOUSE"|"QUERY_RESULT_EXPIRED"|"SUBMITTED";user_id?:number; },void,void>
One turn against a Genie space, yielded as a stream of GenieMessage
snapshots.
Turn lifecycle:
- No
options.conversationId: open a new conversation viaclient.genie.startConversation. The opened conversation id surfaces on every yieldedGenieMessage(.conversation_id) so the caller can thread it into a follow-up call. - With
options.conversationId: append to that conversation viaclient.genie.createMessage. - In both cases, after the create/start the driver polls
client.genie.getMessageeveryoptions.pollIntervalMs(default 500ms) until the message reaches a terminal status, then yields the terminal snapshot and returns.
Cancellation: a single internal AbortController covers the whole turn.
options.context is tied into that controller so an external abort tears
down every in-flight SDK call AND the inter-poll sleep. Breaking out of the
for await does the same via the try / finally.
Parameters
Section titled “Parameters”space_id
Section titled “space_id”string
content
Section titled “content”string
options?
Section titled “options?”Returns
Section titled “Returns”AsyncGenerator<{ attachments?: object[]; auto_regenerate_count?: number; content: string; conversation_id: string; created_timestamp?: number; error?: { error?: string; 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"; }; feedback?: { rating?: "NEGATIVE" | "NONE" | "POSITIVE"; }; id: string; last_updated_timestamp?: number; message_id: string; query_result?: { is_truncated?: boolean; row_count?: number; statement_id?: string; statement_id_signature?: string; }; space_id: string; status?: "ASKING_AI" | "CANCELLED" | "COMPLETED" | "EXECUTING_QUERY" | "FAILED" | "FETCHING_METADATA" | "FILTERING_CONTEXT" | "PENDING_WAREHOUSE" | "QUERY_RESULT_EXPIRED" | "SUBMITTED"; user_id?: number; }, void, void>
Examples
Section titled “Examples”// Single turn.for await (const m of genieChat(spaceId, "Top 5 stores?")) { render(m);}// Multi-turn: caller threads the conversation id.let conversationId: string | undefined;for (const question of questions) { for await (const m of genieChat(spaceId, question, { conversationId })) { conversationId = m.conversation_id ?? conversationId; render(m); }}