修改了nanobot,往Hermes agent的风格走,进度1/3
This commit is contained in:
@ -0,0 +1,5 @@
|
||||
"""Event contracts and dispatch helpers."""
|
||||
|
||||
from .message_bus import InboundMessage, MessageBus, OutboundMessage
|
||||
|
||||
__all__ = ["InboundMessage", "MessageBus", "OutboundMessage"]
|
||||
72
app-instance/backend/beaver/foundation/events/message_bus.py
Normal file
72
app-instance/backend/beaver/foundation/events/message_bus.py
Normal file
@ -0,0 +1,72 @@
|
||||
"""Minimal message bus for gateway-style host integration."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class InboundMessage:
|
||||
"""A minimal inbound message accepted by the gateway bridge."""
|
||||
|
||||
channel: str
|
||||
content: str
|
||||
session_id: str | None = None
|
||||
user_id: str | None = None
|
||||
title: str | None = None
|
||||
execution_context: str | None = None
|
||||
model: str | None = None
|
||||
provider_name: str | None = None
|
||||
embedding_model: str | None = None
|
||||
message_id: str = field(default_factory=lambda: str(uuid4()))
|
||||
metadata: dict[str, Any] = field(default_factory=dict)
|
||||
timestamp: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class OutboundMessage:
|
||||
"""A minimal outbound message produced by the gateway bridge."""
|
||||
|
||||
channel: str
|
||||
content: str
|
||||
session_id: str | None
|
||||
finish_reason: str
|
||||
message_id: str = field(default_factory=lambda: str(uuid4()))
|
||||
run_id: str | None = None
|
||||
provider_name: str | None = None
|
||||
model: str | None = None
|
||||
usage: dict[str, Any] = field(default_factory=dict)
|
||||
metadata: dict[str, Any] = field(default_factory=dict)
|
||||
timestamp: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class MessageBus:
|
||||
"""Minimal async message bus with inbound/outbound queues."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.inbound: asyncio.Queue[InboundMessage] = asyncio.Queue()
|
||||
self.outbound: asyncio.Queue[OutboundMessage] = asyncio.Queue()
|
||||
|
||||
async def publish_inbound(self, message: InboundMessage) -> None:
|
||||
await self.inbound.put(message)
|
||||
|
||||
async def consume_inbound(self) -> InboundMessage:
|
||||
return await self.inbound.get()
|
||||
|
||||
async def publish_outbound(self, message: OutboundMessage) -> None:
|
||||
await self.outbound.put(message)
|
||||
|
||||
async def consume_outbound(self) -> OutboundMessage:
|
||||
return await self.outbound.get()
|
||||
|
||||
@property
|
||||
def inbound_size(self) -> int:
|
||||
return self.inbound.qsize()
|
||||
|
||||
@property
|
||||
def outbound_size(self) -> int:
|
||||
return self.outbound.qsize()
|
||||
Reference in New Issue
Block a user