feat(sdk): add host integration extension points

This commit is contained in:
chengyongru
2026-07-28 15:30:28 +08:00
committed by Xubin Ren
parent 12f828ea3d
commit c050955ae3
13 changed files with 359 additions and 7 deletions
+36
View File
@@ -27,6 +27,7 @@ class RuntimeEventContext:
chat_id: str
session_key: str
metadata: dict[str, Any] = field(default_factory=dict)
attributes: dict[str, Any] = field(default_factory=dict)
@dataclass(frozen=True)
@@ -54,6 +55,15 @@ class TurnCompleted:
runtime: Any | None = None
@dataclass(frozen=True)
class SessionTurnPersisted:
"""A completed turn has been written to local session storage."""
context: RuntimeEventContext
turn_id: str
sender_id: str
@dataclass(frozen=True)
class GoalStateChanged:
"""A session's sustained-goal state changed."""
@@ -72,6 +82,7 @@ class RuntimeModelChanged:
RuntimeEvent = (
SessionTurnStarted
| SessionTurnPersisted
| TurnRunStatusChanged
| TurnCompleted
| GoalStateChanged
@@ -79,6 +90,7 @@ RuntimeEvent = (
)
RuntimeEventType = (
type[SessionTurnStarted]
| type[SessionTurnPersisted]
| type[TurnRunStatusChanged]
| type[TurnCompleted]
| type[GoalStateChanged]
@@ -152,12 +164,14 @@ class RuntimeEventPublisher:
chat_id: str,
session_key: str,
metadata: dict[str, Any] | None,
attributes: dict[str, Any] | None = None,
) -> RuntimeEventContext:
return RuntimeEventContext(
channel=channel,
chat_id=chat_id,
session_key=session_key,
metadata=dict(metadata or {}),
attributes=dict(attributes or {}),
)
def record_turn_runtime(self, session_key: str, runtime: Any) -> None:
@@ -208,6 +222,28 @@ class RuntimeEventPublisher:
)
)
async def session_turn_persisted(
self,
msg: InboundMessage,
session_key: str,
*,
turn_id: str,
attributes: dict[str, Any] | None = None,
) -> None:
await self.bus.publish(
SessionTurnPersisted(
context=self._context(
channel=msg.channel,
chat_id=msg.chat_id,
session_key=session_key,
metadata=msg.metadata,
attributes=attributes,
),
turn_id=turn_id,
sender_id=msg.sender_id,
)
)
async def turn_completed(
self,
*,