Skip to content

Commit 045f09b

Browse files
committed
fix(sandbox): preserve default marker on upsert
1 parent af5c015 commit 045f09b

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

astrbot/core/computer/sandbox_registry.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def upsert_sandbox(
6868
owner_user_id: str | None,
6969
owner_session_id: str | None,
7070
connect_info: dict[str, Any],
71-
is_default: bool = False,
71+
is_default: bool | object = _UNSET,
7272
status: str | object = _UNSET,
7373
idle_timeout: int | float | None | object = _UNSET,
7474
expires_at: float | None | object = _UNSET,
@@ -89,7 +89,6 @@ def upsert_sandbox(
8989
"provider": provider,
9090
"managed": managed,
9191
"created_by_astrbot": created_by_astrbot,
92-
"is_default": is_default,
9392
"owner_user_id": owner_user_id,
9493
"owner_session_id": owner_session_id,
9594
"connect_info": deepcopy(connect_info),
@@ -104,6 +103,7 @@ def upsert_sandbox(
104103
"expires_at": None,
105104
"retention_policy": "temporary",
106105
"status": "running",
106+
"is_default": False,
107107
"labels": {},
108108
"notes": None,
109109
}
@@ -116,6 +116,7 @@ def upsert_sandbox(
116116
"expires_at": expires_at,
117117
"retention_policy": retention_policy,
118118
"status": status,
119+
"is_default": is_default,
119120
"labels": deepcopy(labels) if labels is not _UNSET else _UNSET,
120121
"notes": notes,
121122
}
@@ -127,7 +128,9 @@ def upsert_sandbox(
127128
record[field_name] = value
128129
record = SandboxRecord.from_dict(record).to_dict()
129130
self._payload["sandboxes"][sandbox_id] = record
130-
if is_default or (managed and self._payload["default_sandbox_id"] is None):
131+
if is_default is True or (
132+
managed and self._payload["default_sandbox_id"] is None
133+
):
131134
self.set_default_sandbox_id(sandbox_id)
132135
return deepcopy(record)
133136

tests/unit/test_sandbox_registry.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,14 @@ def test_sandbox_registry_upsert_preserves_runtime_fields_when_omitted(tmp_path)
172172
assert record["last_used_at"] == 100
173173
assert record["idle_timeout"] == 30
174174
assert record["status"] == "unknown"
175+
176+
177+
def test_sandbox_registry_upsert_preserves_default_marker_when_omitted(tmp_path):
178+
registry = SandboxRegistry(storage_path=tmp_path / "sandbox_registry.json")
179+
_upsert(registry, "sb-1", is_default=True)
180+
181+
_upsert(registry, "sb-1", sandbox_name="renamed")
182+
183+
record = registry.get_sandbox("sb-1")
184+
assert registry.default_sandbox_id == "sb-1"
185+
assert record["is_default"] is True

0 commit comments

Comments
 (0)