leerness 1.9.231 β 1.9.232
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 +32 -0
- package/README.md +3 -3
- package/bin/harness.js +43 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.232 β 2026-05-23
|
|
4
|
+
|
|
5
|
+
**π pulse memorySurface BUG fix + handoff --pulse μ΅μ
+ session close μλ pulse.**
|
|
6
|
+
|
|
7
|
+
### 1. pulse memorySurface BUG fix (1.9.231 β 1.9.232)
|
|
8
|
+
- 1.9.231 pulse μ T/D/R/P/L μΉ΄μ΄νΈκ° μλͺ»λ μ κ·μμΌλ‘ λ 0 μΆλ ₯
|
|
9
|
+
- 1.9.232: `memoryStatusCmd` μ λμΌν ν¨ν΄ μ¬μ© (`readProgressRows`, `_extractDecisionBlocks`, `readRules`, `### M-` regex, `### YYYY-MM-DD` regex)
|
|
10
|
+
- κ²μ¦: leerness-pkg β κΈ°μ‘΄ `T0/D0/R0/P0/L0` β μ μ `T0/D0/R1/P1/L0` (active rule + milestone λ°μ)
|
|
11
|
+
|
|
12
|
+
### 2. `leerness handoff --pulse` μ΅μ
μ μ€
|
|
13
|
+
- handoff λμ pulse 1 line νμ μΆλ ₯
|
|
14
|
+
- AI κ° λΉ λ₯Έ μν νμΈ μ μ¬μ© (`handoff` μ 체 νΈμΆ λμ )
|
|
15
|
+
- λ΄λΆ: `pulseCmd` μ§μ νΈμΆ
|
|
16
|
+
|
|
17
|
+
### 3. session close μλ pulse ν μ€ λ
ΈμΆ
|
|
18
|
+
- λ§κ° μ 1.9.217 ν΅ν© λ³΄κ³ λμ pulse ν μ€ μλ μΆκ°
|
|
19
|
+
- λ€μ λΌμ΄λ μ§μ
μ μ¦μ μν μΈμ§: `π v1.9.232 Β· π R188 Β· π§ T0/D0/R1/P1/L0 Β· π― R200 (1d)`
|
|
20
|
+
- AI κ° ν μ€λ‘ 컨ν
μ€νΈ ν보
|
|
21
|
+
|
|
22
|
+
### 4. λμ νκ· (1.9.207~231) β λͺ¨λ μ μ§
|
|
23
|
+
|
|
24
|
+
### 5. stress-v177 β 13/13 PASS
|
|
25
|
+
- 1.9.232 (4): VERSION + pulse BUG fix + handoff --pulse + session close μλ pulse
|
|
26
|
+
- μ±λ₯ (2): cold_start avg 389ms / pulse 1009ms
|
|
27
|
+
- λμ νκ· (7): 1.9.207~231
|
|
28
|
+
|
|
29
|
+
### 6. μλ release (94 λΌμ΄λ main-push streak Β· 55 λΌμ΄λ npm publish streak)
|
|
30
|
+
|
|
31
|
+
π **1 λΌμ΄λ BUG fix + 2 UX κ°μ ** β pulse μμ€ν
μμ μ± κ°ν
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
3
35
|
## 1.9.231 β 2026-05-23
|
|
4
36
|
|
|
5
37
|
**π leerness pulse μ λͺ
λ Ή (ν μ€ μ’
ν© μμ½) + MCP 64λ²μ§Έ λꡬ.**
|
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.232 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π pulse BUG fix Β· handoff --pulse Β· session close μλ β
|
|
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.232';
|
|
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 μ²λ¦¬).
|
|
@@ -2227,14 +2227,22 @@ function pulseCmd(root) {
|
|
|
2227
2227
|
const matches = src.match(/name: 'leerness_[a-z_]+'/g) || [];
|
|
2228
2228
|
data.mcpTools = matches.length;
|
|
2229
2229
|
} catch {}
|
|
2230
|
-
// Memory Surface (T/D/R/P/L)
|
|
2230
|
+
// Memory Surface (T/D/R/P/L) β 1.9.232 BUG fix: memoryStatusCmd μ λμΌν ν¨ν΄ μ¬μ©
|
|
2231
2231
|
try {
|
|
2232
|
-
const
|
|
2233
|
-
const
|
|
2234
|
-
const
|
|
2235
|
-
const
|
|
2236
|
-
const
|
|
2237
|
-
|
|
2232
|
+
const rows = readProgressRows(root);
|
|
2233
|
+
const tasksInProgress = rows.filter(r => r.status === 'in-progress').length;
|
|
2234
|
+
const dm = exists(decisionsPath(root)) ? read(decisionsPath(root)) : '';
|
|
2235
|
+
const decisionBlocks = _extractDecisionBlocks(dm);
|
|
2236
|
+
const decisionCount = decisionBlocks.map(b => {
|
|
2237
|
+
const m = b.match(/^### (.+)$/m);
|
|
2238
|
+
return m ? '### ' + m[1].trim() : null;
|
|
2239
|
+
}).filter(Boolean).length;
|
|
2240
|
+
const rulesActive = readRules(root).filter(r => r.status === 'active').length;
|
|
2241
|
+
const planText = exists(planPath(root)) ? read(planPath(root)) : '';
|
|
2242
|
+
const milestonesCnt = (planText.match(/^### M-\d{4}\./gm) || []).length;
|
|
2243
|
+
const lm = exists(lessonsPath(root)) ? read(lessonsPath(root)) : '';
|
|
2244
|
+
const lessonsCount = (lm.match(/^### \d{4}-\d{2}-\d{2}[^\n]*/gm) || []).length;
|
|
2245
|
+
data.memorySurface = `T${tasksInProgress}/D${decisionCount}/R${rulesActive}/P${milestonesCnt}/L${lessonsCount}`;
|
|
2238
2246
|
} catch {}
|
|
2239
2247
|
// λ§μΌμ€ν€ + ETA
|
|
2240
2248
|
try {
|
|
@@ -2263,7 +2271,7 @@ function pulseCmd(root) {
|
|
|
2263
2271
|
if (data.abnormalShutdown !== 'none') {
|
|
2264
2272
|
line += ` Β· π abnormal:${data.abnormalShutdown}`;
|
|
2265
2273
|
}
|
|
2266
|
-
log(cy(`# leerness pulse (1.9.231) β ν μ€ μ’
ν© μμ½`));
|
|
2274
|
+
log(cy(`# leerness pulse (1.9.231/1.9.232) β ν μ€ μ’
ν© μμ½`));
|
|
2267
2275
|
log('');
|
|
2268
2276
|
log(` ${line}`);
|
|
2269
2277
|
log('');
|
|
@@ -7265,6 +7273,10 @@ function _handoffWorkspace(rootBase) {
|
|
|
7265
7273
|
}
|
|
7266
7274
|
|
|
7267
7275
|
function handoffCmd(root) {
|
|
7276
|
+
// 1.9.232: --pulse μ΅μ
β pulse 1 line νμμΌλ‘ μΆλ ₯ (handoff μ 체 λμ )
|
|
7277
|
+
if (has('--pulse')) {
|
|
7278
|
+
return pulseCmd(absRoot(root));
|
|
7279
|
+
}
|
|
7268
7280
|
// 1.9.17: --all-apps / --include ν΅ν© λͺ¨λ
|
|
7269
7281
|
if (has('--all-apps') || arg('--include', null)) {
|
|
7270
7282
|
return _handoffWorkspace(absRoot(root));
|
|
@@ -10349,6 +10361,28 @@ function sessionClose(root, opts = {}) {
|
|
|
10349
10361
|
log(grn(` β λ©±λ±μ± κ²μ¬ ν΅κ³Ό β verified ${idemp.summary.verifiedAreas} μμ`));
|
|
10350
10362
|
}
|
|
10351
10363
|
} catch {}
|
|
10364
|
+
// 1.9.232: λ§κ° μ pulse ν μ€ μλ λ
ΈμΆ β λ€μ λΌμ΄λ μ§μ
μ μ¦μ μν μΈμ§
|
|
10365
|
+
try {
|
|
10366
|
+
const rh = _computeRoundHistory(root);
|
|
10367
|
+
const ms = _computeMilestones(root);
|
|
10368
|
+
const rows = readProgressRows(root);
|
|
10369
|
+
const tIn = rows.filter(r => r.status === 'in-progress').length;
|
|
10370
|
+
const dm = exists(decisionsPath(root)) ? read(decisionsPath(root)) : '';
|
|
10371
|
+
const dCnt = _extractDecisionBlocks(dm).length;
|
|
10372
|
+
const rActive = readRules(root).filter(r => r.status === 'active').length;
|
|
10373
|
+
const planText = exists(planPath(root)) ? read(planPath(root)) : '';
|
|
10374
|
+
const pCnt = (planText.match(/^### M-\d{4}\./gm) || []).length;
|
|
10375
|
+
const lm = exists(lessonsPath(root)) ? read(lessonsPath(root)) : '';
|
|
10376
|
+
const lCnt = (lm.match(/^### \d{4}-\d{2}-\d{2}[^\n]*/gm) || []).length;
|
|
10377
|
+
const mem = `T${tIn}/D${dCnt}/R${rActive}/P${pCnt}/L${lCnt}`;
|
|
10378
|
+
let pulseLine = `π v${VERSION} Β· π R${rh.roundCount} Β· π§ ${mem}`;
|
|
10379
|
+
if (ms.next) {
|
|
10380
|
+
const eta = ms.next.etaDays != null ? ` (${ms.next.etaDays}d)` : '';
|
|
10381
|
+
pulseLine += ` Β· π― R${ms.next.milestone}${eta}`;
|
|
10382
|
+
}
|
|
10383
|
+
log('');
|
|
10384
|
+
log(` ${pulseLine} ${dim('β leerness pulse (1.9.232)')}`);
|
|
10385
|
+
} catch {}
|
|
10352
10386
|
} catch {}
|
|
10353
10387
|
}
|
|
10354
10388
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.232",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|