Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
6b0e94b
various improvements to scanning and transcript import (#294)
jjallaire Feb 23, 2026
af95dc4
remove timelines from docs
jjallaire Feb 23, 2026
55dc7a7
protect against null transcript_metadata
jjallaire Feb 23, 2026
4d73081
correct string for docs
jjallaire Feb 23, 2026
bc44e8c
fix timestamp parsing in tests
jjallaire Feb 23, 2026
8873e33
remove timelines from navbar
jjallaire Feb 23, 2026
daed6a9
improved null guard
jjallaire Feb 23, 2026
99d2473
imrprove reducer docs
jjallaire Feb 23, 2026
62828f5
clarify llm_scanner docs
jjallaire Feb 23, 2026
e6a6db8
use explicit init span
jjallaire Feb 23, 2026
cd95894
improve typing on tests
jjallaire Feb 23, 2026
2b0e3ec
rename timeline functions
jjallaire Feb 24, 2026
4ebb63a
inspect ai timelines (#296)
jjallaire Feb 24, 2026
8678e6f
don't re-export inspect timeline functions
jjallaire Feb 24, 2026
d5f9046
Refactor Claude Code events into Inspect SWE (#297)
jjallaire Feb 24, 2026
dab0453
timelines: Improve agent detection logic in `timeline_build()` (#298)
jjallaire Feb 25, 2026
f7b84fc
Allow route level code splitting. (#289)
epatey Feb 25, 2026
ab3c5d2
Add --root-path flag to scout view for reverse proxy support (#295)
statik Feb 25, 2026
91f6838
improved handling of empty timeline spans
jjallaire Feb 25, 2026
975d912
Add W&B Weave traces as a built-in source
scottire Feb 26, 2026
ec865ca
Regenerate schema and dist (#302)
epatey Feb 26, 2026
bc0fedf
Fix early-exit bug; unthin target and and add scores from sample JSON…
epatey Feb 26, 2026
ad829a4
Pass scores and target through in as_scorer path (#303)
epatey Feb 27, 2026
69d76f8
Properly support value types in scanner results (#301)
dragonstyle Feb 27, 2026
da5ad6f
Merge branch 'main' into feature/weave-source
jjallaire Feb 27, 2026
81a2440
run tests + refinements
jjallaire Feb 27, 2026
7aaf83d
docs
jjallaire Feb 27, 2026
fc42d61
Merge branch 'scottire-feature/weave-source'
jjallaire Feb 27, 2026
cd331a8
regen docs
jjallaire Feb 27, 2026
fa78667
ruff
jjallaire Feb 27, 2026
9346893
ruff
jjallaire Feb 27, 2026
6ad9ac3
Cherry-pick inspect_ai#3260: fix false ZIP64 locator match in async_z…
epatey Feb 27, 2026
23c9067
Switch async ZIP usage over to `inspect_ai` (#305)
epatey Feb 27, 2026
866baa8
handle tool view placeholders
jjallaire Feb 27, 2026
3bf770d
Regen schema/dist and fix formatting errors. (#307)
epatey Feb 27, 2026
f4dac3c
Add `ts-mono` submodule. (#306)
epatey Feb 27, 2026
5b18ab8
use branches it token and time calculations
jjallaire Feb 28, 2026
7e654d4
depend on inspect 0.3.184
jjallaire Feb 28, 2026
74878a6
update pyproject.toml
jjallaire Feb 28, 2026
756ffdf
update timeline tests
jjallaire Feb 28, 2026
ef7e443
make weave dev dependency fully optional
jjallaire Feb 28, 2026
1d3d17d
fix types
jjallaire Feb 28, 2026
dc13433
mypy again
jjallaire Feb 28, 2026
65b0dc4
Schema export, TypeScript rebuild, and `agent_span_id` build break fi…
epatey Mar 1, 2026
eec2035
Move frontend dist to Git LFS with hashed assets (#308)
epatey Mar 2, 2026
4093855
Bugfix/max string size (#311)
dragonstyle Mar 2, 2026
8ac2cea
Fix ‘blank events’ when showing validation panel (#315)
dragonstyle Mar 3, 2026
d0c9380
update tests for changes in inspect_ai
jjallaire Mar 3, 2026
2d25cd1
add prompt argument for swe
jjallaire Mar 3, 2026
f873863
update fixture
jjallaire Mar 3, 2026
9213433
update test
jjallaire Mar 3, 2026
b1afbff
Undo code splitting (#318)
epatey Mar 3, 2026
4f2657e
LLM Scanner: retry answer parsing, `allow_none`, and test restructure…
epatey Mar 3, 2026
3c12c0f
Fine tuned version of #279 (#322)
dragonstyle Mar 4, 2026
6a25bbb
improved row group management
jjallaire Mar 4, 2026
7ec29cf
add sum_latency function
jjallaire Mar 4, 2026
c419f0a
timeline view (#324)
jjallaire Mar 9, 2026
5b44cfc
Bugfix/scrubber (#325)
dragonstyle Mar 10, 2026
bb7d450
duckdb 1.5 value type (#326)
jjallaire Mar 10, 2026
2ef7779
Transcripts: Remove parquet encryption (not used + issues w/ DuckDB 1…
jjallaire Mar 10, 2026
466e418
Regenerate schema and code. (#329)
epatey Mar 10, 2026
a19a6f4
Parquet schema version stamping and read API (#327)
epatey Mar 10, 2026
7e51939
Revert "Parquet schema version stamping and read API (#327)" (#331)
epatey Mar 10, 2026
4f52877
Add ‘None’ to remove columns choosers (#333)
dragonstyle Mar 11, 2026
61b1ce1
observe: prevent transcript index staleness/warning from occurring wh…
jjallaire Mar 11, 2026
a514343
Deduplicate repeated messages/calls in parquet event storage. (#332)
epatey Mar 11, 2026
dd4c646
transcripts: ensure that all documented schema columns exist when run…
jjallaire Mar 12, 2026
c1ad457
Improved Header Layout (#338)
dragonstyle Mar 12, 2026
1806aa2
Bugfix/swimlanes (#340)
dragonstyle Mar 12, 2026
b1e28e8
Use public condense/expand API from `inspect_ai.log` (#339)
epatey Mar 12, 2026
7b3085c
Fix validation case bugs (#342)
dragonstyle Mar 13, 2026
baf43b3
Add scan download via content negotiation on GET /scans/{dir}/{scan} …
revmischa Mar 14, 2026
b496f65
update inspect dependency
jjallaire Mar 15, 2026
0b35c9b
Condense/expand scanner input events via pool dedup (#341)
epatey Mar 15, 2026
9f34dcf
read custom timelines from eval_log
jjallaire Mar 15, 2026
179dff0
stream timelines field
jjallaire Mar 15, 2026
b4c4194
update schema
jjallaire Mar 15, 2026
d6738b0
add contentdocument type
jjallaire Mar 15, 2026
533a953
update inspect version
jjallaire Mar 16, 2026
0730b2c
update docs and changelog for release
jjallaire Mar 16, 2026
d1de0dc
forward timelines from eval sample to scanner if requested
jjallaire Mar 16, 2026
eb680ce
correctly display timelines in results view
jjallaire Mar 16, 2026
e742241
Scout View: Show dictionary-based metriecs in scanner sidebar
jjallaire Mar 16, 2026
e7f73ad
update multi-agent docs
jjallaire Mar 16, 2026
5be079b
Enable LFS support in publish workflow
jjallaire Mar 17, 2026
b63fe5a
update changelog for release
jjallaire Mar 17, 2026
2e9209b
fix: count only positive values in resultset summary
rasmusfaber Mar 17, 2026
b1bda99
fix: reset summary on new scan init to prevent accumulation
rasmusfaber Mar 17, 2026
5037f40
fix: preserve error file on resume, improve tests
rasmusfaber Mar 17, 2026
aea1f0f
style: fix import sorting in test files
rasmusfaber Mar 17, 2026
3aa2860
TypeScript monorepo migration (#290)
epatey Mar 17, 2026
aeb7e70
Bump ts-mono: build to dist/ for turbo caching (#345)
epatey Mar 17, 2026
be1997d
Bump to latest main (#346)
dragonstyle Mar 17, 2026
496653e
gitignore
jjallaire Mar 18, 2026
6be5e73
Bump to main (#348)
dragonstyle Mar 18, 2026
7d1f7e0
Bump to pick up doc change
epatey Mar 18, 2026
11f63e5
CI: block merge if submodule not on `ts-mono` `main` (#350)
epatey Mar 18, 2026
ece60ba
Avoid reintroducing n² `Transcript` payload size by sending condensed…
epatey Mar 20, 2026
dab93b8
Expand message/call pool refs in `load_filtered_transcript` (#352)
epatey Mar 20, 2026
6bff837
Bump to improved markdown parsing (#353)
dragonstyle Mar 20, 2026
871b25c
Merge branch 'main' into fix/summary-counting-bugs
jjallaire Mar 21, 2026
8c28996
update changelog
jjallaire Mar 21, 2026
f0e51f8
Merge branch 'METR-fix/summary-counting-bugs'
jjallaire Mar 21, 2026
770d429
update db schema docs
jjallaire Mar 21, 2026
1dc5b17
update changelog
jjallaire Mar 21, 2026
ee74702
update changelog for release
jjallaire Mar 21, 2026
0898579
add mlflow to docs
jjallaire Mar 21, 2026
22ff4dc
Delete stray file and add frontend setup steps to README (#358)
epatey Mar 24, 2026
e0411aa
Update to take marker fix (#360)
dragonstyle Mar 25, 2026
e3a39a2
Handle excluded input column in event expansion
rasmusfaber Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src/inspect_scout/_view/dist/** filter=lfs diff=lfs merge=lfs -text
205 changes: 40 additions & 165 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ jobs:
run: python scripts/export_openapi_schema.py
- name: Check schema is up-to-date
run: |
if ! git diff --exit-code src/inspect_scout/_view/www/openapi.json
if ! git diff --exit-code src/inspect_scout/_view/openapi.json
then
echo "❌ openapi.json is out of sync with Python API code!"
echo ""
Expand All @@ -136,208 +136,83 @@ jobs:
exit 1
fi

js-lint:
submodule-on-main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
package_json_file: src/inspect_scout/_view/www/package.json

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
cache-dependency-path: src/inspect_scout/_view/www/pnpm-lock.yaml

- name: Install dependencies
working-directory: src/inspect_scout/_view/www
run: pnpm install --frozen-lockfile

- name: Check linting
working-directory: src/inspect_scout/_view/www
run: pnpm lint

js-typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
package_json_file: src/inspect_scout/_view/www/package.json

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
cache-dependency-path: src/inspect_scout/_view/www/pnpm-lock.yaml

- name: Install dependencies
working-directory: src/inspect_scout/_view/www
run: pnpm install --frozen-lockfile

- name: Check typechecking
working-directory: src/inspect_scout/_view/www
run: pnpm typecheck
- name: Verify submodule commit is on ts-mono main
run: |
SUBMODULE_SHA=$(git ls-tree HEAD src/inspect_scout/_view/ts-mono | awk '{print $3}')
echo "Submodule points to: $SUBMODULE_SHA"

git fetch https://github.com/meridianlabs-ai/ts-mono.git main
MAIN_SHA=$(git rev-parse FETCH_HEAD)
echo "ts-mono main is at: $MAIN_SHA"

if git merge-base --is-ancestor "$SUBMODULE_SHA" "$MAIN_SHA"; then
echo "✓ Submodule commit is on ts-mono main"
else
echo "✗ Submodule commit $SUBMODULE_SHA is not on ts-mono main."
echo " Merge the submodule PR first, then update the pointer (see docs/submodule-guide.md step 6)."
exit 1
fi

js-format:
js-dist-validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
package_json_file: src/inspect_scout/_view/www/package.json

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
cache-dependency-path: src/inspect_scout/_view/www/pnpm-lock.yaml

- name: Install dependencies
working-directory: src/inspect_scout/_view/www
run: pnpm install --frozen-lockfile

- name: Check formatting
working-directory: src/inspect_scout/_view/www
run: pnpm format:check

js-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
submodules: true

- uses: pnpm/action-setup@v4
with:
package_json_file: src/inspect_scout/_view/www/package.json
package_json_file: src/inspect_scout/_view/ts-mono/package.json

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
cache-dependency-path: src/inspect_scout/_view/www/pnpm-lock.yaml
cache-dependency-path: src/inspect_scout/_view/ts-mono/pnpm-lock.yaml

- name: Install dependencies
working-directory: src/inspect_scout/_view/www
working-directory: src/inspect_scout/_view/ts-mono
run: pnpm install --frozen-lockfile

- name: Generate TypeScript types from OpenAPI
working-directory: src/inspect_scout/_view/www
run: pnpm types:generate
working-directory: src/inspect_scout/_view/ts-mono
run: pnpm --filter scout types:generate

- name: Check generated types are up-to-date
working-directory: src/inspect_scout/_view/www
working-directory: src/inspect_scout/_view/ts-mono
run: |
if ! git diff --exit-code src/types/generated.ts
if ! git diff --exit-code
then
echo "❌ generated.ts is out of sync with openapi.json!"
echo ""
echo "TypeScript types need to be regenerated. Run:"
echo " cd src/inspect_scout/_view/www"
echo " pnpm types:generate"
echo " cd src/inspect_scout/_view/ts-mono"
echo " pnpm --filter scout types:generate"
echo ""
echo "Then commit the updated src/types/generated.ts file."
echo "Then commit the updated generated.ts file."
exit 1
fi

- name: Build package
working-directory: src/inspect_scout/_view/www
- name: Build
working-directory: src/inspect_scout/_view/ts-mono
run: pnpm build

- name: Check build output is clean
working-directory: src/inspect_scout/_view/www
- name: Check dist is up-to-date
run: |
if ! git diff --exit-code
if ! git diff --exit-code src/inspect_scout/_view/dist
then
echo "❌ Build produced unexpected changes!"
echo "❌ dist/ is out of sync with the frontend source!"
echo ""
echo "The build output has changed. Run:"
echo " cd src/inspect_scout/_view/ts-mono"
echo " pnpm build"
echo ""
echo "Files changed during build:"
git diff --name-only
echo "Then commit the updated dist/ directory."
exit 1
fi

js-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
package_json_file: src/inspect_scout/_view/www/package.json

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
cache-dependency-path: src/inspect_scout/_view/www/pnpm-lock.yaml

- name: Install dependencies
working-directory: src/inspect_scout/_view/www
run: pnpm install --frozen-lockfile

- name: Run tests
working-directory: src/inspect_scout/_view/www
run: pnpm test

js-e2e:
continue-on-error: true # TODO: remove once e2e tests prove stable
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
package_json_file: src/inspect_scout/_view/www/package.json

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
cache-dependency-path: src/inspect_scout/_view/www/pnpm-lock.yaml

- name: Install dependencies
working-directory: src/inspect_scout/_view/www
run: pnpm install --frozen-lockfile

- name: Get Playwright version
id: pw-version
working-directory: src/inspect_scout/_view/www
run: echo "version=$(pnpm exec playwright --version)" >> "$GITHUB_OUTPUT"

- name: Cache Playwright browsers
id: pw-cache
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ steps.pw-version.outputs.version }}

- name: Install Playwright browsers
if: steps.pw-cache.outputs.cache-hit != 'true'
working-directory: src/inspect_scout/_view/www
run: pnpm exec playwright install --with-deps chromium

- name: Install Playwright system deps (on cache hit)
if: steps.pw-cache.outputs.cache-hit == 'true'
working-directory: src/inspect_scout/_view/www
run: pnpm exec playwright install-deps chromium

- name: Run e2e tests
working-directory: src/inspect_scout/_view/www
run: pnpm e2e

- name: Upload test results
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: src/inspect_scout/_view/www/playwright-report/
retention-days: 7
20 changes: 12 additions & 8 deletions .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
environment: npm
defaults:
run:
working-directory: src/inspect_scout/_view/www
working-directory: src/inspect_scout/_view/ts-mono/apps/scout
permissions:
contents: read
id-token: write
Expand All @@ -33,30 +33,33 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true

- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22.x"
registry-url: "https://registry.npmjs.org"
cache: "pnpm"
cache-dependency-path: "src/inspect_scout/_view/www/pnpm-lock.yaml"
cache-dependency-path: src/inspect_scout/_view/ts-mono/pnpm-lock.yaml

- name: Upgrade npm (for Trusted Publishing)
run: |
npm i -g npm@^11.5.1
npm --version
npm --version

- name: Install dependencies
working-directory: src/inspect_scout/_view/ts-mono
run: pnpm install --frozen-lockfile

- name: Sync version from git tag
run: npm version from-git --no-git-tag-version
- name: Prepare package for publishing
run: |
npm pkg set name="@meridianlabs/inspect-scout-viewer"
npm pkg delete private
npm version from-git --no-git-tag-version

- name: Bump to prerelease version
if: ${{ inputs.prerelease }}
Expand All @@ -68,6 +71,7 @@ jobs:
npm version "${NEW_VERSION}-beta.${TIMESTAMP}" --no-git-tag-version

- name: Run quality checks
working-directory: src/inspect_scout/_view/ts-mono
run: pnpm check

- name: Build library for prerelease
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Get all tags for version detection
lfs: true

- name: Set up Python
uses: actions/setup-python@v5
Expand Down
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ MANIFEST
*.manifest
*.spec

# Built view maps
/src/inspect_scout/_view/dist/assets/*.js.map


# Installer logs
pip-log.txt
pip-delete-this-directory.txt
Expand Down Expand Up @@ -210,6 +214,7 @@ src/inspect_scout/_version.py

# Inspect logs and scans
/logs/
/logs-*/
/scans/

# Scout local configuration (developer-only, not checked in)
Expand All @@ -226,9 +231,6 @@ scout.local.yaml
# node
/src/inspect_scout/_view/www/node_modules

# dist builds
/src/inspect_scout/_view/www/*.tgz

# test data
/examples/test-db

Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "src/inspect_scout/_view/ts-mono"]
path = src/inspect_scout/_view/ts-mono
url = https://github.com/meridianlabs-ai/ts-mono.git
Loading