Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion apps/docs/components/ui/heading.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,13 @@ export function Heading({ as, className, ...props }: HeadingProps) {
}

return (
<As className={cn('group flex scroll-m-28 flex-row items-center gap-2', className)} {...props}>
<As
className={cn(
'group flex scroll-mt-[calc(var(--fd-docs-row-3,0px)+1rem)] flex-row items-center gap-2',
className
)}
{...props}
>
<a href={`#${props.id}`} className='peer' onClick={copyHeadingLink}>
{props.children}
</a>
Expand Down
12 changes: 6 additions & 6 deletions apps/docs/content/docs/search/ask-questions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -127,19 +127,19 @@ Copy the reviewed draft into another app, or ask Assistant to create it using yo

When integration actions are enabled, Assistant can answer questions and take supported actions in the same conversation. For example, ask it to draft an email in Gmail or create a Jira issue using your own connected account.

Reads run without a prompt by default. Writes wait for review by default. Open **Review** to see the app, account, destination, and proposed content. Edit the supported fields, then select **Allow** or **Cancel** for each action. For several proposals, **Allow N shown** approves the actions currently displayed in the review.
Reads run without a prompt by default. Writes wait for review by default. Each proposal appears inline in the conversation with its app, account, destination, and proposed content. Edit the supported fields, then select **Allow** or **Cancel** for each action. After several proposals, **Allow N shown** or **Cancel N shown** applies your choice to that displayed batch. You can approve individual actions first, then cancel the remaining batch.

<Image
src="/static/search/assistant-action-review.png"
alt="Assistant action review showing the connected Jira account, exact site and project, editable issue summary and description, and Allow or Cancel controls"
width={1440}
height={1000}
variant="result"
alt="Inline Assistant action review showing the connected Jira account, exact site and project, editable issue summary and description, and Allow or Cancel controls"
width={705}
height={489}
variant="detail"
/>

Each decision applies to that proposal. Changing its account or destination requires a new proposal. An action can still fail if your account is disconnected or an administrator changes access before execution. If the provider outcome is unknown, check the original app before asking Assistant to repeat a write.

Configure persistent **Allow**, **Ask**, or **Block** preferences under **Integrations → Tool permissions** for your account. See [tool permissions](/search/connect-your-account#tool-permissions).
Configure persistent **Allow**, **Ask**, or **Block** preferences under **Integrations → ⋯ → Tool permissions** for your account. See [tool permissions](/search/connect-your-account#tool-permissions).

## Start from a document

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/coda.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Connect Coda to search page and table-row content. **Member accounts** and **Ser
## Connect

1. An admin adds **Coda** in **Settings → Sources** and selects **Member accounts**, or configures the service source below.
2. Each teammate opens **Integrations → Coda → Connect** and authorizes their account.
2. Each teammate opens **Integrations → Coda → ⋯ → Connect** and authorizes their account.
3. Search text in a page or row that account can access, then read a result.

The managed Coda MCP provider must be configured before **Connect** is available. Members authorize that provider rather than choosing an arbitrary server URL. Coda may use [Superhuman sign-in](https://help.coda.io/en/articles/5473507-reset-your-password).
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/confluence.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Search Confluence Cloud with your own account. **Member accounts** uses your pro
## Connect member accounts

1. An admin adds **Confluence** in **Settings → Sources** and selects **Member accounts**, or configures the service source below.
2. Each teammate opens **Integrations → Confluence → Connect** and authorizes their Atlassian account.
2. Each teammate opens **Integrations → Confluence → ⋯ → Connect** and authorizes their Atlassian account.
3. Search a page or blog post that account can access, then read a result.

Member mode has no admin space or label filters. The default search covers pages and blog posts; ask Sim to use Confluence Query Language (CQL) to narrow a query by content type or space. Site access comes from your connected account.
Expand Down
23 changes: 11 additions & 12 deletions apps/docs/content/docs/search/connect-your-account.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,19 @@ After your admin adds a source in **Settings → Sources**, connect your own acc
## Connect and verify

1. Join the Sim organization through its invitation or SSO. Use the verified email required by the provider connection.
2. Open **Integrations**, find the provider, and select **Connect**.
2. Open **Integrations**, find the provider, and choose **Connect** from its **⋯** menu.
3. Complete authorization in the new tab. If the popup is blocked, allow it and select **Connect** again.
4. Return to **Search** or **Search → Assistant** and search for content your account can open. Read a result and follow its source link.

<Image
src="/static/search/connect-confluence.webp"
alt="Confluence in Integrations with the Connect button before an account has been authorized"
width={1340}
height={180}
variant="detail"
background="architecture"
src="/static/search/connect-account-menu.png"
alt="The Confluence menu in Integrations with Connect available before an account has been authorized"
width={1440}
height={1000}
variant="overview"
/>

Once an account is connected, **Add account** lets you authorize another account for that provider.
If your organization makes another connection available, choose **Add account** from the same menu.

The connection is usable when authorization completes; no initial indexing run is required. If a provider is missing, ask an admin to add it in **Sources**. `Not configured` means its app or deployment setup needs an admin's attention.

Expand All @@ -47,7 +46,7 @@ Creating Jira sprints requires the Jira sprint permission. If your account was c

## Tool permissions

When Assistant integration actions are enabled, open **Integrations** and select **Tool permissions** beside your connected account. Set a preference for each operation or use the **Read-only tools** and **Write tools** group controls:
When Assistant integration actions are enabled, open the app’s **⋯** menu in **Integrations** and select **Tool permissions** for your connected account. This option appears when the app has supported Assistant tools available to you. Set a preference for each operation or use the **Read-only tools** and **Write tools** group controls:

| Preference | Behavior |
| --- | --- |
Expand All @@ -64,16 +63,16 @@ These preferences belong to your account. They cannot grant access to another pe
alt="Connected account settings with Read-only tools and Write tools groups and per-tool Allow, Ask, and Block preferences"
width={1440}
height={1000}
variant="result"
variant="overview"
/>

Apps used only for actions appear under **Assistant apps**. An admin makes the app available in organization source settings, then each member connects their own account in Integrations.

## Reconnect or disconnect

Use **Reconnect** when a grant expires, is revoked, or needs more scopes. A temporary provider outage does not necessarily require reconnecting.
Choose **Reconnect** from the app’s **⋯** menu when a grant expires, is revoked, or needs more scopes. A temporary provider outage does not necessarily require reconnecting.

Disconnecting stops future use of the grant and can affect workflows sharing the account. Review the confirmation before removing it. Disconnecting does not remove your Sim membership.
Choose **Disconnect** from the same menu to stop future use of the grant. This can affect workflows sharing the account. Review the confirmation before removing it. Disconnecting does not remove your Sim membership.

For an account-connection request, sign in as the verified Sim user associated with the requested email, then authorize the provider. The request does not invite you into the organization; membership and Search access are still required.

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/fireflies.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Fireflies Search uses **Member accounts** and the official managed MCP connectio
## Connect

1. An admin adds **Fireflies** in **Settings → Sources**, using **Member accounts**.
2. Each teammate opens **Integrations → Fireflies → Connect** and authorizes their account.
2. Each teammate opens **Integrations → Fireflies → ⋯ → Connect** and authorizes their account.
3. Search a phrase such as `security approval` or `customer onboarding`, then read a result.

The managed provider must be configured before **Connect** is available. It uses `https://api.fireflies.ai/mcp`. The API key for the Fireflies knowledge-base connector is a separate ingestion connection and cannot authorize member Search.
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/gmail.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Gmail Search finds matching messages in your connected mailbox. **Member account

## Connect member accounts

An admin adds **Gmail** in **Settings → Sources**, chooses **Member accounts**, and saves. Members select **Integrations → Gmail → Connect**, then search for a known message and read it.
An admin adds **Gmail** in **Settings → Sources**, chooses **Member accounts**, and saves. Members select **Integrations → Gmail → ⋯ → Connect**, then search for a known message and read it.

Member mode has no admin label, date, category, or mailbox filters. Search and document-read requests do not send or modify messages. When integration actions are enabled, **Search → Assistant** can create drafts or send email using your connected account, subject to tool permissions and organization policy. Writes ask for [review](/search/ask-questions#review-actions) by default.

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/google-drive.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Google Drive Search finds files your account can access, including Google Docs,
## Connect and search

1. An admin adds **Google Drive** in **Settings → Sources** and chooses **Member accounts**, or configures the service source below.
2. Each teammate selects **Integrations → Google Drive → Connect** and authorizes their account.
2. Each teammate selects **Integrations → Google Drive → ⋯ → Connect** and authorizes their account.
3. Search a known file, read the result, and follow its source link.

Member mode has no organization folder, file-type, or user selection. Native Drive queries can narrow a search. For example, `name contains 'Roadmap' and 'person@example.com' in owners` finds candidate files by name and owner.
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/google-meet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Google Meet Search finds recent finalized transcripts and generated-note links.
## Connect

1. An admin adds **Google Meet → Member accounts** in **Settings → Sources**.
2. In **Integrations**, select **Connect** beside Google Meet and authorize your Google account. Your Workspace administrator may need to approve the app.
2. In **Integrations**, open the Google Meet **⋯** menu and select **Connect** and authorize your Google account. Your Workspace administrator may need to approve the app.
3. Return to Sim, confirm the account appears, then search a phrase from a recent meeting and read the result.

No service account is required. Search only reads conference records and artifacts, using the connection's `meetings.space.readonly` scope. Its `meetings.space.created` scope supports workflow actions.
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/granola.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Granola Search uses **Member accounts** through the official MCP service. It sea
## Connect

1. An admin adds **Granola → Member accounts** in **Settings → Sources**.
2. Each teammate opens **Integrations → Granola → Connect** and authorizes their account.
2. Each teammate opens **Integrations → Granola → ⋯ → Connect** and authorizes their account.
3. Ask a focused question such as `What did we decide about the enterprise launch?`, then read a result.

Sim uses `https://mcp.granola.ai/mcp` with each member's managed OAuth grant. A shared API key cannot replace this connection. If meetings are missing, check the account and switch to the intended workspace in Granola; MCP follows the active workspace.
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/hubspot.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ HubSpot Search finds contacts, companies, deals, and tickets through the officia

## Connect

An admin adds **HubSpot** in **Settings → Sources**. Each person then selects **Integrations → HubSpot → Connect** and signs in. Grant read access to contacts, companies, deals, and tickets; write access is not needed. Search a known name, email, or domain, then read the record.
An admin adds **HubSpot** in **Settings → Sources**. Each person then selects **Integrations → HubSpot → ⋯ → Connect** and signs in. Grant read access to contacts, companies, deals, and tickets; write access is not needed. Search a known name, email, or domain, then read the record.

## Search and read records

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/jira.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Jira Search finds Cloud issues with your personal OAuth grant. It uses **Member
## Connect

1. An admin adds **Jira** in **Settings → Sources → Add source**.
2. Each teammate selects **Integrations → Jira → Connect** and authorizes their Atlassian account.
2. Each teammate selects **Integrations → Jira → ⋯ → Connect** and authorizes their Atlassian account.
3. Search a known issue, or ask Sim about it. Read the result and follow its Jira link.

No project setup or indexing is needed after authorization. Sim Cloud supplies the OAuth app where available; self-hosted deployments configure their app below.
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Use this walkthrough to go from a question to a useful answer. Choose a topic yo

## 1. Connect your apps

Open your organization's Sim home and select **Integrations** in the sidebar. Find an app you use and select **Connect**. Complete authorization with the work account that can open the content you need.
Open your organization's Sim home and select **Integrations** in the sidebar. Find an app you use and choose **Connect** from its **⋯** menu. Complete authorization with the work account that can open the content you need.

Your admin must enable the source first. If you don't see it, ask them to check **Settings → Sources**. Some organization-managed sources have a different connection process; see [Connect your account](/search/connect-your-account).

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/content/docs/search/slack.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Slack Search uses **Member accounts** and the member's real-time user token. The

1. An admin adds **Slack** in **Settings → Sources**.
2. Complete the organization's app setup if needed. Use the official Sim Search app when available, or the deployment's custom app.
3. Each member selects **Integrations → Slack → Connect** and authorizes their account.
3. Each member selects **Integrations → Slack → ⋯ → Connect** and authorizes their account.
4. Search a known message, read it, and follow its Slack link. No channel setup or initial sync is needed.

Members need a Sim invitation or SSO membership separately. Provider app/workspace approval policies still apply.
Expand All @@ -30,7 +30,7 @@ An admin opens **Settings → Sim Search in Slack** and installs or connects the

- DM **Sim Search**, or mention it in a channel it has joined.
- Where the installed app exposes slash commands, use `/query [question]` to start a private DM thread. Channel invocations keep personalized answers and account details in DMs.
- Use `/connect [provider]` where available, or **Home → Connect sources**, to open personal Integrations. Select **Connect** there to start OAuth.
- Use `/connect [provider]` where available, or **Home → Connect sources**, to open personal Integrations. Choose **Connect** from the app’s **⋯** menu to start OAuth.
- Follow source links. Slack's **Stop** control cancels an active answer and queued follow-ups.

Removing the bot binding is separate from disconnecting your Slack source.
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/search/zoom.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ When Zoom Search is enabled for your organization, connect your own account to f
Zoom Search requires deployment enablement and organization access before setup or retrieval is available. Ask your admin about availability if Zoom is missing.

1. An admin adds **Zoom → Member accounts** in **Settings → Sources**.
2. Each person selects **Integrations → Zoom → Connect**, signs in, and authorizes the read permissions. Zoom account-admin approval may be needed.
2. Each person selects **Integrations → Zoom → ⋯ → Connect**, signs in, and authorizes the read permissions. Zoom account-admin approval may be needed.
3. Return to Sim, confirm the account appears, and search a known meeting. Read the result and follow its source link.

A workflow Zoom connection does not authorize Search. Its dedicated app registration prevents Search reauthorization from replacing or narrowing a workflow app's grant.
Expand Down
Binary file modified apps/docs/public/static/search/assistant-action-review.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/docs/public/static/search/assistant-tool-permissions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ import { toast } from '@sim/emcn'
import { toRecord } from '@sim/utils/object'
import { useQueryClient } from '@tanstack/react-query'
import { useQueryStates } from 'nuqs'
import {
AssistantActionReviewPanel,
AssistantActionReviewProvider,
} from '@/components/assistant-actions'
import { AssistantActionReviewProvider } from '@/components/assistant-actions'
import { requestJson } from '@/lib/api/client/request'
import type { WorkspaceSearchFilters } from '@/lib/api/contracts/knowledge'
import { getWorkspaceHostContextContract } from '@/lib/api/contracts/workspaces'
Expand Down Expand Up @@ -368,6 +365,7 @@ function OrganizationConversationContent({
<AssistantActionReviewProvider
organizationId={organization.id}
chatId={chat.resolvedChatId}
messages={chat.messages}
active={chat.isSending}
enabled={requestMode === 'assistant'}
>
Expand Down Expand Up @@ -398,12 +396,7 @@ function OrganizationConversationContent({
onCancelQueueEdit={chat.cancelQueueEdit}
userId={session?.user?.id}
chatId={chat.resolvedChatId}
composer={
<>
<AssistantActionReviewPanel />
{composer}
</>
}
composer={composer}
onWorkspaceResourceSelect={requestMode !== 'assistant' ? selectResource : undefined}
initialScrollBlocked={panel.initialScrollBlocked}
/>
Expand Down
Loading
Loading