---
ui_doc_type: component
component_id: agent-dock-panel
status: 구현됨
source_evidence:
  - type: code
    path: apps/client/lib/src/app/nomadcode_workbench_shell.dart
    notes: _AgentDockPanel이 agent_shell package의 AgentShell을 mount한다.
  - type: docs
    path: README.md
    notes: Agent dock은 공통 agent_shell package를 사용한다는 제품 경계.
  - type: docs
    path: apps/client/README.md
    notes: Agent dock panel attached to the right rail 설명.
  - type: user
    path: null
    notes: agent-ui 생성 요청.
---

# Agent Dock Panel

Component ID: `agent-dock-panel`

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `apps/client/lib/src/app/nomadcode_workbench_shell.dart` | _AgentDockPanel이 agent_shell package의 AgentShell을 mount한다. |
| docs | `README.md` | Agent dock은 공통 agent_shell package를 사용한다는 제품 경계. |
| docs | `apps/client/README.md` | Agent dock panel attached to the right rail 설명. |
| user | 없음 | agent-ui 생성 요청. |

## Purpose

Workbench 우측 rail에 붙는 agent interaction surface를 제공한다. NomadCode-specific workflow logic은 shell 밖의 product section이나 future integration에서 다루고, dock 자체는 `agent_shell` 기반 공통 대화 표면으로 유지한다.

## Used By

- `workbench-shell`: `workbench-shell.agent-dock`

## Anatomy

- Right-side bordered panel
- `AgentShell`
- Initial assistant message
- Input placeholder

## Variants

- default: desktop attached panel
- compact: width가 좁으면 center content를 숨기고 dock width를 우선한다.

## States

- default
- closed: rail state로만 표현되며 panel은 render되지 않는다.
- loading: AgentShell 내부 정책을 따른다.
- empty: initial message가 기본으로 존재한다.
- error: AgentShell 내부 정책을 따른다.
- disabled: 없음

## Rules

- dock open/closed 상태는 workbench shell이 소유한다.
- `agent_shell` package에 NomadCode-specific workflow, web context, IOP product logic을 넣지 않는다.

## Decision History

- 2026-06-24: 구현된 Agent dock panel을 component로 등록했다.
