feat: apply source registry changes

This commit is contained in:
lda
2026-06-05 16:07:57 +07:00 Verified
parent b632073e97
commit c12609b112
17 changed files with 408 additions and 10 deletions
+2
View File
@@ -26,6 +26,7 @@ from .service import WorkflowApi
from .source_admin import WorkflowSourceAdminApi
from .source_registry_admin import (
WorkflowSourceRegistryApi,
WorkflowSourceRegistryApplyProvider,
WorkflowSourceRegistryMutationProvider,
WorkflowSourceRegistryProvider,
)
@@ -108,6 +109,7 @@ __all__ = [
"WorkflowSourceAdminApi",
"WorkflowSourceAdminSurface",
"WorkflowSourceRegistryApi",
"WorkflowSourceRegistryApplyProvider",
"WorkflowSourceRegistryMutationProvider",
"WorkflowSourceRegistryProvider",
"WorkflowSourceRegistrySurface",
+14
View File
@@ -33,6 +33,13 @@ class WorkflowSourceRegistryMutationProvider(Protocol):
def remove_registry_entry(self, source_id: str) -> Mapping[str, Any] | object: ...
@runtime_checkable
class WorkflowSourceRegistryApplyProvider(Protocol):
"""Applies desired registry state to the currently running server."""
def apply_registry_changes(self) -> Mapping[str, Any] | object: ...
class WorkflowSourceRegistryApi:
"""Protocol-neutral desired source registry operations.
@@ -47,9 +54,11 @@ class WorkflowSourceRegistryApi:
*,
provider: WorkflowSourceRegistryProvider,
mutation_provider: WorkflowSourceRegistryMutationProvider | None = None,
apply_provider: WorkflowSourceRegistryApplyProvider | None = None,
) -> None:
self._provider = provider
self._mutation_provider = mutation_provider
self._apply_provider = apply_provider
def _is_shadowed(self, source_id: str) -> bool:
return source_id in self._provider.config_source_ids()
@@ -165,6 +174,11 @@ class WorkflowSourceRegistryApi:
"source_id": str(result.get("source_id", source_id)),
}
async def apply_registry_changes(self) -> dict[str, Any]:
if self._apply_provider is None:
raise TypeError("apply_registry_changes requires an apply provider")
return _payload(self._apply_provider.apply_registry_changes())
def _payload(value: Mapping[str, Any] | object) -> dict[str, Any]:
"""Normalize provider objects without depending on MCP registry types."""
+2
View File
@@ -273,6 +273,8 @@ class WorkflowSourceRegistrySurface(Protocol):
source_id: str,
) -> dict[str, Any]: ...
async def apply_registry_changes(self) -> dict[str, Any]: ...
__all__ = [
"WorkflowAdminSurface",