export type WorkspaceConnectionCapability = "search" | "import" | "messages" | "meetings" | "crm" | "code" | "docs"; export type WorkspaceConnectionTemplateUse = "analytics" | "brain" | "calendar" | "clips" | "content" | "crm" | "design" | "dispatch" | "forms" | "mail" | "slides"; export type WorkspaceConnectionProviderId = "slack" | "github" | "figma" | "notion" | "gmail" | "google_drive" | "hubspot" | "salesforce" | "jira" | "sentry" | "granola" | "clips" | "generic"; export interface WorkspaceConnectionCredentialKey { key: string; label: string; description?: string; required?: boolean; } export interface WorkspaceConnectionProvider { id: WorkspaceConnectionProviderId; label: string; description: string; credentialKeys: readonly WorkspaceConnectionCredentialKey[]; 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"]; }, { 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", "dispatch"]; }, { 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", "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: "Google OAuth client ID"; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Google OAuth client secret"; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "messages"]; readonly recommendedTemplateUses: readonly ["mail", "brain", "dispatch"]; }, { 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: "Google OAuth client ID"; readonly required: true; }, { readonly key: "GOOGLE_CLIENT_SECRET"; readonly label: "Google OAuth client secret"; readonly required: true; }]; readonly capabilities: readonly ["search", "import", "docs"]; readonly recommendedTemplateUses: readonly ["brain", "content", "slides", "dispatch", "analytics"]; readonly oauth: { readonly provider: "google"; readonly authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth"; readonly tokenUrl: "https://oauth2.googleapis.com/token"; readonly scopes: readonly ["https://www.googleapis.com/auth/drive.file"]; }; }, { 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 ["oauth", "crm.objects.contacts.read", "crm.objects.companies.read", "crm.objects.deals.read", "crm.objects.tickets.read", "crm.schemas.contacts.read", "crm.schemas.companies.read", "crm.schemas.deals.read", "crm.schemas.tickets.read"]; }; 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"]; }, { 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: "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; //# sourceMappingURL=catalog.d.ts.map