leerness 1.9.173 β†’ 1.9.174

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,64 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.174 β€” 2026-05-21
4
+
5
+ **πŸ” μ‚¬μš©μž λͺ…μ‹œ β€” install κΆŒν•œ prompt 제거 + REPL `:permissions` μ¦‰μ‹œ λ³€κ²½.**
6
+
7
+ 자율 λͺ¨λ“œ 104 λΌμš΄λ“œ. μ‚¬μš©μž λͺ…μ‹œ: *"κΆŒν•œ μ„€μ • 문항은 μ œκ±°ν•˜κ³  REPL λͺ¨λ“œμ—μ„œ κ°„νŽΈν•˜κ²Œ κΆŒν•œ λ³€κ²½ν•  수 μžˆλ„λ‘"*.
8
+
9
+ ### 1. Install κΆŒν•œ prompt 제거
10
+ 이전 (1.9.146): install μ‹œ 3-tier κΆŒν•œ λͺ¨λ“œ 선택 prompt (basic/extended/full).
11
+ **문제**: μ‚¬μš©μž κ²½ν—˜ λ³΅μž‘λ„ 증가 + 잘λͺ»λœ 선택 (full) μ‹œ μœ„ν—˜.
12
+
13
+ **1.9.174**:
14
+ - install μ‹œ κΆŒν•œ **항상 `basic` μžλ™ 적용** (μ•ˆμ „ default).
15
+ - prompt μ½”λ“œ (resolveInstallOptions μ•ˆ κΆŒν•œ λͺ¨λ“œ _selectOne 블둝) μ™„μ „ 제거.
16
+ - μ•ˆλ‚΄ 라인: `Agent κΆŒν•œ λͺ¨λ“œ: basic (1.9.174 β€” REPLμ—μ„œ :permissions extended|full 둜 μ¦‰μ‹œ λ³€κ²½ κ°€λŠ₯)`.
17
+
18
+ ### 2. REPL `:permissions` μ¦‰μ‹œ λ³€κ²½ κ°€λŠ₯
19
+ 이전 (1.9.146~1.9.173): `:permissions` 메타 λͺ…령은 list 만 (쑰회).
20
+
21
+ **1.9.174**:
22
+ ```
23
+ agent[claude/actor/β–Ά]> :permissions
24
+ πŸ” ν˜„μž¬ κΆŒν•œ λͺ¨λ“œ: basic
25
+
26
+ λ³€κ²½:
27
+ :permissions basic β€” μ•ˆμ „ (.harness 만 μ“°κΈ°, ꢌμž₯)
28
+ :permissions extended β€” ν”„λ‘œμ νŠΈ 폴더 + shell allowlist
29
+ :permissions full β€” ⚠ 전체 (마우슀/ν‚€λ³΄λ“œ/μ›Ή, IDE 톡합 μ‹œλ§Œ)
30
+
31
+ μ„ΈλΆ€ κΆŒν•œ (mouse/keyboard/browser/admin):
32
+ mouse: βœ— κ±°λΆ€
33
+ keyboard: βœ— κ±°λΆ€
34
+ browser: βœ— κ±°λΆ€
35
+ admin: βœ— κ±°λΆ€
36
+
37
+ agent[claude/actor/β–Ά]> :permissions extended
38
+ βœ“ κΆŒν•œ λͺ¨λ“œ λ³€κ²½: extended (μ¦‰μ‹œ 적용 β€” λ‹€μŒ λͺ…λ ΉλΆ€ν„°)
39
+
40
+ agent[claude/actor/β–Ά]> :permissions full
41
+ βœ“ κΆŒν•œ λͺ¨λ“œ λ³€κ²½: full (μ¦‰μ‹œ 적용 β€” λ‹€μŒ λͺ…λ ΉλΆ€ν„°)
42
+ ⚠ full λͺ¨λ“œ β€” 마우슀/ν‚€λ³΄λ“œ/μ›Ή/κ΄€λ¦¬μž 전체 ν—ˆμš©. IDE 톡합 μ™Έ ν™˜κ²½μ—μ„œλŠ” μœ„ν—˜.
43
+ ```
44
+
45
+ - 인자 μ—†μŒ β†’ ν˜„μž¬ λͺ¨λ“œ + μ„ΈλΆ€ κΆŒν•œ (mouse/keyboard/browser/admin) ν‘œμ‹œ + λ³€κ²½ μ˜΅μ…˜ μ•ˆλ‚΄
46
+ - `:permissions basic|extended|full` β†’ μ¦‰μ‹œ λ³€κ²½ (`permissionsSetCmd` 호좜)
47
+ - `:perm` alias μΆ”κ°€ (단좕)
48
+ - `full` λͺ¨λ“œ λ³€κ²½ μ‹œ ⚠ λͺ…μ‹œμ  κ²½κ³ 
49
+ - 잘λͺ»λœ λͺ¨λ“œ β†’ μΉœμ ˆν•œ μ•ˆλ‚΄ (`잘λͺ»λœ λͺ¨λ“œ: xyz (basic | extended | full)`)
50
+
51
+ ### ν˜Έν™˜μ„±
52
+ - CLI λͺ…λ Ή `leerness permissions list|set` κ·ΈλŒ€λ‘œ μœ μ§€ (1.9.146 ν˜Έν™˜).
53
+ - κΈ°μ‘΄ `.harness/agent-permissions.json` ν˜•μ‹ κ·ΈλŒ€λ‘œ (mode + 4-tier μ„ΈλΆ€).
54
+
55
+ ### Verified
56
+ - e2e 217/217 baseline μœ μ§€
57
+ - stress-v119: **20/20** (install 제거 5 + REPL :permissions 7 + CLI ν˜Έν™˜ 2 + λˆ„μ  νšŒκ·€ 6)
58
+ - VERSION = 1.9.174 / autonomous-rounds = 104 / main μžλ™ push 35 λΌμš΄λ“œ 연속
59
+
60
+ ---
61
+
3
62
  ## 1.9.173 β€” 2026-05-21
4
63
 
5
64
  **🌐 LSP μ–΄λŒ‘ν„° λ‹€κ΅­μ–΄ ν™•μž₯ β€” JavaScript + Python + Go + Rust + Java (5개 μ–Έμ–΄ regex fallback).**
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.173-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v118-15%2F15-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-53-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-103-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-34_rounds-success)]() [![lsp-multi](https://img.shields.io/badge/LSP_λ‹€κ΅­μ–΄-JS%2FPython%2FGo%2FRust%2FJava-success)]() [![stream-ux](https://img.shields.io/badge/슀트리밍-spinner%2Btool__use%2Bdiff_색깔-success)]() [![mcp-bridge](https://img.shields.io/badge/MCP_bridge-web%2Fpc%2Flsp_λ…ΈμΆœ-success)]() [![capability](https://img.shields.io/badge/6_capability-72%25_production--ready-brightgreen)]() [![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.174-green)]() [![tests](https://img.shields.io/badge/e2e-217%2F217-success)]() [![stress](https://img.shields.io/badge/stress--v119-20%2F20-success)]() [![mcp](https://img.shields.io/badge/MCP--tools-53-brightgreen)]() [![rounds](https://img.shields.io/badge/autonomous--rounds-104-blueviolet)]() [![main-push](https://img.shields.io/badge/release--main--push-35_rounds-success)]() [![repl-perm](https://img.shields.io/badge/REPL_:permissions-μ¦‰μ‹œ_λ³€κ²½_κ°€λŠ₯-success)]() [![lsp-multi](https://img.shields.io/badge/LSP_λ‹€κ΅­μ–΄-JS%2FPython%2FGo%2FRust%2FJava-success)]() [![mcp-bridge](https://img.shields.io/badge/MCP_bridge-web%2Fpc%2Flsp_λ…ΈμΆœ-success)]() [![capability](https://img.shields.io/badge/6_capability-72%25_production--ready-brightgreen)]() [![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,9 +12,9 @@
12
12
  β•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β• β•šβ•β•β•β•β–ˆβ–ˆβ•‘ β•‘
13
13
  β•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘ β•‘
14
14
  β•‘ β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β• β•šβ•β•β•šβ•β• β•šβ•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β• β•‘
15
- β•‘ v1.9.173 AI Agent Reliability Harness + Sandbox β•‘
15
+ β•‘ v1.9.174 AI Agent Reliability Harness + Sandbox β•‘
16
16
  β•‘ verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β•‘
17
- β•‘ 🌐 LSP λ‹€κ΅­μ–΄ 5μ’… (JS/Python/Go/Rust/Java regex fallback) β•‘
17
+ β•‘ πŸ” install κΆŒν•œ prompt 제거 Β· REPL :permissions μ¦‰μ‹œ λ³€κ²½ β•‘
18
18
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
19
19
  ```
20
20
 
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.173';
9
+ const VERSION = '1.9.174';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -739,25 +739,11 @@ async function resolveInstallOptions(root, opts = {}) {
739
739
  }
740
740
  }
741
741
  }
742
- // 1.9.146: κΆŒν•œ λͺ¨λ“œ (μ‚¬μš©μž λͺ…μ‹œ μš”μ²­ #5 β€” agent IDE λͺ¨λ“œ 사전 prompt)
743
- let permissionMode = null;
744
- if (shouldAsk && !opts._skipPermissionsPrompt) {
745
- if (useInteractive) {
746
- const pOpt = await _selectOne('agent κΆŒν•œ λͺ¨λ“œ (leerness agent μ‚¬μš© μ‹œ 적용)', [
747
- { label: 'basic (μ•ˆμ „) β€” 읽기/μ“°κΈ° .harness/ 만', description: 'ꢌμž₯ β€” νŒŒμΌμ‹œμŠ€ν…œ/λ„€νŠΈμ›Œν¬ κ±°λΆ€, .harness μ•ˆλ§Œ μ“°κΈ°', id: 'basic' },
748
- { label: 'extended β€” ν”„λ‘œμ νŠΈ 폴더 + shell allowlist', description: 'ν”„λ‘œμ νŠΈ 폴더 read/write, 사전 μ •μ˜λœ λͺ…λ Ήλ§Œ exec', id: 'extended' },
749
- { label: 'full β€” 전체 (마우슀/ν‚€λ³΄λ“œ/μ›Ή/κ΄€λ¦¬μž) ⚠ μœ„ν—˜', description: '⚠ IDE 톡합 μ‹œμ—λ§Œ ꢌμž₯ β€” λͺ¨λ“  PC μž‘μ—… κ°€λŠ₯', id: 'full' }
750
- ], { defaultIndex: 0 });
751
- permissionMode = pOpt ? pOpt.id : 'basic';
752
- } else {
753
- log('\nagent κΆŒν•œ λͺ¨λ“œ (leerness agent λͺ…λ Ή μ‚¬μš© μ‹œ):');
754
- log('1) basic (μ•ˆμ „) β€” .harness/ 만');
755
- log('2) extended β€” ν”„λ‘œμ νŠΈ 폴더 + shell allowlist');
756
- log('3) full ⚠ β€” 마우슀/ν‚€λ³΄λ“œ/μ›Ή/κ΄€λ¦¬μž 전체 (IDE 톡합 μ‹œμ—λ§Œ)');
757
- const a = await ask('선택 [1]: ');
758
- permissionMode = a === '2' ? 'extended' : a === '3' ? 'full' : 'basic';
759
- }
760
- }
742
+ // 1.9.174: κΆŒν•œ prompt 제거 (μ‚¬μš©μž λͺ…μ‹œ) β€” install μ‹œ 항상 basic μžλ™ 적용.
743
+ // REPL μ•ˆμ—μ„œ `:permissions <basic|extended|full>` 둜 μ¦‰μ‹œ λ³€κ²½ κ°€λŠ₯ (REPL UX κ°•ν™”).
744
+ // 이전 1.9.146 의 3-tier 선택 prompt λŠ” μ‚¬μš©μž κ²½ν—˜ λ³΅μž‘λ„ 증가 + 잘λͺ»λœ 선택 (full) μ‹œ μœ„ν—˜ β†’
745
+ // μ•ˆμ „ν•œ κΈ°λ³Έ (basic) μžλ™ μ‹œμž‘ + REPL μ§„μž… μ‹œμ μ— ν•„μš” μ‹œ λ³€κ²½ν•˜λŠ” 흐름이 더 μ•ˆμ „ν•˜κ³  κ°„νŽΈ.
746
+ const permissionMode = 'basic';
761
747
  // 1.9.151: λͺ¨λ“  λ¬Έν•­ μ’…λ£Œ ν›„ β€” REPL λͺ¨λ“œ μ¦‰μ‹œ ν™œμ„±ν™” μ—¬λΆ€ (μ‚¬μš©μž λͺ…μ‹œ μš”μ²­)
762
748
  // μ„ νƒλœ μ—μ΄μ „νŠΈκ°€ μžˆμ„ λ•Œλ§Œ ν‘œμ‹œ. μ„€μΉ˜ μ™„λ£Œ ν›„ install() κ°€ 처리.
763
749
  let startRepl = false;
@@ -807,7 +793,7 @@ async function install(root, opts = {}) {
807
793
  log(`Agents ν™œμ„±ν™”: ${list}`);
808
794
  }
809
795
  if (resolved.startRepl) log(`REPL μžλ™ μ‹œμž‘: 예 (μ„€μΉ˜ μ™„λ£Œ ν›„ \`leerness agent\` μ§„μž…)`);
810
- if (resolved.permissionMode) log(`Agent κΆŒν•œ λͺ¨λ“œ: ${resolved.permissionMode}`);
796
+ if (resolved.permissionMode) log(`Agent κΆŒν•œ λͺ¨λ“œ: ${resolved.permissionMode} (1.9.174 β€” REPLμ—μ„œ \`:permissions extended|full\` 둜 μ¦‰μ‹œ λ³€κ²½ κ°€λŠ₯)`);
811
797
  // 1.9.10: μŠ€ν‚¬ μΉ΄νƒˆλ‘œκ·Έ 좜처 μ•ˆλ‚΄
812
798
  if (SKILLPACK_SOURCE === 'builtin') log(`Skill catalog source: builtin (leerness-skillpack λ―Έμ„€μΉ˜ β€” \`npm i leerness-skillpack\`둜 ν™•μž₯ κ°€λŠ₯)`);
813
799
  else log(`Skill catalog source: ${SKILLPACK_SOURCE} (leerness-skillpack${SKILLPACK_META ? ` v${SKILLPACK_META.version}` : ''})`);
@@ -11019,6 +11005,7 @@ async function _agentRepl(root, opts) {
11019
11005
  log(C.dim(' Slash λͺ…λ Ή (1.9.150): :verify | :audit | :handoff | :health'));
11020
11006
  log(C.dim(' Memory Slash (1.9.161): :lessons | :brainstorm <topic> | :tasks | :plan'));
11021
11007
  log(C.dim(' πŸ†• 1.9.170 β€” Tab=provider cycle, Shift+Tab=model cycle, :stream on|off (μ‹€μ‹œκ°„ 좜λ ₯)'));
11008
+ log(C.dim(' πŸ†• 1.9.174 β€” :permissions [basic|extended|full] 둜 μ¦‰μ‹œ κΆŒν•œ λ³€κ²½ (default: basic μ•ˆμ „)'));
11022
11009
  log(C.dim(` ν˜„μž¬ β€” provider=${state.provider} model=${state.model || '(κΈ°λ³Έ)'} role=${state.role} permissions=${_readPermissions(root).mode}`));
11023
11010
  // 1.9.155: REPL μ§„μž… μ‹œ handoff μ»¨ν…μŠ€νŠΈ μžλ™ λ…ΈμΆœ (UX κ°œμ„  β€” μ‚¬μš©μžκ°€ 맀번 :handoff μ•ˆ 해도 μ»¨ν…μŠ€νŠΈ 인지)
11024
11011
  try {
@@ -11123,7 +11110,8 @@ async function _agentRepl(root, opts) {
11123
11110
  log(' :reset β€” history μ΄ˆκΈ°ν™”');
11124
11111
  log(' :history β€” λŒ€ν™” history ν‘œμ‹œ');
11125
11112
  log(' :save β€” μ„Έμ…˜ μ¦‰μ‹œ μ €μž₯');
11126
- log(' :permissions β€” ν˜„μž¬ κΆŒν•œ λͺ¨λ“œ ν‘œμ‹œ');
11113
+ log(' :permissions [mode] β€” πŸ†• 1.9.174 ν˜„μž¬ λͺ¨λ“œ ν‘œμ‹œ / λ˜λŠ” μ¦‰μ‹œ λ³€κ²½ (basic/extended/full)');
11114
+ log(' :perm [mode] β€” :permissions 단좕 alias');
11127
11115
  log(' :quit / :exit / :q β€” μ’…λ£Œ (μžλ™ μ €μž₯)');
11128
11116
  log(C.bold('\n πŸ†• 1.9.170 ν‚€λ³΄λ“œ 단좕킀:'));
11129
11117
  log(' Tab β€” λ‹€μŒ provider 둜 cycle (ollama β†’ claude β†’ codex β†’ gemini β†’ copilot)');
@@ -11231,7 +11219,42 @@ async function _agentRepl(root, opts) {
11231
11219
  return false;
11232
11220
  }
11233
11221
  if (op === 'save') { saveSession(); log(C.dim(` β†’ ${rel(root, sessionPath())}`)); return false; }
11234
- if (op === 'permissions') { permissionsListCmd(root); return false; }
11222
+ if (op === 'permissions' || op === 'perm') {
11223
+ // 1.9.174: REPLμ—μ„œ κΆŒν•œ λ³€κ²½ κ°€λŠ₯ (μ‚¬μš©μž λͺ…μ‹œ μš”μ²­).
11224
+ // :permissions β€” ν˜„μž¬ λͺ¨λ“œ ν‘œμ‹œ + λ³€κ²½ μ˜΅μ…˜ μ•ˆλ‚΄
11225
+ // :permissions basic β€” κΆŒν•œ λͺ¨λ“œ μ¦‰μ‹œ λ³€κ²½
11226
+ const target = (rest[0] || '').toLowerCase();
11227
+ if (!target) {
11228
+ const p = _readPermissions(root);
11229
+ log('');
11230
+ log(C.bold(` πŸ” ν˜„μž¬ κΆŒν•œ λͺ¨λ“œ: ${C.cy(p.mode || 'basic')}`));
11231
+ log('');
11232
+ log(C.dim(' λ³€κ²½:'));
11233
+ log(` ${C.green(':permissions basic')} β€” μ•ˆμ „ (.harness 만 μ“°κΈ°, ꢌμž₯)`);
11234
+ log(` ${C.yel(':permissions extended')} β€” ν”„λ‘œμ νŠΈ 폴더 + shell allowlist`);
11235
+ log(` ${C.mag(':permissions full')} β€” ⚠ 전체 (마우슀/ν‚€λ³΄λ“œ/μ›Ή, IDE 톡합 μ‹œλ§Œ)`);
11236
+ log('');
11237
+ log(C.dim(' μ„ΈλΆ€ κΆŒν•œ (mouse/keyboard/browser/admin):'));
11238
+ Object.entries(p).filter(([k]) => k !== 'mode' && typeof p[k] === 'boolean').forEach(([k, v]) => {
11239
+ log(` ${k}: ${v ? C.green('βœ“ ν—ˆμš©') : C.dim('βœ— κ±°λΆ€')}`);
11240
+ });
11241
+ return false;
11242
+ }
11243
+ if (!['basic', 'extended', 'full'].includes(target)) {
11244
+ log(C.yel(` ⚠ 잘λͺ»λœ λͺ¨λ“œ: ${target} (basic | extended | full)`));
11245
+ return false;
11246
+ }
11247
+ try {
11248
+ permissionsSetCmd(root, target);
11249
+ log(C.green(` βœ“ κΆŒν•œ λͺ¨λ“œ λ³€κ²½: ${target} (μ¦‰μ‹œ 적용 β€” λ‹€μŒ λͺ…λ ΉλΆ€ν„°)`));
11250
+ if (target === 'full') {
11251
+ log(C.yel(' ⚠ full λͺ¨λ“œ β€” 마우슀/ν‚€λ³΄λ“œ/μ›Ή/κ΄€λ¦¬μž 전체 ν—ˆμš©. IDE 톡합 μ™Έ ν™˜κ²½μ—μ„œλŠ” μœ„ν—˜.'));
11252
+ }
11253
+ } catch (e) {
11254
+ log(C.yel(` ⚠ κΆŒν•œ λ³€κ²½ μ‹€νŒ¨: ${e.message}`));
11255
+ }
11256
+ return false;
11257
+ }
11235
11258
  if (op === 'status') {
11236
11259
  // 1.9.155: REPL μ•ˆμ—μ„œ ν˜„μž¬ μ„Έμ…˜ μƒνƒœ μžμ„Ένžˆ (provider/model/role/permissions/history/runs)
11237
11260
  log(C.bold('\n πŸ“Š REPL μ„Έμ…˜ μƒνƒœ (1.9.155)'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.173",
3
+ "version": "1.9.174",
4
4
  "description": "Leerness: λΉ„νŒŒκ΄΄ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, μžλ™ 버전 κ°μ§€Β·μ—…λ°μ΄νŠΈ, κ³„νš/μ§„ν–‰/ν•Έλ“œμ˜€ν”„ μžλ™ν™”, κ²ŒμœΌλ¦„Β·μ‹œν¬λ¦ΏΒ·μΈμ½”λ”© μžλ™ κ°€λ“œ, Claude Code μŠ¬λž˜μ‹œ 톡합을 κ°–μΆ˜ ν•œκ΅­μ–΄ μš°μ„  AI 개발 ν•˜λ„€μŠ€.",
5
5
  "keywords": [
6
6
  "leerness",