diff --git a/.github/workflows/markdown-code-runner.yml b/.github/workflows/markdown-code-runner.yml index 91610102..ef06e3a9 100644 --- a/.github/workflows/markdown-code-runner.yml +++ b/.github/workflows/markdown-code-runner.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.13.11" + python-version: "3.14.3" - name: Install uv uses: astral-sh/setup-uv@v7 diff --git a/agent_cli/_tools.py b/agent_cli/_tools.py index 1a7ce895..9f068b02 100644 --- a/agent_cli/_tools.py +++ b/agent_cli/_tools.py @@ -130,7 +130,7 @@ def execute_code(code: str) -> str: except subprocess.CalledProcessError as e: return f"Error executing code: {e.stderr}" except FileNotFoundError: - return f"Error: Command not found: {code.split()[0]}" + return f"Error: Command not found: {code.split(maxsplit=1)[0]}" def add_memory(content: str, category: str = "general", tags: str = "") -> str: diff --git a/agent_cli/agents/transcribe_live.py b/agent_cli/agents/transcribe_live.py index f5e8640c..d4c61220 100644 --- a/agent_cli/agents/transcribe_live.py +++ b/agent_cli/agents/transcribe_live.py @@ -188,7 +188,7 @@ async def _process_segment( # noqa: PLR0912 if cfg.clipboard: import pyperclip # noqa: PLC0415 - text_to_copy = processed if processed else transcript + text_to_copy = processed or transcript pyperclip.copy(text_to_copy) # Log diff --git a/agent_cli/core/deps.py b/agent_cli/core/deps.py index 7ee0d874..10254ebd 100644 --- a/agent_cli/core/deps.py +++ b/agent_cli/core/deps.py @@ -61,7 +61,7 @@ def _is_uvx_cache() -> bool: def _check_package_installed(pkg: str) -> bool: """Check if a single package is installed.""" - top_module = pkg.split(".")[0] + top_module = pkg.split(".", maxsplit=1)[0] try: return find_spec(top_module) is not None except (ValueError, ModuleNotFoundError): diff --git a/agent_cli/dev/cli.py b/agent_cli/dev/cli.py index a38def29..9eb9640c 100644 --- a/agent_cli/dev/cli.py +++ b/agent_cli/dev/cli.py @@ -311,7 +311,7 @@ def _get_config_agent_env() -> dict[str, dict[str, str]] | None: agent_name = key[len(prefix) :] result[agent_name] = value - return result if result else None + return result or None def _get_agent_env(agent: CodingAgent) -> dict[str, str]: @@ -350,7 +350,7 @@ def _merge_agent_args( if cli_args: result.extend(cli_args) - return result if result else None + return result or None def _is_ssh_session() -> bool: diff --git a/agent_cli/install/service_config.py b/agent_cli/install/service_config.py index 057a41b1..dbe15776 100644 --- a/agent_cli/install/service_config.py +++ b/agent_cli/install/service_config.py @@ -135,7 +135,7 @@ def build_service_command( args.extend(["--python", service.python_version]) # Build the command: either custom command path or default "server " - cmd_path = service.command if service.command else ["server", service.name] + cmd_path = service.command or ["server", service.name] args.extend( [ diff --git a/docker/memory-proxy.Dockerfile b/docker/memory-proxy.Dockerfile index ece87922..c4a80ef7 100644 --- a/docker/memory-proxy.Dockerfile +++ b/docker/memory-proxy.Dockerfile @@ -32,7 +32,7 @@ # ============================================================================= # Builder stage - install dependencies and project # ============================================================================= -FROM python:3.13-slim AS builder +FROM python:3.14-slim AS builder RUN apt-get update && \ apt-get install -y --no-install-recommends git build-essential && \ @@ -51,7 +51,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra memory # ============================================================================= # Runtime stage - minimal image using Python slim directly # ============================================================================= -FROM python:3.13-slim +FROM python:3.14-slim # Install runtime dependencies: # - libgomp1: Required by onnxruntime for parallel processing diff --git a/docker/rag-proxy.Dockerfile b/docker/rag-proxy.Dockerfile index 3a8a7e6f..e55a320d 100644 --- a/docker/rag-proxy.Dockerfile +++ b/docker/rag-proxy.Dockerfile @@ -29,7 +29,7 @@ # ============================================================================= # Builder stage - install dependencies and project # ============================================================================= -FROM python:3.13-slim AS builder +FROM python:3.14-slim AS builder RUN apt-get update && \ apt-get install -y --no-install-recommends git build-essential && \ @@ -48,7 +48,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra rag # ============================================================================= # Runtime stage - minimal image using Python slim directly # ============================================================================= -FROM python:3.13-slim +FROM python:3.14-slim # Install runtime dependencies: # - libgomp1: Required by onnxruntime for parallel processing diff --git a/docker/transcribe-proxy.Dockerfile b/docker/transcribe-proxy.Dockerfile index 4f8b0018..87906cd4 100644 --- a/docker/transcribe-proxy.Dockerfile +++ b/docker/transcribe-proxy.Dockerfile @@ -24,7 +24,7 @@ # ============================================================================= # Builder stage - install dependencies and project # ============================================================================= -FROM python:3.13-alpine AS builder +FROM python:3.14-alpine AS builder RUN apk add --no-cache git @@ -41,7 +41,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra server --extra wyoming --ext # ============================================================================= # Runtime stage - minimal Alpine image # ============================================================================= -FROM python:3.13-alpine +FROM python:3.14-alpine RUN apk add --no-cache ffmpeg diff --git a/docker/tts.Dockerfile b/docker/tts.Dockerfile index c2040e45..c41f3d14 100644 --- a/docker/tts.Dockerfile +++ b/docker/tts.Dockerfile @@ -12,7 +12,7 @@ # ============================================================================= # Builder stage for CUDA - Kokoro TTS (requires build tools) # ============================================================================= -FROM python:3.13-slim AS builder-cuda +FROM python:3.14-slim AS builder-cuda RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential git && \ @@ -32,7 +32,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra server --extra kokoro --extr # ============================================================================= # Builder stage for CPU - Piper TTS # ============================================================================= -FROM python:3.13-slim AS builder-cpu +FROM python:3.14-slim AS builder-cpu RUN apt-get update && \ apt-get install -y --no-install-recommends git && \ @@ -108,7 +108,7 @@ ENTRYPOINT ["sh", "-c", "agent-cli server tts \ # ============================================================================= # CPU target: CPU-only with Piper TTS # ============================================================================= -FROM python:3.13-slim AS cpu +FROM python:3.14-slim AS cpu COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ diff --git a/docker/whisper.Dockerfile b/docker/whisper.Dockerfile index a01e0caf..d6b05abe 100644 --- a/docker/whisper.Dockerfile +++ b/docker/whisper.Dockerfile @@ -12,7 +12,7 @@ # ============================================================================= # Builder stage - install dependencies and project # ============================================================================= -FROM python:3.13-slim AS builder +FROM python:3.14-slim AS builder RUN apt-get update && \ apt-get install -y --no-install-recommends git && \ @@ -83,7 +83,7 @@ ENTRYPOINT ["sh", "-c", "agent-cli server whisper \ # ============================================================================= # CPU target: CPU-only with faster-whisper # ============================================================================= -FROM python:3.13-slim AS cpu +FROM python:3.14-slim AS cpu COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ diff --git a/pyproject.toml b/pyproject.toml index 2349c34b..f8582863 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ dependencies = [ "setproctitle", ] # TODO: remove <3.14 constraint when onnxruntime supports 3.14 (https://github.com/microsoft/onnxruntime/issues/26309) -requires-python = ">=3.11,<3.14" +requires-python = ">=3.14,<3.15" [project.readme] file = "README.md"