refactor: move mcp catalog dtos to wf_sources_mcp
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from wf_sources_mcp.catalog import (
|
||||
CatalogNodeEntry,
|
||||
CatalogPromptEntry,
|
||||
CatalogResourceEntry,
|
||||
CatalogSnapshot,
|
||||
DiscoveredPrompt,
|
||||
DiscoveredResource,
|
||||
DiscoveredTool,
|
||||
dump_catalog_snapshot,
|
||||
)
|
||||
|
||||
|
||||
def test_discovered_tool_default_outcome_and_metadata() -> None:
|
||||
tool = DiscoveredTool(
|
||||
name="echo",
|
||||
title=None,
|
||||
description="Echo input",
|
||||
input_schema={"type": "object"},
|
||||
output_schema={"type": "object"},
|
||||
)
|
||||
|
||||
assert tool.outcomes == ("ok",)
|
||||
assert tool.metadata == {}
|
||||
|
||||
|
||||
def test_discovered_resource_and_prompt_keep_structural_fields() -> None:
|
||||
resource = DiscoveredResource(
|
||||
uri="docs://guide",
|
||||
name="guide",
|
||||
title="Guide",
|
||||
description="Read me",
|
||||
mime_type="text/markdown",
|
||||
)
|
||||
prompt = DiscoveredPrompt(
|
||||
name="summarize",
|
||||
title=None,
|
||||
description="Summarize",
|
||||
arguments=[{"name": "topic"}],
|
||||
)
|
||||
|
||||
assert resource.uri == "docs://guide"
|
||||
assert resource.mime_type == "text/markdown"
|
||||
assert prompt.arguments == [{"name": "topic"}]
|
||||
|
||||
|
||||
def test_catalog_snapshot_staleness_and_dump_shape() -> None:
|
||||
snapshot = CatalogSnapshot(
|
||||
connection_id="demo.default",
|
||||
fetched_at_epoch_ms=1_000,
|
||||
max_age_seconds=2,
|
||||
nodes=[
|
||||
CatalogNodeEntry(
|
||||
qualified_name="demo.default.echo",
|
||||
connection_id="demo.default",
|
||||
local_name="echo",
|
||||
title=None,
|
||||
description="Echo",
|
||||
outcomes=("ok",),
|
||||
input_schema={"type": "object"},
|
||||
output_schema={"type": "object"},
|
||||
)
|
||||
],
|
||||
resources=[
|
||||
CatalogResourceEntry(
|
||||
qualified_name="demo.default.guide",
|
||||
connection_id="demo.default",
|
||||
local_name="guide",
|
||||
title=None,
|
||||
uri="docs://guide",
|
||||
description="Guide",
|
||||
)
|
||||
],
|
||||
prompts=[
|
||||
CatalogPromptEntry(
|
||||
qualified_name="demo.default.summarize",
|
||||
connection_id="demo.default",
|
||||
local_name="summarize",
|
||||
title=None,
|
||||
description="Summarize",
|
||||
)
|
||||
],
|
||||
metadata={"source": "test"},
|
||||
)
|
||||
|
||||
assert snapshot.is_stale(3_001) is True
|
||||
dumped = dump_catalog_snapshot(snapshot)
|
||||
assert dumped["connection_id"] == "demo.default"
|
||||
assert dumped["nodes"][0]["qualified_name"] == "demo.default.echo"
|
||||
assert dumped["resources"][0]["uri"] == "docs://guide"
|
||||
assert dumped["prompts"][0]["local_name"] == "summarize"
|
||||
assert dumped["metadata"] == {"source": "test"}
|
||||
Reference in New Issue
Block a user