feat(rust,python,typescript): unique agent names with upsert-by-name #185
Workflow file for this run
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 | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| test-rust: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: rust | |
| - run: cd rust && cargo test --all-features | |
| - run: cd rust && cargo clippy -- -D warnings | |
| - run: cd rust && cargo fmt --check | |
| test-python: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: astral-sh/setup-uv@v5 | |
| - run: cd python && uv sync --all-extras | |
| - run: cd python && uv run pytest --cov=everruns_sdk --cov-report=xml --cov-fail-under=60 | |
| - run: cd python && uv run ruff check . && uv run ruff format --check . | |
| test-typescript: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: typescript/package-lock.json | |
| - run: cd typescript && npm ci | |
| - run: cd typescript && npm test -- --coverage | |
| - run: cd typescript && npm run lint && npm run build | |
| check-examples: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: rust | |
| - uses: astral-sh/setup-uv@v5 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: typescript/package-lock.json | |
| - name: Check Rust examples compile | |
| run: cd rust && cargo check --examples | |
| - name: Install Python SDK deps | |
| run: cd python && uv sync --all-extras | |
| - name: Check Python examples syntax | |
| run: cd python && uv run python -m py_compile examples/basic.py examples/initial_files.py | |
| - name: Install TypeScript SDK deps | |
| run: cd typescript && npm ci | |
| - name: Check TypeScript examples compile | |
| run: cd typescript && npx tsc --noEmit --ignoreConfig --types node examples/basic.ts examples/initial-files.ts | |
| check-cookbooks: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Rust setup | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: | | |
| rust | |
| cookbook/rust | |
| # Python setup | |
| - uses: astral-sh/setup-uv@v5 | |
| # TypeScript setup | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| # Check Rust cookbook | |
| - name: Check Rust cookbook compiles | |
| run: cd cookbook/rust && cargo check | |
| - name: Lint Rust cookbook | |
| run: cd cookbook/rust && cargo fmt --check && cargo clippy -- -D warnings | |
| # Check Python cookbook | |
| - name: Install Python cookbook deps | |
| run: cd cookbook/python && uv sync | |
| - name: Check Python cookbook syntax | |
| run: cd cookbook/python && uv run python -c "import py_compile, glob; [py_compile.compile(f, doraise=True) for f in glob.glob('src/**/*.py', recursive=True)]" | |
| - name: Lint Python cookbook | |
| run: cd cookbook/python && uv run ruff check . && uv run ruff format --check . | |
| # Check TypeScript cookbook | |
| - name: Build TypeScript SDK (required for cookbook) | |
| run: cd typescript && npm ci && npm run build | |
| - name: Install TypeScript cookbook deps | |
| run: cd cookbook/typescript && npm install | |
| - name: Check TypeScript cookbook compiles | |
| run: cd cookbook/typescript && npm run check | |
| - name: Lint TypeScript cookbook | |
| run: cd cookbook/typescript && npm run lint | |
| run-cookbooks: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Rust setup | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: | | |
| rust | |
| cookbook/rust | |
| # Python setup | |
| - uses: astral-sh/setup-uv@v5 | |
| # TypeScript setup | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| # Install everruns-server (cached) | |
| - name: Get everruns-server latest commit | |
| id: everruns-sha | |
| run: | | |
| SHA=$(git ls-remote https://github.com/everruns/everruns.git HEAD | cut -f1) | |
| echo "sha=$SHA" >> $GITHUB_OUTPUT | |
| - name: Cache everruns-server binary | |
| id: cache-server | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cargo/bin/everruns-server | |
| key: everruns-server-${{ runner.os }}-${{ steps.everruns-sha.outputs.sha }} | |
| - name: Install everruns-server | |
| if: steps.cache-server.outputs.cache-hit != 'true' | |
| run: cargo install --git https://github.com/everruns/everruns everruns-server | |
| # Start server | |
| - name: Start everruns-server | |
| run: | | |
| DEV_MODE=1 everruns-server & | |
| sleep 5 | |
| env: | |
| DEFAULT_ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| DEFAULT_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| # Run Rust cookbook | |
| - name: Run Rust cookbook (dad-jokes) | |
| timeout-minutes: 3 | |
| run: cd cookbook/rust && cargo run --bin dad-jokes | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Run Rust cookbook (weather-tools) | |
| timeout-minutes: 3 | |
| run: cd cookbook/rust && cargo run --bin weather-tools | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| # Run Python cookbook | |
| - name: Install Python cookbook deps | |
| run: cd cookbook/python && uv sync | |
| - name: Run Python cookbook (main) | |
| timeout-minutes: 3 | |
| run: cd cookbook/python && uv run python src/main.py | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Run Python cookbook (weather-tools) | |
| timeout-minutes: 3 | |
| run: cd cookbook/python && uv run python src/weather_tools.py | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| # Run TypeScript cookbook | |
| - name: Build TypeScript SDK | |
| run: cd typescript && npm ci && npm run build | |
| - name: Install TypeScript cookbook deps | |
| run: cd cookbook/typescript && npm install | |
| - name: Run TypeScript cookbook (main) | |
| timeout-minutes: 3 | |
| run: cd cookbook/typescript && npx tsx src/main.ts | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Run TypeScript cookbook (weather-tools) | |
| timeout-minutes: 3 | |
| run: cd cookbook/typescript && npx tsx src/weather_tools.ts | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| run-examples: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: rust | |
| - uses: astral-sh/setup-uv@v5 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: typescript/package-lock.json | |
| - name: Get everruns-server latest commit | |
| id: everruns-sha | |
| run: | | |
| SHA=$(git ls-remote https://github.com/everruns/everruns.git HEAD | cut -f1) | |
| echo "sha=$SHA" >> $GITHUB_OUTPUT | |
| - name: Cache everruns-server binary | |
| id: cache-server | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cargo/bin/everruns-server | |
| key: everruns-server-${{ runner.os }}-${{ steps.everruns-sha.outputs.sha }} | |
| - name: Install everruns-server | |
| if: steps.cache-server.outputs.cache-hit != 'true' | |
| run: cargo install --git https://github.com/everruns/everruns everruns-server | |
| - name: Start everruns-server | |
| run: | | |
| DEV_MODE=1 everruns-server & | |
| sleep 5 | |
| env: | |
| DEFAULT_ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| DEFAULT_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| - name: Run Rust basic example | |
| timeout-minutes: 3 | |
| run: cd rust && cargo run --example basic | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Run Rust initial_files example | |
| timeout-minutes: 3 | |
| run: cd rust && cargo run --example initial_files | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Install Python SDK deps | |
| run: cd python && uv sync --all-extras | |
| - name: Run Python basic example | |
| timeout-minutes: 3 | |
| run: cd python && uv run python examples/basic.py | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Run Python initial_files example | |
| timeout-minutes: 3 | |
| run: cd python && uv run python examples/initial_files.py | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Install TypeScript SDK deps | |
| run: cd typescript && npm ci | |
| - name: Run TypeScript basic example | |
| timeout-minutes: 3 | |
| run: cd typescript && npx tsx examples/basic.ts | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 | |
| - name: Run TypeScript initial-files example | |
| timeout-minutes: 3 | |
| run: cd typescript && npx tsx examples/initial-files.ts | |
| env: | |
| EVERRUNS_API_KEY: fake-key | |
| EVERRUNS_API_URL: http://localhost:9000 |