---
ui_doc_type: view
view_id: agent
status: 구현됨
frame: null
source_evidence:
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_agent_panel.dart
    notes: "OtoAgentPanel이 agent_shell AgentShell을 mount"
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_console_shell.dart
    notes: "agent section fallback으로 OtoAgentPanel 사용"
  - type: docs
    path: apps/client/README.md
    notes: "oto_console package를 다른 Flutter host에 embed 가능"
  - type: user
    path: null
    notes: "agent-ui 생성 요청"
regions:
  - agent.conversation
  - agent.capabilities
  - agent.input
---

# Agent

View ID: `agent`

Frame:
- 없음

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `packages/flutter/oto_console/lib/src/oto_agent_panel.dart` | `OtoAgentPanel`이 `AgentShell`을 mount |
| code | `packages/flutter/oto_console/lib/src/oto_console_shell.dart` | agent section fallback |
| docs | `apps/client/README.md` | `oto_console` embedding 기준 |
| user | 없음 | agent-ui 생성 요청 |

## Purpose

OTO capability context를 agent-shell 대화 표면에 연결한다.

## Primary Users

- operator/admin
- local developer

## Primary Tasks

- OTO capability summary 확인
- agent prompt submit

## Information Priority

1. assistant intro message
2. registered capabilities
3. prompt input

## Jenkins Reference Alignment

- Jenkins classic/modern UI에 직접 대응되는 화면은 아니다.
- OTO agent-shell 확장 표면으로 유지하며, Jenkins parity 기준에서는 navigation destination과 permission/state consistency만 맞춘다.
- Jenkins command palette나 global search 같은 power-user affordance가 필요해지면 agent view가 아니라 shell-level component 후보로 분리한다.

## Regions

| Region ID | Purpose | Component | Priority | Notes |
|-----------|---------|-----------|----------|-------|
| `agent.conversation` | agent message timeline | `agent-chat-panel` | high | intro message 표시 |
| `agent.capabilities` | registered capabilities 요약 | `agent-chat-panel` | medium | capability pack이 있을 때 포함 |
| `agent.input` | prompt input | `agent-chat-panel` | medium | placeholder: `Ask about OTO builds` |

## Actions

| Action ID | Trigger | Result | Guard |
|-----------|---------|--------|-------|
| `agent.submit` | prompt submit | `onSubmit` callback 호출 | handler 존재 |

## States

- loading: 현재 구현은 `busy: false`로 고정되어 별도 loading state가 없다.
- empty: capabilities가 없으면 intro message만 표시한다.
- error: 현재 구현에는 별도 error state가 없다.
- permission-denied: 현재 구현에는 별도 denied state가 없다.

## Open Questions

- 없음

## Decision History

- 2026-06-24: agent-shell mount 영역을 agent view로 정의했다.
