From 51a98a0c6314511712a283dc58626c85bddfc0aa Mon Sep 17 00:00:00 2001 From: Alex Blank Date: Fri, 5 Jun 2026 23:03:40 +0200 Subject: [PATCH] fix: add missing APIRouter import and None-safety in instance_service - Import APIRouter from fastapi (NameError on module load) - Add None check after session.get(ToolType) to prevent AttributeError - Type-annotate volume_mounts and guard extend() with isinstance(list) Quality gates: py_compile pass, LSP clean --- apps/api/src/services/tool/instance_service.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/api/src/services/tool/instance_service.py b/apps/api/src/services/tool/instance_service.py index c5f6f20..bfb8ab4 100644 --- a/apps/api/src/services/tool/instance_service.py +++ b/apps/api/src/services/tool/instance_service.py @@ -7,9 +7,10 @@ import os import subprocess import uuid from datetime import datetime +from typing import Any import httpx -from fastapi import HTTPException, status +from fastapi import APIRouter, HTTPException, status from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession @@ -97,12 +98,12 @@ async def resolve_git_mounts( results = await asyncio.gather(*tasks, return_exceptions=True) - volume_mounts = [] + volume_mounts: list[dict[str, Any]] = [] for result in results: if isinstance(result, Exception): logger.warning("Git mount failed: %s", result) continue - if result: + if isinstance(result, list): volume_mounts.extend(result) return volume_mounts @@ -758,6 +759,9 @@ async def prepare_manifest_instance( from src.models import ToolDefinitionManifest tool_type = await session.get(ToolType, instance.tool_type_id) + if not tool_type: + raise RuntimeError(f"Tool type {instance.tool_type_id} not found") + manifest_def = await session.get(ToolDefinitionManifest, tool_type.manifest_id) if not manifest_def: