leerness 1.9.160 → 1.9.161

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,44 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.161 — 2026-05-20
4
+
5
+ **REPL Memory Slash 4종 추가 — Memory Surface 즉시 조회 (1.9.150 slash 패턴 확장).**
6
+
7
+ 자율 모드 91 라운드. REPL 안에서 leerness 메모리 (lessons / brainstorm / tasks / plan) 즉시 조회 가능 → 대화 중 컨텍스트 회수 마찰 0.
8
+
9
+ ### Added — REPL `:lessons` / `:brainstorm` / `:tasks` / `:plan`
10
+ - `:lessons [query]` — `leerness lessons --query <q>` 또는 인자 없이 전체 회수
11
+ - `:brainstorm <topic>` — `leerness brainstorm "topic"` (키워드 필수, 누락 시 안내)
12
+ - `:tasks` — `leerness task list` (현재 task 상태)
13
+ - `:plan` — `leerness plan show` (현재 milestone)
14
+
15
+ ### 동작 방식
16
+ - 1.9.150 slash 패턴 재사용 — `runCommandSafe` 경유 (sandbox 자동 적용)
17
+ - `_recordRun` observability — `kind: 'agent_repl_slash'` 자동 기록
18
+ - 출력 30줄로 제한 (REPL 화면 보호)
19
+ - 60초 timeout
20
+
21
+ ### REPL Slash 명령 카탈로그 갱신
22
+ | 1.9.150 (검수) | 1.9.161 (메모리) |
23
+ |---|---|
24
+ | `:verify` | `:lessons` |
25
+ | `:audit` | `:brainstorm` |
26
+ | `:handoff` | `:tasks` |
27
+ | `:health` | `:plan` |
28
+
29
+ ### Use Cases
30
+ - 메인 에이전트가 새 task 시작 전 `:lessons "auth"` 로 과거 실수 회수
31
+ - `:brainstorm "deployment"` 로 관련 task-log / decisions / lessons 통합 검색
32
+ - `:tasks` 로 진행 중 task 즉시 확인 후 :provider claude 로 sub-agent 분배
33
+ - `:plan` 으로 현재 milestone 진행률 확인
34
+
35
+ ### Verified
36
+ - e2e 217/217 ✓
37
+ - stress-v106: 13/13 (handleMeta 분기 4종 + REPL 시작 배너/help 안내 2종 + 누적 회귀 7종)
38
+ - VERSION = 1.9.161 / autonomous-rounds = 91
39
+
40
+ ---
41
+
3
42
  ## 1.9.160 — 2026-05-20
4
43
 
5
44
  **🎉 자율 모드 90 라운드 마일스톤 + `provider sync` (외부 catalog 자동 동기화).**
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.160-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v105-20%2F20-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-50-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-90%20%F0%9F%8E%89-brightgreen)]() [![main-push](https://img.shields.io/badge/release--main--push-21_rounds-success)]() [![provider-crud](https://img.shields.io/badge/provider_registry-CRUD%2Bsync-success)]() [![multi-execute](https://img.shields.io/badge/agents_multi-real_spawn%2Bconsensus-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.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)]()
6
6
 
7
7
  ```
8
8
  ╔══════════════════════════════════════════════════════════════╗
@@ -12,7 +12,7 @@
12
12
  ║ ██║ ██╔══╝ ██╔══╝ ██╔══██╗██║╚██╗██║██╔══╝ ╚════██║ ║
13
13
  ║ ███████╗███████╗███████╗██║ ██║██║ ╚████║███████╗███████║ ║
14
14
  ║ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝ ║
15
- ║ v1.9.160 AI Agent Reliability Harness + Sandbox ║
15
+ ║ v1.9.161 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.160';
9
+ const VERSION = '1.9.161';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -10757,6 +10757,7 @@ async function _agentRepl(root, opts) {
10757
10757
  log('');
10758
10758
  log(C.dim(' 메타 명령: :help | :model <m> | :role <r> | :provider <p> | :status | :clear | :save | :history | :quit'));
10759
10759
  log(C.dim(' Slash 명령 (1.9.150): :verify | :audit | :handoff | :health'));
10760
+ log(C.dim(' Memory Slash (1.9.161): :lessons | :brainstorm <topic> | :tasks | :plan'));
10760
10761
  log(C.dim(` 현재 — provider=${state.provider} model=${state.model || '(기본)'} role=${state.role} permissions=${_readPermissions(root).mode}`));
10761
10762
  // 1.9.155: REPL 진입 시 handoff 컨텍스트 자동 노출 (UX 개선 — 사용자가 매번 :handoff 안 해도 컨텍스트 인지)
10762
10763
  try {
@@ -10802,6 +10803,11 @@ async function _agentRepl(root, opts) {
10802
10803
  log(' :audit — leerness audit (보안 + drift + lazy)');
10803
10804
  log(' :handoff — leerness handoff --quiet (현재 컨텍스트 요약)');
10804
10805
  log(' :health — leerness health --json (종합 헬스 체크)');
10806
+ log(C.bold('\n Memory Slash (1.9.161) — Memory Surface 즉시 조회:'));
10807
+ log(' :lessons [query] — leerness lessons (과거 결정/실수 회수)');
10808
+ log(' :brainstorm <topic> — leerness brainstorm "topic" (관련 컨텍스트 회수)');
10809
+ log(' :tasks — leerness task list (현재 task 상태)');
10810
+ log(' :plan — leerness plan show (현재 milestone)');
10805
10811
  return false;
10806
10812
  }
10807
10813
  if (op === 'model') {
@@ -10899,13 +10905,26 @@ async function _agentRepl(root, opts) {
10899
10905
  return false;
10900
10906
  }
10901
10907
  // 1.9.150: leerness 내부 명령 slash-commands — :verify / :audit / :handoff / :health
10902
- if (op === 'verify' || op === 'audit' || op === 'handoff' || op === 'health') {
10908
+ // 1.9.161: Memory Surface 조회 slash 추가 :lessons / :brainstorm / :tasks / :plan
10909
+ if (op === 'verify' || op === 'audit' || op === 'handoff' || op === 'health'
10910
+ || op === 'lessons' || op === 'brainstorm' || op === 'tasks' || op === 'plan') {
10911
+ const query = rest.join(' ').trim();
10903
10912
  const subArgs = {
10904
10913
  verify: ['verify-code', root],
10905
10914
  audit: ['audit', root],
10906
10915
  handoff: ['handoff', root, '--quiet', '--no-drift-check'],
10907
- health: ['health', root, '--json']
10916
+ health: ['health', root, '--json'],
10917
+ // 1.9.161 Memory Surface slash 4종
10918
+ lessons: query ? ['lessons', '--query', query, '--path', root] : ['lessons', '--path', root],
10919
+ brainstorm: query ? ['brainstorm', query, '--path', root] : ['brainstorm', '--path', root],
10920
+ tasks: ['task', 'list', '--path', root],
10921
+ plan: ['plan', 'show', '--path', root]
10908
10922
  }[op];
10923
+ // 인자 필요한데 누락 시 안내 (brainstorm 은 인자 필수)
10924
+ if (op === 'brainstorm' && !query) {
10925
+ log(C.yel(` ⚠ :brainstorm 은 키워드 필요 — 예: :brainstorm "auth bug"`));
10926
+ return false;
10927
+ }
10909
10928
  log(C.dim(` → leerness ${subArgs.join(' ')}`));
10910
10929
  const t0 = Date.now();
10911
10930
  const r = runCommandSafe(process.execPath, [__filename, ...subArgs], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.160",
3
+ "version": "1.9.161",
4
4
  "description": "Leerness: 비파괴 마이그레이션, 자동 버전 감지·업데이트, 계획/진행/핸드오프 자동화, 게으름·시크릿·인코딩 자동 가드, Claude Code 슬래시 통합을 갖춘 한국어 우선 AI 개발 하네스.",
5
5
  "keywords": [
6
6
  "leerness",