PTY 및 프로세스 감독 계획

1. 문제 및 목표

다음에 걸쳐 하나의 신뢰할 수 있는 생명주기가 필요합니다:

  • exec 포그라운드 실행
  • exec 백그라운드 실행
  • process 후속 작업 (poll, log, send-keys, paste, submit, kill, remove)
  • CLI 에이전트 러너 서브프로세스

목표는 단순히 PTY를 지원하는 것이 아닙니다. 안전하지 않은 프로세스 매칭 휴리스틱 없이 예측 가능한 소유권, 취소, 타임아웃, 정리를 갖추는 것입니다.

2. 범위 및 경계

  • 구현을 src/process/supervisor 내부에 유지.
  • 이를 위한 새 패키지를 만들지 않음.
  • 실용적인 경우 현재 동작 호환성 유지.
  • 터미널 재생이나 tmux 스타일 세션 지속성으로 범위를 확장하지 않음.

3. 이 브랜치에서 구현된 사항

이미 존재하는 감독자 기반

  • 감독자 모듈이 src/process/supervisor/* 아래에 구축됨.
  • Exec 런타임과 CLI 러너가 이미 감독자 spawn과 wait을 통해 라우팅됨.
  • 레지스트리 종료가 멱등적.

이 패스에서 완료된 사항

  1. 명시적 PTY 명령 계약 - SpawnInput이 구분된 유니온으로 변경.
  2. 프로세스 레이어 타입 분리 - 감독자 타입이 에이전트에서 임포트하지 않음.
  3. 프로세스 도구 생명주기 소유권 개선 - 감독자를 통한 취소 요청.
  4. 단일 소스 감시독 기본값 - 공유 기본값 추가.
  5. 사용하지 않는 헬퍼 정리.
  6. 직접 감독자 경로 테스트 추가.
  7. 신뢰성 갭 수정 완료.
  8. PTY 계약 엣지 케이스 커버리지 추가.

4. 남은 갭 및 결정

내구성 및 시작 조정

재시작 동작은 인메모리 생명주기 전용으로 명시적으로 정의됨.

  • reconcileOrphans()는 설계상 no-op으로 유지.
  • 프로세스 재시작 후 활성 실행은 복구되지 않음.

5. 정의 완료

  1. 감독자가 관리되는 실행의 생명주기 소유자.
  2. PTY spawn이 argv 재구성 없이 명시적 명령 계약을 사용.
  3. 프로세스 레이어가 감독자 stdin 계약을 위해 에이전트 레이어에 타입 의존성 없음.
  4. 감시독 기본값이 단일 소스.
  5. 대상 단위 및 e2e 테스트가 그린 유지.
  6. 재시작 내구성 경계가 명시적으로 문서화되거나 완전히 구현됨.