완료된 IOP Agent CLI Runtime의 상태·스펙·계약·작업 evidence를 아카이브 경로로 동기화하고 현재 런타임 검증 변경을 원격에 공유한다.
6.9 KiB
6.9 KiB
| spec_doc_type | spec_id | status | source_evidence | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| spec | runtime/iop-agent-cli-runtime | 구현됨 |
|
스펙: IOP Agent CLI Runtime
목적
개인 장비에서 독립 실행되는 iop-agent headless host의 현재 기능을 정리한다. 이 host는 공통 provider와 AgentTaskManager를 조립해 CLI·daemon·local control 표면으로 제공하며, Node나 Python dispatcher를 대체하는 별도 shared-runtime 구현을 소유하지 않는다.
기능 목록
| 기능 | 설명 |
|---|---|
| Headless CLI | validate, provider/project/milestone 조회·선택, preview, serve, start, stop, resume, status와 제한된 task-loop 명령을 text 또는 JSON으로 제공한다. |
| 설정 조합 | repo-global의 비밀정보 없는 기본값과 user-local device/project override를 엄격히 검증·합성하고, 실행은 캡처한 불변 revision을 사용한다. |
| 수동 project lifecycle | project의 Milestone을 명시 선택한 뒤에만 시작하며, preview는 durable state나 provider invocation 없이 같은 선택·dependency 판정을 반환한다. |
| 지속 runtime과 관측 | daemon은 공통 runtime의 reconciliation을 주기적으로 수행하고 project별 work, dispatch ordinal, overlay/integration, blocker와 project log를 상태로 제공한다. |
| Local control과 client process | 소유 OS 사용자의 local proto-socket을 통해 상태와 project/client control을 제공하고, Flutter·Unity subprocess의 시작·중단·복구와 Unity detail 요청의 Flutter start/focus 중계를 소유한다. |
| 안전한 host 조립 | bootstrap은 하나의 durable state store 위에 task runtime, project log, client process manager와 local-control server를 조립하며 시작 실패 시 이미 시작한 component를 역순 정리한다. |
범위
- 포함:
iop-agentCLI/daemon, repo-global·user-local runtime config 조합, project lifecycle projection, local socket, client process와 host-owned durable state. - 제외: 공통 provider 실행·selection·retry·AgentTaskManager 알고리즘, Edge-Node protobuf 변환, Flutter·Unity UI 구현, provider 로그인과 credential 저장, active
agent-task의 dispatcher/worker/review orchestration.
주요 흐름
flowchart LR
Operator[운영자 또는 same-user client] --> CLI[iop-agent CLI]
CLI --> Command[Command service]
Command --> Snapshot[Validated runtime snapshot]
Snapshot --> Runtime[taskloop.Runtime]
Runtime --> Shared[Shared Agent Runtime]
Shared --> State[Durable state and project logs]
CLI -->|serve| Bootstrap[Daemon bootstrap]
Bootstrap --> Runtime
Bootstrap --> Socket[Local proto-socket]
Socket --> ClientManager[Flutter/Unity process manager]
serve는 지속 reconciliation과 local control을 실행한다. 나머지 CLI command는 같은 durable state를 제한적으로 조회하거나 명시 lifecycle intent를 기록하며, preview는 side effect를 만들지 않는다.
계약
- IOP Agent CLI Runtime contract는 standalone host lifecycle, config, local control과 client process 경계를 정의한다.
- Agent Runtime contract는 host가 소비하는 공통 provider와 AgentTaskManager 의미를 정의한다.
- SDD는 S10 CLI와 관련 acceptance/evidence 연결을 정의한다.
설정/데이터/이벤트
- repo-global input은 read-only이며 provider/default/selection policy template만 포함한다. user-local input은 device root, project registration, override, client launch policy와 durable state 위치를 포함한다.
- runtime snapshot은 두 입력의 revision과 합성 결과를 보존한다. 현재 실행은 이미 캡처한 revision을 유지하고, 유효한 다음 revision만 이후 invocation에 반영한다.
- local proto-socket은 owner-only state root와 socket permissions, same-OS-user peer credential을 전제로 한다. app token fallback은 없다.
- host는 project/work 상태, local command receipt, client process identity와 project log를 durable record로 보존한다. 공통 runtime의 lifecycle, admission, review와 integration 결정은 공유 계약을 따른다.
검증
go test -count=1 ./apps/agent/...- CLI, bootstrap, task loop, local control과 client process package가 현재 checkout에서 통과해야 한다.go test -count=1 -race ./apps/agent/internal/taskloop ./apps/agent/internal/command ./apps/agent/internal/bootstrap ./packages/go/agenttask ./packages/go/agentstate- shared state와 host lifecycle의 race regression을 확인한다.make build-agent및make test-iop-agent-logged-smoke-preflight- binary build와 logged-smoke harness preflight를 확인한다.
한계와 주의사항
- 실제 provider 로그인과 logged-in macOS smoke는 credential을 이 spec이나 repo-global config에 기록하지 않고 별도 환경에서 수행한다.
iop-agent는 activeagent-task의 dispatcher, worker, self-check와 official review 경로를 대체하거나 그 경로에서 실행되지 않는다.- Flutter·Unity는 local control을 소비하는 client이며 provider 선택, task scheduling 또는 daemon ownership을 갖지 않는다.
변경 기록
- 2026-07-31: IOP Agent CLI Runtime Milestone의 종료 검토를 위해 현재 코드·계약·S10 완료 evidence를 기준으로 생성했다.