leerness 1.9.135 → 1.9.137

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,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.137 — 2026-05-20
4
+
5
+ **`.harness/session-workflow.md` 템플릿 갱신 — Memory CRUD Quick Reference 추가** — 신규 \`init\` 워크스페이스의 AI 에이전트에 5 surface CRUD 매트릭스 + archive cycle 가이드 제공.
6
+
7
+ ### Updated — session-workflow.md
8
+ - Step 6 (세션 마감) 뒤에 **🧠 Memory CRUD Quick Reference** 섹션 추가
9
+ - 5 surface (tasks/decisions/lessons/plan/rules) × CRUD ops 표
10
+ - archive cycle workflow 3 단계 예시
11
+ - DELETE→RESTORE 복구 사용 시나리오
12
+
13
+ ### 영향
14
+ - 신규 `leerness init` 워크스페이스: 새 템플릿 적용
15
+ - 기존 워크스페이스: `leerness audit --fix` 으로 갱신 가능
16
+
17
+ ## 1.9.136 — 2026-05-20
18
+
19
+ **MCP `leerness_drift_check` JSON 응답 fix** — drift check CLI 는 `--json` 옵션을 지원하지만 MCP 라우팅이 plain 텍스트를 반환하던 버그 fix.
20
+
21
+ ### Fixed — leerness_drift_check JSON 응답
22
+ - MCP 라우팅에 `--json` 플래그 자동 추가
23
+ - 응답 schema: `{ root, score, level, signals[], healthy }`
24
+ - 외부 AI 가 drift 상태를 정확한 구조화 데이터로 회수
25
+
26
+ ### MCP 도구 JSON 일관성
27
+ 이제 모든 MCP 도구가 plain 텍스트 대신 JSON 응답:
28
+ - handoff, health, audit, session_close, lazy_detect, benchmark, retro, lessons, memory_status, brainstorm, **drift_check (1.9.136 fix)**, 외 listing 도구 다수
29
+
3
30
  ## 1.9.135 — 2026-05-20
4
31
 
5
32
  **MCP 42번째 도구 `leerness_rule_remove`** — Rule surface CRUD MCP 완전 완성.
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.135-green)]() [![tests](https://img.shields.io/badge/e2e-219%2F219-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-42-blue)]() [![json](https://img.shields.io/badge/--json-20_commands-blueviolet)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-65-blueviolet)]() [![mcp-crud](https://img.shields.io/badge/MCP--CRUD--5surfaces-complete-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.137-green)]() [![tests](https://img.shields.io/badge/e2e-219%2F219-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-42-blue)]() [![json](https://img.shields.io/badge/--json-20_commands-blueviolet)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-67-blueviolet)]() [![mcp-crud](https://img.shields.io/badge/MCP--CRUD--5surfaces-complete-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.135 AI Agent Reliability Harness ║
15
+ ║ v1.9.137 AI Agent Reliability Harness ║
16
16
  ║ verify · remember · orchestrate · audit · prevent 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.135';
9
+ const VERSION = '1.9.137';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -286,6 +286,31 @@ leerness skill suggest . # 1.9.53 — 반복 패턴 → 새 skill
286
286
  leerness drift check . # 4 신호 + 4 레벨 점검
287
287
  leerness audit . --fix # 누락 메타 자동 보강
288
288
  \`\`\`
289
+
290
+ ## 🧠 Memory CRUD Quick Reference (1.9.107~135)
291
+
292
+ 5 Memory Surface 모두 CRUD CLI + MCP 노출 완성:
293
+
294
+ | Surface | CREATE | READ | DELETE | RESTORE |
295
+ |---|---|---|---|---|
296
+ | **tasks** | task add | task list --json (1.9.134) | task drop | task update |
297
+ | **decisions** | decision add | decision list --json | decision drop | memory restore decisions |
298
+ | **lessons** | lesson save | lesson list [--tag] | lesson drop | memory restore lessons |
299
+ | **plan** | plan add | plan list --json | plan remove | memory restore plan |
300
+ | **rules** | rule add | rule list --json | rule remove | (rule pause/resume) |
301
+
302
+ \`\`\`bash
303
+ leerness memory status [--json] # 5종 상태 통합 조회 (T/D/R/P/L 카운트)
304
+ leerness memory archive list [--surface s] # DELETE archive 통합 조회 (복원 후보)
305
+ leerness memory restore <surface> <target> # archive → active 복귀 (DELETE→RESTORE cycle, 1.9.128)
306
+ \`\`\`
307
+
308
+ **잘못 저장한 항목 복구**:
309
+ 1. \`memory archive list\` — 복원 후보 확인
310
+ 2. \`memory restore decisions "PostgreSQL"\` — archive → active
311
+ 3. handoff 가 매 세션 자동으로 24h 내 archive 활동 알림 (1.9.129)
312
+
313
+
289
314
  - session close가 누락되면 다음 세션 시작 시 drift critical 발생.
290
315
  - 자동 회복 옵션: \`drift check --auto-fix\` (critical 시 session close 자동 실행).
291
316
  - 1.9.56+ handoff가 매 세션 시작 시 **과거 lessons 자동 재상기** (현재 task 키워드 기준).
@@ -336,6 +361,8 @@ leerness audit . --fix # 누락 메타 자동 보강
336
361
  - 1.9.133+ \`brainstorm\` 텍스트 모드 lessonsExplicit / planMilestones display 추가 — 1.9.116에서 데이터 수집은 했지만 display 누락된 pre-existing gap fix.
337
362
  - 1.9.134+ \`leerness task list --json\` + MCP **41 도구** (\`leerness_task_list\`) — progress-tracker.md task 전체 JSON 조회 + \`--status\` 필터. Task surface CRUD MCP 완전 완성 (add/list/update/drop).
338
363
  - 1.9.135+ MCP **42 도구** (\`leerness_rule_remove\`) — rules.md 에서 특정 rule 제거 + archive 보존. **5 surface CRUD MCP 완전 완성** (task/decision/lesson/plan/rule 모두 add/list/delete MCP 노출).
364
+ - 1.9.136+ MCP \`leerness_drift_check\` JSON 응답 fix — \`--json\` 플래그 자동 추가하여 외부 AI가 구조화된 drift 신호 회수 (score, level, signals[], healthy).
365
+ - 1.9.137+ \`.harness/session-workflow.md\` 템플릿에 **🧠 Memory CRUD Quick Reference** 섹션 추가 — 5 surface × CRUD 매트릭스 + archive cycle 워크플로 가이드. 신규 \`init\` 워크스페이스 즉시 적용.
339
366
 
340
367
  ---
341
368
 
@@ -4294,7 +4321,7 @@ function _banner(opts = {}) {
4294
4321
  lines.push('');
4295
4322
  for (const ln of lines) log(ln);
4296
4323
  if (opts.quickStart) {
4297
- log(C.bold(C.cyan(' ✨ 빠른 시작 (1.9.135+ MCP 42 rule_remove (5 surface CRUD 완성)65 라운드 자율 누적)')));
4324
+ log(C.bold(C.cyan(' ✨ 빠른 시작 (1.9.137+ session-workflow Memory CRUD ref67 라운드 자율 누적)')));
4298
4325
  log(' ' + C.green('npx leerness@latest init .') + C.dim(' # 신규 프로젝트 + 외부 AI CLI 설정'));
4299
4326
  log(' ' + C.green('npx leerness handoff .') + C.dim(' # 컨텍스트 + lessons + 매칭 skill + history hit + brainstorm hits + 헤드라인'));
4300
4327
  log(' ' + C.green('npx leerness handoff . --quiet') + C.dim(' # 자동화/CI 모드 (1.9.99) — 자동 회수 라인 비활성'));
@@ -8573,7 +8600,7 @@ function mcpServeCmd(root) {
8573
8600
  // 노출할 leerness 도구 목록
8574
8601
  const TOOLS = [
8575
8602
  { name: 'leerness_handoff', description: '워크스페이스 컨텍스트(plan/progress/decisions) 적재', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
8576
- { name: 'leerness_drift_check', description: 'AI 에이전트 leerness 미사용 drift 자동 감지 (4 신호 + 4단계 레벨)', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
8603
+ { name: 'leerness_drift_check', description: '1.9.136 — AI 에이전트 leerness 미사용 drift 자동 감지 JSON ({ root, score, level, signals[], healthy }). 5+ 신호 + 4단계 레벨 (🟢 healthy / 🟡 warning / 🟠 caution / 🔴 critical). 보안 신호 통합 (1.9.78)', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
8577
8604
  { name: 'leerness_audit', description: '1.9.102 — 워크스페이스 일관성 감사 JSON (warnings/failures/fixed/healthy + findings[]. kind 11종: design_dup/design_system_default/reuse_map_empty/milestone_unlinked/handoff_not_generated/current_state_stale/readme_version_mismatch/npm_cve/gitignore_missing_secrets/env_keys_missing/strict_promoted)', inputSchema: { type: 'object', properties: { path: { type: 'string' }, fix: { type: 'boolean' }, strict: { type: 'boolean' } } } },
8578
8605
  { name: 'leerness_verify_claim', description: 'AI 거짓 완료 자동 검증 (evidence 파일 + 실 테스트 실행)', inputSchema: { type: 'object', properties: { taskId: { type: 'string' }, path: { type: 'string' }, runTests: { type: 'boolean' }, strictClaims: { type: 'boolean' } }, required: ['taskId'] } },
8579
8606
  { name: 'leerness_contract_verify', description: '명세 ↔ 구현 함수/필드 일치 자동 검사', inputSchema: { type: 'object', properties: { spec: { type: 'string' }, impl: { type: 'string' } }, required: ['spec', 'impl'] } },
@@ -8646,7 +8673,7 @@ function mcpServeCmd(root) {
8646
8673
  try {
8647
8674
  switch (name) {
8648
8675
  case 'leerness_handoff': cliArgs = ['handoff', targetPath, '--compact', '--no-drift-check']; break;
8649
- case 'leerness_drift_check': cliArgs = ['drift', 'check', targetPath]; break;
8676
+ case 'leerness_drift_check': cliArgs = ['drift', 'check', targetPath, '--json']; break;
8650
8677
  case 'leerness_audit': cliArgs = ['audit', targetPath, '--json', ...(args.fix ? ['--fix'] : []), ...(args.strict ? ['--strict'] : [])]; break;
8651
8678
  case 'leerness_verify_claim': cliArgs = ['verify-claim', args.taskId, '--path', targetPath, ...(args.runTests ? ['--run-tests'] : []), ...(args.strictClaims ? ['--strict-claims'] : [])]; break;
8652
8679
  case 'leerness_contract_verify': cliArgs = ['contract', 'verify', args.spec, args.impl]; break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.135",
3
+ "version": "1.9.137",
4
4
  "description": "Leerness: 비파괴 마이그레이션, 자동 버전 감지·업데이트, 계획/진행/핸드오프 자동화, 게으름·시크릿·인코딩 자동 가드, Claude Code 슬래시 통합을 갖춘 한국어 우선 AI 개발 하네스.",
5
5
  "keywords": [
6
6
  "leerness",