Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
898a10d
improvement(files): match CSV/XLSX preview tables to the markdown tab…
waleedlatif1 Jul 31, 2026
ed23330
feat(knowledge): opt-in hybrid lexical + vector retrieval for KB sear…
waleedlatif1 Jul 31, 2026
5c29d83
improvement(ui): drop full-content hover tooltips (#6128)
waleedlatif1 Jul 31, 2026
c0b19da
feat(pi): install Bun in cloud sandboxes (#6123)
BillLeoutsakosvl346 Jul 31, 2026
e98715d
fix(realtime): noindex the socket server's 404 responses (#6129)
waleedlatif1 Jul 31, 2026
b4f027e
fix(billing): point self-hosted upgrade CTAs at the hosted app (#6003)
TheodoreSpeaks Jul 31, 2026
422b491
chore(trigger): upgrade version (#6127)
icecrasher321 Jul 31, 2026
648dd34
feat(notifications): email on schedule auto-disable and 100% usage li…
TheodoreSpeaks Jul 31, 2026
c0e7ea9
fix(pi): surface provider errors from agent events (#6133)
BillLeoutsakosvl346 Jul 31, 2026
0bcf64a
perf(bundle): stop three routes shipping the block and tool registrie…
waleedlatif1 Jul 31, 2026
c5cc6ce
feat(chat): hide the Chat module when NEXT_PUBLIC_CHAT_DISABLED is se…
TheodoreSpeaks Jul 31, 2026
b77b9ee
improvement(workspace): remove tip + simplify modal header text (#6141)
icecrasher321 Jul 31, 2026
4ef7bba
fix(db): index large-value workflow_id FKs so workflow deletes don't …
TheodoreSpeaks Jul 31, 2026
88f054e
fix(auto-model): fix auto model (#6144)
Sg312 Aug 1, 2026
a5ca810
fix(chat): drop unparsable special-tag payloads instead of dumping ra…
j15z Aug 1, 2026
19b0312
feat(managed-agent): add session lifecycle operations (#6140)
waleedlatif1 Aug 1, 2026
ecf1d7d
refactor Instagram integration architecture (#6143)
BillLeoutsakosvl346 Aug 1, 2026
10bfb5d
feat(realtime): shared room spine + live Files/Tables collaboration +…
waleedlatif1 Aug 1, 2026
06506bb
improvement(files): cache stream binding meta, tighten file cache-con…
waleedlatif1 Aug 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ services:
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET:-your_auth_secret_here}
- ENCRYPTION_KEY=${ENCRYPTION_KEY:-your_encryption_key_here}
- COPILOT_API_KEY=${COPILOT_API_KEY}
- NEXT_PUBLIC_CHAT_DISABLED=${NEXT_PUBLIC_CHAT_DISABLED:-}
- SIM_AGENT_API_URL=${SIM_AGENT_API_URL}
- OLLAMA_URL=${OLLAMA_URL:-http://localhost:11434}
- NEXT_PUBLIC_SOCKET_URL=${NEXT_PUBLIC_SOCKET_URL:-}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ jobs:
echo "ERROR: DEV_TRIGGER_ACCESS_TOKEN and TRIGGER_PROJECT_ID repo secrets must both be set" >&2
exit 1
fi
bunx trigger.dev@4.4.3 deploy --env preview --branch dev-sim
bunx trigger.dev@4.5.7 deploy --env preview --branch dev-sim
# Main/staging: build AMD64 images and push sha-tagged images to ECR + GHCR.
# Runs in parallel with tests — only immutable sha tags are pushed here, and
Expand Down
1 change: 1 addition & 0 deletions apps/docs/content/docs/en/integrations/knowledge.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Search for similar content in a knowledge base using vector similarity
| `query` | string | No | Search query text \(optional when using tag filters\) |
| `topK` | number | No | Number of most similar results to return \(1-100\) |
| `tagFilters` | array | No | Array of tag filters with tagName and tagValue properties |
| `searchMode` | string | No | Retrieval mode: 'vector' \(default\) uses semantic similarity only, 'hybrid' also runs a full-text leg and fuses both |
| `rerankerEnabled` | boolean | No | Whether to apply Cohere reranking to vector search results |
| `rerankerModel` | string | No | Cohere rerank model to use \(one of: rerank-v4.0-pro, rerank-v4.0-fast, rerank-v3.5\) |
| `rerankerInputCount` | number | No | Number of vector results sent to the Cohere reranker \(1–100\). Defaults to topK × 4 capped at 100. |
Expand Down
196 changes: 196 additions & 0 deletions apps/docs/content/docs/en/integrations/managed_agent.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,200 @@ Open a Claude Platform Managed Agent session and return the assistant response a
| `inputTokens` | number | Cumulative input tokens for the session. |
| `outputTokens` | number | Cumulative output tokens for the session. |

### `managed_agent_create_session`

Create a Claude Platform Managed Agent session and return its id without waiting for a reply.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `agent` | string | Yes | Managed-agent id inside the linked Claude workspace. |
| `environment` | string | Yes | Environment id inside the linked Claude workspace. |
| `environmentType` | string | No | Environment execution model hint \('cloud' \| 'self_hosted'\). |
| `userMessage` | string | No | Optional first message; seeds initial_events and starts the agent immediately. |
| `vaults` | array | No | Zero or more vault ids for MCP tool auth. |
| `vaultsAck` | boolean | No | Acknowledgement that the author may use the attached vaults. |
| `memoryStoreId` | string | No | Optional Agent Memory Store id. |
| `memoryAccess` | string | No | Memory store access mode: 'read_write' \(default\) or 'read_only'. |
| `memoryInstructions` | string | No | Per-attachment guidance for how the agent should use the memory store. |
| `files` | array | No | File attachments \(cloud envs only\), as \[\{fileId, mountPath?\}\]. |
| `sessionParameters` | object | No | Key/value session metadata forwarded to the session. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | Anthropic session id \(sesn_...\). |
| `started` | boolean | True when a first message was seeded, so the agent is already running. |

### `managed_agent_send_message`

Send a user message to an existing Claude Platform Managed Agent session.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `userMessage` | string | Yes | The user message to send to the session. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session the message was sent to. |
| `sent` | boolean | True when the event was accepted by the API. |

### `managed_agent_get_session`

Read a Managed Agent session: status, stop reason, token usage, metadata, and any tool calls awaiting approval.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was read. |
| `status` | string | Session status — 'idle', 'running', 'rescheduling', or 'terminated'. |
| `stopReason` | string | Why the session last stopped, e.g. 'end_turn' or 'requires_action'. |
| `requiresAction` | boolean | True when the session is waiting on a tool confirmation or custom tool result. If this is true while pendingTools is empty, the session is blocked but the API named no blocking events — surface it rather than treating the session as done. |
| `pendingTools` | json | Blocking tool calls — \[\{id, eventType, kind, name, input\}\]. Route by kind: 'confirmation' ids go to Respond To Tool Confirmation, 'custom_tool_result' ids go to Respond To Custom Tool. |
| `metadata` | json | Session metadata. |
| `title` | string | Session title. |
| `inputTokens` | number | Cumulative input tokens. |
| `outputTokens` | number | Cumulative output tokens. |

### `managed_agent_list_events`

Read a Managed Agent session's event history and the agent's reply text.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `eventTypes` | array | No | Optional event-type filter, e.g. \['agent.message'\]. Omit to return every event. |
| `limit` | number | No | Maximum events to return, keeping the most recent \(default 500\). |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was read. |
| `events` | json | Session events, oldest first. |
| `count` | number | Number of events returned. |
| `assistantText` | string | Concatenated text of every persisted agent.message, in order. |
| `truncated` | boolean | True when the limit was hit and older events were dropped. |

### `managed_agent_update_session`

Update a Managed Agent session's title or metadata.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `title` | string | No | New session title. |
| `sessionParameters` | object | No | Replacement metadata map \(replaces all stored metadata, not merged\). Leaving it empty leaves the stored metadata unchanged — use clearMetadata to remove it. |
| `clearMetadata` | boolean | No | Removes all of the session's stored metadata. Overrides any map supplied above. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was updated. |
| `updated` | boolean | True when the update was accepted. |
| `metadata` | json | Metadata after the update. |
| `title` | string | Title after the update. |

### `managed_agent_interrupt_session`

Stop a running Managed Agent session; it stays usable afterwards.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was interrupted. |
| `interrupted` | boolean | True when the interrupt was accepted. |

### `managed_agent_respond_tool_confirmation`

Allow or deny the tool calls a Managed Agent session is waiting on before it can continue.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `toolUseIds` | array | Yes | Blocking tool-use EVENT ids, from Get Session pendingTools\[\].id where kind is 'confirmation' \(not toolu_ ids\). |
| `decision` | string | Yes | 'allow' to let the tools run, or 'deny' to reject them. |
| `denyMessage` | string | No | Reason surfaced to the agent. Only sent when the decision is deny. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was answered. |
| `decision` | string | The decision applied — 'allow' or 'deny'. |
| `confirmedToolUseIds` | json | The tool-use event ids that were answered. |

### `managed_agent_respond_custom_tool`

Return the result of a custom tool a Managed Agent session is waiting on so it can continue.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `customToolUseId` | string | Yes | The custom tool-use EVENT id being answered, from Get Session pendingTools\[\].id where kind is 'custom_tool_result'. |
| `result` | string | Yes | The tool's output, returned to the agent as text. |
| `isError` | boolean | No | Mark the result as a failure so the agent can adjust its approach. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was answered. |
| `answeredToolUseId` | string | The custom tool-use event id that was answered. |

### `managed_agent_archive_session`

Archive a Managed Agent session, preserving its history. Not reversible.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was archived. |
| `archived` | boolean | True when the archive was accepted. |

### `managed_agent_delete_session`

Permanently delete a Managed Agent session, its events, and its sandbox. Not reversible.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sessionId` | string | The session that was deleted. |
| `deleted` | boolean | True when the delete was accepted. |


14 changes: 14 additions & 0 deletions apps/docs/content/docs/en/knowledgebase/using-in-workflows.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,19 @@ In our example, adding `Department equals "Billing"` makes the search consider o

Filters run before the vector comparison, so they make a search both more precise and cheaper. See [Tags and filtering](/knowledgebase/tags) for the full operator list by tag type.

## Retrieval Mode

**Retrieval Mode** is an advanced setting that chooses how matches are found.

| Mode | What it does |
| --- | --- |
| Vector only | The default. Ranks purely on meaning, as described above. |
| Hybrid | Also runs a keyword search over the same chunks and blends the two rankings. |

Semantic search is strong on paraphrase and weak on literal strings: an error code, a ticket key like `PROJ-1234`, a SKU, or a rare product name carries little meaning for the model, so the chunk containing it may not rank near the top. Hybrid adds a keyword pass that matches those tokens exactly, then merges the two lists so a chunk found by either signal can surface.

Turn it on when your documents are full of identifiers, codes, or names people search for verbatim. Leave it off for prose-heavy bases where questions are asked in natural language. Hybrid costs no extra API calls — the keyword pass runs entirely in the database.

## Rerank Results

**Rerank Results** is an optional second pass. Vector search ranks by raw similarity; reranking re-scores the top matches with a dedicated relevance model (Cohere's rerank models) and reorders them, which sharpens the ordering when the best answer isn't the literal closest vector.
Expand Down Expand Up @@ -95,6 +108,7 @@ When the agent's answer is off, the cause is usually in retrieval, not the agent
- **No results, or wrong documents.** A tag filter may be excluding what you want, or the documents may not be indexed yet. A document is only searchable once its processing status is `completed`; while it is `pending`, `processing`, or `failed`, its chunks won't appear.
- **Low similarity scores across the board.** The query is too vague, or the information simply isn't in the base. Rewrite the query to match how the documents phrase things.
- **Right documents, wrong order.** Turn on Rerank Results, or raise Number of Results so the relevant chunk is included.
- **An exact code, ID, or name isn't found.** Switch Retrieval Mode to Hybrid so a keyword pass runs alongside the semantic one.

See [debugging retrieval](/knowledgebase/debugging-retrieval) for the full diagnostic path, and [chunking strategies](/knowledgebase/chunking-strategies) for how chunk boundaries shape what a search can return.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ import { Callout } from 'fumadocs-ui/components/callout'
| Variable | Description |
|----------|-------------|
| `API_ENCRYPTION_KEY` | Encrypts stored API keys (32 hex chars): `openssl rand -hex 32` |
| `COPILOT_API_KEY` | API key for copilot features |
| `COPILOT_API_KEY` | API key for Chat. Without it the Sim Chat block, scheduled prompt jobs, and Inbox cannot run |
| `NEXT_PUBLIC_CHAT_DISABLED` | Set to `true` to hide the Chat module: the workspace lands on your first workflow, with no chats list, scheduled tasks, or editor Chat panel. Chat is shown when unset; `bun run setup` sets it for you if you skip the chat key |
| `ADMIN_API_KEY` | Admin API key for GitOps operations |
| `ALLOWED_LOGIN_DOMAINS` | Restrict signups to domains (comma-separated) |
| `ALLOWED_LOGIN_EMAILS` | Restrict signups to specific emails (comma-separated) |
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/docs/en/workflows/blocks/pi.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ The one case neither layer can rescue is a *first* prompt that already exceeds t

### Create PR [#setup-cloud-pr]

Create PR runs in a sandbox image with the Pi CLI and git baked in.
Create PR runs in a sandbox image with the Pi CLI, Git, Node.js, and Bun baked in. Repository dependencies are not preinstalled; Pi can run `bun install` when a repository needs them.

1. **Enable sandbox execution.** On self-hosted Sim, set `E2B_ENABLED=true`, `E2B_API_KEY`, `E2B_PI_TEMPLATE_ID` (the Pi template id), and `NEXT_PUBLIC_E2B_ENABLED=true` (this reveals Create PR, Update PR, and Review Code in the UI). Build the template with `bun run apps/sim/scripts/build-pi-e2b-template.ts`. These modes stay hidden until `NEXT_PUBLIC_E2B_ENABLED` is set.

Expand Down
11 changes: 9 additions & 2 deletions apps/docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -6040,7 +6040,7 @@
"post": {
"operationId": "searchKnowledgeBase",
"summary": "Search Knowledge Base",
"description": "Perform vector similarity search across one or more knowledge bases. Supports semantic search via query text, tag-based filtering, or a combination of both.",
"description": "Search across one or more knowledge bases. Supports semantic search via query text, tag-based filtering, or a combination of both. Set `searchMode` to `hybrid` to additionally run a full-text keyword leg and fuse it with the semantic results.",
"tags": ["Knowledge Bases"],
"x-codeSamples": [
{
Expand Down Expand Up @@ -6095,14 +6095,21 @@
"items": {
"$ref": "#/components/schemas/TagFilter"
}
},
"searchMode": {
"type": "string",
"enum": ["vector", "hybrid"],
"default": "vector",
"description": "Retrieval strategy. `vector` ranks purely on embedding similarity. `hybrid` also runs a full-text keyword search and fuses the two rankings by reciprocal rank, which retrieves exact tokens — error codes, ticket keys, identifiers, rare product names — that embeddings alone rank poorly. Ignored when only tagFilters are provided."
}
}
},
"example": {
"workspaceId": "wsp_abc123",
"knowledgeBaseIds": ["d2c8f4a6-1b3e-4c5d-9e7f-8a0b2c4d6e1f"],
"query": "How do I reset my password?",
"topK": 5
"topK": 5,
"searchMode": "hybrid"
}
}
}
Expand Down
3 changes: 3 additions & 0 deletions apps/realtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,12 @@
"@sim/workflow-types": "workspace:*",
"@socket.io/redis-adapter": "8.3.0",
"drizzle-orm": "^0.45.2",
"lib0": "0.2.117",
"postgres": "^3.4.5",
"redis": "5.10.0",
"socket.io": "^4.8.1",
"y-protocols": "1.0.7",
"yjs": "13.6.31",
"zod": "4.3.6"
},
"devDependencies": {
Expand Down
Loading
Loading