change onboarding agent with gemini-2.5-flash at temperature 0.7 #21
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 | |
| # Lightweight pre-merge checks for The Continental Concierge. | |
| # Intentionally narrow: lint + import sanity only — no AlloyDB, no Vertex AI, | |
| # no secrets. The full eval harness (pytest evals/) and schema-level tests | |
| # run separately because they need a Postgres service container and a real | |
| # Vertex AI project. Those belong in a nightly workflow, not on every push. | |
| on: | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| branches: [main, master] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: Lint (ruff) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install ruff | |
| run: pip install "ruff>=0.5.0" | |
| - name: ruff check | |
| # `--output-format=github` surfaces findings as inline PR annotations. | |
| run: ruff check . --output-format=github | |
| - name: ruff format check | |
| # Non-destructive; just verifies nothing would be reformatted. | |
| run: ruff format --check . | |
| import-smoke: | |
| name: Import smoke test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install runtime dependencies | |
| # We do NOT install the MCP sidecar requirements here — those have a | |
| # narrower pin set meant for the Cloud Run sidecar image. | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| - name: Import all first-party modules | |
| # Walks app/ only. The mcp/ sidecar is intentionally excluded because: | |
| # (a) it deploys as a separate Cloud Run service with requirements-mcp.txt, | |
| # (b) the local mcp/ directory shadows the installed `mcp` SDK package | |
| # at the repo root, causing `from mcp import ClientSession` inside | |
| # google-adk to resolve to the wrong module and fail with ImportError. | |
| # The sidecar smoke-test belongs in a dedicated job that installs | |
| # requirements-mcp.txt and changes directory into mcp/ before walking. | |
| env: | |
| GOOGLE_CLOUD_PROJECT: "" | |
| AGENT_ENGINE_ID: "" | |
| ALLOYDB_HOST: localhost | |
| ALLOYDB_PORT: "5432" | |
| ALLOYDB_DATABASE: continental | |
| ALLOYDB_USER: continental_app | |
| ALLOYDB_PASSWORD: ci-noop | |
| run: | | |
| python - <<'PY' | |
| import importlib | |
| import pkgutil | |
| import sys | |
| failed = [] | |
| pkg = importlib.import_module("app") | |
| for mod in pkgutil.walk_packages(pkg.__path__, prefix="app."): | |
| try: | |
| importlib.import_module(mod.name) | |
| except Exception as e: # noqa: BLE001 | |
| failed.append((mod.name, repr(e))) | |
| if failed: | |
| print("IMPORT FAILURES:") | |
| for name, err in failed: | |
| print(f" {name}: {err}") | |
| sys.exit(1) | |
| print("All app.* modules imported cleanly.") | |
| PY |