This commit is contained in:
lda
2026-04-29 23:19:08 +07:00 Verified
parent 2e2ea468c2
commit 6cfdb5dcd5
6 changed files with 79 additions and 68 deletions
+6 -4
View File
@@ -1,9 +1,14 @@
from .adapters import ( from .adapters import (
BackendAdapter, BackendAdapter,
ToolCallResult,
)
from .capabilities import (
CatalogNodeEntry,
CatalogPromptEntry,
CatalogResourceEntry,
DiscoveredPrompt, DiscoveredPrompt,
DiscoveredResource, DiscoveredResource,
DiscoveredTool, DiscoveredTool,
ToolCallResult,
) )
from .catalog import CombinedCatalog from .catalog import CombinedCatalog
from .connections import ConnectionRegistry, parse_connection_id, qualify_node_name from .connections import ConnectionRegistry, parse_connection_id, qualify_node_name
@@ -15,9 +20,6 @@ from .discovery import (
from .events import McpEvent, make_event from .events import McpEvent, make_event
from .models import ( from .models import (
AuthRecord, AuthRecord,
CatalogNodeEntry,
CatalogPromptEntry,
CatalogResourceEntry,
CatalogSnapshot, CatalogSnapshot,
ConnectionConfig, ConnectionConfig,
RawWorkflowPlan, RawWorkflowPlan,
+2 -28
View File
@@ -1,36 +1,10 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Protocol from typing import Any, Protocol
from .capabilities import DiscoveredPrompt, DiscoveredResource, DiscoveredTool
from .models import AuthRecord, ConnectionConfig from .models import AuthRecord, ConnectionConfig
from dataclasses import dataclass, field
@dataclass(slots=True)
class DiscoveredTool:
name: str
description: str | None
input_schema: dict[str, Any]
output_schema: dict[str, Any]
outcomes: tuple[str, ...] = ("ok",)
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class DiscoveredResource:
uri: str
name: str
description: str | None
mime_type: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class DiscoveredPrompt:
name: str
description: str | None
arguments: list[dict[str, Any]] = field(default_factory=list)
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True) @dataclass(slots=True)
+63
View File
@@ -0,0 +1,63 @@
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any
@dataclass(slots=True)
class DiscoveredTool:
name: str
description: str | None
input_schema: dict[str, Any]
output_schema: dict[str, Any]
outcomes: tuple[str, ...] = ("ok",)
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class DiscoveredResource:
uri: str
name: str
description: str | None
mime_type: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class DiscoveredPrompt:
name: str
description: str | None
arguments: list[dict[str, Any]] = field(default_factory=list)
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class CatalogNodeEntry:
qualified_name: str
connection_id: str
local_name: str
description: str | None
outcomes: tuple[str, ...]
input_schema: dict[str, Any]
output_schema: dict[str, Any]
@dataclass(slots=True)
class CatalogResourceEntry:
qualified_name: str
connection_id: str
local_name: str
uri: str
description: str | None
mime_type: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class CatalogPromptEntry:
qualified_name: str
connection_id: str
local_name: str
description: str | None
arguments: list[dict[str, Any]] = field(default_factory=list)
metadata: dict[str, Any] = field(default_factory=dict)
+5 -4
View File
@@ -5,14 +5,15 @@ from typing import Any
from wf_authoring import NodeCatalog, NodeSpec from wf_authoring import NodeCatalog, NodeSpec
from .adapters import DiscoveredPrompt, DiscoveredResource from .capabilities import (
from .connections import qualify_node_name
from .models import (
CatalogNodeEntry, CatalogNodeEntry,
CatalogPromptEntry, CatalogPromptEntry,
CatalogResourceEntry, CatalogResourceEntry,
CatalogSnapshot, DiscoveredPrompt,
DiscoveredResource,
) )
from .connections import qualify_node_name
from .models import CatalogSnapshot
def snapshot_from_specs( def snapshot_from_specs(
+1
View File
@@ -88,6 +88,7 @@ def _tool_result_to_call_result(result: McpCallToolResult) -> ToolCallResult:
meta=result.meta or {}, meta=result.meta or {},
) )
class McpSdkAdapter(BackendAdapter): class McpSdkAdapter(BackendAdapter):
@asynccontextmanager @asynccontextmanager
async def _session( async def _session(
+2 -32
View File
@@ -3,6 +3,8 @@ from __future__ import annotations
from dataclasses import asdict, dataclass, field from dataclasses import asdict, dataclass, field
from typing import Any from typing import Any
from .capabilities import CatalogNodeEntry, CatalogPromptEntry, CatalogResourceEntry
@dataclass(slots=True) @dataclass(slots=True)
class ConnectionConfig: class ConnectionConfig:
@@ -20,38 +22,6 @@ class AuthRecord:
payload: dict[str, Any] = field(default_factory=dict) payload: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class CatalogNodeEntry:
qualified_name: str
connection_id: str
local_name: str
description: str | None
outcomes: tuple[str, ...]
input_schema: dict[str, Any]
output_schema: dict[str, Any]
@dataclass(slots=True)
class CatalogResourceEntry:
qualified_name: str
connection_id: str
local_name: str
uri: str
description: str | None
mime_type: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True)
class CatalogPromptEntry:
qualified_name: str
connection_id: str
local_name: str
description: str | None
arguments: list[dict[str, Any]] = field(default_factory=list)
metadata: dict[str, Any] = field(default_factory=dict)
@dataclass(slots=True) @dataclass(slots=True)
class CatalogSnapshot: class CatalogSnapshot:
connection_id: str connection_id: str