refactor: add neutral mcp tool wrapper events
This commit is contained in:
@@ -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}")
|
||||
|
||||
@@ -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",
|
||||
]
|
||||
Reference in New Issue
Block a user