Workspace ========= The **agency-workspace** repo adds ``./dev`` at the umbrella root. It fixes ``DOCKER_HOST`` on WSL (Docker Desktop bind-mount socket) and delegates stack commands to **agency-server** (:doc:`server`). Layout:: agency-workspace/ dev ← this script agency-django/ agency-server/dev ← compose up/down/enter/logs agency-ui/ Stack (delegates to ``agency-server/dev``) ------------------------------------------ .. list-table:: :header-rows: 1 :widths: 22 58 * - Command - Action * - ``./dev up`` - ``docker compose up`` * - ``./dev down`` - Stop stack * - ``./dev build`` - Build and start * - ``./dev`` - List ``agency_*`` containers * - ``./dev enter`` - Shell in container (default: django) * - ``./dev logs`` - Follow logs * - ``./dev restart`` - Restart a service * - ``./dev ui`` - Publish SPA: build → collectstatic → restart django/asgi, then nginx * - ``./dev doc`` - Sphinx onepage (``singlehtml``) → ``/static/documentation-single/`` * - ``./dev doc html`` - Sphinx multi-page HTML → ``/static/documentation/`` * - ``./dev doc llm`` - One plain-text dump for LLM paste See :doc:`server` for container aliases and ``agency-server/dev`` commands. In-container equivalents: ``bash run document-single`` / ``document`` / ``document-llm``. Tests (umbrella) ---------------- .. list-table:: :header-rows: 1 :widths: 22 58 * - Command - Action * - ``./dev test`` - Backend pytest in ``agency_django`` (fast suite) * - ``./dev test-docker`` - ``pytest -m docker`` stack smoke * - ``./dev test-ui`` - vitest + typecheck + build * - ``./dev test-all`` - Backend + frontend * - ``./dev redis`` - Redis/Channels health hints Details: :doc:`../tests/index`. WSL Docker ---------- If ``docker info`` fails, ``./dev`` sets ``DOCKER_HOST`` to a Docker Desktop bind-mount socket under ``/mnt/wsl/docker-desktop-bind-mounts/``. See ``.cursor/rules/15-docker-wsl.mdc`` in the workspace repo.