From ce59c8663b206638d2f3a3cc7ab36cddef584c82 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 15 Mar 2026 00:35:34 +0000 Subject: [PATCH 1/4] Fix missing ollama dependency in Docker image and add undeclared deps The Dockerfile was installing only base dependencies (`pip install .`), missing the ollama Python SDK which is an optional extra. Changed to `pip install '.[ollama]'` so the Docker image includes ollama support out of the box. Also added several third-party packages to base dependencies that were imported unconditionally but never declared: python-frontmatter (used in skills_manager.py and skills_hub.py), and document-processing libraries used by built-in skills (defusedxml, lxml, pypdf, pdf2image, pdfplumber, openpyxl). https://claude.ai/code/session_01GFwf7ZkAsLFNxqSATvL13w --- deploy/Dockerfile | 2 +- pyproject.toml | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/deploy/Dockerfile b/deploy/Dockerfile index f47f986bb..b870cb387 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -84,7 +84,7 @@ COPY pyproject.toml setup.py README.md ./ COPY src ./src # Inject console dist from build stage (repo does not commit dist). COPY --from=console-builder /app/console/dist/ ./src/copaw/console/ -RUN pip install --no-cache-dir . +RUN pip install --no-cache-dir '.[ollama]' # Init working dir with default config.json and HEARTBEAT.md (build time). RUN copaw init --defaults --accept-security diff --git a/pyproject.toml b/pyproject.toml index 028320d94..29ac1601a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,13 @@ dependencies = [ "aiofiles>=24.1.0", "paho-mqtt>=2.0.0", "matrix-nio>=0.24.0", + "python-frontmatter>=1.1.0", + "defusedxml>=0.7.1", + "lxml>=5.0.0", + "pypdf>=4.0.0", + "pdf2image>=1.16.0", + "pdfplumber>=0.10.0", + "openpyxl>=3.1.0", ] [tool.setuptools.dynamic] From 5fc6a6f9f2ac72a240b45f130d2636d13445b5aa Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 15 Mar 2026 02:41:59 +0000 Subject: [PATCH 2/4] Sort newly added dependencies alphabetically in pyproject.toml https://claude.ai/code/session_01GFwf7ZkAsLFNxqSATvL13w --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 29ac1601a..ec1e1cffb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,13 +27,13 @@ dependencies = [ "aiofiles>=24.1.0", "paho-mqtt>=2.0.0", "matrix-nio>=0.24.0", - "python-frontmatter>=1.1.0", "defusedxml>=0.7.1", "lxml>=5.0.0", - "pypdf>=4.0.0", + "openpyxl>=3.1.0", "pdf2image>=1.16.0", "pdfplumber>=0.10.0", - "openpyxl>=3.1.0", + "pypdf>=4.0.0", + "python-frontmatter>=1.1.0", ] [tool.setuptools.dynamic] From efc25f8250afda56b34a41c5aa44f2d150c1cfa7 Mon Sep 17 00:00:00 2001 From: Eric Zhu <320302+ekzhu@users.noreply.github.com> Date: Sun, 15 Mar 2026 16:10:49 +0800 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- deploy/Dockerfile | 2 ++ pyproject.toml | 1 + 2 files changed, 3 insertions(+) diff --git a/deploy/Dockerfile b/deploy/Dockerfile index b870cb387..b303e14c9 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -41,6 +41,8 @@ RUN apt-get update && apt-get install -y --fix-missing \ dbus-x11 \ fonts-wqy-zenhei \ fonts-wqy-microhei \ + poppler-utils \ + libreoffice \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean diff --git a/pyproject.toml b/pyproject.toml index ec1e1cffb..dcbbd8403 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ dependencies = [ "pdfplumber>=0.10.0", "pypdf>=4.0.0", "python-frontmatter>=1.1.0", + "PyYAML>=6.0.0", ] [tool.setuptools.dynamic] From be2e73c72a7a3e963bcdc4ff8e2fb2550276a0f8 Mon Sep 17 00:00:00 2001 From: Eric Zhu <320302+ekzhu@users.noreply.github.com> Date: Mon, 16 Mar 2026 11:11:51 +0800 Subject: [PATCH 4/4] Update Dockerfile --- deploy/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/Dockerfile b/deploy/Dockerfile index b303e14c9..3d22f0d85 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -86,7 +86,7 @@ COPY pyproject.toml setup.py README.md ./ COPY src ./src # Inject console dist from build stage (repo does not commit dist). COPY --from=console-builder /app/console/dist/ ./src/copaw/console/ -RUN pip install --no-cache-dir '.[ollama]' +RUN pip install --no-cache-dir '.[full]' # Init working dir with default config.json and HEARTBEAT.md (build time). RUN copaw init --defaults --accept-security