Skip to content

Commit 1105fa7

Browse files
author
Zoo (VP)
committed
merge: origin/main into feat/dashboard (combine both gallery story additions)
2 parents 77030bf + 294c5ff commit 1105fa7

239 files changed

Lines changed: 14027 additions & 1530 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.

.coderabbit.yaml

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,14 @@ tone_instructions: >-
55
Prioritize correctness, security, data loss, lifecycle, and regressions; avoid speculative style
66
comments and unrelated refactors.
77
8+
chat:
9+
allow_non_org_members: false
10+
811
knowledge_base:
912
web_search:
1013
enabled: true
14+
learnings:
15+
scope: local
1116

1217
reviews:
1318
profile: assertive
@@ -24,6 +29,7 @@ reviews:
2429
enabled: false
2530
drafts: false
2631
auto_incremental_review: true
32+
auto_pause_after_reviewed_commits: 0
2733
labels:
2834
- "coderabbit-review-active"
2935

@@ -49,14 +55,19 @@ reviews:
4955
or upstream repositories. Report only concrete, actionable conflicts or failure modes, citing
5056
the relevant repository location or external source. Prioritize correctness, security, data loss,
5157
lifecycle, and test gaps. Do not report generic best practices, unsupported concerns, speculative
52-
style comments, or unrelated refactors. Search for existing helpers before suggesting abstractions.
58+
style comments, or unrelated refactors. When changed code introduces a local implementation of a
59+
cross-cutting concern, check whether it bypasses or duplicates an established repository abstraction
60+
or nearby convention. Report only a concrete inconsistency with behavioral or maintenance impact,
61+
and allow intentional deviations.
5362
5463
- path: "**/*.{ts,tsx,js,jsx,mts,mjs,cts,cjs}"
5564
instructions: >-
5665
Check strict typing and exhaustive behavior across normal, boundary, error,
5766
cancellation, retry, and compatibility paths. Verify promises and errors are handled,
5867
existing helpers are reused, and new code introduces no `any`, unjustified double
5968
assertions, floating promises, duplicated helpers, or increased lint suppressions.
69+
When a refactor adds early-return guards that redirect a subset of inputs to a new
70+
code path, confirm the old branches for those inputs are removed or unreachable.
6071
6172
- path: "{**/*.{test,spec}.{ts,tsx,js,jsx},**/__tests__/**}"
6273
instructions: >-
@@ -72,6 +83,11 @@ reviews:
7283
Flag tests that assert in-flight behavior only after the call completes — these cannot
7384
prove the behavior fires during execution. Check that describe block names match the
7485
actual subjects of the tests they contain.
86+
For tests that assert only mock call counts, confirm a corresponding return-value
87+
assertion exists; a regression that silently returns stale fallback data can satisfy
88+
a call-count check. For code with fallback behavior, verify both the cold-start case
89+
(no prior state) and the warm case (prior state exists) are covered, as they exercise
90+
different branches.
7591
7692
- path: "apps/vscode-e2e/**"
7793
instructions: >-
@@ -111,6 +127,9 @@ reviews:
111127
Check persistence and lifecycle invariants: awaited atomic writes, rollback or explicit
112128
partial-failure behavior, cross-window state consistency, stale listeners/watchers,
113129
cancellation, idempotency, and safe restart/resume without lost or duplicated state.
130+
For async functions that read shared mutable state before an `await` and write it back
131+
after, verify the captured reference is still valid when the write executes; a concurrent
132+
mutation during the await can cause a stale snapshot to overwrite a newer state.
114133
115134
- path: ".github/**"
116135
instructions: >-
@@ -124,7 +143,20 @@ reviews:
124143
during release preparation. Verify documentation describes real behavior and contracts,
125144
and deprioritize prose-only nits that do not affect correctness or usability.
126145
146+
finishing_touches:
147+
docstrings:
148+
enabled: false
149+
127150
pre_merge_checks:
151+
override_requested_reviewers_only: true
152+
docstrings:
153+
mode: off
154+
title:
155+
mode: warning
156+
description:
157+
mode: warning
158+
issue_assessment:
159+
mode: error
128160
custom_checks:
129161
- name: Regression evidence
130162
mode: warning
@@ -135,18 +167,32 @@ reviews:
135167
snapshot. Do not demand tests for unchanged behavior, mechanical configuration, or every
136168
branch without a plausible regression scenario. Cite the changed behavior and missing
137169
evidence.
138-
- name: Trust and persistence invariants
170+
- name: Security boundaries
171+
mode: error
172+
instructions: >-
173+
Fail only when a concrete changed path leaks secrets or PII, trusts or executes
174+
unvalidated input, or bypasses approval or allowlist controls. Cite the changed path
175+
and a plausible triggering scenario; pass when no such changed path exists.
176+
- name: Persistence integrity
139177
mode: error
140178
instructions: >-
141-
Fail only for a concrete changed path that leaks secrets or PII, trusts or executes
142-
unvalidated input, bypasses approval or allowlist controls, can lose persisted state due
143-
to a missing await, non-atomic write, or omitted default propagation, or leaks lifecycle
144-
resources. Cite the path and a plausible triggering scenario; pass when no such changed
145-
path exists.
179+
Fail only when a concrete changed persistence path can lose or corrupt state because an
180+
operation is not awaited, a write is non-atomic, rollback or explicit partial-failure
181+
behavior is missing, or a persisted default is not propagated to a consumer. Cite the
182+
changed path and a plausible triggering scenario; pass when no such changed path exists.
183+
- name: Lifecycle resource cleanup
184+
mode: warning
185+
instructions: >-
186+
Fail only when a concrete changed lifecycle path can leak a listener, watcher, provider,
187+
timer, task, or other resource, or can duplicate work after cancellation, disposal, or
188+
restart. Cite the changed path and a plausible triggering scenario; pass when no such
189+
changed path exists.
146190
147191
tools:
148192
eslint:
149193
enabled: true
194+
github-checks:
195+
enabled: true
150196
actionlint:
151197
enabled: true
152198
shellcheck:

.github/actions/setup-node-pnpm/action.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,22 @@ runs:
2424
using: "composite"
2525
steps:
2626
- name: Install pnpm
27-
uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
27+
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
2828
with:
2929
version: ${{ inputs.pnpm-version }}
3030
- name: Get pnpm store directory
3131
shell: bash
3232
run: |
3333
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
3434
- name: Setup pnpm cache
35-
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
35+
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
3636
with:
3737
path: ${{ env.STORE_PATH }}
3838
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
3939
restore-keys: |
4040
${{ runner.os }}-pnpm-store-
4141
- name: Setup Node.js
42-
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
42+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
4343
with:
4444
node-version: ${{ inputs.node-version }}
4545
- name: Install dependencies

.github/workflows/cli-release.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939

4040
steps:
4141
- name: Checkout code
42-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
42+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
4343
with:
4444
fetch-depth: 0
4545

@@ -200,7 +200,7 @@ jobs:
200200
rm -rf "$VERIFY_DIR"
201201
202202
- name: Upload artifact
203-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
203+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
204204
with:
205205
name: cli-${{ matrix.platform }}
206206
path: |
@@ -218,7 +218,7 @@ jobs:
218218

219219
steps:
220220
- name: Checkout code
221-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
221+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
222222

223223
- name: Get version
224224
id: version
@@ -232,7 +232,7 @@ jobs:
232232
echo "tag=cli-v$VERSION" >> $GITHUB_OUTPUT
233233
234234
- name: Download all artifacts
235-
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
235+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
236236
with:
237237
path: artifacts
238238

@@ -378,7 +378,7 @@ jobs:
378378

379379
steps:
380380
- name: Download all artifacts
381-
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
381+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
382382
with:
383383
path: artifacts
384384

.github/workflows/code-qa.yml

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
if: github.event_name == 'pull_request'
2222
steps:
2323
- name: Checkout code
24-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
24+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2525
with:
2626
# This job never pushes — don't persist the GITHUB_TOKEN.
2727
persist-credentials: false
@@ -37,7 +37,7 @@ jobs:
3737
# bytes catches them in strings, identifiers, and comments alike.
3838
steps:
3939
- name: Checkout code
40-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
40+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
4141
with:
4242
# This job never pushes — don't persist the GITHUB_TOKEN.
4343
persist-credentials: false
@@ -63,7 +63,7 @@ jobs:
6363
runs-on: ubuntu-latest
6464
steps:
6565
- name: Checkout code
66-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
66+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
6767
- name: Setup Node.js and pnpm
6868
uses: ./.github/actions/setup-node-pnpm
6969
- name: Verify all translations are complete
@@ -73,7 +73,7 @@ jobs:
7373
runs-on: ubuntu-latest
7474
steps:
7575
- name: Checkout code
76-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
76+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
7777
- name: Setup Node.js and pnpm
7878
uses: ./.github/actions/setup-node-pnpm
7979
- name: Run knip checks
@@ -83,23 +83,25 @@ jobs:
8383
runs-on: ubuntu-latest
8484
steps:
8585
- name: Checkout code
86-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
86+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
8787
- name: Setup Node.js and pnpm
8888
uses: ./.github/actions/setup-node-pnpm
8989
- name: Lint
9090
run: pnpm lint
9191
- name: Check types
9292
run: pnpm check-types
93-
- name: Model-check concurrent task lifecycle
93+
- name: Model-check task lifecycle protocols
9494
run: pnpm lifecycle:model-check
95+
- name: Validate MCP OAuth integration
96+
run: pnpm mcp:integration-check
9597

9698
build-vsix:
9799
name: Build test VSIX
98100
if: github.event_name == 'pull_request'
99101
runs-on: ubuntu-latest
100102
steps:
101103
- name: Checkout code
102-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
104+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
103105
with:
104106
persist-credentials: false
105107
- name: Setup Node.js and pnpm
@@ -113,7 +115,7 @@ jobs:
113115
- name: Package extension
114116
run: pnpm --filter ./src vsix
115117
- name: Upload test VSIX
116-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
118+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
117119
with:
118120
name: zoo-code-vsix-pr-${{ github.event.pull_request.number }}
119121
path: bin/*.vsix
@@ -136,12 +138,12 @@ jobs:
136138
upload-coverage: false
137139
steps:
138140
- name: Checkout code
139-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
141+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
140142
- name: Setup Node.js and pnpm
141143
uses: ./.github/actions/setup-node-pnpm
142144
- name: Restore Turbo cache
143145
id: turbo-cache
144-
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
146+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
145147
with:
146148
path: .turbo/cache
147149
key: ${{ runner.os }}-turbo-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ github.sha }}
@@ -156,7 +158,7 @@ jobs:
156158
run: pnpm turbo run test:coverage:integration --filter="@roo-code/core" --log-order grouped --output-logs new-only
157159
- name: Save Turbo cache
158160
if: steps.turbo-cache.outputs.cache-hit != 'true'
159-
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
161+
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
160162
with:
161163
path: .turbo/cache
162164
key: ${{ steps.turbo-cache.outputs.cache-primary-key }}
@@ -172,7 +174,7 @@ jobs:
172174
# See https://docs.codecov.com/docs/flags
173175
- name: Upload non-core coverage to Codecov
174176
if: matrix.upload-coverage
175-
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
177+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
176178
with:
177179
files: >-
178180
src/coverage/lcov.info,
@@ -184,31 +186,31 @@ jobs:
184186
token: ${{ secrets.CODECOV_TOKEN }}
185187
- name: Upload webview JSDOM coverage to Codecov
186188
if: matrix.upload-coverage
187-
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
189+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
188190
with:
189191
files: webview-ui/coverage/lcov.info
190192
disable_search: true
191193
flags: webview-ui
192194
token: ${{ secrets.CODECOV_TOKEN }}
193195
- name: Upload core unit coverage to Codecov
194196
if: matrix.upload-coverage
195-
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
197+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
196198
with:
197199
files: packages/core/coverage/unit/lcov.info
198200
disable_search: true
199201
flags: ${{ matrix.codecov-flag }},core-unit
200202
token: ${{ secrets.CODECOV_TOKEN }}
201203
- name: Upload core integration coverage to Codecov
202204
if: matrix.upload-coverage
203-
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
205+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
204206
with:
205207
files: packages/core/coverage/integration/lcov.info
206208
disable_search: true
207209
flags: ${{ matrix.codecov-flag }},core-integration
208210
token: ${{ secrets.CODECOV_TOKEN }}
209211
- name: Upload coverage reports to GitHub
210212
if: matrix.upload-coverage
211-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
213+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
212214
with:
213215
name: coverage-reports-${{ matrix.name }}
214216
path: |

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ jobs:
4848
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
4949
steps:
5050
- name: Checkout repository
51-
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
51+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
5252

5353
# Initializes the CodeQL tools for scanning.
5454
- name: Initialize CodeQL
55-
uses: github/codeql-action/init@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3
55+
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
5656
with:
5757
languages: ${{ matrix.language }}
5858
build-mode: ${{ matrix.build-mode }}
@@ -80,6 +80,6 @@ jobs:
8080
exit 1
8181
8282
- name: Perform CodeQL Analysis
83-
uses: github/codeql-action/analyze@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3
83+
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
8484
with:
8585
category: "/language:${{matrix.language}}"

0 commit comments

Comments
 (0)