feat(agent): unify intake with tool-called intent planning #20
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: ci-ghcr | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - "**" | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| GHCR_IMAGE_REPOSITORY: ghcr.io/lumenstream/lumenstream-ce-fullstack | |
| concurrency: | |
| group: ci-ghcr-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| validate: | |
| name: Validate | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.2.2 | |
| - name: Install web dependencies | |
| working-directory: ./web | |
| run: bun install --frozen-lockfile | |
| - name: Rust format check | |
| run: cargo fmt --all -- --check | |
| - name: Rust tests | |
| run: cargo test --workspace --locked | |
| - name: Script syntax check | |
| run: | | |
| if [ -f ../scripts/contract_test_api.sh ] && [ -f ../scripts/replay_client_callchains.sh ]; then | |
| bash -n \ | |
| ../scripts/contract_test_api.sh \ | |
| ../scripts/replay_client_callchains.sh \ | |
| scripts/repo_split_common.sh \ | |
| scripts/export_ce_upstream.sh \ | |
| scripts/init_commercial_downstream.sh \ | |
| scripts/cut_split_repositories.sh \ | |
| scripts/sync_from_ce_upstream.sh \ | |
| docker/fullstack-entrypoint.sh \ | |
| docker/web-entrypoint.sh \ | |
| docker/write-web-runtime-config.sh | |
| else | |
| echo "skip part of script syntax check: ../scripts/*.sh not found in this checkout" | |
| bash -n \ | |
| scripts/repo_split_common.sh \ | |
| scripts/export_ce_upstream.sh \ | |
| scripts/init_commercial_downstream.sh \ | |
| scripts/cut_split_repositories.sh \ | |
| scripts/sync_from_ce_upstream.sh \ | |
| docker/fullstack-entrypoint.sh \ | |
| docker/web-entrypoint.sh \ | |
| docker/write-web-runtime-config.sh | |
| fi | |
| - name: Frontend type check | |
| working-directory: ./web | |
| run: bun run check | |
| - name: Frontend tests | |
| working-directory: ./web | |
| run: bun run test | |
| - name: Frontend lint | |
| working-directory: ./web | |
| run: bun run lint | |
| - name: Frontend format check | |
| working-directory: ./web | |
| run: bun run format:check | |
| publish-ghcr: | |
| name: Build & Publish GHCR image | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| if: github.event_name != 'pull_request' && (github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust dependencies | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Extract Docker metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.GHCR_IMAGE_REPOSITORY }} | |
| tags: | | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| type=ref,event=branch | |
| type=ref,event=tag | |
| type=sha,prefix=sha- | |
| - name: Build release binary | |
| run: | | |
| cargo build --release --locked -p ls-app | |
| strip target/release/ls-app | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push fullstack image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ./Dockerfile.fullstack | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max |