File size: 1,761 Bytes
176d459
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""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",
]