106 lines
4.6 KiB
Markdown
106 lines
4.6 KiB
Markdown
---
|
|
ui_doc_type: view
|
|
view_id: runtime
|
|
status: 구현됨
|
|
frame: null
|
|
source_evidence:
|
|
- type: code
|
|
path: apps/client/lib/widgets/runtime_panel.dart
|
|
notes: RuntimePanel renders the Edge selector, health/Node/provider command actions, command status, and operation history section.
|
|
- type: code
|
|
path: apps/client/lib/widgets/runtime_panel_sections.dart
|
|
notes: RuntimePanelOperationsHistorySection renders loading, error, empty, and operation record states.
|
|
- type: code
|
|
path: apps/client/lib/client_home_page.dart
|
|
notes: ClientHomePage injects RuntimePanel into the shell runtime section.
|
|
- type: docs
|
|
path: README.md
|
|
notes: Model, provider, and device operations are Edge-owned operations exposed through Control Plane.
|
|
- type: user
|
|
path: null
|
|
notes: Initial scaffold requested by user.
|
|
regions:
|
|
- runtime.header
|
|
- runtime.edge-selector
|
|
- runtime.command-actions
|
|
- runtime.command-status
|
|
- runtime.operation-history
|
|
---
|
|
|
|
# Runtime
|
|
|
|
View ID: `runtime`
|
|
|
|
Frame:
|
|
- 없음
|
|
|
|
Status: `구현됨`
|
|
|
|
## Source Evidence
|
|
|
|
| Type | Path | Notes |
|
|
|------|------|-------|
|
|
| code | `apps/client/lib/widgets/runtime_panel.dart` | `RuntimePanel`이 Edge selector, health check, Node status, provider command와 최근 command 결과를 렌더링한다. |
|
|
| code | `apps/client/lib/widgets/runtime_panel_sections.dart` | operation history의 loading, error, empty, record 상태를 렌더링한다. |
|
|
| code | `apps/client/lib/client_home_page.dart` | shell runtime section에 `RuntimePanel`을 주입한다. |
|
|
| docs | `README.md` | model/provider/device operation은 Edge가 소유하고 Control Plane이 제어 요청을 전달하는 구조다. |
|
|
| user | 없음 | 초기 agent-ui 생성을 요청했다. |
|
|
|
|
## Purpose
|
|
|
|
운영자가 선택 Edge에 health check를 보내고, Node 상태를 조회하거나 허용된 provider command를 실행한 뒤 operation 이력을 확인한다.
|
|
|
|
## Primary Users
|
|
|
|
- IOP operator
|
|
- Node/provider operation을 검증하는 engineer
|
|
|
|
## Primary Tasks
|
|
|
|
- active Edge 선택
|
|
- health check 실행
|
|
- Node status 조회
|
|
- provider command 전송
|
|
- operation execution history 확인
|
|
|
|
## Information Priority
|
|
|
|
1. active Edge와 command action availability
|
|
2. command result status
|
|
3. operation execution history
|
|
|
|
## Regions
|
|
|
|
| Region ID | Purpose | Component | Priority | Notes |
|
|
|-----------|---------|-----------|----------|-------|
|
|
| `runtime.header` | title, active Edge selector, refresh 표시 | `edge-selector` | high | narrow width에서는 header control이 줄바꿈된다. |
|
|
| `runtime.edge-selector` | active Edge 선택 | `edge-selector` | high | command target Edge를 결정한다. |
|
|
| `runtime.command-actions` | system/Node/provider command 실행 버튼 표시 | `command-action-bar` | high | health check, Node status, provider command를 포함한다. |
|
|
| `runtime.command-status` | 최근 command 결과 표시 | `status-badge` | high | success/failure alert로 표시된다. |
|
|
| `runtime.operation-history` | operation execution history 표시 | `operation-history-list` | medium | command id, selector, summary, error, status를 포함한다. |
|
|
|
|
## Actions
|
|
|
|
| Action ID | Trigger | Result | Guard |
|
|
|-----------|---------|--------|-------|
|
|
| `runtime.select-edge` | Active Edge dropdown change | 선택 Edge operations를 fetch한다. | Edge 목록이 있어야 한다. |
|
|
| `runtime.refresh` | Refresh icon button | 선택 Edge operations를 다시 fetch한다. | 선택 Edge가 있어야 한다. |
|
|
| `runtime.health-check` | Health Check button | `health.check` Edge command를 보낸다. | loading 중이 아니어야 한다. |
|
|
| `runtime.node-status` | Node Status dialog submit | `node.status` Edge command를 target selector와 함께 보낸다. | selector가 비어 있지 않아야 한다. |
|
|
| `runtime.provider-command` | Provider Command dialog submit | `provider.command` Edge command를 selector와 allowlisted command parameter로 보낸다. | selector와 command가 비어 있지 않아야 하고 `ollama_api`에는 method/path가 필요하다. |
|
|
|
|
## States
|
|
|
|
- loading: operations fetch 또는 command send 중 spinner/disabled action을 표시한다.
|
|
- empty: Edge가 없거나 operation history가 없으면 empty message를 표시한다.
|
|
- error: operations fetch 또는 command send failure를 error text/status로 표시한다.
|
|
- permission-denied: 현재 구현 근거 없음
|
|
|
|
## Open Questions
|
|
|
|
- 없음
|
|
|
|
## Decision History
|
|
|
|
- 2026-06-25: `RuntimePanel` 구현을 기준으로 runtime view를 정의했다.
|
|
- 2026-08-02: 제거된 domain-agent 영역과 명령을 삭제하고 현행 `health.check`, `node.status`, `provider.command` operation으로 동기화했다.
|