# CLI Automation Runtime 안정화

## 목표

CLI Agent와 도구 실행을 안정적인 Automation runtime으로 정리한다.
현재 구현된 CLI adapter baseline을 바탕으로 one-shot, persistent terminal, opencode SSE, codex exec 같은 실행 모드를 같은 adapter execution 모델 안에서 안정화한다.

## 단계

Automation Runtime과 Bridge 확장

## 상태

완료

## 구현 잠금

- 상태: 해제
- 이유: 완료된 Milestone이며 완료 기준과 완료 근거가 문서화되어 있다. 후속 확장은 별도 Milestone에서 다룬다.
- 해제 조건:
  - [x] 완료 기준과 완료 근거가 문서화됨
  - [x] 후속 확장은 별도 Milestone에서 다룸
- 잠금 중 금지:
  - 해당 없음

## 범위

- CLI profile 설정과 output format 처리 안정화
- persistent logical session lifecycle 관리
- command/status/capability/session list 응답 정리
- usage/status parser와 terminal screen parser 신뢰성 강화
- Node local execution history와 Edge event aggregation 경계 정리
- 이미 동작하는 CLI adapter 기능을 재구현하지 않고 hardening, 경계 정리, 검증 기준 보강에 집중

## 필수 기능

- [x] [profile-modes] CLI adapter는 profile별 실행 모드를 `node.Node` 분기 없이 adapter 내부에서 처리한다.
- [x] [output-parsing] output format별 파싱은 `lineEmitter` 또는 모드별 구현으로 분리한다.
- [x] [persistent-session] persistent terminal profile은 idle timeout, completion marker, cancel drain 기준을 명확히 가진다.
- [x] [command-path] `NodeCommandRequest` 경로는 실행 요청과 분리된 조회/제어 명령으로 유지한다.
- [x] [ops-command] 운영 명령 응답과 검증 기준을 마무리한다.
  - [x] [ops-payload] `SESSION_LIST`, `USAGE_STATUS`, `TRANSPORT_STATUS` 응답 payload를 운영자가 읽기 쉬운 필드로 정리한다.
  - [x] [ops-smoke] 대상 패키지 테스트와 field smoke 절차로 운영 명령 응답을 검증한다.
- [x] [history-boundary] Node local execution history와 Edge event aggregation의 책임 경계를 확인한다.
- [x] [profile-smoke] 주요 CLI profile별 field smoke 결과를 수집하고 마일스톤 종료 여부를 결정한다.

## 완료 기준

- [x] 주요 CLI profile이 동일한 `RunRequest`/`RunEvent` 흐름으로 실행된다.
- [x] session list, usage status, transport status가 운영자가 이해할 수 있는 응답을 제공한다.
- [x] CLI adapter 변경 시 대상 패키지 테스트와 field smoke 기준이 함께 맞는다.

## 범위 제외

- 모든 외부 자동화 도구를 `iop-node` 하위 프로세스로 흡수
- OTO 같은 specialized domain agent를 CLI adapter profile로 대체
- CLI adapter 내부에 Control Plane 책임 추가

## 작업 컨텍스트

- 관련 앱: `apps/node`
- 관련 패키지: `apps/node/internal/adapters/cli`, `apps/node/internal/runtime`, `apps/node/internal/node`
- 관련 문서: `apps/node/README.md`
- 방향성 메모: OpenCode, Aider, Cline, Claude Code, Gemini CLI, Codex CLI 등은 NomadCode 전용 구현이 아니라 IOP CLI adapter/profile 후보로 본다.
- 최근 근거: 2026-05-23에 `go test ./...`, mock `./scripts/e2e-smoke.sh`, `IOP_E2E_PROFILE=codex|opencode|antigravity|claude|claude-tui ./scripts/e2e-smoke.sh`를 통과했다.
- 다음 작업: 완료됨. 후속 후보는 `원격 터미널 브리지 POC`이다.
