{"version":3,"sources":["../../src/types/registry.ts","../../src/types/utils.ts","../../src/types/index.ts","../../src/types/database.types.ts","../../src/types/tables.ts","../../src/types/integrations.ts","../../src/types/account.ts","../../src/types/dashboard.ts","../../src/types/automations.ts","../../src/oauth/base.ts","../../src/oauth/airtable.ts","../../src/oauth/google_sheets.ts","../../src/oauth/index.ts","../../src/base.ts","../../src/accounts/index.ts","../../src/teams/index.ts","../../src/embed_users/index.ts","../../src/datasources/index.ts","../../src/automations/index.ts","../../src/dashboards/index.ts","../../src/dashboard_datasources/index.ts","../../src/widget_suggestions/index.ts","../../src/dashboard/index.ts","../../src/embed_user/index.ts","../../src/datasource/index.ts","../../src/questions/index.ts","../../src/automation/index.ts","../../src/widget/index.ts","../../src/sessions/index.ts","../../src/widgets/index.ts","../../src/question/index.ts","../../src/utils/index.ts","../../src/logs/index.ts","../../src/integrations/index.ts","../../src/integration_tables/index.ts","../../src/integration/index.ts","../../src/onvo.ts"],"sourcesContent":["import { OpenAPIRegistry, extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';\nimport { z, ZodTypeDef, ZodTypeAny, ZodRawShape } from 'zod';\n\n// Apply type assertion to fix \"Type instantiation is excessively deep and possibly infinite\" error\n// @ts-ignore\nextendZodWithOpenApi(z as any);\n\ndeclare module 'zod' {\n    interface ZodType<Output, Def extends ZodTypeDef = ZodTypeDef, Input = Output> {\n        openapi(options: any): this;\n    }\n    interface ZodObject<T extends ZodRawShape> {\n        openapi(options: any): this;\n    }\n    interface ZodArray<T extends ZodTypeAny> {\n        openapi(options: any): this;\n    }\n    interface ZodOptional<T extends ZodTypeAny> {\n        openapi(options: any): this;\n    }\n    interface ZodNullable<T extends ZodTypeAny> {\n        openapi(options: any): this;\n    }\n    /*\n    interface ZodUnion<T extends ZodTypeAny[]> {\n        openapi(options: any): this;\n    }\n    */\n    interface ZodEnum<T extends [string, ...string[]]> {\n        openapi(options: any): this;\n    }\n}\n\n// Create a wrapped version of z with proper typing for OpenAPI extensions\ntype EnhancedZod = typeof z & {\n    // Add missing openapi method to all Zod types\n    ZodString: typeof z.ZodString & { prototype: { openapi: any } };\n    ZodNumber: typeof z.ZodNumber & { prototype: { openapi: any } };\n    ZodBoolean: typeof z.ZodBoolean & { prototype: { openapi: any } };\n    ZodArray: typeof z.ZodArray & { prototype: { openapi: any } };\n    ZodObject: typeof z.ZodObject & { prototype: { openapi: any } };\n    ZodEnum: typeof z.ZodEnum & { prototype: { openapi: any } };\n    ZodUnion: typeof z.ZodUnion & { prototype: { openapi: any } };\n    ZodOptional: typeof z.ZodOptional & { prototype: { openapi: any } };\n    ZodNullable: typeof z.ZodNullable & { prototype: { openapi: any } };\n    ZodAny: typeof z.ZodAny & { prototype: { openapi: any } };\n};\n\n// Export the z instance (which is now extended)\nexport { z };\n\n// Create and export the registry\nexport const registry = new OpenAPIRegistry();\n\n// Add a helper function to register schemas with proper type assertions\nexport function registerSchema(name: string, schema: any) {\n    return registry.register(name, schema as any);\n}\n","import { z, registry } from './registry.js';\ntype AnyObject = Record<string, any>;\n\ntype DeepPartialAny<T> = {\n  /** Makes each property optional and turns each leaf property into any, allowing for type overrides by narrowing any. */\n  [P in keyof T]?: T[P] extends AnyObject ? DeepPartialAny<T[P]> : any;\n};\n\n// Fixed version with proper recursion handling\nexport type Modify<A, B extends DeepPartialAny<A>> = {\n  [K in keyof (A & B)]: K extends keyof B\n  ? K extends keyof A\n  ? A[K] extends AnyObject\n  ? B[K] extends AnyObject\n  ? Modify<A[K], B[K] & DeepPartialAny<A[K]>>\n  : B[K]\n  : B[K]\n  : B[K]\n  : K extends keyof A\n  ? A[K]\n  : never;\n};\n\nexport interface Metadata {\n  label: string;\n  value: string;\n  secure?: boolean;\n}\n\n// @ts-ignore\nexport const MetadataItemZod = registry.register(\"MetadataItem\", z.object({\n  label: z.string().openapi({ description: 'The label for the metadata item.', example: 'User ID' }),\n  value: z.string().openapi({ description: 'The value of the metadata item.', example: 'usr_12345' }),\n  secure: z.boolean().optional().openapi({ description: 'Indicates if the metadata value should be treated as secure.', example: false })\n}).openapi({ description: \"A metadata item.\" }));","import { z, registry } from \"./registry.js\";\nimport { Database } from \"./database.types.js\";\nimport { Metadata, Modify, MetadataItemZod } from \"./utils.js\";\nimport {\n  OpenApiGeneratorV3,\n  extendZodWithOpenApi,\n} from \"@asteasolutions/zod-to-openapi\";\nimport { Account } from \"./account.js\";\n\nextendZodWithOpenApi(z as any);\n\nexport * from \"./database.types.js\";\nexport * from \"./tables.js\";\nexport * from \"./utils.js\";\nexport * from \"./integrations.js\";\nexport * from \"./account.js\";\nexport * from \"./dashboard.js\";\nexport * from \"./automations.js\";\n\nexport enum LogType {\n  ViewDashboard = \"view-dashboard\",\n  EditDashboard = \"edit-dashboard\",\n  CreateWidget = \"create-widget\",\n  DeleteWidget = \"delete-widget\",\n  EditWidget = \"edit-widget\",\n}\nexport type WidgetSettings = {\n  css_id?: string;\n  css_classnames?: string;\n  link?: string;\n};\nexport interface DatasourceFilter {\n  column: string;\n  type: \"text\" | \"number\" | \"date\";\n  label: string;\n  max_days?: number;\n}\n\nexport type WidgetMessage = {\n  role: \"user\" | \"assistant\";\n  content: string;\n};\n\nexport type Message = Modify<\n  Database[\"public\"][\"Tables\"][\"messages\"][\"Row\"],\n  {\n    role: \"user\" | \"assistant\" | \"tool\";\n    content?: string;\n    tool_calls?: any[];\n  }\n>;\nexport const MessageZod = registry.register(\n  \"Message\",\n  z\n    .object({\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Message ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      content: z\n        .string()\n        .optional()\n        .openapi({ description: \"Message content.\", example: \"Hello!\" }),\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the message was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      dashboard: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"Dashboard ID associated with the message, if any.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      question: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Question ID associated with the message.\",\n          example: \"question_123\",\n        }),\n      role: z\n        .enum([\"user\", \"assistant\", \"tool\"])\n        .nullable()\n        .openapi({\n          description: \"Role of the message sender.\",\n          example: \"user\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the message.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      tool_call_id: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"Tool call ID associated with the message, if any.\",\n          example: \"toolcall_123\",\n        }),\n      tool_calls: z\n        .array(z.any())\n        .nullable()\n        .openapi({\n          description: \"Tool calls associated with the message.\",\n          example: [],\n        }),\n      vote: z\n        .enum([\"up\", \"down\"])\n        .nullable()\n        .openapi({\n          description: \"Vote associated with the message.\",\n          example: \"up\",\n        }),\n      vote_reason: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Vote reason associated with the message.\",\n          example: \"I like it!\",\n        }),\n    })\n    .openapi({ description: \"A message in a conversation.\" }) as any,\n);\n\nexport type Invite = Database[\"public\"][\"Tables\"][\"invites\"][\"Row\"];\nexport const InviteZod = registry.register(\n  \"Invite\",\n  z\n    .object({\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the invite was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      email: z\n        .string()\n        .email()\n        .openapi({\n          description: \"The email address the invite was sent to.\",\n          example: \"invitee@example.com\",\n        }),\n      name: z\n        .string()\n        .openapi({\n          description: \"The name of the invitee.\",\n          example: \"Jane Doe\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"The ID of the team the invite is for.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n    })\n    .openapi({ description: \"An invite to join a team.\" }) as any,\n);\n\nexport type Member = Database[\"public\"][\"Tables\"][\"members\"][\"Row\"];\nexport const MemberZod = registry.register(\n  \"Member\",\n  z\n    .object({\n      account: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"The ID of the account that is a member.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"The ID of the team the member belongs to.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n    })\n    .openapi({ description: \"A member of a team.\" }) as any,\n);\n\nexport type Team = Database[\"public\"][\"Tables\"][\"teams\"][\"Row\"];\nexport const TeamZod = registry.register(\n  \"Team\",\n  z\n    .object({\n      created_at: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Timestamp when the team was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      email: z\n        .string()\n        .email()\n        .nullable()\n        .openapi({\n          description: \"The team's contact email address.\",\n          example: \"team@example.com\",\n        }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      logo: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"URL to the team's logo.\",\n          example: \"https://example.com/logo.png\",\n        }),\n      name: z\n        .string()\n        .nullable()\n        .openapi({ description: \"The team's name.\", example: \"Acme Corp\" }),\n      phone_number: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"The team's contact phone number.\",\n          example: \"+1234567890\",\n        }),\n      stripe_id: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Stripe customer ID for the team.\",\n          example: \"cus_abc123\",\n        }),\n    })\n    .openapi({\n      description: \"A team that represents a group of users.\",\n    }) as any,\n);\n\nexport type DatasourceMeta = {\n  dashboards: number;\n  integration: {\n    id: string;\n    title: string;\n  };\n  created_by: Account;\n  last_updated_by?: Account;\n};\nexport type DataSource = Modify<\n  Database[\"public\"][\"Tables\"][\"datasources\"][\"Row\"],\n  {\n    columns: {\n      title: string;\n      description: string;\n      type?: string;\n      hidden?: boolean;\n    }[];\n    config: any;\n    parameters: { id: string; wrap?: string; default: string }[];\n    filters: DatasourceFilter[];\n    metadata?: Metadata[];\n  }\n>;\nexport const DataSourceZod = registry.register(\n  \"DataSource\",\n  z\n    .object({\n      columns: z\n        .array(\n          z.object({\n            title: z\n              .string()\n              .openapi({ description: \"Column title.\", example: \"Name\" }),\n            description: z\n              .string()\n              .openapi({\n                description: \"Column description.\",\n                example: \"The name of the entity.\",\n              }),\n            type: z\n              .string()\n              .optional()\n              .openapi({ description: \"Column type.\", example: \"text\" }),\n            hidden: z\n              .boolean()\n              .optional()\n              .openapi({ description: \"Column hidden.\", example: false }),\n          }),\n        )\n        .openapi({ description: \"Datasource columns.\" }),\n      config: z\n        .any()\n        .openapi({ description: \"Datasource config (arbitrary object).\" }),\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the datasource was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      created_by: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the account that created the datasource.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      description: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Description of the datasource.\",\n          example: \"This datasource contains sales data.\",\n        }),\n      filters: z\n        .array(\n          z.object({\n            column: z\n              .string()\n              .openapi({ description: \"Filter column.\", example: \"age\" }),\n            type: z\n              .enum([\"text\", \"number\", \"date\"])\n              .openapi({ description: \"Filter type.\", example: \"number\" }),\n            label: z\n              .string()\n              .openapi({ description: \"Filter label.\", example: \"Age\" }),\n            max_days: z\n              .number()\n              .optional()\n              .openapi({ description: \"Max selectable days.\", example: 30 }),\n          }),\n        )\n        .openapi({ description: \"Datasource filters.\" }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Datasource ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      integration: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"Integration ID associated with the datasource, if any.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      last_updated_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the datasource was last updated.\",\n          example: \"2024-05-02T10:00:00.000Z\",\n        }),\n      last_updated_by: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the account that last updated the datasource.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      metadata: z\n        .array(MetadataItemZod)\n        .openapi({ description: \"Datasource metadata.\" }),\n      parameters: z\n        .array(\n          z.object({\n            id: z\n              .string()\n              .openapi({ description: \"Parameter ID.\", example: \"param1\" }),\n            wrap: z\n              .string()\n              .optional()\n              .openapi({\n                description: \"Wrap option for parameter.\",\n                example: \"quotes\",\n              }),\n            default: z\n              .string()\n              .openapi({\n                description: \"Default value for parameter.\",\n                example: \"default_value\",\n              }),\n          }),\n        )\n        .openapi({ description: \"Datasource parameters.\" }),\n      size: z\n        .number()\n        .openapi({ description: \"Size of the datasource.\", example: 1000 }),\n      source: z\n        .string()\n        .openapi({ description: \"Source of the datasource.\", example: \"csv\" }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID that owns the datasource.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      title: z\n        .string()\n        .openapi({\n          description: \"Title of the datasource.\",\n          example: \"Sales Data\",\n        }),\n    })\n    .openapi({\n      description: \"A datasource that provides data for visualizations.\",\n    }) as any,\n);\n\nexport type EmbedUser = Modify<\n  Database[\"public\"][\"Tables\"][\"embed_users\"][\"Row\"],\n  { parameters: Metadata[] }\n>;\nexport const EmbedUserZod = registry.register(\n  \"EmbedUser\",\n  z\n    .object({\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the embed user was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      email: z\n        .string()\n        .email()\n        .nullable()\n        .openapi({\n          description: \"Email address of the embed user.\",\n          example: \"embeduser@example.com\",\n        }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Embed user ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      last_updated_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the embed user was last updated.\",\n          example: \"2024-05-02T10:00:00.000Z\",\n        }),\n      name: z\n        .string()\n        .openapi({\n          description: \"Name of the embed user.\",\n          example: \"John Doe\",\n        }),\n      parameters: z\n        .any()\n        .nullable()\n        .openapi({\n          description: \"Parameters for the embed user (arbitrary object).\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID that the embed user belongs to.\",\n          example: \"team_123\",\n        }),\n    })\n    .openapi({ description: \"An embed user.\" }) as any,\n);\n\nexport type Subscription = Database[\"public\"][\"Tables\"][\"subscriptions\"][\"Row\"];\nexport const SubscriptionZod = registry.register(\n  \"Subscription\",\n  z.object({\n    amount: z\n      .number()\n      .openapi({ description: \"Subscription amount.\", example: 1999 }),\n    created_at: z\n      .string()\n      .openapi({\n        description: \"Timestamp when the subscription was created.\",\n        example: \"2024-05-01T16:58:00.000Z\",\n      }),\n    currency: z\n      .string()\n      .openapi({\n        description: \"Currency of the subscription.\",\n        example: \"USD\",\n      }),\n    integrations: z\n      .array(z.string())\n      .openapi({\n        description: \"Integrations included in the subscription.\",\n        example: [\"slack\", \"github\"],\n      }),\n    interval: z\n      .string()\n      .openapi({ description: \"Billing interval.\", example: \"month\" }),\n    period_end: z\n      .string()\n      .openapi({\n        description: \"End of the current billing period.\",\n        example: \"2024-06-01T16:58:00.000Z\",\n      }),\n    period_start: z\n      .string()\n      .openapi({\n        description: \"Start of the current billing period.\",\n        example: \"2024-05-01T16:58:00.000Z\",\n      }),\n    product_name: z\n      .string()\n      .openapi({\n        description: \"Product name of the subscription.\",\n        example: \"Pro Plan\",\n      }),\n    stripe_customer_id: z\n      .string()\n      .openapi({ description: \"Stripe customer ID.\", example: \"cus_abc123\" }),\n    stripe_product_id: z\n      .string()\n      .openapi({ description: \"Stripe product ID.\", example: \"prod_abc123\" }),\n    stripe_subscription_id: z\n      .string()\n      .openapi({\n        description: \"Stripe subscription ID.\",\n        example: \"sub_abc123\",\n      }),\n    team: z\n      .string()\n      .uuid()\n      .openapi({\n        description: \"Team ID associated with the subscription.\",\n        example: \"team_123\",\n      }),\n  }) as any,\n);\n\nexport type SubscriptionPlan =\n  Database[\"public\"][\"Tables\"][\"subscription_plans\"][\"Row\"];\nexport const SubscriptionPlanZod = registry.register(\n  \"SubscriptionPlan\",\n  z\n    .object({\n      accounts: z\n        .number()\n        .nullable()\n        .openapi({\n          description: \"Number of accounts allowed in the plan.\",\n          example: 10,\n        }),\n      automations: z\n        .boolean()\n        .openapi({\n          description: \"Whether automations are enabled in the plan.\",\n          example: true,\n        }),\n      connected_datasources: z\n        .number()\n        .openapi({\n          description: \"Number of connected datasources allowed.\",\n          example: 5,\n        }),\n      copilot: z\n        .boolean()\n        .openapi({\n          description: \"Whether copilot is enabled in the plan.\",\n          example: true,\n        }),\n      custom_llm: z\n        .boolean()\n        .openapi({\n          description: \"Whether custom LLM is enabled in the plan.\",\n          example: false,\n        }),\n      embed_users: z\n        .number()\n        .openapi({\n          description: \"Number of embed users allowed.\",\n          example: 100,\n        }),\n      name: z\n        .string()\n        .openapi({\n          description: \"Name of the subscription plan.\",\n          example: \"Pro\",\n        }),\n      premium_integrations: z\n        .number()\n        .openapi({\n          description: \"Number of premium integrations allowed.\",\n          example: 2,\n        }),\n    })\n    .openapi({ description: \"A subscription plan.\" }) as any,\n);\n\nexport type APIKey = Database[\"public\"][\"Tables\"][\"api_keys\"][\"Row\"];\nexport const APIKeyZod = registry.register(\n  \"APIKey\",\n  z\n    .object({\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the API key was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      description: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Description of the API key.\",\n          example: \"Key for production environment\",\n        }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"API Key ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      key: z\n        .string()\n        .openapi({\n          description: \"The API key string.\",\n          example: \"ey.1234567890\",\n        }),\n      last_used_at: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Timestamp when the API key was last used.\",\n          example: \"2024-05-02T12:00:00.000Z\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the API key.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n    })\n    .openapi({ description: \"An API key.\" }) as any,\n);\n\nexport type Widget = Modify<\n  Database[\"public\"][\"Tables\"][\"widgets\"][\"Row\"],\n  {\n    settings?: WidgetSettings;\n    messages: WidgetMessage[];\n    layouts: {\n      lg: { x: number; y: number; w: number; h: number };\n      sm?: { x: number; y: number; w: number; h: number };\n    };\n  }\n>;\nexport const WidgetZod = registry.register(\n  \"Widget\",\n  z\n    .object({\n      settings: z\n        .object({\n          css_id: z\n            .string()\n            .optional()\n            .openapi({ description: \"Widget CSS ID.\", example: \"widget-123\" }),\n          css_classnames: z\n            .string()\n            .optional()\n            .openapi({\n              description: \"Widget CSS class names.\",\n              example: \"widget-class\",\n            }),\n        })\n        .optional()\n        .openapi({ description: \"Widget settings.\" }),\n      messages: z\n        .array(\n          z.object({\n            role: z\n              .enum([\"user\", \"assistant\"])\n              .openapi({\n                description: \"Widget message role.\",\n                example: \"user\",\n              }),\n            content: z\n              .string()\n              .openapi({\n                description: \"Widget message content.\",\n                example: \"Hello from widget!\",\n              }),\n          }),\n        )\n        .openapi({ description: \"Widget messages.\" }),\n      layouts: z\n        .object({\n          lg: z.object({\n            x: z.number().openapi({ description: \"X position.\", example: 0 }),\n            y: z.number().openapi({ description: \"Y position.\", example: 0 }),\n            w: z.number().openapi({ description: \"Width.\", example: 4 }),\n            h: z.number().openapi({ description: \"Height.\", example: 3 }),\n          }),\n          sm: z\n            .object({\n              x: z\n                .number()\n                .openapi({ description: \"X position (sm).\", example: 0 }),\n              y: z\n                .number()\n                .openapi({ description: \"Y position (sm).\", example: 0 }),\n              w: z.number().openapi({ description: \"Width (sm).\", example: 2 }),\n              h: z\n                .number()\n                .openapi({ description: \"Height (sm).\", example: 2 }),\n            })\n            .optional(),\n        })\n        .openapi({ description: \"Widget layouts.\" }),\n      drilldown_widget: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description:\n            \"Drilldown widget ID associated with the widget, if any.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n    })\n    .openapi({ description: \"A widget.\" }) as any,\n);\n\nexport type WidgetSuggestion =\n  Database[\"public\"][\"Tables\"][\"widget_suggestions\"][\"Row\"];\nexport const WidgetSuggestionZod = registry.register(\n  \"WidgetSuggestions\",\n  z\n    .object({\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Widget suggestion ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      dashboard: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Dashboard ID associated with the suggestion.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the suggestion.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the suggestion was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      widget: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Widget ID associated with the suggestion.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      title: z\n        .string()\n        .openapi({\n          description: \"Title of the widget suggestion.\",\n          example: \"Widget Suggestion\",\n        }),\n      description: z\n        .string()\n        .openapi({\n          description: \"Description of the widget suggestion.\",\n          example: \"This is a widget suggestion.\",\n        }),\n    })\n    .openapi({ description: \"A widget suggestion.\" }) as any,\n);\n\nexport type DashboardDatasource =\n  Database[\"public\"][\"Tables\"][\"dashboard_datasources\"][\"Row\"];\nexport const DashboardDatasourceZod = registry.register(\n  \"DashboardDatasource\",\n  z\n    .object({\n      dashboard: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Dashboard ID associated with the datasource.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      datasource: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Datasource ID associated with the dashboard.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the dashboard datasource.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n    })\n    .openapi({ description: \"A dashboard datasource.\" }) as any,\n);\n\nexport type Session = Modify<\n  Database[\"public\"][\"Tables\"][\"sessions\"][\"Row\"],\n  {\n    parameters: Metadata[];\n  }\n>;\nexport const SessionZod = registry.register(\n  \"Session\",\n  z\n    .object({\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the session was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      dashboard: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Dashboard ID associated with the session.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      embed_user: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Embed user ID associated with the session.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      parameters: z\n        .any()\n        .openapi({ description: \"Session parameters (arbitrary object).\" }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the session.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n    })\n    .openapi({ description: \"A user session.\" }) as any,\n);\n\nexport type Question = Database[\"public\"][\"Tables\"][\"questions\"][\"Row\"];\nexport const QuestionZod = registry.register(\n  \"Question\",\n  z\n    .object({\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the question was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      dashboard: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Dashboard ID associated with the question.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Question ID.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      messages: z\n        .any()\n        .openapi({\n          description:\n            \"Messages associated with the question (arbitrary object).\",\n        }),\n      query: z\n        .string()\n        .openapi({\n          description: \"Query text of the question.\",\n          example: \"What were last month's sales?\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"Team ID associated with the question, if any.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n    })\n    .openapi({ description: \"A question asked in the dashboard.\" }) as any,\n);\n\nexport type IntegrationMeta = {\n  integration_tables: number;\n  datasources: number;\n};\nexport type Integration = Modify<\n  Database[\"public\"][\"Tables\"][\"integrations\"][\"Row\"],\n  {\n    config: any;\n    parameters: { id: string; wrap?: string; default: string }[];\n  }\n>;\nexport const IntegrationZod = registry.register(\n  \"Integration\",\n  z\n    .object({\n      config: z\n        .any()\n        .openapi({ description: \"Integration config (arbitrary object).\" }),\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Timestamp when the integration was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Integration ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      provider: z\n        .string()\n        .openapi({ description: \"Integration provider.\", example: \"slack\" }),\n      status: z\n        .string()\n        .openapi({ description: \"Integration status.\", example: \"active\" }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the integration.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      title: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Title of the integration.\",\n          example: \"Slack Integration\",\n        }),\n      parameters: z\n        .array(\n          z.object({\n            id: z\n              .string()\n              .openapi({\n                description: \"Parameter ID.\",\n                example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n              }),\n            wrap: z\n              .string()\n              .optional()\n              .openapi({ description: \"Parameter wrap.\", example: \"slack\" }),\n            default: z\n              .string()\n              .openapi({\n                description: \"Parameter default.\",\n                example: \"active\",\n              }),\n          }),\n        )\n        .openapi({ description: \"Integration parameters.\" }),\n    })\n    .openapi({\n      description: \"An integration with an external service.\",\n    }) as any,\n);\n\nexport type IntegrationTable = Modify<\n  Database[\"public\"][\"Tables\"][\"integration_tables\"][\"Row\"],\n  {\n    columns: any[];\n  }\n>;\nexport const IntegrationTableZod = registry.register(\n  \"IntegrationTable\",\n  z\n    .object({\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Integration ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      columns: z\n        .array(\n          z.object({\n            name: z\n              .string()\n              .openapi({ description: \"Field name.\", example: \"name\" }),\n            type: z\n              .string()\n              .openapi({ description: \"Field type.\", example: \"text\" }),\n            description: z\n              .string()\n              .openapi({\n                description: \"Field description.\",\n                example: \"The name of the entity.\",\n              }),\n            hidden: z\n              .boolean()\n              .optional()\n              .openapi({ description: \"Field hidden.\", example: false }),\n          }),\n        )\n        .openapi({ description: \"Integration fields.\" }),\n      rows: z\n        .number()\n        .openapi({\n          description: \"Number of rows in the integration table.\",\n          example: 100,\n        }),\n      errors: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Any errors in the integration table.\",\n          example: \"\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the integration table.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      title: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Title of the integration table.\",\n          example: \"Slack Integration Table\",\n        }),\n      description: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Description of the integration table.\",\n          example: \"This integration table is used to connect to Slack.\",\n        }),\n    })\n    .openapi({ description: \"A table under an integration.\" }) as any,\n);\n\nexport const LLMHostingTypeZod = z\n  .enum([\"default\", \"custom\"])\n  .openapi({\n    description: \"Specifies if the LLM is hosted by Onvo or self-hosted.\",\n  });\n\nexport type LLMSettings = Database[\"public\"][\"Tables\"][\"llm_settings\"][\"Row\"];\nexport const LLMSettingsZod = registry.register(\n  \"LLMSettings\",\n  z\n    .object({\n      analyst_agent_type: LLMHostingTypeZod,\n      programmer_agent_type: LLMHostingTypeZod,\n\n      analyst_agent_api_url: z\n        .string()\n        .url()\n        .nullable()\n        .openapi({\n          description: \"URL for self-hosted API.\",\n          example: \"http://localhost:11434\",\n        }),\n      analyst_agent_api_key: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"API key for custom models (write-only).\",\n          example: \"sk-...\",\n          format: \"password\",\n        }),\n\n      programmer_agent_api_url: z\n        .string()\n        .url()\n        .nullable()\n        .openapi({\n          description: \"URL for self-hosted API.\",\n          example: \"http://localhost:11434\",\n        }),\n      programmer_agent_api_key: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"API key for custom models (write-only).\",\n          example: \"sk-...\",\n          format: \"password\",\n        }),\n\n      programmer_agent_model: z\n        .string()\n        .openapi({\n          description: \"Model used for the programmer agent.\",\n          example: \"openai/gpt-3.5-turbo\",\n        }),\n      analyst_agent_model: z\n        .string()\n        .openapi({\n          description: \"Model used for the analyst agent.\",\n          example: \"openai/gpt-4-turbo\",\n        }),\n\n      programmer_agent_prompt: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Custom prompt for the programmer agent.\",\n          example:\n            \"You are a helpful AI assistant specialized in code generation.\",\n        }),\n      analyst_agent_prompt: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Custom prompt for the analyst agent.\",\n          example:\n            \"You are a helpful AI assistant specialized in data analysis.\",\n        }),\n\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description:\n            \"The ID of the team these settings belong to (read-only).\",\n          example: \"d4e5f6a7-b8c9-0123-4567-890abcdef012\",\n          readOnly: true,\n        }),\n      updated: z\n        .boolean()\n        .openapi({\n          description:\n            \"Indicates if the settings have been updated from defaults (read-only).\",\n          example: true,\n          readOnly: true,\n        }),\n    })\n    .openapi({ description: \"LLM settings\" }) as any,\n);\n\nexport type SelfHostingSettings =\n  Database[\"public\"][\"Tables\"][\"self_hosting_settings\"][\"Row\"];\nexport const SelfHostingSettingsZod = registry.register(\n  \"SelfHostingSettings\",\n  z\n    .object({\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description:\n            \"The ID of the team these settings belong to (read-only).\",\n          example: \"d4e5f6a7-b8c9-0123-4567-890abcdef012\",\n          readOnly: true,\n        }),\n      data_service_endpoint: z\n        .string()\n        .openapi({\n          description: \"The endpoint for the data service.\",\n          example: \"https://data-service.example.com\",\n        }),\n      data_service_secret: z\n        .string()\n        .openapi({\n          description: \"The secret for the data service.\",\n          example: \"data-service-secret\",\n        }),\n      s3_credentials: z\n        .string()\n        .openapi({\n          description: \"The credentials for the S3 service.\",\n          example: \"s3-credentials\",\n        }),\n      google_sheets_credentials: z\n        .string()\n        .openapi({\n          description: \"The credentials for the Google service.\",\n          example: \"google-credentials\",\n        }),\n      airtable_credentials: z\n        .string()\n        .openapi({\n          description: \"The credentials for the Airtable service.\",\n          example: \"airtable-credentials\",\n        }),\n    })\n    .openapi({ description: \"Self-hosting settings\" }) as any,\n);\n\nexport type Log = Database[\"public\"][\"Tables\"][\"logs\"][\"Row\"];\nexport const LogZod = registry.register(\n  \"Log\",\n  z\n    .object({\n      account: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description:\n            \"ID of the account that generated the log, if applicable.\",\n          example: \"e5f6a7b8-c9d0-1234-5678-90abcdef0123\",\n        }),\n      created_at: z\n        .string()\n        .datetime()\n        .openapi({\n          description: \"Timestamp when the log was created.\",\n          example: \"2024-05-01T16:58:00.000Z\",\n        }),\n      dashboard: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the dashboard related to the log, if applicable.\",\n          example: \"f6a7b8c9-d0e1-2345-6789-0abcdef01234\",\n        }),\n      embed_user: z\n        .string()\n        .nullable()\n        .openapi({\n          description:\n            \"ID of the embed user related to the log, if applicable.\",\n          example: \"embed-user-xyz789\",\n        }),\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"The unique identifier for the log entry.\",\n          example: \"01234567-89ab-cdef-0123-456789abcdef\",\n        }),\n      team: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the team associated with the log.\",\n          example: \"12345678-9abc-def0-1234-56789abcdef0\",\n        }),\n      type: z\n        .string()\n        .openapi({\n          description: \"The type or category of the log event.\",\n          example: \"widget_interaction\",\n        }),\n      widget: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the widget related to the log, if applicable.\",\n          example: \"23456789-abcd-ef01-2345-6789abcdef01\",\n        }),\n    })\n    .openapi({\n      description: \"A log entry recording an event within the system.\",\n    }) as any,\n);\n\n// Generate OpenAPI components from Zod schemas\nconst generator = new OpenApiGeneratorV3(registry.definitions);\nexport const OpenApiComponents = generator.generateComponents();\n","export type Json =\n  | string\n  | number\n  | boolean\n  | null\n  | { [key: string]: Json | undefined }\n  | Json[]\n\nexport type Database = {\n  public: {\n    Tables: {\n      accounts: {\n        Row: {\n          avatar_url: string | null\n          email: string | null\n          full_name: string | null\n          id: string\n          phone_number: string | null\n          updated_at: string | null\n        }\n        Insert: {\n          avatar_url?: string | null\n          email?: string | null\n          full_name?: string | null\n          id: string\n          phone_number?: string | null\n          updated_at?: string | null\n        }\n        Update: {\n          avatar_url?: string | null\n          email?: string | null\n          full_name?: string | null\n          id?: string\n          phone_number?: string | null\n          updated_at?: string | null\n        }\n        Relationships: []\n      }\n      api_keys: {\n        Row: {\n          created_at: string | null\n          hash: string\n          id: string\n          last_used_at: string | null\n          prefix: string\n          scopes: string[]\n          suffix: string\n          team: string\n          title: string\n        }\n        Insert: {\n          created_at?: string | null\n          hash: string\n          id?: string\n          last_used_at?: string | null\n          prefix: string\n          scopes?: string[]\n          suffix: string\n          team: string\n          title: string\n        }\n        Update: {\n          created_at?: string | null\n          hash?: string\n          id?: string\n          last_used_at?: string | null\n          prefix?: string\n          scopes?: string[]\n          suffix?: string\n          team?: string\n          title?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_api_keys_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      automation_runs: {\n        Row: {\n          automation: string\n          conditions_passed: boolean | null\n          error: string | null\n          id: string\n          method: string\n          recipient_emails: string[] | null\n          run_at: string\n          status: string\n          team: string\n          webhook_sent: boolean | null\n        }\n        Insert: {\n          automation: string\n          conditions_passed?: boolean | null\n          error?: string | null\n          id?: string\n          method?: string\n          recipient_emails?: string[] | null\n          run_at?: string\n          status: string\n          team: string\n          webhook_sent?: boolean | null\n        }\n        Update: {\n          automation?: string\n          conditions_passed?: boolean | null\n          error?: string | null\n          id?: string\n          method?: string\n          recipient_emails?: string[] | null\n          run_at?: string\n          status?: string\n          team?: string\n          webhook_sent?: boolean | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"automation_runs_automation_fkey\"\n            columns: [\"automation\"]\n            isOneToOne: false\n            referencedRelation: \"automations\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_automation_runs_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      automations: {\n        Row: {\n          condition_operator: string | null\n          conditions: Json\n          created_at: string\n          dashboard: string\n          description: string | null\n          email_body: string\n          email_cc: string[] | null\n          email_subject: string\n          email_to: string | null\n          enabled: boolean\n          id: string\n          last_run_at: string | null\n          last_updated_at: string\n          method: string\n          next_run_at: string | null\n          output_format: string\n          schedule: string\n          team: string\n          timezone: string\n          title: string\n          webhook_url: string | null\n        }\n        Insert: {\n          condition_operator?: string | null\n          conditions?: Json\n          created_at?: string\n          dashboard: string\n          description?: string | null\n          email_body: string\n          email_cc?: string[] | null\n          email_subject: string\n          email_to?: string | null\n          enabled?: boolean\n          id?: string\n          last_run_at?: string | null\n          last_updated_at?: string\n          method: string\n          next_run_at?: string | null\n          output_format: string\n          schedule: string\n          team: string\n          timezone?: string\n          title: string\n          webhook_url?: string | null\n        }\n        Update: {\n          condition_operator?: string | null\n          conditions?: Json\n          created_at?: string\n          dashboard?: string\n          description?: string | null\n          email_body?: string\n          email_cc?: string[] | null\n          email_subject?: string\n          email_to?: string | null\n          enabled?: boolean\n          id?: string\n          last_run_at?: string | null\n          last_updated_at?: string\n          method?: string\n          next_run_at?: string | null\n          output_format?: string\n          schedule?: string\n          team?: string\n          timezone?: string\n          title?: string\n          webhook_url?: string | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"automations_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_automations_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      dashboard_datasources: {\n        Row: {\n          dashboard: string\n          datasource: string\n          team: string\n        }\n        Insert: {\n          dashboard: string\n          datasource: string\n          team: string\n        }\n        Update: {\n          dashboard?: string\n          datasource?: string\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"dashboard_datasources_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"dashboard_datasources_datasource_fkey\"\n            columns: [\"datasource\"]\n            isOneToOne: false\n            referencedRelation: \"datasources\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_dashboard_datasources_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      dashboards: {\n        Row: {\n          created_at: string\n          created_by: string | null\n          description: string | null\n          filters: Json\n          id: string\n          last_updated_at: string\n          last_updated_by: string | null\n          metadata: Json\n          parent_dashboard: string | null\n          root_dashboard: string | null\n          settings: Json\n          sync_settings: Json | null\n          tabs: Json\n          team: string\n          thumbnail: string | null\n          title: string\n        }\n        Insert: {\n          created_at?: string\n          created_by?: string | null\n          description?: string | null\n          filters?: Json\n          id?: string\n          last_updated_at?: string\n          last_updated_by?: string | null\n          metadata?: Json\n          parent_dashboard?: string | null\n          root_dashboard?: string | null\n          settings?: Json\n          sync_settings?: Json | null\n          tabs?: Json\n          team: string\n          thumbnail?: string | null\n          title: string\n        }\n        Update: {\n          created_at?: string\n          created_by?: string | null\n          description?: string | null\n          filters?: Json\n          id?: string\n          last_updated_at?: string\n          last_updated_by?: string | null\n          metadata?: Json\n          parent_dashboard?: string | null\n          root_dashboard?: string | null\n          settings?: Json\n          sync_settings?: Json | null\n          tabs?: Json\n          team?: string\n          thumbnail?: string | null\n          title?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"dashboards_created_by_fkey\"\n            columns: [\"created_by\"]\n            isOneToOne: false\n            referencedRelation: \"accounts\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"dashboards_last_updated_by_fkey\"\n            columns: [\"last_updated_by\"]\n            isOneToOne: false\n            referencedRelation: \"accounts\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"dashboards_parent_dashboard_fkey\"\n            columns: [\"parent_dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"dashboards_root_dashboard_fkey\"\n            columns: [\"root_dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_dashboards_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      datasources: {\n        Row: {\n          cache_duration: number\n          columns: Json | null\n          config: Json | null\n          created_at: string\n          created_by: string | null\n          description: string | null\n          filters: Json\n          id: string\n          integration: string | null\n          last_updated_at: string\n          last_updated_by: string | null\n          metadata: Json\n          method: Database[\"public\"][\"Enums\"][\"Datasource method\"]\n          parameters: Json | null\n          size: number\n          source: string\n          team: string\n          title: string\n        }\n        Insert: {\n          cache_duration?: number\n          columns?: Json | null\n          config?: Json | null\n          created_at?: string\n          created_by?: string | null\n          description?: string | null\n          filters?: Json\n          id?: string\n          integration?: string | null\n          last_updated_at?: string\n          last_updated_by?: string | null\n          metadata?: Json\n          method?: Database[\"public\"][\"Enums\"][\"Datasource method\"]\n          parameters?: Json | null\n          size?: number\n          source: string\n          team: string\n          title: string\n        }\n        Update: {\n          cache_duration?: number\n          columns?: Json | null\n          config?: Json | null\n          created_at?: string\n          created_by?: string | null\n          description?: string | null\n          filters?: Json\n          id?: string\n          integration?: string | null\n          last_updated_at?: string\n          last_updated_by?: string | null\n          metadata?: Json\n          method?: Database[\"public\"][\"Enums\"][\"Datasource method\"]\n          parameters?: Json | null\n          size?: number\n          source?: string\n          team?: string\n          title?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"datasources_created_by_fkey\"\n            columns: [\"created_by\"]\n            isOneToOne: false\n            referencedRelation: \"accounts\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"datasources_integration_fkey\"\n            columns: [\"integration\"]\n            isOneToOne: false\n            referencedRelation: \"integrations\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"datasources_last_updated_by_fkey\"\n            columns: [\"last_updated_by\"]\n            isOneToOne: false\n            referencedRelation: \"accounts\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_datasources_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      embed_users: {\n        Row: {\n          created_at: string\n          email: string | null\n          id: string\n          last_updated_at: string\n          name: string\n          parameters: Json | null\n          team: string\n        }\n        Insert: {\n          created_at?: string\n          email?: string | null\n          id: string\n          last_updated_at?: string\n          name: string\n          parameters?: Json | null\n          team: string\n        }\n        Update: {\n          created_at?: string\n          email?: string | null\n          id?: string\n          last_updated_at?: string\n          name?: string\n          parameters?: Json | null\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_embed_users_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      integration_tables: {\n        Row: {\n          columns: Json | null\n          config: Json\n          dataset: string | null\n          datasource: string | null\n          description: string | null\n          errors: string | null\n          id: string\n          integration: string\n          rows: number\n          size: number\n          team: string\n          title: string\n        }\n        Insert: {\n          columns?: Json | null\n          config?: Json\n          dataset?: string | null\n          datasource?: string | null\n          description?: string | null\n          errors?: string | null\n          id?: string\n          integration?: string\n          rows?: number\n          size?: number\n          team: string\n          title: string\n        }\n        Update: {\n          columns?: Json | null\n          config?: Json\n          dataset?: string | null\n          datasource?: string | null\n          description?: string | null\n          errors?: string | null\n          id?: string\n          integration?: string\n          rows?: number\n          size?: number\n          team?: string\n          title?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"integration_tables_datasource_fkey\"\n            columns: [\"datasource\"]\n            isOneToOne: false\n            referencedRelation: \"datasources\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"integration_tables_integration_fkey\"\n            columns: [\"integration\"]\n            isOneToOne: false\n            referencedRelation: \"integrations\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"integration_tables_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      integrations: {\n        Row: {\n          config: Json\n          created_at: string\n          id: string\n          parameters: Json | null\n          provider: string\n          size: number\n          status: string\n          team: string\n          title: string | null\n        }\n        Insert: {\n          config?: Json\n          created_at?: string\n          id?: string\n          parameters?: Json | null\n          provider: string\n          size?: number\n          status?: string\n          team: string\n          title?: string | null\n        }\n        Update: {\n          config?: Json\n          created_at?: string\n          id?: string\n          parameters?: Json | null\n          provider?: string\n          size?: number\n          status?: string\n          team?: string\n          title?: string | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_integrations_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      invites: {\n        Row: {\n          created_at: string\n          email: string\n          name: string\n          team: string\n        }\n        Insert: {\n          created_at?: string\n          email: string\n          name: string\n          team: string\n        }\n        Update: {\n          created_at?: string\n          email?: string\n          name?: string\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_invites_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      llm_settings: {\n        Row: {\n          analyst_agent_api_key: string | null\n          analyst_agent_api_url: string | null\n          analyst_agent_model: string\n          analyst_agent_prompt: string | null\n          analyst_agent_type: Database[\"public\"][\"Enums\"][\"LLM hosting type\"]\n          programmer_agent_api_key: string | null\n          programmer_agent_api_url: string | null\n          programmer_agent_model: string\n          programmer_agent_prompt: string | null\n          programmer_agent_type: Database[\"public\"][\"Enums\"][\"LLM hosting type\"]\n          team: string\n          updated: boolean\n        }\n        Insert: {\n          analyst_agent_api_key?: string | null\n          analyst_agent_api_url?: string | null\n          analyst_agent_model?: string\n          analyst_agent_prompt?: string | null\n          analyst_agent_type?: Database[\"public\"][\"Enums\"][\"LLM hosting type\"]\n          programmer_agent_api_key?: string | null\n          programmer_agent_api_url?: string | null\n          programmer_agent_model?: string\n          programmer_agent_prompt?: string | null\n          programmer_agent_type?: Database[\"public\"][\"Enums\"][\"LLM hosting type\"]\n          team: string\n          updated?: boolean\n        }\n        Update: {\n          analyst_agent_api_key?: string | null\n          analyst_agent_api_url?: string | null\n          analyst_agent_model?: string\n          analyst_agent_prompt?: string | null\n          analyst_agent_type?: Database[\"public\"][\"Enums\"][\"LLM hosting type\"]\n          programmer_agent_api_key?: string | null\n          programmer_agent_api_url?: string | null\n          programmer_agent_model?: string\n          programmer_agent_prompt?: string | null\n          programmer_agent_type?: Database[\"public\"][\"Enums\"][\"LLM hosting type\"]\n          team?: string\n          updated?: boolean\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_llm_settings_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: true\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      logs: {\n        Row: {\n          account: string | null\n          created_at: string\n          dashboard: string | null\n          embed_user: string | null\n          id: string\n          team: string | null\n          type: string\n          widget: string | null\n        }\n        Insert: {\n          account?: string | null\n          created_at?: string\n          dashboard?: string | null\n          embed_user?: string | null\n          id?: string\n          team?: string | null\n          type: string\n          widget?: string | null\n        }\n        Update: {\n          account?: string | null\n          created_at?: string\n          dashboard?: string | null\n          embed_user?: string | null\n          id?: string\n          team?: string | null\n          type?: string\n          widget?: string | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_logs_account_fkey\"\n            columns: [\"account\"]\n            isOneToOne: false\n            referencedRelation: \"accounts\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_logs_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_logs_embed_user_team_fkey\"\n            columns: [\"embed_user\", \"team\"]\n            isOneToOne: false\n            referencedRelation: \"embed_users\"\n            referencedColumns: [\"id\", \"team\"]\n          },\n          {\n            foreignKeyName: \"public_logs_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_logs_widget_fkey\"\n            columns: [\"widget\"]\n            isOneToOne: false\n            referencedRelation: \"widgets\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      members: {\n        Row: {\n          account: string\n          team: string\n        }\n        Insert: {\n          account: string\n          team: string\n        }\n        Update: {\n          account?: string\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"members_user_fkey\"\n            columns: [\"account\"]\n            isOneToOne: false\n            referencedRelation: \"accounts\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"public_members_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      messages: {\n        Row: {\n          content: string | null\n          created_at: string\n          dashboard: string | null\n          id: string\n          question: string\n          role: string | null\n          team: string\n          tool_call_id: string | null\n          tool_calls: Json | null\n          vote: Database[\"public\"][\"Enums\"][\"Vote type\"] | null\n          vote_reason: string | null\n          widget: string | null\n        }\n        Insert: {\n          content?: string | null\n          created_at?: string\n          dashboard?: string | null\n          id?: string\n          question?: string\n          role?: string | null\n          team: string\n          tool_call_id?: string | null\n          tool_calls?: Json | null\n          vote?: Database[\"public\"][\"Enums\"][\"Vote type\"] | null\n          vote_reason?: string | null\n          widget?: string | null\n        }\n        Update: {\n          content?: string | null\n          created_at?: string\n          dashboard?: string | null\n          id?: string\n          question?: string\n          role?: string | null\n          team?: string\n          tool_call_id?: string | null\n          tool_calls?: Json | null\n          vote?: Database[\"public\"][\"Enums\"][\"Vote type\"] | null\n          vote_reason?: string | null\n          widget?: string | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"messages_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"messages_question_fkey\"\n            columns: [\"question\"]\n            isOneToOne: false\n            referencedRelation: \"questions\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"messages_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"messages_widget_fkey\"\n            columns: [\"widget\"]\n            isOneToOne: false\n            referencedRelation: \"widgets\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      questions: {\n        Row: {\n          created_at: string\n          dashboard: string\n          id: string\n          messages: Json\n          query: string\n          team: string | null\n        }\n        Insert: {\n          created_at?: string\n          dashboard: string\n          id?: string\n          messages?: Json\n          query: string\n          team?: string | null\n        }\n        Update: {\n          created_at?: string\n          dashboard?: string\n          id?: string\n          messages?: Json\n          query?: string\n          team?: string | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_questions_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"questions_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      self_hosting_settings: {\n        Row: {\n          airtable_credentials: Json\n          data_service_endpoint: string\n          data_service_secret: string\n          google_sheets_credentials: Json\n          s3_credentials: Json\n          team: string\n        }\n        Insert: {\n          airtable_credentials: Json\n          data_service_endpoint: string\n          data_service_secret: string\n          google_sheets_credentials: Json\n          s3_credentials: Json\n          team?: string\n        }\n        Update: {\n          airtable_credentials?: Json\n          data_service_endpoint?: string\n          data_service_secret?: string\n          google_sheets_credentials?: Json\n          s3_credentials?: Json\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"self_hosting_settings_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: true\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      sessions: {\n        Row: {\n          created_at: string\n          dashboard: string\n          embed_user: string\n          parameters: Json\n          team: string\n        }\n        Insert: {\n          created_at?: string\n          dashboard: string\n          embed_user: string\n          parameters?: Json\n          team: string\n        }\n        Update: {\n          created_at?: string\n          dashboard?: string\n          embed_user?: string\n          parameters?: Json\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_sessions_embed_user_team_fkey\"\n            columns: [\"embed_user\", \"team\"]\n            isOneToOne: false\n            referencedRelation: \"embed_users\"\n            referencedColumns: [\"id\", \"team\"]\n          },\n          {\n            foreignKeyName: \"public_sessions_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"sessions_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      subscription_plans: {\n        Row: {\n          accounts: number | null\n          api_keys: boolean\n          automations: boolean\n          connected_datasources: number\n          copilot: boolean\n          custom_css: boolean\n          custom_llm: boolean\n          embed_users: number\n          name: string\n          watermark: boolean\n        }\n        Insert: {\n          accounts?: number | null\n          api_keys?: boolean\n          automations?: boolean\n          connected_datasources?: number\n          copilot?: boolean\n          custom_css?: boolean\n          custom_llm?: boolean\n          embed_users?: number\n          name: string\n          watermark?: boolean\n        }\n        Update: {\n          accounts?: number | null\n          api_keys?: boolean\n          automations?: boolean\n          connected_datasources?: number\n          copilot?: boolean\n          custom_css?: boolean\n          custom_llm?: boolean\n          embed_users?: number\n          name?: string\n          watermark?: boolean\n        }\n        Relationships: []\n      }\n      subscriptions: {\n        Row: {\n          amount: number\n          created_at: string\n          currency: string\n          integrations: string[]\n          interval: string\n          period_end: string\n          period_start: string\n          product_name: string\n          stripe_customer_id: string\n          stripe_product_id: string\n          stripe_subscription_id: string\n          team: string\n        }\n        Insert: {\n          amount: number\n          created_at?: string\n          currency: string\n          integrations?: string[]\n          interval: string\n          period_end: string\n          period_start?: string\n          product_name: string\n          stripe_customer_id: string\n          stripe_product_id: string\n          stripe_subscription_id: string\n          team: string\n        }\n        Update: {\n          amount?: number\n          created_at?: string\n          currency?: string\n          integrations?: string[]\n          interval?: string\n          period_end?: string\n          period_start?: string\n          product_name?: string\n          stripe_customer_id?: string\n          stripe_product_id?: string\n          stripe_subscription_id?: string\n          team?: string\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_subscriptions_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: true\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"subscriptions_product_name_fkey\"\n            columns: [\"product_name\"]\n            isOneToOne: false\n            referencedRelation: \"subscription_plans\"\n            referencedColumns: [\"name\"]\n          },\n        ]\n      }\n      teams: {\n        Row: {\n          created_at: string | null\n          email: string | null\n          id: string\n          logo: string | null\n          name: string | null\n          phone_number: string | null\n          stripe_id: string | null\n        }\n        Insert: {\n          created_at?: string | null\n          email?: string | null\n          id?: string\n          logo?: string | null\n          name?: string | null\n          phone_number?: string | null\n          stripe_id?: string | null\n        }\n        Update: {\n          created_at?: string | null\n          email?: string | null\n          id?: string\n          logo?: string | null\n          name?: string | null\n          phone_number?: string | null\n          stripe_id?: string | null\n        }\n        Relationships: []\n      }\n      widget_suggestions: {\n        Row: {\n          created_at: string\n          dashboard: string | null\n          datasource_hash: string | null\n          description: string | null\n          id: string\n          team: string | null\n          title: string | null\n          type: string | null\n        }\n        Insert: {\n          created_at?: string\n          dashboard?: string | null\n          datasource_hash?: string | null\n          description?: string | null\n          id?: string\n          team?: string | null\n          title?: string | null\n          type?: string | null\n        }\n        Update: {\n          created_at?: string\n          dashboard?: string | null\n          datasource_hash?: string | null\n          description?: string | null\n          id?: string\n          team?: string | null\n          title?: string | null\n          type?: string | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"widget_suggestions_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"widget_suggestions_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n      widgets: {\n        Row: {\n          code: string\n          config: Json\n          created_at: string\n          dashboard: string\n          drilldown_widget: string | null\n          engine: string\n          error: string | null\n          id: string\n          layouts: Json\n          messages: Json\n          settings: Json\n          tab: number\n          team: string\n          title: string\n          type: string\n          use_in_chat: boolean\n          use_in_library: boolean | null\n        }\n        Insert: {\n          code: string\n          config?: Json\n          created_at?: string\n          dashboard: string\n          drilldown_widget?: string | null\n          engine?: string\n          error?: string | null\n          id?: string\n          layouts?: Json\n          messages?: Json\n          settings?: Json\n          tab?: number\n          team: string\n          title: string\n          type?: string\n          use_in_chat?: boolean\n          use_in_library?: boolean | null\n        }\n        Update: {\n          code?: string\n          config?: Json\n          created_at?: string\n          dashboard?: string\n          drilldown_widget?: string | null\n          engine?: string\n          error?: string | null\n          id?: string\n          layouts?: Json\n          messages?: Json\n          settings?: Json\n          tab?: number\n          team?: string\n          title?: string\n          type?: string\n          use_in_chat?: boolean\n          use_in_library?: boolean | null\n        }\n        Relationships: [\n          {\n            foreignKeyName: \"public_widgets_team_fkey\"\n            columns: [\"team\"]\n            isOneToOne: false\n            referencedRelation: \"teams\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"widgets_dashboard_fkey\"\n            columns: [\"dashboard\"]\n            isOneToOne: false\n            referencedRelation: \"dashboards\"\n            referencedColumns: [\"id\"]\n          },\n          {\n            foreignKeyName: \"widgets_drilldown_widget_fkey\"\n            columns: [\"drilldown_widget\"]\n            isOneToOne: false\n            referencedRelation: \"widgets\"\n            referencedColumns: [\"id\"]\n          },\n        ]\n      }\n    }\n    Views: {\n      [_ in never]: never\n    }\n    Functions: {\n      check_id_in_dashboards: {\n        Args: { id: string; json_data: Json }\n        Returns: boolean\n      }\n      get_onboarding: { Args: { team_id: string }; Returns: Json }\n      string_to_uuid_array: {\n        Args: { input_string: string }\n        Returns: string[]\n      }\n      stripe_can_create_automation: {\n        Args: { organisation: string }\n        Returns: boolean\n      }\n      stripe_can_create_dashboard_datasource: {\n        Args: { dashboard_id: string; organisation: string }\n        Returns: boolean\n      }\n      stripe_can_create_embed_user: {\n        Args: { organisation: string }\n        Returns: boolean\n      }\n      stripe_can_create_invite: {\n        Args: { organisation: string }\n        Returns: boolean\n      }\n      stripe_can_create_llm_settings: {\n        Args: { organisation: string }\n        Returns: boolean\n      }\n      stripe_can_read_dashboard: {\n        Args: { organisation: string }\n        Returns: boolean\n      }\n    }\n    Enums: {\n      \"Datasource method\": \"table\" | \"query\" | \"ai\"\n      \"LLM hosting type\":\n        | \"default\"\n        | \"custom\"\n        | \"openai\"\n        | \"anthropic\"\n        | \"groq\"\n        | \"ollama\"\n        | \"gemini\"\n        | \"openrouter\"\n        | \"ai-gateway\"\n      \"Vote type\": \"up\" | \"down\"\n    }\n    CompositeTypes: {\n      [_ in never]: never\n    }\n  }\n}\n\ntype DatabaseWithoutInternals = Omit<Database, \"__InternalSupabase\">\n\ntype DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, \"public\">]\n\nexport type Tables<\n  DefaultSchemaTableNameOrOptions extends\n    | keyof (DefaultSchema[\"Tables\"] & DefaultSchema[\"Views\"])\n    | { schema: keyof DatabaseWithoutInternals },\n  TableName extends DefaultSchemaTableNameOrOptions extends {\n    schema: keyof DatabaseWithoutInternals\n  }\n    ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Tables\"] &\n        DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Views\"])\n    : never = never,\n> = DefaultSchemaTableNameOrOptions extends {\n  schema: keyof DatabaseWithoutInternals\n}\n  ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Tables\"] &\n      DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Views\"])[TableName] extends {\n      Row: infer R\n    }\n    ? R\n    : never\n  : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema[\"Tables\"] &\n        DefaultSchema[\"Views\"])\n    ? (DefaultSchema[\"Tables\"] &\n        DefaultSchema[\"Views\"])[DefaultSchemaTableNameOrOptions] extends {\n        Row: infer R\n      }\n      ? R\n      : never\n    : never\n\nexport type TablesInsert<\n  DefaultSchemaTableNameOrOptions extends\n    | keyof DefaultSchema[\"Tables\"]\n    | { schema: keyof DatabaseWithoutInternals },\n  TableName extends DefaultSchemaTableNameOrOptions extends {\n    schema: keyof DatabaseWithoutInternals\n  }\n    ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Tables\"]\n    : never = never,\n> = DefaultSchemaTableNameOrOptions extends {\n  schema: keyof DatabaseWithoutInternals\n}\n  ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Tables\"][TableName] extends {\n      Insert: infer I\n    }\n    ? I\n    : never\n  : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema[\"Tables\"]\n    ? DefaultSchema[\"Tables\"][DefaultSchemaTableNameOrOptions] extends {\n        Insert: infer I\n      }\n      ? I\n      : never\n    : never\n\nexport type TablesUpdate<\n  DefaultSchemaTableNameOrOptions extends\n    | keyof DefaultSchema[\"Tables\"]\n    | { schema: keyof DatabaseWithoutInternals },\n  TableName extends DefaultSchemaTableNameOrOptions extends {\n    schema: keyof DatabaseWithoutInternals\n  }\n    ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Tables\"]\n    : never = never,\n> = DefaultSchemaTableNameOrOptions extends {\n  schema: keyof DatabaseWithoutInternals\n}\n  ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions[\"schema\"]][\"Tables\"][TableName] extends {\n      Update: infer U\n    }\n    ? U\n    : never\n  : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema[\"Tables\"]\n    ? DefaultSchema[\"Tables\"][DefaultSchemaTableNameOrOptions] extends {\n        Update: infer U\n      }\n      ? U\n      : never\n    : never\n\nexport type Enums<\n  DefaultSchemaEnumNameOrOptions extends\n    | keyof DefaultSchema[\"Enums\"]\n    | { schema: keyof DatabaseWithoutInternals },\n  EnumName extends DefaultSchemaEnumNameOrOptions extends {\n    schema: keyof DatabaseWithoutInternals\n  }\n    ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions[\"schema\"]][\"Enums\"]\n    : never = never,\n> = DefaultSchemaEnumNameOrOptions extends {\n  schema: keyof DatabaseWithoutInternals\n}\n  ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions[\"schema\"]][\"Enums\"][EnumName]\n  : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema[\"Enums\"]\n    ? DefaultSchema[\"Enums\"][DefaultSchemaEnumNameOrOptions]\n    : never\n\nexport type CompositeTypes<\n  PublicCompositeTypeNameOrOptions extends\n    | keyof DefaultSchema[\"CompositeTypes\"]\n    | { schema: keyof DatabaseWithoutInternals },\n  CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {\n    schema: keyof DatabaseWithoutInternals\n  }\n    ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions[\"schema\"]][\"CompositeTypes\"]\n    : never = never,\n> = PublicCompositeTypeNameOrOptions extends {\n  schema: keyof DatabaseWithoutInternals\n}\n  ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions[\"schema\"]][\"CompositeTypes\"][CompositeTypeName]\n  : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema[\"CompositeTypes\"]\n    ? DefaultSchema[\"CompositeTypes\"][PublicCompositeTypeNameOrOptions]\n    : never\n\nexport const Constants = {\n  public: {\n    Enums: {\n      \"Datasource method\": [\"table\", \"query\", \"ai\"],\n      \"LLM hosting type\": [\n        \"default\",\n        \"custom\",\n        \"openai\",\n        \"anthropic\",\n        \"groq\",\n        \"ollama\",\n        \"gemini\",\n        \"openrouter\",\n        \"ai-gateway\",\n      ],\n      \"Vote type\": [\"up\", \"down\"],\n    },\n  },\n} as const\n\n","export enum Table {\n  Countries = \"countries\",\n  Invites = \"invites\",\n  ItineraryInvites = \"itinerary_invites\",\n  Itineraries = \"itineraries\",\n  Members = \"members\",\n  Teams = \"teams\",\n  Travelers = \"travelers\",\n  Accounts = \"accounts\",\n  DataSources = \"datasources\",\n  EmbedUsers = \"embed_users\",\n  APIKeys = \"api_keys\",\n  Widgets = \"widgets\",\n  Dashboards = \"dashboards\",\n  DashboardDatasources = \"dashboard_datasources\",\n  Sessions = \"sessions\",\n  Questions = \"questions\",\n  Integrations = \"integrations\",\n  IntegrationTables = \"integration_tables\",\n\n  DecryptedIntegrations = \"decrypted_integrations\",\n  DecryptedSessions = \"decrypted_sessions\",\n  DecryptedWidgets = \"decrypted_widgets\",\n  DecryptedDatasources = \"decrypted_datasources\",\n  Subscriptions = \"subscriptions\",\n  SubscriptionPlans = \"subscription_plans\",\n\n  Automations = \"automations\",\n  AutomationRuns = \"automation_runs\",\n\n  Logs = \"logs\",\n  Messages = \"messages\",\n  WidgetSuggestions = \"widget_suggestions\",\n\n  LLMSettings = \"llm_settings\",\n  SelfHostingSettings = \"self_hosting_settings\",\n}\n","\nexport interface AirtableDatasourceConfig {\n    baseId: string;\n    tableId: string;\n};\n\nexport interface GoogleSheetDatasourceConfig {\n    docId: string;\n    sheetId: number;\n};\n\nexport interface APIDatasourceConfig {\n    url?: string;\n    interface?: \"json\" | \"csv\" | \"xml\";\n    method?: \"GET\" | \"POST\";\n    headers?: string;\n    body?: string;\n    transform?: string;\n};\n\nexport interface SnowflakeDatasourceConfig {\n    account: string,\n    username: string,\n    password: string,\n    warehouse: string,\n    database: string,\n    schema: string,\n\n    query: string\n}\n\nexport interface ClickhouseDatasourceConfig {\n    url: string;\n    pathname: string;\n    username: string;\n    password: string;\n    database: string;\n\n    query: string;\n};\n\nexport interface BigQueryDatasourceConfig {\n    credentials: string;\n    projectId: string;\n    location: string;\n\n    query: string;\n};\n\nexport interface CSVDatasourceConfig {\n    url: string;\n};\n\nexport interface ExcelDatasourceConfig {\n    url: string;\n    sheetName?: string;\n};\n\nexport interface FirestoreDatasourceConfig {\n    type: string;\n    project_id: string;\n    private_key_id: string;\n    private_key: string;\n    client_email: string;\n    client_id: string;\n    auth_uri: string;\n    token_uri: string;\n    auth_provider_x509_cert_url: string;\n    client_x509_cert_url: string;\n    universe_domain: string;\n    databaseURL: string;\n\n    collection?: string;\n    subcollection?: string;\n};\nexport interface MongoDBDatasourceConfig {\n    url: string;\n    database: string;\n\n    collection: string;\n    query: string;\n};\n\nexport interface MsSQLDatasourceConfig {\n    server: string;\n    port: string;\n    user: string;\n    password: string;\n    database: string;\n\n    query: string;\n};\nexport interface ExternalConfig {\n    schema: string;\n    serviceAccount: string;\n\n    table: string;\n    query: string;\n};\n\nexport interface MySQLDatasourceConfig {\n    host: string;\n    user: string;\n    port: string;\n    password: string;\n    database: string;\n    ssh_enabled?: boolean;\n    ssh_host?: string;\n    ssh_username?: string;\n    ssh_port?: string;\n    ssh_private_key?: string;\n\n    query: string;\n};\n\n\nexport interface PostgreSQLDatasourceConfig {\n    host: string;\n    port: string;\n    database: string;\n    user: string;\n    password: string;\n    ssl_enabled: boolean;\n\n    query: string;\n};\n\n\n// Add a dummy export to ensure this file is included\nexport const __ensureFileIsEmitted = true;","import { Database } from \"./database.types.js\";\nimport { registry, z } from \"./registry.js\";\n\nexport type Account = Database[\"public\"][\"Tables\"][\"accounts\"][\"Row\"];\nexport const AccountZod = registry.register(\"Account\", (z.object({\n    id: z.string().uuid().openapi({ description: 'The unique identifier for the account.', example: '5899f99d-a449-4bfa-8769-19c097aaf1f5' }),\n    full_name: z.string().nullable().optional().openapi({ description: 'The full name of the account holder.', example: 'Demo User' }),\n    email: z.string().email().nullable().optional().openapi({ description: 'The email address associated with the account.', example: 'info@onvo.ai' }),\n    avatar_url: z.string().url().nullable().optional().openapi({ description: \"The URL of the account's avatar image.\", example: 'https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png' }),\n    phone_number: z.string().nullable().optional().openapi({ description: 'The phone number associated with the account.', example: '1234567890' }),\n    updated_at: z.string().datetime().nullable().optional().openapi({ description: 'The date and time when the account was last updated.', readOnly: true, example: '2024-01-17T10:14:12.62603+00:00' }),\n}).openapi({ description: \"An account that represents a user or organization.\" })) as any);","import { z } from \"zod\";\nimport { MetadataItemZod, Modify } from \"./utils.js\";\nimport { Database } from \"./database.types.js\";\nimport { Account } from \"./account.js\";\nimport { registry } from \"./registry.js\";\nimport { extendZodWithOpenApi } from \"@asteasolutions/zod-to-openapi\";\nimport { EmbedUser } from \"./index.js\";\n\nextendZodWithOpenApi(z as any);\n\nexport type DashboardSyncSettings = {\n  metadata: { all: false; include: string[] }; // This will include the title, description, filters, metadata and thumbnail\n  settings: { all: false; include: string[] };\n  tabs: { all: false; include: string[] };\n  datasources: { all: false; include: string[] };\n  widgets: { all: false; include: string[] };\n};\n\nexport const DashboardSyncSettingsZod = registry.register(\n  \"DashboardSyncSettings\",\n  z\n    .object({\n      metadata: z\n        .object({\n          all: z\n            .boolean()\n            .openapi({\n              description: \"Whether all metadata are included.\",\n              example: false,\n            }),\n          include: z\n            .array(z.string())\n            .openapi({\n              description: \"List of metadata fields to include.\",\n              example: [\"title\", \"description\"],\n            }),\n        })\n        .openapi({ description: \"Metadata sync settings.\" }),\n      settings: z\n        .object({\n          all: z\n            .boolean()\n            .openapi({\n              description: \"Whether all settings are included.\",\n              example: false,\n            }),\n          include: z\n            .array(z.string())\n            .openapi({\n              description: \"List of settings fields to include.\",\n              example: [\"theme\", \"timezone\"],\n            }),\n        })\n        .openapi({ description: \"Settings sync settings.\" }),\n      tabs: z\n        .object({\n          all: z\n            .boolean()\n            .openapi({\n              description: \"Whether all tabs are included.\",\n              example: false,\n            }),\n          include: z\n            .array(z.string())\n            .openapi({\n              description: \"List of tab ids to include.\",\n              example: [\"tab1\", \"tab2\"],\n            }),\n        })\n        .openapi({ description: \"Tabs sync settings.\" }),\n      datasources: z\n        .object({\n          all: z\n            .boolean()\n            .openapi({\n              description: \"Whether all datasources are included.\",\n              example: false,\n            }),\n          include: z\n            .array(z.string())\n            .openapi({\n              description: \"List of datasource ids to include.\",\n              example: [\"ds1\", \"ds2\"],\n            }),\n        })\n        .openapi({ description: \"Datasources sync settings.\" }),\n      widgets: z\n        .object({\n          all: z\n            .boolean()\n            .openapi({\n              description: \"Whether all widgets are included.\",\n              example: false,\n            }),\n          include: z\n            .array(z.string())\n            .openapi({\n              description: \"List of tab ids to include.\",\n              example: [\"tab1\", \"tab2\"],\n            }),\n        })\n        .openapi({ description: \"Widgets sync settings.\" }),\n    })\n    .openapi({ description: \"Dashboard sync settings.\" }) as any,\n);\n\nexport const DEFAULT_SYNC_SETTINGS = {\n  metadata: { all: true, include: [] },\n  settings: { all: true, include: [] },\n  tabs: { all: true, include: [] },\n  datasources: { all: true, include: [] },\n  widgets: { all: true, include: [] },\n};\n\nexport type DashboardSettings = {\n  filters: boolean;\n\n  theme: \"dark\" | \"light\" | \"auto\";\n  font: string;\n  dark_background: string;\n  dark_foreground: string;\n  dark_text: string;\n  light_background: string;\n  light_foreground: string;\n  light_text: string;\n  hide_header: boolean;\n  grid_spacing: number;\n  grid_height: number;\n  widget_border_radius: number;\n  widget_padding: number;\n  custom_css: string;\n\n  enable_tabs: boolean;\n  disable_widget_interactions?: boolean;\n\n  copilot_enabled: boolean;\n  copilot_title: string;\n  copilot_description: string;\n  help_url?: string;\n  enable_advanced_widget_creator?: boolean;\n  enable_widget_insights?: boolean;\n\n  can_ask_questions: boolean;\n  can_edit_widgets: boolean;\n  can_edit_widget_layout: boolean;\n  can_edit_tabs: boolean;\n  can_create_widgets: boolean;\n  can_delete_widgets: boolean;\n  can_schedule_reports?: boolean;\n\n  disable_download_images: boolean;\n  disable_download_reports: boolean;\n  disable_download_documents: boolean;\n  pdf_orientation?: \"portrait\" | \"landscape\";\n};\n\nexport const DashboardSettingsZod = registry.register(\n  \"DashboardSettings\",\n  z\n    .object({\n      filters: z\n        .boolean()\n        .openapi({\n          description: \"Whether filters are enabled for the dashboard.\",\n          example: true,\n        }),\n      theme: z\n        .enum([\"dark\", \"light\", \"auto\"])\n        .openapi({\n          description: \"Color theme for the dashboard.\",\n          example: \"auto\",\n        }),\n      font: z\n        .string()\n        .openapi({\n          description: \"Font used in the dashboard.\",\n          example: \"Inter\",\n        }),\n      dark_background: z\n        .string()\n        .openapi({\n          description: \"Background color for dark theme.\",\n          example: \"#18181b\",\n        }),\n      dark_foreground: z\n        .string()\n        .openapi({\n          description: \"Foreground color for dark theme.\",\n          example: \"#23232a\",\n        }),\n      dark_text: z\n        .string()\n        .openapi({\n          description: \"Text color for dark theme.\",\n          example: \"#fff\",\n        }),\n      light_background: z\n        .string()\n        .openapi({\n          description: \"Background color for light theme.\",\n          example: \"#fff\",\n        }),\n      light_foreground: z\n        .string()\n        .openapi({\n          description: \"Foreground color for light theme.\",\n          example: \"#f4f4f5\",\n        }),\n      light_text: z\n        .string()\n        .openapi({\n          description: \"Text color for light theme.\",\n          example: \"#18181b\",\n        }),\n      hide_header: z\n        .boolean()\n        .openapi({\n          description: \"Whether to hide the dashboard header.\",\n          example: false,\n        }),\n      grid_spacing: z\n        .number()\n        .int()\n        .openapi({ description: \"Spacing between grid items.\", example: 16 }),\n      grid_height: z\n        .number()\n        .int()\n        .openapi({ description: \"Height of the dashboard grid.\", example: 8 }),\n      border_radius: z\n        .number()\n        .openapi({\n          description: \"Border radius for dashboard elements.\",\n          example: 8,\n        }),\n      custom_css: z\n        .string()\n        .openapi({ description: \"Custom CSS for the dashboard.\", example: \"\" }),\n      copilot_title: z\n        .string()\n        .openapi({\n          description: \"Title for the dashboard copilot.\",\n          example: \"AI Copilot\",\n        }),\n      copilot_description: z\n        .string()\n        .openapi({\n          description: \"Description for the dashboard copilot.\",\n          example: \"Ask questions about your data.\",\n        }),\n      help_url: z\n        .string()\n        .url()\n        .optional()\n        .openapi({\n          description: \"URL for dashboard help.\",\n          example: \"https://docs.onvo.ai\",\n        }),\n      enable_advanced_widget_creator: z\n        .boolean()\n        .optional()\n        .openapi({\n          description: \"Enables advanced widget creator.\",\n          example: true,\n        }),\n      enable_widget_insights: z\n        .boolean()\n        .optional()\n        .openapi({ description: \"Enables widget insights.\", example: false }),\n      can_ask_questions: z\n        .boolean()\n        .openapi({\n          description: \"Whether users can ask questions.\",\n          example: true,\n        }),\n      can_edit_widgets: z\n        .boolean()\n        .openapi({\n          description: \"Whether users can edit widgets.\",\n          example: true,\n        }),\n      can_edit_widget_layout: z\n        .boolean()\n        .openapi({\n          description: \"Whether users can edit widget layout.\",\n          example: true,\n        }),\n      can_create_widgets: z\n        .boolean()\n        .openapi({\n          description: \"Whether users can create widgets.\",\n          example: true,\n        }),\n      can_delete_widgets: z\n        .boolean()\n        .openapi({\n          description: \"Whether users can delete widgets.\",\n          example: false,\n        }),\n      can_schedule_reports: z\n        .boolean()\n        .optional()\n        .openapi({\n          description: \"Whether users can schedule reports.\",\n          example: false,\n        }),\n      disable_download_images: z\n        .boolean()\n        .openapi({ description: \"Disable image downloads.\", example: false }),\n      disable_download_reports: z\n        .boolean()\n        .openapi({ description: \"Disable report downloads.\", example: false }),\n      disable_download_documents: z\n        .boolean()\n        .openapi({\n          description: \"Disable document downloads.\",\n          example: false,\n        }),\n      pdf_orientation: z\n        .enum([\"portrait\", \"landscape\"])\n        .optional()\n        .openapi({\n          description: \"PDF orientation for downloads.\",\n          example: \"portrait\",\n        }),\n    })\n    .openapi({ description: \"Settings for a dashboard.\" }) as any,\n);\n\nexport type DashboardFilter =\n  | {\n      label: string;\n      type: \"text\";\n      options: string[];\n      values: string[];\n    }\n  | {\n      label: string;\n      type: \"number\";\n      options: [number, number];\n      values: [number, number];\n    }\n  | {\n      label: string;\n      type: \"date\";\n      options: [string, string];\n      values: [string, string];\n      max_days?: number;\n    };\nexport const DashboardFilterZod = registry.register(\n  \"DashboardFilter\",\n  z\n    .discriminatedUnion(\"type\", [\n      z.object({\n        label: z\n          .string()\n          .openapi({ description: \"Filter label.\", example: \"Status\" }),\n        type: z.literal(\"text\").openapi({ description: \"Text filter type.\" }),\n        options: z\n          .array(z.string())\n          .openapi({\n            description: \"Available string options.\",\n            example: [\"Active\", \"Inactive\"],\n          }),\n        values: z\n          .array(z.string())\n          .openapi({\n            description: \"Selected string values.\",\n            example: [\"Active\"],\n          }),\n      }),\n      z.object({\n        label: z\n          .string()\n          .openapi({ description: \"Filter label.\", example: \"Range\" }),\n        type: z\n          .literal(\"number\")\n          .openapi({ description: \"Number filter type.\" }),\n        options: z\n          .tuple([z.number(), z.number()])\n          .openapi({\n            description: \"Available number range.\",\n            example: [0, 100],\n          }),\n        values: z\n          .tuple([z.number(), z.number()])\n          .openapi({\n            description: \"Selected number range.\",\n            example: [10, 90],\n          }),\n      }),\n      z.object({\n        label: z\n          .string()\n          .openapi({ description: \"Filter label.\", example: \"Date Range\" }),\n        type: z.literal(\"date\").openapi({ description: \"Date filter type.\" }),\n        options: z\n          .tuple([z.string(), z.string()])\n          .openapi({\n            description: \"Available date range.\",\n            example: [\"2023-01-01\", \"2023-12-31\"],\n          }),\n        values: z\n          .tuple([z.string(), z.string()])\n          .openapi({\n            description: \"Selected date range.\",\n            example: [\"2023-02-01\", \"2023-02-28\"],\n          }),\n        max_days: z\n          .number()\n          .optional()\n          .openapi({ description: \"Max selectable days.\", example: 30 }),\n      }),\n    ])\n    .openapi({ description: \"A filter for a dashboard.\" }) as any,\n);\n\nexport type DashboardTab = {\n  id: number;\n  label: string;\n  hidden?: boolean;\n};\nexport const DashboardTabZod = registry.register(\n  \"DashboardTab\",\n  z\n    .object({\n      id: z.number().int().openapi({ description: \"Tab ID.\", example: 1 }),\n      label: z\n        .string()\n        .openapi({ description: \"Tab label.\", example: \"Overview\" }),\n      hidden: z\n        .boolean()\n        .optional()\n        .openapi({ description: \"Whether the tab is hidden.\", example: false }),\n    })\n    .openapi({ description: \"A tab in a dashboard.\" }) as any,\n);\n\nexport interface DashboardMeta {\n  created_by: Account;\n  last_updated_by?: Account;\n  widgets: number;\n  datasources: number;\n  embed_user: EmbedUser;\n}\nexport const DashboardMetaZod = registry.register(\n  \"DashboardMeta\",\n  z\n    .object({\n      created_by: z\n        .string()\n        .openapi({\n          description: \"ID of the account that created the dashboard.\",\n          example: \"user_abc123\",\n        }),\n      last_updated_by: z\n        .string()\n        .optional()\n        .openapi({\n          description: \"ID of the account that last updated the dashboard.\",\n          example: \"user_xyz789\",\n        }),\n      widgets: z\n        .number()\n        .openapi({\n          description: \"Number of widgets in the dashboard.\",\n          example: 5,\n        }),\n      datasources: z\n        .number()\n        .openapi({\n          description: \"Number of datasources in the dashboard.\",\n          example: 2,\n        }),\n    })\n    .openapi({ description: \"Metadata associated with a dashboard.\" }) as any,\n);\n\nexport type Dashboard = Modify<\n  Database[\"public\"][\"Tables\"][\"dashboards\"][\"Row\"],\n  {\n    settings?: DashboardSettings;\n    filters: DashboardFilter[];\n    tabs: DashboardTab[];\n    metadata?: { label: string; value: string; secure?: boolean }[];\n    root_dashboard?: string | null;\n    parent_dashboard?: string | null;\n  }\n>;\nexport const DashboardZod = registry.register(\n  \"Dashboard\",\n  z\n    .object({\n      id: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Unique dashboard ID.\",\n          example: \"9b7deda3-7e2d-458e-84e9-632e47fbe682\",\n        }),\n      created_at: z\n        .string()\n        .openapi({\n          description: \"Creation timestamp.\",\n          example: \"2024-01-17T10:14:12.62603+00:00\",\n        }),\n      created_by: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the account that created the dashboard.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      description: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"Dashboard description.\",\n          example: \"A dashboard for sales analytics.\",\n        }),\n      filters: z\n        .any()\n        .openapi({ description: \"Dashboard filters (arbitrary object).\" }),\n      last_updated_at: z\n        .string()\n        .openapi({\n          description: \"Last update timestamp.\",\n          example: \"2024-02-01T08:00:00.000Z\",\n        }),\n      last_updated_by: z\n        .string()\n        .uuid()\n        .nullable()\n        .openapi({\n          description: \"ID of the account that last updated the dashboard.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      metadata: z\n        .any()\n        .openapi({ description: \"Dashboard metadata (arbitrary object).\" }),\n      parent_dashboard: z\n        .string()\n        .uuid()\n        .nullable()\n        .optional()\n        .openapi({\n          description: \"Parent dashboard ID, if this dashboard is nested.\",\n          example: null,\n        }),\n      root_dashboard: z\n        .string()\n        .uuid()\n        .nullable()\n        .optional()\n        .openapi({\n          description: \"Root dashboard ID, if this dashboard is nested.\",\n          example: null,\n        }),\n      settings: z\n        .any()\n        .openapi({ description: \"Dashboard settings (arbitrary object).\" }),\n      tabs: z\n        .any()\n        .openapi({ description: \"Dashboard tabs (arbitrary object).\" }),\n      team: z\n        .string()\n        .uuid()\n        .openapi({\n          description: \"Team ID associated with the dashboard.\",\n          example: \"92c680a3-a9c4-4c02-bb2d-a5d049789662\",\n        }),\n      thumbnail: z\n        .string()\n        .nullable()\n        .openapi({\n          description: \"URL to the dashboard's thumbnail image.\",\n          example: \"https://example.com/thumbnail.png\",\n        }),\n      title: z\n        .string()\n        .openapi({\n          description: \"Dashboard title.\",\n          example: \"Sales Dashboard\",\n        }),\n      sync_settings: z\n        .any()\n        .openapi({\n          description: \"Dashboard sync settings (arbitrary object).\",\n        }),\n    })\n    .openapi({\n      description: \"A dashboard that displays data in a visual format.\",\n    }) as any,\n);\n","import { z } from './registry.js';\nimport { Modify } from './utils.js';\nimport { Database } from './database.types.js';\nimport { registry } from './registry.js';\n// import { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi'; \n\n// extendZodWithOpenApi(z as any); \n\nexport interface AutomationCondition {\n    operand_id: string;\n    reference_type: \"static\" | \"dynamic\";\n    reference_id?: string;\n    reference_value?: string;\n    operator: string;\n}\nexport const AutomationConditionZod = registry.register(\"AutomationCondition\", (z.object({\n    operand_id: z.string().openapi({ description: 'The ID of the operand (e.g., a widget or datasource field) to check.' }),\n    reference_type: z.enum(['static', 'dynamic']).openapi({ description: \"Whether the reference value is static or dynamic (coming from another field).\" }),\n    reference_id: z.string().nullable().optional().openapi({ description: \"The ID of the dynamic reference field (required if reference_type is 'dynamic').\" }),\n    reference_value: z.string().nullable().optional().openapi({ description: \"The static reference value (required if reference_type is 'static').\" }),\n    operator: z.string().openapi({ description: \"The comparison operator (e.g., '=', '!=', '>', '<').\" }),\n}).openapi({ description: \"An automation condition that must be met for the automation to run.\" })) as any);\n\nexport type Automation = Modify<Database[\"public\"][\"Tables\"][\"automations\"][\"Row\"], {\n    conditions: AutomationCondition[];\n}>;\nexport const AutomationZod = registry.register(\"Automation\", (z.object({\n    id: z.string().uuid().openapi({ description: 'The unique identifier for the automation.', example: '09110e5b-ae18-4d19-82ca-6d90f5a33bfd' }),\n    title: z.string().openapi({ description: 'The title of the automation.', example: 'Daily Sales Report Automation' }),\n    description: z.string().nullable().optional().openapi({ description: 'A description for the automation.', example: 'Sends the daily sales report every morning.' }),\n    dashboard: z.string().uuid().openapi({ description: 'The ID of the dashboard associated with the automation.', example: '0f6ec2a8-b4d9-4cba-898d-df126e4b5051' }),\n    team: z.string().uuid().openapi({ description: 'The ID of the team the automation belongs to.' }),\n    enabled: z.boolean().default(true).openapi({ description: 'Whether the automation is currently active.' }),\n    schedule: z.string().openapi({ description: 'The cron schedule for the automation.', example: '0 9 * * 1-5' }),\n    timezone: z.string().default('UTC').openapi({ description: 'The timezone for the schedule.', example: 'America/New_York' }),\n    method: z.string().openapi({ description: \"The delivery method (e.g., 'email', 'webhook').\", example: 'email' }),\n    output_format: z.string().openapi({ description: \"The output format for reports (e.g., 'pdf', 'csv').\", example: 'pdf' }),\n    email_to: z.string().email().nullable().optional().openapi({ description: \"Primary recipient email address (for method 'email').\", example: 'recipient@example.com' }),\n    email_cc: z.array(z.string().email()).nullable().optional().openapi({ description: \"CC recipient email addresses (for method 'email').\" }),\n    email_subject: z.string().openapi({ description: \"Email subject line (for method 'email').\", example: 'Daily Sales Report' }),\n    email_body: z.string().openapi({ description: \"Email body content (for method 'email').\", example: 'Please find attached the daily sales report.' }),\n    webhook_url: z.string().url().nullable().optional().openapi({ description: \"The URL for the webhook (for method 'webhook').\" }),\n    condition_operator: z.enum(['AND', 'OR']).nullable().optional().openapi({ description: \"Logical operator to combine conditions ('AND' or 'OR').\" }),\n    conditions: z.array(AutomationConditionZod).openapi({ description: 'An array of conditions that must be met for the automation to run.' }),\n    created_at: z.string().datetime().openapi({ description: 'The date and time when the automation was created.', readOnly: true, example: '2025-04-01T12:34:56.789Z' }),\n    last_updated_at: z.string().datetime().openapi({ description: 'The date and time when the automation was last updated.', readOnly: true, example: '2025-04-02T09:00:00.000Z' }),\n    last_run_at: z.string().datetime().nullable().optional().openapi({ description: 'The date and time when the automation last ran.', readOnly: true }),\n    next_run_at: z.string().datetime().nullable().optional().openapi({ description: 'The date and time when the automation is scheduled to run next.', readOnly: true }),\n}).openapi({ description: \"An automation that runs at a scheduled time.\" })) as any);\n\nexport type AutomationRun = Database[\"public\"][\"Tables\"][\"automation_runs\"][\"Row\"];\nexport const AutomationRunZod = registry.register(\"AutomationRun\", (z.object({\n    automation: z.string().uuid().openapi({ description: 'The ID of the associated automation.', example: 'a1b2c3d4-e5f6-7890-1234-567890abcdef' }),\n    conditions_passed: z.boolean().nullable().openapi({ description: 'Whether the automation conditions passed for this run.', example: true }),\n    error: z.string().nullable().openapi({ description: 'Any error message if the run failed.', example: 'Webhook failed to send.' }),\n    id: z.string().uuid().openapi({ description: 'The unique identifier for the automation run.', example: 'b2c3d4e5-f6a7-8901-2345-67890abcdef0' }),\n    method: z.string().openapi({ description: 'The method used for the automation action (e.g., email, webhook).', example: 'email' }),\n    recipient_emails: z.array(z.string().email()).nullable().openapi({ description: 'List of recipient emails if the method was email.', example: ['test@example.com', 'another@example.com'] }),\n    run_at: z.string().datetime().openapi({ description: 'Timestamp of when the automation ran.', example: '2024-05-01T16:57:49.123Z' }),\n    status: z.string().openapi({ description: 'The status of the automation run (e.g., success, failure).', example: 'success' }),\n    team: z.string().uuid().openapi({ description: 'The ID of the team associated with this run.', example: 'c3d4e5f6-a7b8-9012-3456-7890abcdef01' }),\n    webhook_sent: z.boolean().nullable().openapi({ description: 'Whether the webhook was successfully sent if the method was webhook.', example: null }),\n}).openapi({ description: \"An automation run that has occurred.\" })) as any);\n","import { generateCodeVerifier, OAuth2Client, OAuth2Fetch } from \"@badgateway/oauth2-client\";\nimport { Database, Table } from \"../types\";\nimport { SupabaseClient } from \"@supabase/supabase-js\";\nimport { nanoid } from \"nanoid\";\n\nexport type OauthConfig = {\n  access_token: string;\n  refresh_token: string;\n  access_expires_at: string;\n};\n\nexport class BaseOauthClient {\n  id: string = \"\";\n  provider: string = \"\";\n  teamId: string;\n\n  baseUrl: string = \"\";\n  authorizationEndpoint: string = \"\";\n  tokenEndpoint: string = \"\";\n\n  scopes: string[] = [];\n  extraParams: Record<string, string> = {};\n  authenticationMethod!: string;\n\n  clientId: string = \"\";\n  clientSecret: string = \"\";\n  scope: string = \"\";\n\n  refreshToken: string = \"\";\n  oauthClient!: OAuth2Client;\n  fetcher!: OAuth2Fetch;\n  supabaseClient: SupabaseClient<Database>;\n\n  constructor(\n    team: string,\n    supabaseClient: SupabaseClient<Database>,\n    id: string,\n    credentials?: { clientId: string; clientSecret: string; }\n  ) {\n    this.teamId = team;\n    this.supabaseClient = supabaseClient;\n    this.id = id || \"\";\n    if (credentials) {\n      this.clientId = credentials?.clientId || \"\";\n      this.clientSecret = credentials?.clientSecret || \"\";\n    }\n\n    this.initializeOauthClient();\n\n  }\n\n  initializeOauthClient() {\n\n    this.oauthClient = new OAuth2Client({\n      clientId: this.clientId,\n      clientSecret: this.clientSecret,\n      authorizationEndpoint: this.authorizationEndpoint,\n      tokenEndpoint: this.tokenEndpoint,\n      server: this.baseUrl,\n      authenticationMethod: (this.authenticationMethod || undefined) as any,\n\n    });\n\n    this.fetcher = new OAuth2Fetch({\n      client: this.oauthClient,\n\n      getNewToken: async () => {\n        if (!this.id || this.id === \"\") return null;\n\n        let { data, error } = await this.supabaseClient\n          .from(Table.Integrations)\n          .select()\n          .eq(\"id\", this.id)\n          .maybeSingle();\n\n        if (error || !data || !data.config) {\n          return null;\n        }\n        const config = data.config as OauthConfig;\n        let new_token = await this.oauthClient.refreshToken({\n          accessToken: config.access_token,\n          refreshToken: config.refresh_token,\n          expiresAt: new Date(config.access_expires_at).getTime()\n        });\n\n        return new_token;\n      },\n\n      /**\n       * This function is called whenever the active token changes. Using this is\n       * optional, but it may be used to (for example) put the token in off-line\n       * storage for later usage.\n       */\n      storeToken: async (token) => {\n\n        if (!this.supabaseClient) return null;\n\n        let { error } = await this.supabaseClient.from(Table.Integrations).update(\n          {\n            provider: this.provider,\n            team: this.teamId,\n            config: {\n              access_token: token.accessToken,\n              refresh_token: token.refreshToken || this.refreshToken,\n              access_expires_at: new Date(\n                token.expiresAt || new Date(2040, 1, 1).getTime()\n              ).toISOString(),\n            },\n          }\n        ).eq(\"id\", this.id);\n      },\n\n      /**\n       * Also an optional feature. Implement this if you want the wrapper to try a\n       * stored token before attempting a full re-authentication.\n       *\n       * This function may be async. Return null if there was no token.\n       */\n      getStoredToken: async () => {\n\n        if (!this.supabaseClient) return null;\n        if (!this.id || this.id === \"\") return null;\n\n        let { data, error } = await this.supabaseClient\n          .from(Table.Integrations)\n          .select()\n          .eq(\"id\", this.id)\n          .maybeSingle();\n\n        if (error || !data || !data.config) {\n          return null;\n        }\n        const config = data.config as OauthConfig;\n        this.refreshToken = config.refresh_token;\n        return {\n          accessToken: config.access_token,\n          refreshToken: config.refresh_token,\n          expiresAt: new Date(config.access_expires_at).getTime()\n        };\n      }\n\n    });\n  }\n\n  async startAuthFlow() {\n    const state = nanoid(16);\n\n    const codeVerifier = await generateCodeVerifier();\n\n    // Generate the url that will be used for the consent dialog.\n    const authorizeUrl = await this.oauthClient.authorizationCode.getAuthorizeUri({\n      redirectUri: `${(process.env.NEXT_PUBLIC_DASHBOARD_URL || \"\")}/api/internal/oauth/${this.provider}/redirect`,\n      scope: this.scopes,\n      extraParams: this.extraParams,\n      state: state,\n      codeVerifier: codeVerifier\n    });\n\n    return {\n      url: authorizeUrl,\n      code_verifier: codeVerifier,\n      state: state,\n    };\n  }\n\n  async completeAuthFlow(req: any) {\n    let code = req.nextUrl.href;\n    let code_verifier = req.cookies.get(\"code_verifier\")?.value;\n    let state = req.nextUrl.searchParams.get(\"state\");\n\n    if (!code) {\n      throw new Error(\"No code found in URL\");\n    }\n\n    if (!this.teamId) {\n      throw new Error(\"Not connected to an team\");\n    }\n\n    let r: any;\n    try {\n\n      r = await this.oauthClient.authorizationCode.getTokenFromCodeRedirect(\n        code,\n        {\n          redirectUri: `${(process.env.NEXT_PUBLIC_DASHBOARD_URL || \"\")}/api/internal/oauth/${this.provider}/redirect`,\n          codeVerifier: code_verifier || undefined,\n          state: state || undefined,\n        });\n    } catch (e: any) {\n      console.log(\"Failed to get token from code: \", e);\n      throw new Error(\"Failed to get token from code: \" + e.message);\n    }\n\n    let { data, error } = await this.supabaseClient.from(Table.Integrations).update(\n      {\n        status: \"healthy\",\n        config: {\n          access_token: r.accessToken,\n          refresh_token: r.refreshToken,\n          access_expires_at: new Date(r.expiresAt).toISOString(),\n        },\n      }\n    ).eq(\"id\", this.id).select().single();\n\n    this.refreshToken = r.refreshToken;\n    if (error) {\n      throw new Error(\"Failed to save integration to DB: \" + error.message);\n    }\n    return { success: true, ...r };\n  }\n\n}\n","import { BaseOauthClient } from \"./base\";\n\nexport class AirtableOauthClient extends BaseOauthClient {\n  provider = \"airtable\";\n  baseUrl = \"https://www.airtable.com\";\n  clientId = process.env.AIRTABLE_CLIENT_ID || \"\";\n  clientSecret = process.env.AIRTABLE_CLIENT_SECRET || \"\";\n\n  authorizationEndpoint = '/oauth2/v1/authorize';\n  tokenEndpoint = \"/oauth2/v1/token\";\n\n  scopes = [\"schema.bases:read\", \"data.records:read\"];\n\n  constructor(team: string, supabaseClient: any, id: string, credentials?: { clientId: string, clientSecret: string }) {\n    super(team, supabaseClient, id, credentials);\n  }\n\n  async getRecords(baseId: string, tableId: string) {\n    const MAX_RETRIES = 5;\n    const INITIAL_BACKOFF = 1000; // 1 second\n\n    try {\n      let allRecords: any[] = [];\n      let offset: string | undefined;\n\n      do {\n        let retries = 0;\n\n        while (true) {\n          try {\n            const url = new URL(`https://api.airtable.com/v0/${baseId}/${tableId}`);\n            if (offset) {\n              url.searchParams.append(\"offset\", offset);\n            }\n\n            const response = await this.fetcher.fetch(url.toString());\n            const output = await response.json();\n\n            if (output?.errors && output?.errors[0] && output?.errors[0].error === \"RATE_LIMIT_REACHED\") {\n              if (retries >= MAX_RETRIES) {\n                throw new Error(\"Rate limit exceeded. Max retries reached.\");\n              }\n              const backoff = INITIAL_BACKOFF * Math.pow(2, retries); // Exponential backoff\n              await new Promise((resolve) => setTimeout(resolve, backoff));\n              retries++;\n              continue;\n            }\n\n            allRecords = allRecords.concat(\n              output.records.map((a: any) => {\n                let obj = { _id: a.id, ...a.fields };\n                Object.keys(obj).forEach((key) => {\n                  if (Array.isArray(obj[key])) {\n                    obj[key] = obj[key].join(\",\");\n                  }\n                });\n                return obj;\n              })\n            );\n\n            offset = output.offset;\n            break; // Exit retry loop on success\n\n          } catch (err: any) {\n            console.log(\"AIRTABLE ERROR: \", err)\n            throw err;\n          }\n        }\n      } while (offset);\n\n      return allRecords;\n    } catch (e: any) {\n      throw new Error(e.message);\n    }\n  }\n}\n","import { BaseOauthClient } from \"./base\";\n\nexport class GoogleSheetsOauthClient extends BaseOauthClient {\n  provider = \"google_sheets\";\n  baseUrl = \"https://accounts.google.com\";\n  authorizationEndpoint = '/o/oauth2/v2/auth';\n  tokenEndpoint = \"https://oauth2.googleapis.com/token\";\n\n  clientId = process.env.GOOGLE_CLIENT_ID || \"\";\n  clientSecret = process.env.GOOGLE_CLIENT_SECRET || \"\";\n\n  scopes = [\n    \"https://www.googleapis.com/auth/spreadsheets.readonly\",\n    \"https://www.googleapis.com/auth/drive.readonly\"\n  ];\n  extraParams = {\n    access_type: \"offline\",\n    prompt: \"consent\",\n  };\n\n  constructor(team: string, supabaseClient: any, id: string, credentials?: { clientId: string, clientSecret: string }) {\n    super(team, supabaseClient, id, credentials);\n    this.initializeOauthClient();\n  }\n\n  async getRecords(docId: string, sheetName: string) {\n    const url = `https://docs.google.com/spreadsheets/d/${docId}/gviz/tq?tqx=out:csv&sheet=${sheetName}`;\n    // const url = `https://docs.google.com/feeds/download/spreadsheets/Export?key=${docId}&exportFormat=csv&gid=0`;\n    let response = await this.fetcher.fetch(url);\n    return response;\n  }\n}","\nimport { BaseOauthClient, OauthConfig } from \"./base\";\nimport { AirtableOauthClient } from \"./airtable\";\nimport { GoogleSheetsOauthClient } from \"./google_sheets\";\n\nexport const OauthClients: { [key: string]: typeof BaseOauthClient } = {\n    airtable: AirtableOauthClient,\n    google_sheets: GoogleSheetsOauthClient\n}\n\nexport {\n    BaseOauthClient,\n    AirtableOauthClient,\n    GoogleSheetsOauthClient\n};\nexport type { OauthConfig };\n","import Pusher from 'pusher-js';\nexport interface JobUpdateEvent {\n  job: {\n    id: string;\n    name: string;\n    queue: string;\n  };\n  status: \"waiting\" | \"progress\" | \"completed\" | \"error\";\n  data?: any;\n  progress?: {\n    total: number;\n    completed: number;\n  };\n}\nexport default class OnvoBase {\n  #apiKey: string;\n  _endpoint: string;\n\n  // Base fetch method\n  /**\n   * Fetches data from the API.\n   * @param url - The URL to fetch data from.\n   * @param method - The HTTP method to use. Defaults to \"GET\".\n   * @param body - The data to send with the request.\n   * @param isForm - Indicates if the request is a form request.\n   * @returns The response from the API.\n   * @throws {Error} If there is an error making the request.\n   */\n  async _fetchBase(\n    url: string,\n    method?: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\" | \"PATCH\",\n    body?: any,\n    isForm?: boolean\n  ): Promise<any> {\n    let headers: any = {\n      \"Access-Control-Allow-Origin\": \"*\",\n      \"Access-Control-Allow-Methods\": \"GET,PUT,POST,DELETE,PATCH,OPTIONS\",\n    };\n    if (this.#apiKey && this.#apiKey.trim() !== \"\") {\n      headers[\"x-api-key\"] = this.#apiKey;\n    }\n    if (!isForm) {\n      headers[\"Content-Type\"] = \"application/json\";\n    }\n    const response = await fetch(this._endpoint + url, {\n      method: method || \"GET\",\n      headers: headers,\n      body: isForm ? body : body ? JSON.stringify(body) : undefined,\n    });\n\n    if (!response.ok) {\n      let data: any = await response.json();\n      throw new Error(data.message);\n    } else {\n      let data = await response.json();\n      return data;\n    }\n  }\n\n  async _fetchStreamBase(url: string, method?: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\" | \"PATCH\", body?: any, onProgress?: (event: JobUpdateEvent) => void) {\n    // Always non-streaming HTTP. Long-lived updates are delivered over WebSockets using channel=jobId.\n    let headers: any = {\n      \"Access-Control-Allow-Origin\": \"*\",\n      \"Access-Control-Allow-Methods\": \"GET,PUT,POST,DELETE,PATCH,OPTIONS\",\n      \"Content-Type\": \"application/json\",\n    };\n    if (this.#apiKey && this.#apiKey.trim() !== \"\") {\n      headers[\"x-api-key\"] = this.#apiKey;\n    }\n\n    const response = await fetch(this._endpoint + url, {\n      method: method || \"POST\",\n      headers,\n      body: body ? JSON.stringify(body) : undefined,\n    });\n\n    // Background mode: server returns 202 with { status: 'accepted', jobId/channel }\n    if (response.status === 202) {\n      const accepted = await response.json().catch(() => ({ status: 'accepted' }));\n      const jobChannel: string | undefined = accepted?.channel || accepted?.jobId;\n      const socketCfg = accepted?.socket as undefined | {\n        key: string;\n        wsHost: string;\n        wsPort?: number;\n        wssPort?: number;\n        forceTLS?: boolean;\n        cluster?: string;\n      };\n\n      // If we don't have channel or socket configuration, return the accepted payload\n      if (!jobChannel || !socketCfg) {\n        return accepted;\n      }\n\n      // Connect to Soketi/Pusher and stream events to onProgress; resolve on completed\n      return await new Promise<any>((resolve, reject) => {\n        try {\n          const isLocal = socketCfg.wsHost.includes('localhost') || socketCfg.wsHost.includes('host.docker.internal');\n          const [host, portStr] = socketCfg.wsHost.split(':');\n          const port = portStr ? parseInt(portStr, 10) : socketCfg.wsPort;\n\n          const pusherConfig = {\n            wsHost: host,\n            wsPort: port,\n            wssPort: socketCfg.wssPort,\n            forceTLS: isLocal ? false : !!socketCfg.forceTLS,\n            disableStats: true,\n            enabledTransports: isLocal ? ['ws'] : ['ws', 'wss'],\n            cluster: socketCfg.cluster || 'mt1',\n          };\n\n          const pusher = new Pusher(socketCfg.key, pusherConfig as any);\n\n          const channel = pusher.subscribe(jobChannel);\n          let cleaned = false;\n          let settled = false;\n\n          const cleanup = () => {\n            if (cleaned) return;\n            cleaned = true;\n            try { channel.unbind_all(); } catch { }\n            try { pusher.connection.unbind('error'); } catch { }\n            try { pusher.connection.unbind('state_change'); } catch { }\n            try {\n              const state = (pusher as any)?.connection?.state;\n              if (state && state !== 'disconnected' && state !== 'failed') {\n                pusher.disconnect();\n              }\n            } catch { }\n          };\n          const forward = (evt: JobUpdateEvent) => {\n            if (typeof onProgress === 'function') {\n              try { onProgress(evt); } catch { }\n            }\n          };\n\n          let timer: any = null;\n          const timeoutMs = 10000; // 60s\n          timer = setTimeout(() => {\n            console.error('[Onvo] WebSocket subscription timed out.');\n            settleReject(new Error('WebSocket subscription timeout'));\n          }, timeoutMs);\n\n          const settleResolve = (val: any) => {\n            if (settled) return; settled = true;\n            try { resolve(val.data); } finally { setTimeout(() => { if (timer) try { clearTimeout(timer); } catch { } cleanup(); }, 0); }\n          };\n          const settleReject = (err: any) => {\n            if (settled) return; settled = true;\n            try { reject(err); } finally { setTimeout(() => { if (timer) try { clearTimeout(timer); } catch { } cleanup(); }, 0); }\n          };\n\n          channel.bind('pusher:subscription_succeeded', () => {\n            if (timer) clearTimeout(timer); // Clear the timeout on successful subscription\n\n            channel.bind('job.accepted', (data: any) => forward({ ...(data || {}), status: 'waiting' } as JobUpdateEvent));\n            channel.bind('job.waiting', (data: any) => forward(data as JobUpdateEvent));\n            channel.bind('job.progress', (data: any) => forward(data as JobUpdateEvent));\n            channel.bind('job.error', (data: any) => {\n              forward(data as JobUpdateEvent);\n              settleReject(new Error((data && data.data && data.data.error) || 'Job failed'));\n            });\n            channel.bind('job.completed', (data: any) => {\n              forward({ ...(data || {}), status: 'completed' } as JobUpdateEvent);\n              settleResolve(data);\n            });\n          });\n\n          channel.bind('pusher:subscription_error', (status: any) => {\n            console.error('[Onvo] Pusher subscription failed with status:', status);\n            settleReject(new Error(`Subscription error: ${status || 'unknown'}`));\n          });\n\n          pusher.connection.bind('error', (err: any) => {\n            console.error('[Onvo] Pusher connection error:', err);\n            settleReject(new Error(err?.message || 'WebSocket connection error'));\n          });\n        } catch (e: any) {\n          reject(e);\n        }\n      });\n    }\n    else if (response.status === 200) {\n      const data = await response.json().catch(() => ({}));\n      return data?.data;\n    }\n\n    // Synchronous success path (rare for long jobs)\n    const data = await response.json().catch(() => ({}));\n    if (!response.ok) {\n      throw new Error((data && data.message) || 'Request failed');\n    }\n    return data?.data;\n  }\n\n  /**\n   * Fetches a Blob from the API.\n   * @param url - The URL to fetch data from.\n   * @returns The response from the API as a Blob.\n   * @throws {Error} If there is an error making the request.\n   */\n  async _fetchBlob(url: string): Promise<Blob> {\n    try {\n      let headers: any = {\n        \"Content-Type\": \"application/json\",\n        \"Access-Control-Allow-Origin\": \"*\",\n        \"Access-Control-Allow-Methods\": \"GET,PUT,POST,DELETE,PATCH,OPTIONS\",\n      };\n      if (this.#apiKey && this.#apiKey.trim() !== \"\") {\n        headers[\"x-api-key\"] = this.#apiKey;\n      }\n      const response = await fetch(this._endpoint + url, {\n        method: \"GET\",\n        headers: headers,\n      }).then((response) => response.blob());\n      return response;\n    } catch (error: any) {\n      throw new Error(\"Error in making the request: \" + error.message);\n    }\n  }\n\n  constructor(apiKey: string, options?: { endpoint: string }) {\n    if (apiKey === undefined || apiKey === null)\n      throw new Error(\"API key is required\");\n    this.#apiKey = apiKey;\n    this._endpoint = options?.endpoint || \"https://dashboard.onvo.ai\";\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Account } from \"../types/account.js\";\n\n/**\n * Endpoints for managing accounts.\n */\nexport class OnvoAccounts extends OnvoBase {\n  /**\n   * Fetches a list of accounts.\n   *\n   * @return {Promise<Account[]>} A promise that resolves to an array of Account objects.\n   */\n  list(): Promise<Account[]> {\n    return this._fetchBase(\"/api/accounts\") as Promise<Account[]>;\n  }\n  /**\n   * Fetches a specific account by ID.\n   *\n   * @param {string} id - The ID of the account to fetch.\n   * @return {Promise<Account>} A promise that resolves to an Account object.\n   */\n  get(id: string): Promise<Account> {\n    return this._fetchBase(\"/api/accounts/\" + id) as Promise<Account>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Team } from \"../types/index.js\";\n\n// Team endpoints\nexport class OnvoTeams extends OnvoBase {\n  /**\n   * Retrieves a list of all teams.\n   * @returns {Promise<Team[]>} A promise that resolves to an array of Team objects.\n   */\n  list(): Promise<Team[]> {\n    return this._fetchBase(\"/api/teams\") as Promise<Team[]>;\n  }\n\n  /**\n   * Retrieves a specific team by ID.\n   * @param {string} id - The ID of the team to retrieve.\n   * @returns {Promise<Team>} A promise that resolves to the Team object.\n   */\n  get(id: string): Promise<Team> {\n    return this._fetchBase(\"/api/teams/\" + id) as Promise<Team>;\n  }\n\n  /**\n   * Updates a specific team.\n   * @param {string} id - The ID of the team to update.\n   * @param {Partial<Team>} body - The updated team data.\n   * @returns {Promise<Team>} A promise that resolves to the updated Team object.\n   */\n  update(id: string, body: Partial<Team>): Promise<Team> {\n    return this._fetchBase(\"/api/teams/\" + id, \"PUT\", body) as Promise<Team>;\n  }\n\n  /**\n   * Creates a new team and associates it with an account.\n   * @param {string} accountId - The ID of the account to associate with the team.\n   * @param {Partial<Team>} teamData - The data for the new team.\n   * @returns {Promise<Team>} A promise that resolves to the created Team object.\n   * @throws Will throw an error if the request fails.\n   */\n  async create(accountId: string, teamData: Partial<Team>): Promise<Team> {\n    try {\n      const team = await this._fetchBase(\n        \"/api/teams\",\n        \"POST\",\n        teamData\n      ) as Team;\n\n      await this._fetchBase(\n        `/api/accounts/${accountId}/update-team`,\n        \"POST\",\n        { teamId: team.id }\n      );\n\n      return team;\n    } catch (e: any) {\n      console.error('Error creating team:', e);\n      throw new Error(e.message || 'Failed to create team');\n    }\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { EmbedUser } from \"../types/index.js\";\n\n// Embed user endpoints\nexport class OnvoEmbedUsers extends OnvoBase {\n  /**\n   * Retrieves a list of embed users.\n   * @returns {Promise<EmbedUser[]>} A promise that resolves to an array of embed users.\n   */\n  list(): Promise<EmbedUser[]> {\n    return this._fetchBase(\"/api/embed-users\") as Promise<EmbedUser[]>;\n  }\n  /** \n   * Retrieves an embed user by ID.\n   * @param {string} id - The ID of the embed user.\n   * @returns {Promise<EmbedUser>} A promise that resolves to the embed user.\n   */\n  get(id: string): Promise<EmbedUser> {\n    return this._fetchBase(\"/api/embed-users/\" + id) as Promise<EmbedUser>;\n  }\n  /**\n   * Deletes an embed user by ID.\n   * @param {string} id - The ID of the embed user.\n   * @returns {Promise<{ success: boolean }>} A promise that resolves to an object indicating success.\n   */\n  delete(id: string): Promise<{ success: boolean }> {\n    return this._fetchBase(\"/api/embed-users/\" + id, \"DELETE\") as Promise<{\n      success: boolean;\n    }>;\n  }\n  /**\n   * Creates or updates an embed user.\n   * @param {string} userId - The ID of the embed user.\n   * @param {Object} userData - The data for the embed user.\n   * @param {string} userData.name - The name of the embed user.\n   * @param {string} userData.email - The email of the embed user.\n   * @param {Object} [userData.parameters] - Additional parameters for the embed user.\n   * @returns {Promise<EmbedUser>} A promise that resolves to the created or updated embed user.\n   */\n  upsert(\n    userId: string,\n    userData: {\n      name: string;\n      email: string | null | undefined;\n      parameters?: { [key: string]: any };\n    }\n  ): Promise<EmbedUser> {\n    return this._fetchBase(\"/api/embed-users\", \"POST\", {\n      id: userId,\n      name: userData.name,\n      email: userData.email || \"\",\n      parameters: userData.parameters,\n    }) as Promise<EmbedUser>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { DataSource, DatasourceMeta } from \"../types/index.js\";\n\n// Datasource user endpoints\nexport class OnvoDatasources extends OnvoBase {\n  /**\n   * Lists all the datasources.\n   * @returns {Promise<(DataSource & {_meta: DatasourceMeta})[]>} A promise that resolves to an array of datasources.\n   */\n  list(filters?: { dashboard?: string, integration?: string }): Promise<(DataSource & { _meta: DatasourceMeta })[]> {\n    if (filters && filters.integration) {\n      return this._fetchBase(\n        \"/api/datasources?integration=\" + filters.integration\n      ) as Promise<(DataSource & { _meta: DatasourceMeta })[]>;\n    }\n    if (filters && filters.dashboard) {\n      return this._fetchBase(\n        \"/api/datasources?dashboard=\" + filters.dashboard\n      ) as Promise<(DataSource & { _meta: DatasourceMeta })[]>;\n    }\n    return this._fetchBase(\"/api/datasources\") as Promise<(DataSource & { _meta: DatasourceMeta })[]>;\n  }\n\n  /**\n   * Gets a datasource by ID.\n   * @param {string} id - The ID of the datasource.\n   * @returns {Promise<(DataSource & {_meta: DatasourceMeta})>} A promise that resolves to the datasource.\n   */\n  get(id: string): Promise<DataSource & { _meta: DatasourceMeta }> {\n    return this._fetchBase(\"/api/datasources/\" + id) as Promise<DataSource & { _meta: DatasourceMeta }>;\n  }\n\n  /**\n   * Deletes a datasource by ID.\n   * @param {string} id - The ID of the datasource.\n   * @returns {Promise<{ success: boolean }>} A promise that resolves to an object indicating the success of the deletion.\n   */\n  delete(id: string): Promise<{ success: boolean }> {\n    return this._fetchBase(\"/api/datasources/\" + id, \"DELETE\") as Promise<{\n      success: boolean;\n    }>;\n  }\n\n  /**\n   * Updates a datasource by ID.\n   * @param {string} id - The ID of the datasource.\n   * @param {Partial<DataSource>} body - The updated datasource object.\n   * @returns {Promise<DataSource>} A promise that resolves to the updated datasource.\n   */\n  update(id: string, body: Partial<DataSource>): Promise<DataSource> {\n    return this._fetchBase(\n      \"/api/datasources/\" + id,\n      \"PUT\",\n      body\n    ) as Promise<DataSource>;\n  }\n\n  /**\n   * Creates a new datasource.\n   * @param {Omit<DataSource, \"id\" | \"created_at\" | \"created_by\" | \"last_updated_at\" | \"last_updated_by\" | \"size\" | \"team\">} body - The new datasource object.\n   * @returns {Promise<DataSource>} A promise that resolves to the created datasource.\n   */\n  create(\n    body: Omit<\n      DataSource,\n      | \"id\"\n      | \"created_at\"\n      | \"created_by\"\n      | \"last_updated_at\"\n      | \"last_updated_by\"\n      | \"size\"\n      | \"team\"\n    >\n  ): Promise<DataSource> {\n    return this._fetchBase(\n      \"/api/datasources\",\n      \"POST\",\n      body\n    ) as Promise<DataSource>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Automation } from \"../types/automations.js\";\n\n// Automation endpoints\nexport class OnvoAutomations extends OnvoBase {\n  /**\n   * Fetches all the automations\n   * @returns {Promise<Automation[]>} A promise that resolves to an array of Automation objects\n   */\n  list(filters?: { dashboard: string }): Promise<Automation[]> {\n    if (filters) {\n      return this._fetchBase(\"/api/automations?dashboard=\" + filters.dashboard) as Promise<Automation[]>;\n    }\n    return this._fetchBase(\"/api/automations\") as Promise<Automation[]>;\n  }\n  /**\n   * Fetches an automation by its ID\n   * @param {string} id - The ID of the automation\n   * @returns {Promise<Automation>} A promise that resolves to an Automation object\n   */\n  get(id: string): Promise<Automation> {\n    return this._fetchBase(\"/api/automations/\" + id) as Promise<Automation>;\n  }\n  /**\n   * Deletes an automation by its ID\n   * @param {string} id - The ID of the automation\n   * @returns {Promise<{ success: boolean }>} A promise that resolves to an object with a success field\n   */\n  delete(id: string): Promise<{ success: boolean }> {\n    return this._fetchBase(\"/api/automations/\" + id, \"DELETE\") as Promise<{\n      success: boolean;\n    }>;\n  }\n  /**\n   * Updates an automation by its ID\n   * @param {string} id - The ID of the automation\n   * @param {Partial<Automation>} body - The updated automation data\n   * @returns {Promise<Automation>} A promise that resolves to an Automation object\n   */\n  update(id: string, body: Partial<Automation>): Promise<Automation> {\n    return this._fetchBase(\n      \"/api/automations/\" + id,\n      \"PUT\",\n      body\n    ) as Promise<Automation>;\n  }\n  /**\n   * Creates a new automation\n   * @param {Partial<Automation>} body - The automation data\n   * @returns {Promise<Automation>} A promise that resolves to an Automation object\n   */\n  create(body: Partial<Automation>): Promise<Automation> {\n    return this._fetchBase(\n      \"/api/automations\",\n      \"POST\",\n      body\n    ) as Promise<Automation>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Dashboard, DashboardMeta } from \"../types/dashboard.js\";\n\n// Dashboard endpoints\nexport class OnvoDashboards extends OnvoBase {\n  /**\n   * Lists all the dashboards.\n   *\n   * @param {Object} filters - The filters to apply to the list.\n   * @param {string} filters.parent_dashboard - The ID of the parent dashboard.\n   * @param {string} filters.root_dashboard - The ID of the root dashboard.\n   * @return {Promise<(Dashboard & {_meta: DashboardMeta})[]>} A promise that resolves to an array of dashboards.\n   */\n  list(filters?: { parent_dashboard?: string, root_dashboard?: string }): Promise<(Dashboard & { _meta: DashboardMeta })[]> {\n    let url = \"/api/dashboards\";\n    if (filters) {\n      const params = new URLSearchParams();\n      if (filters.parent_dashboard) params.append(\"parent_dashboard\", filters.parent_dashboard);\n      if (filters.root_dashboard) params.append(\"root_dashboard\", filters.root_dashboard);\n      const queryString = params.toString();\n      if (queryString) url += \"?\" + queryString;\n    }\n    return this._fetchBase(url).catch((e) => {\n      throw e;\n    }) as Promise<\n      (Dashboard & { _meta: DashboardMeta })[]\n    >;\n  }\n  /**\n   * Gets a dashboard by ID.\n   *\n   * @param {string} id - The ID of the dashboard.\n   * @return {Promise<Dashboard>} A promise that resolves to the dashboard.\n   */\n  get(id: string): Promise<Dashboard & { _meta: DashboardMeta }> {\n    return this._fetchBase(\"/api/dashboards/\" + id).catch((e) => {\n      throw e;\n    }) as Promise<\n      Dashboard & { _meta: DashboardMeta }\n    >;\n  }\n  /**\n   * Deletes a dashboard by ID.\n   *\n   * @param {string} id - The ID of the dashboard.\n   * @return {Promise<{ success: true }>} A promise that resolves to an object indicating the success of the deletion.\n   */\n  delete(id: string): Promise<{ success: true }> {\n    return this._fetchBase(\"/api/dashboards/\" + id, \"DELETE\") as Promise<{\n      success: true;\n    }>;\n  }\n  /**\n   * Updates a dashboard by ID.\n   *\n   * @param {string} id - The ID of the dashboard.\n   * @param {Partial<Dashboard>} body - The updated dashboard data.\n   * @return {Promise<Dashboard>} A promise that resolves to the updated dashboard.\n   */\n  update(id: string, body: Partial<Dashboard>): Promise<Dashboard> {\n    return this._fetchBase(\n      \"/api/dashboards/\" + id,\n      \"PUT\",\n      body\n    ) as Promise<Dashboard>;\n  }\n  /**\n   * Creates a new dashboard.\n   *\n   * @param {Omit<Dashboard, \"id\" | \"created_at\" | \"created_by\" | \"last_updated_at\" | \"last_updated_by\" | \"thumbnail\" | \"team\">} body - The dashboard data.\n   * @return {Promise<Dashboard>} A promise that resolves to the created dashboard.\n   */\n  create(\n    body: Omit<\n      Dashboard,\n      | \"id\"\n      | \"created_at\"\n      | \"created_by\"\n      | \"last_updated_at\"\n      | \"last_updated_by\"\n      | \"thumbnail\"\n      | \"team\"\n    >\n  ): Promise<Dashboard> {\n    return this._fetchBase(\"/api/dashboards\", \"POST\", body) as Promise<Dashboard>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { DashboardDatasource } from \"../types/index.js\";\n\nexport class OnvoDashboardDatasources extends OnvoBase {\n  #dashboardId: string;\n\n  constructor(\n    dashboardId: string,\n    apiKey: string,\n    options?: { endpoint: string }\n  ) {\n    super(apiKey, options);\n    this.#dashboardId = dashboardId;\n  }\n\n  /**\n   * Unlinks a datasource from a dashboard.\n   *\n   * @param {string} datasourceId - The ID of the datasource to unlink.\n   * @return {Promise<{ success: boolean }>} A promise that resolves to an object indicating the success of the unlink operation.\n   */\n  unlink(datasourceId: string): Promise<{ success: boolean }> {\n    return this._fetchBase(\n      \"/api/dashboards/\" + this.#dashboardId + \"/datasources/\" + datasourceId,\n      \"DELETE\"\n    ) as Promise<{ success: boolean }>;\n  }\n\n  /**\n   * Links a datasource to a dashboard.\n   *\n   * @param {string} datasourceId - The ID of the datasource to link.\n   * @return {Promise<DashboardDatasource>} A promise that resolves to the linked dashboard datasource.\n   */\n  link(datasourceId: string): Promise<DashboardDatasource> {\n    return this._fetchBase(\n      \"/api/dashboards/\" + this.#dashboardId + \"/datasources\",\n      \"POST\",\n      {\n        datasourceId: datasourceId,\n      }\n    ) as Promise<DashboardDatasource>;\n  }\n\n  /**\n   * Links a datasource to a dashboard.\n   *\n   * @param {array} datasourceIds - The IDs of the datasources to link.\n   * @return {Promise<DashboardDatasource>} A promise that resolves to the linked dashboard datasource.\n   */\n  linkMultiple(datasourceIds: string[]): Promise<DashboardDatasource> {\n    return this._fetchBase(\n      \"/api/dashboards/\" + this.#dashboardId + \"/datasources\",\n      \"POST\",\n      {\n        datasourceIds: datasourceIds,\n      }\n    ) as Promise<DashboardDatasource>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { WidgetSuggestion } from \"../types/index.js\";\n\nexport class OnvoWidgetSuggestions extends OnvoBase {\n    #dashboardId: string;\n\n    constructor(\n        dashboardId: string,\n        apiKey: string,\n        options?: { endpoint: string }\n    ) {\n        super(apiKey, options);\n        this.#dashboardId = dashboardId;\n    }\n\n    /**\n     * Links a datasource to a dashboard.\n     *\n     * @return {Promise<WidgetSuggestion[]>} A promise that resolves to the linked dashboard datasource.\n     */\n    list(): Promise<WidgetSuggestion[]> {\n        return this._fetchBase(\n            \"/api/dashboards/\" + this.#dashboardId + \"/widget-suggestions\",\n            \"GET\"\n        ) as Promise<WidgetSuggestion[]>;\n    }\n\n    /**\n     * Links a datasource to a dashboard.\n     *\n     * @param {string} id - The ID of the widget suggestion to delete.\n     * @return {Promise<{ success: boolean }>} A promise that resolves to the linked dashboard datasource.\n     */\n    delete(id: string): Promise<{ success: boolean }> {\n        return this._fetchBase(\n            \"/api/dashboards/\" + this.#dashboardId + \"/widget-suggestions/\" + id,\n            \"DELETE\"\n        ) as Promise<{ success: boolean }>;\n    }\n}\n","import { OnvoDashboardDatasources } from \"../dashboard_datasources/index.js\";\nimport OnvoBase, { JobUpdateEvent } from \"../base.js\";\nimport { Dashboard } from \"../types/dashboard.js\";\nimport { WidgetSuggestion } from \"../types/index.js\";\nimport { OnvoWidgetSuggestions } from \"../widget_suggestions/index.js\";\n\nexport class OnvoDashboard extends OnvoBase {\n  datasources: OnvoDashboardDatasources;\n  widgetSuggestions: OnvoWidgetSuggestions;\n  #id: string;\n\n  constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n    super(apiKey, options);\n    this.#id = id;\n    this.datasources = new OnvoDashboardDatasources(id, apiKey, options);\n    this.widgetSuggestions = new OnvoWidgetSuggestions(id, apiKey, options);\n  }\n\n  /**\n   * Updates the widget cache for the dashboard.\n   *\n   * @return {Promise<{success: boolean, id: string}>} A promise that resolves to an object containing the success and id of the widget.\n   */\n  updateCache(callback?: (event: JobUpdateEvent) => void, options?: {\n    rejectCache?: boolean,\n    rejectFilterCache?: boolean\n  }) {\n    const queryParams = [];\n    if (options?.rejectCache) {\n      queryParams.push(\"rejectCache=true\");\n    }\n    if (options?.rejectFilterCache) {\n      queryParams.push(\"rejectFilterCache=true\");\n    }\n\n    let queryString = \"\";\n    if (queryParams.length > 0) {\n      queryString = \"?\" + queryParams.join(\"&\");\n    }\n\n    return this._fetchStreamBase(\n      `/api/dashboards/${this.#id}/update-cache${queryString}`,\n      \"POST\",\n      undefined,\n      callback\n    ) as Promise<Dashboard & { _meta: { status: string, url: string, total?: number, completed?: number } }>;\n  }\n\n  /**\n   * Exports the dashboard in the specified format.\n   *\n   * @param {(\"csv\" | \"xlsx\" | \"pdf\" | \"png\" | \"jpeg\")} format - The format to export the dashboard in.\n   * @return {Promise<Blob>} A promise that resolves to a Blob representing the exported dashboard.\n   */\n  export(format: \"csv\" | \"xlsx\" | \"pdf\" | \"png\" | \"jpeg\" | \"pptx\", theme: \"light\" | \"dark\" = \"light\", tab: number = 0, onProgress?: (event: JobUpdateEvent) => void) {\n    return this._fetchStreamBase(\n      `/api/dashboards/${this.#id}/export?theme=${theme}&format=${format}&tab=${tab}`,\n      \"GET\",\n      undefined,\n      onProgress\n    );\n  }\n\n  /**\n * Duplicates the dashboard.\n *\n * @return {Promise<{id: string}>} A promise that resolves to an object containing the id of the duplicated dashboard.\n */\n  duplicate(): Promise<{ id: string }> {\n    return this._fetchBase(`/api/dashboards/${this.#id}/duplicate`, \"POST\");\n  }\n\n  /**\n   * Summarizes the dashboard using the provided prompt.\n   *\n   * @param {string} prompt - The prompt to use for summarizing the dashboard.\n   * @return {Promise<{title: string, description: string}>} A promise that resolves to an object containing the title and description of the summarized dashboard.\n   */\n  summarize(prompt: string): Promise<{ title: string; description: string }> {\n    return this._fetchStreamBase(`/api/dashboards/${this.#id}/summarize`, \"POST\", {\n      prompt,\n    });\n  }\n\n  /**\n   * Synchronizes the dashboard with the latest data and settings.\n   *\n   * @return {Promise<any>} A promise that resolves with the sync result\n   */\n  sync(): Promise<any> {\n    return this._fetchBase(`/api/dashboards/${this.#id}/sync`, \"POST\");\n  }\n\n  generateWidgetSuggestions(): Promise<WidgetSuggestion[]> {\n    return this._fetchStreamBase(`/api/dashboards/${this.#id}/generate-suggestions`, \"POST\");\n  }\n}","import OnvoBase from \"../base.js\";\n\nexport class OnvoEmbedUser extends OnvoBase {\n  #id: string;\n\n  constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n    super(apiKey, options);\n    this.#id = id;\n  }\n\n  /**\n   * Retrieves an access token for the embed user.\n   *\n   * @return {Promise<{ user: string; token: string }>} A promise that resolves to an object containing the user ID and the access token.\n   */\n  getAccessToken(): Promise<{ user: string; token: string }> {\n    return this._fetchBase(\n      \"/api/embed-users/\" + this.#id + \"/token\"\n    ) as Promise<{ user: string; token: string }>;\n  }\n}\n","import OnvoBase, { JobUpdateEvent } from \"../base.js\";\nimport { Dashboard, DashboardMeta, DataSource } from \"../types/index.js\";\n\nexport class OnvoDatasource extends OnvoBase {\n  #id: string;\n\n  constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n    super(apiKey, options);\n    this.#id = id;\n  }\n\n  /**\n   * Initializes the data source.\n   * @returns {Promise<{ success: boolean }>} A promise that resolves to an object with a success property.\n   */\n  initialize(callback?: (event: JobUpdateEvent) => void): Promise<{ success: boolean }> {\n    return this._fetchStreamBase(\n      \"/api/datasources/\" + this.#id + \"/initialize\",\n      \"GET\",\n      undefined,\n      callback\n    ) as Promise<{ success: boolean }>;\n  }\n\n  /**\n   * Initializes the data source query.\n   * @param {string} prompt - The prompt for the data source query.\n   * @returns {Promise<{ query: string }>} A promise that resolves to an object with a success property.\n   */\n  generateQuery(prompt: string, callback?: (event: JobUpdateEvent) => void): Promise<{ query: string }> {\n    return this._fetchStreamBase(\n      \"/api/datasources/\" + this.#id + \"/generate-query\",\n      \"POST\",\n      { prompt },\n      callback\n    ) as Promise<{ query: string }>;\n  }\n\n  /**\n   * Uploads a file to the data source.\n   * @param {File} file - The file to upload.\n   * @returns {Promise<DataSource>} A promise that resolves to the data source object.\n   */\n  uploadFile(file: File): Promise<DataSource> {\n    const formData = new FormData();\n    formData.set(\"file\", file);\n    return this._fetchBase(\n      \"/api/datasources/\" + this.#id + \"/upload-file\",\n      \"POST\",\n      formData,\n      true\n    ) as Promise<DataSource>;\n  }\n\n  /**\n   * Retrieves the sample data from the data source.\n   * @returns {Promise<any[]>} A promise that resolves to an array of sample data.\n   */\n  sample(): Promise<any[]> {\n    return this._fetchBase(\n      \"/api/datasources/\" + this.#id + \"/sample\"\n    ) as Promise<any[]>;\n  }\n\n  /**\n * Retrieves the export data from the data source.\n * @returns {Promise<{url:string}>} A promise that resolves to an object with a url property.\n */\n  export(callback?: (event: JobUpdateEvent) => void): Promise<{ url: string }> {\n    return this._fetchStreamBase(\n      \"/api/datasources/\" + this.#id + \"/export\",\n      \"GET\",\n      undefined,\n      callback\n    ) as Promise<{ url: string }>;\n\n  }\n\n  /**\n* Retrieves the dashboards connected to the data source.\n* @returns {Promise<(Dashboard & { _meta: DashboardMeta })[]>} A promise that resolves to an array of dashboards.\n*/\n  dashboards(): Promise<(Dashboard & { _meta: DashboardMeta })[]> {\n    return this._fetchBase(\n      \"/api/datasources/\" + this.#id + \"/dashboards\"\n    ) as Promise<\n      (Dashboard & { _meta: DashboardMeta })[]\n    >;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Question } from \"../types/index.js\";\n\n// Question endpoints\nexport class OnvoQuestions extends OnvoBase {\n  /**\n   * Lists all questions for a given dashboard.\n   *\n   * @param {Object} filters - The filters to apply to the question list.\n   * @param {string} filters.dashboard - The ID of the dashboard to list questions for.\n   * @returns {Promise<Question[]>} A promise that resolves to an array of questions.\n   */\n  list(filters: { dashboard: string }): Promise<Question[]> {\n    return this._fetchBase(\n      \"/api/questions?dashboard=\" + filters.dashboard\n    ) as Promise<Question[]>;\n  }\n\n  /**\n   * Creates a new question.\n   *\n   * @param {Object} payload - The payload for the question creation.\n   * @param {string} payload.query - The query string for the question.\n   * @param {string} payload.dashboard - The ID of the dashboard to create the question in.\n   * @returns {Promise<Question & { _meta: {status: string, url: string} }>} A promise that resolves to the created question.\n   */\n  create(payload: {\n    query: string;\n    dashboard: string;\n  }): Promise<Question & { _meta: { status: string, url: string } }> {\n    return this._fetchBase(\"/api/questions\", \"POST\", {\n      dashboard: payload.dashboard,\n      query: payload.query || \"\",\n    }) as Promise<Question & { _meta: { status: string, url: string } }>;\n  }\n\n  /**\n   * Deletes a question.\n   *\n   * @param {string} id - The ID of the question to delete.\n   * @returns {Promise<{ success: boolean }>} A promise that resolves to an object indicating success.\n   */\n  delete(id: string): Promise<{ success: boolean }> {\n    return this._fetchBase(\"/api/questions/\" + id, \"DELETE\") as Promise<{\n      success: boolean;\n    }>;\n  }\n\n  /**\n   * Updates a question.\n   *\n   * @param {string} id - The ID of the question to update.\n   * @param {Partial<Question>} body - The updated question data.\n   * @returns {Promise<Question>} A promise that resolves to the updated question.\n   */\n  update(id: string, body: Partial<Question>): Promise<Question> {\n    return this._fetchBase(\n      \"/api/questions/\" + id,\n      \"PUT\",\n      body\n    ) as Promise<Question>;\n  }\n}\n","import OnvoBase, { JobUpdateEvent } from \"../base.js\";\nimport { AutomationRun } from \"../types/automations.js\";\n\nexport class OnvoAutomation extends OnvoBase {\n  #id: string;\n\n  constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n    super(apiKey, options);\n    this.#id = id;\n  }\n  /**\n   * Fetches all the runs of the automation\n   * @returns {Promise<AutomationRun[]>} A promise that resolves to an array of AutomationRun objects\n   */\n  getRuns(): Promise<AutomationRun[]> {\n    return this._fetchBase(\"/api/automations/\" + this.#id + \"/runs\") as Promise<\n      AutomationRun[]\n    >;\n  }\n\n  /**\n   * Tests the automation to see if it runs successfully\n   * @returns {Promise<{success: boolean}>} A promise that resolves to a status of successful or not\n   */\n  test(onProgress?: (event: JobUpdateEvent) => void): Promise<{ success: boolean }> {\n    return this._fetchStreamBase(\"/api/automations/\" + this.#id + \"/test\", \"GET\", undefined, onProgress) as Promise<{ success: boolean }>;\n  }\n}\n","import OnvoBase, { JobUpdateEvent } from \"../base.js\";\nimport { Widget } from \"../types/index.js\";\n\ninterface WidgetCacheResponse {\n  data: any;\n  pagination: {\n    page: number;\n    pageSize: number;\n    totalPages: number;\n    totalRows: number;\n  };\n}\n\nexport class OnvoWidget extends OnvoBase {\n  #id: string;\n\n  constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n    super(apiKey, options);\n    this.#id = id;\n  }\n\n  /**\n   * Exports the widget in the specified format.\n   *\n   * @param {(\"svg\" | \"csv\" | \"xlsx\" | \"png\" | \"jpeg\")} format - The format to export the widget in.\n   * @return {Promise<Blob>} A promise that resolves to a Blob representing the exported widget.\n   */\n  export(format: \"svg\" | \"csv\" | \"xlsx\" | \"png\" | \"jpeg\", theme: \"light\" | \"dark\" = \"light\", callback?: (event: JobUpdateEvent) => void): Promise<Blob> {\n    return this._fetchStreamBase(\n      `/api/widgets/${this.#id}/export?theme=${theme}&format=${format}`,\n      \"GET\",\n      undefined,\n      callback\n    ) as Promise<Blob>;\n  }\n  /**\n   * Returns the cached widget data.\n   * \n   * @param {Object} [props] - Configuration options\n   * @param {boolean} [props.raw] - Whether to return raw data\n   * @param {number} [props.page] - Page number for pagination\n   * @param {number} [props.pageSize] - Number of items per page\n   * @param {string} [props.sortField] - Field to sort by\n   * @param {'asc'|'desc'} [props.sortDirection] - Sort direction\n   * @return {Promise<WidgetCacheResponse>} A promise that resolves to the cached widget data with pagination information.\n   */\n  cache(props?: {\n    raw?: boolean;\n    page?: number;\n    pageSize?: number;\n    sortField?: string;\n    sortDirection?: 'asc' | 'desc';\n  }): Promise<WidgetCacheResponse> {\n    const params = new URLSearchParams();\n    if (props?.raw) params.append('raw', 'true');\n    if (props?.page) params.append('page', props.page.toString());\n    if (props?.pageSize) params.append('pageSize', props.pageSize.toString());\n    if (props?.sortField) params.append('sortField', props.sortField);\n    if (props?.sortDirection) params.append('sortDirection', props.sortDirection);\n\n    const queryString = params.toString();\n    return this._fetchBase(\n      `/api/widgets/${this.#id}/cache${queryString ? `?${queryString}` : \"\"}`\n    ) as Promise<WidgetCacheResponse>;\n  }\n  /**\n   * Updates the prompts for the widget.\n   *\n   * @param {Array<{ role: \"user\" | \"assistant\"; content: String }>} messages - The new prompts for the widget.\n   * @return {Promise<Widget>} A promise that resolves to the updated widget.\n   */\n  updatePrompts(\n    messages: { role: \"user\" | \"assistant\"; content: String }[],\n    callback?: (event: JobUpdateEvent) => void\n  ): Promise<Widget> {\n    return this._fetchStreamBase(\"/api/widgets/\" + this.#id, \"PATCH\", {\n      messages,\n    },\n      callback\n    ) as Promise<Widget>;\n  }\n  /**\n   * Executes the given code in the widget.\n   *\n   * @return {Promise<Widget & { _meta: { status: string, url: string, total?: number, completed?: number } }>} A promise that resolves to the result of executing the code.\n   */\n  updateCache(callback?: (event: JobUpdateEvent) => void): Promise<Widget & { _meta: { status: string, url: string, total?: number, completed?: number } }> {\n    return this._fetchStreamBase(\n      \"/api/widgets/\" + this.#id + \"/cache\",\n      \"POST\",\n      undefined,\n      callback\n    ) as Promise<Widget & { _meta: { status: string, url: string, total?: number, completed?: number } }>;\n  }\n\n  /**\n   * Annotates the code of the widget.\n   *\n   * @return {Promise<Widget & { _meta: { status: string, url: string, total?: number, completed?: number } }>} A promise that resolves to the result of annotating the code.\n   */\n  annotateCode(callback?: (event: JobUpdateEvent) => void): Promise<{ insights: string } & { _meta: { status: string, url: string, total?: number, completed?: number } }> {\n    return this._fetchStreamBase(\n      \"/api/widgets/\" + this.#id + \"/annotate-code\",\n      \"GET\",\n      undefined,\n      callback\n    ) as Promise<{ insights: string } & { _meta: { status: string, url: string, total?: number, completed?: number } }>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Dashboard, EmbedUser, Session } from \"../types/index.js\";\n\nexport class OnvoSessions extends OnvoBase {\n  // Dashboard Session endpoints\n  /**\n   * Lists all sessions for a given dashboard\n   * @param filters - Object containing the parent_dashboard field\n   * @returns Promise of an array of Session objects\n   */\n  list(filters: {\n    parent_dashboard?: string;\n    embed_user?: string;\n  }): Promise<(Session & { dashboard: Dashboard; embed_user: EmbedUser; })[]> {\n    if (filters.embed_user) {\n      return this._fetchBase(\n        \"/api/sessions?embed_user=\" + filters.embed_user\n      ) as Promise<(Session & { dashboard: Dashboard; embed_user: EmbedUser; })[]>;\n    } else {\n      return this._fetchBase(\n        \"/api/sessions?parent_dashboard=\" + filters.parent_dashboard\n      ) as Promise<(Session & { dashboard: Dashboard; embed_user: EmbedUser; })[]>;\n    }\n  }\n\n  /**\n   * Gets a specific session by its dashboard id\n   * @param filters - Object containing the dashboard field\n   * @returns Promise of a Session object\n   */\n  get(filters: { dashboard: string }): Promise<Session & { embed_user: EmbedUser; dashboard: Dashboard }> {\n    return this._fetchBase(\n      \"/api/sessions?dashboard=\" + filters.dashboard\n    ) as Promise<Session & { embed_user: EmbedUser; dashboard: Dashboard }>;\n  }\n\n  /**\n   * Revokes a session by its dashboard id\n   * @param filters - Object containing the dashboard field\n   * @returns Promise of an object with a success field\n   */\n  revoke(filters: { dashboard: string }): Promise<{ success: true }> {\n    return this._fetchBase(\n      \"/api/sessions?dashboard=\" + filters.dashboard,\n      \"DELETE\"\n    ) as Promise<{ success: true }>;\n  }\n\n  /**\n   * Revokes all sessions for a given dashboard\n   * @param filters - Object containing the parent_dashboard field\n   * @returns Promise of an object with a success field\n   */\n  revokeAll(filters: { parent_dashboard: string }): Promise<{ success: true }> {\n    return this._fetchBase(\n      \"/api/sessions?parent_dashboard=\" + filters.parent_dashboard,\n      \"DELETE\"\n    ) as Promise<{ success: true }>;\n  }\n\n  /**\n   * Creates or updates a session for a given embed_user\n   * @param filters - Object containing the embed_user, parent_dashboard and parameters fields\n   * @returns Promise of a Session object with additional url and token fields\n   */\n  async upsert({\n    embed_user,\n    parent_dashboard,\n    parameters,\n  }: {\n    embed_user: string;\n    parent_dashboard: string;\n    parameters?: { [key: string]: any };\n  }): Promise<Session & { url: string; token: string }> {\n    let data: any = await this._fetchBase(\"/api/sessions\", \"POST\", {\n      user: embed_user,\n      parameters: parameters,\n      dashboard: parent_dashboard,\n    });\n\n    return data as Promise<Session & { url: string; token: string }>;\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Widget } from \"../types/index.js\";\n\nexport class OnvoWidgets extends OnvoBase {\n  // Dashboard Widget endpoints\n  /**\n   * Retrieves a list of widgets for a given dashboard.\n   *\n   * @param {Object} filters - Filters for the widgets.\n   * @param {string} filters.dashboard - The ID of the dashboard to retrieve widgets for.\n   * @return {Promise<Widget[]>} A promise that resolves to an array of widgets.\n   */\n  list(filters: {\n    dashboard: string;\n    use_in_library?: boolean;\n  }): Promise<Widget[]> {\n    return this._fetchBase(\n      `/api/widgets?dashboard=${filters.dashboard}&use_in_library=${filters.use_in_library}`\n    ) as Promise<Widget[]>;\n  }\n  /**\n   * Retrieves a specific widget by its ID.\n   *\n   * @param {string} id - The ID of the widget to retrieve.\n   * @return {Promise<Widget>} A promise that resolves to the widget.\n   */\n  get(id: string): Promise<Widget> {\n    return this._fetchBase(\"/api/widgets/\" + id) as Promise<Widget>;\n  }\n  /**\n   * Deletes a widget by its ID.\n   *\n   * @param {string} id - The ID of the widget to delete.\n   * @return {Promise<{success: boolean}>} A promise that resolves to an object indicating success.\n   */\n  delete(id: string): Promise<{ success: boolean }> {\n    return this._fetchBase(\"/api/widgets/\" + id, \"DELETE\") as Promise<{\n      success: boolean;\n    }>;\n  }\n  /**\n   * Updates a widget by its ID.\n   *\n   * @param {string} id - The ID of the widget to update.\n   * @param {Partial<Widget>} body - The updated widget data.\n   * @return {Promise<Widget>} A promise that resolves to the updated widget.\n   */\n  update(id: string, body: Partial<Widget>): Promise<Widget> {\n    return this._fetchBase(\n      \"/api/widgets/\" + id,\n      \"PUT\",\n      body\n    ) as Promise<Widget>;\n  }\n  /**\n   * Creates a new widget.\n   *\n   * @param {Omit<Widget, \"id\" | \"created_at\">} body - The widget data to create, excluding the ID and creation timestamp.\n   * @param {any} [cache] - Optional cache data to include with the request.\n   * @return {Promise<Widget>} A promise that resolves to the newly created widget.\n   */\n  create(body: Omit<Widget, \"id\" | \"created_at\">, cache?: any): Promise<Widget> {\n    return this._fetchBase(\"/api/widgets\", \"POST\", { ...body, cache }) as Promise<Widget>;\n  }\n}\n","import OnvoBase, { JobUpdateEvent } from \"../base.js\";\nimport { Message } from \"../types/index.js\";\nexport class OnvoQuestion extends OnvoBase {\n  #id: string;\n\n  constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n    super(apiKey, options);\n    this.#id = id;\n  }\n  /**\n   * Retrieves the messages for the question.\n   *\n   * @return {Promise<Message[]>} A promise that resolves to an array of messages.\n   */\n  getMessages(): Promise<Message[]> {\n    return this._fetchBase(\n      `/api/questions/${this.#id}/messages`\n    ) as Promise<Message[]>;\n  }\n\n  /**\n   * Updates the messages for the question.\n   *\n   * @param {string} content - The text content to update.\n   * @return {Promise<Message & { _meta: {status: string, url: string} }>} A promise that resolves to the updated message.\n   */\n  completion(content: string, onEvent?: (event: JobUpdateEvent) => void): Promise<Message & { _meta: { status: string, url: string } }> {\n    return this._fetchStreamBase(\n      `/api/questions/${this.#id}/messages`,\n      \"POST\",\n      { content },\n      onEvent\n    ) as Promise<Message & { _meta: { status: string, url: string } }>;\n  }\n\n  /**\n   * Updates a message for the question.\n   *\n   * @param {string} messageId - The id of the message to update.\n   * @param {string} content - The content of the message to update.\n   * @return {Promise<Message & { _meta: {status: string, url: string} }>} A promise that resolves to the updated message.\n   */\n  updateMessage(messageId: string, content: string, onEvent?: (event: JobUpdateEvent) => void): Promise<Message & { _meta: { status: string, url: string } }> {\n    return this._fetchStreamBase(\n      `/api/questions/${this.#id}/messages/${messageId}`,\n      \"PUT\",\n      { content },\n      onEvent\n    ) as Promise<Message & { _meta: { status: string, url: string } }>;\n  }\n\n  /**\n   * Votes on a message.\n   *\n   * @param {string} messageId - The id of the message to vote on.\n   * @param {('up' | 'down')} vote - The vote to cast.\n   * @param {string} [reason] - The reason for the vote.\n   * @returns {Promise<Message>} A promise that resolves to the updated message.\n   */\n  voteMessage(messageId: string, vote: 'up' | 'down', reason?: string): Promise<Message> {\n    return this._fetchBase(\n      `/api/questions/${this.#id}/messages/${messageId}`,\n      \"POST\",\n      { vote, vote_reason: reason }\n    ) as Promise<Message>;\n  }\n}\n\n","import OnvoBase from \"../base.js\";\n\nexport class OnvoUtils extends OnvoBase {\n  /**\n   * Uploads a file to a given bucket\n   *\n   * @param {Object} filters - The filters to apply to the question list.\n   * @param {string} filters.dashboard - The ID of the dashboard to list questions for.\n   * @returns {Promise<Question[]>} A promise that resolves to an array of questions.\n   */\n  async uploadFile(file: File) {\n    const formData = new FormData();\n    formData.set(\"file\", file);\n    return this._fetchBase(\n      \"/api/utils/upload-file\",\n      \"POST\",\n      formData,\n      true\n    ) as Promise<{ url: string }>;\n  }\n\n  /**\n   * Triggers the agent test and waits for completion via WebSocket.\n   * If the server responds 202 with socket info, this method connects automatically\n   * and resolves when 'job.completed' is received, or rejects on 'job.error'.\n   */\n  async testAgent(\n    agent: \"programmer\" | \"analyst\",\n    onProgress?: (event: any) => void\n  ): Promise<any> {\n    return this._fetchStreamBase(\n      `/api/internal/openai/test-agent?agent=${agent}`,\n      \"POST\",\n      undefined,\n      onProgress\n    );\n  }\n}\n","import OnvoBase from \"../base.js\";\nimport { Log, LogType } from \"../types/index.js\";\n\n// Logs endpoints\nexport class OnvoLogs extends OnvoBase {\n    /**\n     * Lists all logs for a given dashboard.\n     *\n     * @returns {Promise<Log[]>} A promise that resolves to an array of logs.\n     */\n    list(): Promise<Log[]> {\n        return this._fetchBase(\n            \"/api/logs\"\n        ) as Promise<Log[]>;\n    }\n\n    /**\n     * Creates a new log.\n     *\n     * @param {Object} payload - The payload for the log creation.\n     * @param {string} payload.type - The type of log to create.\n     * @param {string} payload.dashboard - The ID of the dashboard to create the log for.\n     * @param {string} payload.widget - The ID of the widget to create the log for.\n     * @returns {Promise<Log>} A promise that resolves to the created log.\n     */\n    create(payload: {\n        type: LogType;\n        dashboard: string;\n        widget?: string;\n    }): Promise<Log> {\n        return this._fetchBase(\"/api/logs\", \"POST\", payload) as Promise<Log>;\n    }\n\n}\n","import { Integration, IntegrationMeta } from \"../types/index.js\";\nimport OnvoBase from \"../base.js\";\n\n/**\n * Class representing operations related to integrations.\n * Extends the base Onvo class to provide integration-specific functionality.\n */\nexport class OnvoIntegrations extends OnvoBase {\n  /**\n   * Lists all available integrations.\n   * @returns {Promise<(Integration & {_meta: IntegrationMeta})[]>} A promise that resolves to an array of integration objects.\n   */\n  list(): Promise<(Integration & { _meta: IntegrationMeta })[]> {\n    return this._fetchBase(\"/api/integrations\") as Promise<(Integration & { _meta: IntegrationMeta })[]>;\n  }\n\n  /**\n   * Retrieves a specific integration by ID.\n   * @param {string} id - The ID of the integration to retrieve.\n   * @returns {Promise<(Integration & {_meta: IntegrationMeta})>} A promise that resolves to the integration object.\n   */\n  get(id: string): Promise<(Integration & { _meta: IntegrationMeta })> {\n    return this._fetchBase(`/api/integrations/${id}`) as Promise<(Integration & { _meta: IntegrationMeta })>;\n  }\n\n  /**\n   * Creates a new integration.\n   * @param {Integration} data - The data for the new integration.\n   * @returns {Promise<Integration>} A promise that resolves to the created integration object.\n   */\n  create(data: Omit<Integration, \"id\" | \"team\" | \"created_at\" | \"updated_at\">): Promise<Integration> {\n    return this._fetchBase(\"/api/integrations\", \"POST\", data) as Promise<Integration>;\n  }\n\n  /**\n   * Updates an existing integration.\n   * @param {string} id - The ID of the integration to update.\n   * @param {Integration} data - The updated integration data.\n   * @returns {Promise<Integration>} A promise that resolves to the updated integration object.\n   */\n  update(id: string, data: Integration): Promise<Integration> {\n    return this._fetchBase(`/api/integrations/${id}`, \"PUT\", data) as Promise<Integration>;\n  }\n\n  /**\n   * Deletes an integration.\n   * @param {string} id - The ID of the integration to delete.\n   * @returns {Promise<void>} A promise that resolves when the integration is deleted.\n   */\n  delete(id: string): Promise<void> {\n    return this._fetchBase(`/api/integrations/${id}`, \"DELETE\") as Promise<void>;\n  }\n\n\n}\n","import OnvoBase from \"@/base\";\nimport { IntegrationTable } from \"../types/index.js\";\n\nexport class OnvoIntegrationTables extends OnvoBase {\n    #integrationId: string;\n\n    constructor(\n        integrationId: string,\n        apiKey: string,\n        options?: { endpoint: string }\n    ) {\n        super(apiKey, options);\n        this.#integrationId = integrationId;\n    }\n\n    list(): Promise<IntegrationTable[]> {\n        return this._fetchBase(\"/api/integration-tables?integration=\" + this.#integrationId) as Promise<IntegrationTable[]>;\n    }\n    update(id: string, body: Partial<IntegrationTable>): Promise<IntegrationTable> {\n        return this._fetchBase(\"/api/integration-tables/\" + id, \"PUT\", body) as Promise<IntegrationTable>;\n    }\n}","import OnvoBase, { JobUpdateEvent } from \"@/base\";\nimport { OnvoIntegrationTables } from \"../integration_tables/index.js\";\n\nexport class OnvoIntegration extends OnvoBase {\n    tables: OnvoIntegrationTables;\n    #id: string;\n\n    constructor(id: string, apiKey: string, options?: { endpoint: string }) {\n        super(apiKey, options);\n        this.tables = new OnvoIntegrationTables(id, apiKey, options);\n        this.#id = id;\n    }\n\n    /**\n     * Initializes the integration.\n     *\n     * @return {Promise<{success: boolean, id: string}>} A promise that resolves to an object containing the success and id of the integration.\n     */\n    initialize(callback?: (event: JobUpdateEvent) => void) {\n        return this._fetchStreamBase(\n            \"/api/integrations/\" + this.#id + \"/initialize\",\n            \"POST\",\n            undefined,\n            callback\n        ) as Promise<{ success: boolean, id: string }>;\n    }\n\n}","import OnvoBase from \"./base.js\";\n\nimport { OnvoAccounts } from \"./accounts/index.js\";\nimport { OnvoTeams } from \"./teams/index.js\";\nimport { OnvoEmbedUsers } from \"./embed_users/index.js\";\nimport { OnvoDatasources } from \"./datasources/index.js\";\nimport { OnvoAutomations } from \"./automations/index.js\";\nimport { OnvoDashboards } from \"./dashboards/index.js\";\nimport { OnvoDashboard } from \"./dashboard/index.js\";\nimport { OnvoEmbedUser } from \"./embed_user/index.js\";\nimport { OnvoDatasource } from \"./datasource/index.js\";\nimport { OnvoQuestions } from \"./questions/index.js\";\nimport { OnvoAutomation } from \"./automation/index.js\";\nimport { OnvoWidget } from \"./widget/index.js\";\nimport { OnvoSessions } from \"./sessions/index.js\";\nimport { OnvoWidgets } from \"./widgets/index.js\";\nimport { OnvoQuestion } from \"./question/index.js\";\nimport { OnvoUtils } from \"./utils/index.js\";\nimport { OnvoLogs } from \"./logs/index.js\";\nimport { OnvoIntegrations } from \"./integrations/index.js\";\nimport { OnvoIntegration } from \"./integration/index.js\";\n\nexport class Onvo extends OnvoBase {\n    accounts: OnvoAccounts;\n    teams: OnvoTeams;\n    embed_users: OnvoEmbedUsers;\n    datasources: OnvoDatasources;\n    automations: OnvoAutomations;\n    dashboards: OnvoDashboards;\n    questions: OnvoQuestions;\n    widgets: OnvoWidgets;\n    sessions: OnvoSessions;\n    utils: OnvoUtils;\n    logs: OnvoLogs;\n    integrations: OnvoIntegrations;\n\n    automation: (automationId: string) => OnvoAutomation;\n    dashboard: (dashboardId: string) => OnvoDashboard;\n    embed_user: (embedUserId: string) => OnvoEmbedUser;\n    datasource: (datasourceId: string) => OnvoDatasource;\n    widget: (widgetId: string) => OnvoWidget;\n    question: (questionId: string) => OnvoQuestion;\n    integration: (integrationId: string) => OnvoIntegration;\n\n    constructor(apiKey: string, options?: { endpoint: string }) {\n        super(apiKey, options);\n\n        this.accounts = new OnvoAccounts(apiKey, options);\n        this.teams = new OnvoTeams(apiKey, options);\n        this.embed_users = new OnvoEmbedUsers(apiKey, options);\n        this.datasources = new OnvoDatasources(apiKey, options);\n        this.automations = new OnvoAutomations(apiKey, options);\n        this.dashboards = new OnvoDashboards(apiKey, options);\n        this.questions = new OnvoQuestions(apiKey, options);\n        this.sessions = new OnvoSessions(apiKey, options);\n        this.widgets = new OnvoWidgets(apiKey, options);\n        this.utils = new OnvoUtils(apiKey, options);\n        this.logs = new OnvoLogs(apiKey, options);\n        this.integrations = new OnvoIntegrations(apiKey, options);\n\n        this.dashboard = (dashboardId: string) => {\n            return new OnvoDashboard(dashboardId, apiKey, options);\n        };\n\n        this.integration = (integrationId: string) => {\n            return new OnvoIntegration(integrationId, apiKey, options);\n        };\n\n        this.embed_user = (embedUserId: string) => {\n            return new OnvoEmbedUser(embedUserId, apiKey, options);\n        };\n\n        this.datasource = (datasourceId: string) => {\n            return new OnvoDatasource(datasourceId, apiKey, options);\n        };\n        this.automation = (automationId: string) => {\n            return new OnvoAutomation(automationId, apiKey, options);\n        };\n        this.widget = (widgetId: string) => {\n            return new OnvoWidget(widgetId, apiKey, options);\n        };\n\n        this.question = (questionId: string) => {\n            return new OnvoQuestion(questionId, apiKey, options);\n        };\n\n    }\n}\n"],"mappings":"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","names":["OpenAPIRegistry","extendZodWithOpenApi","z","registry","OpenAPIRegistry","MetadataItemZod","registry","z","OpenApiGeneratorV3","extendZodWithOpenApi","Constants","Table","__ensureFileIsEmitted","AccountZod","registry","z","z","extendZodWithOpenApi","z","DashboardSyncSettingsZod","registry","DEFAULT_SYNC_SETTINGS","DashboardSettingsZod","DashboardFilterZod","DashboardTabZod","DashboardMetaZod","DashboardZod","AutomationConditionZod","registry","z","AutomationZod","AutomationRunZod","extendZodWithOpenApi","z","LogType","MessageZod","registry","InviteZod","MemberZod","TeamZod","DataSourceZod","MetadataItemZod","EmbedUserZod","SubscriptionZod","SubscriptionPlanZod","APIKeyZod","WidgetZod","WidgetSuggestionZod","DashboardDatasourceZod","SessionZod","QuestionZod","IntegrationZod","IntegrationTableZod","LLMHostingTypeZod","LLMSettingsZod","SelfHostingSettingsZod","LogZod","generator","OpenApiGeneratorV3","OpenApiComponents","generateCodeVerifier","OAuth2Client","OAuth2Fetch","nanoid","BaseOauthClient","team","supabaseClient","id","credentials","OAuth2Client","OAuth2Fetch","data","error","config","token","state","codeVerifier","generateCodeVerifier","req","code","code_verifier","r","e","AirtableOauthClient","BaseOauthClient","team","supabaseClient","id","credentials","baseId","tableId","allRecords","offset","retries","url","output","backoff","resolve","a","obj","key","err","e","GoogleSheetsOauthClient","BaseOauthClient","team","supabaseClient","id","credentials","docId","sheetName","url","OauthClients","AirtableOauthClient","GoogleSheetsOauthClient","Pusher","OnvoBase","#apiKey","url","method","body","isForm","headers","response","data","onProgress","accepted","jobChannel","socketCfg","resolve","reject","isLocal","host","portStr","port","pusherConfig","pusher","channel","cleaned","settled","cleanup","state","forward","evt","timer","settleReject","settleResolve","val","err","status","e","error","apiKey","options","OnvoAccounts","OnvoBase","id","OnvoTeams","OnvoBase","id","body","accountId","teamData","team","e","OnvoEmbedUsers","OnvoBase","id","userId","userData","OnvoDatasources","OnvoBase","filters","id","body","OnvoAutomations","OnvoBase","filters","id","body","OnvoDashboards","OnvoBase","filters","url","params","queryString","e","id","body","OnvoDashboardDatasources","OnvoBase","#dashboardId","dashboardId","apiKey","options","datasourceId","datasourceIds","OnvoWidgetSuggestions","OnvoBase","#dashboardId","dashboardId","apiKey","options","id","OnvoDashboard","OnvoBase","#id","id","apiKey","options","OnvoDashboardDatasources","OnvoWidgetSuggestions","callback","queryParams","queryString","format","theme","tab","onProgress","prompt","OnvoEmbedUser","OnvoBase","#id","id","apiKey","options","OnvoDatasource","OnvoBase","#id","id","apiKey","options","callback","prompt","file","formData","OnvoQuestions","OnvoBase","filters","payload","id","body","OnvoAutomation","OnvoBase","#id","id","apiKey","options","onProgress","OnvoWidget","OnvoBase","#id","id","apiKey","options","format","theme","callback","props","params","queryString","messages","OnvoSessions","OnvoBase","filters","embed_user","parent_dashboard","parameters","OnvoWidgets","OnvoBase","filters","id","body","cache","OnvoQuestion","OnvoBase","#id","id","apiKey","options","content","onEvent","messageId","vote","reason","OnvoUtils","OnvoBase","file","formData","agent","onProgress","OnvoLogs","OnvoBase","payload","OnvoIntegrations","OnvoBase","id","data","OnvoIntegrationTables","OnvoBase","#integrationId","integrationId","apiKey","options","id","body","OnvoIntegration","OnvoBase","#id","id","apiKey","options","OnvoIntegrationTables","callback","Onvo","OnvoBase","apiKey","options","OnvoAccounts","OnvoTeams","OnvoEmbedUsers","OnvoDatasources","OnvoAutomations","OnvoDashboards","OnvoQuestions","OnvoSessions","OnvoWidgets","OnvoUtils","OnvoLogs","OnvoIntegrations","dashboardId","OnvoDashboard","integrationId","OnvoIntegration","embedUserId","OnvoEmbedUser","datasourceId","OnvoDatasource","automationId","OnvoAutomation","widgetId","OnvoWidget","questionId","OnvoQuestion"]}