fix: respect readonly flag on config-profile mounts in compose tool types

- modify_compose_file now appends :ro when a config-profile volume entry
  has readonly=true, matching the manifest compiler behavior.
- Add a guard for missing tool_type in prepare_manifest_instance.

Quality gates: python3 -m pytest (313 passed, 34 skipped)
This commit is contained in:
Developer
2026-06-13 12:12:12 +00:00
parent 31f1ce00d3
commit efe5e4ae50
7 changed files with 19 additions and 14 deletions
@@ -583,10 +583,13 @@ def modify_compose_file(
source = vol.get("source", "")
target = expand_container_path(vol.get("target", ""), home_dir)
vol_type = vol.get("type", "bind")
readonly = ":ro" if vol.get("readonly") else ""
if vol_type == "bind":
service_config["volumes"].append(f"{source}:{target}")
service_config["volumes"].append(f"{source}:{target}{readonly}")
else:
service_config["volumes"].append(f"{source}:{target}:{vol_type}")
service_config["volumes"].append(
f"{source}:{target}:{vol_type}{readonly}"
)
# Sort volumes so parent paths come before child paths
if service_config.get("volumes"):
@@ -792,8 +795,10 @@ async def prepare_manifest_instance(
from src.models import ToolDefinitionManifest
tool_type = await session.get(ToolType, instance.tool_type_id)
manifest_def = await session.get(ToolDefinitionManifest, tool_type.manifest_id)
if not tool_type:
raise RuntimeError(f"Tool type not found for instance {instance.id}")
manifest_def = await session.get(ToolDefinitionManifest, tool_type.manifest_id)
if not manifest_def:
raise RuntimeError(f"Manifest not found for tool type {tool_type.id}")