refactor: add neutral mcp tool wrapper events

This commit is contained in:
lda
2026-06-08 09:12:21 +07:00 Verified
parent 0f465942df
commit 1d46752bf8
10 changed files with 860 additions and 16 deletions
+13
View File
@@ -65,6 +65,10 @@ __all__ = [
"model_from_schema",
"neutral_auth_from_mcp",
"registry_entry_to_connection_config",
"tool_call_completed_event",
"tool_call_started_event",
"ToolWrapperEvent",
"ToolWrapperEventSink",
"workflow_mcp_source_to_connection_config",
]
@@ -109,4 +113,13 @@ def __getattr__(name: str) -> object:
from . import schema_models
return schema_models.model_from_schema
if name in {
"ToolWrapperEvent",
"ToolWrapperEventSink",
"tool_call_completed_event",
"tool_call_started_event",
}:
from . import tool_events
return getattr(tool_events, name)
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
+55
View File
@@ -0,0 +1,55 @@
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass, field
from typing import Any
@dataclass(frozen=True, slots=True)
class ToolWrapperEvent:
"""Neutral tool-wrapper event before broker-specific event projection."""
kind: str
connection_id: str
capability_id: str
payload: dict[str, Any] = field(default_factory=dict)
ToolWrapperEventSink = Callable[[ToolWrapperEvent], None]
def tool_call_started_event(
*,
connection_id: str,
capability_id: str,
input_payload: dict[str, Any],
) -> ToolWrapperEvent:
return ToolWrapperEvent(
kind="tool_call_started",
connection_id=connection_id,
capability_id=capability_id,
payload={"input": input_payload},
)
def tool_call_completed_event(
*,
connection_id: str,
capability_id: str,
outcome: str,
meta: dict[str, Any],
) -> ToolWrapperEvent:
return ToolWrapperEvent(
kind="tool_call_completed",
connection_id=connection_id,
capability_id=capability_id,
payload={"outcome": outcome, "meta": meta},
)
__all__ = [
"ToolWrapperEvent",
"ToolWrapperEventSink",
"tool_call_completed_event",
"tool_call_started_event",
]