/** * Shared types and timeout budgets for the `ds` command family. * * Project #272 Phase 0: extracted from `commands/ds.ts` (which crossed 800 * lines) into the existing `commands/ds/` subfolder, joining `refresh-history.ts`. * Mechanical split - no behavior change. `registerDSCommands` stays whole in * `ds.ts` so no Commander metadata moves and the generated command table in * SKILL.md cannot drift. */ export interface DSInfo { id: string; name: string; status: string; row_count: number; source_sql: string; verified: boolean; connector_type: string; last_refreshed: string; failure_reason?: string | null; last_error?: string | null; } export interface DSListResponse { data_sources: DSInfo[]; } export interface ShapeValidation { status: string; warnings?: string[]; display_instruction?: string; } export interface ScanResult { data_source_id: string; kb_table_id: string; table_name: string; column_count: number; columns: { name: string; type: string; description: string; }[]; already_scanned: boolean; activated?: boolean; validation?: ShapeValidation; status?: string; verified?: boolean; } export declare const POLL_INTERVAL_MS = 3000; export declare const MAX_POLL_DURATION_MS: number; export declare const MAX_CREATE_POLL_DURATION_MS: number; export declare const SCAN_TIMEOUT_MS = 90000; export declare const REFRESH_TRIGGER_TIMEOUT_MS = 60000; export declare const CREATE_TIMEOUT_MS = 120000; export interface FileUploadResult { id: string; name: string; status: string; row_count: number; kb_table_id: string | null; domain: string | null; domain_note?: string; } /** * Create a data source from a local Excel/CSV file (Feature #645). Uploads the * file as multipart; the server parses, runs the inline AI scan, encrypts, and * (optionally) attaches the new table to a domain - all in one request. */