Skip to content
Open
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
2 changes: 1 addition & 1 deletion .agents/skills/ship/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ When the user runs `/ship`:

**Do NOT blanket-run the domain generators here.** `mship:generate` (`generate-mship-contracts.ts`) is an **umbrella** that drives all nine mothership contract generators (`mship-contracts`, `billing-protocol-contract`, `mship-tools`, the four `trace-*`, `metrics-contract`, `vfs-snapshot-contract`) and biome-formats `apps/sim/lib/copilot/generated/` — never run it *and* its constituents (they write the same files and corrupt each other in parallel), and never run it on an ordinary ship: it reads an **external** copilot-contract source that isn't checked out in most worktrees, so it hard-fails with `ENOENT` and would abort ship for an unrelated reason. `generate:pi-model-catalog` (under `apps/sim`) likewise regenerates from the installed Pi package, not repo source. `scripts/generate-docs.ts` rewrites the integration docs and client-safe catalog; run it when this PR changes their block/icon/landing-content inputs or when `integration-catalog:check` reports drift, then review its broad generated diff. Only when **this PR's diff actually touches** a domain generator's input do you regenerate it deliberately and run its matching `:check` (`bun run mship:check` / the individual `*:check`) — with the external source present.

**Phase B — run lint + every audit CI enforces, in parallel, and abort ship if any fails.** Before running the commands, compare this list with `.github/workflows/test-build.yml`; when CI adds an audit, run it and update this skill instead of trusting a stale snapshot. The env-flag audit is currently an inline workflow block rather than a package script: when `apps/sim/lib/core/config/env-flags.ts` changed, run that current workflow block verbatim instead of copying a second version into this skill. Run `bun run lint` first (it autofixes formatting and mutates files, so don't parallelize it with the read-only audits), then run the base-sensitive block-registry check, then fan the independent audits out and collect exit codes:
**Phase B — run lint + every audit CI enforces, in parallel, and abort ship if any fails.** Before running the commands, compare this list with `.github/workflows/test-build.yml`; when CI adds an audit, run it and update this skill instead of trusting a stale snapshot. Run the inline "Check reviewed Next.js release exception" workflow block when `bunfig.toml` or the root `package.json` changes; it bounds the temporary dependency exception to its reviewed version. The env-flag audit is currently an inline workflow block rather than a package script: when `apps/sim/lib/core/config/env-flags.ts` changed, run that current workflow block verbatim instead of copying a second version into this skill. Run `bun run lint` first (it autofixes formatting and mutates files, so don't parallelize it with the read-only audits), then run the base-sensitive block-registry check, then fan the independent audits out and collect exit codes:
```bash
# autofix formatting first (mutating; not parallel-safe with the audits). Gate its exit too —
# a non-zero lint (unfixable errors) must abort before the audits run, not be ignored.
Expand Down
22 changes: 22 additions & 0 deletions .github/workflows/test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,16 @@ jobs:
with:
bun-version: 1.4.1

- name: Check reviewed Next.js release exception
run: |
bun -e '
const config = Bun.TOML.parse(await Bun.file("bunfig.toml").text());
const { overrides } = await Bun.file("package.json").json();
if (config.install?.minimumReleaseAgeExcludes?.includes("next") && overrides?.next !== "16.3.6") {
throw new Error("Remove the Next.js 16.3.6 release-age exception before changing its pin");
}
'

- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
Expand Down Expand Up @@ -477,3 +487,15 @@ jobs:
ENCRYPTION_KEY: '0000000000000000000000000000000000000000000000000000000000000000' # dummy key for CI only
TURBO_CACHE_DIR: .turbo
run: bunx turbo run build --filter=@sim/app

- name: Upload conflicting build assets
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: build-collision-diagnostics
path: |
apps/sim/.next/????????????????.js
Comment thread
waleedlatif1 marked this conversation as resolved.
apps/sim/.next/????????????????.map
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
2 changes: 1 addition & 1 deletion apps/docs/components/footer/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const PRODUCT_LINKS: FooterItem[] = [
{ label: 'Workflows', href: '/workflows' },
{ label: 'Knowledge Base', href: '/knowledgebase' },
{ label: 'Tables', href: '/tables' },
{ label: 'MCP', href: '/agents/mcp' },
{ label: 'MCP', href: '/mcp' },
{ label: 'API', href: '/api-reference/getting-started' },
{ label: 'Self Hosting', href: '/platform/self-hosting' },
{ label: 'Status', href: 'https://status.sim.ai', external: true },
Expand Down
8 changes: 7 additions & 1 deletion apps/docs/content/docs/agents/mcp.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@ import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'

The Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) is an open standard for connecting AI to external tools and data. Add an MCP server to your workspace and its tools become available to your agents — a way to integrate services Sim doesn't have a built-in integration for.
The Model Context Protocol ([MCP](https://modelcontextprotocol.io/)) is an open standard for connecting AI to external tools and data. Add an MCP server to your workspace and its tools become available to your agents — a way to integrate services Sim doesn't have a built-in integration for.

<Callout type="info">
This guide connects **external tools to Sim agents**. To connect Codex or another
assistant to Sim's workspace API, use [Sim MCP](/mcp). To expose only selected
workflows, use [MCP deployment](/workflows/deployment/mcp).
</Callout>

## Adding an MCP Server as a Tool

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"pages": [
"previewWorkflowRunFromBlock",
"listWorkflowRunsV2",
"getWorkflowRunV2",
"downloadWorkflowRunFileV2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"listWorkflows",
"createWorkflowV2",
"getWorkflow",
"inspectWorkflow",
"updateWorkflowV2",
"deleteWorkflowV2",
"restoreWorkflow",
Expand Down
32 changes: 32 additions & 0 deletions apps/docs/content/docs/cli/authentication.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,38 @@ when the check could not be made at all — no workspace to check against, or an
endpoint that did not answer. The split matters in CI: only `1` is fixed by
logging in again.

## Choosing an integration credential

Your Sim login controls which workspaces and operations you can access. A tool's
selected provider credential controls its external identity and grants. A workflow
and a direct tool call can use different provider credentials under the same Sim login.

Discover the exact tool ID and its parameter schema, then inspect the connection
you intend to use:

```bash
sim tools list --search slack
sim tools get slack_message
sim credentials list --provider-id slack
sim --output json credentials get "$CREDENTIAL_ID"
```

Use the returned tool ID and argument names. For standalone OAuth execution, pass
`--credential-id "$CREDENTIAL_ID"` to `sim tools execute`. HTTP and MCP callers
supply the top-level `credentialId` field, outside `input`.

`credentials get` reports the credential type/provider, stored identity metadata,
and recorded scopes with their source. `diagnostics.identity.verifiedLive: false`
means it has not contacted the provider or verified token validity or resource access.
Display names are labels. A scopes source of `unknown` with an empty `values` array
means the grants are unknown, not that no scopes were granted. Custom bots may have
no separately stored identity metadata; inspection leaves it unknown without
reading secret payloads.

See [Slack credentials](/integrations/slack#standalone-tool-credentials) for
OAuth versus bot-token selection and conversation-access limits. The
[credentials command reference](/cli/credentials) lists connection-management commands.

## Signing out

```bash
Expand Down
18 changes: 18 additions & 0 deletions apps/docs/content/docs/cli/credentials.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,24 @@ Disconnect Credential (OAuth login or personal API key required)

</CommandTable>

## Inspect credential

```bash
sim credentials get <credentialId>
```

Inspect Credential (OAuth login or personal API key required)

**Arguments**

<CommandTable>

| Argument | Required | Description |
| --- | --- | --- |
| `credentialId` | Yes | Selected credential to inspect. |

</CommandTable>

## List credential providers

```bash
Expand Down
2 changes: 2 additions & 0 deletions apps/docs/content/docs/cli/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ move files, search knowledge bases, and read run logs from the terminal. Use
pipelines. See [Output formats](/cli/output) for commands that emit raw content
or local configuration.

For workflow editing and retry recipes, see [Scripting](/cli/scripting).

## Install

<Tabs items={['npm', 'pnpm', 'bun']}>
Expand Down
3 changes: 3 additions & 0 deletions apps/docs/content/docs/cli/logs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ sim logs get <runId> [options]

| Option | Required | Description |
| --- | --- | --- |
| `--include-workflow-state` | No | Include the saved workflow snapshot. Set false to avoid loading and returning block configuration when inspecting a run. Other run fields are unchanged. |
| `--no-include-workflow-state` | No | Send --include-workflow-state as false. |
| `--trace` | No | Show expanded trace spans with inputs, outputs, errors, timing, and cost. |
| `--summary` | No | Show bounded run diagnostics and final output; omit binary content and the workflow snapshot. |

</CommandTable>

Expand Down
57 changes: 55 additions & 2 deletions apps/docs/content/docs/cli/output.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,66 @@ with span inputs, outputs, errors, timing, and cost:
sim logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --trace
```

`json` and `yaml` always carry the complete response, so `--trace` is a no-op
there:
By default, `json` and `yaml` carry the complete response, so `--trace` does not
change their output:

```bash
sim logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --output json | jq '.traceSpans'
```

### Compact run summaries

Use `--summary` to inspect a run without printing its full trace and workflow
snapshot:

```bash
sim --output json logs get "$RUN_ID" --summary
```

The summary includes execution status, the workflow's existing `finalOutput`,
recorded failures (including handled errors), compact failing inputs and outputs,
observed block statuses, and file metadata. It bounds trace traversal and field
sizes, reports `truncated` when detail is omitted, and omits recognized binary
fields and base64 data URLs. Use `--trace` or
[output selectors](/cli/scripting#selecting-workflow-output) when you need more detail.

By default, `--summary` asks the server to omit the saved workflow snapshot, then
formats the remaining authorized log response locally; it still loads the trace.
To omit only the snapshot, use `--no-include-workflow-state`. HTTP and hosted MCP
callers can set `includeWorkflowState=false` on the log read.

Execution status describes the run, not the quality of its output or whether an
external delivery succeeded. Inspect `finalOutput` and recorded tool failures
before treating a completed run as a successful result. Expired trace data can
leave no block-level evidence. Find failures that a workflow recovered from with
`sim logs list --level error --include-handled-errors`.

The log's `cost` includes a reconciled total and itemized `fixed`, `model`, and
`tool` charges when a ledger is available.

## Downloading output files

Tools that store files return descriptors containing file IDs and metadata,
rather than inline base64. Download a personal output from a direct tool call
(`context: copilot`) with:

```bash
sim tools files download "$FILE_ID" -o ./attachment.pdf
```

For a workflow output, use the workflow and run that produced it:

```bash
sim workflows runs files download "$WORKFLOW_ID" "$RUN_ID" "$FILE_ID" -o ./attachment.pdf
```

These commands authenticate with the configured Sim credential and stream to
disk. Direct personal outputs require their original human owner and current
workspace access; workflow outputs use the run's access checks. A descriptor's
URL or storage key alone grants no access. Output files can expire; copy durable
artifacts into workspace files. See the [tool file](/cli/tools#download-a-direct-tool-output-owned-by-the-current-user)
and [run file](/cli/workflows#download-a-workflow-run-output-file) command references.

## Exceptions

`sim configure` prints local configuration for humans. `sim profiles` honors `--output`.
Expand Down
Loading
Loading