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 +39 -0
- package/README.md +2 -2
- package/bin/harness.js +22 -3
- package/package.json +1 -1
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
|
-
[](https://www.npmjs.com/package/leerness) [](https://www.npmjs.com/package/leerness) []() []() []() []() []() []() []() []() []() []()
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
╔══════════════════════════════════════════════════════════════╗
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
║ ██║ ██╔══╝ ██╔══╝ ██╔══██╗██║╚██╗██║██╔══╝ ╚════██║ ║
|
|
13
13
|
║ ███████╗███████╗███████╗██║ ██║██║ ╚████║███████╗███████║ ║
|
|
14
14
|
║ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝ ║
|
|
15
|
-
║ v1.9.
|
|
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.
|
|
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
|
-
|
|
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], {
|