- {formatDocumentCount(documentCount)} +
+ {formatDocumentCount(documentCount)} + {accountCount !== undefined && accountCount > 0 && ( + <> + • + + {accountCount} {accountCount === 1 ? "Account" : "Accounts"} + + > + )}
)}What you get with ClickUp integration:
--
- {getConnectorBenefits(EnumConnectorName.CLICKUP_CONNECTOR)?.map((benefit) => (
-
- {benefit} - ))} -
How it works
-- The ClickUp connector uses the ClickUp API to fetch all tasks and projects that your - API token has access to within your workspace. -
--
-
- - For follow up indexing runs, the connector retrieves tasks that have been updated - since the last indexing attempt. - -
- - Indexing is configured to run periodically, so updates should appear in your - search results within minutes. - -
Authorization
-- Step 1: Get Your API Token -
--
-
- Log in to your ClickUp account -
- Click your avatar in the upper-right corner and select "Settings" -
- In the sidebar, click "Apps" -
- - Under "API Token", click Generate or{" "} - Regenerate - -
- Copy the generated token (it typically starts with "pk_") -
- - Paste it in the form above. You can also visit{" "} - - ClickUp API Settings - {" "} - directly. - -
- Step 2: Grant necessary access -
-- The API Token will have access to all tasks and projects that your user - account can see. Make sure your account has appropriate permissions for the - workspaces you want to index. -
-Indexing
--
-
- - Navigate to the Connector Dashboard and select the ClickUp{" "} - Connector. - -
- - Place your API Token in the form field. - -
- - Click Connect to establish the connection. - -
- Once connected, your ClickUp tasks will be indexed automatically. -
The ClickUp connector indexes the following data:
--
-
- Task names and descriptions -
- Task comments and discussion threads -
- Task status, priority, and assignee information -
- Project and workspace information -
Connected via OAuth
+
+ Workspace:{" "}
+ {workspaceName}
+
+ To update your connection, reconnect this connector. +
+- Update your ClickUp API Token if needed. + Update your ClickUp API Token if needed. For better security and automatic token + refresh, consider disconnecting and reconnecting using OAuth 2.0.
Microsoft Teams Access
++ SurfSense will index messages from Teams channels that you have access to. The app can + only read messages from teams and channels where you are a member. Make sure you're a + member of the teams you want to index before connecting. +
+{connector.name}
++ {connector.name} +
Manage your connector settings and sync configuration
diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx index d479dda8d..8f4a29e61 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx @@ -1,14 +1,16 @@ "use client"; import { ArrowLeft, Check, Info, Loader2 } from "lucide-react"; -import { type FC, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useSearchParams } from "next/navigation"; +import { type FC, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; +import { getConnectorTypeDisplay } from "@/lib/connectors/utils"; import { cn } from "@/lib/utils"; import { DateRangeSelector } from "../../components/date-range-selector"; import { PeriodicSyncConfig } from "../../components/periodic-sync-config"; -import type { IndexingConfigState } from "../../constants/connector-constants"; +import { type IndexingConfigState, OAUTH_CONNECTORS } from "../../constants/connector-constants"; +import { getConnectorDisplayName } from "../../tabs/all-connectors-tab"; import { getConnectorConfigComponent } from "../index"; interface IndexingConfigurationViewProps { @@ -89,12 +91,14 @@ export const IndexingConfigurationView: FC- {config.connectorTitle} Connected! -
+Configure when to start syncing your data
diff --git a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts index 4d15d0989..23982e6f3 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts @@ -51,6 +51,13 @@ export const OAUTH_CONNECTORS = [ connectorType: EnumConnectorName.SLACK_CONNECTOR, authEndpoint: "/api/v1/auth/slack/connector/add/", }, + { + id: "teams-connector", + title: "Microsoft Teams", + description: "Search Teams messages", + connectorType: EnumConnectorName.TEAMS_CONNECTOR, + authEndpoint: "/api/v1/auth/teams/connector/add/", + }, { id: "discord-connector", title: "Discord", @@ -72,6 +79,13 @@ export const OAUTH_CONNECTORS = [ connectorType: EnumConnectorName.CONFLUENCE_CONNECTOR, authEndpoint: "/api/v1/auth/confluence/connector/add/", }, + { + id: "clickup-connector", + title: "ClickUp", + description: "Search ClickUp tasks", + connectorType: EnumConnectorName.CLICKUP_CONNECTOR, + authEndpoint: "/api/v1/auth/clickup/connector/add/", + }, ] as const; // Content Sources (tools that extract and import content from external sources) @@ -104,12 +118,6 @@ export const OTHER_CONNECTORS = [ description: "Search repositories", connectorType: EnumConnectorName.GITHUB_CONNECTOR, }, - { - id: "clickup-connector", - title: "ClickUp", - description: "Search ClickUp tasks", - connectorType: EnumConnectorName.CLICKUP_CONNECTOR, - }, { id: "luma-connector", title: "Luma", diff --git a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts index 65456689c..a1b303163 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts @@ -7,11 +7,12 @@ import { searchSourceConnectorTypeEnum } from "@/contracts/types/connector.types export const connectorPopupQueryParamsSchema = z.object({ modal: z.enum(["connectors"]).optional(), tab: z.enum(["all", "active"]).optional(), - view: z.enum(["configure", "edit", "connect", "youtube"]).optional(), + view: z.enum(["configure", "edit", "connect", "youtube", "accounts"]).optional(), connector: z.string().optional(), connectorId: z.string().optional(), connectorType: z.string().optional(), success: z.enum(["true", "false"]).optional(), + error: z.string().optional(), }); export type ConnectorPopupQueryParams = z.inferActive Connectors
{title}
+ {isAnyIndexing ? ( +
+
+ {mostRecentLastIndexed + ? `Last indexed: ${formatLastIndexedDate(mostRecentLastIndexed)}` + : "Never indexed"} +
+ )} ++ {formatDocumentCount(documentCount)} + • + + {accountCount} {accountCount === 1 ? "Account" : "Accounts"} + +
+{connectorTitle} Accounts
++ {typeConnectors.length} connected account{typeConnectors.length !== 1 ? "s" : ""} +
++ {getConnectorDisplayName(connector.name)} +
+ {isIndexing ? ( +
+
+ {connector.last_indexed_at + ? `Last indexed: ${formatLastIndexedDate(connector.last_indexed_at)}` + : "Never indexed"} +
+ )} +Repository Selection & Access
- - {/* Viewing Mode */} - {editMode === "viewing" && ( --
- {currentSelectedRepos.map((repo) => (
-
- {repo} - ))} -
(No repositories currently selected)
- )} -