fix(cloud): recover box runtime without unscoped skill reload

This commit is contained in:
dadachann
2026-07-26 14:25:49 +08:00
parent d71bd571b1
commit 602e10649b
2 changed files with 23 additions and 1 deletions
+1 -1
View File
@@ -227,7 +227,7 @@ class BoxService:
self._connector_error = '' self._connector_error = ''
skill_mgr = getattr(self.ap, 'skill_mgr', None) skill_mgr = getattr(self.ap, 'skill_mgr', None)
reload_skills = getattr(skill_mgr, 'reload_skills', None) reload_skills = getattr(skill_mgr, 'reload_skills', None)
if callable(reload_skills): if callable(reload_skills) and not self._cloud_managed:
await reload_skills() await reload_skills()
self.ap.logger.info('Box runtime reconnected, sandbox features restored.') self.ap.logger.info('Box runtime reconnected, sandbox features restored.')
return return
+22
View File
@@ -568,6 +568,28 @@ async def test_box_service_reconnect_restores_workspace_and_runs_cleanup(
assert service.available is True assert service.available is True
@pytest.mark.asyncio
async def test_cloud_box_service_reconnect_does_not_reload_unscoped_skills(
monkeypatch: pytest.MonkeyPatch,
):
app = make_app(Mock())
app.skill_mgr = SimpleNamespace(reload_skills=AsyncMock())
service = BoxService(app, client=Mock(spec=BoxRuntimeClient))
service._cloud_managed = True
connector = Mock()
connector.reconnect = AsyncMock()
service._ensure_default_workspace = Mock()
service._verify_cloud_runtime = AsyncMock()
monkeypatch.setattr('langbot.pkg.box.service.asyncio.sleep', AsyncMock())
await service._reconnect_loop(connector)
connector.reconnect.assert_awaited_once()
service._verify_cloud_runtime.assert_awaited_once()
app.skill_mgr.reload_skills.assert_not_awaited()
assert service.available is True
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_box_runtime_reuses_request_session(): async def test_box_runtime_reuses_request_session():
logger = Mock() logger = Mock()