feat: deliver installable local alpha sessions
Some checks failed
tamq-ci / test (push) Failing after 6s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a03397-4d51-7fd1-8ff2-946eb22ea2bc
This commit is contained in:
tegwick 2026-08-24 16:10:59 +02:00
parent d56bd3c79f
commit 5774fbd548
18 changed files with 890 additions and 94 deletions

View file

@ -1,6 +1,8 @@
from __future__ import annotations
import os
import subprocess
from collections.abc import Sequence
from dataclasses import dataclass
@ -11,13 +13,19 @@ class ControlModeError(RuntimeError):
@dataclass
class ControlModeClient:
session: str
tmux_command: Sequence[str] | None = None
process: subprocess.Popen[str] | None = None
def start(self) -> None:
if self.process is not None:
return
socket_name = os.environ.get("TAMQ_TMUX_SOCKET")
command = tuple(
self.tmux_command
or (["tmux", "-L", socket_name] if socket_name else ["tmux"])
)
self.process = subprocess.Popen(
["tmux", "-C", "attach-session", "-t", self.session],
[*command, "-C", "attach-session", "-t", self.session],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
@ -37,7 +45,13 @@ class ControlModeClient:
def close(self) -> None:
if self.process is not None:
self.process.terminate()
process = self.process
process.terminate()
try:
process.wait(timeout=1)
except subprocess.TimeoutExpired:
process.kill()
process.wait(timeout=1)
self.process = None