leerness 1.9.158 β 1.9.159
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 +45 -0
- package/README.md +2 -2
- package/bin/harness.js +16 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.159 β 2026-05-20
|
|
4
|
+
|
|
5
|
+
**π MCP 50 λꡬ λ§μΌμ€ν€ β Provider Registry CRUD MCP μμ± (list/add/remove).**
|
|
6
|
+
|
|
7
|
+
μμ¨ λͺ¨λ 89 λΌμ΄λ. 1.9.158 (list) μ μμ°μ€λ¬μ΄ νμ β add/remove κΉμ§ MCP λ‘ λ
ΈμΆ β μΈλΆ AI κ° μκ° νμ₯ κ°λ₯.
|
|
8
|
+
|
|
9
|
+
### Added β MCP `leerness_provider_add` (49λ²μ§Έ λꡬ)
|
|
10
|
+
- μΈλΆ AI κ° μ provider λμ λ±λ‘ β OpenRouter / Bedrock / Groq / Hugging Face λ±
|
|
11
|
+
- μΈμ: `{ id (required), bin?, envFlag?, versionArgs?, desc?, installHint?, path? }`
|
|
12
|
+
- κ°μ id λ λ² β κ°±μ / λΉνΈμΈ id β user override
|
|
13
|
+
- id μ κ·μ κ²μ¦ (μλ¬Έμ/μ«μ/_- λ§)
|
|
14
|
+
|
|
15
|
+
### Added β MCP `leerness_provider_remove` (50λ²μ§Έ λꡬ) π
|
|
16
|
+
- μ¬μ©μ μ μ provider λ§ μ κ±° (λΉνΈμΈ 5μ’
β κ±°λΆ)
|
|
17
|
+
- μΈμ: `{ id (required), path? }`
|
|
18
|
+
|
|
19
|
+
### Provider Registry CRUD MCP μμ±
|
|
20
|
+
| μμ
| CLI | MCP | λ§μΌμ€ν€ |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| Read | `leerness provider list` | `leerness_provider_list` | 1.9.158 (48λ²μ§Έ) |
|
|
23
|
+
| Write | `leerness provider add` | `leerness_provider_add` | 1.9.159 (49λ²μ§Έ) |
|
|
24
|
+
| Delete | `leerness provider remove` | `leerness_provider_remove` | 1.9.159 (50λ²μ§Έ) π |
|
|
25
|
+
|
|
26
|
+
### Use Cases β μΈλΆ AI μκ° νμ₯
|
|
27
|
+
```javascript
|
|
28
|
+
// λ©μΈ μμ΄μ νΈκ° OpenRouter λ°κ²¬ μ μκ° λ±λ‘
|
|
29
|
+
await mcp.callTool('leerness_provider_add', {
|
|
30
|
+
id: 'openrouter', bin: 'openrouter-cli',
|
|
31
|
+
desc: 'OpenRouter 200+ models aggregator'
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// μλͺ» λ±λ‘ν provider μκ° μ 리
|
|
35
|
+
await mcp.callTool('leerness_provider_remove', { id: 'broken-provider' });
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### MCP λꡬ μΉ΄μ΄νΈ μ§ν
|
|
39
|
+
- 1.9.43: 8 β 1.9.110: **30** π β 1.9.128: **40** π β 1.9.145: 47 β 1.9.158: 48 β **1.9.159: 50** π
|
|
40
|
+
|
|
41
|
+
### Verified
|
|
42
|
+
- e2e 217/217 β
|
|
43
|
+
- stress-v104: 16/16 (MCP tools/list 50κ° 3μ’
+ provider_add 3μ’
+ provider_remove 3μ’
+ λμ νκ· 7μ’
) π **MCP 50 λꡬ λ§μΌμ€ν€**
|
|
44
|
+
- VERSION = 1.9.159 / autonomous-rounds = 89
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
3
48
|
## 1.9.158 β 2026-05-20
|
|
4
49
|
|
|
5
50
|
**π MCP 48λ²μ§Έ λꡬ `leerness_provider_list` β Provider Registry μΈλΆ AI λ
ΈμΆ λ§μΌμ€ν€.**
|
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,7 +12,7 @@
|
|
|
12
12
|
β βββ ββββββ ββββββ ββββββββββββββββββββββββ ββββββββ β
|
|
13
13
|
β βββββββββββββββββββββββββββ ββββββ ββββββββββββββββββββββ β
|
|
14
14
|
β βββββββββββββββββββββββββββ ββββββ βββββββββββββββββββββ β
|
|
15
|
-
β v1.9.
|
|
15
|
+
β v1.9.159 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
17
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
18
18
|
```
|
package/bin/harness.js
CHANGED
|
@@ -6,7 +6,7 @@ const path = require('path');
|
|
|
6
6
|
const cp = require('child_process');
|
|
7
7
|
const readline = require('readline');
|
|
8
8
|
|
|
9
|
-
const VERSION = '1.9.
|
|
9
|
+
const VERSION = '1.9.159';
|
|
10
10
|
const MARK = '<!-- leerness:managed -->';
|
|
11
11
|
const README_START = '<!-- leerness:project-readme:start -->';
|
|
12
12
|
const README_END = '<!-- leerness:project-readme:end -->';
|
|
@@ -9742,7 +9742,9 @@ function mcpServeCmd(root) {
|
|
|
9742
9742
|
{ name: 'leerness_feature_add', description: '1.9.142 β Feature Graph μ μ λ
Έλ μΆκ° (μΈλΆ AIκ° μ½λ μμ± μ€ μ§μ feature λ±λ‘). μΈμ: { title (required), dependsOn?, affects?, coChangesWith?, files?, path? }. μλ F-XXXX ID λΆμ¬. CRUD μμ±μ κΈ°μ¬', inputSchema: { type: 'object', properties: { title: { type: 'string' }, dependsOn: { type: 'string' }, affects: { type: 'string' }, coChangesWith: { type: 'string' }, files: { type: 'string' }, path: { type: 'string' } }, required: ['title'] } },
|
|
9743
9743
|
{ name: 'leerness_feature_link', description: '1.9.142 β κΈ°μ‘΄ feature λ
Έλμ μμ‘΄/μν₯/곡λ³κ²½ μ£μ§ μΆκ°. μΈμ: { id (required, F-XXXX), dependsOn?, affects?, coChangesWith?, path? }. μΈλΆ AIκ° μ½λ λ³κ²½ λμ€ λ°κ²¬ν μΈκ³Όκ΄κ³λ₯Ό μ¦μ κ·Έλνμ λ°μ', inputSchema: { type: 'object', properties: { id: { type: 'string' }, dependsOn: { type: 'string' }, affects: { type: 'string' }, coChangesWith: { type: 'string' }, path: { type: 'string' } }, required: ['id'] } },
|
|
9744
9744
|
{ name: 'leerness_env_detect', description: '1.9.145 β μ€ν νκ²½ μλ κ°μ§ + λ³λ μΆμ JSON ({ snapshot: { os, hardware, locale, shell, node, tools, scriptDependencies }, diff: { firstCapture, changes, missing }, persisted }). "Xμ(λ) λ΄λΆ λλ μΈλΆ λͺ
λ Ή... μλλλ€" μ¬μ λ°©μ§: package.json scripts μμ‘΄ λκ΅¬κ° PATHμ μλμ§ κ²μ¦ + λ¨Έμ /Node/λꡬ λ³κ²½ κ°μ§. μ λκ²½λ‘ λ§μ€νΉ (보μ). μΈμ: { path? }', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
9745
|
-
{ name: 'leerness_provider_list', description: '1.9.157/158 β Provider Registry μ‘°ν JSON ({ total, builtin, user, providers: [{ id, bin, envFlag, source, desc }] }). λΉνΈμΈ 5μ’
(claude/codex/gemini/copilot/ollama) + .harness/providers.json μ¬μ©μ μ μ ν΅ν©. μΈλΆ AIκ° sub-agent λΆλ°° κ°λ₯ν provider μ 체 νμ (OpenRouter/Bedrock λ± λ±λ‘λμ΄ μμΌλ©΄ κ°μ΄ λ
ΈμΆ). π MCP 48 λꡬ λ§μΌμ€ν€', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } }
|
|
9745
|
+
{ name: 'leerness_provider_list', description: '1.9.157/158 β Provider Registry μ‘°ν JSON ({ total, builtin, user, providers: [{ id, bin, envFlag, source, desc }] }). λΉνΈμΈ 5μ’
(claude/codex/gemini/copilot/ollama) + .harness/providers.json μ¬μ©μ μ μ ν΅ν©. μΈλΆ AIκ° sub-agent λΆλ°° κ°λ₯ν provider μ 체 νμ (OpenRouter/Bedrock λ± λ±λ‘λμ΄ μμΌλ©΄ κ°μ΄ λ
ΈμΆ). π MCP 48 λꡬ λ§μΌμ€ν€', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
|
|
9746
|
+
{ name: 'leerness_provider_add', description: '1.9.159 β Provider Registry μ μ provider λμ μΆκ°. μΈμ: { id (required), bin?, envFlag?, versionArgs?, desc?, path? }. μΈλΆ AIκ° μ CLI λ°κ²¬ μ μκ° νμ₯ (OpenRouter / Bedrock / Groq / Hugging Face λ± λ±λ‘). κ°μ id λ λ² νΈμΆ β κ°±μ . λΉνΈμΈ id νΈμΆ β user override. id λ μλ¬Έμ/μ«μ/_- λ§ νμ©.', inputSchema: { type: 'object', properties: { id: { type: 'string' }, bin: { type: 'string' }, envFlag: { type: 'string' }, versionArgs: { type: 'string' }, desc: { type: 'string' }, installHint: { type: 'string' }, path: { type: 'string' } }, required: ['id'] } },
|
|
9747
|
+
{ name: 'leerness_provider_remove', description: '1.9.159 β Provider Registry μμ μ¬μ©μ μ μ provider μ κ±°. μΈμ: { id (required), path? }. λΉνΈμΈ 5μ’
id λ μ κ±° λΆκ° (override λ§ μ κ±° κ°λ₯). π MCP 50 λꡬ λ§μΌμ€ν€ β Provider Registry CRUD MCP μμ± (list/add/remove)', inputSchema: { type: 'object', properties: { id: { type: 'string' }, path: { type: 'string' } }, required: ['id'] } }
|
|
9746
9748
|
];
|
|
9747
9749
|
|
|
9748
9750
|
function send(obj) {
|
|
@@ -9837,6 +9839,18 @@ function mcpServeCmd(root) {
|
|
|
9837
9839
|
case 'leerness_env_detect': cliArgs = ['env', 'detect', targetPath, '--json']; break;
|
|
9838
9840
|
// 1.9.158: Provider Registry β μΈλΆ AI κ° λ±λ‘λ provider νμ
|
|
9839
9841
|
case 'leerness_provider_list': cliArgs = ['provider', 'list', '--path', targetPath, '--json']; break;
|
|
9842
|
+
// 1.9.159: Provider Registry CRUD β μΈλΆ AI κ° μκ° νμ₯
|
|
9843
|
+
case 'leerness_provider_add':
|
|
9844
|
+
cliArgs = ['provider', 'add', String(args.id || ''), '--path', targetPath];
|
|
9845
|
+
if (args.bin) cliArgs.push('--bin', String(args.bin));
|
|
9846
|
+
if (args.envFlag) cliArgs.push('--env-flag', String(args.envFlag));
|
|
9847
|
+
if (args.versionArgs) cliArgs.push('--version-args', String(args.versionArgs));
|
|
9848
|
+
if (args.desc) cliArgs.push('--desc', String(args.desc));
|
|
9849
|
+
if (args.installHint) cliArgs.push('--install-hint', String(args.installHint));
|
|
9850
|
+
break;
|
|
9851
|
+
case 'leerness_provider_remove':
|
|
9852
|
+
cliArgs = ['provider', 'remove', String(args.id || ''), '--path', targetPath];
|
|
9853
|
+
break;
|
|
9840
9854
|
default:
|
|
9841
9855
|
return send({ jsonrpc: '2.0', id, error: { code: -32601, message: `Unknown tool: ${name}` } });
|
|
9842
9856
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.159",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|