leerness 1.9.232 β 1.9.234
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 +69 -0
- package/README.md +3 -3
- package/bin/harness.js +159 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,74 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.234 β 2026-05-23
|
|
4
|
+
|
|
5
|
+
**π handoff/session close/health --json recentChanges ν΅ν© (8 νλ μμ±) β μΈλΆ AI μ΅κ·Ό 5 λΌμ΄λ μ¦μ μΈμ§.**
|
|
6
|
+
|
|
7
|
+
### 1. handoff/session close/health --json 8λ²μ§Έ ν΅ν© νλ `recentChanges`
|
|
8
|
+
- git tag κΈ°λ° μ΅κ·Ό 5 λΌμ΄λμ ν΅μ¬ λ³κ²½ μλ νμ
|
|
9
|
+
- νμ: `[{ version, date, subject }]` (κ°μ₯ μ΅κ·ΌλΆν°)
|
|
10
|
+
- AI κ° "μ΅κ·Ό 무μμ΄ λ°λμλ?"λ₯Ό λ¨μΌ νΈμΆλ‘ μΈμ§ β 컨ν
μ€νΈ μ μ½
|
|
11
|
+
- 1.9.218 (4 νλ) β 1.9.223 (5) β 1.9.227 (6) β 1.9.230 (7) β 1.9.234 (**8 νλ**)
|
|
12
|
+
|
|
13
|
+
### 2. 3 λͺ
λ Ή μΌκ΄μ± λ§€νΈλ¦μ€ β 3 Γ 8 = 24 ν΅ν© ν¬μΈνΈ
|
|
14
|
+
- handoff/session close/health λμΌ νμ + λμΌ κ²°κ³Ό
|
|
15
|
+
- μΈλΆ μλν/CI μ΄λ λͺ
λ ΉμΌλ‘ μ‘°νν΄λ λμΌ μλ΅
|
|
16
|
+
|
|
17
|
+
### 3. AI μΈμ§ λΉμ© μ κ°
|
|
18
|
+
- κΈ°μ‘΄: AI κ° CHANGELOG.md μ½κΈ° β ν ν° λ€λ μλΉ
|
|
19
|
+
- 1.9.234: handoff --json ν λ²μ μ΅κ·Ό 5 λΌμ΄λ μλ νμ β ~500 ν ν° μ μ½
|
|
20
|
+
|
|
21
|
+
### 4. λμ νκ· (1.9.207~233) β λͺ¨λ μ μ§
|
|
22
|
+
|
|
23
|
+
### 5. stress-v179 β 17/17 PASS
|
|
24
|
+
- 1.9.234 (7): VERSION + handoff/session close/health JSON + 3 λͺ
λ Ή μΌκ΄μ± + 8 νλ κ²μ¦ + νν κ²μ¦
|
|
25
|
+
- μ±λ₯ (2): cold_start avg 376ms / handoff --json (8 νλ) 1109ms
|
|
26
|
+
- λμ νκ· (8): 1.9.207~233
|
|
27
|
+
|
|
28
|
+
### 6. μλ release (96 λΌμ΄λ main-push streak Β· 57 λΌμ΄λ npm publish streak)
|
|
29
|
+
|
|
30
|
+
π **JSON ν΅ν© λ§€νΈλ¦μ€ 8 νλ μμ±** β μΈλΆ AI κ° leerness μν + μ΅κ·Ό λ³κ²½ λͺ¨λ ν λ²μ νμ
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 1.9.233 β 2026-05-23
|
|
35
|
+
|
|
36
|
+
**π leerness commands μ λͺ
λ Ή (9 μΉ΄ν
κ³ λ¦¬ 51 CLI) + MCP 65λ²μ§Έ λꡬ.**
|
|
37
|
+
|
|
38
|
+
### 1. `leerness commands` μ λͺ
λ Ή β μΉ΄ν
κ³ λ¦¬νλ μ 체 CLI λͺ©λ‘
|
|
39
|
+
- **9 μΉ΄ν
κ³ λ¦¬ Β· 51 λͺ
λ Ή** ν λμ:
|
|
40
|
+
- status (8) β handoff/health/pulse/round-history/milestones/session-resume/which/memory status
|
|
41
|
+
- task (5) β add/update/drop/export + next-action
|
|
42
|
+
- memory (4) β decision/rule/plan/lesson CRUD
|
|
43
|
+
- audit (10) β audit/drift/scan secrets/encoding/lazy/verify-claim/optimism/requests/pre-wake/idempotency
|
|
44
|
+
- workflow (7) β session close/resume/route/agents/review-request/review/brainstorm
|
|
45
|
+
- release (3) β sync-main/pack/publish
|
|
46
|
+
- skill (2) β list/info/learn/use/optimize/match/suggest + install/install-top/publish/search/discover
|
|
47
|
+
- bridge (3) β web/pc/lsp
|
|
48
|
+
- config (9) β init/migrate/update/wakeup-interval/workspace-dir/intent/constraints/provider/commands
|
|
49
|
+
- `--json` μ΅μ
(μΈλΆ μλν)
|
|
50
|
+
|
|
51
|
+
### 2. MCP 65λ²μ§Έ λꡬ β `leerness_commands`
|
|
52
|
+
- μΈλΆ AI κ° μ 체 CLI λͺ©λ‘μ μ§μ νμ β λ§€λ΄μΌ/λμλ§ λμ μμ±
|
|
53
|
+
- MCP 64 β 65 (+1)
|
|
54
|
+
|
|
55
|
+
### 3. μ€ μΈ‘μ β leerness μ 체 νλ©΄ κ°μν
|
|
56
|
+
- 9 μΉ΄ν
κ³ λ¦¬ Γ νκ· 5.7 λͺ
λ Ή = **51 CLI λͺ
λ Ή**
|
|
57
|
+
- handoff/health/pulse λ± ν΅μ¬ status λͺ
λ Ήμ status μΉ΄ν
κ³ λ¦¬μ κ·Έλ£Ήν
|
|
58
|
+
|
|
59
|
+
### 4. λμ νκ· (1.9.207~232) β λͺ¨λ μ μ§
|
|
60
|
+
|
|
61
|
+
### 5. stress-v178 β 16/16 PASS
|
|
62
|
+
- 1.9.233 (6): VERSION + CLI + --json μΉ΄ν
κ³ λ¦¬ κ²μ¦ + human μΆλ ₯ + MCP 65 + μ€ νΈμΆ
|
|
63
|
+
- μ±λ₯ (2): cold_start avg 413ms / commands 390ms (μ μ λ°μ΄ν°, λΉ λ¦)
|
|
64
|
+
- λμ νκ· (8): 1.9.207~232
|
|
65
|
+
|
|
66
|
+
### 6. μλ release (95 λΌμ΄λ main-push streak Β· 56 λΌμ΄λ npm publish streak)
|
|
67
|
+
|
|
68
|
+
π **μ 체 νλ©΄ κ°μν** β 9 μΉ΄ν
κ³ λ¦¬ Γ 51 CLI Γ 65 MCP λꡬ νλμ
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
3
72
|
## 1.9.232 β 2026-05-23
|
|
4
73
|
|
|
5
74
|
**π pulse memorySurface BUG fix + handoff --pulse μ΅μ
+ session close μλ pulse.**
|
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) []() []() []() []() []() []() []() [-brightgreen)]() []() []() []()
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
β βββ ββββββ ββββββ ββββββββββββββββββββββββ ββββββββ β
|
|
13
13
|
β βββββββββββββββββββββββββββ ββββββ ββββββββββββββββββββββ β
|
|
14
14
|
β βββββββββββββββββββββββββββ ββββββ βββββββββββββββββββββ β
|
|
15
|
-
β v1.9.
|
|
15
|
+
β v1.9.234 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π JSON 8 νλ μμ± (3 λͺ
λ Ή Γ 8 = 24 ν΅ν© ν¬μΈνΈ) β
|
|
18
18
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
19
19
|
```
|
|
20
20
|
|
package/bin/harness.js
CHANGED
|
@@ -7,7 +7,7 @@ const cp = require('child_process');
|
|
|
7
7
|
const os = require('os'); // 1.9.178: _publishToNpm μμ os.tmpdir() μ¬μ© (μ μ import)
|
|
8
8
|
const readline = require('readline');
|
|
9
9
|
|
|
10
|
-
const VERSION = '1.9.
|
|
10
|
+
const VERSION = '1.9.234';
|
|
11
11
|
|
|
12
12
|
// 1.9.184: DEP0190 (child_process shell: true) deprecation warning μ΅μ (μ¬μ©μ λͺ
μ).
|
|
13
13
|
// leerness λ cross-platform PATH resolution μ μν΄ shell: true λ₯Ό μλμ μΌλ‘ μ¬μ© (claude.cmd / ollama.cmd λ± Windows .cmd μ²λ¦¬).
|
|
@@ -2196,6 +2196,36 @@ function milestonesCmd(root) {
|
|
|
2196
2196
|
}
|
|
2197
2197
|
}
|
|
2198
2198
|
|
|
2199
|
+
// 1.9.234: recentChanges β μ΅κ·Ό N λΌμ΄λμ ν΅μ¬ λ³κ²½ μμ½ (git tag commit subject)
|
|
2200
|
+
// μλ΅: [{ version, date, subject }] (κ°μ₯ μ΅κ·ΌλΆν°)
|
|
2201
|
+
function _computeRecentChanges(root, limit = 5) {
|
|
2202
|
+
const items = [];
|
|
2203
|
+
try {
|
|
2204
|
+
const r = cp.spawnSync('git', ['log', '--tags', '--simplify-by-decoration', '--pretty=format:%H|%D|%ad|%s', '--date=short', '-n', String(limit * 3)], {
|
|
2205
|
+
cwd: root, encoding: 'utf8', timeout: 5000
|
|
2206
|
+
});
|
|
2207
|
+
if (r.status !== 0 || !r.stdout) return items;
|
|
2208
|
+
const lines = r.stdout.split('\n').filter(l => l.trim());
|
|
2209
|
+
for (const line of lines) {
|
|
2210
|
+
const idx1 = line.indexOf('|');
|
|
2211
|
+
if (idx1 < 0) continue;
|
|
2212
|
+
const idx2 = line.indexOf('|', idx1 + 1);
|
|
2213
|
+
const idx3 = line.indexOf('|', idx2 + 1);
|
|
2214
|
+
if (idx2 < 0 || idx3 < 0) continue;
|
|
2215
|
+
const refs = line.slice(idx1 + 1, idx2);
|
|
2216
|
+
const date = line.slice(idx2 + 1, idx3);
|
|
2217
|
+
const subject = line.slice(idx3 + 1);
|
|
2218
|
+
const m = refs.match(/tag: v(\d+\.\d+\.\d+)/);
|
|
2219
|
+
if (!m) continue;
|
|
2220
|
+
const version = m[1];
|
|
2221
|
+
const cleanSubject = subject.replace(/^\d+\.\d+\.\d+\s*[β-]\s*/, '').trim();
|
|
2222
|
+
items.push({ version, date, subject: cleanSubject.slice(0, 100) });
|
|
2223
|
+
if (items.length >= limit) break;
|
|
2224
|
+
}
|
|
2225
|
+
} catch {}
|
|
2226
|
+
return items;
|
|
2227
|
+
}
|
|
2228
|
+
|
|
2199
2229
|
// 1.9.231: leerness pulse β ν μ€ μ’
ν© μμ½ (10 ν΅μ¬ μ§ν)
|
|
2200
2230
|
// handoff ν€λλΌμΈμ μΆμ½ λ²μ β μ¬μ©μκ° λΉ λ₯΄κ² μν νμ
|
|
2201
2231
|
// μλ΅ (--json): { version, roundCount, mcpTools, memorySurface, security, health, driftScore, nextMilestone, etaDays, abnormal }
|
|
@@ -2278,6 +2308,114 @@ function pulseCmd(root) {
|
|
|
2278
2308
|
log(dm(` β μμΈ: leerness handoff . | health . | round-history | milestones`));
|
|
2279
2309
|
}
|
|
2280
2310
|
|
|
2311
|
+
// 1.9.233: leerness commands β μΉ΄ν
κ³ λ¦¬νλ μ 체 CLI λͺ
λ Ή λͺ©λ‘
|
|
2312
|
+
// λν/AI/MCP/CI κ° λΉ λ₯΄κ² μ 체 κΈ°λ₯μ νμ
ν μ μλλ‘.
|
|
2313
|
+
// μΉ΄ν
κ³ λ¦¬: status (handoff/health/pulse/round-history/milestones/session-resume/which/memory status)
|
|
2314
|
+
// task (task add/update/drop/export/sync)
|
|
2315
|
+
// memory (decision/rule/plan/lesson add/list/drop)
|
|
2316
|
+
// workflow (route/agents/orchestrate/review/persona)
|
|
2317
|
+
// release (release pack/bump/note/publish/sync-main)
|
|
2318
|
+
// audit (audit/scan secrets/encoding check/drift check/optimism-check/verify-claim/lazy detect)
|
|
2319
|
+
// skill (skill list/info/learn/use/optimize/match/suggest/install/publish/discover)
|
|
2320
|
+
// bridge (web/pc/lsp β opt-in)
|
|
2321
|
+
// config (init/migrate/update/auto-update/setup-agents/install/workspace-dir/wakeup-interval)
|
|
2322
|
+
// advanced (intent/requests/constraints/pre-wake-audit/idempotency/round-history/milestones/pulse)
|
|
2323
|
+
function commandsCmd(root) {
|
|
2324
|
+
const isTty = process.stdout && process.stdout.isTTY;
|
|
2325
|
+
const cy = s => isTty ? `\x1b[36m${s}\x1b[0m` : s;
|
|
2326
|
+
const gr = s => isTty ? `\x1b[32m${s}\x1b[0m` : s;
|
|
2327
|
+
const yl = s => isTty ? `\x1b[33m${s}\x1b[0m` : s;
|
|
2328
|
+
const dm = s => isTty ? `\x1b[2m${s}\x1b[0m` : s;
|
|
2329
|
+
const cats = {
|
|
2330
|
+
status: [
|
|
2331
|
+
{ cmd: 'handoff [path] [--json] [--pulse] [--compact] [--quiet]', desc: 'μΈμ
μμ 컨ν
μ€νΈ + 7 ν΅ν© νλ' },
|
|
2332
|
+
{ cmd: 'health [path] [--json] [--strict]', desc: 'μ’
ν© ν¬μ€ + drift/security/skill/memory/featureGraph/roundHistory/milestones' },
|
|
2333
|
+
{ cmd: 'pulse [path] [--json]', desc: 'ν μ€ μ’
ν© μμ½ (1.9.231)' },
|
|
2334
|
+
{ cmd: 'round-history [path] [--json]', desc: 'git tag κΈ°λ° μμ¨ λΌμ΄λ ν΅κ³ (1.9.226)' },
|
|
2335
|
+
{ cmd: 'milestones [path] [--json]', desc: 'λλ¬ λ§μΌμ€ν€ + λ€μ ETA (1.9.229)' },
|
|
2336
|
+
{ cmd: 'session-resume [path] [--auto-fix] [--json]', desc: 'λΉμ μ μ’
λ£ κ°μ§ + μμ¨ μ¬κ° (1.9.220/222)' },
|
|
2337
|
+
{ cmd: 'which', desc: 'νμ± provider + κ²½λ‘ μ§λ¨' },
|
|
2338
|
+
{ cmd: 'memory status [path] [--json]', desc: 'T/D/R/P/L Memory Surface (1.9.114)' }
|
|
2339
|
+
],
|
|
2340
|
+
task: [
|
|
2341
|
+
{ cmd: 'task add "<request>"', desc: 'task μΆκ° (μλ dedup 1.9.212, review trigger 1.9.177)' },
|
|
2342
|
+
{ cmd: 'task update <id> --status <S>', desc: 'task μν κ°±μ ' },
|
|
2343
|
+
{ cmd: 'task drop <id>', desc: 'task λλ‘' },
|
|
2344
|
+
{ cmd: 'task export --to <path>', desc: 'TodoWrite JSON νμ export (1.9.60)' },
|
|
2345
|
+
{ cmd: 'next-action take|list [--json]', desc: 'next-action queue (1.9.201)' }
|
|
2346
|
+
],
|
|
2347
|
+
memory: [
|
|
2348
|
+
{ cmd: 'decision add|list|drop <id>', desc: 'decisions.md CRUD (1.9.108/118/125)' },
|
|
2349
|
+
{ cmd: 'rule add|list|pause|resume|remove', desc: 'rules.md CRUD (1.9.8/109)' },
|
|
2350
|
+
{ cmd: 'plan add|list <M-id>', desc: 'plan.md milestone CRUD (1.9.110/119)' },
|
|
2351
|
+
{ cmd: 'lesson save|list|drop', desc: 'lessons.md CRUD (1.9.112/117/124)' }
|
|
2352
|
+
],
|
|
2353
|
+
audit: [
|
|
2354
|
+
{ cmd: 'audit [path] [--fix] [--strict] [--json]', desc: 'λ©ν + 보μ + npm CVE ν΅ν© κ°μ¬' },
|
|
2355
|
+
{ cmd: 'drift check [path] [--auto-fix] [--json]', desc: 'drift μ νΈ + μλ ν볡 (1.9.37/82/225)' },
|
|
2356
|
+
{ cmd: 'scan secrets [path]', desc: 'μν¬λ¦Ώ νμ§' },
|
|
2357
|
+
{ cmd: 'encoding check [path]', desc: 'μΈμ½λ© κ²μ¦' },
|
|
2358
|
+
{ cmd: 'lazy detect [path] [--json]', desc: 'κ²μΌλ₯Έ μμ
κ°μ§ (1.9.101)' },
|
|
2359
|
+
{ cmd: 'verify-claim <T-ID> [--run-tests] [--strict-claims]', desc: 'μ£Όμ₯ κ²μ¦ (1.9.18~26)' },
|
|
2360
|
+
{ cmd: 'optimism-check <T-ID>', desc: 'λκ΄μ API κ°μ§ (1.9.26)' },
|
|
2361
|
+
{ cmd: 'requests audit|list|complete|drop|auto-complete', desc: 'μ¬μ©μ μμ² μΆμ (1.9.207/223)' },
|
|
2362
|
+
{ cmd: 'pre-wake-audit [path] [--last]', desc: 'sleep μ μ κ² (1.9.209)' },
|
|
2363
|
+
{ cmd: 'idempotency audit', desc: 'λ©±λ±μ± μλ° νμ§ (1.9.212)' }
|
|
2364
|
+
],
|
|
2365
|
+
workflow: [
|
|
2366
|
+
{ cmd: 'session close [path] [--json] [--auto-apply-delivered]', desc: 'μΈμ
λ§κ° + 9 μΉ΄ν
κ³ λ¦¬ + μλ ν΅ν©' },
|
|
2367
|
+
{ cmd: 'resume [path]', desc: 'auto-resume-plan μ μ© (1.9.203)' },
|
|
2368
|
+
{ cmd: 'route <task-type>', desc: 'μμ
μ ν λΆλ₯ (11μ’
)' },
|
|
2369
|
+
{ cmd: 'agents list|check|quota|dispatch|multi', desc: 'μΈλΆ AI CLI μ€μΌμ€νΈλ μ΄μ
' },
|
|
2370
|
+
{ cmd: 'review-request "<request>"', desc: 'μ¬μ©μ μμ² μ¬μ κ²ν (1.9.176)' },
|
|
2371
|
+
{ cmd: 'review <file> --persona <ids>', desc: 'νλ₯΄μλ 리뷰 (1.9.29)' },
|
|
2372
|
+
{ cmd: 'brainstorm "<topic>" [--include-code]', desc: 'μν¬μ€νμ΄μ€ νμ + μ½λ grep' }
|
|
2373
|
+
],
|
|
2374
|
+
release: [
|
|
2375
|
+
{ cmd: 'release sync-main [path]', desc: 'main merge + push + μλ npm publish (1.9.140/178)' },
|
|
2376
|
+
{ cmd: 'release pack', desc: 'tarball μμ±' },
|
|
2377
|
+
{ cmd: 'release publish', desc: 'GitHub release λ°ν' }
|
|
2378
|
+
],
|
|
2379
|
+
skill: [
|
|
2380
|
+
{ cmd: 'skill list|info|learn|use|optimize|match|suggest', desc: 'skill μΉ΄νλ‘κ·Έ CRUD' },
|
|
2381
|
+
{ cmd: 'skill install|install-top|publish|search|discover', desc: 'skill λ°°ν¬ + κ²μ' }
|
|
2382
|
+
],
|
|
2383
|
+
bridge: [
|
|
2384
|
+
{ cmd: 'web check|screenshot|extract <url>', desc: 'playwright bridge (opt-in, 1.9.165)' },
|
|
2385
|
+
{ cmd: 'pc check|click|type|screenshot', desc: 'robotjs/nut-tree bridge (opt-in, 1.9.166)' },
|
|
2386
|
+
{ cmd: 'lsp check|symbols|references', desc: 'LSP μ΄λν° (1.9.167)' }
|
|
2387
|
+
],
|
|
2388
|
+
config: [
|
|
2389
|
+
{ cmd: 'init [path]', desc: 'μν¬μ€νμ΄μ€ μ΄κΈ°ν' },
|
|
2390
|
+
{ cmd: 'migrate [path] [--dry-run]', desc: 'μ
λ°μ΄νΈ λ§μ΄κ·Έλ μ΄μ
' },
|
|
2391
|
+
{ cmd: 'update [--check|--yes|--force]', desc: 'μκ° μ
λ°μ΄νΈ' },
|
|
2392
|
+
{ cmd: 'wakeup-interval get|set|auto|history|record', desc: 'adaptive wakeup (1.9.210)' },
|
|
2393
|
+
{ cmd: 'workspace-dir get|guide', desc: 'μν¬μ€νμ΄μ€ λλ ν 리 (1.9.211)' },
|
|
2394
|
+
{ cmd: 'intent classify|expand|domains "<request>"', desc: 'μλ νμ
+ scope (1.9.213)' },
|
|
2395
|
+
{ cmd: 'constraints list|check|add', desc: 'νλ«νΌ/API μ μ½ (1.9.208)' },
|
|
2396
|
+
{ cmd: 'provider list|add|remove|sync', desc: 'Provider Registry (1.9.157~160)' },
|
|
2397
|
+
{ cmd: 'commands [--json]', desc: 'μ 체 λͺ
λ Ή μΉ΄ν
κ³ λ¦¬ λͺ©λ‘ (1.9.233)' }
|
|
2398
|
+
]
|
|
2399
|
+
};
|
|
2400
|
+
if (has('--json')) {
|
|
2401
|
+
log(JSON.stringify({ version: VERSION, totalCommands: Object.values(cats).reduce((s, a) => s + a.length, 0), categories: cats }, null, 2));
|
|
2402
|
+
return;
|
|
2403
|
+
}
|
|
2404
|
+
log(cy(`# leerness commands (1.9.233) β μ 체 CLI λͺ
λ Ή μΉ΄ν
κ³ λ¦¬ λͺ©λ‘`));
|
|
2405
|
+
log('');
|
|
2406
|
+
for (const [catName, list] of Object.entries(cats)) {
|
|
2407
|
+
log(gr(`## ${catName} (${list.length}κ°)`));
|
|
2408
|
+
list.forEach(c => {
|
|
2409
|
+
log(` β’ ${c.cmd}`);
|
|
2410
|
+
log(dm(` ${c.desc}`));
|
|
2411
|
+
});
|
|
2412
|
+
log('');
|
|
2413
|
+
}
|
|
2414
|
+
log(dm(` β μ΄ ${Object.values(cats).reduce((s, a) => s + a.length, 0)} λͺ
λ Ή (9 μΉ΄ν
κ³ λ¦¬)`));
|
|
2415
|
+
log(dm(` β MCP λꡬ: 65 (μΈλΆ AI λ
ΈμΆ)`));
|
|
2416
|
+
log(dm(` β λΉ λ₯Έ μμ: leerness pulse | handoff | health`));
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2281
2419
|
function roundHistoryCmd(root) {
|
|
2282
2420
|
root = absRoot(root);
|
|
2283
2421
|
const isTty = process.stdout && process.stdout.isTTY;
|
|
@@ -6098,6 +6236,10 @@ function handoff(root) {
|
|
|
6098
6236
|
avgRoundsPerDay: ms.avgRoundsPerDay
|
|
6099
6237
|
};
|
|
6100
6238
|
} catch {}
|
|
6239
|
+
// 1.9.234: recentChanges ν΅ν© (handoff JSON 8λ²μ§Έ ν΅ν© νλ) β μ΅κ·Ό 5 λΌμ΄λ λ³κ²½ μμ½
|
|
6240
|
+
try {
|
|
6241
|
+
result.recentChanges = _computeRecentChanges(root, 5);
|
|
6242
|
+
} catch {}
|
|
6101
6243
|
} catch {}
|
|
6102
6244
|
try {
|
|
6103
6245
|
const pwState = _loadPreWakeReport(root);
|
|
@@ -10257,6 +10399,10 @@ function sessionClose(root, opts = {}) {
|
|
|
10257
10399
|
avgRoundsPerDay: ms.avgRoundsPerDay
|
|
10258
10400
|
};
|
|
10259
10401
|
} catch {}
|
|
10402
|
+
// 1.9.234: recentChanges ν΅ν© (session close JSON 8λ²μ§Έ ν΅ν© νλ) β μ΅κ·Ό 5 λΌμ΄λ λ³κ²½
|
|
10403
|
+
try {
|
|
10404
|
+
jsonResult.recentChanges = _computeRecentChanges(root, 5);
|
|
10405
|
+
} catch {}
|
|
10260
10406
|
} catch {}
|
|
10261
10407
|
try {
|
|
10262
10408
|
// 1.9.209: pre-wake-audit μλ μ€ν + μ μ₯ (sleep μ μλ μ κ²)
|
|
@@ -14232,7 +14378,8 @@ function mcpServeCmd(root) {
|
|
|
14232
14378
|
{ name: 'leerness_requests_auto_complete', description: '1.9.224 (1.9.223 μλ νμ) β delivered ν¨ν΄ μλ κ°μ§ + μλ μλ£. "Round X.Y.Z β ꡬν μλ£" / "implemented" / "delivered" ν¨ν΄μ΄ μλ open μμ² μ€ νμ¬ λ²μ μ΄νμΈ κ²μ νλ³΄λ‘ λΆλ₯. μλ΅: { total, candidates: [{id, text, claimedVersion, currentVersion, deliveredKeyword, recordedAt}], currentVersion, applied (apply=true μ), completedIds[] }. μΈλΆ AIκ° "μ΄μ λμ λ κ°μ§ λ―Έλ΅ μ νΈ μ 리 κ°λ₯νκ°?"λ₯Ό νμ. κΈ°λ³Έ dry-run, apply: true λͺ
μ μμλ§ μ€ μ μ©. μΈμ: { path?, apply? (default false) }', inputSchema: { type: 'object', properties: { path: { type: 'string' }, apply: { type: 'boolean' } } } },
|
|
14233
14379
|
{ name: 'leerness_round_history', description: '1.9.226 β μμ¨ λΌμ΄λ ν΅κ³. git tag v1.9.X κΈ°λ° λμ λΌμ΄λ μΉ΄μ΄νΈ + λ€μ λ§μΌμ€ν€ (50/75/100/125/150/175/200/250/300/400/500) + νκ· rounds/day. μλ΅: { currentVersion, roundCount, baselineVersion, latestTags[], nextMilestone, roundsToNextMilestone, firstTagAt, latestTagAt, daysActive, avgRoundsPerDay }. μΈλΆ AIκ° "μ΄ νλ‘μ νΈλ μΌλ§λ μ§νλκ³ λ€μ λ§μΌμ€ν€κΉμ§ λͺ λΌμ΄λ λ¨μλ?"λ₯Ό νμ. μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
14234
14380
|
{ name: 'leerness_milestones', description: '1.9.229 (1.9.226 νμ₯) β λλ¬ λ§μΌμ€ν€ + λ€μ ETA. git tag μμ°¨ λΆμμΌλ‘ 25/50/75/100/125/150/175/200/250/300/400/500 λ§μΌμ€ν€ λλ¬ μΌμ + λ€μ λ§μΌμ€ν€ ETA (νμ¬ μλ κΈ°μ€) κ³μ°. μλ΅: { totalRounds, reached: [{milestone, version, reachedAt, daysFromBaseline}], next: {milestone, roundsRemaining, etaDays, etaDate}, baselineAt, avgRoundsPerDay }. μΈλΆ AIκ° "μ§κΈκΉμ§ μ΄λ€ λ§μΌμ€ν€μ μΈμ λ¬μ±νκ³ λ€μ λ§μΌμ€ν€ μμ λλ¬μΌμ?"μ νμ. μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
14235
|
-
{ name: 'leerness_pulse', description: '1.9.231 β ν μ€ μ’
ν© μμ½ (10 ν΅μ¬ μ§ν). μλ΅: { version, roundCount, mcpTools, memorySurface, security, health, driftScore, nextMilestone, etaDays, abnormalShutdown }. μΈλΆ AIκ° "leerness μν ν λμ 보기"λ₯Ό κ°λ²Όμ΄ λ¨μΌ νΈμΆλ‘ νμ. handoff λ³΄λ€ 5λ°° λΉ λ¦ (drift/health κ³μ° skip). μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } }
|
|
14381
|
+
{ name: 'leerness_pulse', description: '1.9.231 β ν μ€ μ’
ν© μμ½ (10 ν΅μ¬ μ§ν). μλ΅: { version, roundCount, mcpTools, memorySurface, security, health, driftScore, nextMilestone, etaDays, abnormalShutdown }. μΈλΆ AIκ° "leerness μν ν λμ 보기"λ₯Ό κ°λ²Όμ΄ λ¨μΌ νΈμΆλ‘ νμ. handoff λ³΄λ€ 5λ°° λΉ λ¦ (drift/health κ³μ° skip). μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
14382
|
+
{ name: 'leerness_commands', description: '1.9.233 β μΉ΄ν
κ³ λ¦¬νλ μ 체 CLI λͺ
λ Ή λͺ©λ‘ (9 μΉ΄ν
κ³ λ¦¬). μλ΅: { version, totalCommands, categories: { status, task, memory, audit, workflow, release, skill, bridge, config } }. μΈλΆ AIκ° "leerness κ° μ 곡νλ λͺ
λ Ήμ΄ λκ° μλ"λ₯Ό μ§μ νμ. λ§€λ΄μΌ/λμλ§ λμ μμ±. μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } }
|
|
14236
14383
|
];
|
|
14237
14384
|
|
|
14238
14385
|
function send(obj) {
|
|
@@ -14405,6 +14552,10 @@ function mcpServeCmd(root) {
|
|
|
14405
14552
|
// 1.9.231: ν μ€ μ’
ν© μμ½ (10 ν΅μ¬ μ§ν)
|
|
14406
14553
|
cliArgs = ['pulse', '--path', targetPath, '--json'];
|
|
14407
14554
|
break;
|
|
14555
|
+
case 'leerness_commands':
|
|
14556
|
+
// 1.9.233: μΉ΄ν
κ³ λ¦¬νλ μ 체 CLI λͺ
λ Ή λͺ©λ‘
|
|
14557
|
+
cliArgs = ['commands', '--json'];
|
|
14558
|
+
break;
|
|
14408
14559
|
default:
|
|
14409
14560
|
return send({ jsonrpc: '2.0', id, error: { code: -32601, message: `Unknown tool: ${name}` } });
|
|
14410
14561
|
}
|
|
@@ -16625,6 +16776,10 @@ function healthCmd(root) {
|
|
|
16625
16776
|
avgRoundsPerDay: ms.avgRoundsPerDay
|
|
16626
16777
|
};
|
|
16627
16778
|
} catch { out.milestones = { error: 'milestones μ κ² μ€ν¨' }; }
|
|
16779
|
+
// 1.9.234: health --json recentChanges ν΅ν© (3 λͺ
λ Ή 8 νλ μΌκ΄μ±)
|
|
16780
|
+
try {
|
|
16781
|
+
out.recentChanges = _computeRecentChanges(root, 5);
|
|
16782
|
+
} catch { out.recentChanges = { error: 'recentChanges μ κ² μ€ν¨' }; }
|
|
16628
16783
|
// 1.9.163: 5λ₯λ ₯ λ§€νΈλ¦μ€ μλ νκ° (1.9.155 sub-agent μ κ² β μ½λ κΈ°λ° μλν)
|
|
16629
16784
|
// κ° λ₯λ ₯μ μ½λ grep μΌλ‘ κ²μΆ β 0~100 μ μ. μ¬μ©μκ° λ§€ health νΈμΆ μ leerness μκΈ° νκ° νμΈ.
|
|
16630
16785
|
try {
|
|
@@ -18064,6 +18219,8 @@ async function main() {
|
|
|
18064
18219
|
if (cmd === 'milestones') return milestonesCmd(arg('--path', process.cwd()));
|
|
18065
18220
|
// 1.9.231: leerness pulse β ν μ€ μ’
ν© μμ½ (10 ν΅μ¬ μ§ν)
|
|
18066
18221
|
if (cmd === 'pulse') return pulseCmd(arg('--path', process.cwd()));
|
|
18222
|
+
// 1.9.233: leerness commands β μΉ΄ν
κ³ λ¦¬νλ μ 체 CLI λͺ
λ Ή λͺ©λ‘
|
|
18223
|
+
if (cmd === 'commands') return commandsCmd(arg('--path', process.cwd()));
|
|
18067
18224
|
// 1.9.208: leerness constraints <list|check|add> β νλ«νΌ/API μ μ½ μ¬μ μ²΄ν¬ (μ¬μ©μ λͺ
μ)
|
|
18068
18225
|
if (cmd === 'constraints') return constraintsCmd(arg('--path', process.cwd()), args[1], ...args.slice(2));
|
|
18069
18226
|
// 1.9.209: leerness pre-wake-audit β sleep μ sub-agent audit (μ¬μ©μ λͺ
μ)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.234",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|