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을 통해 라우팅됨.
- 레지스트리 종료가 멱등적.
이 패스에서 완료된 사항
- 명시적 PTY 명령 계약 -
SpawnInput이 구분된 유니온으로 변경. - 프로세스 레이어 타입 분리 - 감독자 타입이 에이전트에서 임포트하지 않음.
- 프로세스 도구 생명주기 소유권 개선 - 감독자를 통한 취소 요청.
- 단일 소스 감시독 기본값 - 공유 기본값 추가.
- 사용하지 않는 헬퍼 정리.
- 직접 감독자 경로 테스트 추가.
- 신뢰성 갭 수정 완료.
- PTY 계약 엣지 케이스 커버리지 추가.
4. 남은 갭 및 결정
내구성 및 시작 조정
재시작 동작은 인메모리 생명주기 전용으로 명시적으로 정의됨.
reconcileOrphans()는 설계상 no-op으로 유지.- 프로세스 재시작 후 활성 실행은 복구되지 않음.
5. 정의 완료
- 감독자가 관리되는 실행의 생명주기 소유자.
- PTY spawn이 argv 재구성 없이 명시적 명령 계약을 사용.
- 프로세스 레이어가 감독자 stdin 계약을 위해 에이전트 레이어에 타입 의존성 없음.
- 감시독 기본값이 단일 소스.
- 대상 단위 및 e2e 테스트가 그린 유지.
- 재시작 내구성 경계가 명시적으로 문서화되거나 완전히 구현됨.