fix(db): make development schema pushes noninteractive #31798
ci.yml
on: pull_request
Detect Version
Migrate Dev DB
/
Apply Database Migrations
Detect Desktop Changes
0s
Matrix: Build AMD64
Matrix: Build ARM64 (GHCR Only)
Matrix: Test and Build / oauth-postgres
Matrix: Test and Build / test-shard
Test and Build
/
Lint and Test
45s
Test and Build
/
Build App
3m 43s
Check Docs Changes
0s
Matrix: Build Dev ECR
Promote Trigger.dev (Dev)
0s
Matrix: Create GHCR Manifests
Process Docs
/
Process Documentation Embeddings
Promote Trigger.dev
0s
Prune Desktop Prereleases
Matrix: Attest Images
Desktop Release
/
Build, Sign, Notarize
Annotations
37 errors and 25 warnings
|
Test and Build / Lint and Test
Process completed with exit code 1.
|
|
Test and Build / Lint and Test
sim#lint:check: command (/home/runner/_work/sim/sim/packages/sim-cli) /home/runner/.bun/bin/bun run lint:check exited (1)
|
|
Test and Build / Lint and Test
Process completed with exit code 1.
|
|
Test and Build / Test (shard 2)
Process completed with exit code 1.
|
|
lib/knowledge/application/chat.test.ts > organization Search Assistant chat > rechecks OAuth restrictions after the run:
apps/sim/lib/knowledge/application/chat.test.ts#L278
AssertionError: promise resolved "{ …(4) }" instead of rejecting
- Expected
+ Received
- Error {
- "message": "rejected promise",
+ {
+ "chatId": "private-chat",
+ "citations": [],
+ "content": "The field kit is in the violet suitcase.",
+ "conversationUrl": "https://sim.example/o/org-1/chat/private-chat",
}
❯ lib/knowledge/application/chat.test.ts:278:27
|
|
lib/credential-groups/application/configure-organization-mcp.test.ts > organization Databricks setup > creates the fully configured provider with canonical organization scope in one mutation:
apps/sim/lib/credential-groups/application/configure-organization-mcp.test.ts#L220
AssertionError: expected "recordAudit" to be called with arguments: [ ObjectContaining{…} ]
Received:
1st recordAudit call:
[
- ObjectContaining {
+ {
+ "action": "credential_group.updated",
"actorId": "admin-user",
+ "description": "Added Databricks to connected accounts",
"metadata": {
+ "actor": {
+ "kind": "session",
+ "userId": "admin-user",
+ },
+ "operation": "organization_accounts.mcp.add",
"organizationId": "customer-org",
},
+ "request": undefined,
"resourceId": "customer-group",
+ "resourceName": "Connected accounts",
+ "resourceType": "credential_group",
},
]
Number of calls: 1
❯ lib/credential-groups/application/configure-organization-mcp.test.ts:220:31
|
|
lib/credential-groups/application/configure-organization-mcp.test.ts > organization Databricks setup > updates only the organization provider and invalidates affected connections:
apps/sim/lib/credential-groups/application/configure-organization-mcp.test.ts#L179
AssertionError: expected "recordAudit" to be called with arguments: [ ObjectContaining{…} ]
Received:
1st recordAudit call:
[
- ObjectContaining {
+ {
+ "action": "credential_group.updated",
"actorId": "admin-user",
+ "description": "Configured the organization Databricks provider",
"metadata": {
+ "actor": {
+ "kind": "session",
+ "userId": "admin-user",
+ },
+ "operation": "organization_accounts.mcp.configure",
"organizationId": "customer-org",
},
+ "request": undefined,
"resourceId": "customer-group",
+ "resourceName": "Connected accounts",
+ "resourceType": "credential_group",
},
]
Number of calls: 1
❯ lib/credential-groups/application/configure-organization-mcp.test.ts:179:31
|
|
app/api/knowledge/utils.test.ts > Knowledge Utils > generateEmbeddings > should throw error when no API configuration provided:
apps/sim/app/api/knowledge/utils.test.ts#L343
AssertionError: expected [Function] to throw error including 'OPENAI_API_KEY is not configured' but got 'Semantic retrieval is unavailable bec…'
Expected: "OPENAI_API_KEY is not configured"
Received: "Semantic retrieval is unavailable because its embedding provider is not configured."
❯ app/api/knowledge/utils.test.ts:343:81
|
|
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/api/workspaces/invitations/route.test.ts > POST /api/workspaces/invitations/batch > creates an external workspace invitation for users already in another organization:
apps/sim/app/api/workspaces/invitations/route.test.ts#L424
AssertionError: expected 500 to be 200 // Object.is equality
- Expected
+ Received
- 200
+ 500
❯ app/api/workspaces/invitations/route.test.ts:424:29
|
|
app/api/workspaces/invitations/route.test.ts > POST /api/workspaces/invitations/batch > reports org-owned invites as failed when the organization has no available seats:
apps/sim/app/api/workspaces/invitations/route.test.ts#L379
AssertionError: expected 500 to be 200 // Object.is equality
- Expected
+ Received
- 200
+ 500
❯ app/api/workspaces/invitations/route.test.ts:379:29
|
|
app/api/workspaces/invitations/route.test.ts > POST /api/workspaces/invitations/batch > blocks invites for grandfathered workspaces without a team plan:
apps/sim/app/api/workspaces/invitations/route.test.ts#L331
AssertionError: expected 500 to be 403 // Object.is equality
- Expected
+ Received
- 403
+ 500
❯ app/api/workspaces/invitations/route.test.ts:331:29
|
|
app/api/workspaces/invitations/route.test.ts > POST /api/workspaces/invitations/batch > blocks invites for personal workspaces with an upgrade prompt:
apps/sim/app/api/workspaces/invitations/route.test.ts#L300
AssertionError: expected 500 to be 403 // Object.is equality
- Expected
+ Received
- 403
+ 500
❯ app/api/workspaces/invitations/route.test.ts:300:29
|
|
app/api/workspaces/invitations/route.test.ts > POST /api/workspaces/invitations/batch > keeps unexpected database details out of per-email failures:
apps/sim/app/api/workspaces/invitations/route.test.ts#L266
AssertionError: expected 500 to be 200 // Object.is equality
- Expected
+ Received
- 200
+ 500
❯ app/api/workspaces/invitations/route.test.ts:266:29
|
|
app/api/knowledge/search/utils.test.ts > Knowledge Search Utils > generateSearchEmbedding > should throw error when no API configuration provided:
apps/sim/app/api/knowledge/search/utils.test.ts#L742
AssertionError: expected [Function] to throw error including 'OPENAI_API_KEY is not configured' but got 'Semantic retrieval is unavailable bec…'
Expected: "OPENAI_API_KEY is not configured"
Received: "Semantic retrieval is unavailable because its embedding provider is not configured."
❯ app/api/knowledge/search/utils.test.ts:742:83
|
|
lib/workflows/application/operations.test.ts > workflow operation registry > reserves manual execution for personal keys with write access:
apps/sim/lib/workflows/application/operations.test.ts#L145
AssertionError: expected { Object (id, oauthScope, ...) } to match object { minimumRole: 'write', …(2) }
(4 matching properties omitted from actual)
- Expected
+ Received
{
"minimumRole": "write",
"principalKinds": [
"personal_api_key",
"oauth_access_token",
+ "delegated",
],
"workspaceApiKey": "deny",
}
❯ lib/workflows/application/operations.test.ts:145:25
|
|
app/_shell/desktop-title-bar-surfaces.test.ts > desktop title-bar surface audit > clears the lane for panels that embed pages away from the lights:
apps/sim/app/_shell/desktop-title-bar-surfaces.test.ts#L169
AssertionError: expected '\'use client\'\n\nimport { type Compo…' to contain '[--workspace-content-title-bar-inset:…'
- Expected
+ Received
- [--workspace-content-title-bar-inset:0px]
+ 'use client'
+
+ import { type ComponentProps, forwardRef, memo, useCallback, useRef, useState } from 'react'
+ import { cn } from '@sim/emcn'
+ import type { WorkspaceSearchFilters } from '@/lib/api/contracts/knowledge'
+ import type { MothershipTableViewContext } from '@/lib/api/contracts/mothership-resources'
+ import type { FilePreviewSession } from '@/lib/mothership/request/session'
+ import { getChatResourceSelectionId } from '@/lib/mothership/resources/types'
+ import type { FileDownloadSource } from '@/lib/uploads/client/download'
+ import { getFileExtension } from '@/lib/uploads/utils/file-utils'
+ import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
+ import type { PreviewMode } from '@/app/workspace/[workspaceId]/files/components/file-viewer'
+ import {
+ isCsvStreamOnly,
+ isMarkdownFile,
+ RICH_PREVIEWABLE_EXTENSIONS,
+ } from '@/app/workspace/[workspaceId]/files/components/file-viewer'
+ import { ChatPanelContent } from '@/app/workspace/[workspaceId]/home/components/chat-panel-layout'
+ import { useMothershipResources } from '@/app/workspace/[workspaceId]/home/components/mothership-resources-context'
+ import type { BrowserPanelOverlayController } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/browser-session/browser-panel-occlusion'
+ import { BrowserSession } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/browser-session/browser-session'
+ import { GenericResourceContent } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/generic-resource-content'
+ import { SearchResourceContent } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/search-resource-content'
+ import { TerminalSession } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/components/terminal-session/terminal-session'
+ import { ResourceWorkspaceHost } from '@/app/workspace/[workspaceId]/home/components/resource-workspace-host'
+ import { hasRenderableFilePreviewContent } from '@/app/workspace/[workspaceId]/home/hooks/preview'
+ import type {
+ GenericResourceData,
+ MothershipResource,
+ MothershipResourceType,
+ } from '@/app/workspace/[workspaceId]/home/types'
+ import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider'
+ import { useWorkspacePermissionsQuery } from '@/hooks/queries/workspace'
+ import { useWorkspaceFiles } from '@/hooks/queries/workspace-files'
+ import { useUserPermissions } from '@/hooks/use-user-permissions'
+ import { ResourceActions, ResourceContent, ResourceTabs } from './components'
+
+
+ function isPersistentPanel(resource: MothershipResource): boolean {
+ return resource.type === 'browser' || resource.type === 'terminal'
+ }
+
+
+ function persistentPanelResources(resources: MothershipResource[]): MothershipResource[] {
+ const panels: MothershipResource[] = []
+ const seen = new Set<MothershipResourceType>()
+ for (const resource of resources) {
+ if (!isPersistentPanel(resource) || seen.has(resource.type)) continue
+ seen.add(resource.type)
+ panels.push(resource)
+ }
+ return panels
+ }
+
+ const PREVIEW_CYCLE: Record<PreviewMode, PreviewMode> = {
+ editor: 'split',
+ split: 'preview',
+ preview: 'editor',
+ } as const
+
+
+ function shouldShowStreamingFilePanel(
+ previewSession: FilePreviewSession | null | undefined,
+ active: MothershipResource | null
+ ): boolean {
+ if (!previewSession || !hasRenderableFilePreviewContent(previewSession) || !active) return false
+ if (active.id === 'streaming-file') return true
+ if (active.type !== 'file') return false
+ if (active.id && previewSession.fileId === active.id) {
+
|
|
background/drain-governed-subject.test.ts > draining another dispatch’s pre-stamped marker:
apps/sim/blocks/blocks/enrichment.ts#L13
TypeError: Cannot read properties of undefined (reading 'flatMap')
❯ blocks/blocks/enrichment.ts:13:40
❯ blocks/registry-maps.ts:79:1
❯ lib/integrations/tool-catalog.ts:3:1
|
|
Test and Build / Test (shard 3)
@sim/app#test: command (/home/runner/_work/sim/sim/apps/sim) /home/runner/.bun/bin/bun run test exited (1)
|
|
Test and Build / PostgreSQL integration (migrate)
Process completed with exit code 1.
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'openai', using 'files', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'openai', using 'files', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'anthropic', using 'userPrompt', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'anthropic', using 'userPrompt', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'anthropic', using 'messages', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'anthropic', using 'messages', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'openai', using 'files', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'openai', using 'files', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
Test and Build / PostgreSQL integration (push)
Process completed with exit code 1.
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'openai', using 'files', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'openai', using 'files', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'anthropic', using 'userPrompt', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'anthropic', using 'userPrompt', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'anthropic', using 'messages', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'anthropic' → 'anthropic', using 'messages', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'openai', using 'files', streaming=true:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
executor/handlers/agent/memory-harness.postgres.test.ts > Agent memory through PostgreSQL, storage, and provider transports > 'openai' → 'openai', using 'files', streaming=false:
apps/sim/executor/handlers/agent/memory-harness.postgres.test.ts#L762
AssertionError: promise resolved "'NO_FILE'" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
"NO_FILE"
❯ executor/handlers/agent/memory-harness.postgres.test.ts:762:64
|
|
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Lint and Test
- Step: unknown (failed)
|
|
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
- Step: unknown (failed)
|
|
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
- Step: unknown (failed)
|
|
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)
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)
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)
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / Test (shard 3)
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Test (shard 3)
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / Test (shard 3)
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Test (shard 3)
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / Test (shard 3)
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Test (shard 3)
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / PostgreSQL integration (migrate)
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / PostgreSQL integration (migrate)
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / PostgreSQL integration (push)
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / PostgreSQL integration (push)
Found 2 failed/cancelled steps in previous workflow steps
|