From b74371973245fa816a4bddaa7181e21a2f990c7a Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Wed, 9 Sep 2026 12:35:17 -0700 Subject: [PATCH] improvement(search): clarify integration approval and setup --- apps/docs/content/docs/search/confluence.mdx | 10 +- .../docs/search/connect-your-account.mdx | 8 +- apps/docs/content/docs/search/github.mdx | 4 +- apps/docs/content/docs/search/gitlab.mdx | 4 +- apps/docs/content/docs/search/gmail.mdx | 6 +- .../content/docs/search/google-calendar.mdx | 8 +- .../docs/content/docs/search/google-drive.mdx | 12 +- apps/docs/content/docs/search/index.mdx | 20 +- apps/docs/content/docs/search/jira.mdx | 4 +- apps/docs/content/docs/search/slack.mdx | 4 +- apps/docs/public/static/search/add-source.jpg | Bin 29305 -> 0 bytes .../static/search/integration-settings.jpg | Bin 0 -> 115160 bytes .../organization-integration-catalog.tsx | 130 --------- .../organization-integrations-settings.tsx | 5 +- .../organization-integrations-setup.test.tsx | 250 +++++++++++++++--- .../organization-integrations-setup.tsx | 144 +++++++--- 16 files changed, 359 insertions(+), 250 deletions(-) delete mode 100644 apps/docs/public/static/search/add-source.jpg create mode 100644 apps/docs/public/static/search/integration-settings.jpg delete mode 100644 apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integration-catalog.tsx diff --git a/apps/docs/content/docs/search/confluence.mdx b/apps/docs/content/docs/search/confluence.mdx index 79ea9ede7ba..70276ed311f 100644 --- a/apps/docs/content/docs/search/confluence.mdx +++ b/apps/docs/content/docs/search/confluence.mdx @@ -20,7 +20,7 @@ Admin setup uses your organization's **Settings → Sources** page. Teammates co | **Central account** | One account syncs content, space permissions, page restrictions, and group membership. | Connect their own Confluence account so Sim can match their Atlassian identity to those permissions. | | **Member accounts** | Sim syncs content separately through connected members' accounts. | Connect their own Confluence account to establish which pages they can access. | -Adding a source from **Settings → Sources → Confluence → Sources** opens central account setup. Use this when one account can read the intended spaces and their permissions. For a member source, start **Connect account** from **Integrations** in the main sidebar after an admin adds Confluence. Available methods depend on your organization's enabled features. +Selecting **Add source** on Confluence's integration page opens central account setup. Use this when one account can read the intended spaces and their permissions. For a member source, start **Connect account** from **Integrations** in the main sidebar after an admin allows Confluence. Available methods depend on your organization's enabled features. **Everyone still connects in both methods.** With a central account, teammates supply their identity; they do not configure another central crawl or choose spaces again. @@ -40,7 +40,7 @@ On hosted Sim, personal connections authorize the existing Sim app. Teammates do ### Choose Confluence -Open **Settings → Sources → Add integration** and choose **Confluence**. On its **Sources** tab, select **Add source**. If Confluence is already listed, open it directly. **Setup guide** opens this guide from the source form. +Open **Settings → Sources** and turn on **Confluence** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. **Setup guide** opens this guide from the source form. @@ -79,9 +79,9 @@ Each teammate completes this last step. A previously authorized account may alre ## Connect member accounts -After an admin adds Confluence, open **Integrations** in the main sidebar and select **Connect account**. If there is no source yet, enter **Confluence Domain** and **Space Keys**, then select **Connect** and authorize your account. For another site or space scope, use **Add source** beside **Add another Confluence source**. +After an admin allows Confluence, open **Integrations** in the main sidebar and select **Connect account**. If there is no source yet, enter **Confluence Domain** and **Space Keys**, then select **Connect** and authorize your account. For another site or space scope, use **Add source** beside **Add another Confluence source**. -An admin can open the resulting source under **Settings → Sources → Confluence → Sources** and use **Settings** to adjust its filters. **Account for browsing** helps populate the space picker; it does not connect that account for Search. Manual space keys work without a browsing account. +An admin can open **Settings → Sources**, select **Manage** beside **Confluence**, and open the source's **Settings** tab to adjust its filters. **Account for browsing** helps populate the space picker; it does not connect that account for Search. Manual space keys work without a browsing account. ## Using a service account @@ -168,7 +168,7 @@ Existing organization members see the configured Confluence source and their own With a central account, Sim applies space access together with the page's restrictions and inherited ancestor restrictions. Group membership is refreshed in the background. With member accounts, each person's provider listing determines the pages available to them. A Sim organization admin does not automatically receive access to every Confluence document. -New content and permission changes require a sync and processing before Search reflects them. Open **Settings → Sources → Confluence → Sources → [source]** to inspect **Documents**, edit **Settings**, or review **Sync history**. If your own account needs authorization again, use **Reconnect** in the main Integrations page. Where available, the provider's **Accounts → Request connections** sends account connection requests; these do not invite people to the Sim organization. +New content and permission changes require a sync and processing before Search reflects them. Open **Settings → Sources**, select **Manage** beside **Confluence**, then open the source to inspect **Documents**, edit **Settings**, or review **Sync history**. If your own account needs authorization again, use **Reconnect** in the main Integrations page. Where available, the provider's **Accounts → Request connections** sends account connection requests; these do not invite people to the Sim organization. ## Troubleshooting diff --git a/apps/docs/content/docs/search/connect-your-account.mdx b/apps/docs/content/docs/search/connect-your-account.mdx index 6d4281632f2..26508b493a7 100644 --- a/apps/docs/content/docs/search/connect-your-account.mdx +++ b/apps/docs/content/docs/search/connect-your-account.mdx @@ -7,7 +7,7 @@ import { Callout } from 'fumadocs-ui/components/callout' import { Step, Steps } from 'fumadocs-ui/components/steps' import { Image } from '@/components/ui/image' -Your admin adds the integration and can configure shared source filters. You connect your own account so Sim can establish what you are allowed to search. Admins connect their own accounts through the same flow. +Your admin allows the integration and can configure shared source filters. You connect your own account so Sim can establish what you are allowed to search. Admins connect their own accounts through the same flow. @@ -21,7 +21,7 @@ Accept your Sim organization invitation or sign in through your organization's S ## Open Integrations -Open **Integrations** in the main sidebar, find the provider or source, and select **Connect account**. Your first connection may ask for a GitHub repository, Confluence domain and space keys, or Jira domain and project keys. Enter the required fields and select **Connect**. If the provider is missing, ask an organization admin to add it under **Settings → Sources**. +Open **Integrations** in the main sidebar, find the provider or source, and select **Connect account**. Your first connection may ask for a GitHub repository, Confluence domain and space keys, or Jira domain and project keys. Enter the required fields and select **Connect**. If the provider is missing, ask an organization admin to turn it on under **Settings → Sources → Allowed in Sim Search**. Use **Add source** beside **Add another [provider] source** when you need another supported repository, site, or project scope. Connecting an existing source does not ask you to configure it again. @@ -72,7 +72,7 @@ An account connection request does not invite you into the Sim organization. You Select **Your accounts** on the main Integrations page to open your personal **Connected accounts** settings. Use **Reconnect** to renew an organization account connection or **Disconnect** to withdraw it. Disconnecting stops that account from being used for organization indexing and workflows, and removes Search access that depends on it. -Admins can select **Manage sources** to open organization setup, then open an integration's **Sources** and **Accounts** tabs. This does not grant the admin access to every document. +Admins can select **Manage sources** to open organization setup, then select **Manage** beside an integration to open its **Sources** and **Accounts** tabs. This does not grant the admin access to every document. ## If you get stuck @@ -85,7 +85,7 @@ Admins can select **Manage sources** to open organization setup, then open an in | **Verify email** | Verify your Sim email, then reopen the connection link. | | Expired or cancelled authorization | Return to the original connection page and start again. If the invitation itself expired, ask the admin for a new request. | | Access revoked | Ask the organization admin to restore your account contribution access before reconnecting. | -| Needs admin attention | Ask your admin to open **Settings → Sources → [integration] → Sources → [source]** to inspect its error. | +| Needs admin attention | Ask your admin to open **Settings → Sources**, select **Manage** beside the integration, and open the source to inspect its error. | Your Sim role does not override document access at the source. Connecting a different account or receiving a Search link does not share someone else's mailbox, private calendar, or restricted documents with you. diff --git a/apps/docs/content/docs/search/github.mdx b/apps/docs/content/docs/search/github.mdx index 91ad9551e78..1bcc37159b6 100644 --- a/apps/docs/content/docs/search/github.mdx +++ b/apps/docs/content/docs/search/github.mdx @@ -102,7 +102,7 @@ In the App's sidebar, choose **Install App**, select the target account, and gra ### Open GitHub setup -As a Sim organization admin, open **Settings → Sources → Add integration** and choose **GitHub**. On its **Sources** tab, select **Add source**. If GitHub is already listed, open it directly. +Open **Settings → Sources** and turn on **GitHub** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. @@ -131,7 +131,7 @@ You can instead select an existing account under **Sync documents with** to supp Open **Integrations** in the main sidebar, select **Connect account** on the GitHub source, and authorize the App. Teammates repeat this step after joining the Sim organization. For private repositories, both the person's account and the App installation must have access. GitHub also permits App user tokens to read public repositories without an installation; see [GitHub's permission rules](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app). -With **Connected members**, indexing begins after someone connects. A dedicated indexing account can start syncing immediately; each teammate still connects before searching. Open **Settings → Sources → GitHub → Sources → [source]** to inspect **Documents**, edit **Settings**, or review **Sync history**. +With **Connected members**, indexing begins after someone connects. A dedicated indexing account can start syncing immediately; each teammate still connects before searching. Open **Settings → Sources**, select **Manage** beside **GitHub**, then open the source to inspect **Documents**, edit **Settings**, or review **Sync history**. Use **GitHub → Accounts → Request connections** to send provider-specific connection requests. These requests do not grant organization membership. For another repository, add another source; members can also use **Add another GitHub source** in the main Integrations page. diff --git a/apps/docs/content/docs/search/gitlab.mdx b/apps/docs/content/docs/search/gitlab.mdx index c60636bfc24..69789c73e36 100644 --- a/apps/docs/content/docs/search/gitlab.mdx +++ b/apps/docs/content/docs/search/gitlab.mdx @@ -49,7 +49,7 @@ The token must read the project, users, inherited project membership, instance s ### Configure the source in Sim -Open **Settings → Sources → Add integration** and choose **GitLab**. On its source list, select **Add source**. If GitLab is already listed, open it directly. Paste the **Personal Access Token**, enter your **Host** and **Project**, and choose the content to index. +Open **Settings → Sources** and turn on **GitLab** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. Paste the **Personal Access Token**, enter your **Host** and **Project**, and choose the content to index. | Field | What to enter | |---|---| @@ -74,7 +74,7 @@ Select **Connect & Sync**. Sim validates the token and source policy, then start Invite teammates to the Sim organization using their verified work email. Sim matches that email against the GitLab directory and applies project, feature, and confidential-issue permissions. No GitLab **Connect account** step is required. -Admins open **Settings → Sources → GitLab → [source]** to inspect **Documents**, edit **Settings**, or review **Sync history**. GitLab has no personal **Accounts** tab. Permission and membership changes are picked up during background refreshes. +Admins open **Settings → Sources**, select **Manage** beside **GitLab**, then open the source to inspect **Documents**, edit **Settings**, or review **Sync history**. GitLab has no personal **Accounts** tab. Permission and membership changes are picked up during background refreshes. diff --git a/apps/docs/content/docs/search/gmail.mdx b/apps/docs/content/docs/search/gmail.mdx index e207ab493df..1af4d9a514d 100644 --- a/apps/docs/content/docs/search/gmail.mdx +++ b/apps/docs/content/docs/search/gmail.mdx @@ -18,9 +18,9 @@ These steps require a Sim organization admin. -### Add Gmail +### Set up Gmail -Open **Settings → Sources → Add integration** and choose **Gmail**. On its **Sources** tab, select **Add source**. If Gmail is already listed, open it directly. Gmail uses member accounts; there is no domain-wide or service-account crawl in Search. +Open **Settings → Sources** and turn on **Gmail** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. Gmail uses member accounts; there is no domain-wide or service-account crawl in Search. @@ -51,7 +51,7 @@ Teammates follow these same steps after joining the organization. Once an admin ## Source options -An admin opens **Settings → Sources → Gmail → Sources → [source] → Settings** to change these options. Filters apply separately to each connected mailbox. **Documents** shows indexed threads and **Sync history** shows recent runs. +An admin opens **Settings → Sources**, selects **Manage** beside **Gmail**, and opens the source's **Settings** tab to change these options. Filters apply separately to each connected mailbox. **Documents** shows indexed threads and **Sync history** shows recent runs. | Option | Behavior | | --- | --- | diff --git a/apps/docs/content/docs/search/google-calendar.mdx b/apps/docs/content/docs/search/google-calendar.mdx index 661e972445e..fecad2266eb 100644 --- a/apps/docs/content/docs/search/google-calendar.mdx +++ b/apps/docs/content/docs/search/google-calendar.mdx @@ -18,9 +18,9 @@ These steps require a Sim organization admin. -### Add Google Calendar +### Set up Google Calendar -Open **Settings → Sources → Add integration** and choose **Google Calendar**. On its **Sources** tab, select **Add source**. If it is already listed, open it directly. Search uses member accounts; an admin or service account cannot connect on behalf of everyone. +Open **Settings → Sources** and turn on **Google Calendar** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. Search uses member accounts; an admin or service account cannot connect on behalf of everyone. @@ -53,11 +53,11 @@ Keep the default date range for the previous and next 30 days. **More options** 2. In the connection tab, choose the Google account whose verified email matches your Sim email. Grant the requested permissions. 3. Return to Integrations to see indexing status and your searchable document count. -Teammates repeat only these connection steps after joining the organization. They do not need to configure the source. An admin can send connection requests from **Settings → Sources → Google Calendar → Accounts → Request connections**. These requests do not grant organization membership. Connecting Gmail or Google Drive does not replace the Calendar connection. +Teammates repeat only these connection steps after joining the organization. They do not need to configure the source. An admin can send connection requests from **Settings → Sources**: select **Manage** beside **Google Calendar**, then **Accounts → Request connections**. These requests do not grant organization membership. Connecting Gmail or Google Drive does not replace the Calendar connection. ## Source options -An admin opens **Settings → Sources → Google Calendar → Sources → [source] → Settings** to change these options. **Documents** shows indexed events and **Sync history** shows recent runs. +An admin opens **Settings → Sources**, selects **Manage** beside **Google Calendar**, and opens the source's **Settings** tab to change these options. **Documents** shows indexed events and **Sync history** shows recent runs. | Option | Behavior | | --- | --- | diff --git a/apps/docs/content/docs/search/google-drive.mdx b/apps/docs/content/docs/search/google-drive.mdx index f7317aec464..3f68cebe7c7 100644 --- a/apps/docs/content/docs/search/google-drive.mdx +++ b/apps/docs/content/docs/search/google-drive.mdx @@ -7,7 +7,7 @@ import { Callout } from 'fumadocs-ui/components/callout' import { Step, Steps } from 'fumadocs-ui/components/steps' import { Image } from '@/components/ui/image' -Search Google Docs, Sheets, Slides, and supported files in Drive. Members can connect their own accounts after an admin adds Google Drive, or an admin can configure a central service-account crawl. +Search Google Docs, Sheets, Slides, and supported files in Drive. Members can connect their own accounts after an admin allows Google Drive, or an admin can configure a central service-account crawl. Admin setup uses your organization's **Settings → Sources** page. Teammates connect from **Integrations** in the main sidebar. For workspace Search, use **Search → Add source** instead; **Create & Invite** is the workspace equivalent of **Add source**. @@ -27,9 +27,9 @@ Admin setup uses your organization's **Settings → Sources** page. Teammates co -### Add Google Drive +### Allow Google Drive -An organization admin opens **Settings → Sources → Add integration** and chooses **Google Drive**. Adding it allows personal connections; it does not create a source or connect anyone's account. +An organization admin opens **Settings → Sources** and turns on **Google Drive** under **Allowed in Sim Search**. This allows personal connections; it does not create a source or connect anyone's account. @@ -43,7 +43,7 @@ Open **Integrations** in the main sidebar and select **Connect account** beside ### Adjust filters if needed -An admin opens **Settings → Sources → Google Drive → Sources → [source] → Settings**. Leave **Folders** empty to include supported files each member can access, or narrow the source to folders. **Account for browsing** helps select folders; manual **Folder IDs** work without it. Browsing does not connect that account to Search. +An admin opens **Settings → Sources**, selects **Manage** beside **Google Drive**, and opens the source's **Settings** tab. Leave **Folders** empty to include supported files each member can access, or narrow the source to folders. **Account for browsing** helps select folders; manual **Folder IDs** work without it. Browsing does not connect that account to Search. Keep **Sync documents with → Connected members** unless a dedicated account should fetch content. Members still connect to establish access. If the dedicated account is a delegated service account, **Crawl as** selects the Google Workspace user whose files it fetches. Save the source settings when finished. @@ -52,7 +52,7 @@ Keep **Sync documents with → Connected members** unless a dedicated account sh ## Set up a central service account -Open **Settings → Sources → Google Drive → Sources → Add source**. This opens central service-account setup. If Google Drive is not listed yet, add it with **Add integration** first. Teammates do not need a personal Drive connection for this source. +Open **Settings → Sources** and turn on **Google Drive** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. This opens central service-account setup. Teammates do not need a personal Drive connection for this source. This requires a Google Workspace domain and a Workspace super administrator to authorize domain-wide delegation. Consumer Gmail accounts cannot use this path. @@ -121,7 +121,7 @@ Set **Crawl as** to a Google Workspace administrator who can read groups, member Sim exports Docs and Slides as text and Sheets as XLSX spreadsheets. Supported uploaded files use the knowledge-base document pipeline, including PDF and Office formats. Unsupported files and oversized exports cannot be indexed; Google limits Workspace exports to 10 MB. See [Drive export formats](https://developers.google.com/workspace/drive/api/guides/ref-export-formats) and [download limits](https://developers.google.com/workspace/drive/api/guides/manage-downloads). -Search schedules syncs hourly. Content, deletions, and permissions refresh in the background; results are not a live read from Drive. Open **Settings → Sources → Google Drive → Sources → [source]** to inspect **Documents**, edit **Settings**, or review **Sync history**. **Accounts** on the provider page shows personal account connections where configured; it does not list the central service-account credential. +Search schedules syncs hourly. Content, deletions, and permissions refresh in the background; results are not a live read from Drive. Open **Settings → Sources**, select **Manage** beside **Google Drive**, then open the source to inspect **Documents**, edit **Settings**, or review **Sync history**. **Accounts** on the provider page shows personal account connections where configured; it does not list the central service-account credential. ## Troubleshooting diff --git a/apps/docs/content/docs/search/index.mdx b/apps/docs/content/docs/search/index.mdx index 907ea2876d3..3673675951a 100644 --- a/apps/docs/content/docs/search/index.mdx +++ b/apps/docs/content/docs/search/index.mdx @@ -7,25 +7,25 @@ import { Callout } from 'fumadocs-ui/components/callout' import { Step, Steps } from 'fumadocs-ui/components/steps' import { Image } from '@/components/ui/image' -Search brings your connected sources into one place. An organization admin adds an integration and configures its sources. Teammates then [connect their accounts](/search/connect-your-account) when required. Each person searches with their own access. +Search brings your connected sources into one place. An organization admin allows integrations and configures their sources. Teammates then [connect their accounts](/search/connect-your-account) when required. Each person searches with their own access. ## Add your first source -### Add an integration +### Allow an integration -As an organization admin, open **Settings → Sources → Add integration** and choose a provider. Sim opens that integration's page. If the integration is already listed, open it instead. +As an organization admin, open **Settings → Sources** and turn on the integration under **Allowed in Sim Search**. It stays in the list; no setup page opens automatically. -Adding an integration approves it for Search; it does not connect an account or start indexing. Slack also requires **Set up Slack app** before adding sources. +The switch permits the integration in your organization. It does not connect an account, grant document access, or start indexing. Teammates connect from **Integrations** in the main sidebar; only admins manage these switches. ### Configure it once -On the integration page, select **Add source**. Follow its **Setup guide** to connect the indexing account or choose the folders, repositories, calendars, spaces, or channels to include. **More options** contains secondary filters and **Metadata tags**. +Select **Set up** beside the integration, or **Manage** if it already has sources. On its page, select **Add source**. For Slack, complete **Set up Slack app** first. Follow its **Setup guide** to connect the indexing account or choose the folders, repositories, calendars, spaces, or channels to include. **More options** contains secondary filters and **Metadata tags**. Select **Connect & Sync** for an administrator connection, or **Add source** for member accounts. Creating a source does not invite people or authorize their accounts. @@ -39,7 +39,7 @@ Open **Integrations** in the main sidebar and select **Connect account** if prom -Organization Sources settings with the Add integration action +Organization Sources settings with Allowed in Sim Search switches and separate Set up and Manage actions Source availability depends on the deployment and organization policy. An unavailable source needs operator configuration before setup can continue. @@ -78,7 +78,7 @@ Some member sources offer **More options → Sync documents with**. **Connected Invite people through the organization's **Settings → Members**, or use your organization's [SSO provisioning](/platform/enterprise/sso). Share the organization's **Home** or **Integrations** URL. People need their own Sim account and organization membership; they do not need access to a workspace. Connecting an external account alone does not grant organization membership. -To request a particular account connection, open **Settings → Sources → [integration] → Accounts → Request connections**. This tab is available for providers that support personal connections. If setup is missing, complete the source or Slack app setup shown there first. The list shows organization account contributors and their connection status for that provider. +To request a particular account connection, open **Settings → Sources**, select **Manage** beside the integration (or **Set up** if no sources exist), then **Accounts → Request connections**. This tab is available for providers that support personal connections. If setup is missing, complete the source or Slack app setup shown there first. The list shows organization account contributors and their connection status for that provider. These requests are separate from organization invitations. They let recipients contribute an external account; they do not grant Sim organization membership or Search access. **People** on the Sources settings page shows account contributors across providers. See [Connect your account](/search/connect-your-account) for the teammate walkthrough. @@ -88,7 +88,7 @@ These requests are separate from organization invitations. They let recipients c ## Manage sources and documents -Open **Settings → Sources → [integration]**, then select a source. Providers with personal connections have **Sources** and **Accounts** tabs; providers such as GitLab open directly to the source list. Multiple sources can have different folder, repository, space, or project scopes. +Open **Settings → Sources**, select **Manage** beside the integration, then select a source. Providers with personal connections have **Sources** and **Accounts** tabs; providers such as GitLab open directly to the source list. Multiple sources can have different folder, repository, space, or project scopes. Integration detail with Sources and Accounts tabs and a nested source list @@ -98,7 +98,7 @@ Open **Settings → Sources → [integration]**, then select a source. Providers | **Settings** | Edit the source's scope, filters, and supported connection settings. Save your changes before leaving. | | **Sync history** | Review recent sync runs and errors. | -Use the source header to sync, pause, resume, or remove that source. The back link returns to its integration. **Deactivate** on the integration page makes its content unavailable in Search, Assistant, and MCP while preserving its sources and connected accounts; **Activate** enables it again. +Use the source header to sync, pause, resume, or remove that source. The back link returns to its integration. To disable an entire integration, turn off its **Allowed in Sim Search** switch. If it has sources, confirm **Deactivate**. Its content becomes unavailable in Search, Assistant, and MCP; sources and connected accounts are preserved. Turn the switch back on to allow it again. Gmail source Settings tab with label, date range, and search filters @@ -139,7 +139,7 @@ Search runs background syncs on an hourly schedule. Large sources, provider limi A completed sync means the source was checked; some documents may still be indexing. In the main **Integrations** page, each source row shows how many documents you can search and whether indexing failed for any documents you can access. -As an admin, open **Settings → Sources → [integration] → Sources → [source]**. In **Documents**, select **Failed** from the status dropdown to inspect those files. Use the search field to find a document by name. Select **Retry indexing** beside a file to try again. **Exclude** removes a file from search; select **Excluded** and then **Restore** to include it again. Fix a disconnected account or source configuration before retrying a sync that needs attention. +As an admin, open **Settings → Sources**, select **Manage** beside the integration, then open the source. In **Documents**, select **Failed** from the status dropdown to inspect those files. Use the search field to find a document by name. Select **Retry indexing** beside a file to try again. **Exclude** removes a file from search; select **Excluded** and then **Restore** to include it again. Fix a disconnected account or source configuration before retrying a sync that needs attention. Empty source Documents tab with search and an Included status filter diff --git a/apps/docs/content/docs/search/jira.mdx b/apps/docs/content/docs/search/jira.mdx index c15fa80f975..4c0b5fa4df6 100644 --- a/apps/docs/content/docs/search/jira.mdx +++ b/apps/docs/content/docs/search/jira.mdx @@ -32,7 +32,7 @@ Sim uses its existing Jira OAuth integration. Search uses `read:jira-work` to re ### Choose Jira -Open **Settings → Sources → Add integration** and choose **Jira**. On its **Sources** tab, select **Add source**. If Jira is already listed, open it directly. Jira sources use member accounts. +Open **Settings → Sources** and turn on **Jira** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Add source**. Jira sources use member accounts. @@ -88,7 +88,7 @@ Search manages the sync schedule. Item limits and sync frequency are not setup d Existing organization members see the same source configuration and their own **Connect account**, **Reconnect**, or indexing status. They do not choose projects again. Invite new teammates to the Sim organization through its Members settings or SSO onboarding, then have them open Integrations and connect Jira. A Jira authorization does not grant Sim organization membership. -Sim checks Jira separately using each connected person's account. Issue content and tags become searchable as processing finishes; changes and lost issue access are picked up by later syncs. The main Integrations page reports documents searchable by the current viewer. Admins open **Settings → Sources → Jira → Sources → [source]** for **Documents**, **Settings**, and **Sync history**. +Sim checks Jira separately using each connected person's account. Issue content and tags become searchable as processing finishes; changes and lost issue access are picked up by later syncs. The main Integrations page reports documents searchable by the current viewer. Admins open **Settings → Sources**, select **Manage** beside **Jira**, then open the source for **Documents**, **Settings**, and **Sync history**. Use **Jira → Accounts → Request connections** to send Jira connection requests. These requests do not invite people into the Sim organization. For a different site or project scope, an admin can add another source; members can also use **Add another Jira source** in the main Integrations page. diff --git a/apps/docs/content/docs/search/slack.mdx b/apps/docs/content/docs/search/slack.mdx index 6b9a314dccc..81d8c0cb91f 100644 --- a/apps/docs/content/docs/search/slack.mdx +++ b/apps/docs/content/docs/search/slack.mdx @@ -25,7 +25,7 @@ Skip to **Connect the source** if the organization already has a verified Slack ### Open provider settings -Open **Settings → Sources → Add integration** and choose **Slack**. Select **Set up Slack app** on the provider page. If Slack is already listed, open it directly. Adding the integration alone does not configure the app or start indexing. +Open **Settings → Sources** and turn on **Slack** under **Allowed in Sim Search**. Select **Set up** (or **Manage** if sources already exist), then **Set up Slack app**. Allowing Slack does not configure the app or start indexing. @@ -78,7 +78,7 @@ To send a Slack connection request, open **Slack → Accounts → Request connec You can instead select an existing account under **Sync documents with** to supply message content centrally. Members still connect their own accounts to establish access. The selected account must itself be able to read the selected channels. -Admins open **Settings → Sources → Slack → Sources → [source]** to inspect **Documents**, edit **Settings**, or review **Sync history**. Search reads indexed content, so source changes appear after background syncing. Slack retention and API limits determine how much history is available. +Admins open **Settings → Sources**, select **Manage** beside **Slack**, then open the source to inspect **Documents**, edit **Settings**, or review **Sync history**. Search reads indexed content, so source changes appear after background syncing. Slack retention and API limits determine how much history is available. ## Permissions reference diff --git a/apps/docs/public/static/search/add-source.jpg b/apps/docs/public/static/search/add-source.jpg deleted file mode 100644 index 0fb4997da09d62bf416dd327560da1056c6198d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29305 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 H$H;#Hyq2p! diff --git a/apps/docs/public/static/search/integration-settings.jpg b/apps/docs/public/static/search/integration-settings.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab46bb0e98481a706fb994d0417f1ff3e2453089 GIT binary patch literal 115160 zcmeFZcT|(hw=f)gFNlazEFdDG9gtp+nt*_SAqf#eK&cX%5FpZzdQ=F40tTdOXekgR z5K2PPqx7Ny0)`M!Ae7Jq>Gh5GcklZB*0=*|X=_ z{<{4QaNOL)%mlDw2LP}`_ycSY?f7bT{kqdF8*3A@o8W(VGy#OL`!@i<$2Ty*#`N0x z+jjQn_kH_Ej9-3tT`>25J^vFBrn}VhD|G;%OZh(u^S^UG;Od5P5eE1nyeOZ7w-HI+~60E4ZI&H40G!j9ssksF2r4h_+^iO!JYpFcex+%EBtd|7y}>g zpkI0Yf?pILcJqZph0p!MOA3Gi*Z@oc*M5~>_$~xL0sx@12mtJQ`A;|JQ~;pj2>@`q z@1JfL-v9u|{saKZKmXJ1pFFvLH{kBSCAV96-|6lS0L&Kv07vWq0MRc1z(M4{`3Z0T z32o-|xDMF4W5=)mzr(IQyMDpm z-Me?~*|&G!zF*h=1BVXm-+yrbzI_Le96WgFun_hgIC|{J;iJFsUy1yR{wtR7e|Z1C z{l7x|zk}`f0FnKB3isaGwL=E5Q)I_3ksaHg0B42l7ACyoS5y3V*ej%F_nw2hcK-4Y zI}X^fYnL$Rz590`K62#X{$qe0J9q8gvv;4!{u37th^n0wm$?e*JSe6Pv%Q;>cS`n} zzr+SVR2lP?vkyM~Qd>Tkg_j zJrj?lzv@SRD1c1epT6q4{rJhJIbr5fLaKfd_aBrApL_TH%6qutY-V4;z<&??cYp zeSpKlw0DZ^5&;+kx^DkVE`OtcbKt*_1IoVQm6y7yYJTvOug~flb{v$K^->&7C|iJ` zYxl1@5(j)3^V(Q)kO^6Q%jN5t;>vPOxd^4x5nB(qZDps{X?Yek#LNZ%269$MWNlIR zVcF4lm4W2HP6OgD?)UL%8&enlS&CuPR0V*S&`dT42RhkfSgaLh^>nTdBhkQ!SNgx6Bed&Y%Sp? z%c^#=7%^h6YA#8Jjy8l(LNnT z-p}KzxjFh3^HbE|@B4=)OCG~@5FaS&O_$2tzt+^mYP!MSy3XS+L$vMkp0tB!SbCJ# zV>uA94n7))@7-mX%|V=9Zo@qmXAUo=sxcm*fzpAA?pmOP4lhV%zu)Az%KEfGJ>}c# zoOIOB#_-PAIG35zK|P-#0r_t;DT)d}yNfqwEZ4MjWy3S3xo!b!p(-0a#V(OqUp%#? z9V~}W<*VzXo(`31KKNdG8Hcr)IIBbY1bwjOhKMJ5{I>L1C0` zTGl~xbI(imP0|`CIy&a0C9b%7tAIJJY-nTs<;U*QZ=JqseV^U>t!x{R?)69ReU(o< zB-`-v`}wKR3bD#tV{wn}4cn*Y1mz#N8(y<$UWk;HY>9K6cI0FFqI-S8I>l3U?GN00 z9OMCSDFq$0=K~2{ot^dy1Gr|1MX%I}X(mL1iYNxkLRw~EV5oLw@(@z)drrwAGoZg7 zrw9?AKZt&}ao1X=5pw;|I6uww(}JvL19e4gN>=nAxRqDvu`>kUt@#z+ z&RnxSO2xeS61pPvV#^>$zxj2>fWBfV#abDem`36G5v9>3XP!UC1zYhvYU$G|e}R|C9)$7XVE=~#4? zNE^m}ghwvow8P^j3yyP~L?r6`+vkyV6nvhM=Mgh;W%Zt92Q~h*HvIPRi-@#t$L#DN zmFduF>6Qnq?_)bVy%SqKiB%jgPwt8(0xmlV%malhB@FE64JVuc2h?RE+gZV1b^0ZP ztr8gzDhfOK54S^ph zG;inGIDvBhBhBO+J|}MUEvpg9%j)8q_6xp)a*4W=0(2^`&*G!6Le|77(Y(*SH%+hm zA2QSi+WDUN{d2r?jI68VGX54NCpH1$lYv{7P3iQ4D>`-*Npv{^=rVlFv)BmLrn$*_ z**Ar>a2K%IVH$z%k}1tE28C(C22&`GBfIPjRPPt1&OIcsPkq^7BLOb@jnN;?mb%gHzRcv${U?EXU?rAQF#Rv1wNKs!< zGQVXGyI9r0MM(zV5V1va->;N~ITVRH6?VV2#bV5qdRwq1OD))PPuCkZH#C)~|^#i1s8Nrl#bq?Wko7H&Z`Vg3VX=_@KC=D6agXfn2jZm>Q>9(fVO z;Sva!B`P|8AZuTbVhuvK0aqbjHFjhtGo+ci_llhJ)F_oFE`Y(omUuA;Rxhz@7$Mhf zP#V)uErt^ld0DI1FEF5aN`cdHcA}CeG-VeYIwoZKkuzf+idC7lleYh@qs0H!%yyL5 zTo!suT7Xj))gA?*=DdqB!)*lO!68q6(b$ zK`+q9vY?rQqgVEdUssKQD3@HCZ+R`rZmOA-lsZUE$6#*6&2fUi_7H${2qYM$uRq`w z((HMmppr+$?pN3bn8)Xn=4q-kkQQQg_1?djaD9tHZKK~b$fcH(3dIYd+V*R!UJ7WD zdsK}1$|>^)BfjI~otHySnasov)cGYbxKelSyWo}@U6!QnSO1yPBHZ9dphh>l=NSr;s~K$YF7J&i z_u0>aWha)dlR`;&j_=w-Y(?u;bQ#w*G`G-Hw&!4EaBiZWY5Ca@lqB**pd*efkS}SB zw=g=>&=cg8jkv|>MMz(qDT1(+ z$@v7V;z%-rGANr;4@Z!T$BcgWF1@m1P{HtVuk5{IRPUo_+gH$|>@b6`00NDZ3vG2X zJEnZ6XHUVvCO^sYO-fc=Jtg~I&Xc^d2bLhQ+i`o%{Bp}I4`+^GpkQBWT)fvdKv_(( z&Y164J6StgAfR!Jd=eF1d-eb9`6`|UH0?J0Vp7{vg1{Sx9IZZ*8XT)DUUKMJ1YUg2 zm$l_ps1RA7rLB}9JGUcfO_N!$rXmg>x{*MMDQYrq*NF%O~b|okTt2$ zBfm>3_833rN3;d$dDW)4zxG<#TGYmOh6I5oH4m%nqM9WdrJiTTp$in*(}+MYm#?Hx z*ZWAQR{pX1WW4;?_1M9nQ|*d!P3k(AWi0-*L>qQ^cU537Cbr6}gNg$hrS7poU}x$< zmK)Z>hY%K_+49}`Dts+SBj}jxm8if^sFdX|lkd4tbDb*-d_Nz0o!5A_xo~BP_8m53 z-iku@H>ItL#AOyc%jV9U9sjz*cQ#H5LKmo4Ns4~|Sn^ry+h#@KdQ3*rK1%)cg3VQH z-$#VE3p0rzZZ)R=Yt{s$x~VD0D}x%KD<;(qW=~x)%5pc8)1Bvgq7PxQVydEYqb)GDUEG`T@;$xZ=#^nUi>!roYeUJs>NbiElKC z=@3m~098kC>AcDE=###5DDQNG&14eLE>VUIy?C&`fTO+Y(AvJS|M&O*N4zpG^D?6Z zQFL&PSD|KR8VN>jiEmrtOz3)3(KvFQO;p=%nDkR*+~=o!ZAGxf_e25*DyKw^>2Jfl z=A$VH4kMH$F1TJS%<`+%n+ z34NLT9cFeROWX7!n#AyBgJ9#ty4rnGqD9aziup;-x2J~~G#+HH>Anb2g%O02D!7<~ z1%byG1iY?@t-Ra6w2S`=R#Ore<5}x~_G{bs#WX z(9j^$*{+XwfK$iz)%cqhYAVHflE~D6W)$kySNw&1G<7Bl7zT%kXbY&8Y(0`uaN2m# zrQeg!1QaHkcPCXv)MxhDXjvbrm|^Q;7ZJ`7p6Sktsp_tVDG0r4HNtW*J>k>Ug?JOFB2hg%dc$RL@TVGM&c#Zk7>j zu7es1RpZV9OHkFmg5puIAXCIx7v>*9)P6piBk99EO8S(DO9K^{dCVr}Yh%&rsATlR4b0tDGnGU zzI+;Tzu-}P|5~|T!jubp;-U`-j&Vr$<}ZfnWj;Gpt^37mGh4|V$7r#5l7BkYz>+5*em2c5Luhbw5rf-W$%&k@^Z)p@I(ne0N4n`%UzO4H2r z?YO}nDvUdiYjj+=R(I`+8=c+KNA~0lLfD$sB*@wIAZus>)Xj1;EAQIL5?#3w+p4p% zt*sTP&Ga+J8fdNHyfqZqADt&S0NS<*=^o(M6O!y zJqnLJRmg`gY{0_}4qAZpyi6`^1Eg6|Du1CGy2Pq2T!BPlybmycVkpb$hn3V6Nh()#<%OcYDz_dUZT`CTD0i z8+;$Mfq{sB(3K!kIl(ZVHb+b};`3-7+w9!FHMc{KBRKF_m`JFueWN#JwJK%BI@{wq zTazr{_2Rt~$ps`t-Qz9%&O;w(9$FNM0|hv8kG$V+%#i~g&PE4lu~lMJl%hB)Gx8E z|4BD~HjUg*EA)bhV~@oqkcrW8p(`pIvC}e@6~|wD&4&fp2Sz^e&4Qjw$VGTymiwEV zTUUzD`jqd?>vlNGyovFO!;SRhp%{*)x)i1>nxI?k*F8!GhOQ-MNtP)D_5Mc8BNifq z$eewzdb%}ZTHEJeP@M0nx z{Y5-612IwGEP3rG)fCnDeidP(n(oNDJEp<1Jc zsQF^NJ=aP)aqv!U=e3FR$XLmKxGaKFK7yY9{*6eCtpiTwVF?aK4vR^;l(O>M(+fRC zJby|6hL$PP!b@`FbilzJZ4eAiUBBRc*9iT9P-oP2N*fvNiZ7{|Gc%RJs=&}yP0{IU zp)zDbLpnhfI{oHB5IDs&=*5}0q3uy`649p1%JA@Mmy0ftBCFcOa**}R9}~)J)^C?v zfBLT(Fwd`aAeMjYsY_|j#fQp5!gA61Thb8m?iu3m^YLc|3+s+Pr=JWVjFKl%mM4Sm z%d1B1rse4N#nve%b%MczZr1kR6x2s+InWeN%W%G?siA~O9s^RFqO*8yg+oA+rzRBS zNmX%nRJfEM5r&5b!qYOf;Y%2r)9k}*b0YZ*dS;Yfhe)on!$P3K!G^UI&CX&2rO=ro zFKB(M;K$b)l7=nY_z+x|(d}?z`bfQk>k)W?Bc%4P2l7m~o}Tt@ILl$Qs?%;>^}v2I`ALZQk&xYeLmMKb6TJ1JTRJkd3f*Hz^-KuI{$QkysE^QxJ8yb#;3AHBZ0*I{*} zY0!PtOQ3inZ^k1`Vyf6wzg`#NvkbBZ$W&OWundgWCiiqHG^2fQ)m4#-@?B1(9f0N} zEmQ;!Hv0P1)a-Ys-ye3$3w`EY+SyH;Fny_;Eyk7!$ld5LnJ>m+WU83tKo|zmOEdHB zn|*9g#cR;hw67jP8BpWzjWBA?HWJ9X;twhYBRYJm1xL-YyS|-#bz3=DO-?dhE~bq* zpM4qZjpEv^lus3zlmx@!KX}KFx|_b~v(BwRBlp@Rx~kTG7Ci@1mX+uWb@bcAaS0%( z_E1rbsdRj?h{UDo!yTP{Eu#+i$ZyTbc5AY1966&Hw2{lL*8>7oEtf3(w0o<4H(!QZ zQ0zlr4ve2}DxeTjPnpOjNX3p1)%C|%u%YWTQMo$2fnnWBjTqf*Wn*yG$X zLvmlFqy&ymFua$@!2Hc%)DrJH|6_bipXOhWoRjSmkL;xVck-Fw4+GFtS7w(k96VBuKkJ0=n1U=dnXVg z+uy)ad`~L`#LJL>6q-;=y0t3P1OmaBmgDzeaOm0*v`WipiR2I!EQnzggp5+IlV%5x zo23k9``hV1p@PvivS091@l>InEZ3P9STkjYB58)!S5QREGrwIhMhDA@9L_uoO_LW4zGCuom1OAHL z0GPhp6r+zwsf}<7+2VV7O6>N$N0$s^tVYT2al&F&A?Bz*0v^cEwgsmD*@iXxGU;yT zU)y814LGMbqu#W#9z8J}9_I+Moq6GCn=jy7QCOiDmf!n`X$^cXZ15ZkhxGPyG>!&D zrhQ7rXEZNj)SA~@BK=Yn#={JhSYVkFe2T|)b$Nb?eCm4Cgc@c2JzRoy^%*iC?ZG=7 z_elh)tZ3G~5S_y_)@N~jdlvX3PRHysD~^R5cTYYUDw*#wMVIu+no%Zmtr9B8^A!1Yl}gEbE|dvBNQs?%=#oo}@j^ylJgzJfUnRz&kV8RtvNZ=-l<)g*7eK zG3(P<$Z@|aHh@)v(KQeI`9tJMq-r1VT2k;VO9T$rF7CPt^rxOLs)TQLs^No5u9bEH z(f-488~%pIW|sOt`F{3`*fgtHV=fjG{d6|w@|uVLEKJWQ%vVv z5>n3Zgf6g&j}2ULarR>s-H_#oZbW6mDvOt-tOh@79lP7jq=U<;w|Q{CEZmuk;Wt-r z^m;eSo7`xq(wgJ?9eF>FUJ2^d4a^GfNIBnnvCM=Y13#s$rvQf#8?~!=hH}>DYziES zl;fRSXO#}*kZz2g$ucS`!f_G5;H_5XU5CrRR+HvkH}H@9H~<+w**dn%Cb<* ziD44vtAa716o?qAEnPN2>y}Oh_3S$ys4J}YdI2ImytKX|T1g7MG}#g>8Iqs{=Sbm5 z-zY=ZG%(kVbcS@l`UuFhxCI-SsnWuUivbvuMxbsy20@sLWgCch2O8+!7+)L~u_e=O zCwBVA3J?U<<=9?{t)}VL^^|QuQ`#Qm7-zkxtC_A#Qw@_*Z}ZE0jItgs_;`(^O3L=} z6T&Jkt;>ds7{E#wDxOYX?6HWm)O@;_-pz>DNcN~H5vmL+G?}U|K8!_<0m5xb0fLy| zeTJ<(tmY{HwoDJgh8FeLoH=yD19M|>QB$;WMKlO@t-UwyTKT`D#Odm)-AAcQXPSp&JHQxUwh$WL@7*@y6)LHd*YJp-9EFKB#Pq<2m}VfOz3cj z7o1>|c{+m1bJbajA0HqLZUgpt+ZmaO4LQ2oba$7;T0>=IrlK>s*dOER6;Vgn!7}|S z_jqRs?JpfwwIy1EjfK+>cB?txn|>H`mfYSIWr~kS1j1n)!?4_SQ_W*mUO@rP=uaA> zA!v7shumM~^j2j(?asia`Z3GCXzKXLkHsD5zW=l?DKhL$>AND4Ha?F8_w4uahsrS0 z^1*Q1n%34@ZlSLwyVele9o&DHQ#OIQNyxXLZ(c#Yh2@%PH?6K$vP2_iBbYTQ{FQCM zj*s0PnQvi(bL|zYm-l1O_}I=VB>CdfYxhj9+n+ZMUCceHhb>@)1P~|;xOF1eHvfUZ z&1?7}um2c7Mub@8JI^GL*XknSmLDA@bH8TRekY|&K9O!2{gf<;sv!+D@EAGEUMYct zONi-}>Xo;?sK2055&tJE?l*TqQf)zu11UIR|!cYkmmf5KB z8$Fl8g=LAu^0Kv8Bi=mhGU28p`@88B8goPwq74J1SkQ=7818=6Ykr?UJiPX{ceXT# z3+^BkZ&pmJdF!72TVS^L@=JDV~;md}CE zsxpKJ zguvl#zFy3cZ+^q*;6F{I<~^SeO-1BDeW#f-wfn1?D}Ic(D&OO?l;p23s&gTpZd;62 zCyk)812Uy8LtY{{9!rWeFUKX!Tval-cK28GwqlImm)JM!bnFaUM!r28pX`rZQBrMxnjCA&t z2(9w+!F=0U9$5zSpcrP&mYQ5r4jsbcaOPfg0&{QHqdpEgjl<-u6GxmHOtx$Z6#RI1 zfDFN>4ppw#GPP_r=a4egA7wpBV=QDhryE9i_2F$W0R(z%M=WFO19SGe?Y4YCLh$|U&nXsc=s|WYqAs1Q>H{P1XYgxb}2d-P(9Gr+@Vfl_l0mbT<#^cay zMv3GLZOk8oPX$)H0&6|#OW*C_ZqDrppJKmZv1lAq+no-9OEAN8g==R*<_oEl^RRCW ze>;=-pxB{-8&U&>F3CE0B4yfE#%Hqyua)q<>Zy|)M@`bVg<|%H8jRb~Y8^W<|$vp(&kY!sXzW)Bczva;yH%5)hnO)94Eou4o z!p0ed+Z_i#Cqw1VFHB7HM0@NI{|C#fL!uzy`DbyP*W;S9;K~}AE#xU&^a{LreG9iW zkN4rCet5w<^OH+W#xGC`@T_*J6hzL~1-Plq?5XwHN|9;D?^)mT*D~*wK)M?Pa+@!@ z_ynZ~lsjT`LQv%sOn5sF8pvs?tx3ebyl0!>nFZc^C2@pvV$h*!gFx7;_Nu!hKqh~^ zq@PG6*1)+k`GRL3?dgXuf42( znOEv$hx{wo;xcr3c8K)+v*fIN+Ebr_dXAVlD?mR%1Om|=NLRI7-uZTDpNZR-_G^i4 zf^r13Sro014>GA@Rl!B1y5XEAB585K$!?#rilT5gs0#bC|9)NgKXN?eW%7VlIYHIFWQ;Ah;p=d_@MUmxOn?6RJRMF2 z`)-Cfur0gtdDtX*iSi7i_<|o-tP3kQBP>E}iyV4^GSqd&+YRJ`A`ui#mDu=WcZvwR zbxEA)`Kr^lYWbP@s(YgAn0Z#jYTv?QPQ_aJIEh98BCq&A7TO~eR@+Yaq!BiHvGFAH zr#Y@kjn%N*DOkT=>g3|9{X5}>5_Q;~>YC*+Cc%ppbNKitTtZg^jvVK^84icTL&?RX z*Xpb0{Jq;2wz7Ch-vh-d?X_{;WfkH#ql@6q^s_~_Kw$@i4Y~#Rb>(;e0YLUy)SKT8 zjjYT9$FtmSub-tpI+OK0$Y=%u4Dw27ZX*k~Kgl)0oD**Wu3E;8f9eF;baH;A2UVQ) zKIU~7g2xxa_a^+|yLPW4ll<%l8E z$XR7P(YNu9QPF~k<=r$#pC0n;MMBg0d9Obs+Wh9DR~-jX{cPKX1Yw&NFCN|b?eTL5 zH(#Y1m}gw_%~a~F^zG)f20bUS6t_6Ibe$uavM!UuHnd@S9d*(au4&IfWNmbY<8)mL z;t!*w%3Mc5lAou=`<#LDo(teU)VxXkkriDWYjkHK366^kY@{zm&wWEg}&rFe$ z8EDHwyLZX4lVp~|fWWFETi>jM(KtRwswSeWa%U7#Vx(#y(Rrn!KGI@E3zr4w8*D)t zKJ&WJloi<4{Ryhk9SoZCxjsrV#PZNMGh1OsHzYT1qracJ4XBweAE-O~=k6U>Sjzs@ z_iU}!pA)RH3d}Qn9>bOI{S*`u%9HR@;o;GraA9Z|N#HB5ai($(4U3BO^}|5fKsn8ht}U z8>P}G^2(^TzlrQAc%1<6v|!;6gL!%dwpH4w6gFc42ETR^P^Ylc_|Ew=snSKy--9+t z9>$z1t}`tcb82cAlLbx`HZos&duM`We7xXHoiEFVyEsW?QGcJVM_2>MPV)R z;>%y20n~Ts)YlWKGc_#FCj_Y&0WAbcmMC(K-3A1LZm>e|q2&A)X0c7y=OC3i(wV~E z^*n3C283pNpl8!pNS$1vwT(Pw1rY>?z5zJJ59@WMATOt=zgO0k>l>6%!^h)GmYHGp zB}`W*F%aBWz|=gN16%o6$c|7gYM4|CEUSgsG~Y?fio88RaHb32-RAKG%O`s7`+65!RBQ1#KUk9S9uZTREky<^5ReIEtI}8NRNLud+|pb;-VOZLO5D|KV0;GlUhTl;VUzNbOE)^<*1K&BeL2h-Ca_8y zK8}zWqlzmBwQ&5YPbKt1Z?EIbZ=?i6OCy#B=QC>Q6W=mLM4e9p#=g!W^R1T4IX=ae z3{5YGSKYICd+H!w953#MO7Zh;ajg*JY_^JiFFo;TCQ-9uy-4F|WkWo#9e0T^HOoJZSpwx3?*Z=FUNj+FdL z#AlkGoz{5Fx9Av}rmz7=|AEn{gHrpzDIY>hZ+;cr1-pD*7>$3>>w9k?tDM@rNFV@# zK$(+*N`^QW#EHRAe_E9Btp)y)6L|&T26)}Y2IA$P-j}%e9^{$UBd&?%+I1i6#p1aU zN$GB!;8nTf0H)@y=Yq_uo!lN}6@62%rQ-@0R8~4~>i0<7WVF7yd15QM28#|wiHK;) zAS?rrDaVqhjt$jX$4(}fwpJHJ{>0v>t{GId?lK5T`S_6p0367Q@yZ;#M)Te~=@#bw=Z5Yjb9|r>g3O8QJuops z8O2D%p;dtd?O=j_(A;1?SK%pWdFK#Drwe&A@DydL?QQG`^z+G}!*PajV`vIgfF|sC znP!YfRX%T={eeCz@16Uui=}sCCK9yf7B?~6QVfT4n9NjW!2IIs4QO9jy_g)u^4lj` zn`08Nlx3Wi;G~UFHin}r_^72(7+9!;0p<(-^tz>!(oWavUOQB?oK@M_(J?JvCqG|@ zBM*~jLe^`S6Pl{4xhmZ0VOmnFhp3ad|2Zhp_ylJ4ny$g)RxSR($=HPsYf4noVuTwE zP^IA#ds-t_wwdbn+|-}cGn8_wfaC1E2R4|H+bi9?U~P%`IRb5D7? z;aiq#mUm;a$V@W1P#SKov%~A#hV`WkG+Z!wuVGxFWPQOKm)}7932x~L$p6fr<2lyY zlS=#3L!0*$$F85+V|Q}pX*O30V{t_qsosrEvOH)gwQ`&9@g|<@vqpH3BV1q*0HTH# zJ$lb4?Z(1xueRY4)VBx*m1H&ciJu32rX&+;v$e%xri;&3s+` zUmd=Vw)2trS}v3SU|~|VzVbb;^l)B@$7%Y}yOzI4_n~84O{^tkywk~aF4HF|Rg6p; zu7fL_-%~;{fWbU;T>N8?#6J^l)Ke-eqnhgFxD9p&XcA)>GGrNF$`CoQa;tLV`bYlq z?v>)26+sof7A36Bj*f>RVYTqVh3vDgtB%ro?|+xxN**)v3EJBgIq#&rLJdr>oYk*g zCgk^XRR)aejTr@*A#L4?MeEJsvBSDOzQfhC`qb!jjCcA<*zp&C$lHq+V^RB>FNA;Mkf z44Ggh^XP#I5d(?nn2Hkn*k0;S^ni*QH^|L$=tF^Rx}!CW8h~ikv+Bb#BSu_wMRZew ze(>ie>uhiUd&b*OodR2-6|PrdtxzO%kvmsCLimQ=ld7#FR;Xp}2z9_Pe18@l?UZ%I zvT7s}Jcn&C>|Lmf7{rDrs2k&3c*`S$9}I51+sW&6R4n-G9lm~EQu>r#e8oaqXo{@U zKGYJ}wn~gx0}<1wlh+#RIP=cD4Rf@fsCFo#S*oR3CP6Okt9~@{OrRh-X$cd;fQ}tOwZL zxeX{vk*GnF+KViamf>^@=t)oc&;;KBIGWnrhD#?bSh8R=FP#td^Y)c9Sl(~6e!oH! ziXbtVURom}n%Y!Co=U&e#19tkZ+GX4AecG*mzYlb2_5@wCIEJRfl-+ zhEW{flrAG9V@+OZYMh@?pwJ?;O9xZ~3(<1+R?of3S(0>CRY+tW;=)ycvVQSN z{Hhj%i_tHlWl<%~m0(LfX3dha{7~5tHkF4Bt#T+5kiNyxE<){sP8r_r4tuhth*7>t zy^)}R1l~xP2Q`FKZD;FLgaRG>{{OEv)!+I4&4K@N4qz*-PFI0C+YKldzPX?v(7JCO z)IO_1bsLaU;4$X;O6?Ju$&I% zv9WB|&w&TuoyyKYe*SFKoHZ`=ULE6H;q5HkQ!sYw=g-eH4~D_eKxD|$&E?-IJ3LqG zt2cg5rOv$2smRWXNHY8ad~YA=?`LfAcY=TO@b6~xcTf3SIQ%US{~lBRWf*;{5R?Kq`qOe@W|DHIhIy9u zfiEtZQPb}O=RCKp!1UMV(}`60qKtwk`)irDr92YVQL5fP^RfVoK;26`h{T**MK$Uv z4z_-8tBoz^>0LhghjN_Bm;OlpAF$ETAZ&59%hFh*bkATwTp_~_FCaGFc)oB>60c=i zK>!j$@iqm39r~=AQ$JJoGz>ch;M$$bG^OFTOFvb%42mqfr~`Gj6D;i4{pVHmga5p% z7pwG2C*DP4`Kd{9d=?{>RsI%Ao+r~O-=|E0GJfUtrh(^GeAy z9Be%R+x6`qj5$!7>KS*|=Z{fsbgIBPTPi>P!5N8)L~wu^Lq8DC{bIexTI>PEM{>N1xu+Z(cqrX6K|e zVr1ctqlyUw@#_V)#W?BT{=G7=8ehdaDEo*_oL#nEmNu^vEe15jF2c~$t+kV^=3YO$ z&!65+YX00`+wWEU1xeK!C3He`iPS<=wJ3Fxu`p3Pp!j8f<-gSI|2%X@-`&Ln(rc$3 zqgND-^Z3pyhQ$*!;f}nZ!}rQ2gex>xXxy^dv8(z^I2=pP8%%G`4@a(tIFPmhY7P1~ z$JWZLBL~t~O{M?kTOFs|!CMVqjfZeia|-Ot{C|0Q82BRzDtGAuC4k#U33WeboJ4_k zx*pQ7Bx2xtgd8!0gSQhsFOhhGE=F&fyl0)^!ks$SjSLptWP~$!V-P9DV?md@+(0%B zq_TTi`Ea9A?iRS2D}wnw`5#kBU= z{>~q`bh<*~o?t=NIc3?orB@}1X;@+(Vy|v!mzPxUSyv2JSJ;iloXH6G7`g7mvwc@Vv67KPzQqw4`x&EL}(!cN!Ijjg=qIN4xy zD|2QIM~h$qCDMUcBDMhxFldsNlORodBV8t?NgEnN1QYY(B68h+^;mlVaP9ME=zV}U9>-B494$}ml)-P`^u@s)V5 zS&};z>1b$byIZc#^3O~C6cFc5$j#*q$ZT+3{mRk5(`c9=5Qz<1cpEf$m2#rok z)lERHTF`*AT_b+1lSggUVlL6Y7N69PFwC#df11EPwf;o;5Rp5eJyOCYVEpQYO4c8! zSK|+`jU{O{=UZk{GuYbk^I z5~;@S_k)*FETP>b2KtdOQ!r+E#oN@5_NgBIE*4BpuGKwb3cb-d1TmZY-ifV{8{`d@QXDUJc^|^T|s>QgS0hRxeZu`ZUdS}c8a{T zN8PEj{ZiAk%z~Ni%E&rc6i^X0drIuH)SK8Rha%d`U`3V9;kQw+1o`mM0JCvQb?|tm zf!^_UbD;!6ZUZ*lARCm}ozt7{$)9<<>Y831a3naq+m!iKVm~@mo}M?)_j-bqVreRT z9WbHfg+a8!`uRe`hy_Q|V;XJ3{-y~ zYi-dqA<2}i06RL(lD^!Lz*@fW#Hi1HkZUOx?@L*gu6d_tk3JoeIiVYk!)3iF?k)mx z$=R*8hwO@^)LfD$50M1ET6zehhvzR;AfH#Zht_a6tC2xz?bFzuqpj zb4_|=e0#U_#6aLtuw_@&9xuj%5&q~W4eoU{$<1JGU&a9NPT>7(D}6oPx}glSP*pum z5fSY{{$^N#U14P;g7~_v7t~x*9nW!gZkCfH1e$beyYV)n(^cBRb3%11w5QOR37%sf}jZB{D$$?WrTW5C{=N zuIn?pV(#bLuC2SL#y0O!@2s~I&FCS|1LdEoZ-!MgQXB8)`t!VW0$g==ze?aAvY(BE zrfGHS84kp8oLHiGI~sN17zf)wHG3+o-1wv8UCWmP*}-+ddgYr|lpxcWC7+$uHFQ4gLB!FsB@%oi^$ ztt-=#AM|7{6yo+ygBjEb3E?M8B6HGnR;C!~AAPUKAum2$CQ^NY~6ys#Dk656XyoxN)DC5f+eKzyzEgkurC5x zi*fX3NK8bK<(Dn)^zk`4Lb<*rgPL_XN7Rd8ZpUlF|3+_E`gyIduG0a)+B>!6%yuk9f)K;H@|6=j#60_M(5&bQSWDdoNhT;%KZxfVos~ta8(t z+wZiJ^GJ#cIUw{*g3uabwu?NI{y=3e&ZBy`qAmE5i3@Fr<87m;c#n{GTY+~DmD$4d zCNq6#enU74O`&gmG^^V+G<`HMXU5uf;*(8JL*)Y6v!9nxU%~c+q|p zaXUQtI|?hIMh(cRkrtXxh96&Xsn$gW+$@zT1EYN7!+ng;E>l+J=2rE!qY%Y+6yN{P zn}7-_+Liu%8vqO525{B30k59zA00MkOV=&6Me)xcpZez%)2`3Mm`xvES{Q865&TO@ zXtUH=@1=bO%}58O!ATGdT4?lDxjxnXx7KS_B>xIZws|~?xzbB{9lMt6SeL&1IU_;u zj8r4NEezp?&Tql(8vy_|&1CbUuJn)Te+)u(Z~OrO7+a^#(~B_uBhKF4aGpdqWEF6% zD?e=5OKMrsZXSZjiBeky!%$s>H-N}I{LiN1u#9C@Too2>d|ntgb6%|oGcZ~@LZFTh zwnhFfETj<55%a^3!d?37VH`N6d}7L2XmG&@gaM9qCo()JS!24bL&8naOSNCuqiF?0#gB^SX2xLDeoMAMs#nEo-{a5y3ex*{ye7QLlW zHjRvnWdI+%3F9fUJK&fM;r{ImIqKg^`akiuD?3)rwb^Gp6VW2;^esT)y}o&9`M0HK zJOM=V){^ck5q?0|@@nADL#ZuEqv9TPtk>kFfJnE{OwUaWenx1C1{aWP zOMh|U-(jENOt!V6Yg~uRSK??Dg+_;dfSCClEo#50?A9}A7R0wqMEIR-UF{z{_e})qC*qyNuO<^0D~;qT}FBo6Fo zds_nQ&7byA6rax&Dh^NU=ijBm7RVB@i&vsnKlgs~So+M_2IL-nEr7CsP1q5_U=n#Q~Kxj%QKo9~6gl5?yEkQs)2t`6q2pFm) z1T1s}1QIZWfKo#5y?XMTIcMJId^6vCGv6Pl&3pfKudF1KT(j1-?)$oa#qTI@|L*L^ zvHvzT`tPUyuYDW4;tDmm4B)b>znKkfbS=&#a0)zNQ6=rWJPS`iTxuVly9@e1W}K*L zD{sCE?A<07xGrK?QK)cU+@FK8Xd$G9b6byg@!ZA3*yAD~l-mS}ou%cZX+kYM@pV^* z@~t9$=Z{Z;j(;6Jv3BlG@Sb*_TH!i$-J8AnMa;ay;h%osy#@|39fr|`HzPM>7>fC za#D^!{{tIU_&OLC5>z}pRI9;3Wa03#4Jvi@PkQ-CVYqifxz|_7Ua$JrA{giK2DK_> z+FFF;NeT=B$0=BLG{sX9*Qi>zKPEi0l=cqVpFfk3mQF}<01pX;SaM6%MF^3~B%C`$ zeXVU74B||4RfyOs36hKRKMpWoQYu#R_xt^;U6iaXKwn%}*<*7MlvZ-v7B)W-Fdj06 zb07BreLJf+ssE4s%V+-Zvd=1K;-Oo1!cGB|#Q;C>W+fu4laI*2vXgwXsEZtec!Nd| zodcz>+7pGyBmD8R$CXoplYY-iDzp$pW8fQtN;#0S^c4J%j0{TehWV*t8I#+2r3_}TuRIoq#_RqDVkIG z8OnWq9ga+%~yW>u}&91 z`_;ow;f&(lUSqy^`}HO`8=wvKhLkbO#^tD;nvj)do%%KFM|OxqG95J4KzT zWrm$=y`18jMa%{IV<)3&QxA+(h4wVPxU7Q3ot_x!?tm@Q(_5ILt-9G@lc`ffL zT3Gr*akkRHf^IO#itZBB&CxqZ3_<8>q};4`Ye2yQszp0`-7T`0L*(@IZp(av?^a;u zG14+t_}6>K_f4=KZ;lL{&AacUG|bkXbxS5;%H8=DxtH#e-FO!R0vB36J%0OHtMV9M zt!q#G=TDx>Dc)Zm-xG+kIh8sI+nt;?NG~=KzLcW=$VjJ<*drrLbk1h0hqrV+jEY<6etF6kOi=-^mx-hK)af#O5=dnt7bOmKE+V<_OVrx%s<9bT7mZcOVd(H~zO-DocK3u=EQ29IO($V5@A% zVGIMR3VVDd0ERk*kSQ2EhtFl<+u4ZI_d#@0y@W%g238{iepM%TYr8?rUXBmBauEPO zSYq&@_v^QEbo*ko)hBe{Y^rpg!$Ms!j@hivOTt8OEb%~X8sN-Tv;te^8$X+lYJ3C| z9Cpb6AYbiP9*r2MXpr2#CDey~DQn`20)of4jU(l1Jee;7#V}T%zAaxlTI(T{V3CEG zWp>YQeZYFM1_0nlFB@dku{E8OplbVlW~VhXCIhw8`;v`g=K-rlnSulvI#s9S znH&TjAN%ymaHLk@01Z%D-EU!K1-xX{k(2|i1S3!`Ck>9*&a0dNtFbA>*1lF1+M2Zj z*G;1#@0Nt0Hz95j?35a9dyogqN~@dl4Jht!>%)AOL5wvGOK>?eitGtv(s(2VujFET z{7!j_zgHso6V5b57J5c1=mGfeE{dlXxEF(ks6z=fh?hDmVA#KY`_*43wdamILD8S6 zhcI*Fkinyr(w{spP`mUC|BIhDzip8q4SalH2woihfm{I`Dd5;!RDVCa(0uZC6^V`efn+YrX{H7fjkAV>{Cj2tdL}7Li`LaDA>&JP z6?qL=D^rsbqJhj-3Rz9+jE=9jqQLy|uBB9~mooy+PAFTGK^ z6O(bZcXKGgS|M~vpqMC1y>Ag-^Qi?Y`<~GQ3R3;Z$0|UwDwem!D?_tn9@Vbd2N6mO zijn;HU`R7I%KM#Ort56%_&F*gs36k&gYt)~qOg7)Y4w(ED~Qv53!7NGrIabYPqY2> z4S-}gIW|{VBKsKhljoxtO{QNvOINs{ixdj3SMI11ij%~ina0#;bO>!39NOg4(G51i z+u|iLW3SvEtB5&m3PIV*HSQND=%Gk6sh;#M${CX@HMI(JaTy@qH9=`nq|$Zf#w zk<7G-J38*2FTXz0xD&Vit-ycaM{rVOF2RUg>AZyAi4@7PiA+PXisuDl3g+%_?p$t# z!z=uu?wfMZAVXJl$2mYu^wq>8Xymm=Sa-qS#z-3Nc4fE+UFfnfsR}S>Qyd80 z*NH-@>xLHrr}f|W6Mxs!$JxBa`-ARLdb z1v@kYK(@6=r+SwEU}X21k9fP7x6VxaVlDbm_ohRig@1$k*WPyjW;rRY(169UseVcP zZm9tHrFr@ScB(cF<={^s3L6%b!ltH53Fw9%#FcSqtwYrjEN)>mA$|M8%OdBD`6I)7 zh9lWAU*-+$=j+n(xgoi>U8P&>urwRO%CIXif-<2E$bTci{uY_FmFzSpH67yaNIxV6 zAv)#wH`_yC(#N9cl4mixCnOLHZM@GO+KmO8{4+AIWbdzo6QC5JSUyhtby)@pAHm=r z1K_zj5Ys9wKij~rJmU`UA79FcvV4Wt?O<-@1;ukGJYLN9dTMgJH#j^xxrxU3TevXG zEO^Mg$RF8S@{$tA5D*Z!Fcp&}y%@iv1YQGKBvTBuxv#ZVwr; zCdRHx8LTZcz*awb^6;S{79Bh1vpyRYhFPH5r5^8@O2NST;m;TG#>vzG6Dk4TbgOQz zzk3+Z|0VkG@~i%xI|?#=9@srI;i(w5eUF(P-IkzrRW^uFDNBH3Knsk{iBqSy5Eh3Y_9;mC1XInjPFurz^adii0@l{vAjH{Srh$>HR^(aV)AxO*b7cQI zkPLNB`}n#lly6ukXFpjZ*MB?wIwCjG&BlY-L7Zf00>Cr+_ZRKjh2Br+_&+!VqVpp^ zZjWF}usPkQ4A-`}jt^_gIp8}QbMLMUo&BfEK2X7%tLE}i4yo^7~Z4bCcSrz7swh(gFa*Fy!5tqhnz zvqNd+mk@PThO57OHo4I8AXJl}W%CUevg(XqvPxROKJyUlAcyN|Mz$0cqxFWx5a-No z^i$KmY~v*|qDA|)i|3zM|NFj4fp-2Uk9+EN(&3`~z`L(=R*HT=hShq>48ZH?RPJdD zq@#zn7JP_EO0{3QjK(Pf;ZWYlfhk6?MplN7J4AM0xnN}aFsNi=v`ujdfJk8y7yn?O zBMmX>@&y-&ZI^@7(~r|q01`Kh#OnZYB(RAVdU05bTGGAs=1P!jBlx3#N?aOPz96k* z=L6F*S-0~$fxQjh|1hE?kdy!Ba`JYnk7%S6TgBHo7fO(C(4EIv7Y!Q6{2i z3OvxN(IzXdXk!u=QxjX!ddPCvnxA8>d(7=4(rNJ$|iyEmwAXOET2!$RNs-(0k%u``R@v=O?o}gYGUxd zcIDEqFhS})VBo+AM;?QgwQ;mr-FdPdV6T=; z9}Y;`8tFupG`V~)s5JU&1K>a4v~lFZ-f(5$hLivZdkF?rtMpM%#fH6m&Okqy-ruoJ z6xo#uhI0X^viRLdqbuiX18s^a)V8fp3__ziZ0Xq1^$2hhynV*84nIU8i%VDW@D1L=AwAWB3LY-XQgyMUyWK5WpZBS;La<>S55#&n&rj{xw>kbasUL zd*s>ePO)FXpa%`uA_B?SF11sr8ozwh-@RuoiDie?D|2{BV1=`rWDwoR!n(BDfGKcQ zk!_RN#9L29V0kJ+!uN}wZ&ycmhq(zfkvft(@dj%iI#$t}+07eI1r>66n^{G9HQfEo za@t=fR)QB0T*S}67Nl8^$4i4pdo6aYshthI1()`+$ItDhYOKv~2oZX6vs!p|u=&JeLfW#P3#x zzX(3Io^8lZa)v~K{DY(qWJq1O{n@FsIU%yhlxxL2dtWy1m7?s}xs??6=z)+rX5gID zn93BFwePNXr)ylmiIyV}>78S_Je|!7s*w4sJ2K0?tah>o`|N7+Xip|rU06NRr(QN- zVH#{1|KgAFX3Fv&o6RLT9%&x7JU6Mz@{_Sz5`?v+(QDNIkc<SK9W#u9SBDmXd( zz%FHTEhuIZ`vTru*)p2D_+UcAR((A+818a_RcT3!(4~3SIg!5QD#d<(EkJgZBAZta z_wd(asI*>00y19@%Q8z`b^3$ID-dxlzR39CC+={6 zZg_p$RE8m1ZuzAJ*mS(X0=st6BD>jIONh7y4}|}J2iH78-$ZUe-Bqij)rmpf1pn$* zsZ;>Zw>Wj`crL|ez~Ea%6{Vm{^h-Q}*c_dw{G@IPkjy8@Z!M0Xe_=<)4 zaP)+9pTj5aT2%}6Mf#bXx@Etv$jHsYaOT`n7ipSFh^6lP4wjf+|0QBt1Yp0MEo;rp z$3-*|a&!9}<1WQ=`Ug8D3YZjJa444WtF=Ykv{IV z?5n2xZ*oK`IKe^6G!#1mE!`8~9G?JuB9Af5IPp19$DewMP}V&47kCd0*!tRS+NOR- z94n(#D?}wIvJ|@-S(42<6rcJ(HE#zIi><)1V_xwZ?3;Ru=_KiJp+rtx&n&K%k3aH| z56oY&dH2`Ri6m=fzhy>@^+dJhypB`@9UJ4F-Fd5D>t7yG%w8syPz%=F%5hGdsmlhM zZ=D%`Ok78IPg8E*bX(3nKAN2&6fXe`cS|6$HyobGJ3Z)KvcDYb!^p)Fo8EuRbR3xt zFR6cTFXhH9+Hjpy#1GS)XyIaw&-H4CAJZPTixX!W`<o}CI%7F1gYDuYB(|dS@ zYPmS4#wyj|@!}&ZU5rykh6ir0d$az2(6@Dp-@tS-{i}x21J>I*6AOuKj+{m~dzRog zeFR+DRrsB!;V;^w_Uc8TWb1}~NzH(B#emDrWwoyq_qSzHhaDUluxp6{Q~%bOFunww z>7X`#dXO^03-0ynld4EdI2UBy4LDVcai*#}%{6oo@?Pii4rY)Z@^m;(YJE~q|BUT( z%644q;sw;nLd(&zSKT=g;VW!eB@{Ka-$?O5Tr=7g5fE|r(eQcszrNtJ8hq9coN%2m zk(#QK6n$!$K~l0XWob-V6DAw7#=O+__2h<8NRWc;kXVw~38H^>lecVsfRWkB_)==X zf+dz2fn=4$snys82b^xUh>kLYr1l#QH>G?!a8C@+E-g(=G4f*=u1r=(XfAxO3H`OV zejbo>+rP6Mp04ds+q)+kqI)UOxZF5dxT%*3jm63ORgCAi4W3bp@{h+IPOi4&+ zwgQygcVfV}$YNwlIX;E7seUe9o!N7IYCkSlqAX?PTEf}6GgRV4YI%UmPadT&Z=HFb z4ld}V#r5429vk%CG~?IDzw74)?9?Ah9GCvjda-O5XD^8mq}G!w zw&aRAz_siA(EVM~>mZ=c!0iHyQ3A;R+>hafFI$$D&Rb*gQAK6_{JR&}2RBI_(?+0f zst~nKW791<{5bVrrY-+5ey!-FPYgNxltLTVxf*dPV}#$9r=cTfG`pH^=J1a+;YA1) z|AL$aE$^V%o&eA^rdg_a;}{Y9A7AmGv;U01e@5W{q6l!lkw+HO$=CCXQ}93++2DX7 z;`g|{-VMV|>;`H7xqrJnNFBoaq8G0nnqM5}o(`dP43ROG72I4O%a!d$2P~#6-u|$A zad5%nK)%{R#R8a_NJv4aYv6M~i{q70mI+iRImk3{lH%8EyBqUz(~W#0PBgI2$liPK zPJT_QxI6;%Ks)6YU!;HJ-!1JjLk!Sn>@Z zcZZR;w|aEeMWFd!)PD6(9zETAPwte!fFI{463k~kb4x4&7?>B0UFqBR1A~q|2h3D6 zc9PAF>Fg_=o5%wz|4w~m@|5&MOc8*gZSZ4eehS=;Gzqlv=+PfFnJS29Rk=3 zkzvrrN;iSkE=D+5pu%_pL$clEIMFAk8a2F=y!&|VvH7#TS~kV#7bUMNDrs&ea>aO3 z5;YiSw5OK>kTu+v3~z`ZZj0s6PB`CPQR8ZMs5sd-DO3xzS7s`7lFPeIU~ki_g1Jg( z4fev0%OJ49xIZPok8$oyPmL+zcZ7(MRI59YvwU&MFAF2fMQbNWSY3;wgusul1AdVv zdsle8cKg$L=}o#tU=@9+j(sjtp(3ozgAjz*INdQsv;~6=48=DT=LXCA=vd(pej|my zhNs_4yCpsV>5|)RLaISlpLPhc1$^tu{5W^;^mtUl*WVwg{^Y6Bd`<{krCBgUHca4q z*`aOv0#Q=l4N$2NX%oq0IxQk63G<~iXh&I@Fw}ur=??>knM6JNv3uM+zMIzQF>)@+ zr?#u71XGs(j$w!Ut+l#H7rN)D+(17=UK1SXymO%EdpYgT84hJ@}eH}?9`26BXfWdq$ zp|s;$JlCm{*nfx5M7nU5S(>Hg6W^@xQB}nC8LIB~JiHDTZ|uAyPEZz;;A>=w@9V7e zql16Fbe{FchX6{(t5)xJ`Fg)+OWJaHd|iJh#7bNoPDpO!>Vj%lbfBO)pNGQnHLDhH z9@%>;oU%E1FGYoV6=1!%T>&QvD-mi4Q!whu{SW^~C0{u4d&Xm*fNs^%0*K;f&cfQw zf}&bE7B!-xNYb|uSaJJGS^f6V@l9O7n<3ywvs!=|vpc-Z)n9%uIJqIRl;uzBJlYfS z`^KZ66z=BQ(1r1}2?0AL|2eQ+gq)qnH z({1&fa-?UEQX36GTurx>W4`a0?$`xtKtTIuFej{pPb(Xsd^@*#_-adV_7{oKdo3fn zxww$|jhSpi?LNzmb!=w4GYwa8TF_etZu<)6sn!`Z?DSZUDwMOOwwda9Yi#B4Qq3YF zJC99H*g_AByf0Y_>{iu{cuVz38=7=$B@bx}h00#Z&dAWRX-p60I;;`I)nl7dZ9)LP z*`+yS{XaA>`i7)=FWcc9$*SrQ{!5-Z24FsATd$Ig+spGPr9Y8Qidi`pnyxcy?dh3u z#7R~DxJ0AoYnSRM}fI%G=XfM0aaiR1k$-0G)i zyb71P7oWoqEKB@`9KZVBnr<+da8uU5w)SR`D;NC&gUrG>XK|keZ?erJ2Zq}}-TlsC zwFLYEIZM73R&`D*9QGp(!(J)KHJ&JSJ+c5}{g0eJElp7OLURReEO*DUD=}TeGGv>U zZJQAVf9%4C%XI)*_|W&^%+!P82Vb~*h{)1V&X);eRo-gh?_Hf)d5v4zGwMT`bE~Lg zKSw|J9*&zw#vkQ=j$`#<{%3yj#0f;J+7!Yjs>ChqZ&JwcE*QL zS<%H|#re#DfY$P>y6fZqaVhK}23M9)jl6H^RTU@m=@1vPtEo(BaifmYt{H{@zv^NAEWd7 zBJLr3(>mWfR1OM(&maby!LYX4wYC{83B)(L@0E`J!;VUH!`*b)=?cdK6`j9=@p_EopXhWEjwvtW8J7ZgDD zpjS-M2(mNm)|)P>V{*f*jSaF879pkv^vxIm1(Skk*lE+@mr)9vFXN6ckkDc+0=<(7 z`e)OsT$$iYD(1W2;-~ynBJYP+tQb*#I#eXb#^p!YXG*btHZ#sFw6=z{i=38E}3oUyw-qwV1TMOIOV| zZ954!OzZ(_3nzW`Wj7%jnq2%tFozXvyPUAQ*gw&%G5Pu25a}<5Z}<8E04Ze^Se#Xn zb!|Jw03}WoD7P$~a|_oTPySl#Ku${M7H!e+c2;h>-X^JcUS()>vMx+yp$FJ=aVKX- zCS*@;Fb`MqbZ;?f!uR(dFKspsVi4$EEOsXrG%{Pbt~DP%pV7^WyY`hl&+e~q8jT&x zz3!5eJ_?zaYJZBA2tOqJ(8S6Aow4eYL#}LL**Iz}A6=uOl>K{}JMI$}`-T=PW92pD z{gPB^jPaGAxyiR7PJgRkBUj~;h1glKv2m1rnuh`xx!Tgkhre?xPyyqk_qlytCM&Pm~z{5g8!ef zQ#Ct!Eo<4wD=FhuRLQ0Cj(NW=6QGrx-R=+ki^Mo^Tw@ZN>H*sbNk;lYMS6QNs_?jN zXNcFEHn*ofW07SLEpNB3D$2LHhxH%NuEgD%K#XvRjO&?8t|ee}1Il+nP#^;X&bcfFrjq9(ak5P{l#Iz z-4MpGw!HY9ZM~fC_OstC)Kj9g6yhtpy3G+662;tqT-4(zC3 zax35D)-`7S3u`XcC^kM#q$8nO0`FR%QL#H+G-~$a_Kf@GLZ1--g@)dhy+lnYuUB&K z@^NOfV1Nud(GGW9pV5!#A4_@(8lU?%*)qiUsq$i`^u64%;~O=Q39xO4%(`}b#d`i0 zC`CQ{9eLS;#XlTkK@$^YX!1UPc8CeRx|scCt6mhJpZZ|^pv!J)nEQK%*p?|8lADlV zi|o|Ss(nQi;tSRgFVGgV-N8`{J$Az^sNdPAzMQu0yw#*g2v)25sFS9F@bvTTY7Nk| zgvdD#X=M`!S372$s;62f^YrDAJqRKmVD^16-x_gVZy zumIXtkp0%a@i!kTSmIiIYR7O8 zUOZ~k9eOdHlp80mg^ z$d$PHUq4Q1eU;0|>oaiesJB)^d!G=qWD_dJP1^(2*{QYsErdzMc4W;%%(QfM#o(W;==j!cW z6&2ot3}yE?WemNv{C@=Lgj?Qk2UWSOw&H?Obus<7{_yM{>K4T@Y*o#epFEGb=7qrR z&-{+keUxjmeIQXu`2nj3`{CN}C73t}DOCUQ*-my|D0^5EN?1 zI{VkB7Wc>GvTEp1i2;nOrz&G$p!dP2WK-fN&+dnxJbckhzwC2+)`t(HW1F|1Hn{x= zYOrCF1{sXLa|#Ob@GPGqw94%_bapQy11~NvOQ?+b;Pd(4K7Ar7Xjd{#*@{L-?*VoH zmU-Lxt~L&PxNJHj8$DZgdP#rxo_%g5N7MYiK?Nf;hR<-vM(@b15n?uiC&(vv)~l<@ z)faTu#OHuJdpfelX)}<<^zDPRu8olQj_&A=c|ul$R8Fsppxh{78oa%H+C9){_3`fW zAM2gq(07AOb&WyO_#Mq_>45jOaSKp;p<&%R_KxySx%?k*l*4OA1l~0On(0j}=%Z<)eaAHGlQIaztcHCHcb02MmXKp=23=sZZXQ zeUx}Wl_oM^qW$X2k@1hcIosIB9%7fFw}59gS&_oTDsAKI#?uXh?NuPuVt@g$h}kt0 z<>-%sh#S83dGc?U#&5;?&&rN44wcJo0UO|VOdpcc|8VRrawq(!xzsIaCm%4nT30x)oR4er7r}U y9Zkoy4a*Jcnp>dQQumc>2 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%0D{fc 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Πyr%W(9V@A>2# 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 literal 0 HcmV?d00001 diff --git a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integration-catalog.tsx b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integration-catalog.tsx deleted file mode 100644 index fc04b50c57b..00000000000 --- a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integration-catalog.tsx +++ /dev/null @@ -1,130 +0,0 @@ -'use client' - -import { useState } from 'react' -import { - ChipInput, - ChipModal, - ChipModalBody, - ChipModalError, - ChipModalField, - ChipModalFooter, - ChipModalHeader, -} from '@sim/emcn' -import { Search } from '@sim/emcn/icons' -import type { OrganizationSearchProviderSummary } from '@/lib/api/contracts/knowledge/connectors' -import { getConnectorAccessAvailability, SEARCH_SOURCE_TYPES } from '@/lib/sim-search/connectors' -import { IntegrationTile } from '@/app/workspace/[workspaceId]/integrations/components/integrations-showcase' -import { - SettingsEmptyState, - SettingsQueryErrorState, -} from '@/app/workspace/[workspaceId]/settings/components/settings-empty-state' -import { - RESOURCE_LIST_STACK, - SettingsResourceRow, -} from '@/app/workspace/[workspaceId]/settings/components/settings-resource-row' -import { useUpdateSearchIntegration } from '@/hooks/queries/search-integrations' -import { usePermissionConfig } from '@/hooks/use-permission-config' - -interface OrganizationIntegrationCatalogProps { - organizationId: string - providers: OrganizationSearchProviderSummary[] - memberAccessAvailable: boolean - mirroredAccessAvailable: boolean - onClose: () => void - onAdded: (connectorType: string) => void -} - -export function OrganizationIntegrationCatalog({ - organizationId, - providers, - memberAccessAvailable, - mirroredAccessAvailable, - onClose, - onAdded, -}: OrganizationIntegrationCatalogProps) { - const [search, setSearch] = useState('') - const availability = usePermissionConfig() - const add = useUpdateSearchIntegration() - const existing = new Set(providers.map((provider) => provider.connectorType)) - const visible = SEARCH_SOURCE_TYPES.filter( - ([type, meta]) => - !existing.has(type) && meta.name.toLowerCase().includes(search.trim().toLowerCase()) - ) - return ( - { - if (!open && !add.isPending) onClose() - }} - > - - Add integration - - - - setSearch(event.target.value)} - placeholder='Search integrations...' - autoComplete='off' - /> - - - {availability.integrationAvailabilityError ? ( - void availability.refetchIntegrationAvailability()} - variant='inline' - /> - ) : !availability.isIntegrationAvailabilityReady ? ( - Loading integrations… - ) : visible.length === 0 ? ( - - {search ? 'No matching integrations' : 'All integrations have been added.'} - - ) : ( -
- {visible.map(([type, meta]) => { - const access = getConnectorAccessAvailability( - meta, - availability.integrationAvailability, - { - memberAccessAvailable, - mirroredAccessAvailable, - oauthServiceAvailability: availability.oauthServiceAvailability, - isIntegrationAvailabilityReady: availability.isIntegrationAvailabilityReady, - } - ) - const available = access.admin || access.members - return ( - } - title={meta.name} - description={!available ? 'Unavailable in this deployment' : undefined} - disabled={add.isPending || !available} - onClick={() => - add.mutate( - { organizationId, connectorType: type, approved: true }, - { onSuccess: () => onAdded(type) } - ) - } - clickLabel={`Add ${meta.name}`} - /> - ) - })} -
- )} -
- {add.error?.message} -
- -
- ) -} diff --git a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-settings.tsx b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-settings.tsx index 80ab693734b..4634cb0e4af 100644 --- a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-settings.tsx +++ b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-settings.tsx @@ -25,7 +25,7 @@ export function OrganizationIntegrationsSettings() { return (
-
+
+ {tab === 'providers' && ( + Allowed in Sim Search + )}
{tab === 'providers' && } {tab === 'people' && ( diff --git a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.test.tsx b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.test.tsx index 45559470eae..c38d53d5c93 100644 --- a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.test.tsx +++ b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.test.tsx @@ -1,5 +1,6 @@ /** @vitest-environment jsdom */ import { act } from 'react' +import { toast } from '@sim/emcn' import { NuqsTestingAdapter } from 'nuqs/adapters/testing' import { createRoot, type Root } from 'react-dom/client' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -11,6 +12,10 @@ const mocks = vi.hoisted(() => ({ push: vi.fn(), add: vi.fn(), refetch: vi.fn(), + availability: vi.fn(), + reset: vi.fn(), + pending: false, + mutationError: null as Error | null, })) vi.mock('next/navigation', () => ({ useRouter: () => ({ push: mocks.push }), @@ -25,17 +30,15 @@ vi.mock('@/app/o/[organizationId]/providers/organization-provider', () => ({ })) vi.mock('@/hooks/queries/kb/connectors', () => ({ useOrganizationSearchOverview: mocks.overview })) vi.mock('@/hooks/queries/search-integrations', () => ({ - useUpdateSearchIntegration: () => ({ mutate: mocks.add, isPending: false }), + useUpdateSearchIntegration: () => ({ + mutate: mocks.add, + isPending: mocks.pending, + reset: mocks.reset, + error: mocks.mutationError, + }), })) vi.mock('@/hooks/use-permission-config', () => ({ - usePermissionConfig: () => ({ - integrationAvailability: new Map(), - oauthServiceAvailability: new Map([ - ['confluence', true], - ['google-drive', true], - ]), - isIntegrationAvailabilityReady: true, - }), + usePermissionConfig: mocks.availability, })) vi.mock('@/app/workspace/[workspaceId]/search/components/search-source-setup', () => ({ SearchSourceSetup: () => null, @@ -55,13 +58,33 @@ const providers: OrganizationSearchProviderSummary[] = [ status: 'waiting_for_connections', isSyncing: false, }, - { connectorType: 'google_drive', approved: false, sourceCount: 2, status: 'paused' }, + { + connectorType: 'google_drive', + approved: false, + sourceCount: 2, + status: 'paused', + isSyncing: false, + }, ] let root: Root let container: HTMLDivElement beforeEach(() => { vi.clearAllMocks() mocks.admin = true + mocks.pending = false + mocks.mutationError = null + mocks.add.mockReset() + vi.spyOn(toast, 'error').mockReturnValue('error-toast') + mocks.availability.mockReturnValue({ + integrationAvailability: new Map(), + oauthServiceAvailability: new Map([ + ['confluence', true], + ['google-drive', true], + ['google-email', true], + ]), + isIntegrationAvailabilityReady: true, + refetchIntegrationAvailability: mocks.refetch, + }) mocks.overview.mockReturnValue({ data: { providers }, isPending: false, refetch: mocks.refetch }) vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true) vi.stubGlobal( @@ -80,6 +103,7 @@ afterEach(async () => { await act(async () => root.unmount()) container.remove() vi.unstubAllGlobals() + vi.restoreAllMocks() }) async function render(searchParams = '') { await act(async () => @@ -103,9 +127,9 @@ async function click(label: string) { } describe('organization integration management entry', () => { - it('lists added integrations with stable detail links including deactivated providers', async () => { + it('shows the stable catalog with switches and separate setup and management links', async () => { await render() - expect(document.querySelector('a[aria-label="Manage Gmail"]')).toHaveAttribute( + expect(document.querySelector('a[aria-label="Set up Gmail"]')).toHaveAttribute( 'href', '/o/org-one/settings/integrations/providers/gmail' ) @@ -113,58 +137,210 @@ describe('organization integration management entry', () => { 'href', '/o/org-one/settings/integrations/providers/google_drive' ) - expect(container.textContent).toContain('Waiting for account connections') - expect(container.textContent).toContain('Deactivated') - expect(container.textContent).not.toContain('Confluence') - expect(document.querySelector('[role="switch"]')).toBeNull() + expect(container.textContent).toContain('Needs setup') + expect(container.textContent).toContain('2 sources') + expect(container.textContent).toContain('Confluence') + expect(container.textContent).not.toContain('Add integration') + expect(document.querySelector('[aria-label="Allow Gmail in Sim Search"]')).toHaveAttribute( + 'aria-checked', + 'true' + ) + expect( + document.querySelector('[aria-label="Allow Google Drive in Sim Search"]') + ).toHaveAttribute('aria-checked', 'false') + expect(document.querySelector('a[aria-label="Set up Confluence"]')).toBeNull() }) - it('shows an intentional empty state and an Add integration header action', async () => { + + it('offers the catalog for a new organization without a modal or writes', async () => { mocks.overview.mockReturnValue({ data: { providers: [] }, isPending: false }) await render() - expect(container.textContent).toContain('Add an integration to get started.') - await click('Add integration') - expect(document.querySelector('[role="dialog"]')).not.toBeNull() + expect(container.textContent).toContain('Confluence') + expect(container.textContent).toContain('Google Drive') + expect(document.querySelector('[role="dialog"]')).toBeNull() + expect(mocks.add).not.toHaveBeenCalled() }) - it('adds a provider once and goes to its management page', async () => { - mocks.add.mockImplementation((_input, options) => options.onSuccess()) + + it('enables in place and shows setup after the server confirms approval', async () => { await render() - await click('Add integration') - expect(document.querySelector('button[aria-label="Add Gmail"]')).toBeNull() - await click('Add Confluence') - expect(mocks.add).toHaveBeenCalledWith( + const row = document.querySelector('[aria-label="Allow Confluence in Sim Search"]') + await click('Allow Confluence in Sim Search') + expect(mocks.add).toHaveBeenCalledExactlyOnceWith( { organizationId: 'org-one', connectorType: 'confluence', approved: true }, expect.any(Object) ) - expect(mocks.push).toHaveBeenCalledWith('/o/org-one/settings/integrations/providers/confluence') + expect(row).toHaveAttribute('aria-checked', 'false') + mocks.overview.mockReturnValue({ + data: { + providers: [ + ...providers, + { + connectorType: 'confluence', + approved: true, + sourceCount: 0, + status: 'needs_setup', + isSyncing: false, + }, + ], + }, + isPending: false, + }) + await render() + expect(document.querySelector('[aria-label="Allow Confluence in Sim Search"]')).toBe(row) + expect(row).toHaveAttribute('aria-checked', 'true') + expect(document.querySelector('a[aria-label="Set up Confluence"]')).not.toBeNull() + expect(mocks.push).not.toHaveBeenCalled() + expect(document.querySelector('[role="dialog"]')).toBeNull() + }) + + it('requires confirmation before disabling existing sources and lets the admin cancel', async () => { + mocks.overview.mockReturnValue({ + data: { providers: [{ ...providers[1], approved: true }] }, + isPending: false, + }) + await render() + await click('Allow Google Drive in Sim Search') + expect(document.querySelector('[role="dialog"]')).toHaveTextContent( + 'Sources and connected accounts are preserved.' + ) + expect(mocks.add).not.toHaveBeenCalled() + await click('Cancel') + expect(document.querySelector('[role="dialog"]')).toBeNull() + expect(mocks.add).not.toHaveBeenCalled() + await click('Allow Google Drive in Sim Search') + mocks.add.mockImplementation((_input, options) => options.onSuccess()) + await click('Deactivate') + expect(mocks.add).toHaveBeenCalledExactlyOnceWith( + { organizationId: 'org-one', connectorType: 'google_drive', approved: false }, + expect.any(Object) + ) + expect(document.querySelector('[role="dialog"]')).toBeNull() + }) + + it('allows disabling an integration with no sources in place', async () => { + await render() + await click('Allow Gmail in Sim Search') + expect(mocks.add).toHaveBeenCalledExactlyOnceWith( + { organizationId: 'org-one', connectorType: 'gmail', approved: false }, + expect.any(Object) + ) + expect(document.querySelector('[role="dialog"]')).toBeNull() + }) + + it('keeps the confirmed state and reports failed approval changes', async () => { + mocks.add.mockImplementation((_input, options) => + options.onError(new Error('Could not update integration')) + ) + await render() + await click('Allow Confluence in Sim Search') + expect(toast.error).toHaveBeenCalledWith('Could not update integration') + expect(document.querySelector('[aria-label="Allow Confluence in Sim Search"]')).toHaveAttribute( + 'aria-checked', + 'false' + ) + expect(document.querySelector('a[aria-label="Set up Confluence"]')).toBeNull() + }) + + it('keeps a failed deactivation in the confirmation dialog for retry', async () => { + mocks.overview.mockReturnValue({ + data: { providers: [{ ...providers[1], approved: true }] }, + isPending: false, + }) + await render() + await click('Allow Google Drive in Sim Search') + await click('Deactivate') + mocks.mutationError = new Error('Could not deactivate integration') + await render() + expect(document.querySelector('[role="dialog"]')).toHaveTextContent( + 'Could not deactivate integration' + ) + expect( + document.querySelector('[aria-label="Allow Google Drive in Sim Search"]') + ).toHaveAttribute('aria-checked', 'true') + }) + + it('prevents duplicate changes while a mutation is pending', async () => { + mocks.pending = true + await render() + await click('Allow Confluence in Sim Search') + expect(mocks.add).not.toHaveBeenCalled() + expect(document.querySelector('[aria-label="Allow Confluence in Sim Search"]')).toBeDisabled() + }) + + it('blocks unavailable setup while keeping existing sources manageable and deactivatable', async () => { + mocks.availability.mockReturnValue({ + integrationAvailability: new Map(), + oauthServiceAvailability: new Map(), + isIntegrationAvailabilityReady: true, + }) + mocks.overview.mockReturnValue({ + data: { providers: [{ ...providers[1], approved: true }] }, + isPending: false, + }) + await render() + expect(document.querySelector('[aria-label="Allow Confluence in Sim Search"]')).toBeDisabled() + expect( + document.querySelector('[aria-label="Allow Google Drive in Sim Search"]') + ).not.toBeDisabled() + expect(document.querySelector('a[aria-label="Manage Google Drive"]')).not.toBeNull() + expect(container.textContent).toContain('Unavailable in this deployment') + await click('Allow Confluence in Sim Search') + expect(mocks.add).not.toHaveBeenCalled() }) - it('does not turn a failed summary into an empty setup state', async () => { + + it('fails closed while availability loads and offers retry if it fails', async () => { + mocks.availability.mockReturnValue({ + integrationAvailability: new Map(), + oauthServiceAvailability: new Map(), + isIntegrationAvailabilityReady: false, + integrationAvailabilityError: new Error('Could not load connection availability'), + refetchIntegrationAvailability: mocks.refetch, + }) + await render() + expect(document.querySelector('[aria-label="Allow Confluence in Sim Search"]')).toBeDisabled() + await click('Try again') + expect(mocks.refetch).toHaveBeenCalledOnce() + }) + + it('does not hide actionable sync failures behind a source count', async () => { + mocks.overview.mockReturnValue({ + data: { providers: [{ ...providers[1], approved: true, status: 'needs_attention' }] }, + isPending: false, + }) + await render() + expect(container.textContent).toContain('Needs attention') + expect(document.querySelector('a[aria-label="Manage Google Drive"]')).not.toBeNull() + }) + + it('does not turn a failed overview into unapproved switches', async () => { mocks.overview.mockReturnValue({ error: new Error('Could not load sources'), isError: true, refetch: mocks.refetch, }) await render() - expect(container.textContent).not.toContain('Add an integration to get started.') - expect(document.querySelector('a[aria-label="Manage Gmail"]')).toBeNull() + expect(document.querySelector('[role="switch"]')).toBeNull() await click('Try again') expect(mocks.refetch).toHaveBeenCalledOnce() }) - it('keeps loading distinct from empty and disables creation', async () => { + + it('keeps loading distinct from unapproved integrations', async () => { mocks.overview.mockReturnValue({ isPending: true }) await render() expect(container.textContent).toContain('Loading sources') - await click('Add integration') - expect(document.querySelector('[role="dialog"]')).toBeNull() + expect(document.querySelector('[role="switch"]')).toBeNull() }) + it('does not expose admin controls or load admin data for members', async () => { mocks.admin = false await render() expect(mocks.overview).toHaveBeenLastCalledWith('org-one', { enabled: false }) expect(container.textContent).toBe('') }) - it('filters added integration names without dropping server summary context', async () => { - await render('?search=gmail') - expect(document.querySelector('a[aria-label="Manage Gmail"]')).not.toBeNull() - expect(document.querySelector('a[aria-label="Manage Google Drive"]')).toBeNull() + + it('filters the whole catalog without changing approvals', async () => { + await render('?search=confluence') + expect(container.textContent).toContain('Confluence') + expect(container.textContent).not.toContain('Google Drive') + expect(mocks.add).not.toHaveBeenCalled() }) }) diff --git a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.tsx b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.tsx index 25664a9c7d8..a918636313c 100644 --- a/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.tsx +++ b/apps/sim/app/o/[organizationId]/settings/components/integrations/organization-integrations-setup.tsx @@ -1,13 +1,11 @@ 'use client' import { useState } from 'react' -import { Plus } from '@sim/emcn/icons' -import { useRouter } from 'next/navigation' +import { ChipConfirmModal, ChipLink, ChipModalError, Switch, toast } from '@sim/emcn' import { SettingsPanel } from '@/components/settings/settings-panel' import { organizationRoutes } from '@/lib/navigation/paths' +import { getConnectorAccessAvailability, SEARCH_SOURCE_TYPES } from '@/lib/sim-search/connectors' import { useOrganizationContext } from '@/app/o/[organizationId]/providers/organization-provider' -import { OrganizationIntegrationCatalog } from '@/app/o/[organizationId]/settings/components/integrations/organization-integration-catalog' -import { organizationSearchStatusLabel } from '@/app/o/[organizationId]/settings/components/integrations/organization-search-status' import { OrganizationSlackAccountSetup } from '@/app/o/[organizationId]/settings/components/integrations/slack-account-setup' import { IntegrationTile } from '@/app/workspace/[workspaceId]/integrations/components/integrations-showcase' import { SearchSourceSetup } from '@/app/workspace/[workspaceId]/search/components/search-source-setup' @@ -20,20 +18,34 @@ import { SettingsResourceRow, } from '@/app/workspace/[workspaceId]/settings/components/settings-resource-row' import { useSettingsSearch } from '@/app/workspace/[workspaceId]/settings/components/use-settings-search' -import { CONNECTOR_META_REGISTRY } from '@/connectors/registry' import { useOrganizationSearchOverview } from '@/hooks/queries/kb/connectors' +import { useUpdateSearchIntegration } from '@/hooks/queries/search-integrations' +import { usePermissionConfig } from '@/hooks/use-permission-config' export function OrganizationIntegrationsSetup() { const { organization, viewer, searchAccess } = useOrganizationContext() - const router = useRouter() const [search, setSearch] = useSettingsSearch() - const [catalogOpen, setCatalogOpen] = useState(false) const overview = useOrganizationSearchOverview(organization.id, { enabled: viewer.isAdmin }) - const providers = overview.data?.providers ?? [] - const query = search.trim().toLowerCase() - const visible = providers.filter((provider) => - CONNECTOR_META_REGISTRY[provider.connectorType]?.name.toLowerCase().includes(query) + const availability = usePermissionConfig() + const approval = useUpdateSearchIntegration() + const [deactivating, setDeactivating] = useState(null) + const providers = new Map( + overview.data?.providers.map((provider) => [provider.connectorType, provider]) ) + const query = search.trim().toLowerCase() + const visible = SEARCH_SOURCE_TYPES.filter(([, meta]) => meta.name.toLowerCase().includes(query)) + const deactivatingName = SEARCH_SOURCE_TYPES.find(([type]) => type === deactivating)?.[1].name + const changeApproval = (connectorType: string, approved: boolean) => { + approval.reset() + if (!approved && (providers.get(connectorType)?.sourceCount ?? 0) > 0) { + setDeactivating(connectorType) + return + } + approval.mutate( + { organizationId: organization.id, connectorType, approved }, + { onError: (error) => toast.error(error.message) } + ) + } if (!viewer.isAdmin) return null if (!searchAccess.memberScoped && !searchAccess.sourceMirrored) return ( @@ -44,17 +56,17 @@ export function OrganizationIntegrationsSetup() { return ( setCatalogOpen(true), - }, - ]} + search={{ value: search, onChange: setSearch, placeholder: 'Search integrations...' }} > + {availability.integrationAvailabilityError && ( + void availability.refetchIntegrationAvailability()} + variant='inline' + /> + )}
{overview.isError ? ( Loading sources… ) : visible.length === 0 ? ( - - {query ? 'No matching sources' : 'Add an integration to get started.'} - + No matching integrations ) : ( - visible.map((provider) => { - const meta = CONNECTOR_META_REGISTRY[provider.connectorType] + visible.map(([type, meta]) => { + const provider = providers.get(type) + const approved = provider?.approved === true + const sourceCount = provider?.sourceCount ?? 0 + const access = getConnectorAccessAvailability( + meta, + availability.integrationAvailability, + { + memberAccessAvailable: searchAccess.memberScoped, + mirroredAccessAvailable: searchAccess.sourceMirrored, + oauthServiceAvailability: availability.oauthServiceAvailability, + isIntegrationAvailabilityReady: availability.isIntegrationAvailabilityReady, + } + ) + const available = access.admin || access.members + const hasSources = sourceCount > 0 + let description = hasSources + ? `${sourceCount} ${sourceCount === 1 ? 'source' : 'sources'}` + : approved + ? 'Needs setup' + : undefined + if (approved && provider?.status === 'needs_attention') description = 'Needs attention' + if (!hasSources && availability.isIntegrationAvailabilityReady && !available) + description = 'Unavailable in this deployment' return ( } + icon={} title={meta.name} - description={organizationSearchStatusLabel(provider)} - href={organizationRoutes(organization.id).searchProvider(provider.connectorType)} - clickLabel={`Manage ${meta.name}`} - navigable + description={description} + trailing={ +
+ {(hasSources || (approved && available)) && ( + + {hasSources ? 'Manage' : 'Set up'} + + )} + changeApproval(type, checked)} + /> +
+ } /> ) }) )}
- {catalogOpen && ( - setCatalogOpen(false)} - onAdded={(type) => router.push(organizationRoutes(organization.id).searchProvider(type))} - /> - )} + { + if (!open && !approval.isPending) setDeactivating(null) + }} + title={`Deactivate ${deactivatingName ?? 'integration'}?`} + text='Its content will be unavailable in Search, Assistant, and MCP. Sources and connected accounts are preserved.' + confirm={{ + label: 'Deactivate', + variant: 'destructive', + pending: approval.isPending, + onClick: () => { + if (!deactivating) return + approval.mutate( + { organizationId: organization.id, connectorType: deactivating, approved: false }, + { onSuccess: () => setDeactivating(null) } + ) + }, + }} + > + {approval.error?.message} +