Merge branch 'fix/compose-readonly-mounts' into dev
This commit is contained in:
+1
-1
@@ -16,7 +16,7 @@ dir: .
|
|||||||
Trust boundary: index routes, map orients, source decides.
|
Trust boundary: index routes, map orients, source decides.
|
||||||
|
|
||||||
## role
|
## role
|
||||||
Infrastructure and deployment configuration for a self-hosted project management platform with OAuth2 authentication, providing Docker orchestration, environment templates, and development tooling.
|
Infrastructure and configuration package for a self-hosted project management platform with containerized deployment, SSO integration, and AI-assisted development workflows.
|
||||||
## parent
|
## parent
|
||||||
-
|
-
|
||||||
## children
|
## children
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
dir: apps
|
dir: apps
|
||||||
|
|
||||||
## role
|
## role
|
||||||
Contains the main deployable application entry points and top-level configuration for the project.
|
Contains the main deployable application entry points and top-level executable modules for the project.
|
||||||
## parent
|
## parent
|
||||||
index: ./.pi-map.index.md
|
index: ./.pi-map.index.md
|
||||||
map: ./.pi-map.md
|
map: ./.pi-map.md
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
dir: apps/api/src
|
dir: apps/api/src
|
||||||
|
|
||||||
## role
|
## role
|
||||||
Core application package for the Headquarter API, providing configuration, database connectivity, structured logging, and FastAPI application initialization.
|
Core application package for the Headquarter API, providing configuration, database connectivity, logging infrastructure, and FastAPI application initialization.
|
||||||
## parent
|
## parent
|
||||||
index: apps/api/.pi-map.index.md
|
index: apps/api/.pi-map.index.md
|
||||||
map: apps/api/.pi-map.md
|
map: apps/api/.pi-map.md
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
dir: apps/api/src/services
|
dir: apps/api/src/services
|
||||||
|
|
||||||
## role
|
## role
|
||||||
Provides a Python package namespace for organizing service-layer modules in the API application.
|
Marks the services directory as a Python package for business logic layer components.
|
||||||
## parent
|
## parent
|
||||||
index: apps/api/src/.pi-map.index.md
|
index: apps/api/src/.pi-map.index.md
|
||||||
map: apps/api/src/.pi-map.md
|
map: apps/api/src/.pi-map.md
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
dir: apps/api/src/services/tool
|
dir: apps/api/src/services/tool
|
||||||
|
|
||||||
## role
|
## role
|
||||||
Provides Docker container lifecycle management for tool instances with git repository integration and configuration validation.
|
Provides backend infrastructure for provisioning and managing isolated development tool instances with their dependencies and network access.
|
||||||
## parent
|
## parent
|
||||||
index: apps/api/src/services/.pi-map.index.md
|
index: apps/api/src/services/.pi-map.index.md
|
||||||
map: apps/api/src/services/.pi-map.md
|
map: apps/api/src/services/.pi-map.md
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -583,10 +583,13 @@ def modify_compose_file(
|
|||||||
source = vol.get("source", "")
|
source = vol.get("source", "")
|
||||||
target = expand_container_path(vol.get("target", ""), home_dir)
|
target = expand_container_path(vol.get("target", ""), home_dir)
|
||||||
vol_type = vol.get("type", "bind")
|
vol_type = vol.get("type", "bind")
|
||||||
|
readonly = ":ro" if vol.get("readonly") else ""
|
||||||
if vol_type == "bind":
|
if vol_type == "bind":
|
||||||
service_config["volumes"].append(f"{source}:{target}")
|
service_config["volumes"].append(f"{source}:{target}{readonly}")
|
||||||
else:
|
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
|
# Sort volumes so parent paths come before child paths
|
||||||
if service_config.get("volumes"):
|
if service_config.get("volumes"):
|
||||||
@@ -792,8 +795,10 @@ async def prepare_manifest_instance(
|
|||||||
from src.models import ToolDefinitionManifest
|
from src.models import ToolDefinitionManifest
|
||||||
|
|
||||||
tool_type = await session.get(ToolType, instance.tool_type_id)
|
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:
|
if not manifest_def:
|
||||||
raise RuntimeError(f"Manifest not found for tool type {tool_type.id}")
|
raise RuntimeError(f"Manifest not found for tool type {tool_type.id}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user