From af98c5ae76a88866f5b99f8b2a6a758c9399f231 Mon Sep 17 00:00:00 2001 From: Wenxi Onyx Date: Mon, 11 Aug 2025 17:14:32 -0700 Subject: [PATCH 1/6] Add popular connectors sections and cleanup connectors page --- backend/onyx/configs/app_configs.py | 3 + backend/onyx/configs/constants.py | 3 - backend/onyx/server/settings/models.py | 3 + backend/onyx/server/settings/store.py | 2 + web/src/app/admin/add-connector/page.tsx | 85 +++-- web/src/app/admin/settings/interfaces.ts | 3 + web/src/lib/search/interfaces.ts | 7 +- web/src/lib/sources.ts | 381 ++++++++++++----------- 8 files changed, 276 insertions(+), 211 deletions(-) diff --git a/backend/onyx/configs/app_configs.py b/backend/onyx/configs/app_configs.py index 92a15bde6fc..a2c53752258 100644 --- a/backend/onyx/configs/app_configs.py +++ b/backend/onyx/configs/app_configs.py @@ -38,6 +38,9 @@ # Controls whether users can use User Knowledge (personal documents) in assistants DISABLE_USER_KNOWLEDGE = os.environ.get("DISABLE_USER_KNOWLEDGE", "").lower() == "true" +# If set to true, will show extra/uncommon connectors in the "Other" category +SHOW_EXTRA_CONNECTORS = os.environ.get("SHOW_EXTRA_CONNECTORS", "").lower() == "true" + # Controls whether to allow admin query history reports with: # 1. associated user emails # 2. anonymized user emails diff --git a/backend/onyx/configs/constants.py b/backend/onyx/configs/constants.py index b80cabe92dc..77190ee6468 100644 --- a/backend/onyx/configs/constants.py +++ b/backend/onyx/configs/constants.py @@ -219,9 +219,6 @@ class BlobType(str, Enum): GOOGLE_CLOUD_STORAGE = "google_cloud_storage" OCI_STORAGE = "oci_storage" - # Special case, for internet search - NOT_APPLICABLE = "not_applicable" - class DocumentIndexType(str, Enum): COMBINED = "combined" # Vespa diff --git a/backend/onyx/server/settings/models.py b/backend/onyx/server/settings/models.py index 9368ed91e50..90a1f7a7143 100644 --- a/backend/onyx/server/settings/models.py +++ b/backend/onyx/server/settings/models.py @@ -62,6 +62,9 @@ class Settings(BaseModel): # User Knowledge settings user_knowledge_enabled: bool | None = True + # Connector settings + show_extra_connectors: bool | None = True + class UserSettings(Settings): notifications: list[Notification] diff --git a/backend/onyx/server/settings/store.py b/backend/onyx/server/settings/store.py index a1dc319ed35..e93a4f82f93 100644 --- a/backend/onyx/server/settings/store.py +++ b/backend/onyx/server/settings/store.py @@ -1,5 +1,6 @@ from onyx.configs.app_configs import DISABLE_USER_KNOWLEDGE from onyx.configs.app_configs import ONYX_QUERY_HISTORY_TYPE +from onyx.configs.app_configs import SHOW_EXTRA_CONNECTORS from onyx.configs.constants import KV_SETTINGS_KEY from onyx.configs.constants import OnyxRedisLocks from onyx.key_value_store.factory import get_kv_store @@ -53,6 +54,7 @@ def load_settings() -> Settings: if DISABLE_USER_KNOWLEDGE: settings.user_knowledge_enabled = False + settings.show_extra_connectors = SHOW_EXTRA_CONNECTORS return settings diff --git a/web/src/app/admin/add-connector/page.tsx b/web/src/app/admin/add-connector/page.tsx index 8f9980d83f2..60351e25d29 100644 --- a/web/src/app/admin/add-connector/page.tsx +++ b/web/src/app/admin/add-connector/page.tsx @@ -6,8 +6,14 @@ import { listSourceMetadata } from "@/lib/sources"; import Title from "@/components/ui/title"; import { Button } from "@/components/ui/button"; import Link from "next/link"; -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; - +import { + useCallback, + useContext, + useEffect, + useMemo, + useRef, + useState, +} from "react"; import { Tooltip, TooltipContent, @@ -24,6 +30,7 @@ import useSWR from "swr"; import { errorHandlingFetcher } from "@/lib/fetcher"; import { buildSimilarCredentialInfoURL } from "@/app/admin/connector/[ccPairId]/lib"; import { Credential } from "@/lib/connectors/credentials"; +import { SettingsContext } from "@/components/settings/SettingsProvider"; import SourceTile from "@/components/SourceTile"; function SourceTileTooltipWrapper({ @@ -140,6 +147,7 @@ export default function Page() { const [searchTerm, setSearchTerm] = useState(""); const { data: federatedConnectors } = useFederatedConnectors(); + const settings = useContext(SettingsContext); // Fetch Slack credentials to determine navigation behavior const { data: slackCredentials } = useSWR[]>( @@ -167,9 +175,19 @@ export default function Page() { [searchTerm] ); + const popularSources = useMemo(() => { + const filtered = filterSources(sources); + return sources.filter( + (source) => + source.isPopular && + (filtered.includes(source) || + source.displayName.toLowerCase().includes(searchTerm.toLowerCase())) + ); + }, [sources, filterSources, searchTerm]); + const categorizedSources = useMemo(() => { const filtered = filterSources(sources); - return Object.values(SourceCategory).reduce( + const categories = Object.values(SourceCategory).reduce( (acc, category) => { acc[category] = sources.filter( (source) => @@ -181,7 +199,23 @@ export default function Page() { }, {} as Record ); - }, [sources, filterSources, searchTerm]); + // Filter out the "Other" category if show_extra_connectors is false + if (settings?.settings?.show_extra_connectors === false) { + const filteredCategories = Object.entries(categories).filter( + ([category]) => category !== SourceCategory.Other + ); + return Object.fromEntries(filteredCategories) as Record< + SourceCategory, + SourceMetadata[] + >; + } + return categories; + }, [ + sources, + filterSources, + searchTerm, + settings?.settings?.show_extra_connectors, + ]); const handleKeyPress = (e: React.KeyboardEvent) => { if (e.key === "Enter") { @@ -236,6 +270,25 @@ export default function Page() { className="ml-1 w-96 h-9 flex-none rounded-md border border-border bg-background-50 px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring" /> + {popularSources.length > 0 && ( +
+
+ Popular +
+
+ {popularSources.map((source, sourceInd) => ( + 0 && sourceInd == 0} + key={source.internalName} + sourceMetadata={source} + federatedConnectors={federatedConnectors} + slackCredentials={slackCredentials} + /> + ))} +
+
+ )} + {Object.entries(categorizedSources) .filter(([_, sources]) => sources.length > 0) .map(([category, sources], categoryInd) => ( @@ -243,7 +296,6 @@ export default function Page() {
{category}
-

{getCategoryDescription(category as SourceCategory)}

{sources.map((source, sourceInd) => ( ); } - -function getCategoryDescription(category: SourceCategory): string { - switch (category) { - case SourceCategory.Messaging: - return "Integrate with messaging and communication platforms."; - case SourceCategory.ProjectManagement: - return "Link to project management and task tracking tools."; - case SourceCategory.CustomerSupport: - return "Connect to customer support and helpdesk systems."; - case SourceCategory.CustomerRelationshipManagement: - return "Integrate with customer relationship management platforms."; - case SourceCategory.CodeRepository: - return "Integrate with code repositories and version control systems."; - case SourceCategory.Storage: - return "Connect to cloud storage and file hosting services."; - case SourceCategory.Wiki: - return "Link to wiki and knowledge base platforms."; - case SourceCategory.Other: - return "Connect to other miscellaneous knowledge sources."; - default: - return "Connect to various knowledge sources."; - } -} diff --git a/web/src/app/admin/settings/interfaces.ts b/web/src/app/admin/settings/interfaces.ts index 40dc588340c..6adfd2cdc79 100644 --- a/web/src/app/admin/settings/interfaces.ts +++ b/web/src/app/admin/settings/interfaces.ts @@ -30,6 +30,9 @@ export interface Settings { // User Knowledge settings user_knowledge_enabled?: boolean; + + // Connector settings + show_extra_connectors?: boolean; } export enum NotificationType { diff --git a/web/src/lib/search/interfaces.ts b/web/src/lib/search/interfaces.ts index 1fde64f8d9e..e6a328e69e2 100644 --- a/web/src/lib/search/interfaces.ts +++ b/web/src/lib/search/interfaces.ts @@ -162,10 +162,10 @@ export interface SearchResponse { } export enum SourceCategory { - Storage = "Storage", - Wiki = "Wiki", + Storage = "Cloud Storage", + Wiki = "Knowledge Base & Wiki", CustomerSupport = "Customer Support", - CustomerRelationshipManagement = "Customer Relationship Management", + SalesAndMarketing = "Sales & Marketing", Messaging = "Messaging", ProjectManagement = "Project Management", CodeRepository = "Code Repository", @@ -179,6 +179,7 @@ export interface SourceMetadata { shortDescription?: string; internalName: ValidSources; adminUrl: string; + isPopular?: boolean; oauthSupported?: boolean; federated?: boolean; federatedTooltip?: string; diff --git a/web/src/lib/sources.ts b/web/src/lib/sources.ts index 61c622446bb..b6a4f2b89aa 100644 --- a/web/src/lib/sources.ts +++ b/web/src/lib/sources.ts @@ -54,6 +54,7 @@ interface PartialSourceMetadata { icon: React.FC<{ size?: number; className?: string }>; displayName: string; category: SourceCategory; + isPopular?: boolean; docs?: string; oauthSupported?: boolean; federated?: boolean; @@ -71,6 +72,7 @@ const slackMetadata = { icon: ColorSlackIcon, displayName: "Slack", category: SourceCategory.Messaging, + isPopular: true, docs: "https://docs.onyx.app/connectors/slack", oauthSupported: true, federated: true, @@ -81,31 +83,40 @@ const slackMetadata = { }; export const SOURCE_METADATA_MAP: SourceMap = { + // Keep web and file at the top web: { icon: GlobeIcon2, displayName: "Web", category: SourceCategory.Other, docs: "https://docs.onyx.app/connectors/web", + isPopular: true, }, file: { icon: FileIcon2, displayName: "File", - category: SourceCategory.Storage, + category: SourceCategory.Other, docs: "https://docs.onyx.app/connectors/file", + isPopular: true, }, - slack: slackMetadata, - federated_slack: slackMetadata, - discord: { - icon: ColorDiscordIcon, - displayName: "Discord", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/discord", + + // Cloud Storage + dropbox: { + icon: DropboxIcon, + displayName: "Dropbox", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/dropbox", }, - gmail: { - icon: GmailIcon, - displayName: "Gmail", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/gmail/overview", + egnyte: { + icon: EgnyteIcon, + displayName: "Egnyte", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/egnyte", + }, + google_cloud_storage: { + icon: GoogleStorageIcon, + displayName: "Google Storage", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/google_storage", }, google_drive: { icon: GoogleDriveIcon, @@ -113,12 +124,41 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Storage, docs: "https://docs.onyx.app/connectors/google_drive/overview", oauthSupported: true, + isPopular: true, + }, + oci_storage: { + icon: OCIStorageIcon, + displayName: "Oracle Storage", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/oci_storage", + }, + r2: { + icon: R2Icon, + displayName: "R2", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/r2", + }, + s3: { + icon: S3Icon, + displayName: "S3", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/s3", + }, + sharepoint: { + icon: SharepointIcon, + displayName: "Sharepoint", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/sharepoint", + isPopular: true, }, + + // Code Repository github: { icon: GithubIcon, displayName: "Github", category: SourceCategory.CodeRepository, docs: "https://docs.onyx.app/connectors/github", + isPopular: true, }, gitlab: { icon: GitlabIcon, @@ -126,72 +166,42 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.CodeRepository, docs: "https://docs.onyx.app/connectors/gitlab", }, - confluence: { - icon: ConfluenceIcon, - displayName: "Confluence", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/confluence", - oauthSupported: true, - }, - jira: { - icon: JiraIcon, - displayName: "Jira", - category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/jira", - }, - notion: { - icon: NotionIcon, - displayName: "Notion", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/notion", + + // Customer Support + freshdesk: { + icon: FreshdeskIcon, + displayName: "Freshdesk", + category: SourceCategory.CustomerSupport, + docs: "https://docs.onyx.app/connectors/freshdesk", }, zendesk: { icon: ZendeskIcon, displayName: "Zendesk", category: SourceCategory.CustomerSupport, docs: "https://docs.onyx.app/connectors/zendesk", + isPopular: true, }, - gong: { - icon: GongIcon, - displayName: "Gong", - category: SourceCategory.Other, - docs: "https://docs.onyx.app/connectors/gong", - }, - linear: { - icon: LinearIcon, - displayName: "Linear", - category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/linear", - }, - productboard: { - icon: ProductboardIcon, - displayName: "Productboard", - category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/productboard", - }, - slab: { - icon: SlabIcon, - displayName: "Slab", + + // Knowledge Base & Wiki + axero: { + icon: AxeroIcon, + displayName: "Axero", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/slab", - }, - zulip: { - icon: ZulipIcon, - displayName: "Zulip", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/zulip", + docs: "https://docs.onyx.app/connectors/axero", }, - guru: { - icon: GuruIcon, - displayName: "Guru", + bookstack: { + icon: BookstackIcon, + displayName: "BookStack", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/guru", + docs: "https://docs.onyx.app/connectors/bookstack", }, - hubspot: { - icon: HubSpotIcon, - displayName: "HubSpot", - category: SourceCategory.CustomerRelationshipManagement, - docs: "https://docs.onyx.app/connectors/hubspot", + confluence: { + icon: ConfluenceIcon, + displayName: "Confluence", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/confluence", + oauthSupported: true, + isPopular: true, }, document360: { icon: Document360Icon, @@ -199,11 +209,11 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/document360", }, - bookstack: { - icon: BookstackIcon, - displayName: "BookStack", + gitbook: { + icon: GitbookIcon, + displayName: "GitBook", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/bookstack", + docs: "https://docs.onyx.app/connectors/gitbook", }, google_sites: { icon: GoogleSitesIcon, @@ -211,34 +221,49 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/google_sites", }, - loopio: { - icon: LoopioIcon, - displayName: "Loopio", - category: SourceCategory.Other, + guru: { + icon: GuruIcon, + displayName: "Guru", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/guru", }, - dropbox: { - icon: DropboxIcon, - displayName: "Dropbox", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/dropbox", + highspot: { + icon: HighspotIcon, + displayName: "Highspot", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/highspot", }, - salesforce: { - icon: SalesforceIcon, - displayName: "Salesforce", - category: SourceCategory.CustomerRelationshipManagement, - docs: "https://docs.onyx.app/connectors/salesforce", + mediawiki: { + icon: MediaWikiIcon, + displayName: "MediaWiki", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/mediawiki", }, - sharepoint: { - icon: SharepointIcon, - displayName: "Sharepoint", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/sharepoint", + notion: { + icon: NotionIcon, + displayName: "Notion", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/notion", }, - teams: { - icon: TeamsIcon, - displayName: "Teams", + slab: { + icon: SlabIcon, + displayName: "Slab", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/slab", + }, + wikipedia: { + icon: WikipediaIcon, + displayName: "Wikipedia", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/wikipedia", + }, + + // Messaging + discord: { + icon: ColorDiscordIcon, + displayName: "Discord", category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/teams", + docs: "https://docs.onyx.app/connectors/discord", }, discourse: { icon: DiscourseIcon, @@ -246,17 +271,43 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Messaging, docs: "https://docs.onyx.app/connectors/discourse", }, - axero: { - icon: AxeroIcon, - displayName: "Axero", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/axero", + gmail: { + icon: GmailIcon, + displayName: "Gmail", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/gmail/overview", }, - wikipedia: { - icon: WikipediaIcon, - displayName: "Wikipedia", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/wikipedia", + imap: { + icon: EmailIcon, + displayName: "Email", + category: SourceCategory.Messaging, + }, + slack: slackMetadata, + federated_slack: slackMetadata, + teams: { + icon: TeamsIcon, + displayName: "Teams", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/teams", + }, + xenforo: { + icon: XenforoIcon, + displayName: "Xenforo", + category: SourceCategory.Messaging, + }, + zulip: { + icon: ZulipIcon, + displayName: "Zulip", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/zulip", + }, + + // Project Management + airtable: { + icon: AirtableIcon, + displayName: "Airtable", + category: SourceCategory.ProjectManagement, + docs: "https://docs.onyx.app/connectors/airtable", }, asana: { icon: AsanaIcon, @@ -264,102 +315,78 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.ProjectManagement, docs: "https://docs.onyx.app/connectors/asana", }, - mediawiki: { - icon: MediaWikiIcon, - displayName: "MediaWiki", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/mediawiki", - }, clickup: { icon: ClickupIcon, displayName: "Clickup", category: SourceCategory.ProjectManagement, docs: "https://docs.onyx.app/connectors/clickup", }, - s3: { - icon: S3Icon, - displayName: "S3", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/s3", - }, - r2: { - icon: R2Icon, - displayName: "R2", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/r2", - }, - oci_storage: { - icon: OCIStorageIcon, - displayName: "Oracle Storage", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/oci_storage", - }, - google_cloud_storage: { - icon: GoogleStorageIcon, - displayName: "Google Storage", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/google_storage", - }, - xenforo: { - icon: XenforoIcon, - displayName: "Xenforo", - category: SourceCategory.Messaging, + jira: { + icon: JiraIcon, + displayName: "Jira", + category: SourceCategory.ProjectManagement, + docs: "https://docs.onyx.app/connectors/jira", + isPopular: true, }, - ingestion_api: { - icon: GlobeIcon, - displayName: "Ingestion", - category: SourceCategory.Other, + linear: { + icon: LinearIcon, + displayName: "Linear", + category: SourceCategory.ProjectManagement, + docs: "https://docs.onyx.app/connectors/linear", }, - freshdesk: { - icon: FreshdeskIcon, - displayName: "Freshdesk", - category: SourceCategory.CustomerSupport, - docs: "https://docs.onyx.app/connectors/freshdesk", + productboard: { + icon: ProductboardIcon, + displayName: "Productboard", + category: SourceCategory.ProjectManagement, + docs: "https://docs.onyx.app/connectors/productboard", }, + + // Sales & Marketing fireflies: { icon: FirefliesIcon, displayName: "Fireflies", - category: SourceCategory.Other, + category: SourceCategory.SalesAndMarketing, docs: "https://docs.onyx.app/connectors/fireflies", }, - egnyte: { - icon: EgnyteIcon, - displayName: "Egnyte", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/egnyte", + gong: { + icon: GongIcon, + displayName: "Gong", + category: SourceCategory.SalesAndMarketing, + docs: "https://docs.onyx.app/connectors/gong", + isPopular: true, }, - airtable: { - icon: AirtableIcon, - displayName: "Airtable", - category: SourceCategory.Other, - docs: "https://docs.onyx.app/connectors/airtable", + hubspot: { + icon: HubSpotIcon, + displayName: "HubSpot", + category: SourceCategory.SalesAndMarketing, + docs: "https://docs.onyx.app/connectors/hubspot", }, - gitbook: { - icon: GitbookIcon, - displayName: "GitBook", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/gitbook", + loopio: { + icon: LoopioIcon, + displayName: "Loopio", + category: SourceCategory.SalesAndMarketing, }, - highspot: { - icon: HighspotIcon, - displayName: "Highspot", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/highspot", + salesforce: { + icon: SalesforceIcon, + displayName: "Salesforce", + category: SourceCategory.SalesAndMarketing, + docs: "https://docs.onyx.app/connectors/salesforce", + isPopular: true, }, - imap: { - icon: EmailIcon, - displayName: "Email", - category: SourceCategory.Messaging, + + // Other + ingestion_api: { + icon: GlobeIcon, + displayName: "Ingestion", + category: SourceCategory.Other, }, - // currently used for the Internet Search tool docs, which is why - // a globe is used + + // Placeholder (non-null default) not_applicable: { icon: GlobeIcon, displayName: "Not Applicable", category: SourceCategory.Other, }, - - // Just so integration tests don't crash the UI mock_connector: { icon: GlobeIcon, displayName: "Mock Connector", From 80c0b14bfe0278276d750c3addcc426a4796afb8 Mon Sep 17 00:00:00 2001 From: Wenxi Onyx Date: Mon, 11 Aug 2025 17:43:26 -0700 Subject: [PATCH 2/6] Add other connectors env var --- deployment/docker_compose/docker-compose.dev.yml | 3 +++ deployment/docker_compose/docker-compose.gpu-dev.yml | 3 +++ deployment/docker_compose/docker-compose.multitenant-dev.yml | 4 ++++ deployment/docker_compose/env.prod.template | 4 ++++ web/src/app/admin/add-connector/page.tsx | 4 ++-- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/deployment/docker_compose/docker-compose.dev.yml b/deployment/docker_compose/docker-compose.dev.yml index bc073f2fe12..5a26235e4a4 100644 --- a/deployment/docker_compose/docker-compose.dev.yml +++ b/deployment/docker_compose/docker-compose.dev.yml @@ -120,6 +120,9 @@ services: # Chat Configs - HARD_DELETE_CHATS=${HARD_DELETE_CHATS:-} + # Show extra/uncommon connectors + - SHOW_EXTRA_CONNECTORS=${SHOW_EXTRA_CONNECTORS:-true} + # Enables the use of bedrock models or IAM Auth - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-} diff --git a/deployment/docker_compose/docker-compose.gpu-dev.yml b/deployment/docker_compose/docker-compose.gpu-dev.yml index 30ad9cc4597..acbae3e0404 100644 --- a/deployment/docker_compose/docker-compose.gpu-dev.yml +++ b/deployment/docker_compose/docker-compose.gpu-dev.yml @@ -97,6 +97,9 @@ services: # Chat Configs - HARD_DELETE_CHATS=${HARD_DELETE_CHATS:-} + + # Show extra/uncommon connectors + - SHOW_EXTRA_CONNECTORS=${SHOW_EXTRA_CONNECTORS:-true} # Vespa Language Forcing # See: https://docs.vespa.ai/en/linguistics.html diff --git a/deployment/docker_compose/docker-compose.multitenant-dev.yml b/deployment/docker_compose/docker-compose.multitenant-dev.yml index 2284f7ce009..2951bca2ccd 100644 --- a/deployment/docker_compose/docker-compose.multitenant-dev.yml +++ b/deployment/docker_compose/docker-compose.multitenant-dev.yml @@ -106,6 +106,10 @@ services: - SENTRY_DSN=${SENTRY_DSN:-} # Chat Configs - HARD_DELETE_CHATS=${HARD_DELETE_CHATS:-} + + # Show extra/uncommon connectors + - SHOW_EXTRA_CONNECTORS=${SHOW_EXTRA_CONNECTORS:-true} + # Enables the use of bedrock models or IAM Auth - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-} diff --git a/deployment/docker_compose/env.prod.template b/deployment/docker_compose/env.prod.template index a4e8856dfe1..83995081899 100644 --- a/deployment/docker_compose/env.prod.template +++ b/deployment/docker_compose/env.prod.template @@ -65,3 +65,7 @@ DB_READONLY_PASSWORD=password # If setting the vespa language is required, set this ('en', 'de', etc.). # See: https://docs.vespa.ai/en/linguistics.html #VESPA_LANGUAGE_OVERRIDE= + +# Show extra/uncommon connectors +# See https://docs.onyx.app for a full list of connectors +SHOW_EXTRA_CONNECTORS=False \ No newline at end of file diff --git a/web/src/app/admin/add-connector/page.tsx b/web/src/app/admin/add-connector/page.tsx index 60351e25d29..c0c40e2087c 100644 --- a/web/src/app/admin/add-connector/page.tsx +++ b/web/src/app/admin/add-connector/page.tsx @@ -270,7 +270,7 @@ export default function Page() { className="ml-1 w-96 h-9 flex-none rounded-md border border-border bg-background-50 px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring" /> - {popularSources.length > 0 && ( + {popularSources.length > 0 && !searchTerm && (
Popular @@ -278,7 +278,7 @@ export default function Page() {
{popularSources.map((source, sourceInd) => ( 0 && sourceInd == 0} + preSelect={false} key={source.internalName} sourceMetadata={source} federatedConnectors={federatedConnectors} From ffa5b4fb81c48c19a732e10554ec9f8e6f01fe53 Mon Sep 17 00:00:00 2001 From: Wenxi Onyx Date: Mon, 11 Aug 2025 17:44:30 -0700 Subject: [PATCH 3/6] other connectors env var to vscode env template --- .vscode/env_template.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.vscode/env_template.txt b/.vscode/env_template.txt index dd5417bbe4d..b0d75759af7 100644 --- a/.vscode/env_template.txt +++ b/.vscode/env_template.txt @@ -65,3 +65,6 @@ S3_ENDPOINT_URL=http://localhost:9004 S3_FILE_STORE_BUCKET_NAME=onyx-file-store-bucket S3_AWS_ACCESS_KEY_ID=minioadmin S3_AWS_SECRET_ACCESS_KEY=minioadmin + +# Show extra/uncommon connectors +SHOW_EXTRA_CONNECTORS=True \ No newline at end of file From ed46fceb2f3ea90e3a9db117e4fd4c55b6b7515b Mon Sep 17 00:00:00 2001 From: Wenxi Onyx Date: Mon, 11 Aug 2025 19:07:04 -0700 Subject: [PATCH 4/6] update playwright tests --- web/src/app/admin/add-connector/page.tsx | 2 +- web/tests/e2e/chromaticSnapshots.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/app/admin/add-connector/page.tsx b/web/src/app/admin/add-connector/page.tsx index c0c40e2087c..2d076ef03f4 100644 --- a/web/src/app/admin/add-connector/page.tsx +++ b/web/src/app/admin/add-connector/page.tsx @@ -276,7 +276,7 @@ export default function Page() { Popular
- {popularSources.map((source, sourceInd) => ( + {popularSources.map((source) => ( Date: Tue, 12 Aug 2025 10:58:09 -0700 Subject: [PATCH 5/6] sort by popuarlity --- web/src/lib/search/interfaces.ts | 4 +- web/src/lib/sources.ts | 309 +++++++++++++++---------------- 2 files changed, 156 insertions(+), 157 deletions(-) diff --git a/web/src/lib/search/interfaces.ts b/web/src/lib/search/interfaces.ts index e6a328e69e2..cfc2a439ad7 100644 --- a/web/src/lib/search/interfaces.ts +++ b/web/src/lib/search/interfaces.ts @@ -164,10 +164,10 @@ export interface SearchResponse { export enum SourceCategory { Storage = "Cloud Storage", Wiki = "Knowledge Base & Wiki", - CustomerSupport = "Customer Support", - SalesAndMarketing = "Sales & Marketing", Messaging = "Messaging", ProjectManagement = "Project Management", + SalesAndMarketing = "Sales & Marketing", + CustomerSupport = "Customer Support", CodeRepository = "Code Repository", Other = "Other", } diff --git a/web/src/lib/sources.ts b/web/src/lib/sources.ts index b6a4f2b89aa..0483eaed073 100644 --- a/web/src/lib/sources.ts +++ b/web/src/lib/sources.ts @@ -83,34 +83,14 @@ const slackMetadata = { }; export const SOURCE_METADATA_MAP: SourceMap = { - // Keep web and file at the top - web: { - icon: GlobeIcon2, - displayName: "Web", - category: SourceCategory.Other, - docs: "https://docs.onyx.app/connectors/web", - isPopular: true, - }, - file: { - icon: FileIcon2, - displayName: "File", - category: SourceCategory.Other, - docs: "https://docs.onyx.app/connectors/file", - isPopular: true, - }, - // Cloud Storage - dropbox: { - icon: DropboxIcon, - displayName: "Dropbox", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/dropbox", - }, - egnyte: { - icon: EgnyteIcon, - displayName: "Egnyte", + google_drive: { + icon: GoogleDriveIcon, + displayName: "Google Drive", category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/egnyte", + docs: "https://docs.onyx.app/connectors/google_drive/overview", + oauthSupported: true, + isPopular: true, }, google_cloud_storage: { icon: GoogleStorageIcon, @@ -118,19 +98,18 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Storage, docs: "https://docs.onyx.app/connectors/google_storage", }, - google_drive: { - icon: GoogleDriveIcon, - displayName: "Google Drive", + sharepoint: { + icon: SharepointIcon, + displayName: "Sharepoint", category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/google_drive/overview", - oauthSupported: true, + docs: "https://docs.onyx.app/connectors/sharepoint", isPopular: true, }, - oci_storage: { - icon: OCIStorageIcon, - displayName: "Oracle Storage", + s3: { + icon: S3Icon, + displayName: "S3", category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/oci_storage", + docs: "https://docs.onyx.app/connectors/s3", }, r2: { icon: R2Icon, @@ -138,63 +117,26 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Storage, docs: "https://docs.onyx.app/connectors/r2", }, - s3: { - icon: S3Icon, - displayName: "S3", + egnyte: { + icon: EgnyteIcon, + displayName: "Egnyte", category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/s3", + docs: "https://docs.onyx.app/connectors/egnyte", }, - sharepoint: { - icon: SharepointIcon, - displayName: "Sharepoint", + dropbox: { + icon: DropboxIcon, + displayName: "Dropbox", category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/sharepoint", - isPopular: true, - }, - - // Code Repository - github: { - icon: GithubIcon, - displayName: "Github", - category: SourceCategory.CodeRepository, - docs: "https://docs.onyx.app/connectors/github", - isPopular: true, - }, - gitlab: { - icon: GitlabIcon, - displayName: "Gitlab", - category: SourceCategory.CodeRepository, - docs: "https://docs.onyx.app/connectors/gitlab", - }, - - // Customer Support - freshdesk: { - icon: FreshdeskIcon, - displayName: "Freshdesk", - category: SourceCategory.CustomerSupport, - docs: "https://docs.onyx.app/connectors/freshdesk", + docs: "https://docs.onyx.app/connectors/dropbox", }, - zendesk: { - icon: ZendeskIcon, - displayName: "Zendesk", - category: SourceCategory.CustomerSupport, - docs: "https://docs.onyx.app/connectors/zendesk", - isPopular: true, + oci_storage: { + icon: OCIStorageIcon, + displayName: "Oracle Storage", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/oci_storage", }, // Knowledge Base & Wiki - axero: { - icon: AxeroIcon, - displayName: "Axero", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/axero", - }, - bookstack: { - icon: BookstackIcon, - displayName: "BookStack", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/bookstack", - }, confluence: { icon: ConfluenceIcon, displayName: "Confluence", @@ -203,17 +145,11 @@ export const SOURCE_METADATA_MAP: SourceMap = { oauthSupported: true, isPopular: true, }, - document360: { - icon: Document360Icon, - displayName: "Document360", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/document360", - }, - gitbook: { - icon: GitbookIcon, - displayName: "GitBook", + notion: { + icon: NotionIcon, + displayName: "Notion", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/gitbook", + docs: "https://docs.onyx.app/connectors/notion", }, google_sites: { icon: GoogleSitesIcon, @@ -221,11 +157,17 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/google_sites", }, - guru: { - icon: GuruIcon, - displayName: "Guru", + mediawiki: { + icon: MediaWikiIcon, + displayName: "MediaWiki", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/guru", + docs: "https://docs.onyx.app/connectors/mediawiki", + }, + gitbook: { + icon: GitbookIcon, + displayName: "GitBook", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/gitbook", }, highspot: { icon: HighspotIcon, @@ -233,17 +175,11 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/highspot", }, - mediawiki: { - icon: MediaWikiIcon, - displayName: "MediaWiki", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/mediawiki", - }, - notion: { - icon: NotionIcon, - displayName: "Notion", + guru: { + icon: GuruIcon, + displayName: "Guru", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/notion", + docs: "https://docs.onyx.app/connectors/guru", }, slab: { icon: SlabIcon, @@ -251,6 +187,24 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/slab", }, + document360: { + icon: Document360Icon, + displayName: "Document360", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/document360", + }, + bookstack: { + icon: BookstackIcon, + displayName: "BookStack", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/bookstack", + }, + axero: { + icon: AxeroIcon, + displayName: "Axero", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/axero", + }, wikipedia: { icon: WikipediaIcon, displayName: "Wikipedia", @@ -259,36 +213,36 @@ export const SOURCE_METADATA_MAP: SourceMap = { }, // Messaging - discord: { - icon: ColorDiscordIcon, - displayName: "Discord", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/discord", - }, - discourse: { - icon: DiscourseIcon, - displayName: "Discourse", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/discourse", - }, gmail: { icon: GmailIcon, displayName: "Gmail", category: SourceCategory.Messaging, docs: "https://docs.onyx.app/connectors/gmail/overview", }, + teams: { + icon: TeamsIcon, + displayName: "Teams", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/teams", + }, + slack: slackMetadata, + federated_slack: slackMetadata, + discord: { + icon: ColorDiscordIcon, + displayName: "Discord", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/discord", + }, imap: { icon: EmailIcon, displayName: "Email", category: SourceCategory.Messaging, }, - slack: slackMetadata, - federated_slack: slackMetadata, - teams: { - icon: TeamsIcon, - displayName: "Teams", + discourse: { + icon: DiscourseIcon, + displayName: "Discourse", category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/teams", + docs: "https://docs.onyx.app/connectors/discourse", }, xenforo: { icon: XenforoIcon, @@ -303,11 +257,18 @@ export const SOURCE_METADATA_MAP: SourceMap = { }, // Project Management - airtable: { - icon: AirtableIcon, - displayName: "Airtable", + jira: { + icon: JiraIcon, + displayName: "Jira", category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/airtable", + docs: "https://docs.onyx.app/connectors/jira", + isPopular: true, + }, + linear: { + icon: LinearIcon, + displayName: "Linear", + category: SourceCategory.ProjectManagement, + docs: "https://docs.onyx.app/connectors/linear", }, asana: { icon: AsanaIcon, @@ -321,18 +282,11 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.ProjectManagement, docs: "https://docs.onyx.app/connectors/clickup", }, - jira: { - icon: JiraIcon, - displayName: "Jira", - category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/jira", - isPopular: true, - }, - linear: { - icon: LinearIcon, - displayName: "Linear", + airtable: { + icon: AirtableIcon, + displayName: "Airtable", category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/linear", + docs: "https://docs.onyx.app/connectors/airtable", }, productboard: { icon: ProductboardIcon, @@ -342,11 +296,18 @@ export const SOURCE_METADATA_MAP: SourceMap = { }, // Sales & Marketing - fireflies: { - icon: FirefliesIcon, - displayName: "Fireflies", + salesforce: { + icon: SalesforceIcon, + displayName: "Salesforce", category: SourceCategory.SalesAndMarketing, - docs: "https://docs.onyx.app/connectors/fireflies", + docs: "https://docs.onyx.app/connectors/salesforce", + isPopular: true, + }, + hubspot: { + icon: HubSpotIcon, + displayName: "HubSpot", + category: SourceCategory.SalesAndMarketing, + docs: "https://docs.onyx.app/connectors/hubspot", }, gong: { icon: GongIcon, @@ -355,22 +316,60 @@ export const SOURCE_METADATA_MAP: SourceMap = { docs: "https://docs.onyx.app/connectors/gong", isPopular: true, }, - hubspot: { - icon: HubSpotIcon, - displayName: "HubSpot", + fireflies: { + icon: FirefliesIcon, + displayName: "Fireflies", category: SourceCategory.SalesAndMarketing, - docs: "https://docs.onyx.app/connectors/hubspot", + docs: "https://docs.onyx.app/connectors/fireflies", }, loopio: { icon: LoopioIcon, displayName: "Loopio", category: SourceCategory.SalesAndMarketing, }, - salesforce: { - icon: SalesforceIcon, - displayName: "Salesforce", - category: SourceCategory.SalesAndMarketing, - docs: "https://docs.onyx.app/connectors/salesforce", + + // Customer Support + zendesk: { + icon: ZendeskIcon, + displayName: "Zendesk", + category: SourceCategory.CustomerSupport, + docs: "https://docs.onyx.app/connectors/zendesk", + isPopular: true, + }, + freshdesk: { + icon: FreshdeskIcon, + displayName: "Freshdesk", + category: SourceCategory.CustomerSupport, + docs: "https://docs.onyx.app/connectors/freshdesk", + }, + + // Code Repository + github: { + icon: GithubIcon, + displayName: "Github", + category: SourceCategory.CodeRepository, + docs: "https://docs.onyx.app/connectors/github", + isPopular: true, + }, + gitlab: { + icon: GitlabIcon, + displayName: "Gitlab", + category: SourceCategory.CodeRepository, + docs: "https://docs.onyx.app/connectors/gitlab", + }, + + file: { + icon: FileIcon2, + displayName: "File", + category: SourceCategory.Other, + docs: "https://docs.onyx.app/connectors/file", + isPopular: true, + }, + web: { + icon: GlobeIcon2, + displayName: "Web", + category: SourceCategory.Other, + docs: "https://docs.onyx.app/connectors/web", isPopular: true, }, From 837b17a9dca724d9e8161c87a558eb2e3b5eba9f Mon Sep 17 00:00:00 2001 From: Wenxi Onyx Date: Sun, 17 Aug 2025 12:19:19 -0700 Subject: [PATCH 6/6] recategorize and sort by popularity --- web/src/lib/search/interfaces.ts | 9 +- web/src/lib/sources.ts | 314 +++++++++++++++---------------- 2 files changed, 161 insertions(+), 162 deletions(-) diff --git a/web/src/lib/search/interfaces.ts b/web/src/lib/search/interfaces.ts index cfc2a439ad7..91d210ce57d 100644 --- a/web/src/lib/search/interfaces.ts +++ b/web/src/lib/search/interfaces.ts @@ -162,14 +162,13 @@ export interface SearchResponse { } export enum SourceCategory { + Wiki = "Knowledge Base & Wikis", Storage = "Cloud Storage", - Wiki = "Knowledge Base & Wiki", + TicketingAndTaskManagement = "Ticketing & Task Management", Messaging = "Messaging", - ProjectManagement = "Project Management", - SalesAndMarketing = "Sales & Marketing", - CustomerSupport = "Customer Support", + Sales = "Sales", CodeRepository = "Code Repository", - Other = "Other", + Other = "Others", } export interface SourceMetadata { diff --git a/web/src/lib/sources.ts b/web/src/lib/sources.ts index 0483eaed073..a8de3ecf5db 100644 --- a/web/src/lib/sources.ts +++ b/web/src/lib/sources.ts @@ -83,66 +83,20 @@ const slackMetadata = { }; export const SOURCE_METADATA_MAP: SourceMap = { - // Cloud Storage - google_drive: { - icon: GoogleDriveIcon, - displayName: "Google Drive", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/google_drive/overview", + // Knowledge Base & Wikis + confluence: { + icon: ConfluenceIcon, + displayName: "Confluence", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/confluence", oauthSupported: true, isPopular: true, }, - google_cloud_storage: { - icon: GoogleStorageIcon, - displayName: "Google Storage", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/google_storage", - }, sharepoint: { icon: SharepointIcon, displayName: "Sharepoint", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/sharepoint", - isPopular: true, - }, - s3: { - icon: S3Icon, - displayName: "S3", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/s3", - }, - r2: { - icon: R2Icon, - displayName: "R2", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/r2", - }, - egnyte: { - icon: EgnyteIcon, - displayName: "Egnyte", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/egnyte", - }, - dropbox: { - icon: DropboxIcon, - displayName: "Dropbox", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/dropbox", - }, - oci_storage: { - icon: OCIStorageIcon, - displayName: "Oracle Storage", - category: SourceCategory.Storage, - docs: "https://docs.onyx.app/connectors/oci_storage", - }, - - // Knowledge Base & Wiki - confluence: { - icon: ConfluenceIcon, - displayName: "Confluence", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/confluence", - oauthSupported: true, + docs: "https://docs.onyx.app/connectors/sharepoint", isPopular: true, }, notion: { @@ -151,17 +105,23 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/notion", }, - google_sites: { - icon: GoogleSitesIcon, - displayName: "Google Sites", + bookstack: { + icon: BookstackIcon, + displayName: "BookStack", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/google_sites", + docs: "https://docs.onyx.app/connectors/bookstack", }, - mediawiki: { - icon: MediaWikiIcon, - displayName: "MediaWiki", + document360: { + icon: Document360Icon, + displayName: "Document360", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/mediawiki", + docs: "https://docs.onyx.app/connectors/document360", + }, + discourse: { + icon: DiscourseIcon, + displayName: "Discourse", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/discourse", }, gitbook: { icon: GitbookIcon, @@ -169,35 +129,29 @@ export const SOURCE_METADATA_MAP: SourceMap = { category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/gitbook", }, - highspot: { - icon: HighspotIcon, - displayName: "Highspot", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/highspot", - }, - guru: { - icon: GuruIcon, - displayName: "Guru", - category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/guru", - }, slab: { icon: SlabIcon, displayName: "Slab", category: SourceCategory.Wiki, docs: "https://docs.onyx.app/connectors/slab", }, - document360: { - icon: Document360Icon, - displayName: "Document360", + google_sites: { + icon: GoogleSitesIcon, + displayName: "Google Sites", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/document360", + docs: "https://docs.onyx.app/connectors/google_sites", }, - bookstack: { - icon: BookstackIcon, - displayName: "BookStack", + guru: { + icon: GuruIcon, + displayName: "Guru", category: SourceCategory.Wiki, - docs: "https://docs.onyx.app/connectors/bookstack", + docs: "https://docs.onyx.app/connectors/guru", + }, + mediawiki: { + icon: MediaWikiIcon, + displayName: "MediaWiki", + category: SourceCategory.Wiki, + docs: "https://docs.onyx.app/connectors/mediawiki", }, axero: { icon: AxeroIcon, @@ -212,135 +166,180 @@ export const SOURCE_METADATA_MAP: SourceMap = { docs: "https://docs.onyx.app/connectors/wikipedia", }, - // Messaging - gmail: { - icon: GmailIcon, - displayName: "Gmail", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/gmail/overview", + // Cloud Storage + google_drive: { + icon: GoogleDriveIcon, + displayName: "Google Drive", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/google_drive/overview", + oauthSupported: true, + isPopular: true, }, - teams: { - icon: TeamsIcon, - displayName: "Teams", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/teams", + dropbox: { + icon: DropboxIcon, + displayName: "Dropbox", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/dropbox", }, - slack: slackMetadata, - federated_slack: slackMetadata, - discord: { - icon: ColorDiscordIcon, - displayName: "Discord", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/discord", + s3: { + icon: S3Icon, + displayName: "S3", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/s3", }, - imap: { - icon: EmailIcon, - displayName: "Email", - category: SourceCategory.Messaging, + google_cloud_storage: { + icon: GoogleStorageIcon, + displayName: "Google Storage", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/google_storage", }, - discourse: { - icon: DiscourseIcon, - displayName: "Discourse", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/discourse", + egnyte: { + icon: EgnyteIcon, + displayName: "Egnyte", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/egnyte", }, - xenforo: { - icon: XenforoIcon, - displayName: "Xenforo", - category: SourceCategory.Messaging, + oci_storage: { + icon: OCIStorageIcon, + displayName: "Oracle Storage", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/oci_storage", }, - zulip: { - icon: ZulipIcon, - displayName: "Zulip", - category: SourceCategory.Messaging, - docs: "https://docs.onyx.app/connectors/zulip", + r2: { + icon: R2Icon, + displayName: "R2", + category: SourceCategory.Storage, + docs: "https://docs.onyx.app/connectors/r2", }, - // Project Management + // Ticketing & Task Management jira: { icon: JiraIcon, displayName: "Jira", - category: SourceCategory.ProjectManagement, + category: SourceCategory.TicketingAndTaskManagement, docs: "https://docs.onyx.app/connectors/jira", isPopular: true, }, + zendesk: { + icon: ZendeskIcon, + displayName: "Zendesk", + category: SourceCategory.TicketingAndTaskManagement, + docs: "https://docs.onyx.app/connectors/zendesk", + isPopular: true, + }, + airtable: { + icon: AirtableIcon, + displayName: "Airtable", + category: SourceCategory.TicketingAndTaskManagement, + docs: "https://docs.onyx.app/connectors/airtable", + }, linear: { icon: LinearIcon, displayName: "Linear", - category: SourceCategory.ProjectManagement, + category: SourceCategory.TicketingAndTaskManagement, docs: "https://docs.onyx.app/connectors/linear", }, + freshdesk: { + icon: FreshdeskIcon, + displayName: "Freshdesk", + category: SourceCategory.TicketingAndTaskManagement, + docs: "https://docs.onyx.app/connectors/freshdesk", + }, asana: { icon: AsanaIcon, displayName: "Asana", - category: SourceCategory.ProjectManagement, + category: SourceCategory.TicketingAndTaskManagement, docs: "https://docs.onyx.app/connectors/asana", }, clickup: { icon: ClickupIcon, displayName: "Clickup", - category: SourceCategory.ProjectManagement, + category: SourceCategory.TicketingAndTaskManagement, docs: "https://docs.onyx.app/connectors/clickup", }, - airtable: { - icon: AirtableIcon, - displayName: "Airtable", - category: SourceCategory.ProjectManagement, - docs: "https://docs.onyx.app/connectors/airtable", - }, productboard: { icon: ProductboardIcon, displayName: "Productboard", - category: SourceCategory.ProjectManagement, + category: SourceCategory.TicketingAndTaskManagement, docs: "https://docs.onyx.app/connectors/productboard", }, - // Sales & Marketing + // Messaging + slack: slackMetadata, + federated_slack: slackMetadata, + teams: { + icon: TeamsIcon, + displayName: "Teams", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/teams", + }, + gmail: { + icon: GmailIcon, + displayName: "Gmail", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/gmail/overview", + }, + imap: { + icon: EmailIcon, + displayName: "Email", + category: SourceCategory.Messaging, + }, + discord: { + icon: ColorDiscordIcon, + displayName: "Discord", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/discord", + }, + xenforo: { + icon: XenforoIcon, + displayName: "Xenforo", + category: SourceCategory.Messaging, + }, + zulip: { + icon: ZulipIcon, + displayName: "Zulip", + category: SourceCategory.Messaging, + docs: "https://docs.onyx.app/connectors/zulip", + }, + + // Sales salesforce: { icon: SalesforceIcon, displayName: "Salesforce", - category: SourceCategory.SalesAndMarketing, + category: SourceCategory.Sales, docs: "https://docs.onyx.app/connectors/salesforce", isPopular: true, }, hubspot: { icon: HubSpotIcon, displayName: "HubSpot", - category: SourceCategory.SalesAndMarketing, + category: SourceCategory.Sales, docs: "https://docs.onyx.app/connectors/hubspot", + isPopular: true, }, gong: { icon: GongIcon, displayName: "Gong", - category: SourceCategory.SalesAndMarketing, + category: SourceCategory.Sales, docs: "https://docs.onyx.app/connectors/gong", isPopular: true, }, fireflies: { icon: FirefliesIcon, displayName: "Fireflies", - category: SourceCategory.SalesAndMarketing, + category: SourceCategory.Sales, docs: "https://docs.onyx.app/connectors/fireflies", }, + highspot: { + icon: HighspotIcon, + displayName: "Highspot", + category: SourceCategory.Sales, + docs: "https://docs.onyx.app/connectors/highspot", + }, loopio: { icon: LoopioIcon, displayName: "Loopio", - category: SourceCategory.SalesAndMarketing, - }, - - // Customer Support - zendesk: { - icon: ZendeskIcon, - displayName: "Zendesk", - category: SourceCategory.CustomerSupport, - docs: "https://docs.onyx.app/connectors/zendesk", - isPopular: true, - }, - freshdesk: { - icon: FreshdeskIcon, - displayName: "Freshdesk", - category: SourceCategory.CustomerSupport, - docs: "https://docs.onyx.app/connectors/freshdesk", + category: SourceCategory.Sales, }, // Code Repository @@ -358,13 +357,7 @@ export const SOURCE_METADATA_MAP: SourceMap = { docs: "https://docs.onyx.app/connectors/gitlab", }, - file: { - icon: FileIcon2, - displayName: "File", - category: SourceCategory.Other, - docs: "https://docs.onyx.app/connectors/file", - isPopular: true, - }, + // Others web: { icon: GlobeIcon2, displayName: "Web", @@ -372,6 +365,13 @@ export const SOURCE_METADATA_MAP: SourceMap = { docs: "https://docs.onyx.app/connectors/web", isPopular: true, }, + file: { + icon: FileIcon2, + displayName: "File", + category: SourceCategory.Other, + docs: "https://docs.onyx.app/connectors/file", + isPopular: true, + }, // Other ingestion_api: {