feat(plugins): isolate device integrations

This commit is contained in:
DCCONSTRUCTIONS
2026-07-17 19:29:32 +03:00
parent f9ffb7bd1c
commit 24a47318f2
122 changed files with 3304 additions and 1892 deletions
+18 -18
View File
@@ -3,27 +3,15 @@ from __future__ import annotations
import asyncio
import json
import threading
from collections.abc import Mapping
from pathlib import Path
from typing import Any
import pytest
from missioncore_plugin_sdk.v0alpha2 import RuntimeActionInvocation
from pydantic import ValidationError
import k1link.web.device_plugin_composition as plugin_composition
from k1link.web.device_plugin_composition import (
DevicePluginCompositionError,
InstalledDevicePluginEnvironment,
load_installed_device_plugins,
)
from k1link.web.plugin_catalog import DevicePluginCatalog
from k1link.web.plugin_runtime import (
DevicePluginDispatcher,
DevicePluginRuntimeContribution,
PluginActionNotFoundError,
PluginNotFoundError,
)
from k1link.web.xgrids_k1_facade import (
from k1link.device_plugins.xgrids_k1.facade import (
ACTION_DISCOVERY_SCAN,
ACTION_NETWORK_PROVISION,
ACTION_STREAM_START_LIVE,
@@ -36,6 +24,18 @@ from k1link.web.xgrids_k1_facade import (
ViewerSettingsRequest,
XgridsK1PluginFacade,
)
from k1link.web.device_plugin_composition import (
DevicePluginCompositionError,
InstalledDevicePluginEnvironment,
load_installed_device_plugins,
)
from k1link.web.plugin_catalog import DevicePluginCatalog
from k1link.web.plugin_runtime import (
DevicePluginDispatcher,
DevicePluginRuntimeContribution,
PluginActionNotFoundError,
PluginNotFoundError,
)
class FakeXgridsService:
@@ -139,11 +139,11 @@ def test_composition_loads_and_dispatches_two_synthetic_plugins(
async def invoke(
self,
action_id: str,
payload: Mapping[str, Any],
invocation: RuntimeActionInvocation,
) -> dict[str, Any]:
assert action_id == "state.read"
assert payload == {}
assert invocation.plugin_id == self.plugin_id
assert invocation.action_id == "state.read"
assert invocation.parameters == {}
return {"plugin_id": self.plugin_id}
closed: list[str] = []