import type { ToolDef } from "@fabric-harness/sdk"; import type { GenieClient } from "@databricks/sdk-genie/v1"; import type { DatabricksRawProtocolClient } from "./raw-protocol-client.js"; export type DatabricksGenieSdkClient = Pick; export type DatabricksGenieMessageStatus = "FETCHING_METADATA" | "FILTERING_CONTEXT" | "ASKING_AI" | "PENDING_WAREHOUSE" | "EXECUTING_QUERY" | "FAILED" | "COMPLETED" | "SUBMITTED" | "QUERY_RESULT_EXPIRED" | "CANCELLED" | string; export interface DatabricksGenieAgentReference { /** Canonical Genie Agent id. */ agentId: string; } export interface DatabricksGenieClientOptions extends DatabricksGenieAgentReference { /** * Explicit fallback for the 0.21 SDK query-result schema defect. Used only when the generated * parser rejects Databricks' documented row-array payload; other SDK errors remain fail-closed. */ rawProtocolClient?: DatabricksRawProtocolClient; pollIntervalMs?: number; timeoutMs?: number; /** Random polling variation from 0 to 1. Default 0.2. */ pollJitterRatio?: number; /** Maximum attachments accepted from one message. Default 32. */ maxAttachments?: number; /** Maximum unknown attachment kinds retained. Default 8. */ maxUnknownAttachments?: number; /** Maximum JSON-encoded query-result size. Default 2 MiB. */ maxResultBytes?: number; /** Maximum combined text answer size. Default 100,000 characters. */ maxTextChars?: number; } export interface DatabricksGenieToolOptions extends DatabricksGenieClientOptions { name?: string; description?: string; /** Ask Genie to generate visualization attachments. Beta in Databricks. */ enableVisualization?: boolean; } export interface DatabricksGenieAskInput { question: string; conversationId?: string; enableVisualization?: boolean; signal?: AbortSignal; } export interface DatabricksGenieTextAttachment { kind: "text"; attachmentId?: string; content: string; } export interface DatabricksGenieQueryResult { statementResponse?: Record; raw: Record; } export interface DatabricksGenieQueryAttachment { kind: "query"; attachmentId: string; query?: string; title?: string; description?: string; statementId?: string; queryResultMetadata?: Record; result: DatabricksGenieQueryResult; } export interface DatabricksGenieVisualizationAttachment { kind: "visualization"; attachmentId: string; title?: string; queryAttachmentId?: string; /** Relative API path for callers that need the PNG payload. */ downloadPath: string; } export interface DatabricksGenieSuggestedQuestionsAttachment { kind: "suggested-questions"; attachmentId?: string; questions: string[]; } export interface DatabricksGenieUnknownAttachment { kind: "unknown"; attachmentId?: string; raw: Record; } export type DatabricksGenieAttachment = DatabricksGenieTextAttachment | DatabricksGenieQueryAttachment | DatabricksGenieVisualizationAttachment | DatabricksGenieSuggestedQuestionsAttachment; export interface DatabricksGenieResponse { agentId: string; conversationId: string; messageId: string; status: "COMPLETED"; attachments: DatabricksGenieAttachment[]; unknownAttachments: DatabricksGenieUnknownAttachment[]; unknownAttachmentsTruncated: boolean; /** Compatibility summary of all text attachments. */ text?: string; /** Compatibility summary of the first generated query. */ sql?: string; /** Compatibility result for the first generated query. */ result?: Record; } export interface DatabricksGenieConversationSummary { conversationId: string; title?: string; createdTimestamp?: number; } export interface DatabricksGenieConversationPage { conversations: DatabricksGenieConversationSummary[]; nextPageToken?: string; } export interface DatabricksGenieMessageSummary { messageId: string; conversationId?: string; content?: string; status?: DatabricksGenieMessageStatus; createdTimestamp?: number; lastUpdatedTimestamp?: number; error?: Record; } export interface DatabricksGenieMessagePage { messages: DatabricksGenieMessageSummary[]; nextPageToken?: string; } export interface DatabricksGenieMessageComment { messageCommentId: string; conversationId?: string; messageId?: string; content: string; createdTimestamp?: number; userId?: number; } export interface DatabricksGenieCommentPage { comments: DatabricksGenieMessageComment[]; nextPageToken?: string; } export declare class DatabricksGenieProtocolError extends Error { constructor(message: string); } export declare class DatabricksGenieTimeoutError extends Error { readonly conversationId: string; readonly messageId: string; constructor(conversationId: string, messageId: string, timeoutMs: number); } export declare class DatabricksGenieMessageError extends Error { readonly conversationId: string; readonly messageId: string; readonly status: DatabricksGenieMessageStatus; readonly details: Record | undefined; constructor(conversationId: string, messageId: string, status: DatabricksGenieMessageStatus, details?: Record); } export declare class DatabricksGenieResponseLimitError extends Error { constructor(kind: string, limit: number); } interface RawGenieMessage { message_id?: unknown; id?: unknown; conversation_id?: unknown; content?: unknown; status?: unknown; attachments?: unknown; error?: unknown; created_timestamp?: unknown; last_updated_timestamp?: unknown; } export declare class DatabricksGenieClient { private readonly client; readonly agentId: string; private readonly basePath; private readonly pollIntervalMs; private readonly timeoutMs; private readonly pollJitterRatio; private readonly maxAttachments; private readonly maxUnknownAttachments; private readonly maxResultBytes; private readonly maxTextChars; private readonly rawProtocolClient; constructor(client: DatabricksGenieSdkClient, options: DatabricksGenieClientOptions); ask(input: DatabricksGenieAskInput): Promise; private callMutation; waitForMessage(conversationId: string, messageId: string, options?: { signal?: AbortSignal; }): Promise; getMessageAttachmentQueryResult(conversationId: string, messageId: string, attachmentId: string, options?: { signal?: AbortSignal; }): Promise; listConversations(options?: { includeAll?: boolean; pageSize?: number; pageToken?: string; signal?: AbortSignal; }): Promise; listMessages(conversationId: string, options?: { pageSize?: number; pageToken?: string; signal?: AbortSignal; }): Promise; createMessageComment(conversationId: string, messageId: string, content: string, options?: { signal?: AbortSignal; }): Promise; listMessageComments(conversationId: string, messageId: string, options?: { pageSize?: number; pageToken?: string; signal?: AbortSignal; }): Promise; deleteConversation(conversationId: string, options?: { signal?: AbortSignal; }): Promise; private parseAttachments; private pushUnknown; private conversationPath; private messagePath; } export declare function databricksGenie(client: DatabricksGenieSdkClient, options: DatabricksGenieClientOptions): DatabricksGenieClient; /** * Genie Agents — delegate a natural-language analytics question to a governed Genie Agent. Genie * generates and runs SQL on the warehouse and returns typed answer, query, result, and visualization * attachments. Pass `conversationId` to continue a multi-turn thread. */ export declare function databricksGenieTool(client: DatabricksGenieSdkClient, options: DatabricksGenieToolOptions): ToolDef<{ question: string; conversationId?: string; }, DatabricksGenieResponse>; export {}; //# sourceMappingURL=genie.d.ts.map