# Milestone: Agent Shell Runtime Channel ## 위치 - Roadmap: `agent-roadmap/ROADMAP.md` - Phase: `agent-roadmap/phase/agent-shell-iop-execution/PHASE.md` ## 목표 agent-shell이 runner machine에서 outbound proto-socket으로 control plane에 연결하고, heartbeat, capability registration, command dispatch, log stream을 처리한다. control plane은 연결된 shell에 workspace operation을 배정할 수 있어야 한다. ## 상태 [계획] ## 승격 조건 - 없음 ## 구현 잠금 - 상태: 해제 - 결정 필요: 없음 ## 범위 - agent-shell identity와 capability model - outbound proto-socket 연결 - heartbeat와 runner 상태 event - command dispatch request/response shape - stdout/stderr log stream shape ## 기능 ### Epic: [shell-channel] Shell channel agent-shell과 control plane 사이의 runtime channel을 만든다. - [ ] [identity] `GITO_SHELL_ID`와 runner capability registration model을 확정한다. - [ ] [heartbeat] shell heartbeat와 disconnect 상태를 operation event로 투영한다. 검증: fake shell disconnect가 runner offline event를 남긴다. - [ ] [dispatch] command dispatch proto-socket action 후보를 구현한다. 검증: test shell이 no-op command request를 받고 response를 반환한다. - [ ] [logs] stdout/stderr chunk stream shape를 정의하고 event stream에 연결한다. ## 완료 리뷰 - 상태: 없음 - 요청일: 없음 - 완료 근거: 없음 - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 - 리뷰 코멘트: 없음 ## 범위 제외 - IOP CLI invocation 세부 - provider API 호출 - Flutter runner management UX - remote shell installation 자동화 ## 작업 컨텍스트 - 관련 경로: `services/core/internal/agentshell/`, `services/core/internal/controlplane/`, `services/core/internal/events/`, `packages/contracts/notes/gito-control-plane.md` - 표준선(선택): runner는 가능하면 outbound connection으로 control plane에 붙는다. - 선행 작업: Operation Event Outbox - 후속 작업: IOP Agent Run Bridge - 확인 필요: 없음