---
ui_doc_type: definition-index
surface_type: ops-dev
source_evidence:
  - type: code
    path: apps/client/lib/client_home_page.dart
    notes: ClientHomePage mounts IopConsoleShell with overview, edges, nodes, runtime, executionLogs, and agent panels.
  - type: code
    path: packages/flutter/iop_console/lib/src/iop_console_shell.dart
    notes: IopConsoleShell defines the rail navigation and console section slots.
  - type: docs
    path: README.md
    notes: IOP is a Control Plane, Edge, Node operations platform with runtime and automation surfaces.
  - type: docs
    path: apps/client/README.md
    notes: The official Flutter client consumes packages/flutter/iop_console as the IOP-owned widget boundary.
  - type: user
    path: null
    notes: User requested initial agent-ui scaffold creation.
---

# UI Definition

## Purpose

이 agent-ui는 IOP 공식 Flutter client의 Control Plane 운영 화면과 `packages/flutter/iop_console` embeddable console surface를 정의한다.
현재 기준은 운영자가 Edge, Node, Runtime, execution event, agent capability 상태를 확인하고 기본 command를 실행하는 ops/dev UI다.

## Surface Type

- Type: ops-dev
- Notes: product UI layer가 필요하면 brand, public content, asset, token, motion 정의를 별도 갱신에서 추가한다.

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `apps/client/lib/client_home_page.dart` | `ClientHomePage`가 `IopConsoleShell`에 overview, edges, nodes, runtime, execution logs, agent panel을 주입한다. |
| code | `packages/flutter/iop_console/lib/src/iop_console_shell.dart` | 좌측 rail과 section routing이 console shell의 기본 frame을 이룬다. |
| docs | `README.md` | IOP가 Control Plane, Edge, Node 운영 계층과 runtime/automation surface를 지향함을 설명한다. |
| docs | `apps/client/README.md` | Flutter client와 `iop_console` package의 책임 경계를 설명한다. |
| user | 없음 | 사용자가 `agent-ui 생성해`라고 요청했다. |

## Structure

- `views/`: console section 또는 운영 업무 단위 정의
- `components/`: 반복 UI 구성요소 정의
- `archive/`: 현재 기준이 아닌 과거 정의/결정 로그

## Reading Rules

- 현재 UI 동기화는 이 디렉터리의 활성 문서를 기준으로 한다.
- `archive/**`는 과거 비교, 복원, 특정 근거 확인 요청이 있을 때만 읽는다.

## Sync Rules

- frame-view가 있으면 view region id와 frame region id는 동일해야 한다.
- view에서 참조한 component id는 `components/` 아래에 정의되어야 한다.
- frame은 definition을 대체하지 않는다.
- `구현됨`, `계획`, `가정`, `불명확` 상태를 섞어 쓰지 않는다.

## Decision History

- 2026-06-25: 기존 Flutter client와 `iop_console` 구현을 근거로 code-first agent-ui scaffold를 생성했다.
