101 lines
4.2 KiB
Markdown
101 lines
4.2 KiB
Markdown
---
|
|
ui_doc_type: view
|
|
view_id: workbench-shell
|
|
status: 구현됨
|
|
frame: null
|
|
source_evidence:
|
|
- type: code
|
|
path: apps/client/lib/src/app/nomadcode_workbench_shell.dart
|
|
notes: NomadCodeWorkbenchShell, _WorkbenchTitleBar, _WorkbenchActivityRail, _AgentDockPanel, section placeholder 구현.
|
|
- type: code
|
|
path: apps/client/lib/src/app/nomadcode_client_app.dart
|
|
notes: MaterialApp home에서 WorkspaceHomePage를 workbench shell에 mount하는 조립 근거.
|
|
- type: docs
|
|
path: apps/client/README.md
|
|
notes: Workbench shell, Agent dock, IOP slot composition 설명.
|
|
- type: docs
|
|
path: README.md
|
|
notes: 제품 경계의 workbench shell, Agent dock, IOP slot 설명.
|
|
- type: user
|
|
path: null
|
|
notes: agent-ui 생성 요청.
|
|
regions:
|
|
- workbench-shell.titlebar
|
|
- workbench-shell.center
|
|
- workbench-shell.activity-rail
|
|
- workbench-shell.agent-dock
|
|
- workbench-shell.iop-slot
|
|
---
|
|
|
|
# Workbench Shell
|
|
|
|
View ID: `workbench-shell`
|
|
|
|
Frame:
|
|
- 없음
|
|
|
|
Status: `구현됨`
|
|
|
|
## Source Evidence
|
|
|
|
| Type | Path | Notes |
|
|
|------|------|-------|
|
|
| code | `apps/client/lib/src/app/nomadcode_workbench_shell.dart` | NomadCodeWorkbenchShell, _WorkbenchTitleBar, _WorkbenchActivityRail, _AgentDockPanel, section placeholder 구현. |
|
|
| code | `apps/client/lib/src/app/nomadcode_client_app.dart` | MaterialApp home에서 WorkspaceHomePage를 workbench shell에 mount하는 조립 근거. |
|
|
| docs | `apps/client/README.md` | Workbench shell, Agent dock, IOP slot composition 설명. |
|
|
| docs | `README.md` | 제품 경계의 workbench shell, Agent dock, IOP slot 설명. |
|
|
| user | 없음 | agent-ui 생성 요청. |
|
|
|
|
## Purpose
|
|
|
|
NomadCode Console의 최상위 작업 표면이다. 상단 titlebar, 중앙 product section, 우측 activity rail, 우측 Agent dock, optional IOP content slot을 하나의 workbench로 조립한다.
|
|
|
|
## Primary Users
|
|
|
|
- NomadCode로 개발 workspace와 agent 작업 상태를 오가는 사용자
|
|
- provider console 또는 IOP slot을 함께 열어보는 운영 사용자
|
|
|
|
## Primary Tasks
|
|
|
|
- Workspace, Workflow, Terminal, Review, Web Context, Settings, IOP section 사이를 전환한다.
|
|
- 우측 Agent dock을 열고 닫는다.
|
|
- optional IOP content가 제공되면 IOP section에 mount한다.
|
|
|
|
## Information Priority
|
|
|
|
1. 현재 선택된 workbench section과 중앙 content
|
|
2. Agent dock 열림 상태와 우측 rail navigation
|
|
3. IOP/provider slot availability
|
|
|
|
## Regions
|
|
|
|
| Region ID | Purpose | Component | Priority | Notes |
|
|
|-----------|---------|-----------|----------|-------|
|
|
| `workbench-shell.titlebar` | Console brand, 현재 section label 표시 | `workbench-titlebar` | high | `_WorkbenchTitleBar` 구현. |
|
|
| `workbench-shell.center` | 선택된 product section content 표시 | 없음 | high | Workspace는 `WorkspaceHomePage`, 나머지 section은 placeholder 또는 slot. |
|
|
| `workbench-shell.activity-rail` | Agent toggle과 section navigation | `activity-rail` | high | 우측 고정 rail. |
|
|
| `workbench-shell.agent-dock` | AgentShell 기반 대화/작업 dock | `agent-dock-panel` | medium | compact width에서는 center content를 숨기고 dock을 우선 표시. |
|
|
| `workbench-shell.iop-slot` | optional IOP console content mount | 없음 | medium | `iopContent`가 없으면 IOP placeholder를 표시한다. |
|
|
|
|
## Actions
|
|
|
|
| Action ID | Trigger | Result | Guard |
|
|
|-----------|---------|--------|-------|
|
|
| `workbench-shell.select-section` | activity rail section button | 중앙 content를 선택 section으로 전환하고 Agent dock을 닫는다. | 없음 |
|
|
| `workbench-shell.toggle-agent` | Agent rail button | Agent dock open/closed 상태를 전환한다. | 없음 |
|
|
| `workbench-shell.mount-iop-slot` | `iopContent` widget 제공 | IOP section에 외부 IOP console content를 표시한다. | IOP package/widget은 optional boundary로 유지한다. |
|
|
|
|
## States
|
|
|
|
- loading: shell 자체 loading state는 없다.
|
|
- empty: section content가 아직 없으면 `_WorkbenchPlaceholder`를 표시한다.
|
|
- error: shell 자체 error state는 없다.
|
|
- permission-denied: view-level permission guard는 구현되어 있지 않다.
|
|
|
|
## Open Questions
|
|
|
|
- 없음
|
|
|
|
## Decision History
|
|
|
|
- 2026-06-24: 구현된 Flutter workbench shell을 `구현됨` view로 등록했다.
|