feat(web): research corpus workspace — local ingest → FAISS → grounde… #56
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: cross-platform-smoke | |
| # Continuously proves the cross-platform claims as the repo evolves: a fresh install | |
| # imports, the FastAPI server starts headless, and the OS-agnostic code paths load + pass | |
| # their tests on Linux, macOS, AND Windows. Deliberately LIGHTWEIGHT — it installs the core | |
| # + server (CPU), not the heavy GPU/image stack, so it stays fast and free. | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| smoke: | |
| name: ${{ matrix.os }} · py${{ matrix.python }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python: ["3.10", "3.12"] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Install (core + server, CPU — no GPU/image stack) | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[server]" | |
| pip install llama-cpp-python --prefer-binary | |
| pip install httpx pytest | |
| - name: Import smoke — cross-platform modules load on this OS | |
| run: | | |
| python -c "import eli; from eli.utils.platform_compat import normalize_platform; print('platform:', normalize_platform())" | |
| python -c "from eli.execution.executor_enhanced import open_browser; import eli.perception.os_controller; print('executor + os_controller OK')" | |
| python -c "from api.server import app; print('server app OK')" | |
| - name: Headless server smoke — /, /health, /v1/chat shape (no model needed) | |
| run: | | |
| python -c "from fastapi.testclient import TestClient; from api.server import app; c=TestClient(app); assert c.get('/health').status_code==200; assert c.get('/').status_code==200; print('server endpoints reachable (health + web UI)')" | |
| - name: First-run DB autobuild (cross-platform paths) | |
| run: | | |
| python -c "from eli.core.paths import get_paths; get_paths(); import eli.memory as M; (M.get_memory() if hasattr(M,'get_memory') else None); print('data dirs + DB init OK')" | |
| - name: Cross-platform unit tests (explicit self-contained files — no GGUF / display / generated artifacts) | |
| run: > | |
| pytest -q -p no:cacheprovider | |
| tests/test_dual_gpu_settings.py | |
| tests/test_user_model.py | |
| tests/test_08_hardware.py | |
| tests/test_smart_fit.py | |
| tests/test_settings_extended.py | |
| tests/test_shell_security_gate.py |