Skip to content

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

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

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

Triggered via pull request September 2, 2026 00:54
Status Failure
Total duration 2m 45s
Artifacts

ci.yml

on: pull_request
Detect Version
0s
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
41s
Test and Build / Lint and Test
Test and Build  /  Build App
2m 33s
Test and Build / Build App
Check Docs Changes
0s
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
0s
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
Publish Desktop Prerelease
Create GitHub Release
0s
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

14 errors and 15 warnings
Test and Build / Lint and Test
Process completed with exit code 1.
check:openapi
audit failed — see the group above
scripts/openapi/documents.test.ts > generated OpenAPI documents > publishes Agent tools as named integration, custom, and MCP schemas: scripts/openapi/documents.test.ts#L331
AssertionError: expected [ …(4) ] to deeply equal [ …(3) ] - Expected + Received @@ -6,6 +6,9 @@ "$ref": "#/components/schemas/AgentCustomTool", }, { "$ref": "#/components/schemas/AgentMcpTool", }, + { + "$ref": "#/components/schemas/AgentMcpServerAdvanced", + }, ] ❯ scripts/openapi/documents.test.ts:331:31
Test and Build / Lint and Test
Process completed with exit code 1.
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)
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
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