From a6626a095913381c674d822877fde6579adbe657 Mon Sep 17 00:00:00 2001 From: Isaac Johnson Date: Tue, 14 Oct 2025 06:41:12 -0500 Subject: [PATCH] update to handle null lists (errors from get details in 0.19) --- Dockerfile | 2 +- __pycache__/main.cpython-311.pyc | Bin 0 -> 34216 bytes gemini-extension.json | 4 ++-- main.py | 23 +++++++++++++---------- 4 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 __pycache__/main.cpython-311.pyc diff --git a/Dockerfile b/Dockerfile index 60f7b52..e056a1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,4 +20,4 @@ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "main.py"] -#harbor.freshbrewed.science/library/vikunjamcp:0.19 +#harbor.freshbrewed.science/library/vikunjamcp:0.20 diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8e1df28dd1115eb5d66a26d8521e2e15aeb6839 GIT binary patch literal 34216 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 L9G$U@aR2`gn>jU% literal 0 HcmV?d00001 diff --git a/gemini-extension.json b/gemini-extension.json index a3c5c17..a492978 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "vikunja", - "version": "1.0.19", + "version": "1.0.20", "mcpServers": { "nodeServer": { "command": "docker", @@ -14,7 +14,7 @@ "VIKUNJA_USERNAME", "-e", "VIKUNJA_PASSWORD", - "harbor.freshbrewed.science/library/vikunjamcp:0.19" + "harbor.freshbrewed.science/library/vikunjamcp:0.20" ], "env": { "VIKUNJA_URL": "$VIKUNJA_URL", diff --git a/main.py b/main.py index 17f401b..5cda223 100644 --- a/main.py +++ b/main.py @@ -175,7 +175,7 @@ def get_task_details(task_id: int): if not details: return "No details found for this task." - # Helpers to produce compact readable strings for nested structures + # Helpers to produce compact readable strings for nested structures def join_names(items): if not items: return "[]" @@ -218,7 +218,10 @@ def get_task_details(task_id: int): project_id = details.get("project_id", "N/A") bucket_id = details.get("bucket_id", "N/A") - buckets = details.get("buckets", []) + # Coerce potentially-None fields to safe defaults so len() and iteration are safe. + # Vikunja may return null for some nested fields; normalize to empty lists/dicts + # to avoid TypeError when calling len() or iterating. + buckets = details.get("buckets") or [] index = details.get("index", "N/A") position = details.get("position", "N/A") @@ -226,15 +229,15 @@ def get_task_details(task_id: int): is_favorite = details.get("is_favorite", details.get("is_favourite", "N/A")) hex_color = details.get("hex_color", "N/A") - assignees = details.get("assignees", []) - attachments = details.get("attachments", []) + assignees = details.get("assignees") or [] + attachments = details.get("attachments") or [] cover_image_attachment_id = details.get("cover_image_attachment_id", "N/A") - comments = details.get("comments", []) - labels = details.get("labels", []) - reminders = details.get("reminders", []) - reactions = details.get("reactions", {}) - related_tasks = details.get("related_tasks", {}) - subscription = details.get("subscription", {}) + comments = details.get("comments") or [] + labels = details.get("labels") or [] + reminders = details.get("reminders") or [] + reactions = details.get("reactions") or {} + related_tasks = details.get("related_tasks") or {} + subscription = details.get("subscription") or {} result = [] result.append(f"ID: {fetched_id}, Identifier: {identifier}, Title: {title}")