name: CI on: pull_request: branches: - main push: branches: - main jobs: build: name: ${{ matrix.name }} runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: include: - name: macOS arm64 (macos-14) runner: macos-14 - name: macOS x64 (macos-13) runner: macos-13 - name: Linux x64 (ubuntu-24.04) runner: ubuntu-24.04 - name: Linux arm64 (ubuntu-24.04-arm) runner: ubuntu-24.04-arm - name: Windows x64 (windows-latest) runner: windows-latest defaults: run: shell: bash permissions: contents: read steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Bun uses: oven-sh/setup-bun@v1 with: bun-version: 1.3.0 - name: Install dependencies run: bun install - name: Lint run: bun run lint - name: Build binary run: bun run build - name: CLI help smoke test run: ./bin/letta --help - name: CLI version smoke test run: ./bin/letta --version || true - name: Headless smoke test (API) if: ${{ github.event_name == 'push' }} env: LETTA_API_KEY: ${{ secrets.LETTA_API_KEY }} run: ./bin/letta --prompt "ping" --tools "" --permission-mode plan - name: Publish dry-run if: ${{ github.event_name == 'push' }} env: NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }} LETTA_API_KEY: dummy run: bun publish --dry-run - name: Pack (no auth available) if: ${{ github.event_name != 'push' }} run: bun pm pack