export type WorkspaceConnectionCapability = "search" | "import" | "messages" | "meetings" | "crm" | "code" | "docs"; export type WorkspaceConnectionTemplateUse = "analytics" | "brain" | "calendar" | "clips" | "content" | "crm" | "design" | "dispatch" | "factory" | "forms" | "mail" | "slides" | "slides-2"; export type WorkspaceConnectionProviderId = "slack" | "github" | "figma" | "notion" | "gmail" | "google_calendar" | "google_drive" | "bigquery" | "google_docs" | "google_sheets" | "google_slides" | "hubspot" | "salesforce" | "jira" | "sentry" | "granola" | "clips" | "dbt" | "sigma" | "anthropic-managed-agents" | "generic"; export interface WorkspaceConnectionCredentialKey { key: string; label: string; description?: string; required?: boolean; } export interface WorkspaceConnectionConfigurationField { key: string; label: string; description?: string; required?: boolean; defaultValue?: string; } export interface WorkspaceConnectionProvider { id: WorkspaceConnectionProviderId; label: string; description: string; credentialKeys: readonly WorkspaceConnectionCredentialKey[]; configurationFields?: readonly WorkspaceConnectionConfigurationField[]; capabilities: readonly WorkspaceConnectionCapability[]; recommendedTemplateUses: readonly WorkspaceConnectionTemplateUse[]; oauth?: { provider: string; authorizationUrl: string; tokenUrl: string; refreshUrl?: string; scopes: readonly string[]; }; } export interface ListWorkspaceConnectionProvidersOptions { capability?: WorkspaceConnectionCapability; templateUse?: WorkspaceConnectionTemplateUse; providerOverrides?: readonly WorkspaceConnectionProvider[]; } export declare function defineWorkspaceConnectionProvider(provider: T): T; export declare const WORKSPACE_CONNECTION_PROVIDERS: readonly [{ readonly id: "slack"; readonly label: "Slack"; readonly description: "Workspace conversations and channel history for company memory, support workflows, and messaging automations."; readonly credentialKeys: readonly [{ readonly key: "SLACK_BOT_TOKEN"; readonly label: "Slack bot token (legacy)"; readonly description: "Legacy single-workspace fallback. For new messaging automations, connect Slack from Settings → Messaging instead."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "messages"]; readonly recommendedTemplateUses: readonly ["brain", "dispatch", "analytics", "factory"]; }, { readonly id: "github"; readonly label: "GitHub"; readonly description: "Repository, issue, pull request, and code context for product memory, engineering workflows, and analytics."; readonly credentialKeys: readonly [{ readonly key: "GITHUB_TOKEN"; readonly label: "GitHub token (fallback)"; readonly description: "Optional fine-grained token fallback. OAuth is preferred for new connections."; readonly required: false; }]; readonly oauth: { readonly provider: "github"; readonly authorizationUrl: "https://github.com/login/oauth/authorize"; readonly tokenUrl: "https://github.com/login/oauth/access_token"; readonly scopes: readonly ["repo", "read:org", "read:user", "user:email"]; }; readonly capabilities: readonly ["search", "import", "code", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "analytics", "content", "dispatch", "factory"]; }, { readonly id: "figma"; readonly label: "Figma"; readonly description: "Design files, frames, components, rendered previews, and library context for creative workflows."; readonly credentialKeys: readonly [{ readonly key: "FIGMA_ACCESS_TOKEN"; readonly label: "Figma personal access token (fallback)"; readonly description: "Optional fallback for local or individual use. Workspace OAuth is preferred."; readonly required: false; }]; readonly oauth: { readonly provider: "figma"; readonly authorizationUrl: "https://www.figma.com/oauth"; readonly tokenUrl: "https://api.figma.com/v1/oauth/token"; readonly refreshUrl: "https://api.figma.com/v1/oauth/token"; readonly scopes: readonly ["current_user:read", "file_content:read", "file_metadata:read", "projects:read"]; }; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "design", "slides", "slides-2", "content"]; }, { readonly id: "notion"; readonly label: "Notion"; readonly description: "Workspace docs, wikis, pages, and databases for knowledge capture and search."; readonly credentialKeys: readonly []; readonly oauth: { readonly provider: "notion"; readonly authorizationUrl: "https://api.notion.com/v1/oauth/authorize"; readonly tokenUrl: "https://api.notion.com/v1/oauth/token"; readonly refreshUrl: "https://api.notion.com/v1/oauth/token"; readonly scopes: readonly []; }; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "content", "dispatch"]; }, { readonly id: "gmail"; readonly label: "Gmail"; readonly description: "Mailbox messages and threads for search, triage, customer context, and agent replies."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "messages"]; readonly recommendedTemplateUses: readonly ["mail", "brain", "dispatch"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "google_calendar"; readonly label: "Google Calendar"; readonly description: "Calendars and events for scheduling, availability, reminders, and meeting workflows."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "meetings"]; readonly recommendedTemplateUses: readonly ["calendar", "brain", "dispatch", "mail"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "bigquery"; readonly label: "BigQuery"; readonly description: "BigQuery datasets and SQL jobs for analytics and data exploration."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search"]; readonly recommendedTemplateUses: readonly ["analytics"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "google_drive"; readonly label: "Google Drive"; readonly description: "Drive files, Docs, Sheets, and Slides for document search and import workflows."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "content", "slides", "slides-2", "dispatch", "analytics"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "google_docs"; readonly label: "Google Docs"; readonly description: "Google Docs files for source material, document search, and agent-assisted writing workflows."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "content", "slides", "slides-2", "dispatch"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "google_sheets"; readonly label: "Google Sheets"; readonly description: "Google Sheets workbooks for analysis, reporting, imports, and structured agent workflows."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["analytics", "brain", "content", "dispatch"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "google_slides"; readonly label: "Google Slides"; readonly description: "Google Slides presentations for reference imports, visual context, and presentation workflows."; readonly credentialKeys: readonly [{ readonly key: "GOOGLE_CLIENT_ID"; readonly label: "Managed Google OAuth client ID"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Managed Google OAuth client secret"; readonly description: "Resolved from the workspace's shared Google OAuth application. Users do not paste a key to connect a service."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "content", "slides", "slides-2", "dispatch"]; readonly oauth: { authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; tokenUrl: "https://oauth2.googleapis.com/token"; provider: string; scopes: readonly string[]; }; }, { readonly id: "hubspot"; readonly label: "HubSpot"; readonly description: "CRM records, companies, contacts, deals, and engagement history for customer-aware apps."; readonly credentialKeys: readonly [{ readonly key: "HUBSPOT_PRIVATE_APP_TOKEN"; readonly label: "HubSpot private app token (fallback)"; readonly description: "Optional private app token fallback. OAuth is preferred for new connections."; readonly required: false; }, { readonly key: "HUBSPOT_ACCESS_TOKEN"; readonly label: "HubSpot access token (fallback)"; readonly description: "Optional legacy access token fallback for existing HubSpot setups."; readonly required: false; }]; readonly oauth: { readonly provider: "hubspot"; readonly authorizationUrl: "https://app.hubspot.com/oauth/authorize"; readonly tokenUrl: "https://api.hubapi.com/oauth/v3/token"; readonly refreshUrl: "https://api.hubapi.com/oauth/v3/token"; readonly scopes: readonly []; }; readonly capabilities: readonly ["search", "import", "crm"]; readonly recommendedTemplateUses: readonly ["analytics", "brain", "crm", "mail", "dispatch"]; }, { readonly id: "salesforce"; readonly label: "Salesforce"; readonly description: "CRM accounts, contacts, opportunities, custom objects, and activity history for customer-aware apps."; readonly credentialKeys: readonly []; readonly oauth: { readonly provider: "salesforce"; readonly authorizationUrl: "https://login.salesforce.com/services/oauth2/authorize"; readonly tokenUrl: "https://login.salesforce.com/services/oauth2/token"; readonly refreshUrl: "https://login.salesforce.com/services/oauth2/token"; readonly scopes: readonly ["api", "refresh_token", "id"]; }; readonly capabilities: readonly ["search", "import", "crm"]; readonly recommendedTemplateUses: readonly ["analytics", "brain", "crm", "dispatch"]; }, { readonly id: "jira"; readonly label: "Jira Cloud"; readonly description: "Projects, issues, sprints, and delivery context for engineering analytics and product workflows."; readonly credentialKeys: readonly [{ readonly key: "JIRA_BASE_URL"; readonly label: "Jira base URL (fallback)"; readonly description: "Optional site URL for API-token fallback connections. OAuth connections discover their site automatically."; readonly required: false; }, { readonly key: "JIRA_USER_EMAIL"; readonly label: "Jira email (fallback)"; readonly description: "Optional Atlassian account email for API-token fallback connections."; readonly required: false; }, { readonly key: "JIRA_API_TOKEN"; readonly label: "Jira API token (fallback)"; readonly description: "Optional API token fallback for existing Jira Cloud setups. OAuth is preferred for new connections."; readonly required: false; }]; readonly oauth: { readonly provider: "jira"; readonly authorizationUrl: "https://auth.atlassian.com/authorize"; readonly tokenUrl: "https://auth.atlassian.com/oauth/token"; readonly refreshUrl: "https://auth.atlassian.com/oauth/token"; readonly scopes: readonly ["read:jira-work", "read:jira-user", "offline_access"]; }; readonly capabilities: readonly ["search", "import", "code", "docs"]; readonly recommendedTemplateUses: readonly ["analytics", "brain", "dispatch"]; }, { readonly id: "sentry"; readonly label: "Sentry"; readonly description: "Error tracking, performance issues, projects, and release context for engineering analytics."; readonly credentialKeys: readonly [{ readonly key: "SENTRY_AUTH_TOKEN"; readonly label: "Sentry auth token (fallback)"; readonly description: "Optional auth token fallback for self-hosted or local Sentry setups. OAuth is preferred for sentry.io."; readonly required: false; }, { readonly key: "SENTRY_SERVER_TOKEN"; readonly label: "Sentry server token (fallback)"; readonly description: "Optional server token fallback for existing Sentry deployments."; readonly required: false; }]; readonly oauth: { readonly provider: "sentry"; readonly authorizationUrl: "https://sentry.io/oauth/authorize/"; readonly tokenUrl: "https://sentry.io/oauth/token/"; readonly refreshUrl: "https://sentry.io/oauth/token/"; readonly scopes: readonly ["org:read", "project:read", "event:read", "team:read"]; }; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["analytics", "brain", "dispatch", "factory"]; }, { readonly id: "granola"; readonly label: "Granola"; readonly description: "Meeting notes and transcripts for company memory and follow-up workflows."; readonly credentialKeys: readonly [{ readonly key: "GRANOLA_API_KEY"; readonly label: "Granola API key"; readonly description: "API key for accessible team notes; templates should respect Granola's workspace visibility."; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "meetings", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "calendar", "dispatch"]; }, { readonly id: "clips"; readonly label: "Clips"; readonly description: "Agent-Native Clips exports and recordings for transcript import and searchable meeting context."; readonly credentialKeys: readonly []; readonly capabilities: readonly ["search", "import", "meetings"]; readonly recommendedTemplateUses: readonly ["brain", "clips"]; }, { readonly id: "sigma"; readonly label: "Sigma"; readonly description: "Read Sigma workbooks and reviewed dashboard examples for Analytics data discovery."; readonly credentialKeys: readonly [{ readonly key: "SIGMA_CLIENT_ID"; readonly label: "Sigma client ID"; readonly description: "Stored in the workspace vault and exchanged server-side for a short-lived API token."; readonly required: true; }, { readonly key: "SIGMA_CLIENT_SECRET"; readonly label: "Sigma client secret"; readonly description: "Stored in the workspace vault and exchanged server-side for a short-lived API token."; readonly required: true; }, { readonly key: "SIGMA_BASE_URL"; readonly label: "Sigma API base URL"; readonly description: "Optional cloud-region API origin. Defaults to the AWS API origin."; readonly required: false; }]; readonly oauth: { readonly provider: "sigma"; readonly authorizationUrl: "https://aws-api.sigmacomputing.com/mcp/authorize"; readonly tokenUrl: "https://aws-api.sigmacomputing.com/mcp/token"; readonly scopes: readonly ["api:access"]; }; readonly capabilities: readonly ["search"]; readonly recommendedTemplateUses: readonly ["analytics"]; }, { readonly id: "dbt"; readonly label: "dbt Semantic Layer"; readonly description: "Owner-defined dbt metrics and semantic models for governed Analytics queries."; readonly credentialKeys: readonly [{ readonly key: "DBT_SEMANTIC_LAYER_TOKEN"; readonly label: "dbt Semantic Layer token"; readonly description: "Optional read-only service token with Semantic Layer Only and Metadata Only permissions. Store the one-time token in the workspace vault."; readonly required: false; }]; readonly configurationFields: readonly [{ readonly key: "semanticLayerBaseUrl"; readonly label: "dbt Semantic Layer URL"; readonly description: "HTTPS GraphQL endpoint for this dbt account. The host must belong to dbt.com or getdbt.com."; readonly required: true; }, { readonly key: "semanticLayerEnvironmentId"; readonly label: "dbt environment ID"; readonly description: "Environment that contains the approved Semantic Layer definitions."; readonly required: true; }]; readonly capabilities: readonly ["search"]; readonly recommendedTemplateUses: readonly ["analytics"]; }, { readonly id: "anthropic-managed-agents"; readonly label: "Anthropic Managed Agents"; readonly description: "Hosted Anthropic agents that run their own tools and context while Agent-Native keeps the app workflow and approvals."; readonly credentialKeys: readonly [{ readonly key: "ANTHROPIC_API_KEY"; readonly label: "Anthropic API key"; readonly description: "API key for the Anthropic Managed Agents API. Store it in the workspace vault."; readonly required: true; }]; readonly capabilities: readonly ["code"]; readonly recommendedTemplateUses: readonly ["brain", "dispatch", "factory"]; }, { readonly id: "generic"; readonly label: "Generic"; readonly description: "Custom webhooks, CSV exports, transcript drops, and one-off sources that do not need a first-class provider yet."; readonly credentialKeys: readonly []; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "analytics", "content", "dispatch", "forms"]; }]; export declare function listWorkspaceConnectionProviders(options?: ListWorkspaceConnectionProvidersOptions): WorkspaceConnectionProvider[]; export declare function mergeWorkspaceConnectionProviders(overrides?: readonly WorkspaceConnectionProvider[]): WorkspaceConnectionProvider[]; export declare function getWorkspaceConnectionProvider(id: string, overrides?: readonly WorkspaceConnectionProvider[]): WorkspaceConnectionProvider | undefined; export declare function isWorkspaceConnectionProviderId(id: string): id is WorkspaceConnectionProviderId; export declare function listWorkspaceConnectionProvidersForTemplate(templateUse: WorkspaceConnectionTemplateUse, providerOverrides?: readonly WorkspaceConnectionProvider[]): WorkspaceConnectionProvider[]; export declare function listWorkspaceConnectionProvidersForCapability(capability: WorkspaceConnectionCapability, providerOverrides?: readonly WorkspaceConnectionProvider[]): WorkspaceConnectionProvider[]; export declare function workspaceConnectionProviderSupports(providerOrId: WorkspaceConnectionProvider | string, capability: WorkspaceConnectionCapability): boolean;