Skip to content

feat(rust,python,typescript): unique agent names with upsert-by-name #185

feat(rust,python,typescript): unique agent names with upsert-by-name

feat(rust,python,typescript): unique agent names with upsert-by-name #185

Workflow file for this run

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