Skip to content

Commit bec9f6c

Browse files
committed
Merge branch 'main' into feat/projects-viz
2 parents 7bb3b4f + 4a8ed76 commit bec9f6c

1,370 files changed

Lines changed: 78090 additions & 17700 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.

.cursor/skills/merge-dependabot-prs/SKILL.md

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ description: >
99
Use when the user asks to merge, clean up, clear out, or land Dependabot (or
1010
similar bot-authored) PRs.
1111
license: MIT
12-
compatibility: Requires git, pre-commit, uv, bun, and gh (GitHub CLI) authenticated with write access to onyx-dot-app/onyx.
12+
compatibility: Requires git, pre-commit, uv, bun, ods (the repo venv's devtools script), and gh (GitHub CLI) authenticated with write access to onyx-dot-app/onyx.
1313
metadata:
1414
author: jmelahman
15-
version: "1.0"
16-
allowed-tools: Bash(gh:*), Bash(git:*), Bash(pre-commit:*), Bash(bun install:*)
15+
version: "1.1"
16+
allowed-tools: Bash(gh:*), Bash(git:*), Bash(pre-commit:*), Bash(bun install:*), Bash(ods audit:*)
1717
---
1818

1919
# Merge Dependabot PRs
@@ -58,9 +58,18 @@ same package, or a manual bump PR overlapping a bot one.
5858
## 2. Triage into buckets, confirm the plan
5959

6060
These PRs aren't in a rush. Wait for every check to complete — required and
61-
advisory alike (e.g. `storybook-build` on `web/**` changes, which never gates
62-
the queue but pages Slack if broken post-merge) — and treat any red check as
63-
a failure to classify, never as noise to skip.
61+
advisory alike — and treat any red check as a failure to classify, never as
62+
noise to skip. Two advisory checks matter here even though the queue ignores
63+
them:
64+
65+
- `storybook-build` (`pr-storybook-build.yml`) on `web/**` changes — never
66+
gates the queue, but pages Slack if broken post-merge.
67+
- `audit` (`audit.yml`) — runs on every lockfile, `pyproject.toml`,
68+
`.github/workflows/**`, and `tools/ods/**` change, so it runs on almost every
69+
Dependabot PR. Treat it as **required for this skill**: a Dependabot PR does
70+
not get enqueued while `audit` is red. A red `audit` means the bump either
71+
pulled in a vulnerable version or landed next to one, and merging it ships
72+
the finding.
6473

6574
- **Green & ready** — every check completed and passing, advisory included.
6675
- **Failing — mechanical** — only a generated/lock file wasn't regenerated
@@ -80,7 +89,29 @@ in per PR.
8089

8190
Summarize buckets and proposed actions, confirm with `AskUserQuestion`, then act.
8291

83-
## 3. Green: approve and enqueue
92+
## 3. Green: audit, approve, enqueue
93+
94+
Run `ods audit` on the PR's code before you enqueue it. CI's `audit` job covers
95+
this, but it is skipped when the PR touches no audited path, and it is advisory
96+
in the queue — so confirm it yourself for every Dependabot PR.
97+
98+
```bash
99+
gh pr checkout <pr>
100+
source .venv/bin/activate # ods ships in the repo venv
101+
ods audit --fail-on=critical
102+
```
103+
104+
`ods audit` scans `bun.lock` and `uv.lock` plus open Dependabot alerts, and
105+
exits non-zero on an unignored finding at or above `--fail-on`
106+
([tools/ods/README.md](../../../tools/ods/README.md)). It reads the **working
107+
tree**, so the PR branch must be checked out — a run on `main` says nothing
108+
about the bump.
109+
110+
**If it exits non-zero, STOP.** Don't enqueue and don't try to work out whether
111+
the finding came from this bump or was already on `main`. Report the advisory ids
112+
and let the user say how to proceed.
113+
114+
Then, once clean:
84115

85116
```bash
86117
gh pr review <pr> --approve

.github/actions/build-backend-image/action.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ runs:
6161
build-args: |
6262
BASE_IMAGE_REGISTRY=${{ env.BASE_IMAGE_REGISTRY }}
6363
tags: ${{ inputs.runs-on-ecr-cache }}:nightly-llm-it-backend-${{ inputs.run-id }}
64+
# Attestations attach as ECR referrers to the image digest, which is
65+
# stable across runs and caps out at 100 per subject.
66+
provenance: false
67+
sbom: false
6468
cache-from: |
6569
type=registry,ref=${{ inputs.runs-on-ecr-cache }}:backend-cache-${{ inputs.github-sha }}
6670
type=registry,ref=${{ inputs.runs-on-ecr-cache }}:backend-cache-${{ steps.format-branch.outputs.cache-suffix }}

.github/actions/build-devcontainer-image/action.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ runs:
6363
build-args: |
6464
BASE_IMAGE_REGISTRY=${{ env.BASE_IMAGE_REGISTRY }}
6565
tags: ${{ inputs.runs-on-ecr-cache }}:${{ inputs.tag-prefix }}-${{ inputs.run-id }}
66+
# Attestations attach as ECR referrers to the image digest, which is
67+
# stable across runs and caps out at 100 per subject.
68+
provenance: false
69+
sbom: false
6670
cache-from: |
6771
type=registry,ref=${{ inputs.runs-on-ecr-cache }}:devcontainer-cache-${{ inputs.github-sha }}
6872
type=registry,ref=${{ inputs.runs-on-ecr-cache }}:devcontainer-cache-${{ steps.format-branch.outputs.cache-suffix }}

.github/actions/build-model-server-image/action.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ runs:
8282
BASE_IMAGE_REGISTRY=${{ env.BASE_IMAGE_REGISTRY }}
8383
${{ env.DHI_PYTHON_BUILD_ARGS }}
8484
tags: ${{ inputs.runs-on-ecr-cache }}:${{ inputs.tag-prefix }}-${{ inputs.run-id }}
85+
# Attestations attach as ECR referrers to the image digest, which is
86+
# stable across runs and caps out at 100 per subject.
87+
provenance: false
88+
sbom: false
8589
cache-from: |
8690
type=registry,ref=${{ inputs.runs-on-ecr-cache }}:model-server-cache-${{ inputs.github-sha }}
8791
type=registry,ref=${{ inputs.runs-on-ecr-cache }}:model-server-cache-${{ steps.format-branch.outputs.cache-suffix }}

.github/actions/install-deps-and-generate-openapi-client/action.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: "Install Python deps"
2+
description: "Syncs Python deps inside the devcontainer into the bind-mounted workspace, so later `uv run --no-sync` steps share one venv."
3+
inputs:
4+
devcontainer-image:
5+
description: "Fully qualified devcontainer image reference (registry:tag)"
6+
required: true
7+
runs:
8+
using: "composite"
9+
steps:
10+
- name: Sync deps in devcontainer
11+
shell: bash
12+
env:
13+
DEVCONTAINER_IMAGE: ${{ inputs.devcontainer-image }}
14+
WORKSPACE: ${{ github.workspace }}
15+
run: |
16+
docker run --rm \
17+
-v "${WORKSPACE}:/workspace" \
18+
-w /workspace \
19+
"${DEVCONTAINER_IMAGE}" \
20+
uv sync --frozen --no-group model_server

.github/actions/run-nightly-provider-chat-test/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ runs:
8585
minio \
8686
inference_model_server
8787
88-
- name: Install Python deps and generate OpenAPI client
89-
uses: ./.github/actions/install-deps-and-generate-openapi-client
88+
- name: Install Python deps
89+
uses: ./.github/actions/install-python-deps
9090
with:
9191
devcontainer-image: ${{ inputs.runs-on-ecr-cache }}:nightly-llm-it-devcontainer-${{ inputs.run-id }}
9292

.github/actions/setup-playwright/action.yml

Lines changed: 0 additions & 17 deletions
This file was deleted.

.github/workflows/audit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
- name: Configure AWS credentials
5151
id: aws
5252
continue-on-error: true # the audit still runs (with no suppressions) if creds are unavailable
53-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # ratchet:aws-actions/configure-aws-credentials@v6.2.2
53+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # ratchet:aws-actions/configure-aws-credentials@v6.2.3
5454
with:
5555
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
5656
aws-region: us-east-2

.github/workflows/deployment.yml

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ jobs:
176176

177177
- name: Configure AWS credentials
178178
continue-on-error: true # the audit still runs (with no suppressions) if creds are unavailable
179-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # ratchet:aws-actions/configure-aws-credentials@v6.2.2
179+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # ratchet:aws-actions/configure-aws-credentials@v6.2.3
180180
with:
181181
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
182182
aws-region: us-east-2
@@ -186,6 +186,16 @@ jobs:
186186
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
187187
run: uv run --no-sync --with onyx-devtools ods audit --fail-on=critical
188188

189+
# Validate that a pushed release tag is versioned correctly, via
190+
# `ods release --check`. A cloud tag must be the tag `ods release cloud`
191+
# would have cut: its commit on origin/main, its base matching the release
192+
# branches, its counter in sequence. Stable (vX.Y.Z) and beta
193+
# (vX.Y.Z-beta.N) tags must sit on their release/vX.Y branch with the
194+
# patch or counter in sequence; a beta must precede its stable release.
195+
#
196+
# Deliberately gated on the raw ref name, not on computed tag-type outputs:
197+
# a tag that is neither a valid cloud nor stable tag fails loudly here
198+
# instead of being skipped by a wrongly computed output.
189199
check-version-tag:
190200
runs-on: ubuntu-slim
191201
timeout-minutes: 10
@@ -204,9 +214,9 @@ jobs:
204214
# NOTE: This isn't caching much and zizmor suggests this could be poisoned, so disable.
205215
enable-cache: false
206216

207-
- name: Validate tag is versioned correctly
217+
- name: Validate the tag is versioned correctly
208218
run: |
209-
uv run --no-sync --with release-tag tag --check
219+
uv run --no-sync --with onyx-devtools ods release --check --ref "$GITHUB_REF_NAME"
210220
211221
notify-slack-on-tag-check-failure:
212222
needs:
@@ -334,7 +344,7 @@ jobs:
334344

335345
- name: Configure AWS credentials
336346
if: startsWith(matrix.platform, 'macos-')
337-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
347+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
338348
with:
339349
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
340350
aws-region: us-east-2
@@ -505,7 +515,7 @@ jobs:
505515
persist-credentials: false
506516

507517
- name: Configure AWS credentials
508-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
518+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
509519
with:
510520
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
511521
aws-region: us-east-2
@@ -587,7 +597,7 @@ jobs:
587597
persist-credentials: false
588598

589599
- name: Configure AWS credentials
590-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
600+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
591601
with:
592602
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
593603
aws-region: us-east-2
@@ -664,7 +674,7 @@ jobs:
664674
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc
665675

666676
- name: Configure AWS credentials
667-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
677+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
668678
with:
669679
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
670680
aws-region: us-east-2
@@ -761,7 +771,7 @@ jobs:
761771
persist-credentials: false
762772

763773
- name: Configure AWS credentials
764-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
774+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
765775
with:
766776
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
767777
aws-region: us-east-2
@@ -815,7 +825,6 @@ jobs:
815825
NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.POSTHOG_KEY }}
816826
NEXT_PUBLIC_POSTHOG_HOST=${{ secrets.POSTHOG_HOST }}
817827
NEXT_PUBLIC_SENTRY_DSN=${{ secrets.SENTRY_DSN }}
818-
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${{ secrets.STRIPE_PUBLISHABLE_KEY }}
819828
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=${{ vars.NEXT_PUBLIC_RECAPTCHA_SITE_KEY }}
820829
NEXT_PUBLIC_GTM_ENABLED=true
821830
NEXT_PUBLIC_FORGOT_PASSWORD_ENABLED=true
@@ -854,7 +863,7 @@ jobs:
854863
persist-credentials: false
855864

856865
- name: Configure AWS credentials
857-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
866+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
858867
with:
859868
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
860869
aws-region: us-east-2
@@ -908,7 +917,6 @@ jobs:
908917
NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.POSTHOG_KEY }}
909918
NEXT_PUBLIC_POSTHOG_HOST=${{ secrets.POSTHOG_HOST }}
910919
NEXT_PUBLIC_SENTRY_DSN=${{ secrets.SENTRY_DSN }}
911-
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${{ secrets.STRIPE_PUBLISHABLE_KEY }}
912920
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=${{ vars.NEXT_PUBLIC_RECAPTCHA_SITE_KEY }}
913921
NEXT_PUBLIC_GTM_ENABLED=true
914922
NEXT_PUBLIC_FORGOT_PASSWORD_ENABLED=true
@@ -942,7 +950,7 @@ jobs:
942950
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc
943951

944952
- name: Configure AWS credentials
945-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
953+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
946954
with:
947955
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
948956
aws-region: us-east-2
@@ -1026,7 +1034,7 @@ jobs:
10261034
persist-credentials: false
10271035

10281036
- name: Configure AWS credentials
1029-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1037+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
10301038
with:
10311039
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
10321040
aws-region: us-east-2
@@ -1122,7 +1130,7 @@ jobs:
11221130
persist-credentials: false
11231131

11241132
- name: Configure AWS credentials
1125-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1133+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
11261134
with:
11271135
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
11281136
aws-region: us-east-2
@@ -1212,7 +1220,7 @@ jobs:
12121220
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc
12131221

12141222
- name: Configure AWS credentials
1215-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1223+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
12161224
with:
12171225
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
12181226
aws-region: us-east-2
@@ -1319,7 +1327,7 @@ jobs:
13191327
persist-credentials: false
13201328

13211329
- name: Configure AWS credentials
1322-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1330+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
13231331
with:
13241332
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
13251333
aws-region: us-east-2
@@ -1405,7 +1413,7 @@ jobs:
14051413
persist-credentials: false
14061414

14071415
- name: Configure AWS credentials
1408-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1416+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
14091417
with:
14101418
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
14111419
aws-region: us-east-2
@@ -1485,7 +1493,7 @@ jobs:
14851493
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc
14861494

14871495
- name: Configure AWS credentials
1488-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1496+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
14891497
with:
14901498
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
14911499
aws-region: us-east-2
@@ -1585,7 +1593,7 @@ jobs:
15851593
15861594
- name: Configure AWS credentials
15871595
if: needs.determine-builds.outputs.is-test-run != 'true' && vars.DOCKER_NO_CACHE != 'true'
1588-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1596+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
15891597
with:
15901598
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
15911599
aws-region: us-east-2
@@ -1651,7 +1659,7 @@ jobs:
16511659
persist-credentials: false
16521660

16531661
- name: Configure AWS credentials
1654-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1662+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
16551663
with:
16561664
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
16571665
aws-region: us-east-2
@@ -1724,7 +1732,7 @@ jobs:
17241732
persist-credentials: false
17251733

17261734
- name: Configure AWS credentials
1727-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1735+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
17281736
with:
17291737
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
17301738
aws-region: us-east-2
@@ -1792,7 +1800,7 @@ jobs:
17921800
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc
17931801

17941802
- name: Configure AWS credentials
1795-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d
1803+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c
17961804
with:
17971805
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
17981806
aws-region: us-east-2
@@ -2035,7 +2043,7 @@ jobs:
20352043
- name: Configure AWS credentials
20362044
if: steps.should-run.outputs.run == 'true'
20372045
continue-on-error: true # the audit still runs (with no suppressions) if creds are unavailable
2038-
uses: aws-actions/configure-aws-credentials@517a711dbcd0e402f90c77e7e2f81e849156e31d # ratchet:aws-actions/configure-aws-credentials@v6.2.2
2046+
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # ratchet:aws-actions/configure-aws-credentials@v6.2.3
20392047
with:
20402048
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_ARN }}
20412049
aws-region: us-east-2

0 commit comments

Comments
 (0)