p3-socket

CLI는 한 번 묻고 닫고, 구독은 연결을 열어 둔 채 계속 받는다

연결 수명 herdr agent wait pm --until working 응답 하나, 연결 닫힘 그 뒤 변화는 못 본다 events.subscribe 연결 하나, 구독은 pane마다 pm working front working pm blocked back done front idle live.py herdr server $HERDR_SOCKET_PATH live.py python3 표준 라이브러리 브라우저 표 + 입력창 session.snapshot 처음 한 번 events.subscribe 열어 둔 채 SSE /events agent.prompt, pane.send_text 보낼 때마다 POST /send 한 줄에 JSON 하나(NDJSON), 연결 하나에 요청 하나 개념도만 크게 보기

CLI는 요청 하나에 응답 하나를 받고 연결을 닫는다. socket에 events.subscribe를 보내면 연결을 열어 둔 채 여러 pane의 변화가 계속 온다. 처음 상태는 session.snapshot으로 한 번 받고, 그다음은 event만 반영한다.

method

method 연결 live.py에서
session.snapshot 응답 하나 처음, 그리고 pane이 생기거나 닫힐 때
events.subscribe 열어 둔 채 계속 pane마다 pane.agent_status_changed, 그리고 pane.created, pane.closed
agent.prompt 응답 하나 agent pane에 입력
pane.send_text 응답 하나 shell pane에 입력(끝에 \r)

live.py는 python3 표준 라이브러리만 쓴다. herdr socket과 브라우저 사이에서 event를 SSE로 넘기고, 입력을 method 호출로 바꾼다.

명령

  1. 새 pane <live>: herdr pane run <live> "python3 <skill 폴더>/live.py" -> 브라우저로 http://127.0.0.1:8765
  2. 새 pane <cli>: herdr pane run <cli> "herdr agent wait pm --until working"
  3. 사용자: 브라우저 표에서 pm 행을 고르고 프롬프트를 보낸다. 표는 working, idle로 계속 바뀌고, <cli>는 working 한 번에 끝난다.
  4. 정리: herdr pane close <live>, herdr pane close <cli>

참고