diff --git a/.cursor/environment.json b/.cursor/environment.json new file mode 100644 index 000000000..4a40b0d4d --- /dev/null +++ b/.cursor/environment.json @@ -0,0 +1,12 @@ +{ + "name": "BandScope", + "install": "curl --proto '=https' --tlsv1.2 -LsSf https://astral.sh/uv/0.8.6/install.sh | env UV_UNMANAGED_INSTALL=\"$HOME/.local/bin\" sh && export PATH=\"$HOME/.local/bin:$PATH\" && npm ci && uv sync --project services/analysis-engine --group dev --frozen", + "ports": [{ "name": "desktop-dev", "port": 5173 }], + "terminals": [ + { + "name": "desktop-dev", + "command": "npm run dev --workspace @bandscope/desktop", + "description": "Vite dev server for the BandScope desktop app (browser fallback mode) at http://localhost:5173/" + } + ] +} diff --git a/services/analysis-engine/tests/test_cloud_agent_environment.py b/services/analysis-engine/tests/test_cloud_agent_environment.py new file mode 100644 index 000000000..5578d75c7 --- /dev/null +++ b/services/analysis-engine/tests/test_cloud_agent_environment.py @@ -0,0 +1,23 @@ +"""Regression tests for the reproducible Cursor Cloud Agent bootstrap.""" + +from __future__ import annotations + +import json +from pathlib import Path + + +def test_cloud_agent_install_uses_pinned_locked_dependency_bootstrap() -> None: + """Keep Cloud Agent dependency setup aligned with BandScope's locked CI path.""" + repo_root = Path(__file__).resolve().parents[3] + environment = json.loads( + (repo_root / ".cursor" / "environment.json").read_text(encoding="utf-8") + ) + install = environment["install"] + + assert "https://astral.sh/uv/0.8.6/install.sh" in install + assert "--proto '=https'" in install + assert "--tlsv1.2" in install + assert 'UV_UNMANAGED_INSTALL="$HOME/.local/bin"' in install + assert "npm ci" in install + assert "npm install" not in install + assert "uv sync --project services/analysis-engine --group dev --frozen" in install