leerness 1.9.161 → 1.9.162

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 CHANGED
@@ -1,5 +1,42 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.162 — 2026-05-20
4
+
5
+ **handoff 헤드라인 9번째 요소 — REPL slash 사용량 (24h) 노출.**
6
+
7
+ 자율 모드 92 라운드. 1.9.149 observability `runs/*.jsonl` 의 실용화 — REPL 활용도 가시화.
8
+
9
+ ### Added — 헤드라인 `🪄 slash 24h N회`
10
+ - 1.9.150/161 REPL slash 명령 8종 (`:verify` `:audit` `:handoff` `:health` `:lessons` `:brainstorm` `:tasks` `:plan`) 호출 빈도
11
+ - `.harness/runs/*.jsonl` 에서 `kind: 'agent_repl_slash'` + 24h 이내 entry 카운트
12
+ - 최근 200 파일만 스캔 (성능 보호)
13
+ - 슬래시 호출 없으면 노출 안 함 (노이즈 최소화)
14
+
15
+ ### Headline 진화
16
+ | 요소 | 도입 |
17
+ |---|---|
18
+ | drift level | 1.9.81 |
19
+ | 🔒 보안 | 1.9.81 |
20
+ | 🔌 MCP N회 | 1.9.81 |
21
+ | 📒 skill query | 1.9.81 |
22
+ | 📚 N skills | 1.9.81 |
23
+ | ⚕ health | 1.9.93 |
24
+ | 🧠 mem T/D/R/P/L | 1.9.113 |
25
+ | 🤖 agents N | 1.9.152 |
26
+ | **🪄 slash 24h** | **1.9.162** |
27
+
28
+ ### Use Cases
29
+ - 메인 에이전트가 매 세션 시작 시 "어제 REPL을 N회 사용했군 → 메모리 누적 신호" 즉시 인지
30
+ - 사용자가 leerness 도입 효과 추이 가시화
31
+ - observability lite (1.9.149) 의 첫 실용 application
32
+
33
+ ### Verified
34
+ - e2e 217/217 ✓
35
+ - stress-v107: 13/13 (헤드라인 9번째 6종 + 누적 회귀 7종)
36
+ - VERSION = 1.9.162 / autonomous-rounds = 92
37
+
38
+ ---
39
+
3
40
  ## 1.9.161 — 2026-05-20
4
41
 
5
42
  **REPL Memory Slash 4종 추가 — Memory Surface 즉시 조회 (1.9.150 slash 패턴 확장).**
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **AI 코딩 에이전트의 거짓 완료·중복·망각·충돌을 막아주는 검수·기억·협업 CLI 하네스.**
4
4
 
5
- [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.161-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v106-13%2F13-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-50-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-91-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-22_rounds-success)]() [![repl-slash](https://img.shields.io/badge/REPL_slash-8_commands-success)]() [![provider-crud](https://img.shields.io/badge/provider_registry-CRUD%2Bsync-success)]() [![sandbox](https://img.shields.io/badge/runCommandSafe-cwd_jail%2Benv_scrub-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
5
+ [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.162-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v107-13%2F13-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-50-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-92-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-23_rounds-success)]() [![repl-slash](https://img.shields.io/badge/REPL_slash-8_commands%2B24h_stats-success)]() [![provider-crud](https://img.shields.io/badge/provider_registry-CRUD%2Bsync-success)]() [![sandbox](https://img.shields.io/badge/runCommandSafe-cwd_jail%2Benv_scrub-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
6
6
 
7
7
  ```
8
8
  ╔══════════════════════════════════════════════════════════════╗
@@ -12,7 +12,7 @@
12
12
  ║ ██║ ██╔══╝ ██╔══╝ ██╔══██╗██║╚██╗██║██╔══╝ ╚════██║ ║
13
13
  ║ ███████╗███████╗███████╗██║ ██║██║ ╚████║███████╗███████║ ║
14
14
  ║ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝ ║
15
- ║ v1.9.161 AI Agent Reliability Harness + Sandbox ║
15
+ ║ v1.9.162 AI Agent Reliability Harness + Sandbox ║
16
16
  ║ verify · remember · orchestrate · audit · sandbox · drift ║
17
17
  ╚══════════════════════════════════════════════════════════════╝
18
18
  ```
package/bin/harness.js CHANGED
@@ -6,7 +6,7 @@ const path = require('path');
6
6
  const cp = require('child_process');
7
7
  const readline = require('readline');
8
8
 
9
- const VERSION = '1.9.161';
9
+ const VERSION = '1.9.162';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -2965,10 +2965,30 @@ function handoff(root) {
2965
2965
  parts.push(`🤖 agents ${ready.length} (${ready.map(c => c.id).join(',')})`);
2966
2966
  }
2967
2967
  } catch {}
2968
+ // 9) 1.9.162: REPL slash 사용량 (24h) — 1.9.149 observability runs/*.jsonl 활용
2969
+ // REPL slash 명령 (1.9.150 + 1.9.161 = 8종) 사용 빈도 노출 → 사용자가 REPL 활용도 인지
2970
+ try {
2971
+ const runsDir = _runsDir(root);
2972
+ if (exists(runsDir)) {
2973
+ const cutoff = Date.now() - 24 * 3600 * 1000;
2974
+ const files = fs.readdirSync(runsDir).filter(f => f.endsWith('.jsonl'));
2975
+ let slashCount = 0;
2976
+ for (const f of files.slice(-200)) { // 최근 200 파일만 (성능)
2977
+ try {
2978
+ const txt = read(path.join(runsDir, f));
2979
+ for (const line of txt.split('\n').filter(Boolean)) {
2980
+ const j = JSON.parse(line);
2981
+ if (j.kind === 'agent_repl_slash' && j.at && new Date(j.at).getTime() >= cutoff) slashCount++;
2982
+ }
2983
+ } catch {}
2984
+ }
2985
+ if (slashCount > 0) parts.push(`🪄 slash 24h ${slashCount}회`);
2986
+ }
2987
+ } catch {}
2968
2988
  if (parts.length) {
2969
2989
  const isTty = process.stdout && process.stdout.isTTY;
2970
2990
  const cy = s => isTty ? `\x1b[36m${s}\x1b[0m` : s;
2971
- log(cy(`📊 헤드라인 (1.9.81/93/113/152): ${parts.join(' · ')}`));
2991
+ log(cy(`📊 헤드라인 (1.9.81/93/113/152/162): ${parts.join(' · ')}`));
2972
2992
  }
2973
2993
  } catch {}
2974
2994
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.161",
3
+ "version": "1.9.162",
4
4
  "description": "Leerness: 비파괴 마이그레이션, 자동 버전 감지·업데이트, 계획/진행/핸드오프 자동화, 게으름·시크릿·인코딩 자동 가드, Claude Code 슬래시 통합을 갖춘 한국어 우선 AI 개발 하네스.",
5
5
  "keywords": [
6
6
  "leerness",