fix: fall back to provider's bundled Dockerfile when manifest doesn't override

BottleBackend.prepare was calling resolve_manifest_dockerfile("", spec)
for every bottle where the manifest did not set agent_provider.dockerfile.
That resolves an empty string against user_cwd, returning the cwd
itself — which docker then tried to read as a Dockerfile, giving
"is a directory" errors during image build.

When the manifest doesn't override, use the provider plugin's bundled
Dockerfile path (next to its agent_provider.py module) — mirroring
the pre-refactor behavior.
This commit is contained in:
2026-06-08 17:47:34 +00:00
committed by didericis (codex)
parent bb8c2291bd
commit 39e2e079c5
+9 -1
View File
@@ -298,7 +298,15 @@ class BottleBackend(ABC, Generic[PlanT, CleanupT]):
slug = mint_slug(spec)
write_launch_metadata(slug, spec, compose_project="", backend="smolmachines")
agent_dockerfile_path = resolve_manifest_dockerfile(manfiest_agent_provider.dockerfile, spec)
# Manifest may override the Dockerfile per-bottle; otherwise fall
# back to the provider plugin's bundled Dockerfile (next to its
# agent_provider.py module).
if manfiest_agent_provider.dockerfile:
agent_dockerfile_path = resolve_manifest_dockerfile(
manfiest_agent_provider.dockerfile, spec,
)
else:
agent_dockerfile_path = str(agent_provider.dockerfile)
instance_name = f"bot-bottle-{slug}"
agent_dir, prompt_file = prepare_agent_state_dir(slug, spec)