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
28 changes: 16 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ jobs:
uses: aws-actions/amazon-ecr-login@03f1aad4c6c7ffd436567f42f9384779290529bd # v2

- name: Login to Docker Hub
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down Expand Up @@ -365,14 +365,14 @@ jobs:
uses: aws-actions/amazon-ecr-login@03f1aad4c6c7ffd436567f42f9384779290529bd # v2

- name: Login to Docker Hub
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GHCR
if: github.ref == 'refs/heads/main'
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -671,10 +671,11 @@ jobs:
# push: a push that never deployed, or whose submission failed, would otherwise drop its
# changed URLs for good. The check-runs lookup asks for this one check per commit, so it
# stays small and counts every attempt of a re-run; a lookup that errors counts as no
# success. With no success in view, the base is the oldest run in view, so URLs that no
# submission ever covered are sent now. The diff needs only the two trees, so that one
# commit is fetched alone; an all-zero `before` (the branch's first push) has no base,
# which the script skips.
# success. With no success in view, the base is the first parent of the oldest run in view,
# so URLs that no submission ever covered, that run's own included, are sent now; a failed
# parent lookup fails the step, so the next run retries from the same base. The diff
# needs only the two trees, so that one commit is fetched alone; an all-zero `before` (the
# branch's first push) has no base, which the script skips.
- name: Submit changed URLs to IndexNow
env:
GH_TOKEN: ${{ github.token }}
Expand All @@ -691,7 +692,10 @@ jobs:
fi
done < <(gh api "repos/$GITHUB_REPOSITORY/actions/workflows/ci.yml/runs?branch=main&event=push&per_page=30" \
--jq ".workflow_runs[] | select(.id < $GITHUB_RUN_ID) | .head_sha")
BASE_SHA="${BASE_SHA:-${OLDEST_SHA:-$PUSH_BEFORE}}"
if [[ -z "$BASE_SHA" && -n "$OLDEST_SHA" ]]; then
BASE_SHA="$(gh api "repos/$GITHUB_REPOSITORY/commits/$OLDEST_SHA" --jq '.parents[0].sha // empty')"
Comment thread
waleedlatif1 marked this conversation as resolved.
fi
BASE_SHA="${BASE_SHA:-$PUSH_BEFORE}"
echo "Submitting URLs changed in $BASE_SHA..$GITHUB_SHA"
if [[ ! "$BASE_SHA" =~ ^0+$ ]]; then
git fetch --no-tags --depth=1 origin "$BASE_SHA"
Expand Down Expand Up @@ -750,7 +754,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6

- name: Login to GHCR
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -804,7 +808,7 @@ jobs:

steps:
- name: Login to GHCR
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -888,7 +892,7 @@ jobs:
count: ${{ steps.resolve.outputs.count }}
steps:
- name: Login to GHCR
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down Expand Up @@ -1069,7 +1073,7 @@ jobs:

steps:
- name: Login to GHCR
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ jobs:
# oras also reads ~/.docker/config.json, so this one login covers both the
# chart push and the Artifact Hub metadata push below.
- name: Login to GHCR
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-python-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
persist-credentials: false

- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
with:
python-version: '3.12'
cache: 'pip'
Expand Down
4 changes: 2 additions & 2 deletions apps/docs/content/docs/integrations/tailscale.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1138,7 +1138,7 @@ Get tailnet settings
| ↳ `devicesKeyDurationDays` | number | The \[key expiry\]\(/docs/features/access-control/key-expiry\) duration for devices on this tailnet |
| ↳ `usersApprovalOn` | boolean | Whether \[user approval\]\(/docs/features/access-control/user-approval\) is enabled for this tailnet |
| ↳ `usersRoleAllowedToJoinExternalTailnets` | string | Which user roles are allowed to \[join external tailnets\]\(/docs/features/sharing/how-to/invite-any-user\) |
| ↳ `networkFlowLoggingOn` | boolean | Whether \[network flog logs\]\(/docs/features/logging/network-flow-logs\) are enabled for the tailnet |
| ↳ `networkFlowLoggingOn` | boolean | Whether \[network flow logs\]\(/docs/features/logging/network-flow-logs\) are enabled for the tailnet |
| ↳ `regionalRoutingOn` | boolean | Whether \[regional routing\]\(/docs/features/route-selection#regional-routing\) is enabled for the tailnet |
| ↳ `routeSelection` | string | The \[route selection\]\(/docs/features/route-selection\) algorithm used by the tailnet: * `active-passive-failover` - Active-passive failover \(formerly known as "Failover"\) * `regional-routing` - Regional routing * `regional-routing-failover` - Regional routing with in-region failover * `magicroute` - MagicRoute A PATCH request must not specify both the `regionalRoutingOn` and `routeSelection` fields |
| ↳ `postureIdentityCollectionOn` | boolean | Whether \[identity collection\]\(/docs/features/access-control/device-management/how-to/manage-identity\) is enabled for \[device posture\]\(/docs/features/device-posture\) integrations for the tailnet |
Expand Down Expand Up @@ -1173,7 +1173,7 @@ Update selected tailnet settings
| ↳ `devicesKeyDurationDays` | number | The \[key expiry\]\(/docs/features/access-control/key-expiry\) duration for devices on this tailnet |
| ↳ `usersApprovalOn` | boolean | Whether \[user approval\]\(/docs/features/access-control/user-approval\) is enabled for this tailnet |
| ↳ `usersRoleAllowedToJoinExternalTailnets` | string | Which user roles are allowed to \[join external tailnets\]\(/docs/features/sharing/how-to/invite-any-user\) |
| ↳ `networkFlowLoggingOn` | boolean | Whether \[network flog logs\]\(/docs/features/logging/network-flow-logs\) are enabled for the tailnet |
| ↳ `networkFlowLoggingOn` | boolean | Whether \[network flow logs\]\(/docs/features/logging/network-flow-logs\) are enabled for the tailnet |
| ↳ `regionalRoutingOn` | boolean | Whether \[regional routing\]\(/docs/features/route-selection#regional-routing\) is enabled for the tailnet |
| ↳ `routeSelection` | string | The \[route selection\]\(/docs/features/route-selection\) algorithm used by the tailnet: * `active-passive-failover` - Active-passive failover \(formerly known as "Failover"\) * `regional-routing` - Regional routing * `regional-routing-failover` - Regional routing with in-region failover * `magicroute` - MagicRoute A PATCH request must not specify both the `regionalRoutingOn` and `routeSelection` fields |
| ↳ `postureIdentityCollectionOn` | boolean | Whether \[identity collection\]\(/docs/features/access-control/device-management/how-to/manage-identity\) is enabled for \[device posture\]\(/docs/features/device-posture\) integrations for the tailnet |
Expand Down
3 changes: 2 additions & 1 deletion apps/docs/content/docs/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
"./introduction/index",
"./getting-started/index",
"./desktop/index",
"---Sim Search---",
"search",
"---Build---",
"chat",
"workflows",
"agents",
"---Workspace---",
"search",
"knowledgebase",
"tables",
"files",
Expand Down
2 changes: 2 additions & 0 deletions apps/docs/content/docs/platform/enterprise/audit-logs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ Events use identifiers such as `resource.action`. These categories are represent

Authentication failures and password-reset requests use an anonymous actor and record the target account separately. Impersonation and administrative session revocations identify the operator and target organization. Table-row mutations record summaries and counts without copying row contents.

When a workflow run makes the same kind of change to a table many times in quick succession, such as inserting rows in a loop, the repeats are merged into one `table.updated` entry. The merged entry keeps every row ID in `metadata.rowIds`, sums the counts, and records in `metadata.rollup` how many changes it covers and when the first and last happened. The actor of any workflow-made entry names the workflow (`metadata.actor.workflowId`) and the run (`metadata.actor.executionId`). Credential use by a workflow run is merged the same way: one `credential.accessed` entry per credential, counting the repeats, that names the workflow (`metadata.workflowId`) and the run (`metadata.executionId`).

Most audit writes are best effort: an outage or process loss can prevent persistence after an action succeeds. Deployment activation uses an awaited, idempotent insert before its outbox checkpoint. The feed is not a complete tool-call stream or a guaranteed transactional ledger for every operation.

The interface and API provide no audit-entry editing or deletion. Database administrators can alter stored records, and entries are not cryptographically sealed. Use a drain to retain your own archive.
Expand Down
138 changes: 138 additions & 0 deletions apps/docs/content/docs/search/ask-questions.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
---
title: Ask questions
description: Get answers from your connected apps, check the sources, and ask follow-up questions.
---

import { Image } from '@/components/ui/image'

Ask Sim a question when you want an explanation, a summary, or an answer drawn from your connected apps. Keep the conversation open as you check the sources and ask follow-ups.

Your organization must enable Search and make a source available to you. [Connect your account](/search/connect-your-account) if that source requires a personal connection.

## Ask your first question

1. Open **Home** in the organization sidebar. From a workspace, open the workspace menu and select **Back to organization** first.
2. If Home shows a conversation-mode menu, choose **Search** before sending your first message. Members without builder access start in Search automatically and can ask immediately.
3. Ask a specific question and press **Enter**.

For example:

> What belongs in a product requirements document? Use the Confluence template and cite it. Keep the answer to three short bullets.

<Image
src="/static/search/answer-with-citations.webp"
alt="A Search conversation answering a question about a product requirements template, with inline Confluence citations and a source count below the answer"
width={1512}
height={900}
variant="result"
background="san-francisco"
/>

Include the project, topic, or timeframe that matters. If you know where the answer lives, name the app or document:

> Find our launch plan in Confluence. Summarize the scope and the launch date, with sources.

Search mode finds and reads information. You can also ask it to [draft content from the findings](/search/ask-questions#draft-from-your-sources); the draft stays in the conversation until you choose where to use it.

## Check the sources

Select an inline citation to open the supporting document. To review the conversation's references together:

1. Select the book icon and source count beneath the answer.
2. Select **View all sources** to open the **Sources** panel beside the conversation.
3. Select a source title to open the original.

Check the source's date and context before relying on a detail. If documents disagree, ask Sim to compare them and identify the difference. If the answer is incomplete, narrow the question or name another source to check.

## Follow up in the same conversation

You don't need to repeat the original question. Ask for the next useful detail:

> Turn the template's sections into a short checklist of information I need to gather.

> What belongs in the out-of-scope section?

> Which parts are filled in, and which are still placeholders?

Review the cited material for each answer. A summary can miss context, and an unavailable source can leave a gap. Sim can only retrieve content allowed by your account and the organization's source settings.

## Summarize and compare

Specify what you want extracted, rather than just “summarize this.”

| Task | Example prompt |
| --- | --- |
| Compare options | “Compare these two vendor proposals against our evaluation requirements. Cite the evidence and distinguish missing information from requirements a vendor does not meet.” |
| Catch up on a project | “Summarize Atlas updates from the past two weeks. Separate decisions, blockers, and next steps. Include owners only where the sources name them, and cite each item.” |
| Find an owner | “Who owns the launch checklist? Cite the document that assigns responsibility.” |
| Resolve a disagreement | “These documents give different dates. Compare their context and identify what is confirmed.” |
| Understand a decision | “Find the decision about Atlas authentication. Summarize the options, chosen approach, and trade-offs. Distinguish final decisions from proposals and cite the decision record.” |
| Find troubleshooting steps | “Find our SSO sign-in troubleshooting guide. Summarize the checks in order, cite the source, and identify when to escalate.” |
| Understand a policy | “What does our travel policy say about hotels and meals? Cite the policy sections, identify regional differences, and flag cases it doesn't address.” |
| Compare feedback with a proposal | “Compare onboarding feedback with the new proposal. Show each need, whether the proposal addresses it, and the supporting source. Mark gaps explicitly.” |

Follow up with “Which decisions changed an earlier plan?” or “Turn the gaps into questions for our review.”

If the sources don't assign an owner or confirm a date, ask Sim to say so. Include the timeframe you care about, and distinguish a document's update date from the event it describes. A live search is still subject to provider freshness and retrieval limits.

## Prepare for a meeting

Connect Google Calendar and the apps that hold your team's documents, such as Confluence and Google Drive. Then ask Sim to bring the meeting details and relevant project context together:

> Find the Atlas readiness review on November 16, 2026 in my calendar. Use the Atlas project pages in Confluence and the readiness update and pilot feedback in Google Drive to prepare a brief: meeting time, decisions needed, open questions, and what I should read beforehand. Cite the sources.

Use your own meeting name and date. Naming the meeting and its related documents helps Sim find the right context. If you need a particular time zone, include it in the request.

Follow up with “Turn the open questions into a proposed agenda” or “Which items need an update from each owner?” Check the event citation for scheduling details and the document citations for project facts. The proposed agenda is a draft; it doesn't change the calendar event.

<Image
src="/static/search/atlas-readiness-brief.webp"
alt="Atlas readiness brief showing the November 16 meeting at 10:00–10:30 AM Pacific with a Google Calendar citation"
width={1470}
height={470}
variant="result"
background="ridges"
/>

## Draft from your sources

Once you've checked the findings, ask Sim to turn them into a brief, update, email, FAQ, or presentation outline in the same conversation. Include the **source material, audience, format, and constraints**:

> Using the Atlas launch brief and approved rollout decision, draft an internal launch announcement for customer success. Keep it under 200 words. Include what is changing, who it affects, and what the team needs to do. Keep source references next to factual claims and mark unconfirmed details as questions.

If you haven't found the evidence yet, ask Sim to retrieve it first. You can combine retrieval and drafting in one request when the scope is clear.

<Image
src="/static/search/launch-update-draft.webp"
alt="A refined Atlas launch update with links to the Google Drive launch brief and readiness update beside the supporting claims"
width={1470}
height={1000}
variant="result"
background="architecture"
/>

Continue with specific revisions:

- “Cut this to half the length without losing the action items or source links.”
- “Separate confirmed facts from proposed next steps.”
- “Use the tone of this approved example: [paste an example].”
- “Turn this product overview into an FAQ for customer-facing teams. Cite each answer and list questions the overview doesn't resolve.”
- “Turn this into a six-slide outline with a title, three key points, and supporting sources for each slide.”

Provide a style example or brand guidance when consistency matters. Check names, numbers, dates, links, and commitments against the sources. For an external audience, include only information intended for that audience and keep internal supporting material separate for your review.

Copy the reviewed draft into the app where you want to use it. Search creates text in your conversation; it doesn't send or publish the draft or change source records.

## Start from a document

If you already found the right document in **Search**, open its **…** menu and select **Summarize**. Sim starts a conversation focused on that result. Continue with questions about its decisions, dates, or next steps.

You can also paste a relevant excerpt or attach an image to add context. Search conversations accept images; retrieve PDF or spreadsheet content through connected sources.

Your conversations remain private to you. Copying a source link does not give someone else access to the original document.

## Related docs

- [Find content](/search/find-content): Search directly, filter results, and reopen recent sources.
- [Connect your account](/search/connect-your-account): Check source connections and recover access.
- [Use Sim Search in Slack](/search/slack#use-sim-search-in-slack): Ask questions from Slack when your organization has enabled it.
Loading
Loading