leerness 1.9.157 β†’ 1.9.158

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 CHANGED
@@ -1,5 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.158 β€” 2026-05-20
4
+
5
+ **πŸŽ‰ MCP 48번째 도ꡬ `leerness_provider_list` β€” Provider Registry μ™ΈλΆ€ AI λ…ΈμΆœ λ§ˆμΌμŠ€ν†€.**
6
+
7
+ 자율 λͺ¨λ“œ 88 λΌμš΄λ“œ. 1.9.157 Provider Registry CLI 의 μžμ—°μŠ€λŸ¬μš΄ 후속 β€” MCP λ…ΈμΆœ.
8
+
9
+ ### Added β€” MCP `leerness_provider_list` (48번째 도ꡬ)
10
+ - μ™ΈλΆ€ AI (Claude / Codex / Gemini λ“±) κ°€ MCP 톡해 λ“±λ‘λœ provider 전체 회수 κ°€λŠ₯
11
+ - 응닡 JSON: `{ total, builtin, user, providers: [{ id, bin, envFlag, source, desc }] }`
12
+ - 빌트인 5μ’… (claude/codex/gemini/copilot/ollama) + `.harness/providers.json` μ‚¬μš©μž μ •μ˜ 톡합
13
+ - μ™ΈλΆ€ AI ν™œμš© 사둀:
14
+ - 메인 μ—μ΄μ „νŠΈκ°€ sub-agent λΆ„λ°° μ „ μ‚¬μš© κ°€λŠ₯ν•œ provider 확인
15
+ - OpenRouter/Bedrock λ“± λ“±λ‘λ˜μ–΄ 있으면 μžλ™ 발견
16
+ - sub-agent κ°€ "λ‚΄κ°€ μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ가 무엇인지" 자기-점검
17
+
18
+ ### MCP 도ꡬ 카운트 μ§„ν™”
19
+ - 1.9.43 β†’ 1.9.84 (READ 5μ’… μ™„μ„±): 17 도ꡬ
20
+ - 1.9.85 β†’ 1.9.110 (health + Memory CRUD): 30 도ꡬ λ§ˆμΌμŠ€ν†€
21
+ - 1.9.112 β†’ 1.9.119 (Memory READ 5μ’…): 35 도ꡬ
22
+ - 1.9.128 (DELETE/RESTORE 5μ’…): 40 도ꡬ λ§ˆμΌμŠ€ν†€
23
+ - 1.9.142 (Feature Graph): 45 도ꡬ
24
+ - 1.9.145 (env detect): 47 도ꡬ
25
+ - **1.9.158: 48 도ꡬ πŸŽ‰**
26
+
27
+ ### Pending β€” 1.9.158 ꢌ고 λ‹€μŒ 후보
28
+ - **1.9.159** β€” `leerness_provider_add` MCP 도ꡬ (49번째) β€” μ™ΈλΆ€ AI κ°€ μžκ°€ ν™•μž₯ κ°€λŠ₯
29
+ - **1.9.160** β€” `provider sync` (OpenRouter llms.txt μžλ™ 동기화)
30
+ - **1.9.161** β€” LSP μ–΄λŒ‘ν„° MVP
31
+
32
+ ### Verified
33
+ - e2e 217/217 βœ“
34
+ - stress-v103: 12/12 (MCP tools/list 48개 3μ’… + tools/call μ‹€ν˜ΈμΆœ 2μ’… + λˆ„μ  νšŒκ·€ 7μ’…) πŸŽ‰ **MCP 48 도ꡬ λ§ˆμΌμŠ€ν†€**
35
+ - VERSION = 1.9.158 / autonomous-rounds = 88
36
+
37
+ ---
38
+
3
39
  ## 1.9.157 β€” 2026-05-20
4
40
 
5
41
  **Provider Registry CLI MVP β€” μ‚¬μš©μž μ •μ˜ provider 동적 μΆ”κ°€ (점검 λ³΄κ³ μ„œ ꢌ고 #3 β€” Provider Registry MCP의 CLI 단계).**
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **AI μ½”λ”© μ—μ΄μ „νŠΈμ˜ κ±°μ§“ μ™„λ£ŒΒ·μ€‘λ³΅Β·λ§κ°Β·μΆ©λŒμ„ λ§‰μ•„μ£ΌλŠ” κ²€μˆ˜Β·κΈ°μ–΅Β·ν˜‘μ—… CLI ν•˜λ„€μŠ€.**
4
4
 
5
- [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.157-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v102-19%2F19-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-47-blue)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-87-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-auto-success)]() [![provider-registry](https://img.shields.io/badge/provider_registry-dynamic_add-success)]() [![multi-execute](https://img.shields.io/badge/agents_multi-real_spawn%2Bconsensus-success)]() [![sandbox](https://img.shields.io/badge/runCommandSafe-cwd_jail%2Benv_scrub-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
5
+ [![npm](https://img.shields.io/badge/npm-leerness-blue)](https://www.npmjs.com/package/leerness) [![version](https://img.shields.io/badge/version-1.9.158-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v103-12%2F12-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-48-blue)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-88-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-auto-success)]() [![provider-registry](https://img.shields.io/badge/provider_registry-CLI%2BMCP-success)]() [![multi-execute](https://img.shields.io/badge/agents_multi-real_spawn%2Bconsensus-success)]() [![sandbox](https://img.shields.io/badge/runCommandSafe-cwd_jail%2Benv_scrub-success)]() [![license](https://img.shields.io/badge/license-MIT-lightgrey)]()
6
6
 
7
7
  ```
8
8
  ╔══════════════════════════════════════════════════════════════╗
@@ -12,7 +12,7 @@
12
12
  β•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β• β•šβ•β•β•β•β–ˆβ–ˆβ•‘ β•‘
13
13
  β•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘ β•‘
14
14
  β•‘ β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β• β•šβ•β•β•šβ•β• β•šβ•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β• β•‘
15
- β•‘ v1.9.157 AI Agent Reliability Harness + Sandbox β•‘
15
+ β•‘ v1.9.158 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.157';
9
+ const VERSION = '1.9.158';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -9741,7 +9741,8 @@ function mcpServeCmd(root) {
9741
9741
  { name: 'leerness_feature_list', description: '1.9.141 β€” 전체 Feature Graph λ…Έλ“œ + μ—£μ§€ JSON. μ™ΈλΆ€ AIκ°€ μ‹œμŠ€ν…œ λ‚΄ κΈ°λŠ₯ μ˜μ‘΄μ„±μ„ ν•œ λ²ˆμ— 회수', inputSchema: { type: 'object', properties: { path: { type: 'string' } } } },
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
- { 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' } } } }
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
9746
  ];
9746
9747
 
9747
9748
  function send(obj) {
@@ -9834,6 +9835,8 @@ function mcpServeCmd(root) {
9834
9835
  break;
9835
9836
  // 1.9.145: μ‹€ν–‰ ν™˜κ²½ μžλ™ 감지
9836
9837
  case 'leerness_env_detect': cliArgs = ['env', 'detect', targetPath, '--json']; break;
9838
+ // 1.9.158: Provider Registry β€” μ™ΈλΆ€ AI κ°€ λ“±λ‘λœ provider 회수
9839
+ case 'leerness_provider_list': cliArgs = ['provider', 'list', '--path', targetPath, '--json']; break;
9837
9840
  default:
9838
9841
  return send({ jsonrpc: '2.0', id, error: { code: -32601, message: `Unknown tool: ${name}` } });
9839
9842
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.157",
3
+ "version": "1.9.158",
4
4
  "description": "Leerness: λΉ„νŒŒκ΄΄ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, μžλ™ 버전 κ°μ§€Β·μ—…λ°μ΄νŠΈ, κ³„νš/μ§„ν–‰/ν•Έλ“œμ˜€ν”„ μžλ™ν™”, κ²ŒμœΌλ¦„Β·μ‹œν¬λ¦ΏΒ·μΈμ½”λ”© μžλ™ κ°€λ“œ, Claude Code μŠ¬λž˜μ‹œ 톡합을 κ°–μΆ˜ ν•œκ΅­μ–΄ μš°μ„  AI 개발 ν•˜λ„€μŠ€.",
5
5
  "keywords": [
6
6
  "leerness",