leerness 1.9.196 β 1.9.197
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 +52 -0
- package/README.md +3 -3
- package/bin/harness.js +48 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,57 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.197 β 2026-05-21
|
|
4
|
+
|
|
5
|
+
**π AμΆ 9.5/10 β 10/10 β provider probe handoff μλ ν΅ν© + 60λΆ μΊμ. 5μΆ λ§€νΈλ¦μ€ 47.5/50 (95%).**
|
|
6
|
+
|
|
7
|
+
μμ¨ λͺ¨λ 127 λΌμ΄λ. 1.9.196 DμΆ μμ±μ μ΄μ΄ **AμΆ 9.5 β 10/10** λ§μ§λ§ 보κ°.
|
|
8
|
+
|
|
9
|
+
### μ¬μ©μ μλ μ λ ¬ (1.9.191 verbatim)
|
|
10
|
+
> *"λ²μ© AI νλ€μ€ ... μ΅κ³ μ λꡬ"*
|
|
11
|
+
|
|
12
|
+
### 1. handoff ν€λλΌμΈ 11λ²μ§Έ μμ (1.9.197 μ κ·)
|
|
13
|
+
```
|
|
14
|
+
π ν€λλΌμΈ (1.9.81/93/113/152/162/192/197): ... Β· π backend 3/13 (0hβ)
|
|
15
|
+
```
|
|
16
|
+
- `π backend {ready}/{total} ({age}{status})`
|
|
17
|
+
- 13 ν보 = CLI 5 + Local endpoint 3 + Cloud API key 5
|
|
18
|
+
- 60λΆ μΊμ hit μ μ¦μ νμ (network λΆν X)
|
|
19
|
+
- μΊμ λ§λ£ μ `β ` νμ β μ¬μ©μ/AI κ° `provider probe` μ¬μ€ν μΈμ§
|
|
20
|
+
|
|
21
|
+
### 2. 60λΆ TTL μΊμ (1.9.197 μ κ·)
|
|
22
|
+
- νμΌ: `.harness/provider-probe-cache.json` (λΉμν¬λ¦Ώ, 체ν¬μΈ κ°λ₯)
|
|
23
|
+
- `_PROVIDER_PROBE_CACHE_TTL_MS = 60 * 60 * 1000`
|
|
24
|
+
- `provider probe` μ€ν μ μλ μ μ₯ (`--no-cache` λ‘ λκΈ°)
|
|
25
|
+
- ν¨μ: `_loadProviderProbeCache` / `_writeProviderProbeCache` / `_readyBackendCountFromCache`
|
|
26
|
+
|
|
27
|
+
### 3. λμ νκ· (1.9.191~196) β λͺ¨λ μ μ§
|
|
28
|
+
- [1.9.196] DμΆ 7μΌ+/30μΌ+ recall + ScheduleWakeup miss detector
|
|
29
|
+
- [1.9.195] _probeProviderEndpoints (provider universal probe)
|
|
30
|
+
- [1.9.194] _suggestNextActions (handoff next-actions)
|
|
31
|
+
- [1.9.193] agents multi consensus β lessons.md
|
|
32
|
+
- [1.9.192] _loadOfficialSkillCache + 24h μΊμ
|
|
33
|
+
- [1.9.191] ꡬ쑰 μ΅μ ν λ³΄κ³ μ 88/100
|
|
34
|
+
|
|
35
|
+
### 4. stress-v142 β 15/15 PASS
|
|
36
|
+
- AμΆ 9.5β10 λ³΄κ° (6: ν¨μ + μΊμ μλ μ μ₯ + ν€λλΌμΈ 11λ²μ§Έ + handoff ν΅ν© κ²μ¦)
|
|
37
|
+
- μ±λ₯: --version cold start avg **506 ms** Β· MCP 54 λꡬ **591 ms**
|
|
38
|
+
|
|
39
|
+
### 5. 5μΆ λ§€νΈλ¦μ€ (λͺ¨λ μΆ λ³΄κ° μλ£)
|
|
40
|
+
| μΆ | 1.9.191 | 1.9.197 | Ξ |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| A. λ²μ© AI νλ€μ€ | 9 | **10** | +1 (probe + handoff μλ) |
|
|
43
|
+
| B. λ©ν° Sub-Agent | 8.5 | **9** | +0.5 (consensus lessons) |
|
|
44
|
+
| C. 곡μ μ€ν¬ μλ | 8 | **9** | +1 (official catalog handoff) |
|
|
45
|
+
| D. μ₯κΈ° λ§₯λ½ μ μ§ | 9.5 | **10** | +0.5 (7μΌ+/30μΌ+ recall) |
|
|
46
|
+
| E. κ²μΌλ¦ λ°©μ§ | 9 | **9.5** | +0.5 (next-actions) |
|
|
47
|
+
| **μ’
ν©** | **44/50 (88%)** | **47.5/50 (95%)** | **+7%** π― |
|
|
48
|
+
|
|
49
|
+
### 6. μλ release νλ¦
|
|
50
|
+
- main μλ push **59 λΌμ΄λ μ°μ** (1.9.140~197)
|
|
51
|
+
- npm publish μλ (1.9.178~)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
3
55
|
## 1.9.196 β 2026-05-21
|
|
4
56
|
|
|
5
57
|
**π DμΆ (μ₯κΈ° λ§₯λ½ μ μ§) λ³΄κ° β 7μΌ+ μ₯κΈ° μ 체 + 30μΌ+ lessons νκ³ + ScheduleWakeup miss detector.**
|
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.197 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π 5μΆ λ§€νΈλ¦μ€ 95/100 Β· backend probe handoff μλ Β· 127 λΌμ΄λ β
|
|
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.197';
|
|
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 μ²λ¦¬).
|
|
@@ -3487,10 +3487,19 @@ function handoff(root) {
|
|
|
3487
3487
|
parts.push(`π official ${m.total}/${m.cacheTotal} (${ageStr}${status})`);
|
|
3488
3488
|
}
|
|
3489
3489
|
} catch {}
|
|
3490
|
+
// 11) 1.9.197: AμΆ (λ²μ© AI νλ€μ€) 9.5β10 λ³΄κ° β provider probe 60λΆ μΊμ μλ λ
ΈμΆ
|
|
3491
|
+
// μ¬μ©μ λͺ
μ: "λ²μ© AI νλ€μ€ ... μ΅κ³ μ λꡬ" β λ§€ handoff μ 11 backend ready μν μ¦μ λ
ΈμΆ
|
|
3492
|
+
try {
|
|
3493
|
+
const pb = _readyBackendCountFromCache(root);
|
|
3494
|
+
if (pb.hasCache) {
|
|
3495
|
+
const ageLabel = pb.ageHours != null ? (pb.ageHours < 24 ? `${pb.ageHours}h` : `${Math.floor(pb.ageHours/24)}d`) : '?';
|
|
3496
|
+
parts.push(`π backend ${pb.ready}/${pb.total} (${ageLabel}${pb.expired ? 'β ' : 'β'})`);
|
|
3497
|
+
}
|
|
3498
|
+
} catch {}
|
|
3490
3499
|
if (parts.length) {
|
|
3491
3500
|
const isTty = process.stdout && process.stdout.isTTY;
|
|
3492
3501
|
const cy = s => isTty ? `\x1b[36m${s}\x1b[0m` : s;
|
|
3493
|
-
log(cy(`π ν€λλΌμΈ (1.9.81/93/113/152/162/192): ${parts.join(' Β· ')}`));
|
|
3502
|
+
log(cy(`π ν€λλΌμΈ (1.9.81/93/113/152/162/192/197): ${parts.join(' Β· ')}`));
|
|
3494
3503
|
}
|
|
3495
3504
|
} catch {}
|
|
3496
3505
|
}
|
|
@@ -5586,6 +5595,8 @@ function providerCmd(root, sub, ...args) {
|
|
|
5586
5595
|
const json = has('--json');
|
|
5587
5596
|
const timeoutMs = Number(arg('--timeout', '1500'));
|
|
5588
5597
|
const results = await _probeProviderEndpoints(root, timeoutMs);
|
|
5598
|
+
// 1.9.197: μΊμ μλ μ μ₯ (handoff μλ ν΅ν©μ©)
|
|
5599
|
+
if (!has('--no-cache')) _writeProviderProbeCache(root, results);
|
|
5589
5600
|
if (json) { log(JSON.stringify(results, null, 2)); return; }
|
|
5590
5601
|
log(`# leerness provider probe (1.9.195 β AμΆ λ²μ© AI νλ€μ€ 보κ°)`);
|
|
5591
5602
|
log(`νμμμ: ${timeoutMs}ms`);
|
|
@@ -5665,6 +5676,41 @@ async function _probeProviderEndpoints(root, timeoutMs) {
|
|
|
5665
5676
|
return result;
|
|
5666
5677
|
}
|
|
5667
5678
|
|
|
5679
|
+
// 1.9.197: AμΆ 9.5β10 λ³΄κ° β provider probe κ²°κ³Ό 60λΆ μΊμ (handoff μλ ν΅ν©)
|
|
5680
|
+
// μ¬μ©μ λͺ
μ (1.9.191): "λ²μ© AI νλ€μ€ ... μ΅κ³ μ λꡬ"
|
|
5681
|
+
// λ§€ handoff λ§λ€ 11 backend probe λΉμ© (~1.5μ΄)μ μΊμλ‘ ν‘μ β 1/60 λΌμ΄λλ§ μ€μ probe
|
|
5682
|
+
// μΊμ μμΉ: .harness/provider-probe-cache.json (λΉμν¬λ¦Ώ, 체ν¬μΈ κ°λ₯)
|
|
5683
|
+
const _PROVIDER_PROBE_CACHE_TTL_MS = 60 * 60 * 1000;
|
|
5684
|
+
function _providerProbeCachePath(root) { return path.join(root, '.harness', 'provider-probe-cache.json'); }
|
|
5685
|
+
function _loadProviderProbeCache(root) {
|
|
5686
|
+
try {
|
|
5687
|
+
const fp = _providerProbeCachePath(root);
|
|
5688
|
+
if (!exists(fp)) return null;
|
|
5689
|
+
const j = JSON.parse(read(fp));
|
|
5690
|
+
if (!j.at || !j.result) return null;
|
|
5691
|
+
const ageMs = Date.now() - new Date(j.at).getTime();
|
|
5692
|
+
return { ...j, ageMs, expired: ageMs > _PROVIDER_PROBE_CACHE_TTL_MS };
|
|
5693
|
+
} catch { return null; }
|
|
5694
|
+
}
|
|
5695
|
+
function _writeProviderProbeCache(root, result) {
|
|
5696
|
+
try {
|
|
5697
|
+
mkdirp(path.join(root, '.harness'));
|
|
5698
|
+
writeUtf8(_providerProbeCachePath(root), JSON.stringify({ at: new Date().toISOString(), result }, null, 2));
|
|
5699
|
+
return true;
|
|
5700
|
+
} catch { return false; }
|
|
5701
|
+
}
|
|
5702
|
+
// handoff ν€λλΌμΈμ© β μΊμ hit μ μ¦μ λ°ν, miss μ null (async probe trigger λ handoff κ° μ§μ )
|
|
5703
|
+
function _readyBackendCountFromCache(root) {
|
|
5704
|
+
const c = _loadProviderProbeCache(root);
|
|
5705
|
+
if (!c || !c.result) return { ready: 0, total: 11, ageHours: null, expired: false, hasCache: false };
|
|
5706
|
+
const r = c.result;
|
|
5707
|
+
const ready = (r.cli || []).filter(x => x.found).length
|
|
5708
|
+
+ (r.endpoints || []).filter(x => x.reachable).length
|
|
5709
|
+
+ (r.cloudKeys || []).filter(x => x.present).length;
|
|
5710
|
+
const total = (r.cli || []).length + (r.endpoints || []).length + (r.cloudKeys || []).length;
|
|
5711
|
+
return { ready, total, ageHours: Math.floor(c.ageMs / 3600000), expired: c.expired, hasCache: true };
|
|
5712
|
+
}
|
|
5713
|
+
|
|
5668
5714
|
// 1.9.195: HTTP endpoint reachability check (μμ‘΄μ± 0)
|
|
5669
5715
|
function _probeHttpEndpoint(url, timeoutMs) {
|
|
5670
5716
|
return new Promise((resolve) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.197",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|