feat(shell): org + agent navigation in the toolbar breadcrumb; threads-only sidebar #2994
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Sandbox Daemon E2E | |
| # packages/sandbox/daemon/daemon.e2e.test.ts spawns the built daemon binary | |
| # and exercises real HTTP/SSE endpoints — it's an integration test that | |
| # runs under `bun test` purely because of where it lives in the tree. | |
| # Split into its own workflow so the unit-test job stays infrastructure-free | |
| # (no daemon-bundle build, no per-test process spawning) per TESTING.md. | |
| on: | |
| push: | |
| branches: | |
| - main | |
| # Skip pushes to main that only touch the version bump, CI/workflow config, | |
| # or docs — none need the suite re-run (PRs already validated them, and the | |
| # [release] bump is owned by release-mesh). | |
| paths-ignore: | |
| - "apps/mesh/package.json" | |
| - ".github/**" | |
| - "apps/docs/**" | |
| - "**/*.md" | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| # See test.yml for why this gate exists: skip the (required) check on | |
| # workflow/docs/markdown-only PRs without leaving the required check | |
| # stuck pending. Pushes to main always run. | |
| changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| relevant: ${{ steps.filter.outputs.relevant }} | |
| steps: | |
| - name: Detect relevant changes | |
| id: filter | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| HEAD_MSG: ${{ github.event.head_commit.message }} | |
| run: | | |
| if [ "${{ github.event_name }}" != "pull_request" ]; then | |
| # Push to main runs everything — except the [release]: version-bump | |
| # commit, which only touches the version string. release-mesh picks | |
| # that commit up on its own push trigger and cuts the release. | |
| case "$HEAD_MSG" in | |
| '[release]:'*) echo "relevant=false" >> "$GITHUB_OUTPUT" ;; | |
| *) echo "relevant=true" >> "$GITHUB_OUTPUT" ;; | |
| esac | |
| exit 0 | |
| fi | |
| set +e | |
| FILES=$(gh api --paginate \ | |
| "repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files" \ | |
| --jq '.[].filename') | |
| if [ $? -ne 0 ]; then | |
| echo "Could not list PR files — running to be safe." | |
| echo "relevant=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| echo "Changed files:"; echo "$FILES" | |
| relevant=false | |
| while IFS= read -r f; do | |
| [ -z "$f" ] && continue | |
| case "$f" in | |
| .github/*|apps/docs/*|deploy/*|*.md) ;; | |
| *) relevant=true; break ;; | |
| esac | |
| done <<< "$FILES" | |
| echo "relevant=$relevant" >> "$GITHUB_OUTPUT" | |
| daemon-e2e: | |
| needs: changes | |
| if: needs.changes.outputs.relevant == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: "1.3.14" | |
| - name: Install dependencies | |
| run: bun install | |
| # The fs `grep` route shells out to ripgrep; install it so that test can | |
| # assert results strictly instead of tolerating "grep unavailable". | |
| - name: Install ripgrep | |
| run: sudo apt-get update && sudo apt-get install -y ripgrep | |
| - name: Build daemon bundle | |
| run: bun run --cwd=packages/sandbox build | |
| - name: Run daemon e2e tests | |
| # All daemon e2e specs end in `.e2e.test.ts` (core + git + proxy + | |
| # dispatch); the helpers file is `.e2e.helpers.ts` and is not matched. | |
| run: bun test packages/sandbox/daemon/daemon*.e2e.test.ts |