---
ui_doc_type: component
component_id: agent-panel
status: 구현됨
source_evidence:
  - type: code
    path: packages/flutter/iop_console/lib/src/iop_agent_panel.dart
    notes: IopAgentPanel mounts AgentShell with intro message, capability list, placeholder, and onSubmit hook.
  - type: code
    path: apps/client/lib/main.dart
    notes: iopDefaultCapabilityPack defines the default IOP operation capability list.
  - type: docs
    path: apps/client/README.md
    notes: The client provides an IOP operation and maintenance agent panel widget.
  - type: user
    path: null
    notes: Initial scaffold requested by user.
---

# Agent Panel

Component ID: `agent-panel`

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `packages/flutter/iop_console/lib/src/iop_agent_panel.dart` | `IopAgentPanel`이 `AgentShell` 메시지, placeholder, submit callback을 구성한다. |
| code | `apps/client/lib/main.dart` | default capability pack을 정의한다. |
| docs | `apps/client/README.md` | IOP 운영/유지보수 agent panel widget boundary를 설명한다. |
| user | 없음 | 초기 agent-ui 생성을 요청했다. |

## Purpose

IOP operation capability를 대화형 agent shell 안에 보여주고 operator input을 받을 수 있게 한다.

## Used By

- `agent`: `agent.surface`, `agent.capabilities`, `agent.prompt`

## Anatomy

- intro assistant message
- registered capability list
- prompt input placeholder
- optional submit callback

## Variants

- default capability pack
- custom host-provided capability pack

## States

- default
- loading: 현재 구현은 busy=false
- empty: capability list가 없으면 intro만 표시
- error: 현재 구현 근거 없음
- disabled: 없음

## Rules

- IOP-specific operation semantics는 client/iop_console boundary에 둔다.
- generic chat behavior는 `agent_shell` package에 위임한다.

## Decision History

- 2026-06-25: `IopAgentPanel` 구현을 기준으로 component를 정의했다.
