leerness 1.9.32 → 1.9.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -0
- package/README.md +288 -342
- package/bin/harness.js +306 -66
- package/package.json +1 -1
- package/scripts/e2e.js +79 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.34 — 2026-05-16
|
|
4
|
+
|
|
5
|
+
**방향키 + 스페이스 인터랙티브 multi-select + 256색 그라데이션 배너 + 멀티레벨 sub-agent 오케스트레이션 검증**.
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **`_selectOne()` / `_selectMany()` 헬퍼**: TTY raw mode + readline 이벤트 처리.
|
|
10
|
+
- 방향키 ↑↓ (또는 j/k vim binding) — 커서 이동
|
|
11
|
+
- Space — 토글 (multi-select)
|
|
12
|
+
- a / n — 전체 선택 / 전체 해제
|
|
13
|
+
- Enter — 확정
|
|
14
|
+
- q / ESC / Ctrl+C — 취소 (기본값 또는 빈 배열 반환)
|
|
15
|
+
- **`resolveInstallOptions`에 적용**: 언어 선택 + 스킬 라이브러리 선택을 multi-select UI로 전환.
|
|
16
|
+
- **`setupAgentsCmd`에 적용**: 4 CLI 일괄 활성화를 Space 토글로 선택 (이전엔 각각 yes/no 4번).
|
|
17
|
+
- **ASCII 배너 256색 그라데이션**: 6 라인을 cyan(51) → 자주(165)로 6단계 그라데이션. ★ 강조 + magenta 색 강조 항목.
|
|
18
|
+
- **`--no-interactive-select` 플래그 + `LEERNESS_NO_INTERACTIVE=1` env**: 구식 숫자 prompt 폴백.
|
|
19
|
+
|
|
20
|
+
### 멀티레벨 sub-agent 오케스트레이션 검증 (실측)
|
|
21
|
+
|
|
22
|
+
메인 에이전트 → sub-agent(Claude) → sub-sub-agent(외부 gemini CLI) 3단계 깊이 검증.
|
|
23
|
+
|
|
24
|
+
| 항목 | 결과 |
|
|
25
|
+
|---|---|
|
|
26
|
+
| 단일 gemini 호출 | ✅ 15.6s, 영문 번역 정상 |
|
|
27
|
+
| 병렬 ×2 | ✅ 24s, 출력 분리 정상 (quota retry 1회) |
|
|
28
|
+
| 효율 (순차 3회 33s vs 병렬 3회 15s) | **2.2× 향상** (이론 3× 대비 60%) |
|
|
29
|
+
| 검수 체인 (결과 → 평가) | ✅ "2" → "yes" 정상 |
|
|
30
|
+
| 같은 파일 동시 쓰기 | ⚠ **last-writer-wins, 락 없음 → 데이터 손실 위험** |
|
|
31
|
+
|
|
32
|
+
**결론**:
|
|
33
|
+
- 3단계 오케스트레이션 안전하게 동작
|
|
34
|
+
- 독립 작업(번역/평가/리뷰) 2×+ 효율 향상
|
|
35
|
+
- 같은 리소스 동시 쓰기는 호출자가 파일 경로 격리 책임
|
|
36
|
+
- gemini quota 동시 호출 시 retry → 병렬 확장성 ~3개로 제한
|
|
37
|
+
|
|
38
|
+
### Policy
|
|
39
|
+
- ❌ 비-TTY/CI/`--yes` 시 multi-select prompt 자동 스킵 (defaults 사용)
|
|
40
|
+
- ❌ 같은 파일/리소스 동시 쓰기 sub-agent 분배 금지 (호출자 책임)
|
|
41
|
+
- ✅ 인터랙티브 prompt는 256색 ANSI 미지원 환경에서도 동작 (`LEERNESS_NO_INTERACTIVE=1` 폴백)
|
|
42
|
+
- ✅ q/ESC로 언제든 취소 가능 (기본값으로 fallback)
|
|
43
|
+
|
|
44
|
+
### 실측 (이번 라운드)
|
|
45
|
+
- 워크스페이스 28 프로젝트 일괄 1.9.16~1.9.31 → 1.9.33 → 1.9.34 마이그레이션
|
|
46
|
+
- e2e: 156/156 PASS (1.9.33 153 + multi-select 폴백 + 배너 + --no-interactive-select 3개)
|
|
47
|
+
|
|
48
|
+
## 1.9.33 — 2026-05-15
|
|
49
|
+
|
|
50
|
+
**npx 캐시 함정 방지 — install 시 stale 버전 자동 경고 + 해결 안내**.
|
|
51
|
+
|
|
52
|
+
### 배경
|
|
53
|
+
사용자가 `npx leerness init`(@latest 없이)을 실행하면 npm/npx의 로컬 캐시에 있는 옛 버전이 무한히 재사용되는 함정이 있음. 1.9.32 publish 후에도 사용자 PC에서 1.9.21이 실행되는 사례 확인.
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- **`_warnIfStale()` 헬퍼**: `install()` 진입 시 자동 호출.
|
|
58
|
+
- npm registry latest 비교 (`fetchNpmLatest` + 24h cache 재사용)
|
|
59
|
+
- 현재 실행 중인 VERSION이 registry latest보다 옛날이면 ⚠ 노랑색 경고 박스 출력
|
|
60
|
+
- 해결 명령 2가지 안내: `npx --yes clear-npx-cache && npx leerness@latest init .` 또는 `npm i -g leerness@latest`
|
|
61
|
+
- **init 자체는 계속 진행** (경고만 띄움 — 강제 차단 X)
|
|
62
|
+
- **`--no-stale-check`** 플래그 + **`LEERNESS_NO_STALE_CHECK=1`** env 변수: 경고 스킵
|
|
63
|
+
- **offline + 캐시 없음**: 비교 스킵 (네트워크 차단 환경 안전)
|
|
64
|
+
- **offline + 캐시 fresh**: 캐시값으로 비교 (e2e 등 CI 환경에서도 동작)
|
|
65
|
+
|
|
66
|
+
### Policy
|
|
67
|
+
- ❌ 사용자 init 차단 안 함 (경고만, init은 계속 진행)
|
|
68
|
+
- ✅ 24h 캐시로 매 init마다 npm view 호출 안 함 (cold-start만 12s timeout)
|
|
69
|
+
- ✅ 네트워크 실패 시 silently skip — init 흐름 끊지 않음
|
|
70
|
+
- ✅ `--no-stale-check`/env로 끄기 가능 (CI 친화)
|
|
71
|
+
|
|
72
|
+
### 실측 (이번 라운드)
|
|
73
|
+
- 사용자 PC: `npx leerness init` → 1.9.21 실행됨 (npm latest=1.9.32) — 1.9.33부터 install 시 즉시 경고
|
|
74
|
+
- e2e: 153/153 PASS (1.9.32 151 + stale 경고/스킵 2)
|
|
75
|
+
|
|
3
76
|
## 1.9.32 — 2026-05-15
|
|
4
77
|
|
|
5
78
|
**ASCII 배너 + `leerness setup-agents` 인터랙티브 설정 + 미설치 CLI 자동 설치 시도**.
|