--- 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를 정의했다.