From e03ac3982a2b50522af7e4da5a4814268b961fe0 Mon Sep 17 00:00:00 2001 From: buenosairesam Date: Thu, 16 Apr 2026 01:42:10 -0300 Subject: [PATCH] fix cross-process scenario switching and stale flights on scenario change --- agents/shared/mcp_client.py | 4 +++- ctrl/deploy.sh | 5 +++-- ctrl/edge/docker-compose.yml | 4 ++-- mcp_servers/data/scenarios/manager.py | 3 ++- ui/app/src/pages/OpsNotifications.vue | 6 +++--- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/agents/shared/mcp_client.py b/agents/shared/mcp_client.py index 661400b..58641df 100644 --- a/agents/shared/mcp_client.py +++ b/agents/shared/mcp_client.py @@ -12,8 +12,9 @@ from fastmcp import Client def _env() -> dict: - """Forward LLM-related env vars to MCP server subprocesses.""" + """Forward LLM-related env vars and active scenario to MCP server subprocesses.""" import os + from mcp_servers.data.scenarios.manager import scenario_manager env = {} for key in ( @@ -27,6 +28,7 @@ def _env() -> dict: val = os.getenv(key) if val: env[key] = val + env["ACTIVE_SCENARIO"] = scenario_manager.active_id return env diff --git a/ctrl/deploy.sh b/ctrl/deploy.sh index a3acebd..2d5fceb 100755 --- a/ctrl/deploy.sh +++ b/ctrl/deploy.sh @@ -22,9 +22,10 @@ case "${1:-rsync}" in echo "=== Building and restarting on server ===" ssh "$SERVER" << 'EOF' cd ~/unt - docker build -t nova-api -f ctrl/Dockerfile.api . - docker build -t nova-ui -f ctrl/Dockerfile.ui . + docker build -t registry.mcrn.ar/unt/api:latest -f ctrl/Dockerfile.api . + docker build -t registry.mcrn.ar/unt/ui:latest -f ctrl/Dockerfile.ui . cd ctrl/edge + [ -f .env ] || cp .env.example .env docker compose up -d --remove-orphans docker image prune -f docker compose ps diff --git a/ctrl/edge/docker-compose.yml b/ctrl/edge/docker-compose.yml index 12ed046..387cb17 100644 --- a/ctrl/edge/docker-compose.yml +++ b/ctrl/edge/docker-compose.yml @@ -1,5 +1,5 @@ services: - nova-api: + api: image: registry.mcrn.ar/unt/api:latest container_name: nova-api restart: unless-stopped @@ -12,7 +12,7 @@ services: container_name: nova-ui restart: unless-stopped depends_on: - - nova-api + - api networks: - gateway diff --git a/mcp_servers/data/scenarios/manager.py b/mcp_servers/data/scenarios/manager.py index 2fdd55f..40047e3 100644 --- a/mcp_servers/data/scenarios/manager.py +++ b/mcp_servers/data/scenarios/manager.py @@ -15,7 +15,8 @@ class ScenarioManager: """Manages the active scenario. Singleton — all MCP servers share one instance.""" def __init__(self) -> None: - self._active_id: str = "weather_disruption_ord" + import os + self._active_id: str = os.getenv("ACTIVE_SCENARIO") or os.getenv("DEFAULT_SCENARIO") or "weather_disruption_ord" self._cache: dict[str, Any] = {} @property diff --git a/ui/app/src/pages/OpsNotifications.vue b/ui/app/src/pages/OpsNotifications.vue index 5c343d1..0ed4ba4 100644 --- a/ui/app/src/pages/OpsNotifications.vue +++ b/ui/app/src/pages/OpsNotifications.vue @@ -1,5 +1,5 @@