leerness 1.9.223 β 1.9.225
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 +73 -0
- package/README.md +3 -3
- package/bin/harness.js +81 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.225 β 2026-05-22
|
|
4
|
+
|
|
5
|
+
**π§ drift check --auto-fix delivered ν΅ν© + LEERNESS_AUTO_APPLY_DELIVERED env opt-in.**
|
|
6
|
+
|
|
7
|
+
### 1. `drift check --auto-fix` delivered ν¨ν΄ μλ μ μ© (1.9.82 ν¨ν΄ νμ₯)
|
|
8
|
+
- 1.9.82 보μ μ νΈ β audit --fix μλ νΈμΆ ν¨ν΄μ delivered μμ€ν
μλ μ μ©
|
|
9
|
+
- `--auto-fix` νλκ·Έ μ¬μ© μ `_detectDeliveredRequests` β ν보 μλ μλ£
|
|
10
|
+
- `autoCompleteReason: 'drift-auto-fix-1.9.225'` μΆμ
|
|
11
|
+
- drift score κ°μ€μΉ κ°μ§ λ―Έλ΅ μ νΈ μ κ±° β drift ν볡 μμ±λ ν₯μ
|
|
12
|
+
|
|
13
|
+
### 2. `LEERNESS_AUTO_APPLY_DELIVERED=1` env opt-in (μμ¨ λͺ¨λμ©)
|
|
14
|
+
- handoff 첫 νΈμΆ μ μλ μ μ© (`autoCompleteReason: 'env-auto-apply-1.9.225'`)
|
|
15
|
+
- μμ¨ λͺ¨λμμ λ§€ λΌμ΄λλ§λ€ μλ μ 리 β AIκ° μ κ²½ μΈ νμ X
|
|
16
|
+
- env λ―Έμ€μ μ κΈ°μ‘΄ λμ (μλ΄λ§)
|
|
17
|
+
|
|
18
|
+
### 3. handoff λ³Έλ¬Έ κ°μ΄λ μΆκ°
|
|
19
|
+
- 1.9.224 λ³Έλ¬Έ μΉμ
μ `β μμ¨ λͺ¨λ μλ μ μ©: export LEERNESS_AUTO_APPLY_DELIVERED=1` μλ΄
|
|
20
|
+
- μ¬μ©μκ° μμ¨ λͺ¨λ opt-in λ°κ²¬νκΈ° μ½κ²
|
|
21
|
+
|
|
22
|
+
### 4. μ¬μ©μ μμ² μλ μλ£ μμ€ν
β 4 λΌμ΄λ λμ μμ±
|
|
23
|
+
- 1.9.223 CLI auto-complete (μλ νΈμΆ)
|
|
24
|
+
- 1.9.224 MCP 61 + handoff λ³Έλ¬Έ + session close μλ μ μ©
|
|
25
|
+
- 1.9.225 drift --auto-fix ν΅ν© + env opt-in μλν
|
|
26
|
+
|
|
27
|
+
### 5. λμ νκ· (1.9.207~224) β λͺ¨λ μ μ§
|
|
28
|
+
|
|
29
|
+
### 6. stress-v170 β 14/14 PASS
|
|
30
|
+
- 1.9.225 (5): VERSION + drift auto-fix ν΅ν© + drift κΈ°λ³Έ 보쑴 + env auto-apply + env μμΌλ©΄ λ―Έμ μ©
|
|
31
|
+
- μ±λ₯ (2): cold_start avg 367ms / drift auto-fix 383ms
|
|
32
|
+
- λμ νκ· (7): 1.9.207~224
|
|
33
|
+
|
|
34
|
+
### 7. μλ release (87 λΌμ΄λ main-push streak Β· 48 λΌμ΄λ npm publish streak)
|
|
35
|
+
|
|
36
|
+
π§ **drift ν볡 μμ€ν
λμ κ°ν** (1.9.39/82/225 β 3 λΌμ΄λ)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 1.9.224 β 2026-05-22
|
|
41
|
+
|
|
42
|
+
**π MCP 61 λꡬ (leerness_requests_auto_complete) + handoff λ³Έλ¬Έ + session close --auto-apply-delivered.**
|
|
43
|
+
|
|
44
|
+
### 1. MCP 61λ²μ§Έ λꡬ β `leerness_requests_auto_complete`
|
|
45
|
+
- 1.9.223 delivered ν¨ν΄ μλ κ°μ§λ₯Ό μΈλΆ AIμ λ
ΈμΆ
|
|
46
|
+
- μΈμ: `{ path?, apply? (default false) }`
|
|
47
|
+
- μλ΅: `{ total, candidates: [{id, text, claimedVersion, currentVersion, deliveredKeyword, recordedAt}], currentVersion, applied, completedIds[] }`
|
|
48
|
+
- MCP 60 (1.9.221) β 61 λꡬ (+1)
|
|
49
|
+
|
|
50
|
+
### 2. handoff λ³Έλ¬Έ μλ λ
ΈμΆ
|
|
51
|
+
- delivered ν보 β₯ 1건 μ: `## π₯ μ¬μ©μ μμ² μλ μλ£ κ°λ₯ (1.9.224, N건)` λ³Έλ¬Έ μΉμ
|
|
52
|
+
- top 5 ν보 λ
ΈμΆ (overflowλ `... +N건 λ`)
|
|
53
|
+
- μλ κΆμ₯: `β leerness requests auto-complete --apply`
|
|
54
|
+
- 1.9.222 λΉμ μ μ’
λ£ λ³Έλ¬Έ λ€μ, νμ± λ£° μ΄μ μμΉ
|
|
55
|
+
|
|
56
|
+
### 3. `session close --auto-apply-delivered` νλκ·Έ
|
|
57
|
+
- λ§κ° μ delivered ν보 μλ μλ£ (μμ : ν¨ν΄ λ§€μΉ + λ²μ κ°λ)
|
|
58
|
+
- `autoCompleteReason: 'session-close-auto-apply-1.9.224'` μΆμ
|
|
59
|
+
- νλκ·Έ μμΌλ©΄ κΈ°μ‘΄ λμ (μλ΄λ§)
|
|
60
|
+
|
|
61
|
+
### 4. λμ νκ· (1.9.207~223) β λͺ¨λ μ μ§
|
|
62
|
+
|
|
63
|
+
### 5. stress-v169 β 16/16 PASS
|
|
64
|
+
- 1.9.224 (7): VERSION + MCP 61 + μ€ νΈμΆ + handoff λ³Έλ¬Έ + λ³Έλ¬Έ λ―Έλ
ΈμΆ + session close auto-apply + κΈ°λ³Έ 보쑴
|
|
65
|
+
- μ±λ₯ (2): cold_start avg 556ms / MCP 61 tools/list 417ms
|
|
66
|
+
- λμ νκ· (7): 1.9.207~223
|
|
67
|
+
|
|
68
|
+
### 6. μλ release (86 λΌμ΄λ main-push streak Β· 47 λΌμ΄λ npm publish streak)
|
|
69
|
+
|
|
70
|
+
π **μ¬μ©μ μμ² μλ μλ£ μμ€ν
μμ±** (3 λΌμ΄λ λμ ):
|
|
71
|
+
- 1.9.223 CLI auto-complete
|
|
72
|
+
- 1.9.224 MCP 61 + handoff λ³Έλ¬Έ + session close μλ μ μ©
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
3
76
|
## 1.9.223 β 2026-05-22
|
|
4
77
|
|
|
5
78
|
**π₯ μ¬μ©μ μμ² auto-complete (delivered ν¨ν΄ μλ κ°μ§) + handoff/session close ν΅ν©.**
|
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.225 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π§ drift --auto-fix delivered + AUTO_APPLY env opt-in β
|
|
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.225';
|
|
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 μ²λ¦¬).
|
|
@@ -6139,6 +6139,46 @@ function handoff(root) {
|
|
|
6139
6139
|
}
|
|
6140
6140
|
} catch {}
|
|
6141
6141
|
|
|
6142
|
+
// 1.9.224: handoff λ³Έλ¬Έ μλ λ
ΈμΆ β delivered ν¨ν΄ ν보 β₯ 1건 μ (1.9.223 νμ₯)
|
|
6143
|
+
// "Round X.Y.Z β ꡬν μλ£" ν¨ν΄μ΄ λμ λλ©΄ λ³Έλ¬Έ μΉμ
μΌλ‘ μλ μλ΄ (ν€λλΌμΈλ§μΌλ‘λ λμΉκΈ° μ¬μ)
|
|
6144
|
+
// 1.9.225: LEERNESS_AUTO_APPLY_DELIVERED=1 env νμ± μ handoff 첫 νΈμΆμμ μλ μ μ© (μμ¨ λͺ¨λμ© opt-in)
|
|
6145
|
+
try {
|
|
6146
|
+
let delivered = _detectDeliveredRequests(root);
|
|
6147
|
+
const envAutoApply = process.env.LEERNESS_AUTO_APPLY_DELIVERED === '1';
|
|
6148
|
+
if (envAutoApply && delivered.candidates && delivered.candidates.length > 0) {
|
|
6149
|
+
let appliedCnt = 0;
|
|
6150
|
+
for (const c of delivered.candidates) {
|
|
6151
|
+
const u = _updateUserRequest(root, c.id, { status: 'completed', autoCompletedAt: new Date().toISOString(), autoCompleteReason: 'env-auto-apply-1.9.225' });
|
|
6152
|
+
if (u) appliedCnt++;
|
|
6153
|
+
}
|
|
6154
|
+
if (appliedCnt > 0) {
|
|
6155
|
+
const isTty = process.stdout && process.stdout.isTTY;
|
|
6156
|
+
const gr5 = s => isTty ? `\x1b[32m${s}\x1b[0m` : s;
|
|
6157
|
+
log('');
|
|
6158
|
+
log(gr5(`## π₯ μ¬μ©μ μμ² μλ μλ£ (1.9.225, env LEERNESS_AUTO_APPLY_DELIVERED=1, ${appliedCnt}건)`));
|
|
6159
|
+
// μ μ© ν μ¬μ‘°ν
|
|
6160
|
+
delivered = _detectDeliveredRequests(root);
|
|
6161
|
+
}
|
|
6162
|
+
}
|
|
6163
|
+
if (delivered.candidates && delivered.candidates.length > 0) {
|
|
6164
|
+
const isTty = process.stdout && process.stdout.isTTY;
|
|
6165
|
+
const cy4 = s => isTty ? `\x1b[36m${s}\x1b[0m` : s;
|
|
6166
|
+
const yl4 = s => isTty ? `\x1b[33m${s}\x1b[0m` : s;
|
|
6167
|
+
const dm4 = s => isTty ? `\x1b[2m${s}\x1b[0m` : s;
|
|
6168
|
+
log('');
|
|
6169
|
+
log(yl4(`## π₯ μ¬μ©μ μμ² μλ μλ£ κ°λ₯ (1.9.224, ${delivered.candidates.length}건)`));
|
|
6170
|
+
delivered.candidates.slice(0, 5).forEach(c => {
|
|
6171
|
+
log(` β’ [${c.id}] v${c.claimedVersion} (${c.deliveredKeyword}) β ${c.text.slice(0, 70)}${c.text.length > 70 ? 'β¦' : ''}`);
|
|
6172
|
+
});
|
|
6173
|
+
if (delivered.candidates.length > 5) {
|
|
6174
|
+
log(dm4(` ... +${delivered.candidates.length - 5}건 λ`));
|
|
6175
|
+
}
|
|
6176
|
+
log(dm4(` β κ²ν : leerness requests auto-complete`));
|
|
6177
|
+
log(dm4(` β μ μ©: leerness requests auto-complete --apply (μμ μ 리)`));
|
|
6178
|
+
log(dm4(` β μμ¨ λͺ¨λ μλ μ μ©: export LEERNESS_AUTO_APPLY_DELIVERED=1 (1.9.225)`));
|
|
6179
|
+
}
|
|
6180
|
+
} catch {}
|
|
6181
|
+
|
|
6142
6182
|
// 1.9.8: active rules μλ λ
ΈμΆ (λ§€ μΈμ
μμ μ AIμκ² λ³΄μ)
|
|
6143
6183
|
const activeRules = readRules(root).filter(r => r.status === 'active');
|
|
6144
6184
|
if (activeRules.length) {
|
|
@@ -9950,15 +9990,25 @@ function sessionClose(root, opts = {}) {
|
|
|
9950
9990
|
|
|
9951
9991
|
log('');
|
|
9952
9992
|
log(`## π session close μλ ν΅ν© λ³΄κ³ (1.9.217)`);
|
|
9953
|
-
// 1.9.207 + 1.9.223 (delivered ν¨ν΄ μλ κΆμ₯)
|
|
9993
|
+
// 1.9.207 + 1.9.223 (delivered ν¨ν΄ μλ κΆμ₯) + 1.9.224 (--auto-apply-delivered μ΅μ
)
|
|
9954
9994
|
try {
|
|
9955
9995
|
const reqAudit = _auditUserRequests(root);
|
|
9956
9996
|
const missCnt = reqAudit.missing ? reqAudit.missing.length : 0;
|
|
9957
9997
|
let delivered = { candidates: [] };
|
|
9958
9998
|
try { delivered = _detectDeliveredRequests(root); } catch {}
|
|
9959
9999
|
if (delivered.candidates && delivered.candidates.length > 0) {
|
|
9960
|
-
|
|
9961
|
-
|
|
10000
|
+
if (has('--auto-apply-delivered')) {
|
|
10001
|
+
// 1.9.224: μλ μ 리 (λ§κ° μ νΈμΆ β μμ : ν¨ν΄ λ§€μΉ + λ²μ κ°λ)
|
|
10002
|
+
let ok = 0;
|
|
10003
|
+
for (const c of delivered.candidates) {
|
|
10004
|
+
const u = _updateUserRequest(root, c.id, { status: 'completed', autoCompletedAt: new Date().toISOString(), autoCompleteReason: 'session-close-auto-apply-1.9.224' });
|
|
10005
|
+
if (u) ok++;
|
|
10006
|
+
}
|
|
10007
|
+
log(grn(` β delivered ν¨ν΄ ${ok}건 μλ μλ£ (--auto-apply-delivered 1.9.224)`));
|
|
10008
|
+
} else {
|
|
10009
|
+
log(yel(` π₯ delivered ν¨ν΄ ${delivered.candidates.length}건 (1.9.223) β μλ μλ£ κ°λ₯`));
|
|
10010
|
+
log(dim(` β leerness requests auto-complete --apply (μλ) λλ session close --auto-apply-delivered (1.9.224)`));
|
|
10011
|
+
}
|
|
9962
10012
|
} else if (missCnt > 0) {
|
|
9963
10013
|
log(red(` β λ―Έλ΅ μ¬μ©μ μμ² ${missCnt}건 (task-log/plan/decisions λ§€μΉ μ λ¨)`));
|
|
9964
10014
|
} else if (reqAudit.open > 0) {
|
|
@@ -12835,6 +12885,26 @@ function driftCheckCmd(root, opts = {}) {
|
|
|
12835
12885
|
log(`β auto-fix 보μ ν볡 μ€λ₯: ${e.message}`);
|
|
12836
12886
|
}
|
|
12837
12887
|
}
|
|
12888
|
+
// 1.9.225: drift check --auto-fix μ delivered ν¨ν΄ μλ μ μ© ν΅ν© (1.9.223/224 μμ€ν
νμ)
|
|
12889
|
+
// μ¬μ©μ μμ²μ "ꡬν μλ£" ν¨ν΄μ΄ λμ λλ©΄ κ°μ§ λ―Έλ΅ μ νΈκ° drift score λ₯Ό κ°μ€μν¬ μ μμ β μλ μ 리.
|
|
12890
|
+
// 1.9.82 audit --fix ν¨ν΄κ³Ό λμΌ: --auto-fix μ μ¦μ μ μ©, μ μ© ν μ¬κ²μ¬.
|
|
12891
|
+
if (autoFix) {
|
|
12892
|
+
try {
|
|
12893
|
+
const delivered = _detectDeliveredRequests(root);
|
|
12894
|
+
if (delivered.candidates && delivered.candidates.length > 0) {
|
|
12895
|
+
log('');
|
|
12896
|
+
log(`π₯ --auto-fix νμ± (1.9.225) β delivered ν¨ν΄ ${delivered.candidates.length}건 μλ μλ£ μ€...`);
|
|
12897
|
+
let ok = 0;
|
|
12898
|
+
for (const c of delivered.candidates) {
|
|
12899
|
+
const u = _updateUserRequest(root, c.id, { status: 'completed', autoCompletedAt: new Date().toISOString(), autoCompleteReason: 'drift-auto-fix-1.9.225' });
|
|
12900
|
+
if (u) ok++;
|
|
12901
|
+
}
|
|
12902
|
+
log(`β delivered μλ μλ£ ${ok}/${delivered.candidates.length}건`);
|
|
12903
|
+
}
|
|
12904
|
+
} catch (e) {
|
|
12905
|
+
log(`β delivered auto-apply μ€λ₯ (1.9.225): ${e.message}`);
|
|
12906
|
+
}
|
|
12907
|
+
}
|
|
12838
12908
|
if (autoFix && level === 'π΄ critical' && !hasSecurityFired) {
|
|
12839
12909
|
log('');
|
|
12840
12910
|
log(`π§ --auto-fix νμ± β session close μλ μ€ν μ€...`);
|
|
@@ -13818,7 +13888,8 @@ function mcpServeCmd(root) {
|
|
|
13818
13888
|
{ name: 'leerness_pre_wake_audit', description: '1.9.216 (1.9.209 μ¬μ©μ λͺ
μ) β sleep μ sub-agent audit. 6 μμ μ κ²: missing-user-requests / stale-in-progress / drift-handoff-stale / wakeup-missed / next-action-pending / auto-resume-plan. μΈλΆ AIκ° "κΉ¨μ΄λκΈ° μ μ κ²ν λΆλΆ"μ νμ. μλ΅: { auditedAt, findings: {critical, warning, info}, summary }. μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
13819
13889
|
{ name: 'leerness_intent_classify', description: '1.9.216 (1.9.213 μ¬μ©μ λͺ
μ) β μ¬μ©μ μλ νμ
+ scope expansion κ²μ΄νΈ. μλ΅: { intent: precise|broad|default, signals, domain, explicitMentions, expansionCandidates, mode: dry-run }. 3μμΉ μμ : (1) Always-Off Opt-In, (2) Dry-run κΈ°λ³Έ (μ€ν X), (3) λͺ
μ vs μΆλ‘ λΆλ¦¬ λΌλ²¨λ§. 5 λλ©μΈ (game/web/api/cli/data). μΈλΆ AIκ° "μ΄ μμ²μ μ νν κ·Έκ²λ§ / ν¬κ΄μ / κΈ°λ³ΈμΈκ°?"λ₯Ό νμ. μΈμ: { request (required), path? }', inputSchema: { type: 'object', properties: { request: { type: 'string' }, path: { type: 'string' } }, required: ['request'] } },
|
|
13820
13890
|
{ name: 'leerness_idempotency_audit', description: '1.9.216 (1.9.212 μ¬μ©μ λͺ
μ) β λ©±λ±μ± μλ° νμ§. 4μμ μ κ²: rule-duplicate (medium) / task-duplicate-request (medium) / user-request-duplicate (low) / wakeup-duplicate (high). μλ΅: { violations[], verified[], summary: {totalViolations, high/medium/low, overall} }. μΈλΆ AIκ° "μν¬μ€νμ΄μ€μ μ€λ³΅/μΆ©λμ΄ μλ?"λ₯Ό νμ. π MCP 58 λꡬ λ§μΌμ€ν€ (50β58). μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
13821
|
-
{ name: 'leerness_session_resume', description: '1.9.221 (1.9.220 μ¬μ©μ λͺ
μ) β λΉμ μ μ’
λ£ κ°μ§ + μμ¨ μ¬κ°. 5μ νΈ λΆμ: last-handoff-stale / wakeup-missed / in-progress-stale / auto-resume-plan-unused / release-branch-pending. μλ΅: { abnormalShutdown, severity (none/low/medium/high), signals[], resumeGuide[] }. μΈλΆ AIκ° "μ μ /μμ€ν
μ’
λ£/μΈμ
μ’
λ£ ν leerness μνκ° μ μμΈκ°? μ΄λ»κ² μ¬κ°?"λ₯Ό νμ. π MCP 60 λꡬ λ§μΌμ€ν€ (53β60, +7 in 1.9.168/216/221). μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } }
|
|
13891
|
+
{ name: 'leerness_session_resume', description: '1.9.221 (1.9.220 μ¬μ©μ λͺ
μ) β λΉμ μ μ’
λ£ κ°μ§ + μμ¨ μ¬κ°. 5μ νΈ λΆμ: last-handoff-stale / wakeup-missed / in-progress-stale / auto-resume-plan-unused / release-branch-pending. μλ΅: { abnormalShutdown, severity (none/low/medium/high), signals[], resumeGuide[] }. μΈλΆ AIκ° "μ μ /μμ€ν
μ’
λ£/μΈμ
μ’
λ£ ν leerness μνκ° μ μμΈκ°? μ΄λ»κ² μ¬κ°?"λ₯Ό νμ. π MCP 60 λꡬ λ§μΌμ€ν€ (53β60, +7 in 1.9.168/216/221). μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
13892
|
+
{ 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' } } } }
|
|
13822
13893
|
];
|
|
13823
13894
|
|
|
13824
13895
|
function send(obj) {
|
|
@@ -13974,6 +14045,11 @@ function mcpServeCmd(root) {
|
|
|
13974
14045
|
// 1.9.221 (1.9.220): λΉμ μ μ’
λ£ κ°μ§ + μμ¨ μ¬κ°
|
|
13975
14046
|
cliArgs = ['session-resume', '--path', targetPath, '--json'];
|
|
13976
14047
|
break;
|
|
14048
|
+
case 'leerness_requests_auto_complete':
|
|
14049
|
+
// 1.9.224 (1.9.223): delivered ν¨ν΄ μλ κ°μ§ + μλ μλ£
|
|
14050
|
+
cliArgs = ['requests', 'auto-complete', '--path', targetPath, '--json'];
|
|
14051
|
+
if (args.apply === true) cliArgs.push('--apply');
|
|
14052
|
+
break;
|
|
13977
14053
|
default:
|
|
13978
14054
|
return send({ jsonrpc: '2.0', id, error: { code: -32601, message: `Unknown tool: ${name}` } });
|
|
13979
14055
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.225",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|