fix: thread slug + resolved_env from prepare to each backend's _resolve_plan
BottleBackend.prepare computed slug and resolved_env but never passed them to _resolve_plan. The concrete docker/smolmachines _resolve_plan methods still had the old (spec, *, stage_dir) signature too, so prepare's kwargs blew up with "unexpected keyword argument 'instance_name'" the moment cli.py start was invoked. Update the abstract _resolve_plan signature and both backend implementations to accept the full kwarg set prepare passes, and forward to resolve_plan.resolve_plan() with everything.
This commit is contained in:
@@ -323,6 +323,8 @@ class BottleBackend(ABC, Generic[PlanT, CleanupT]):
|
||||
|
||||
return self._resolve_plan(
|
||||
spec,
|
||||
slug=slug,
|
||||
resolved_env=resolved_env,
|
||||
instance_name=instance_name, # FIXME: move to agent provision plan
|
||||
agent_image=agent_image, # FIXME: move to agent provision plan
|
||||
prompt_file=prompt_file, # FIXME: move to agent provision plan
|
||||
@@ -331,7 +333,7 @@ class BottleBackend(ABC, Generic[PlanT, CleanupT]):
|
||||
egress_plan=egress_plan,
|
||||
supervise_plan=supervise_plan,
|
||||
git_gate_plan=git_gate_plan,
|
||||
stage_dir=stage_dir
|
||||
stage_dir=stage_dir,
|
||||
)
|
||||
|
||||
def _build_guest_env(self, resolved_env: ResolvedEnv) -> dict[str, str]:
|
||||
@@ -395,6 +397,9 @@ class BottleBackend(ABC, Generic[PlanT, CleanupT]):
|
||||
@abstractmethod
|
||||
def _resolve_plan(self,
|
||||
spec: BottleSpec,
|
||||
*,
|
||||
slug: str,
|
||||
resolved_env: ResolvedEnv,
|
||||
instance_name: str,
|
||||
agent_image: str,
|
||||
prompt_file: Path,
|
||||
|
||||
@@ -48,8 +48,36 @@ class DockerBottleBackend(BottleBackend["DockerBottlePlan", "DockerBottleCleanup
|
||||
launch."""
|
||||
return shutil.which("docker") is not None
|
||||
|
||||
def _resolve_plan(self, spec: BottleSpec, *, stage_dir: Path) -> DockerBottlePlan:
|
||||
return _resolve_plan.resolve_plan(spec, stage_dir=stage_dir)
|
||||
def _resolve_plan(
|
||||
self,
|
||||
spec: BottleSpec,
|
||||
*,
|
||||
slug: str,
|
||||
resolved_env,
|
||||
instance_name: str,
|
||||
agent_image: str,
|
||||
prompt_file: Path,
|
||||
agent_provision_plan,
|
||||
agent_dockerfile_path: str,
|
||||
egress_plan,
|
||||
git_gate_plan,
|
||||
supervise_plan,
|
||||
stage_dir: Path,
|
||||
) -> DockerBottlePlan:
|
||||
return _resolve_plan.resolve_plan(
|
||||
spec,
|
||||
slug=slug,
|
||||
resolved_env=resolved_env,
|
||||
instance_name=instance_name,
|
||||
agent_image=agent_image,
|
||||
agent_dockerfile_path=agent_dockerfile_path,
|
||||
prompt_file=prompt_file,
|
||||
agent_provision_plan=agent_provision_plan,
|
||||
egress_plan=egress_plan,
|
||||
supervise_plan=supervise_plan,
|
||||
git_gate_plan=git_gate_plan,
|
||||
stage_dir=stage_dir,
|
||||
)
|
||||
|
||||
@contextmanager
|
||||
def launch(self, plan: DockerBottlePlan) -> Generator[DockerBottle, None, None]:
|
||||
|
||||
@@ -42,9 +42,35 @@ class SmolmachinesBottleBackend(
|
||||
return _smolvm.is_available()
|
||||
|
||||
def _resolve_plan(
|
||||
self, spec: BottleSpec, *, stage_dir: Path
|
||||
self,
|
||||
spec: BottleSpec,
|
||||
*,
|
||||
slug: str,
|
||||
resolved_env,
|
||||
instance_name: str,
|
||||
agent_image: str,
|
||||
prompt_file: Path,
|
||||
agent_provision_plan,
|
||||
agent_dockerfile_path: str,
|
||||
egress_plan,
|
||||
git_gate_plan,
|
||||
supervise_plan,
|
||||
stage_dir: Path,
|
||||
) -> SmolmachinesBottlePlan:
|
||||
return _resolve_plan.resolve_plan(spec, stage_dir=stage_dir)
|
||||
return _resolve_plan.resolve_plan(
|
||||
spec,
|
||||
slug=slug,
|
||||
resolved_env=resolved_env,
|
||||
instance_name=instance_name,
|
||||
agent_image=agent_image,
|
||||
agent_dockerfile_path=agent_dockerfile_path,
|
||||
prompt_file=prompt_file,
|
||||
agent_provision_plan=agent_provision_plan,
|
||||
egress_plan=egress_plan,
|
||||
supervise_plan=supervise_plan,
|
||||
git_gate_plan=git_gate_plan,
|
||||
stage_dir=stage_dir,
|
||||
)
|
||||
|
||||
@contextmanager
|
||||
def launch(
|
||||
|
||||
Reference in New Issue
Block a user