diff --git a/src/inspect_ai/_view/www/dist/assets/index.js b/src/inspect_ai/_view/www/dist/assets/index.js index c5ebb9f1a..acc6d5949 100644 --- a/src/inspect_ai/_view/www/dist/assets/index.js +++ b/src/inspect_ai/_view/www/dist/assets/index.js @@ -63351,9 +63351,14 @@ ${events} config2["model_base_url"] = evaluation.model_base_url; } if (evaluation == null ? void 0 : evaluation.sandbox) { - config2["sandbox"] = evaluation.sandbox[0]; - if (evaluation.sandbox[1]) { - config2["sandbox_config"] = evaluation.sandbox[1]; + if (Array.isArray(evaluation == null ? void 0 : evaluation.sandbox)) { + config2["sandbox"] = evaluation.sandbox[0]; + if (evaluation.sandbox[1]) { + config2["sandbox_config"] = evaluation.sandbox[1]; + } + } else { + config2["sandbox"] = evaluation == null ? void 0 : evaluation.sandbox.type; + config2["sandbox_config"] = evaluation == null ? void 0 : evaluation.sandbox.config; } } const taskColumns = []; diff --git a/src/inspect_ai/_view/www/src/plan/PlanDetailView.tsx b/src/inspect_ai/_view/www/src/plan/PlanDetailView.tsx index f7ea343da..ded9eed00 100644 --- a/src/inspect_ai/_view/www/src/plan/PlanDetailView.tsx +++ b/src/inspect_ai/_view/www/src/plan/PlanDetailView.tsx @@ -80,9 +80,14 @@ export const PlanDetailView: FC = ({ } if (evaluation?.sandbox) { - config["sandbox"] = evaluation.sandbox[0]; - if (evaluation.sandbox[1]) { - config["sandbox_config"] = evaluation.sandbox[1]; + if (Array.isArray(evaluation?.sandbox)) { + config["sandbox"] = evaluation.sandbox[0]; + if (evaluation.sandbox[1]) { + config["sandbox_config"] = evaluation.sandbox[1]; + } + } else { + config["sandbox"] = evaluation?.sandbox.type; + config["sandbox_config"] = evaluation?.sandbox.config; } } diff --git a/src/inspect_ai/log/_log.py b/src/inspect_ai/log/_log.py index 30e48a31a..a63e2e33d 100644 --- a/src/inspect_ai/log/_log.py +++ b/src/inspect_ai/log/_log.py @@ -295,7 +295,7 @@ def migrate_deprecated( # warning will handle this) del values["transcript"] - return values + return migrate_sandbox_spec(values) # allow field model_usage model_config = ConfigDict(protected_namespaces=()) @@ -607,6 +607,23 @@ class EvalSpec(BaseModel): # allow field model_args model_config = ConfigDict(protected_namespaces=()) + @model_validator(mode="before") + @classmethod + def read_sandbox_spec( + cls: Type["EvalSpec"], values: dict[str, Any] + ) -> dict[str, Any]: + return migrate_sandbox_spec(values) + + +def migrate_sandbox_spec(values: dict[str, Any]) -> dict[str, Any]: + if "sandbox" in values: + sandbox = values.get("sandbox") + if isinstance(sandbox, list): + values["sandbox"] = SandboxEnvironmentSpec( + type=sandbox[0], config=sandbox[1] + ) + return values + def eval_error( exception: BaseException,