forked from Zakaria/hermes-agent
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
"""Remote 'node host' primitive for the google_meet plugin.
|
|
|
|
Lets the Meet bot (Playwright + Chrome) run on a different machine than
|
|
the hermes-agent gateway. The gateway speaks a small JSON-over-WebSocket
|
|
RPC protocol to the remote node; the node wraps the existing
|
|
``plugins.google_meet.process_manager`` API.
|
|
|
|
Topology
|
|
--------
|
|
gateway (Linux) ── ws://mac.local:18789 ──▶ node server (Mac)
|
|
└─ process_manager
|
|
└─ meet_bot (Playwright)
|
|
|
|
Why: Google sign-in + Chrome profile live on the user's laptop. Running
|
|
the bot there reuses that profile without shipping credentials to the
|
|
server.
|
|
|
|
Public surface
|
|
--------------
|
|
NodeClient — gateway-side RPC client (short-lived sync WS per call)
|
|
NodeServer — long-running server that hosts the bot
|
|
NodeRegistry — local JSON registry of approved nodes (name → url+token)
|
|
protocol — message envelope helpers (make_request, encode, decode, ...)
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from plugins.google_meet.node import protocol
|
|
from plugins.google_meet.node.client import NodeClient
|
|
from plugins.google_meet.node.protocol import (
|
|
VALID_REQUEST_TYPES,
|
|
decode,
|
|
encode,
|
|
make_error,
|
|
make_request,
|
|
make_response,
|
|
validate_request,
|
|
)
|
|
from plugins.google_meet.node.registry import NodeRegistry
|
|
from plugins.google_meet.node.server import NodeServer
|
|
|
|
__all__ = [
|
|
"NodeClient",
|
|
"NodeServer",
|
|
"NodeRegistry",
|
|
"protocol",
|
|
"make_request",
|
|
"make_response",
|
|
"make_error",
|
|
"encode",
|
|
"decode",
|
|
"validate_request",
|
|
"VALID_REQUEST_TYPES",
|
|
]
|