diff --git a/platform/mcp/compose.yaml b/platform/mcp/compose.yaml index f321ad7..ae09c3a 100644 --- a/platform/mcp/compose.yaml +++ b/platform/mcp/compose.yaml @@ -211,7 +211,7 @@ services: build: context: . dockerfile: Dockerfile.athena-operator - image: mike-ai/mcp-athena-operator:2.3.2 + image: mike-ai/mcp-athena-operator:2.3.3 container_name: mike-ai-mcp-athena-operator environment: ATHENA_OPERATOR_SOCKET: /operator/operator.sock diff --git a/platform/mcp/install-tools.sh b/platform/mcp/install-tools.sh old mode 100644 new mode 100755 diff --git a/platform/openwebui/install-filters.sh b/platform/openwebui/install-filters.sh old mode 100644 new mode 100755 diff --git a/platform/operator/athena_operatord.py b/platform/operator/athena_operatord.py index 84f4191..be4a406 100755 --- a/platform/operator/athena_operatord.py +++ b/platform/operator/athena_operatord.py @@ -17,6 +17,7 @@ import re import shlex import shutil import socketserver +import stat import subprocess import tempfile import threading @@ -28,7 +29,7 @@ from pathlib import Path from typing import Any -VERSION = "2.3.2" +VERSION = "2.3.3" STACK = Path(os.environ.get("ATHENA_OPERATOR_STACK", "/opt/mike-ai/stack")).resolve() REPOSITORY = Path(os.environ.get("ATHENA_OPERATOR_REPOSITORY", "/data/mike-ai-operator/repository")).resolve() STATE = Path(os.environ.get("ATHENA_OPERATOR_STATE", "/data/mike-ai-operator/state")).resolve() @@ -565,6 +566,7 @@ def prepare(arguments: dict[str, Any]) -> dict[str, Any]: def sync_file(relative: Path, content: str, backup_root: Path) -> None: for root in (REPOSITORY, STACK): target = source_file(root, relative) + target_mode = stat.S_IMODE(target.stat().st_mode) if target.exists() else 0o644 if target.exists(): backup = backup_root / root.name / relative backup.parent.mkdir(parents=True, exist_ok=True) @@ -573,6 +575,7 @@ def sync_file(relative: Path, content: str, backup_root: Path) -> None: fd, temp_name = tempfile.mkstemp(prefix=f".{target.name}.", dir=target.parent) with os.fdopen(fd, "w", encoding="utf-8") as handle: handle.write(content) + os.chmod(temp_name, target_mode) os.replace(temp_name, target)