PAD-12: per-terminal transport (direct Tailscale SSH or Warpgate, pre-session fallback, pinned host keys, agent key from Vault), one-call win10 launch and one-call collect, remote call timings, agentd ping

This commit is contained in:
jj.wang
2026-10-22 02:59:37 +00:00
parent 83bc0f243c
commit 5192e04088
23 changed files with 1850 additions and 132 deletions
+6 -5
View File
@@ -2,7 +2,7 @@
resume with `--resume <session_id>`. The JSON result carries `result` (last message) and `session_id`."""
import json
from .base import ExecResult, RunnerExecutor
from .base import ExecResult, RunnerExecutor, parse_exit
def parse_output(text):
@@ -26,13 +26,14 @@ def parse_output(text):
class ClaudeCodeExecutor(RunnerExecutor):
stdout_name = "out.json"
COLLECT = [("read", "exit.txt"), ("read", "out.json"), ("tail", "stderr.txt", 5)]
def collect(self, handle):
t, d = self.transport, handle["run_dir"]
obj = parse_output(t.read_text(t.join(d, "out.json")))
exit_text, out, tail = self.fetch(handle, self.COLLECT) # one remote call
obj = parse_output(out)
err = bool(obj.get("is_error")) or obj.get("subtype", "success") != "success"
last = "" if err else (obj.get("result") or "")
tail = self.stderr_tail(handle)
if err:
tail = ("%s %s" % (obj.get("subtype", ""), str(obj.get("result", ""))[:400]) + "\n" + tail).strip()
return ExecResult(last.strip(), self.exit_code(handle), obj.get("session_id") or handle.get("thread_id"),
return ExecResult(last.strip(), parse_exit(exit_text), obj.get("session_id") or handle.get("thread_id"),
self.logs(handle, "out.json", "stderr.txt"), tail)