1.0.2 변경 이력 1.0.1 기준

변경 이력

RAWP-CRS 1.0.2

1.0.1 대비 변경 사항을 정리한 문서입니다.

수정됨

Document Overview

추가된 줄 3 삭제된 줄 3
1 1 # RAWP-CRS 1.0: Client Rendering Specification — Part 1 (§1–§3)
2 2
3 > **본 파일은 RAWP-CRS 1.0의 §1–§3을 포함합니다. §4–§6 및 부록은 Part 2를 참조하십시오.**
3 > **본 파일은 RAWP-CRS 1.0의 §1–§3을 포함합니다. §4–§7 및 부록은 Part 2를 참조하십시오.**
4 4
5 5 | 항목 | 값 |
6 6 | ---------------- | ------------------ |
7 7 | 상태 | Stable |
8 | 버전 | 1.0.1 |
9 | 상위 규격 | **RAWP 1.0.2** |
8 | 버전 | 1.0.2 |
9 | 상위 규격 | **RAWP 1.0.3** |
10 10 | 데이터 평면 규격 | **RAWP-DPS 1.0.1** |
11 11
12 12 ---
수정됨

1. 개요 (Introduction)

추가된 줄 1 삭제된 줄 0
31 31 - 에이전트 상태 표시 및 전환 애니메이션
32 32 - 슬래시 명령어 자동 완성 UI 및 명령어 실행 버블 렌더링
33 33 - **파일 참조 입력(`@` 트리거 퍼지 검색) 및 인라인 토큰 렌더링** (§3.4)
34 34 - 시스템 메시지의 생략 금지 원칙 및 드롭다운 패턴
35 35 - 비스트리밍 환경(Discord, Slack 등) 적응 규칙
36 - **파일 브라우저 UI** — 세션 생성 전 작업 디렉토리 선택을 위한 트리 뷰 및 내비게이션 (§7)
36 37
37 38 본 규격은 다음을 정의하지 않는다:
38 39
39 40 - RAWP 제어 평면의 HTTP 엔드포인트 정의 (RAWP 1.0 참조)
40 41 - WSS 데이터 프레임의 Envelope 구조 및 이벤트 타입 (RAWP-DPS 1.0 참조)
수정됨

3. 유저 메시지 (User Message)

추가된 줄 5 삭제된 줄 5
207 207
208 208 `@` 팝업이 활성 상태인 동안 `/` 입력은 파일 경로의 일부로 처리하며, 슬래시 명령어 팝업을 트리거하지 않는다 (MUST). 역으로, `/` 팝업이 활성 상태인 동안 `@` 입력은 명령어 인자의 일부로 처리한다 (SHOULD). 동시에 두 팝업이 활성화되어서는 안 된다 (MUST NOT).
209 209
210 210 ---
211 211
212 > **Part 1 끝. §4 에이전트 메시지, §5 시스템 메시지, §6 비스트리밍 환경 적응 및 부록은 Part 2를 참조하십시오.**
212 > **Part 1 끝. §4 에이전트 메시지, §5 시스템 메시지, §6 비스트리밍 환경 적응, §7 파일 브라우저 및 부록은 Part 2를 참조하십시오.**
213 213
214 # RAWP-CRS 1.0: Client Rendering Specification — Part 2 (§4–§6, 부록)
214 # RAWP-CRS 1.0: Client Rendering Specification — Part 2 (§4–§7, 부록)
215 215
216 > **본 파일은 RAWP-CRS 1.0의 §4–§6 및 부록을 포함합니다. §1–§3(파일 참조 입력 §3.4 포함)은 Part 1을 참조하십시오.**
216 > **본 파일은 RAWP-CRS 1.0의 §4–§7 및 부록을 포함합니다. §1–§3(파일 참조 입력 §3.4 포함)은 Part 1을 참조하십시오.**
217 217
218 218 | 항목 | 값 |
219 219 | ---------------- | ------------------ |
220 220 | 상태 | Stable |
221 | 버전 | 1.0.1 |
222 | 상위 규격 | **RAWP 1.0.2** |
221 | 버전 | 1.0.2 |
222 | 상위 규격 | **RAWP 1.0.3** |
223 223 | 데이터 평면 규격 | **RAWP-DPS 1.0.1** |
224 224
225 225 ---
수정됨

부록: 관련 규격 문서

추가된 줄 1 삭제된 줄 1
1 1 ## 부록: 관련 규격 문서
2 2
3 3 | 문서 | 설명 |
4 4 | ----------------------- | --------------------------------------------------------------------------- |
5 | **RAWP 1.0.2** | 원격 에이전트 제어 프로토콜 (상위 규격). 본 문서의 상위 문서. |
5 | **RAWP 1.0.3** | 원격 에이전트 제어 프로토콜 (상위 규격). 본 문서의 상위 문서. |
6 6 | **RAWP-DPS 1.0.1** | 데이터 평면 스트리밍 규격. 본 문서가 참조하는 이벤트 타입 및 페이로드 정의. |
7 7 | **RAWP-DPS-0.1-Legacy** | 데이터 평면 스트리밍 규격 (단종 예고). 레거시 호환용. |
추가됨

7. 파일 브라우저 (File Browser)

추가된 줄 113 삭제된 줄 0
1 ## 7. 파일 브라우저 (File Browser)
2
3 세션 생성 전에 사용자가 노드와 에이전트를 선택한 후 작업 디렉토리(`workspace_path`)를 지정하기 위한 파일 브라우저 UI 규격이다. RAWP 1.0 §4.5(`POST /v1/fs/browse`) 및 §9.2.6(`POST /v1/edge/nodes/{node_id}/fs/browse`)의 응답 데이터를 시각적으로 렌더링한다.
4
5 ### 7.1. 용도 및 진입점
6
7 파일 브라우저는 세션 생성 워크플로우에서 `workspace_path`를 선택하는 단계에 사용한다.
8
9 **진입점**: 노드 선택 → 에이전트 선택 완료 후, "작업 디렉토리 선택" 버튼 또는 자동 트리거로 모달 다이얼로그를 표시해야 한다 (MUST). 다이얼로그는 트리 뷰(§7.2), 경로 브레드크럼(§7.3), 수동 입력 필드(§7.6)를 포함한다.
10
11 **초기 로딩**: 다이얼로그가 열리면 `path` 생략 모드(루트 탐색)로 API를 호출하여 초기 트리를 구성해야 한다 (MUST).
12
13 ### 7.2. 트리 뷰 컴포넌트
14
15 재귀적 트리 구조의 파일시스템 항목을 렌더링하는 핵심 컴포넌트다. `entries` 배열의 재귀 `children` 구조를 그대로 반영한다.
16
17 #### 7.2.1. 항목 렌더링
18
19 각 Entry 항목은 한 줄로 렌더링하며, 다음 요소를 좌측에서 우측 순서로 배치해야 한다 (MUST):
20
21 | 순서 | 요소 | 규칙 |
22 | ---- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
23 | 1 | 들여쓰기 | 트리 깊이당 16~24px 패딩. 시각적 계층 구조를 명확히 전달한다 (MUST). |
24 | 2 | 펼침/접기 chevron | 디렉토리(`directory`, `symlink_directory`)에만 표시. `▶`(접힌 상태) / `▼`(펼친 상태). 파일 항목에는 chevron 영역만큼 빈 공간을 유지한다 (MUST). |
25 | 3 | 아이콘 | §7.2.3의 아이콘 매핑에 따라 타입별 아이콘을 표시한다 (MUST). |
26 | 4 | 이름 | `entry.name`을 표시한다. `readable: false`인 항목은 연한 색상(muted color)으로 렌더링하고 잠금 아이콘(🔒)을 우측에 병기한다 (MUST). |
27 | 5 | 부가 정보 | 파일 항목에 한해 `size`를 사람이 읽기 쉬운 단위(KB, MB 등)로 우측 정렬 표시한다 (SHOULD). |
28
29 **호버 및 선택 스타일**: 항목 호버 시 배경색 변경으로 포커스를 표시해야 한다 (MUST). 현재 선택된 디렉토리는 강조 배경색과 좌측 보더(2~3px, primary color)로 구분한다 (MUST).
30
31 #### 7.2.2. 디렉토리 펼침/접기
32
33 - chevron 클릭 또는 디렉토리 더블 클릭으로 펼침/접기를 토글한다 (MUST).
34 - 이미 `children`이 로딩된 디렉토리는 즉시 토글한다. `children`이 없고 깊이 경계에 해당하는 디렉토리는 API를 재호출하여 하위를 로딩한다 (Lazy Expansion).
35 - Lazy Expansion 중에는 해당 디렉토리의 chevron을 스피너로 교체하여 로딩 상태를 표시해야 한다 (MUST).
36 - 로딩 실패 시 chevron을 원래 상태로 복원하고 해당 항목 하위에 인라인 에러 메시지를 표시한다 (MUST).
37
38 #### 7.2.3. 아이콘 매핑
39
40 항목의 `type` 필드에 따라 아이콘을 매핑한다 (MUST):
41
42 | type | 아이콘 | 비고 |
43 | ------------------- | ------------- | --------------------------------------- |
44 | `directory` | 📁 폴더 | 펼친 상태 시 📂(열린 폴더)로 전환 (MAY) |
45 | `file` | 📄 파일 | 확장자별 세분화는 구현에 위임 (MAY) |
46 | `symlink_directory` | 📁↗ 폴더+링크 | 링크 표시를 겸한 폴더 아이콘 |
47 | `symlink_file` | 📄↗ 파일+링크 | 링크 표시를 겸한 파일 아이콘 |
48
49 아이콘 세트는 구현체의 디자인 시스템에 위임하되, 타입 간 시각적 구분이 가능해야 한다 (MUST).
50
51 ### 7.3. 경로 브레드크럼
52
53 트리 뷰 상단에 현재 탐색 경로를 브레드크럼 형태로 표시해야 한다 (MUST).
54
55 - 각 경로 세그먼트는 클릭 가능하며, 클릭 시 해당 레벨로 트리 뷰를 이동한다 (MUST).
56 - 경로 구분자는 `os_type`에 따라 결정한다: `unix` → `/`, `windows` → `\`.
57 - 루트 모드(`base_path`가 빈 문자열)에서는 OS 루트 아이콘(🖥 또는 컴퓨터 아이콘)을 최좌측에 표시한다 (SHOULD).
58 - Windows 환경에서 드라이브 문자(`C:\`, `D:\` 등)는 최상위 브레드크럼 세그먼트로 표시한다 (MUST).
59 - 경로가 길어 한 줄을 초과할 경우, 중간 세그먼트를 `…`으로 축약하되 첫 세그먼트와 마지막 2개 세그먼트는 항상 표시한다 (SHOULD).
60
61 ### 7.4. 로딩 및 에러 상태
62
63 **초기 로딩**: 트리 뷰 영역 전체에 중앙 정렬 스피너를 표시해야 한다 (MUST). 로딩 중에도 수동 입력 필드(§7.6)는 사용 가능해야 한다 (SHOULD).
64
65 **Lazy Expansion 로딩**: §7.2.2에 따라 해당 디렉토리의 chevron을 스피너로 교체한다.
66
67 **에러 상태**:
68
69 | 상황 | 렌더링 |
70 | ----------------------------- | ------------------------------------------------------------------------------------------------------- |
71 | 노드 오프라인 | 트리 뷰 전체를 에러 패널로 교체. "노드에 연결할 수 없습니다" 메시지와 재시도 버튼 표시 (MUST). |
72 | 권한 없음 (`readable: false`) | 해당 항목에 잠금 아이콘(🔒)과 tooltip("접근 권한 없음")을 표시. 디렉토리인 경우 펼침을 비활성화 (MUST). |
73 | 심링크 순환 | 해당 항목을 비활성(disabled) 상태로 렌더링하고 tooltip("순환 심링크")을 표시한다 (MUST). |
74 | Truncation | 잘린 디렉토리 하위에 "외 N개 항목" 안내를 표시한다 (MUST). `total_children_count` 활용. |
75 | API 타임아웃/5xx | 부분 결과가 있으면 표시하고 하단에 "일부 항목을 불러오지 못했습니다" 경고를 표시한다 (SHOULD). |
76
77 ### 7.5. 키보드 내비게이션
78
79 파일 브라우저는 WAI-ARIA Treeview 패턴을 준수해야 한다 (MUST):
80
81 | 키 | 동작 |
82 | --------- | ---------------------------------------------------------------- |
83 | `↑` / `↓` | 트리 항목 간 포커스 이동 |
84 | `→` | 포커스된 디렉토리 펼침. 이미 펼쳐져 있으면 첫 번째 자식으로 이동 |
85 | `←` | 포커스된 디렉토리 접기. 이미 접혀 있으면 부모 디렉토리로 이동 |
86 | `Enter` | 포커스된 디렉토리를 `workspace_path`로 선택 |
87 | `Space` | 포커스된 디렉토리 펼침/접기 토글 |
88 | `Home` | 트리의 첫 번째 항목으로 이동 |
89 | `End` | 트리의 마지막 가시 항목으로 이동 |
90 | `Esc` | 파일 브라우저 다이얼로그 닫기 |
91
92 파일(`type: "file"`)은 포커스는 가능하나 `Enter`로 선택할 수 없다 (MUST). 디렉토리만 `workspace_path`로 선택 가능하다.
93
94 ### 7.6. 작업 디렉토리 선택
95
96 **트리에서 선택**: 디렉토리를 클릭(싱글 클릭)하면 해당 항목을 선택 상태로 표시하고, "선택" 버튼 클릭 또는 `Enter` 키로 확정한다 (MUST). 확정 시 선택된 디렉토리의 `path`를 세션 생성 폼의 `workspace_path`에 반영하고 다이얼로그를 닫는다.
97
98 **수동 입력**: 트리 뷰 하단 또는 상단에 텍스트 입력 필드를 제공해야 한다 (MUST). 사용자가 절대 경로를 직접 입력하여 `workspace_path`를 지정할 수 있다.
99
100 - 입력 필드에 경로를 입력하면, 클라이언트는 해당 경로가 에이전트의 `allowed_directories` 범위 내인지 클라이언트 측에서 사전 검증해야 한다 (MUST).
101 - 범위 밖 경로 입력 시 인라인 경고("허용된 디렉토리 범위 밖입니다")를 표시하고 선택 버튼을 비활성화한다 (MUST).
102 - 유효한 경로 입력 시 트리 뷰를 해당 경로로 자동 이동하여 시각적 확인을 제공한다 (SHOULD).
103
104 ### 7.7. 빈 상태 처리
105
106 에이전트의 `allowed_directories`가 빈 배열이거나 모든 경로에 접근 권한이 없는 경우, 트리 뷰 영역에 다음을 표시해야 한다 (MUST):
107
108 - "탐색 가능한 디렉토리가 없습니다" 안내 메시지
109 - 수동 입력 필드로의 안내 텍스트
110
111 `allowed_directories`가 미설정(제한 없음)인 경우에는 OS 루트부터 정상적으로 트리를 표시한다.
112
113 ---