b4fbd6fe9f
Deploy Site / deploy-vercel (push) Has been skipped
Deploy Site / deploy-docs (push) Has been skipped
Build Skills Index / build-index (push) Has been skipped
Build Skills Index / trigger-deploy (push) Waiting to run
CI / Deny unrelated histories (push) Has been skipped
CI / CI timing report (push) Blocked by required conditions
CI / Detect affected areas (push) Successful in 27m35s
CI / OSV scan (push) Failing after 4s
CI / Build&Test Docker image (push) Successful in 9s
CI / Supply-chain scan (push) Has been skipped
CI / Lint Docker scripts (push) Failing after 5m13s
CI / Check contributors (push) Failing after 12m8s
CI / Docs Site (push) Failing after 12m8s
CI / TypeScript (push) Failing after 12m8s
CI / Python lints (push) Failing after 12m9s
CI / Python tests (push) Failing after 12m9s
CI / Check uv.lock (push) Failing after 23m22s
CI / All required checks pass (push) Waiting to run
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",
|
|
]
|