Skip to content

feat(credential-groups): add personal MCP OAuth connections #29843

feat(credential-groups): add personal MCP OAuth connections

feat(credential-groups): add personal MCP OAuth connections #29843

Triggered via pull request September 2, 2026 01:41
Status Failure
Total duration 2m 59s
Artifacts

ci.yml

on: pull_request
Detect Version
Detect Version
Migrate Dev DB  /  Apply Database Migrations
Migrate Dev DB / Apply Database Migrations
Detect Desktop Changes
0s
Detect Desktop Changes
Matrix: Build AMD64
Matrix: Build ARM64 (GHCR Only)
Matrix: Test and Build / test-shard
Test and Build  /  Lint and Test
2m 17s
Test and Build / Lint and Test
Test and Build  /  Build App
2m 29s
Test and Build / Build App
Check Docs Changes
Check Docs Changes
Matrix: Build Dev ECR
Deploy Trigger.dev (Dev)
0s
Deploy Trigger.dev (Dev)
Check Desktop Signing Secrets
0s
Check Desktop Signing Secrets
Migrate DB  /  Apply Database Migrations
Migrate DB / Apply Database Migrations
Create Desktop Prerelease
0s
Create Desktop Prerelease
Promote Images
Promote Images
Desktop Prerelease Build  /  Build, Sign, Notarize
Desktop Prerelease Build / Build, Sign, Notarize
Matrix: Create GHCR Manifests
Process Docs  /  Process Documentation Embeddings
Process Docs / Process Documentation Embeddings
Publish Desktop Prerelease
0s
Publish Desktop Prerelease
Create GitHub Release
Create GitHub Release
Prune Desktop Prereleases
Prune Desktop Prereleases
Desktop Release  /  Build, Sign, Notarize
Desktop Release / Build, Sign, Notarize
Fit to window
Zoom out
Zoom in

Annotations

21 errors and 15 warnings
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx > PromptEditor autosize > re-measures on the first delivery when the width changed before it arrived: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx:106:20 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx > PromptEditor autosize > re-measures again when the editor widens back: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx:106:20 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx > PromptEditor autosize > re-measures when the editor width changes so no text falls outside the textarea: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx:106:20 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx > PromptEditor autosize > shrinks the textarea again when the prompt becomes shorter: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx:106:20 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx > PromptEditor autosize > sizes the textarea to its content height on mount: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/prompt-editor.test.tsx:106:20 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
lib/internal/mcp/execute-tool.test.ts > executeMcpTool > parses direct block arguments and invokes the authorized use case: apps/sim/lib/internal/mcp/execute-tool.test.ts#L93
AssertionError: expected "vi.fn()" to be called with arguments: [ { context: { …(5) }, …(1) } ] Received: 1st vi.fn() call: @@ -22,7 +22,10 @@ ], "userId": "user-1", "workflowId": "workflow-1", "workspaceId": "workspace-1", }, + "resourceScope": { + "mcpServerId": "mcp-server", + }, }, ] Number of calls: 1 ❯ lib/internal/mcp/execute-tool.test.ts:93:35
lib/credentials/application/credential-crud.test.ts > personal-credential capability > creates the personal secret when no group withholds it: apps/sim/lib/credentials/application/credential-crud.ts#L248
Error: [vitest] No "requireOrdinaryCredentialType" export is defined on the "@/lib/credentials/access" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/lib/credentials/access"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Object.afterSuccess lib/credentials/application/credential-crud.ts:248:26 ❯ Object.execute lib/core/application/authorized-workspace-use-case.ts:211:24 ❯ lib/credentials/application/credential-crud.test.ts:403:20
lib/credentials/application/credential-crud.test.ts > personal-credential capability > still creates a workspace-shared secret under the same restriction: apps/sim/lib/credentials/application/credential-crud.ts#L248
Error: [vitest] No "requireOrdinaryCredentialType" export is defined on the "@/lib/credentials/access" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/lib/credentials/access"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Object.afterSuccess lib/credentials/application/credential-crud.ts:248:26 ❯ Object.execute lib/core/application/authorized-workspace-use-case.ts:211:24 ❯ lib/credentials/application/credential-crud.test.ts:379:20
lib/credential-groups/mcp-oauth-state.test.ts > Credential Group MCP OAuth state > encrypts bearer material and consumes an attempt exactly once: apps/sim/lib/credential-groups/mcp-oauth-state.ts#L112
TypeError: redis.sadd is not a function ❯ Module.createCredentialGroupMcpOAuthAttempt lib/credential-groups/mcp-oauth-state.ts:112:15 ❯ lib/credential-groups/mcp-oauth-state.test.ts:54:5
Test and Build / Test (shard 2)
@sim/app#test: command (/home/runner/_work/sim/sim/apps/sim) /home/runner/.bun/bin/bun run test exited (1)
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.test.tsx > usePromptEditor mention menu dismissal > lets a further keystroke reopen the same mention after a dismiss: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.test.tsx:42:14 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.test.tsx > usePromptEditor mention menu dismissal > stays closed across repeated clicks at the same position after the user clicks away, even if the caret lands back inside the open mention: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.test.tsx:42:14 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.test.tsx > usePromptEditor mention menu dismissal > reopens the menu while the user keeps typing an unmatched mention: apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts#L168
Error: [vitest] No "useMcpToolServers" export is defined on the "@/hooks/queries/mcp" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@/hooks/queries/mcp"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ Module.usePromptEditor app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.ts:168:40 ❯ Probe app/workspace/[workspaceId]/home/components/user-input/components/prompt-editor/use-prompt-editor.test.tsx:42:14 ❯ Object.react_stack_bottom_frame ../../node_modules/react-dom/cjs/react-dom-client.development.js:25904:20 ❯ renderWithHooks ../../node_modules/react-dom/cjs/react-dom-client.development.js:7662:22 ❯ updateFunctionComponent ../../node_modules/react-dom/cjs/react-dom-client.development.js:10166:19 ❯ beginWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:11778:18 ❯ runWithFiberInDEV ../../node_modules/react-dom/cjs/react-dom-client.development.js:874:13 ❯ performUnitOfWork ../../node_modules/react-dom/cjs/react-dom-client.development.js:17641:22
lib/mcp/application/operations.test.ts > MCP operation capability declarations > declares a capability on every operation, by name: apps/sim/lib/mcp/application/operations.test.ts#L169
AssertionError: expected { list: 'mcp_tools.use', …(17) } to deeply equal { list: 'mcp_tools.use', …(16) } - Expected + Received @@ -5,10 +5,11 @@ "deleteWorkflowDeploymentServer": "deploy.mcp", "deployWorkflowTool": "deploy.mcp", "discoverTools": "mcp_tools.use", "executeTool": "mcp_tools.use", "list": "mcp_tools.use", + "listManagedConnections": "mcp_tools.use", "listWorkflowDeploymentTools": "deploy.mcp", "listWorkflowDeployments": "deploy.mcp", "read": "mcp_tools.use", "readWorkflowDeploymentServer": "deploy.mcp", "reconfigure": "mcp_tools.use", ❯ lib/mcp/application/operations.test.ts:169:22
executor/handlers/agent/agent-handler.test.ts > AgentBlockHandler > execute > should discover MCP tools without cached schema through the application operation: apps/sim/executor/handlers/agent/agent-handler.test.ts#L3688
AssertionError: expected "vi.fn()" to be called with arguments: [ ObjectContaining{…} ] Number of calls: 0 ❯ executor/handlers/agent/agent-handler.test.ts:3688:52
executor/handlers/agent/agent-handler.test.ts > AgentBlockHandler > execute > should handle multiple MCP tools from the same server efficiently: apps/sim/executor/handlers/agent/agent-handler.test.ts#L3639
AssertionError: expected +0 to be 3 // Object.is equality - Expected + Received - 3 + 0 ❯ executor/handlers/agent/agent-handler.test.ts:3639:48
executor/handlers/agent/agent-handler.test.ts > AgentBlockHandler > execute > should pass the cached tool schema to the provider: apps/sim/executor/handlers/agent/agent-handler.test.ts#L3409
AssertionError: expected +0 to be 1 // Object.is equality - Expected + Received - 1 + 0 ❯ executor/handlers/agent/agent-handler.test.ts:3409:48
executor/handlers/agent/agent-handler.test.ts > AgentBlockHandler > execute > projects only resolver-recorded inline and cached tool metadata for the model: apps/sim/executor/handlers/agent/agent-handler.test.ts#L1696
AssertionError: expected [ { id: 'custom_lookup', …(4) } ] to deeply equal ArrayContaining{…} - Expected + Received - ArrayContaining [ - ObjectContaining { + [ + { "description": "Use {{CUSTOM_DESCRIPTION}} for Box", "id": "custom_lookup", - "parameters": ObjectContaining { + "parameters": { "properties": { "query": { "description": "Query {{CUSTOM_PARAMETER}}", "enum": [ "x", "safe", ], "type": "string", }, }, + "required": [ + "query", + ], + "type": "object", }, - }, - ObjectContaining { - "description": "MCP tool search_files from Docs {{MCP_SERVER_LABEL}}", - "id": StringContaining "search_files", - "parameters": ObjectContaining { - "properties": { - "query": { - "description": "Search {{MCP_PARAMETER}}", - "type": "string", - }, - }, - }, + "params": {}, + "usageControl": "auto", }, ] ❯ executor/handlers/agent/agent-handler.test.ts:1696:37
lib/credential-groups/mcp-connections.test.ts > listCredentialGroupMcpConnectionReferences > returns MCP credential IDs and tool names without secret material: apps/sim/lib/credential-groups/mcp-connections.ts#L141
Error: Managed MCP server mcp-server-1 has no connector ID ❯ lib/credential-groups/mcp-connections.ts:141:15 ❯ listCredentialGroupMcpConnectionReferences lib/credential-groups/mcp-connections.ts:136:30 ❯ lib/credential-groups/mcp-connections.test.ts:28:20
Test and Build / Lint and Test
@sim/app#test: command (/home/runner/_work/sim/sim/apps/sim) /home/runner/.bun/bin/bun run test exited (1)
Test and Build / Lint and Test
Process completed with exit code 1.
Test and Build / Test (shard 2)
Skipping sticky disk commit due to previous step failures
Test and Build / Test (shard 2)
- Step: unknown (failed)
Test and Build / Test (shard 2)
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Test (shard 2)
Skipping sticky disk commit due to previous step failures
Test and Build / Test (shard 2)
- Step: unknown (failed)
Test and Build / Test (shard 2)
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Test (shard 2)
Skipping sticky disk commit due to previous step failures
Test and Build / Test (shard 2)
- Step: unknown (failed)
Test and Build / Test (shard 2)
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps