feat(credential-groups): add personal MCP OAuth connections #29829
ci.yml
on: pull_request
Detect Version
0s
Migrate Dev DB
/
Apply Database Migrations
Detect Desktop Changes
0s
Matrix: Build AMD64
Matrix: Build ARM64 (GHCR Only)
Matrix: Test and Build / test-shard
Test and Build
/
Lint and Test
41s
Test and Build
/
Build App
2m 33s
Check Docs Changes
0s
Matrix: Build Dev ECR
Deploy Trigger.dev (Dev)
0s
Matrix: Create GHCR Manifests
Process Docs
/
Process Documentation Embeddings
Prune Desktop Prereleases
Desktop Release
/
Build, Sign, Notarize
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
|