Skip to content

Commit f328c91

Browse files
committed
Merge remote-tracking branch 'origin/staging' into feat/permission-groups-coverage
2 parents 5b384d7 + afccb72 commit f328c91

376 files changed

Lines changed: 56841 additions & 3950 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devcontainer/docker-compose.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ services:
2525
- OLLAMA_URL=${OLLAMA_URL:-http://localhost:11434}
2626
- NEXT_PUBLIC_SOCKET_URL=${NEXT_PUBLIC_SOCKET_URL:-}
2727
- BUN_INSTALL_CACHE_DIR=/home/bun/.bun/cache
28+
# Lets a workflow reach a service on the Docker host. Reaching it also
29+
# requires naming it in EGRESS_ALLOWED_HOSTS; this only makes the name
30+
# resolve, which it does not on Linux by default.
31+
extra_hosts:
32+
- 'host.docker.internal:host-gateway'
2833
depends_on:
2934
db:
3035
condition: service_healthy

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,6 @@ start-collector.sh
8484
# IntelliJ
8585
.idea
8686

87-
## Helm Chart Tests
88-
helm/sim/test
89-
9087
## Claude Code
9188
.claude/launch.json
9289
.claude/worktrees/

apps/docs/content/docs/agents/mcp.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ Tool validation badges appear on servers with issues — for example, if a tool
8585

8686
Self-hosted deployments can restrict which MCP server domains are allowed by setting the `ALLOWED_MCP_DOMAINS` environment variable (comma-separated list). When set, only servers on approved domains can be added. When unset, all domains are allowed.
8787

88+
This governs which domains may be used. It is separate from where those domains are allowed to resolve: an MCP server on a private address is reached by naming it in `EGRESS_ALLOWED_HOSTS` or `EGRESS_ALLOWED_IP_RANGES`, described in [Security](/platform/self-hosting/security#the-ssrf-boundary). Both checks apply.
89+
90+
The allowlist covers the server URL itself. If the server requires OAuth, any endpoint its metadata names on a *different* origin than the server you configured is treated as content rather than as configuration, so that one has to be publicly routable. Endpoints on the server's own origin keep the server's reachability.
91+
8892
## Using MCP Tools in Agents
8993

9094
Once MCP servers are configured, their tools become available within your agent blocks:

apps/docs/content/docs/integrations/elasticsearch.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ Retrieve index information including settings, mappings, and aliases.
306306

307307
| Parameter | Type | Description |
308308
| --------- | ---- | ----------- |
309-
| `index` | json | Index information including aliases, mappings, and settings |
309+
| `indices` | json | Matched indices keyed by index name, each with its aliases, mappings, and settings |
310310

311311
### Elasticsearch Cluster Health
312312

@@ -324,7 +324,7 @@ Get the health status of the Elasticsearch cluster.
324324
| `username` | string | No | Username for basic auth |
325325
| `password` | string | No | Password for basic auth |
326326
| `waitForStatus` | string | No | Wait until cluster reaches this status: green, yellow, or red |
327-
| `timeout` | string | No | Timeout for the wait operation \(e.g., 30s, 1m\) |
327+
| `clusterTimeout` | string | No | How long Elasticsearch waits for the cluster to reach the requested status, as an Elasticsearch time value \(e.g., 30s, 1m\). Not named "timeout": that name is reserved by the tool transport as a client-side abort deadline in milliseconds. |
328328

329329
#### Output
330330

@@ -377,12 +377,13 @@ List all indices in the Elasticsearch cluster with their health, status, and sta
377377
| `apiKey` | string | No | Elasticsearch API key |
378378
| `username` | string | No | Username for basic auth |
379379
| `password` | string | No | Password for basic auth |
380+
| `includeSystemIndices` | boolean | No | Include Elasticsearch system indices \(names starting with "."\). Omitted by default. |
380381

381382
#### Output
382383

383384
| Parameter | Type | Description |
384385
| --------- | ---- | ----------- |
385386
| `message` | string | Summary message about the indices |
386-
| `indices` | json | Array of index information objects |
387+
| `indices` | json | Array of index information objects \(index, health, status, docsCount, storeSize, primaryShards, replicaShards\). System indices are omitted unless includeSystemIndices is set. |
387388

388389

apps/docs/content/docs/integrations/file.mdx

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: File
3-
description: Read, get content, fetch, write, append, compress, decompress, and manage sharing for files
3+
description: Read, search, get content, fetch, write, append, compress, decompress, and manage sharing for files
44
---
55

66
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -11,23 +11,24 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
1111
/>
1212

1313
{/* MANUAL-CONTENT-START:intro */}
14-
The File block is a built-in Sim block for working with files stored in the workspace, or fetched from external URLs. It handles reading, writing, appending, compressing, decompressing, and sharing files as part of a workflow.
14+
The File block is a built-in Sim block for working with files stored in the workspace, or fetched from external URLs. It handles reading, searching, writing, appending, compressing, decompressing, and sharing files as part of a workflow.
1515

1616
With the File block, you can:
1717

1818
- **Read and extract content**: Load workspace file objects and extract their text content
19+
- **Search workspace content**: Find literal text across indexed active workspace files with bounded line-level results
1920
- **Fetch from URLs**: Retrieve and parse files from external URLs with custom headers
2021
- **Write and append**: Create new workspace files or append content to existing ones
2122
- **Compress and decompress**: Bundle files into a .zip archive or extract an archive into the workspace
2223
- **Manage sharing**: Enable or disable a public share link for a file, with public, password, email, or SSO access modes
2324

24-
In Sim, the File block allows your agents to read and extract text from workspace files, fetch and parse files from URLs, write or append content to files, bundle files into or out of .zip archives, and control public sharing access for a file—all programmatically as steps in a workflow. This makes it possible to move file content into and out of a workflow, package outputs for download or transfer, and expose files to external users through a managed share link.
25+
In Sim, the File block allows your agents to search, read, and extract text from workspace files, fetch and parse files from URLs, write or append content to files, bundle files into or out of .zip archives, and control public sharing access for a file—all programmatically as steps in a workflow. This makes it possible to explore workspace content, move file content into and out of a workflow, package outputs for download or transfer, and expose files to external users through a managed share link.
2526
{/* MANUAL-CONTENT-END */}
2627

2728

2829
## Usage Instructions
2930

30-
Read workspace file objects, extract the text content of files, fetch and parse files from URLs with optional headers, write new workspace files, append content to existing files, compress files into a .zip archive, extract a .zip archive into the workspace, or manage the public share link for a file.
31+
Read workspace file objects, search indexed text across all active workspace files, extract the text content of files, fetch and parse files from URLs with optional headers, write new workspace files, append content to existing files, compress files into a .zip archive, extract a .zip archive into the workspace, or manage the public share link for a file.
3132

3233

3334

@@ -67,6 +68,35 @@ Extract the text content of one or more workspace files from selected file objec
6768
| --------- | ---- | ----------- |
6869
| `contents` | array | Array of file text contents, one entry per file in input order |
6970

71+
### File Search
72+
73+
Search indexed text across active workspace files using literal smart-case substring matching.
74+
75+
#### Input
76+
77+
| Parameter | Type | Required | Description |
78+
| --------- | ---- | -------- | ----------- |
79+
| `query` | string | Yes | Literal text to find \(3-512 characters\). Uppercase Unicode letters make matching case-sensitive. |
80+
| `maxResults` | number | No | Hard result cap configured by the workflow builder \(1-200, default 50\). |
81+
82+
#### Output
83+
84+
| Parameter | Type | Description |
85+
| --------- | ---- | ----------- |
86+
| `results` | array | Matching logical lines with their workspace file ID and 1-based line number. |
87+
|`fileId` | string | Canonical workspace file ID. |
88+
|`lineNumber` | number | 1-based logical line number. |
89+
|`text` | string | Matching line or bounded match-centered preview. |
90+
| `count` | number | Number of returned matching lines. |
91+
| `truncated` | boolean | Whether more matching lines exist beyond the configured hard cap. |
92+
| `complete` | boolean | Whether indexing has no pending or failed current revisions; skipped and partial coverage is reported separately. |
93+
| `indexStatus` | object | Current workspace search-index coverage by file status. |
94+
|`readyFiles` | number | Files whose current revision is searchable. |
95+
|`pendingFiles` | number | Files still waiting to be indexed. |
96+
|`failedFiles` | number | Files whose current indexing attempt failed. |
97+
|`skippedFiles` | number | Files intentionally excluded because they are unsupported or oversized. |
98+
|`partialFiles` | number | Searchable files whose extracted text was truncated by the parser or cap. |
99+
70100
### File Fetch
71101

72102
Fetch and parse a file from a URL with optional custom headers.
@@ -87,16 +117,17 @@ Fetch and parse a file from a URL with optional custom headers.
87117

88118
### File Write
89119

90-
Create a new workspace file, either from text content or from an existing file. If a file with the same name already exists, a numeric suffix is added (e.g., "data (1).csv").
120+
Create a new workspace file, either from text content or from an existing file. If a file with the same name already exists, a numeric suffix is added (e.g., "data (1).csv") unless overwrite is enabled.
91121

92122
#### Input
93123

94124
| Parameter | Type | Required | Description |
95125
| --------- | ---- | -------- | ----------- |
96-
| `fileName` | string | No | File name \(e.g., "data.csv"\). Required when writing text; optional when storing a file, which keeps its own name unless this overrides it. If the name already exists, a numeric suffix is added automatically. |
126+
| `fileName` | string | No | File name \(e.g., "data.csv"\). Required when writing text; optional when storing a file, which keeps its own name unless this overrides it. If the name already exists, a numeric suffix is added automatically unless overwrite is enabled. |
97127
| `content` | string | No | The text content to write to the file. Provide exactly one of content or fileInput. |
98128
| `fileInput` | file | No | An existing file to store in the workspace, such as one produced by an earlier tool. Use this for anything that is not text — PDFs, images, audio, archives. Provide exactly one of content or fileInput. |
99129
| `contentType` | string | No | MIME type for new files \(e.g., "text/plain"\). Auto-detected from the file extension, or taken from the stored file, if omitted. |
130+
| `overwrite` | boolean | No | Replace the contents of an existing file at the exact target path \(folder and name\) instead of creating a suffixed copy. Creates the file when that path does not exist yet. |
100131

101132
#### Output
102133

apps/docs/content/docs/integrations/github.mdx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,10 +1019,10 @@ Update branch protection rules for a specific branch, including status checks, r
10191019
| `owner` | string | Yes | Repository owner \(user or organization\) |
10201020
| `repo` | string | Yes | Repository name |
10211021
| `branch` | string | Yes | Branch name |
1022-
| `required_status_checks` | object | Yes | Required status check configuration \(null to disable\). Object with strict \(boolean\) and contexts \(string array\) |
1023-
| `enforce_admins` | boolean | Yes | Whether to enforce restrictions for administrators |
1024-
| `required_pull_request_reviews` | object | Yes | PR review requirements \(null to disable\). Object with optional required_approving_review_count, dismiss_stale_reviews, require_code_owner_reviews |
1025-
| `restrictions` | object | Yes | Push restrictions \(null to disable\). Object with users \(string array\) and teams \(string array\) |
1022+
| `required_status_checks` | object | No | Required status check configuration. Object with strict \(boolean\) and contexts \(string array\). Omit to disable status checks — GitHub receives an explicit null. |
1023+
| `enforce_admins` | boolean | No | Whether to enforce restrictions for administrators. Omit to disable admin enforcement — GitHub receives an explicit null. |
1024+
| `required_pull_request_reviews` | object | No | PR review requirements. Object with optional required_approving_review_count, dismiss_stale_reviews, require_code_owner_reviews. Omit to disable review requirements — GitHub receives an explicit null. |
1025+
| `restrictions` | object | No | Push restrictions, available only for organization-owned repositories. Object with users \(string array\), teams \(string array\) and optional apps \(string array\). Omit to disable push restrictions — GitHub receives an explicit null. |
10261026
| `apiKey` | string | Yes | GitHub Personal Access Token |
10271027

10281028
#### Output
@@ -1805,14 +1805,15 @@ Trigger a workflow dispatch event for a GitHub Actions workflow. The workflow mu
18051805

18061806
### GitHub List Workflow Runs
18071807

1808-
List workflow runs for a repository. Supports filtering by actor, branch, event, and status. Returns run details including status, conclusion, and links.
1808+
List workflow runs for a repository, or for a single workflow when a workflow ID or filename is given. Supports filtering by actor, branch, event, and status. Returns run details including status, conclusion, and links.
18091809

18101810
#### Input
18111811

18121812
| Parameter | Type | Required | Description |
18131813
| --------- | ---- | -------- | ----------- |
18141814
| `owner` | string | Yes | Repository owner \(user or organization\) |
18151815
| `repo` | string | Yes | Repository name |
1816+
| `workflow_id` | string | No | The ID of the workflow. You can also pass the workflow file name as a string \(e.g., ci.yml\). Omit to list runs across the whole repository. |
18161817
| `actor` | string | No | Filter by user who triggered the workflow |
18171818
| `branch` | string | No | Filter by branch name |
18181819
| `event` | string | No | Filter by event type \(e.g., push, pull_request, workflow_dispatch\) |

0 commit comments

Comments
 (0)