---
ui_doc_type: view
view_id: artifacts
status: 구현됨
frame: null
source_evidence:
  - type: code
    path: packages/flutter/oto_console/lib/src/oto_artifacts_surface.dart
    notes: "OtoArtifactsSurface 구현"
  - type: code
    path: apps/client/lib/src/app/oto_client_app.dart
    notes: "artifact snapshot 연결"
  - type: docs
    path: agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md
    notes: "artifact path와 내용 노출은 감사 UI 마스킹 기준에서 주의"
  - type: user
    path: null
    notes: "agent-ui 생성 요청"
regions:
  - artifacts.header
  - artifacts.state-panel
  - artifacts.artifact-list
---

# Artifacts

View ID: `artifacts`

Frame:
- 없음

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `packages/flutter/oto_console/lib/src/oto_artifacts_surface.dart` | `OtoArtifactsSurface` 구현 |
| code | `apps/client/lib/src/app/oto_client_app.dart` | artifact snapshot 연결 |
| docs | `agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md` | artifact path와 내용 노출 주의 |
| user | 없음 | agent-ui 생성 요청 |

## Purpose

Control Plane에 수집된 artifact event를 목록으로 확인한다.

## Primary Users

- operator/admin
- local developer

## Primary Tasks

- artifact name 확인
- artifact path 확인
- empty/error 상태 확인

## Information Priority

1. artifact name
2. artifact path
3. snapshot state

## Jenkins Reference Alignment

- Jenkins build artifacts와 artifact/workspace browser를 OTO artifact event list의 러프 참조로 삼는다.
- 현재 범위는 name/path scan에 한정하고, Jenkins처럼 directory browsing, file download, content preview를 제공하는 것은 후속 후보로 둔다.
- artifact path는 SDD 기준에 따라 민감한 full path나 content를 복제 노출하지 않는 방향을 우선한다.

## Target Layout Delta

- artifact row는 Jenkins artifact browser처럼 file identity, path/location, execution context 후보를 분리해서 스캔하게 한다.
- download/content preview가 없더라도 artifact browser로 확장 가능한 list anatomy를 먼저 정의한다.
- path는 ellipsis/masking을 유지하고, full path 노출은 별도 permission/audit 기준이 생기기 전까지 보수적으로 둔다.
- 현재 코드는 artifact browser row anatomy 반영이 완료되어 `구현됨` 상태다.

## Regions

| Region ID | Purpose | Component | Priority | Notes |
|-----------|---------|-----------|----------|-------|
| `artifacts.header` | 화면 제목 | 없음 | high | `Artifacts` |
| `artifacts.state-panel` | loading/empty/error 표현 | `state-panel` | high | snapshot state 기준 |
| `artifacts.artifact-list` | artifact row 목록 | `artifact-list` | high | name과 path 표시 |

## Actions

| Action ID | Trigger | Result | Guard |
|-----------|---------|--------|-------|
| 없음 | - | - | - |

## States

- loading: 중앙 progress indicator.
- empty: `No artifacts` state panel.
- error: `Error loading artifacts` state panel과 snapshot error message.
- permission-denied: 현재 구현에는 별도 denied state가 없다.

## Open Questions

- 없음

## Decision History

- 2026-06-24: artifact event list를 단일 주 region으로 정의했다.
