Skip to content

Commit 6035091

Browse files
Merge remote-tracking branch 'origin/staging' into fix/infinite-scroll-sidebar
2 parents d2270a6 + d6dc9f7 commit 6035091

452 files changed

Lines changed: 43888 additions & 18981 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 69 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ permissions:
1616
jobs:
1717
test-build:
1818
name: Test and Build
19+
if: github.ref != 'refs/heads/dev' || github.event_name == 'pull_request'
1920
uses: ./.github/workflows/test-build.yml
2021
secrets: inherit
2122

@@ -45,11 +46,66 @@ jobs:
4546
echo "ℹ️ Not a release commit"
4647
fi
4748
48-
# Build AMD64 images and push to ECR immediately (+ GHCR for main)
49+
# Dev: build all 3 images for ECR only (no GHCR, no ARM64)
50+
build-dev:
51+
name: Build Dev ECR
52+
needs: [detect-version]
53+
if: github.event_name == 'push' && github.ref == 'refs/heads/dev'
54+
runs-on: blacksmith-8vcpu-ubuntu-2404
55+
permissions:
56+
contents: read
57+
id-token: write
58+
strategy:
59+
fail-fast: false
60+
matrix:
61+
include:
62+
- dockerfile: ./docker/app.Dockerfile
63+
ecr_repo_secret: ECR_APP
64+
- dockerfile: ./docker/db.Dockerfile
65+
ecr_repo_secret: ECR_MIGRATIONS
66+
- dockerfile: ./docker/realtime.Dockerfile
67+
ecr_repo_secret: ECR_REALTIME
68+
steps:
69+
- name: Checkout code
70+
uses: actions/checkout@v4
71+
72+
- name: Configure AWS credentials
73+
uses: aws-actions/configure-aws-credentials@v4
74+
with:
75+
role-to-assume: ${{ secrets.DEV_AWS_ROLE_TO_ASSUME }}
76+
aws-region: ${{ secrets.DEV_AWS_REGION }}
77+
78+
- name: Login to Amazon ECR
79+
id: login-ecr
80+
uses: aws-actions/amazon-ecr-login@v2
81+
82+
- name: Login to Docker Hub
83+
uses: docker/login-action@v3
84+
with:
85+
username: ${{ secrets.DOCKERHUB_USERNAME }}
86+
password: ${{ secrets.DOCKERHUB_TOKEN }}
87+
88+
- name: Set up Docker Buildx
89+
uses: useblacksmith/setup-docker-builder@v1
90+
91+
- name: Build and push
92+
uses: useblacksmith/build-push-action@v2
93+
with:
94+
context: .
95+
file: ${{ matrix.dockerfile }}
96+
platforms: linux/amd64
97+
push: true
98+
tags: ${{ steps.login-ecr.outputs.registry }}/${{ secrets[matrix.ecr_repo_secret] }}:dev
99+
provenance: false
100+
sbom: false
101+
102+
# Main/staging: build AMD64 images and push to ECR + GHCR
49103
build-amd64:
50104
name: Build AMD64
51-
needs: [detect-version]
52-
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/dev')
105+
needs: [test-build, detect-version]
106+
if: >-
107+
github.event_name == 'push' &&
108+
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging')
53109
runs-on: blacksmith-8vcpu-ubuntu-2404
54110
permissions:
55111
contents: read
@@ -75,8 +131,8 @@ jobs:
75131
- name: Configure AWS credentials
76132
uses: aws-actions/configure-aws-credentials@v4
77133
with:
78-
role-to-assume: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_TO_ASSUME || github.ref == 'refs/heads/dev' && secrets.DEV_AWS_ROLE_TO_ASSUME || secrets.STAGING_AWS_ROLE_TO_ASSUME }}
79-
aws-region: ${{ github.ref == 'refs/heads/main' && secrets.AWS_REGION || github.ref == 'refs/heads/dev' && secrets.DEV_AWS_REGION || secrets.STAGING_AWS_REGION }}
134+
role-to-assume: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_TO_ASSUME || secrets.STAGING_AWS_ROLE_TO_ASSUME }}
135+
aws-region: ${{ github.ref == 'refs/heads/main' && secrets.AWS_REGION || secrets.STAGING_AWS_REGION }}
80136

81137
- name: Login to Amazon ECR
82138
id: login-ecr
@@ -106,26 +162,20 @@ jobs:
106162
ECR_REPO="${{ secrets[matrix.ecr_repo_secret] }}"
107163
GHCR_IMAGE="${{ matrix.ghcr_image }}"
108164
109-
# ECR tags (always build for ECR)
110165
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
111166
ECR_TAG="latest"
112-
elif [ "${{ github.ref }}" = "refs/heads/dev" ]; then
113-
ECR_TAG="dev"
114167
else
115168
ECR_TAG="staging"
116169
fi
117170
ECR_IMAGE="${ECR_REGISTRY}/${ECR_REPO}:${ECR_TAG}"
118171
119-
# Build tags list
120172
TAGS="${ECR_IMAGE}"
121173
122-
# Add GHCR tags only for main branch
123174
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
124175
GHCR_AMD64="${GHCR_IMAGE}:latest-amd64"
125176
GHCR_SHA="${GHCR_IMAGE}:${{ github.sha }}-amd64"
126177
TAGS="${TAGS},$GHCR_AMD64,$GHCR_SHA"
127178
128-
# Add version tag if this is a release commit
129179
if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then
130180
VERSION="${{ needs.detect-version.outputs.version }}"
131181
GHCR_VERSION="${GHCR_IMAGE}:${VERSION}-amd64"
@@ -256,6 +306,14 @@ jobs:
256306
docker manifest push "${IMAGE_BASE}:${VERSION}"
257307
fi
258308
309+
# Run database migrations for dev
310+
migrate-dev:
311+
name: Migrate Dev DB
312+
needs: [build-dev]
313+
if: github.event_name == 'push' && github.ref == 'refs/heads/dev'
314+
uses: ./.github/workflows/migrations.yml
315+
secrets: inherit
316+
259317
# Check if docs changed
260318
check-docs-changes:
261319
name: Check Docs Changes

.github/workflows/migrations.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,5 @@ jobs:
3838
- name: Apply migrations
3939
working-directory: ./packages/db
4040
env:
41-
DATABASE_URL: ${{ github.ref == 'refs/heads/main' && secrets.DATABASE_URL || secrets.STAGING_DATABASE_URL }}
41+
DATABASE_URL: ${{ github.ref == 'refs/heads/main' && secrets.DATABASE_URL || github.ref == 'refs/heads/dev' && secrets.DEV_DATABASE_URL || secrets.STAGING_DATABASE_URL }}
4242
run: bunx drizzle-kit migrate --config=./drizzle.config.ts

.github/workflows/test-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ jobs:
105105

106106
- name: Run tests with coverage
107107
env:
108-
NODE_OPTIONS: '--no-warnings'
108+
NODE_OPTIONS: '--no-warnings --max-old-space-size=8192'
109109
NEXT_PUBLIC_APP_URL: 'https://www.sim.ai'
110110
DATABASE_URL: 'postgresql://postgres:postgres@localhost:5432/simstudio'
111111
ENCRYPTION_KEY: '7cf672e460e430c1fba707575c2b0e2ad5a99dddf9b7b7e3b5646e630861db1c' # dummy key for CI only
@@ -127,7 +127,7 @@ jobs:
127127
128128
- name: Build application
129129
env:
130-
NODE_OPTIONS: '--no-warnings'
130+
NODE_OPTIONS: '--no-warnings --max-old-space-size=8192'
131131
NEXT_PUBLIC_APP_URL: 'https://www.sim.ai'
132132
DATABASE_URL: 'postgresql://postgres:postgres@localhost:5432/simstudio'
133133
STRIPE_SECRET_KEY: 'dummy_key_for_ci_only'

README.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,6 @@ docker compose -f docker-compose.prod.yml up -d
7474

7575
Open [http://localhost:3000](http://localhost:3000)
7676

77-
#### Background worker note
78-
79-
The Docker Compose stack starts a dedicated worker container by default. If `REDIS_URL` is not configured, the worker will start, log that it is idle, and do no queue processing. This is expected. Queue-backed API, webhook, and schedule execution requires Redis; installs without Redis continue to use the inline execution path.
80-
8177
Sim also supports local models via [Ollama](https://ollama.ai) and [vLLM](https://docs.vllm.ai/) — see the [Docker self-hosting docs](https://docs.sim.ai/self-hosting/docker) for setup details.
8278

8379
### Self-hosted: Manual Setup
@@ -123,12 +119,10 @@ cd packages/db && bun run db:migrate
123119
5. Start development servers:
124120

125121
```bash
126-
bun run dev:full # Starts Next.js app, realtime socket server, and the BullMQ worker
122+
bun run dev:full # Starts Next.js app and realtime socket server
127123
```
128124

129-
If `REDIS_URL` is not configured, the worker will remain idle and execution continues inline.
130-
131-
Or run separately: `bun run dev` (Next.js), `cd apps/sim && bun run dev:sockets` (realtime), and `cd apps/sim && bun run worker` (BullMQ worker).
125+
Or run separately: `bun run dev` (Next.js) and `cd apps/sim && bun run dev:sockets` (realtime).
132126

133127
## Copilot API Keys
134128

apps/docs/components/icons.tsx

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4625,6 +4625,42 @@ export function DynamoDBIcon(props: SVGProps<SVGSVGElement>) {
46254625
)
46264626
}
46274627

4628+
export function IAMIcon(props: SVGProps<SVGSVGElement>) {
4629+
return (
4630+
<svg {...props} viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'>
4631+
<defs>
4632+
<linearGradient x1='0%' y1='100%' x2='100%' y2='0%' id='iamGradient'>
4633+
<stop stopColor='#BD0816' offset='0%' />
4634+
<stop stopColor='#FF5252' offset='100%' />
4635+
</linearGradient>
4636+
</defs>
4637+
<rect fill='url(#iamGradient)' width='80' height='80' />
4638+
<path
4639+
d='M14,59 L66,59 L66,21 L14,21 L14,59 Z M68,20 L68,60 C68,60.552 67.553,61 67,61 L13,61 C12.447,61 12,60.552 12,60 L12,20 C12,19.448 12.447,19 13,19 L67,19 C67.553,19 68,19.448 68,20 L68,20 Z M44,48 L59,48 L59,46 L44,46 L44,48 Z M57,42 L62,42 L62,40 L57,40 L57,42 Z M44,42 L52,42 L52,40 L44,40 L44,42 Z M29,46 C29,45.449 28.552,45 28,45 C27.448,45 27,45.449 27,46 C27,46.551 27.448,47 28,47 C28.552,47 29,46.551 29,46 L29,46 Z M31,46 C31,47.302 30.161,48.401 29,48.816 L29,51 L27,51 L27,48.815 C25.839,48.401 25,47.302 25,46 C25,44.346 26.346,43 28,43 C29.654,43 31,44.346 31,46 L31,46 Z M19,53.993 L36.994,54 L36.996,50 L33,50 L33,48 L36.996,48 L36.998,45 L33,45 L33,43 L36.999,43 L37,40.007 L19.006,40 L19,53.993 Z M22,38.001 L34,38.006 L34,31 C34.001,28.697 31.197,26.677 28,26.675 L27.996,26.675 C24.804,26.675 22.004,28.696 22.002,31 L22,38.001 Z M17,54.992 L17.006,39 C17.006,38.734 17.111,38.48 17.299,38.292 C17.486,38.105 17.741,38 18.006,38 L20,38.001 L20.002,31 C20.004,27.512 23.59,24.675 27.996,24.675 L28,24.675 C32.412,24.677 36.001,27.515 36,31 L36,38.007 L38,38.008 C38.553,38.008 39,38.456 39,39.008 L38.994,55 C38.994,55.266 38.889,55.52 38.701,55.708 C38.514,55.895 38.259,56 37.994,56 L18,55.992 C17.447,55.992 17,55.544 17,54.992 L17,54.992 Z M60,36 L62,36 L62,34 L60,34 L60,36 Z M44,36 L55,36 L55,34 L44,34 L44,36 Z'
4640+
fill='#FFFFFF'
4641+
/>
4642+
</svg>
4643+
)
4644+
}
4645+
4646+
export function STSIcon(props: SVGProps<SVGSVGElement>) {
4647+
return (
4648+
<svg {...props} viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'>
4649+
<defs>
4650+
<linearGradient x1='0%' y1='100%' x2='100%' y2='0%' id='stsGradient'>
4651+
<stop stopColor='#BD0816' offset='0%' />
4652+
<stop stopColor='#FF5252' offset='100%' />
4653+
</linearGradient>
4654+
</defs>
4655+
<rect fill='url(#stsGradient)' width='80' height='80' />
4656+
<path
4657+
d='M14,59 L66,59 L66,21 L14,21 L14,59 Z M68,20 L68,60 C68,60.552 67.553,61 67,61 L13,61 C12.447,61 12,60.552 12,60 L12,20 C12,19.448 12.447,19 13,19 L67,19 C67.553,19 68,19.448 68,20 L68,20 Z M44,48 L59,48 L59,46 L44,46 L44,48 Z M57,42 L62,42 L62,40 L57,40 L57,42 Z M44,42 L52,42 L52,40 L44,40 L44,42 Z M29,46 C29,45.449 28.552,45 28,45 C27.448,45 27,45.449 27,46 C27,46.551 27.448,47 28,47 C28.552,47 29,46.551 29,46 L29,46 Z M31,46 C31,47.302 30.161,48.401 29,48.816 L29,51 L27,51 L27,48.815 C25.839,48.401 25,47.302 25,46 C25,44.346 26.346,43 28,43 C29.654,43 31,44.346 31,46 L31,46 Z M19,53.993 L36.994,54 L36.996,50 L33,50 L33,48 L36.996,48 L36.998,45 L33,45 L33,43 L36.999,43 L37,40.007 L19.006,40 L19,53.993 Z M22,38.001 L34,38.006 L34,31 C34.001,28.697 31.197,26.677 28,26.675 L27.996,26.675 C24.804,26.675 22.004,28.696 22.002,31 L22,38.001 Z M17,54.992 L17.006,39 C17.006,38.734 17.111,38.48 17.299,38.292 C17.486,38.105 17.741,38 18.006,38 L20,38.001 L20.002,31 C20.004,27.512 23.59,24.675 27.996,24.675 L28,24.675 C32.412,24.677 36.001,27.515 36,31 L36,38.007 L38,38.008 C38.553,38.008 39,38.456 39,39.008 L38.994,55 C38.994,55.266 38.889,55.52 38.701,55.708 C38.514,55.895 38.259,56 37.994,56 L18,55.992 C17.447,55.992 17,55.544 17,54.992 L17,54.992 Z M60,36 L62,36 L62,34 L60,34 L60,36 Z M44,36 L55,36 L55,34 L44,34 L44,36 Z'
4658+
fill='#FFFFFF'
4659+
/>
4660+
</svg>
4661+
)
4662+
}
4663+
46284664
export function SecretsManagerIcon(props: SVGProps<SVGSVGElement>) {
46294665
return (
46304666
<svg {...props} viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'>

apps/docs/components/ui/icon-mapping.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ import {
8989
HubspotIcon,
9090
HuggingFaceIcon,
9191
HunterIOIcon,
92+
IAMIcon,
9293
ImageIcon,
9394
IncidentioIcon,
9495
InfisicalIcon,
@@ -163,6 +164,7 @@ import {
163164
SmtpIcon,
164165
SQSIcon,
165166
SshIcon,
167+
STSIcon,
166168
STTIcon,
167169
StagehandIcon,
168170
StripeIcon,
@@ -278,6 +280,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
278280
hubspot: HubspotIcon,
279281
huggingface: HuggingFaceIcon,
280282
hunter: HunterIOIcon,
283+
iam: IAMIcon,
281284
image_generator: ImageIcon,
282285
imap: MailServerIcon,
283286
incidentio: IncidentioIcon,
@@ -356,6 +359,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
356359
ssh: SshIcon,
357360
stagehand: StagehandIcon,
358361
stripe: StripeIcon,
362+
sts: STSIcon,
359363
stt_v2: STTIcon,
360364
supabase: SupabaseIcon,
361365
tailscale: TailscaleIcon,

0 commit comments

Comments
 (0)