5050 --filter='!@agentos-software/codex' \
5151 --filter='!@rivet-dev/agentos-browser' \
5252 --filter='!@rivet-dev/agentos-runtime-browser' \
53+ --filter='!@rivet-dev/agentos-example-browser-terminal' \
5354 --filter='!@rivet-dev/agentos-playground'
5455 else
5556 npx turbo build \
5859 --filter='!@agentos-software/codex' \
5960 --filter='!@rivet-dev/agentos-browser' \
6061 --filter='!@rivet-dev/agentos-runtime-browser' \
62+ --filter='!@rivet-dev/agentos-example-browser-terminal' \
6163 --filter='!@rivet-dev/agentos-playground'
6264 fi
6365 # The Codex adapter is ordinary TypeScript, while its executable is a
7476 - run : node scripts/verify-fixed-versions.mjs
7577 - run : node --test scripts/check-layout.test.mjs
7678 - run : pnpm check-layout
79+ - run : node --test website/scripts/gen-registry.test.mjs
7780 - run : node --test scripts/generate-secure-exec-mirror.test.mjs
7881 - run : node --test scripts/check-rustfmt.test.mjs
7982 - run : node scripts/check-rustfmt.mjs
8285 run : |
8386 pnpm --parallel --aggregate-output \
8487 --filter '@rivet-dev/agentos-build-tools' \
88+ --filter '@rivet-dev/agentos-runtime-benchmarks' \
8589 --filter '@rivet-dev/agentos-toolchain' \
8690 --filter '@rivet-dev/agentos-runtime-sidecar' \
8791 --filter 'secure-exec' \
@@ -123,24 +127,47 @@ jobs:
123127 workspaces : toolchain -> target
124128 key : wasm-commands-${{ hashFiles('toolchain/Cargo.lock') }}
125129 - run : pnpm install --frozen-lockfile --filter '@rivet-dev/agentos-runtime-core...'
126- - run : make -C toolchain commands
130+ - name : Build the bounded PR command corpus
131+ if : github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
132+ run : make -C toolchain pr-commands
133+ - name : Build the complete command corpus
134+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
135+ run : make -C toolchain commands
127136 # DuckDB and Vim are intentionally outside the default command set because
128137 # they are heavy builds, but the runtime/parity suites require their real
129138 # command artifacts.
130139 - name : Build required heavy integration commands
140+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
131141 run : make -C toolchain cmd/duckdb cmd/vim
142+ - name : Build the pinned Codex WASI artifacts required by the software suite
143+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
144+ run : make -C toolchain codex-required
132145 - name : Build mandatory threaded-WASM conformance fixtures
146+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
133147 run : make -C toolchain/c pthread-conformance-wasm pthread-benchmark-wasm
134148 - name : Stage native/WASM C parity fixtures
149+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
135150 run : make -C toolchain/c conformance-artifacts
136- - run : node packages/runtime-core/scripts/copy-wasm-commands.mjs --require
151+ - name : Stage the bounded PR command corpus
152+ if : github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
153+ run : node packages/runtime-core/scripts/copy-wasm-commands.mjs --require-coreutils
154+ - name : Stage the complete command corpus
155+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
156+ run : node packages/runtime-core/scripts/copy-wasm-commands.mjs --require
137157 - uses : actions/upload-artifact@v4
138158 with :
139159 name : wasm-commands
140160 path : packages/runtime-core/commands
141161 retention-days : 1
142162 if-no-files-found : error
143163 - uses : actions/upload-artifact@v4
164+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
165+ with :
166+ name : codex-wasi
167+ path : software/codex/wasm
168+ if-no-files-found : error
169+ - uses : actions/upload-artifact@v4
170+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
144171 with :
145172 name : wasm-thread-fixtures
146173 path : |
@@ -149,6 +176,7 @@ jobs:
149176 toolchain/c/build/exec_variants
150177 if-no-files-found : error
151178 - uses : actions/upload-artifact@v4
179+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')
152180 with :
153181 name : wasm-c-parity-fixtures
154182 path : toolchain/c/build/conformance
@@ -331,7 +359,7 @@ jobs:
331359 required :
332360 name : CI / Required
333361 if : ${{ always() && (github.event_name != 'pull_request' || github.base_ref == 'main' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci')) }}
334- needs : [checks, wasm-commands, rust, core-pr, runtime-core-pr, actor-pr]
362+ needs : [checks, wasm-commands, rust, core-pr, runtime-core-pr, actor-pr, wasm-backend-matrix ]
335363 runs-on : ubuntu-latest
336364 steps :
337365 - name : Require every PR gate
@@ -342,6 +370,8 @@ jobs:
342370 CORE_RESULT : ${{ needs.core-pr.result }}
343371 RUNTIME_CORE_RESULT : ${{ needs.runtime-core-pr.result }}
344372 ACTOR_RESULT : ${{ needs.actor-pr.result }}
373+ WASM_BACKEND_RESULT : ${{ needs.wasm-backend-matrix.result }}
374+ EXPECT_WASM_BACKEND_MATRIX : ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'aggregate-ci') }}
345375 run : |
346376 for result in \
347377 "$CHECKS_RESULT" \
@@ -355,6 +385,10 @@ jobs:
355385 exit 1
356386 fi
357387 done
388+ if [ "$EXPECT_WASM_BACKEND_MATRIX" = true ] && [ "$WASM_BACKEND_RESULT" != success ]; then
389+ echo "required dual-backend CI job did not succeed: $WASM_BACKEND_RESULT" >&2
390+ exit 1
391+ fi
358392
359393 wasm-backend-matrix :
360394 name : " WASM backend (${{ matrix.backend }})"
@@ -370,25 +404,39 @@ jobs:
370404 AGENTOS_TEST_WASM_BACKEND : ${{ matrix.backend }}
371405 AGENTOS_E2E_NETWORK : ' 1'
372406 AGENT_OS_CLIENT_ALLOW_E2E_SKIPS : ' 0'
373- AGENTOS_SIDECAR_BIN : ${{ github.workspace }}/target/release/agentos-native- sidecar
407+ AGENTOS_SIDECAR_BIN : ${{ github.workspace }}/target/release/agentos-sidecar
374408 AGENTOS_WASMTIME_WORKER_PATH : ${{ github.workspace }}/target/release/agentos-native-sidecar
375409 AGENTOS_WASM_COMMANDS_DIR : ${{ github.workspace }}/packages/runtime-core/commands
376410 AGENTOS_C_WASM_COMMANDS_DIR : ${{ github.workspace }}/toolchain/c/build/conformance
411+ XFSTESTS_ROOT : ${{ github.workspace }}/tests/xfstests/.work/xfstests
377412 steps :
378413 - uses : actions/checkout@v4
379414 - uses : pnpm/action-setup@v4
380415 - uses : actions/setup-node@v4
381416 with :
382- node-version : 22
417+ node-version : 24
383418 - uses : dtolnay/rust-toolchain@stable
384419 - uses : Swatinem/rust-cache@v2
385420 with :
386421 key : wasm-backend-${{ matrix.backend }}
422+ - name : Materialize the pinned docs theme
423+ run : |
424+ rm -rf /tmp/docs-theme
425+ git clone https://github.com/rivet-dev/docs-theme.git /tmp/docs-theme
426+ git -C /tmp/docs-theme checkout 450c498555135098c6a927adfdf13458be9be22a
427+ rm -rf website/vendor/theme && mkdir -p website/vendor
428+ cp -r /tmp/docs-theme/packages/theme website/vendor/theme
387429 - run : pnpm install --frozen-lockfile
388430 - uses : actions/download-artifact@v4
389431 with :
390432 name : wasm-commands
391433 path : packages/runtime-core/commands
434+ - uses : actions/download-artifact@v4
435+ with :
436+ name : codex-wasi
437+ path : software/codex/wasm
438+ - name : Restore Codex WASI executable modes
439+ run : chmod 0755 software/codex/wasm/codex software/codex/wasm/codex-exec
392440 - uses : actions/download-artifact@v4
393441 with :
394442 name : wasm-thread-fixtures
@@ -402,17 +450,24 @@ jobs:
402450 mkdir -p toolchain/target/wasm32-wasip1/release/commands
403451 cp -a packages/runtime-core/commands/. toolchain/target/wasm32-wasip1/release/commands/
404452 node packages/runtime-core/scripts/copy-wasm-commands.mjs --require
453+ pnpm --filter @agentos-software/manifest build
454+ pnpm --filter @rivet-dev/agentos-toolchain build
405455 pnpm --filter @agentos-software/coreutils build:runtime
406456 pnpm --filter '@agentos-software/common...' build
457+ - name : Stage pinned xfstests and its WASM helper corpus
458+ run : make -C tests/xfstests helpers XFSTESTS_BUILD_NATIVE_COMMANDS=0
407459 - name : Build the release sidecar and public test clients
408460 run : |
409- cargo build --release -p agentos-native-sidecar
461+ cargo build --release -p agentos-sidecar -p agentos- native-sidecar
410462 pnpm --filter '@rivet-dev/agentos-runtime-core...' build
411463 pnpm --filter @rivet-dev/agentos-vm-test-harness build
412464 pnpm --filter @rivet-dev/agentos-core build
413465 pnpm --filter @rivet-dev/agentos build
414466 - name : Run all native sidecar tests through the selected VM backend
415467 run : cargo test --release -p agentos-native-sidecar --tests -- --test-threads=1
468+ - name : Run artifact-backed V8-WASM and Wasmtime software parity
469+ if : matrix.backend == 'wasmtime'
470+ run : cargo test --release -p agentos-native-sidecar --test wasm_software_parity -- --ignored --nocapture --test-threads=1
416471 - name : Run owned pthread libc conformance
417472 if : matrix.backend == 'wasmtime'
418473 run : cargo test --release -p agentos-native-sidecar --test wasmtime_safety owned_pthread_libc_mutex_cond_tls_join_detach_and_cancel_conform -- --ignored --exact --nocapture --test-threads=1
@@ -426,6 +481,8 @@ jobs:
426481 run : cargo test -p agentos-client -- --test-threads=1
427482 - name : Run every registry software suite through the selected WASM backend
428483 run : pnpm exec turbo test --concurrency=1 --filter='@agentos-software/*'
484+ - name : Run every registry software nightly suite through the selected WASM backend
485+ run : pnpm exec turbo test:nightly --concurrency=1 --filter='@agentos-software/*'
429486 - name : Run deterministic actor, ACP, and agent-tool conformance
430487 run : pnpm --filter @rivet-dev/agentos test:e2e:run
431488 - name : Run mixed V8-JavaScript and Wasmtime resource-plateau smoke
0 commit comments