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(
|
return self._resolve_plan(
|
||||||
spec,
|
spec,
|
||||||
|
slug=slug,
|
||||||
|
resolved_env=resolved_env,
|
||||||
instance_name=instance_name, # FIXME: move to agent provision plan
|
instance_name=instance_name, # FIXME: move to agent provision plan
|
||||||
agent_image=agent_image, # 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
|
prompt_file=prompt_file, # FIXME: move to agent provision plan
|
||||||
@@ -331,7 +333,7 @@ class BottleBackend(ABC, Generic[PlanT, CleanupT]):
|
|||||||
egress_plan=egress_plan,
|
egress_plan=egress_plan,
|
||||||
supervise_plan=supervise_plan,
|
supervise_plan=supervise_plan,
|
||||||
git_gate_plan=git_gate_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]:
|
def _build_guest_env(self, resolved_env: ResolvedEnv) -> dict[str, str]:
|
||||||
@@ -395,6 +397,9 @@ class BottleBackend(ABC, Generic[PlanT, CleanupT]):
|
|||||||
@abstractmethod
|
@abstractmethod
|
||||||
def _resolve_plan(self,
|
def _resolve_plan(self,
|
||||||
spec: BottleSpec,
|
spec: BottleSpec,
|
||||||
|
*,
|
||||||
|
slug: str,
|
||||||
|
resolved_env: ResolvedEnv,
|
||||||
instance_name: str,
|
instance_name: str,
|
||||||
agent_image: str,
|
agent_image: str,
|
||||||
prompt_file: Path,
|
prompt_file: Path,
|
||||||
|
|||||||
@@ -48,8 +48,36 @@ class DockerBottleBackend(BottleBackend["DockerBottlePlan", "DockerBottleCleanup
|
|||||||
launch."""
|
launch."""
|
||||||
return shutil.which("docker") is not None
|
return shutil.which("docker") is not None
|
||||||
|
|
||||||
def _resolve_plan(self, spec: BottleSpec, *, stage_dir: Path) -> DockerBottlePlan:
|
def _resolve_plan(
|
||||||
return _resolve_plan.resolve_plan(spec, stage_dir=stage_dir)
|
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
|
@contextmanager
|
||||||
def launch(self, plan: DockerBottlePlan) -> Generator[DockerBottle, None, None]:
|
def launch(self, plan: DockerBottlePlan) -> Generator[DockerBottle, None, None]:
|
||||||
|
|||||||
@@ -42,9 +42,35 @@ class SmolmachinesBottleBackend(
|
|||||||
return _smolvm.is_available()
|
return _smolvm.is_available()
|
||||||
|
|
||||||
def _resolve_plan(
|
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:
|
) -> 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
|
@contextmanager
|
||||||
def launch(
|
def launch(
|
||||||
|
|||||||
Reference in New Issue
Block a user