9535122c99
Plane: paginated issue/comment/state/label/member access, one client per terminal identity. Transports: local (setsid-detached runner) and warpgate-ssh (win10-ps.sh / win10-put.sh relay, schtasks launch, taskkill on timeout). Executors share a runner shape (prompt.md, exit.txt marker) with codex, claude-code and shell adapters for last message and thread id.
25 lines
972 B
Python
25 lines
972 B
Python
"""Transports: how agentd reaches a terminal's machine (files, detached launch, kill).
|
|
|
|
Interface (duck-typed, see docs/executor-contract.md):
|
|
os, join(*parts), quote(s), default_run_root()
|
|
mkdir(path, clean=False), write_text(path, text), read_text(path) -> str|None,
|
|
grep_first(path, needle) -> str|None, tail(path, n) -> str
|
|
runner(run_dir, cwd, command, stdout_name) -> (script_name, script_text)
|
|
launch(task, script_path, run_dir), kill(task, run_dir), forget(task)
|
|
process_count(name) -> int|None (None = unreachable)"""
|
|
|
|
|
|
class TransportError(Exception):
|
|
pass
|
|
|
|
|
|
def make_transport(cfg, terminal):
|
|
kind = cfg.terminals[terminal]["transport"]
|
|
if kind == "local":
|
|
from .local import LocalTransport
|
|
return LocalTransport(cfg, terminal)
|
|
if kind == "warpgate-ssh":
|
|
from .warpgate_ssh import WarpgateSshTransport
|
|
return WarpgateSshTransport(cfg, terminal)
|
|
raise TransportError("unknown transport %s" % kind)
|