leerness 1.9.184 β 1.9.185
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 +74 -0
- package/README.md +3 -3
- package/bin/harness.js +21 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,79 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.185 β 2026-05-21
|
|
4
|
+
|
|
5
|
+
**π§ DEP0190 μμ process μ ν fix + REPL stream μΉμ μ§λ¨ + Hermes UX λΆμ λ³΄κ³ (μ¬μ©μ λͺ
μ).**
|
|
6
|
+
|
|
7
|
+
μμ¨ λͺ¨λ 115 λΌμ΄λ. μ¬μ©μ λͺ
μ 3μ’
:
|
|
8
|
+
1. *"REPL μμ΄μ νΈ λͺ¨λ ꡬλ μ€ν¨ + μΆλ‘ λ΄μ©/diff λ―Ένμ"* β μΉμ ν μ§λ¨ λ©μμ§
|
|
9
|
+
2. *"agent[claude/actor/βΆ]> (node:54076) [DEP0190] ..."* β μμ process μ ν fix
|
|
10
|
+
3. *"SSH duffy@192.168.68.89 μ hermes REPL UX νμΈ β μ μ¬ κ΅¬ν"* β λ³΄κ³ μ μμ±
|
|
11
|
+
|
|
12
|
+
### Fix #1 β DEP0190 μμ process μ ν
|
|
13
|
+
1.9.184 μ `process.on('warning')` νΈλ€λ¬λ λΆλͺ¨λ§. claude/codex/gemini CLI κ° λ΄λΆ Node child λ₯Ό spawnν λ μμμ μμ X β μ¬μ©μ REPL μ
λ ₯ νμλ DEP0190 μΆλ ₯.
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
// 1.9.185 (μ¬μ©μ λͺ
μ): NODE_OPTIONS=--no-deprecation μλ μ€μ β λͺ¨λ Node child κΉμ§ μ ν.
|
|
17
|
+
if (!/--no-deprecation/.test(process.env.NODE_OPTIONS || '')) {
|
|
18
|
+
process.env.NODE_OPTIONS = ((process.env.NODE_OPTIONS || '') + ' --no-deprecation').trim();
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`process.env` λ³κ²½μ μμ spawn μ μμ. λΆλͺ¨λ 1.9.184 μ `process.on('warning')` μΌλ‘ μ²λ¦¬.
|
|
23
|
+
|
|
24
|
+
### Fix #2 β REPL stream μ€ν¨ μΉμ μ§λ¨
|
|
25
|
+
**Before**:
|
|
26
|
+
```
|
|
27
|
+
agent[claude/actor/βΆ]> μΉκ°λ°μ μ§νν΄μ€
|
|
28
|
+
ββ /stream (120053ms) ββ
|
|
29
|
+
β μ€ν¨: exit=null
|
|
30
|
+
π‘ μ ν κ°λ₯: :provider codex / :provider gemini / :provider copilot
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**After**:
|
|
34
|
+
```
|
|
35
|
+
agent[claude/actor/βΆ]> μΉκ°λ°μ μ§νν΄μ€
|
|
36
|
+
ββ /stream (120053ms) ββ
|
|
37
|
+
β claude CLI μλ΅ μ€ν¨: exit=null
|
|
38
|
+
β³ κ°λ₯ μμΈ: (1) claude CLI μλ΅ μκ° μ΄κ³Ό (λͺ¨λΈ λ‘λ©/ν° μλ΅ λκΈ° μ€)
|
|
39
|
+
(2) network/auth λ¬Έμ (νΉν codex/gemini λ μΈν°λ· + ν ν° νμ)
|
|
40
|
+
β³ μ§μ κ²μ¦: claude --print "ping"
|
|
41
|
+
π‘ μ¦μ μ ν: :provider codex Β· :provider gemini Β· :provider copilot λλ Tab ν€
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
μ€ν¨ μΌμ΄μ€ λΆκΈ°:
|
|
45
|
+
- `exit=null` / `timeout` β μλ΅ μκ° μ΄κ³Ό + μ§μ κ²μ¦ λͺ
λ Ή
|
|
46
|
+
- `exit=1` / `unauth` / `login` β μΈμ¦ λλ½ + login λͺ
λ Ή (claude/codex/gemini login, copilot=gh auth login)
|
|
47
|
+
|
|
48
|
+
### #3 β Hermes UX λΆμ (μ¬μ©μ SSH μ μ μμ²)
|
|
49
|
+
|
|
50
|
+
**SSH 보μ μ μ±
**: ν¨μ€μλλ `LEERNESS_SSH_PASS` env λ³μλ‘λ§ μ λ¬. paramiko μμ μ€ν¬λ¦½νΈλ λΆμ μλ£ ν μ¦μ μμ . μ½λ/λ‘κ·Έμ μ λ μ μ₯ X.
|
|
51
|
+
|
|
52
|
+
**Hermes μ¬μ νμΈ** (v0.14.0, Python 3.11, 89 commands Β· 29 tools Β· 85 skills):
|
|
53
|
+
- μμΉ: `~/.local/bin/hermes` (Ollama hermes-gemma:latest)
|
|
54
|
+
- 2-column Welcome λ°μ€ (logo + toolsets/skills catalog)
|
|
55
|
+
- μ€μκ° μνλ°: `β model β ctx % β [progress bar] β elapsed β β² timer`
|
|
56
|
+
- minimal prompt: `β― `
|
|
57
|
+
- slash commands: `/help`, `/compress`, `/quit`
|
|
58
|
+
- `-z/--oneshot` μ€ν¬λ¦½νΈ λͺ¨λ (λ°°λ/μ€νΌλ/μΈμ
ID λͺ¨λ μ κ±°)
|
|
59
|
+
|
|
60
|
+
**leerness μ°¨μ© ν보** (1.9.186+):
|
|
61
|
+
1. μνλ° μ€μκ° κ°±μ (`β‘ provider β ctx N% β [bar] β elapsed β β² timer`)
|
|
62
|
+
2. `:compress` slash command β context μμΆ
|
|
63
|
+
3. 2-column Welcome λ°μ€ μ¬λμμΈ
|
|
64
|
+
4. `--oneshot/-z` λͺ
νν (λ°°λ/μ€νΌλ μ κ±°)
|
|
65
|
+
5. Tip λΌμΈ (`β¦ Tip: ...`)
|
|
66
|
+
|
|
67
|
+
μμΈ λ³΄κ³ μ: `_reports/hermes-ux-analysis-1.9.185.md` (λΉκ³΅κ°)
|
|
68
|
+
|
|
69
|
+
### Verified
|
|
70
|
+
- stress-v130: **15/15 PASS** (μ¬μ©μ λͺ
μ 4 + live 3 + λμ 8)
|
|
71
|
+
- e2e 217/217 baseline μ μ§
|
|
72
|
+
- `agents list` νΈμΆ: DEP0190 μΆλ ₯ μμ β
|
|
73
|
+
- VERSION = 1.9.185 Β· autonomous-rounds = 115 Β· main μλ push 46 λΌμ΄λ μ°μ
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
3
77
|
## 1.9.184 β 2026-05-21
|
|
4
78
|
|
|
5
79
|
**π¨ μ€μΉ UX 4μ’
β Ctrl+C νμΈ prompt + λ‘λ©λ° + skillpack μ μΈ + DEP0190 μ΅μ (μ¬μ©μ λͺ
μ).**
|
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) []() []() []() []() []() []() []() []() []() []() []() []()
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
β βββ ββββββ ββββββ ββββββββββββββββββββββββ ββββββββ β
|
|
13
13
|
β βββββββββββββββββββββββββββ ββββββ ββββββββββββββββββββββ β
|
|
14
14
|
β βββββββββββββββββββββββββββ ββββββ βββββββββββββββββββββ β
|
|
15
|
-
β v1.9.
|
|
15
|
+
β v1.9.185 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π§ DEP0190 μμ μ νΒ·REPL μΉμ μ§λ¨Β·Hermes UX λΆμ β
|
|
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.185';
|
|
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 μ²λ¦¬).
|
|
@@ -17,6 +17,12 @@ process.on('warning', (w) => {
|
|
|
17
17
|
if (w && (w.code === 'DEP0190' || /DEP0190/.test(String(w.message || '')))) return;
|
|
18
18
|
process.stderr.write(`(node:${process.pid}) ${w.name || 'Warning'}: ${w.message || w}\n`);
|
|
19
19
|
});
|
|
20
|
+
// 1.9.185 (μ¬μ©μ λͺ
μ): REPL μ§μ
ν user input μμ μλ DEP0190 λ°μ (claude/ollama CLI κ° Node μμ spawn μ μμμ λ
Έμ΄μ¦).
|
|
21
|
+
// λΆλͺ¨ νΈλ€λ¬λ μμμ μμ X β NODE_OPTIONS=--no-deprecation μΌλ‘ λͺ¨λ Node child κΉμ§ μ ν.
|
|
22
|
+
// process.env λ³κ²½μ μμ spawn μ μμ (μ΄λ―Έ μμλ λΆλͺ¨μλ μν₯ X, λΆλͺ¨λ μμ 'warning' νΈλ€λ¬λ‘ μ²λ¦¬).
|
|
23
|
+
if (!/--no-deprecation/.test(process.env.NODE_OPTIONS || '')) {
|
|
24
|
+
process.env.NODE_OPTIONS = ((process.env.NODE_OPTIONS || '') + ' --no-deprecation').trim();
|
|
25
|
+
}
|
|
20
26
|
|
|
21
27
|
const MARK = '<!-- leerness:managed -->';
|
|
22
28
|
const README_START = '<!-- leerness:project-readme:start -->';
|
|
@@ -11868,14 +11874,25 @@ async function _agentRepl(root, opts) {
|
|
|
11868
11874
|
}
|
|
11869
11875
|
if (state.history.length % 6 === 0) saveSession(); // 6ν΄λ§λ€ μλ μ μ₯
|
|
11870
11876
|
} else {
|
|
11871
|
-
|
|
11872
|
-
|
|
11877
|
+
// 1.9.185 (μ¬μ©μ λͺ
μ): REPL νΈμΆ μ€ν¨ μΉμ ν μ§λ¨ β μ΄λ λ¨κ³μμ μ€ν¨νλμ§ + μ¦μ κ²μ¦ λͺ
λ Ή μλ΄
|
|
11878
|
+
const errMsg = result.error || 'unknown';
|
|
11879
|
+
log(C.yel(` β ${state.provider} CLI μλ΅ μ€ν¨: ${errMsg}`));
|
|
11880
|
+
// μ€ν¨ μμΈ λΆλ₯
|
|
11881
|
+
if (/exit=null/.test(errMsg) || /timeout/i.test(errMsg)) {
|
|
11882
|
+
log(C.dim(` β³ κ°λ₯ μμΈ: (1) ${state.provider} CLI μλ΅ μκ° μ΄κ³Ό (λͺ¨λΈ λ‘λ©/ν° μλ΅ λκΈ° μ€)`));
|
|
11883
|
+
log(C.dim(` (2) network/auth λ¬Έμ (νΉν codex/gemini λ μΈν°λ· + ν ν° νμ)`));
|
|
11884
|
+
log(C.dim(` β³ μ§μ κ²μ¦: ${state.provider} --print "ping" ${state.provider === 'gemini' ? '--yolo' : ''}`));
|
|
11885
|
+
} else if (/exit=1/.test(errMsg) || /unauth/i.test(errMsg) || /login/i.test(errMsg)) {
|
|
11886
|
+
log(C.dim(` β³ κ°λ₯ μμΈ: μΈμ¦ λλ½ (login νμ)`));
|
|
11887
|
+
log(C.dim(` β³ ν΄κ²°: ${state.provider} login ${state.provider === 'copilot' ? '(gh auth login)' : ''}`));
|
|
11888
|
+
}
|
|
11889
|
+
// μ ν κ°λ₯ provider μλ΄
|
|
11873
11890
|
try {
|
|
11874
11891
|
const others = EXTERNAL_AGENTS.filter(a => a.id !== state.provider)
|
|
11875
11892
|
.map(a => ({ def: a, status: _checkAgent(a) }))
|
|
11876
11893
|
.filter(x => x.status.status === 'ready');
|
|
11877
11894
|
if (others.length) {
|
|
11878
|
-
log(C.dim(` π‘
|
|
11895
|
+
log(C.dim(` π‘ μ¦μ μ ν: ${others.map(x => `:provider ${x.def.id}`).join(' Β· ')} λλ Tab ν€`));
|
|
11879
11896
|
} else {
|
|
11880
11897
|
log(C.dim(` π‘ λ€λ₯Έ provider νμ±ν: .env μμ LEERNESS_ENABLE_<CLAUDE|CODEX|GEMINI|COPILOT>=1`));
|
|
11881
11898
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.185",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|