deel-local-cli 1.20.12 → 2.0.0

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.
Files changed (155) hide show
  1. package/README.ko.md +96 -77
  2. package/README.md +119 -80
  3. package/bin/deel.js +398 -32
  4. package/package.json +2 -1
  5. package/src/acp/jsonrpc.js +87 -7
  6. package/src/acp/map.js +62 -13
  7. package/src/acp/serve.js +338 -30
  8. package/src/agent/agents.js +110 -12
  9. package/src/agent/askcheck.js +50 -6
  10. package/src/agent/asks.js +59 -5
  11. package/src/agent/budget.js +9 -2
  12. package/src/agent/card.js +8 -2
  13. package/src/agent/commit.js +168 -16
  14. package/src/agent/compact.js +93 -21
  15. package/src/agent/{/354/213/240/353/242/260/353/217/204.js → confidence.js} +1 -1
  16. package/src/agent/effort.js +85 -15
  17. package/src/agent/evidence.js +63 -7
  18. package/src/agent/evolve.js +132 -24
  19. package/src/agent/grade.js +12 -3
  20. package/src/agent/loop.js +408 -81
  21. package/src/agent/memory.js +176 -29
  22. package/src/agent/mention.js +22 -5
  23. package/src/agent/models.js +31 -7
  24. package/src/agent/modes.js +25 -10
  25. package/src/agent/outschema.js +381 -56
  26. package/src/agent/pins.js +33 -2
  27. package/src/agent/project.js +73 -8
  28. package/src/agent/recall.js +40 -9
  29. package/src/agent/{/354/204/261/355/225/234/352/270/260/353/241/235.js → recordshape.js} +19 -8
  30. package/src/agent/review.js +143 -13
  31. package/src/agent/route.js +506 -32
  32. package/src/agent/salvage.js +2 -1
  33. package/src/agent/session.js +457 -31
  34. package/src/agent/store.js +232 -22
  35. package/src/agent/threads.js +52 -3
  36. package/src/backend/adapter.js +508 -85
  37. package/src/backend/azure.js +12 -1
  38. package/src/backend/cachemark.js +31 -5
  39. package/src/backend/clientcert.js +23 -1
  40. package/src/backend/ctxsize.js +56 -9
  41. package/src/backend/detect.js +252 -19
  42. package/src/backend/http.js +383 -42
  43. package/src/backend/learn.js +101 -11
  44. package/src/backend/mcp.js +333 -24
  45. package/src/backend/price.js +61 -13
  46. package/src/backend/probe.js +188 -36
  47. package/src/backend/proxy.js +108 -14
  48. package/src/backend/quota.js +226 -30
  49. package/src/backend/retry.js +46 -3
  50. package/src/backend/scan.js +47 -10
  51. package/src/backend/scanui.js +57 -7
  52. package/src/backend/toolfit.js +204 -22
  53. package/src/backend/vision.js +14 -1
  54. package/src/backend/wire.js +58 -10
  55. package/src/cmdnames.js +16 -0
  56. package/src/commands/common.js +70 -0
  57. package/src/commands/extend.js +300 -0
  58. package/src/commands/model.js +852 -0
  59. package/src/commands/view.js +328 -0
  60. package/src/commands/work.js +823 -0
  61. package/src/commands.js +193 -2082
  62. package/src/completion.js +45 -3
  63. package/src/config.js +452 -39
  64. package/src/configexplain.js +125 -14
  65. package/src/doctor.js +164 -26
  66. package/src/i18n/en.js +22 -0
  67. package/src/i18n/index.js +31 -1
  68. package/src/i18n/ja.js +25 -1
  69. package/src/i18n/ko.js +25 -2
  70. package/src/i18n/zh.js +25 -1
  71. package/src/lsp/client.js +111 -9
  72. package/src/lsp/servers.js +86 -22
  73. package/src/oneshot.js +325 -65
  74. package/src/pack/sbom.js +28 -5
  75. package/src/pack/selfpack.js +54 -5
  76. package/src/pack/sheet.en.js +24 -3
  77. package/src/pack/tar.js +45 -8
  78. package/src/pack/zip.js +103 -8
  79. package/src/plugins/manage.js +165 -14
  80. package/src/preview/serve.js +239 -23
  81. package/src/providers/bedrock.js +30 -5
  82. package/src/providers/gemini.js +8 -0
  83. package/src/providers/index.js +17 -1
  84. package/src/repl.js +254 -61
  85. package/src/report.js +7 -2
  86. package/src/reset.js +151 -25
  87. package/src/safety/audit.js +108 -8
  88. package/src/safety/authcmd.js +75 -5
  89. package/src/safety/guard.js +507 -15
  90. package/src/safety/hooks.js +172 -20
  91. package/src/safety/keystore.js +178 -18
  92. package/src/safety/network.js +209 -6
  93. package/src/safety/policy.js +377 -36
  94. package/src/safety/runmode.js +9 -2
  95. package/src/safety/secrets.js +243 -17
  96. package/src/safety/shellenv.js +64 -3
  97. package/src/safety/trust.js +298 -32
  98. package/src/safety/undo.js +409 -17
  99. package/src/setup.js +175 -17
  100. package/src/skills/discover.js +122 -19
  101. package/src/stats.js +57 -16
  102. package/src/tools/{/355/231/225/354/235/270/353/262/225.js → checkmethods.js} +26 -1
  103. package/src/tools/clipboard.js +53 -20
  104. package/src/tools/convert.js +118 -37
  105. package/src/tools/desc.en.js +48 -5
  106. package/src/tools/doc2md.js +11 -1
  107. package/src/tools/docs.js +94 -18
  108. package/src/tools/edit-match.js +212 -13
  109. package/src/tools/encoding.js +525 -28
  110. package/src/tools/excel-com.js +63 -15
  111. package/src/tools/excel.js +12 -7
  112. package/src/tools/fastgrep.js +444 -36
  113. package/src/tools/fig.js +40 -9
  114. package/src/tools/fsutil.js +235 -21
  115. package/src/tools/hwpxwrite.js +80 -19
  116. package/src/tools/ignore.js +55 -7
  117. package/src/tools/index.js +1029 -145
  118. package/src/tools/jobs.js +325 -50
  119. package/src/tools/kiwi.js +50 -5
  120. package/src/tools/lsp.js +164 -32
  121. package/src/tools/outline.js +52 -12
  122. package/src/tools/pdf.js +366 -56
  123. package/src/tools/shell.js +12 -4
  124. package/src/tools/spawn.js +203 -18
  125. package/src/tools/todo.js +73 -4
  126. package/src/tools/verify.js +312 -43
  127. package/src/tools/webfetch.js +184 -25
  128. package/src/tools/xlsx.js +232 -31
  129. package/src/ui/ansi.js +209 -15
  130. package/src/ui/banner.js +2 -1
  131. package/src/ui/complete.js +46 -4
  132. package/src/ui/diff.js +4 -2
  133. package/src/ui/export.js +91 -17
  134. package/src/ui/inputbox.js +58 -18
  135. package/src/ui/intro.js +9 -2
  136. package/src/ui/level.js +32 -7
  137. package/src/ui/md.js +101 -15
  138. package/src/ui/motion.js +5 -2
  139. package/src/ui/notify.js +7 -1
  140. package/src/ui/office.js +37 -5
  141. package/src/ui/pastechip.js +3 -2
  142. package/src/ui/pick.js +85 -12
  143. package/src/ui/prompt.js +176 -13
  144. package/src/ui/screen.js +2 -1
  145. package/src/ui/spinner.js +6 -1
  146. package/src/ui/status.js +80 -12
  147. package/src/ui/wrap.js +23 -37
  148. /package/src/agent/{/353/213/250/352/263/204.js" → phase.js} +0 -0
  149. /package/src/skills/builtin/{/352/271/212/354/235/264/354/236/210/352/262/214-/353/247/214/353/223/244/352/270/260/SKILL.md" → build-deep/SKILL.md} +0 -0
  150. /package/src/skills/builtin/{/354/260/250/352/267/274/354/260/250/352/267/274-/353/224/224/353/262/204/352/271/205/SKILL.md" → debug-step-by-step/SKILL.md} +0 -0
  151. /package/src/skills/builtin/{/353/201/235/352/271/214/354/247/200-/355/225/230/352/270/260/SKILL.md" → finish-all/SKILL.md} +0 -0
  152. /package/src/skills/builtin/{/354/212/244/354/212/244/353/241/234-/352/262/200/355/206/240/SKILL.md" → self-review/SKILL.md} +0 -0
  153. /package/src/skills/builtin/{/354/275/224/353/223/234-/354/244/204/354/235/264/352/270/260/SKILL.md" → simplify-code/SKILL.md} +0 -0
  154. /package/src/skills/builtin/{/354/260/224/353/237/254/353/263/264/352/270/260/SKILL.md" → spike/SKILL.md} +0 -0
  155. /package/src/skills/builtin/{/352/262/200/354/202/254-/353/250/274/354/240/200/SKILL.md" → test-first/SKILL.md} +0 -0
package/README.ko.md CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  [![Node.js CI](https://img.shields.io/github/actions/workflow/status/jysvai/deel-local-cli/test.yml?branch=main&logo=github&logoColor=white&label=Node.js%20CI)](https://github.com/jysvai/deel-local-cli/actions/workflows/test.yml)
22
22
  [![CodeQL](https://img.shields.io/github/actions/workflow/status/jysvai/deel-local-cli/codeql.yml?branch=main&logo=github&logoColor=white&label=CodeQL)](https://github.com/jysvai/deel-local-cli/actions/workflows/codeql.yml)
23
- [![tests](https://img.shields.io/badge/tests-10%2C125%20passing-1a7f37?logo=checkmarx&logoColor=white)](docs/ko/develop.md)
23
+ [![tests](https://img.shields.io/badge/tests-13%2C900%20passing-1a7f37?logo=checkmarx&logoColor=white)](docs/ko/develop.md)
24
24
 
25
25
  [![dependencies](https://img.shields.io/badge/dependencies-0-1a7f37)](https://www.npmjs.com/package/deel-local-cli?activeTab=dependencies)
26
26
  [![ESM](https://img.shields.io/badge/ESM-Node%2020%2B-5FA04E?logo=javascript&logoColor=white)](package.json)
@@ -128,7 +128,7 @@
128
128
  | [속도와 씀씀이](docs/ko/tuning.md) | 단계별 추론 강도 · 프리픽스 캐시 · 컨텍스트 길이 |
129
129
  | [안전망과 사내 반입](docs/ko/safety.md) | 되돌리기 · 작업 범위 · 감사기록 · 심사 서류 |
130
130
  | [설정](docs/ko/config.md) · [개발](docs/ko/develop.md) | 환경변수 · 실행 옵션 · 검사 돌리기 · 폴더 구조 |
131
- | [릴리스 노트](docs/ko/releases.md) | [1.16.x](docs/ko/releases/1.16.md) · [1.15.x](docs/ko/releases/1.15.md) · [1.14.x](docs/ko/releases/1.14.md) · [1.13.x](docs/ko/releases/1.13.md) · [1.12.x](docs/ko/releases/1.12.md) · [1.10.x](docs/ko/releases/1.10.md) · [1.9.x](docs/ko/releases/1.9.md) · [그 앞](docs/ko/releases.md) |
131
+ | [릴리스 노트](docs/ko/releases.md) | [1.16.x](docs/ko/releases/1.x.md#116x) · [1.15.x](docs/ko/releases/1.x.md#115x) · [1.14.x](docs/ko/releases/1.x.md#114x) · [1.13.x](docs/ko/releases/1.x.md#113x) · [1.12.x](docs/ko/releases/1.x.md#112x) · [1.10.x](docs/ko/releases/1.x.md#110x) · [1.9.x](docs/ko/releases/1.x.md#19x) · [그 앞](docs/ko/releases.md) |
132
132
 
133
133
  ---
134
134
 
@@ -223,6 +223,16 @@ Model Context Protocol 과 Agent Client Protocol 은 둘 다 표준입출력으
223
223
  만든 겁니다. 손으로 적은 서류는 언젠가 실제와 어긋나고, 담당자가 그걸 한 번
224
224
  발견하면 나머지 서류도 안 믿습니다.
225
225
 
226
+ #### 한마디가 어떻게 도나
227
+
228
+ 길고르기가 모드를 정하고, 그 모드가 모델에게 보일 도구를 정하고, 도구를 부를 때마다
229
+ 모드 관문과 승인 관문을 지납니다. 걸리면 거기서 멈춥니다.
230
+
231
+ <picture>
232
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-flow-ko-dark.svg">
233
+ <img alt="한마디가 도는 길 — 사람 말에서 길고르기, 모드의 도구 목록, 모델, 모드 관문과 승인 관문, 도구 실행, 확인(Verify), 답까지. 도구 결과는 모델로 돌아가 걸음 상한까지 되풀이한다" src="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-flow-ko-light.svg" width="760">
234
+ </picture>
235
+
226
236
  ---
227
237
 
228
238
  ## 빠른 시작
@@ -274,6 +284,11 @@ deel
274
284
  말로 보장하는 대신 코드가 막습니다 — `src/safety/network.js` 가 요청마다 확인하고,
275
285
  허용 목록에 없으면 요청을 만들지도 않습니다.
276
286
 
287
+ <picture>
288
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-trust-ko-dark.svg">
289
+ <img alt="글이 갈 수 있는 자리 — 작업 폴더와 .deel/ 은 이 컴퓨터 안에 있고 선을 넘는 길은 모델 게이트웨이·WebFetch·플러그인 받기·MCP 서버 넷뿐이다. 열쇠와 감사 기록·되돌리기·대화는 선을 안 넘고, 봉인은 뒤의 셋을 잠근다" src="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-trust-ko-light.svg" width="900">
290
+ </picture>
291
+
277
292
  ```
278
293
  [A] 모델 게이트웨이 ─── 소스 코드가 나가는 유일한 길
279
294
  setup 에서 정한 한 자리만. 모델을 바꾸면 이전 자리는 닫힙니다.
@@ -301,7 +316,7 @@ deel --offline
301
316
  무엇이 어디로 갈 수 있는지는 켤 때 화면 맨 위에 늘 적혀 있습니다.
302
317
 
303
318
  ```
304
- deel 1.20.12 ⌂ 이 안
319
+ deel 2.0.0 ⌂ 이 안
305
320
  보냄 이 컴퓨터 안 127.0.0.1:11434 ← 여기 말고는 어디로도 안 갑니다
306
321
  ```
307
322
 
@@ -326,7 +341,7 @@ deel --offline
326
341
  수집·전송하는 것이 없습니다. 텔레메트리, 사용 통계, 오류 보고 전부 없습니다.
327
342
  대화 기록·되돌리기 이력·설정은 작업 폴더의 `.deel/` 안에만 남습니다.
328
343
 
329
- > 검증: `npm test` 의 network·web·mcp 검사 186항목. 허용되지 않은 서버에 실제로
344
+ > 검증: `npm test` 의 network·web·mcp 검사 350항목. 허용되지 않은 서버에 실제로
330
345
  > 요청이 **한 건도 닿지 않는지**, `--offline` 일 때 MCP 서버가 **한 번도 안
331
346
  > 뜨는지**까지 진짜 서버를 띄워서 확인합니다.
332
347
 
@@ -367,7 +382,7 @@ deel setup
367
382
 
368
383
  Bedrock 은 리전을 고릅니다 — 서울(`ap-northeast-2`) 포함 다섯 곳과 「직접 입력」.
369
384
  Claude 는 몸통 규격이 달라서 여섯 자리를 따로 흡수했습니다
370
- ([1.7.0 릴리스 노트](docs/ko/releases/1.7.md#170)).
385
+ ([1.7.0 릴리스 노트](docs/ko/releases/1.x.md#170)).
371
386
 
372
387
  ### 바깥에 붙으면 파일 속 비밀도 가립니다
373
388
 
@@ -457,7 +472,7 @@ $ deel scan
457
472
  ◆ llama.cpp 127.0.0.1:8080 OpenAI 호환 7ms
458
473
  · gemma-3-4b-it
459
474
 
460
- 합계 서버 3곳 · 모델 6개
475
+ 합계 서버 3곳 · 모델 4개
461
476
 
462
477
  추천 Ollama · qwen2.5-coder:7b
463
478
  코딩용 모델 · 도구 호출을 잘하는 계열
@@ -588,6 +603,11 @@ LM Studio 는 `/api/v0/models`, llama.cpp 는 `/props`. 못 알아보면 `(추
588
603
  읽기만 하는 모드에서는 `Write`·`Edit`·`Bash` 를 **모델에게 아예 보내지 않습니다.**
589
604
  "고치지 마세요" 라고 부탁하지 않습니다 — 모델은 부탁을 잊습니다. 없는 도구는 못 씁니다.
590
605
 
606
+ <picture>
607
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-modes-ko-dark.svg">
608
+ <img alt="여덟 가지 작업 모드를 한 판에 — 모드마다 표시와 이름, 파일을 바꿀 수 있는지, 생각 강도, 128k 모델에서의 걸음 상한, 무슨 일일 때 쓰는지" src="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-modes-ko-light.svg" width="760">
609
+ </picture>
610
+
591
611
  `/mode` 와 헷갈리지 마세요. 둘은 다른 축입니다.
592
612
 
593
613
  - `/mode` — **얼마나 물어보나** (auto · confirm · strict)
@@ -785,7 +805,7 @@ deel doc2md 스펙.pdf --out 스펙.md # 파일로
785
805
  | `코드-줄이기` | 동작은 그대로 두고 읽기 쉽게 |
786
806
  | `스스로-검토` | 다 됐다고 말하기 전에. 못 잰 것까지 말하게 |
787
807
 
788
- 목록으로 늘 나가는 몫은 354토큰입니다(8k 창의 4%). 본문은 `Skill` 로 부를 때만 나갑니다.
808
+ 목록으로 늘 나가는 몫은 404토큰입니다(8k 창의 5%). 본문은 `Skill` 로 부를 때만 나갑니다.
789
809
  같은 이름을 직접 만들면 그쪽이 이깁니다 — 품고 다니는 것이 제일 낮은 자리입니다.
790
810
 
791
811
  ```
@@ -1139,12 +1159,12 @@ deel pack --out deel-반입.zip
1139
1159
  ```
1140
1160
  ── 반입 묶음 ───────────────────────────────────────────────────
1141
1161
  ✓ deel-반입.zip
1142
- 94개 파일 · 509.6KB
1162
+ 175개 파일 · 1607.2KB
1143
1163
 
1144
1164
  의존성 0개
1145
1165
  설치 스크립트 없음
1146
1166
  외부 import 0건
1147
- 네트워크 호출 3곳 (설정한 주소로만)
1167
+ 네트워크 호출 8곳 (설정한 주소로만)
1148
1168
  포트 열기 1곳 (/preview 만)
1149
1169
  ```
1150
1170
 
@@ -1162,7 +1182,7 @@ zip 안에는 **사람이 읽을 것 한 장, 기계가 읽을 것 두 장**이
1162
1182
 
1163
1183
  | 파일 | 무엇 |
1164
1184
  |---|---|
1165
- | `반입심사서.txt` | 의존성 · 설치 스크립트 · **소스를 훑어 찾은 네트워크·외부 명령 호출 자리 전부**(파일:줄) · 나가는 길 세 갈래 · 파일별 SHA-256 |
1185
+ | `반입심사서.txt` | 의존성 · 설치 스크립트 · **소스를 훑어 찾은 네트워크·외부 명령 호출 자리 전부**(파일:줄) · 나가는 길 네 갈래 · 파일별 SHA-256 |
1166
1186
  | `sbom.cdx.json` | **SBOM (CycloneDX 1.7).** 스캐너에 그대로 넣습니다. 파일마다 부품 하나에 SHA-256 과 라이선스, 의존성은 **빈 배열로 명시** — 안 적어 낸 것과 없는 것은 다릅니다. CISA 2026 최소 요소(해시 알고리즘 · 부품 라이선스 · 만든 도구 · 만든 맥락) 네 칸이 다 차 있습니다 |
1167
1187
  | `심사명세.json` | 통신 목록(갈래마다 언제·어디로·무엇이·막는법·소스 자리) · **감사기록 사양**(칸 이름과 뜻, 안 남기는 것) · 파일 해시 |
1168
1188
 
@@ -1220,7 +1240,7 @@ deel stats # 이 폴더에서 실제로 무엇을 했나 (.de
1220
1240
  ## 개발
1221
1241
 
1222
1242
  ```bash
1223
- npm test 전체 검증 (8,140항목 — 몇몇은 터미널에 따라 갈립니다)
1243
+ npm test 전체 검증 (13,905항목 — 몇몇은 터미널에 따라 갈립니다)
1224
1244
  npm run coverage 검사가 소스의 어디를 밟았는지
1225
1245
  npm run verify 반입·통신 검증만
1226
1246
  npm run bench 편집 성공률 측정
@@ -1254,30 +1274,30 @@ zip 은 진짜 `unzip` 으로, tar 는 진짜 `tar` 가 만든 것을 읽혀 교
1254
1274
 
1255
1275
  | 검증 | 항목 | 무엇을 |
1256
1276
  |---|---|---|
1257
- | `smoke` | 24 | 도구·작업범위·되돌리기·감사로그 |
1258
- | `loop` | 28 | 에이전트 루프·스트리밍·도구 호출 |
1259
- | `guard` | 113 | **안 하는 자리** — 거부·모르는 도구·두 번 실행·범위 밖·`.deel` 울타리 |
1260
- | `network` | 70 | 정해진 자리 밖으로 새지 않는가 |
1261
- | `web` | 56 | 웹 읽기가 읽기만 하는가 |
1262
- | `abort` · `steer` | 22 · 15 | Ctrl+C 로 끊어도 대화가 성한가 · 도중에 낀 말이 다음 부름에 실리는가 |
1263
- | `parallel` | 23 | 읽기만 동시에 도는가 · 할 일 목록 |
1264
- | `cli` · `oneshot` | 84 · 82 | **진짜 `deel` 을 띄워** 끝까지 돌려 본다 · 배치 모드와 종료코드 |
1265
- | `setup` | 60 | 첫 실행 마법사 (가짜 TTY 로 사람처럼 입력) |
1266
- | `detect` | 85 | 주소 한 줄로 규격·인증을 짚어내는가 |
1267
- | `modes` · `route` | 120 · 72 | 작업 모드 · 종합에서 알맞은 모드로 옮겨 가는가 |
1268
- | `ctxsize` | 56 | 모델에 걸린 컨텍스트 길이를 긁어오는가 |
1269
- | `commands` · `commands-more` | 221 · 93 | 슬래시 명령 전부 |
1270
- | `ui` · `ui2` | 89 · 40 | 암호 가림·한글 폭·상태줄·대화 목록·엑셀→글 |
1271
- | `encoding` · `xlsx` | 77 · 72 | 한글 인코딩 판별 · 엑셀 읽기 |
1272
- | `compact` | 101 | 요약 압축·짝 안 깨짐·실패 시 물러섬 |
1273
- | `stuck` · `undo` | 48 · 58 | 헛도는 것과 일이 되는 것을 가르는가 · 셸이 쓴 파일도 되돌려지는가 |
1274
- | `store` | 75 | 대화 저장·이어하기·중간에 죽어도 복구 |
1275
- | `scan` | 30 | 여러 런타임을 구분해 찾는가 |
1276
- | `plugins` | 79 | 플러그인 받기·묶기·ZIP/TAR |
1277
- | `exitcode` · `doorparity` | 7 · 7 | 화면에 적은 종료코드 표가 진짜인가 · 문 **네 개**가 같은 것을 주는가 |
1278
- | `no-bundle` | 21 | 배포 묶음에 남의 것이 안 섞였는가 · 검사 파일 위생 |
1279
- | `edit-bench` | 20건 | 편집 성공률 |
1280
- | `mutate` | 어긋 12개 | **검사가 정말 지키는가** — 지켜야 할 줄을 일부러 어긋내고 빨개지는지 본다 |
1277
+ | `smoke` | 25 | 도구·작업범위·되돌리기·감사로그 |
1278
+ | `loop` | 85 | 에이전트 루프·스트리밍·도구 호출 |
1279
+ | `guard` | 323 | **안 하는 자리** — 거부·모르는 도구·두 번 실행·범위 밖·`.deel` 울타리 |
1280
+ | `network` | 110 | 정해진 자리 밖으로 새지 않는가 |
1281
+ | `web` | 99 | 웹 읽기가 읽기만 하는가 |
1282
+ | `abort` · `steer` | 22 · 18 | Ctrl+C 로 끊어도 대화가 성한가 · 도중에 낀 말이 다음 부름에 실리는가 |
1283
+ | `parallel` | 41 | 읽기만 동시에 도는가 · 할 일 목록 |
1284
+ | `cli` · `oneshot` | 124 · 220 | **진짜 `deel` 을 띄워** 끝까지 돌려 본다 · 배치 모드와 종료코드 |
1285
+ | `setup` | 109 | 첫 실행 마법사 (가짜 TTY 로 사람처럼 입력) |
1286
+ | `detect` | 123 | 주소 한 줄로 규격·인증을 짚어내는가 |
1287
+ | `modes` · `route` | 207 · 221 | 작업 모드 · 종합에서 알맞은 모드로 옮겨 가는가 |
1288
+ | `ctxsize` | 71 | 모델에 걸린 컨텍스트 길이를 긁어오는가 |
1289
+ | `commands` · `commands-more` | 274 · 195 | 슬래시 명령 전부 |
1290
+ | `ui` · `ui2` | 126 · 40 | 암호 가림·한글 폭·상태줄·대화 목록·엑셀→글 |
1291
+ | `encoding` · `xlsx` | 159 · 106 | 한글 인코딩 판별 · 엑셀 읽기 |
1292
+ | `compact` | 153 | 요약 압축·짝 안 깨짐·실패 시 물러섬 |
1293
+ | `stuck` · `undo` | 76 · 138 | 헛도는 것과 일이 되는 것을 가르는가 · 셸이 쓴 파일도 되돌려지는가 |
1294
+ | `store` | 135 | 대화 저장·이어하기·중간에 죽어도 복구 |
1295
+ | `scan` | 66 | 여러 런타임을 구분해 찾는가 |
1296
+ | `plugins` | 197 | 플러그인 받기·묶기·ZIP/TAR |
1297
+ | `exitcode` · `doorparity` | 7 · 19 | 화면에 적은 종료코드 표가 진짜인가 · 문 **네 개**가 같은 것을 주는가 |
1298
+ | `no-bundle` | 28 | 배포 묶음에 남의 것이 안 섞였는가 · 검사 파일 위생 |
1299
+ | `edit-bench` | 15건 | 편집 성공률 |
1300
+ | `mutate` | 어긋 1,656개 | **검사가 정말 지키는가** — 지켜야 할 줄을 일부러 어긋내고 빨개지는지 본다 |
1281
1301
 
1282
1302
  > **자세히** — 어디를 밟았는지 · 폴더 구조
1283
1303
  >
@@ -1289,48 +1309,47 @@ zip 은 진짜 `unzip` 으로, tar 는 진짜 `tar` 가 만든 것을 읽혀 교
1289
1309
 
1290
1310
  | 판 | 무엇이 바뀌었나 |
1291
1311
  |---|---|
1292
- | [1.20.12](docs/ko/releases/1.20.md#12012) | 켠다고 적은 자물쇠가 아무것도 안 잠그고 있었습니다 |
1293
- | [1.20.11](docs/ko/releases/1.20.md#12011) | 안전망이 있다고 말하는데 없었습니다 |
1294
- | [1.20.10](docs/ko/releases/1.20.md#12010) | 답하지 않았는데 답한 것이 되어 있었습니다 |
1295
- | [1.20.9](docs/ko/releases/1.20.md#1209) | 안 보이는 것이 아니라 다른 것이 보이고 있었습니다 |
1296
- | [1.20.8](docs/ko/releases/1.20.md#1208) | 못 쟀다는 것을 안 된다고 적고 있었습니다 |
1297
- | [1.20.7](docs/ko/releases/1.20.md#1207) | 서버가 말해 준 것과 반대를 배우고 있었습니다 |
1298
- | [1.20.6](docs/ko/releases/1.20.md#1206) | 2차 리뷰가 판을 조용히 잃고 있었습니다 |
1299
- | [1.20.5](docs/ko/releases/1.20.md#1205) | `aws_access_token` 이 안 잡히고 있었습니다 |
1300
- | [1.20.4](docs/ko/releases/1.20.md#1204) | 붙임표 마디를 하나만 세고 있었습니다 |
1301
- | [1.20.3](docs/ko/releases/1.20.md#1203) | 울타리를 옮긴 자리가 어디까지 흔들렸는지 한 판에 보이게 했습니다 |
1302
- | [1.20.2](docs/ko/releases/1.20.md#1202) | 앞 판이 막으려던 자리를 앞 판이 막고 있었습니다 |
1303
- | [1.20.1](docs/ko/releases/1.20.md#1201) | `PASSWORD=` 는 한 번도 안 잡히고 있었습니다 |
1304
- | [1.20.0](docs/ko/releases/1.20.md#1200) | 대문자로 안 적은 열쇠는 그대로 나가고 있었습니다 |
1305
- | [1.19.5](docs/ko/releases/1.19.md#1195) | 윈도우 줄바꿈에서는 앞 판의 고침이 통째로 헛돌고 있었습니다 |
1306
- | [1.19.4](docs/ko/releases/1.19.md#1194) | 주석을 달아 둔 자리에서 비밀이 또 샜습니다 |
1307
- | [1.19.3](docs/ko/releases/1.19.md#1193) | YAML 에 적은 비밀이 평문으로 나가고 있었습니다 |
1308
- | [1.19.2](docs/ko/releases/1.19.md#1192) | 울타리를 옮긴 자리에 틈이 생겼습니다 — 1.19.1 이 낸 구멍을 막습니다 |
1309
- | [1.19.1](docs/ko/releases/1.19.md#1191) | 열두 번째 눈이 본 것, 그리고 오탐 열넷 — 지적 27건 중 13건이 진짜였습니다 |
1310
- | [1.19.0](docs/ko/releases/1.19.md#1190) | 한쪽을 맞히면 반대쪽이 틀렸습니다 — 검사 9,093개로 양쪽을 같이 잽니다 |
1311
- | [1.18.0](docs/ko/releases/1.18.md#1180) | 있는 것과 걸리는 것은 다릅니다 — 검사 8,404개가 초록인 채로 열려 있던 자리들 |
1312
- | [1.17.9](docs/ko/releases/1.17.md#1179) | 한도에 걸렸는데 1초 뒤에 또 두드리고 있었습니다 |
1313
- | [1.17.8](docs/ko/releases/1.17.md#1178) | 긴 지시문을 통째로 붙여 넣으면 시킨 것과 반대로 갔습니다 — 그리고 망이 한 번 끊기면 턴이 사라졌습니다 |
1314
- | [1.17.7](docs/ko/releases/1.17.md#1177) | 나란히 세워 재 봤고, 진 항목을 고쳤습니다 |
1315
- | [1.17.6](docs/ko/releases/1.17.md#1176) | 살아 있다는 신호만 오고 내용이 안 오면, 여태 영원히 기다렸습니다 |
1316
- | [1.17.5](docs/ko/releases/1.17.md#1175) | 한 턴 안에서 단계가 일을 따라갑니다 — 그리고 읽기 도구 넷이 여태 줄을 서 있었습니다 |
1317
- | [1.17.4](docs/ko/releases/1.17.md#1174) | 같은 요청을 한 번 더 보내던 자리들 — 그리고 배운 것이 스스로를 봉인하던 자리 |
1318
- | [1.17.3](docs/ko/releases/1.17.md#1173) | 「같은 대화다」 를 적는 표준 이름이 없습니다 — 아는 이름을 다 답니다 |
1319
- | [1.17.2](docs/ko/releases/1.17.md#1172) | 다른 눈으로 한 번 더 — 한글이 못 여는 hwpx · 이름 없이 나가던 요청 둘 |
1320
- | [1.17.1](docs/ko/releases/1.17.md#1171) | 내 PC 에서만 초록이던 것 둘 — 지운 폴더에 쓰기 · 소스에 박힌 날 NUL |
1321
- | **[1.17.0](docs/ko/releases/1.17.md#1170)** | 사내에 들여놓을 때 막히던 자리들 · 믿는 폴더 · mTLS · `doctor` · 훅 · 서브에이전트 · hwpx 쓰기 |
1322
- | **[1.16.0](docs/ko/releases/1.16.md#1160)** | 깊이 봐 달라는 말을 얕게 받던 자리 · 게이트웨이 캐시 · `doc2md` · Figma `.fig` |
1323
- | **[1.15.1](docs/ko/releases/1.15.md#1151)** | 에디터에 우리가 어떻게 인증받는지 말합니다 — ACP 레지스트리 등재 조건 |
1324
- | **[1.15.0](docs/ko/releases/1.15.md#1150)** | 같은 것을 두 번 하지 않습니다 — 프리픽스 캐시를 깨던 조용히 비싼 아홉 자리 |
1325
- | **[1.14.0](docs/ko/releases/1.14.md#1140)** | 적어 둔 것이 참인지 기계가 대신 봅니다 — 초록불과 「깨면 잡힌다」 는 다릅니다 |
1326
- | [1.13.1](docs/ko/releases/1.13.md#1131) | 올라간 물건이 소스와 달랐습니다 — 148개 중 47개가 CRLF 로 나갔습니다 |
1327
- | **[1.13.0](docs/ko/releases/1.13.md#1130)** | 바깥 창구와 붙는 자리를 전부 다시 봤습니다 — 서로 못 보는 검수자 셋, 셋이 같이 짚은 것 넷 |
1328
- | **[1.12.0](docs/ko/releases/1.12.md#1120)** | 같은 앞머리를 걸음마다 다시 보내고 있었습니다 |
1329
- | **[1.10.0](docs/ko/releases/1.10.md#1100)** | ESC 가 진짜로 멈춥니다 · 자리가 다 차도 그 턴 안에서 이어 갑니다 · 회사별 창구를 여덟 자리 전부 쟀습니다 |
1330
- | [1.9.2](docs/ko/releases/1.9.md#192) | 막고 있다고 적어 둔 것이 실제로는 안 막고 있던 자리들 · 접히면 시킨 말과 남은 할 일이 사라지던 것 |
1331
- | **[1.9.0](docs/ko/releases/1.9.md#190)** | 표를 표로 그린다 · Claude·Bedrock 에 추론 강도가 실제로 걸린다 · 회사별 도구 규격 · 바뀐 자리만 다시 싣기 |
1332
-
1333
- 가까운 다섯 판만 적었습니다. 나머지 전부와 무엇이 왜 바뀌었는지는 **[릴리스 노트](docs/ko/releases.md)** 에 있습니다.
1312
+ | **[2.0.0](docs/ko/releases/2.0.md#200)** | 있다고 적힌 울타리마다 실제로 걸리는지 다시 봤습니다 — 바뀐 것 전부·어디를 어떻게 고쳤나·어떻게 찾았나(CHA) |
1313
+
1314
+ <p align="center">
1315
+ <picture>
1316
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-cha-ko-dark.svg">
1317
+ <img alt="CHA 한 판이 도는 아홉 걸음 — 움직이는 그림. 사냥·브리핑·2차 눈·판정·빨간 검사 먼저·고침·어긋내기·관문·기록 아홉 칸을 표시가 하나씩 짚으며 돌고, 9번에서 다시 1번으로 돌아간다. 3번 자리에는 세 눈이 선다 — Claude 는 쓰고 Gemini 와 codex 는 읽기만 한다. 움직임을 줄이는 설정이면 멈춘 그림으로 바뀐다" src="https://raw.githubusercontent.com/jysvai/deel-local-cli/main/docs/assets/fig-cha-ko-light.svg" width="860">
1318
+ </picture>
1319
+ </p>
1320
+
1321
+ 2.0.0 의 고침은 코드를 읽어서 나온 것이 아닙니다. **CHA — 순환형 적대적 하네싱** 한 가지
1322
+ 절차를 열여덟 판 되풀이해서 나온 것입니다. 이 고리 한 바퀴가 한 판이고, 3번 자리에는
1323
+ 세 모델이 차례로 섭니다.
1324
+
1325
+ 2.0.0 은 이름이 바뀐 큰 판입니다. 그 앞의 1.2.0 ~ 1.20.13 은
1326
+ **[1.x 모음](docs/ko/releases/1.x.md)** 한 파일에 판마다 한 줄씩 있습니다.
1327
+
1328
+ <details>
1329
+ <summary>1.x 줄기 한눈에 (18줄기)</summary>
1330
+
1331
+ | 줄기 | 무엇이 바뀌었나 |
1332
+ |---|---|
1333
+ | [1.20.x](docs/ko/releases/1.x.md#120x) | 띄어쓰기 한 칸이 시킨 말을 통째로 숨겼습니다 |
1334
+ | [1.19.x](docs/ko/releases/1.x.md#119x) | 한쪽을 맞히면 반대쪽이 틀렸습니다 — 2차 리뷰 열세 판, 그리고 옮긴 자리에 난 틈 |
1335
+ | [1.18.x](docs/ko/releases/1.x.md#118x) | 있는 것과 걸리는 것은 다릅니다 — 초록불이 지키지 않던 자리들, 그리고 2차 리뷰 |
1336
+ | [1.17.x](docs/ko/releases/1.x.md#117x) | 회사 안에 들여놓을 때 막히던 자리들, 그리고 무엇을 할지는 그 회사가 적습니다 |
1337
+ | [1.16.x](docs/ko/releases/1.x.md#116x) | 깊이 봐 달라는 말을 얕게 받던 자리, 그리고 시안·문서를 그대로 읽습니다 |
1338
+ | [1.15.x](docs/ko/releases/1.x.md#115x) | 같은 것을 두 번 하지 않습니다 — 조용히 비싼 아홉 자리 |
1339
+ | [1.14.x](docs/ko/releases/1.x.md#114x) | 적어 둔 것이 참인지 기계가 대신 봅니다 — 초록불과 「깨면 잡힌다」 는 다릅니다 |
1340
+ | [1.13.x](docs/ko/releases/1.x.md#113x) | 바깥 창구와 붙는 자리를 전부 다시 봤습니다 |
1341
+ | [1.12.x](docs/ko/releases/1.x.md#112x) | 같은 앞머리를 매번 다시 보내고 있었습니다 |
1342
+ | [1.10.x](docs/ko/releases/1.x.md#110x) | ESC 가 진짜로 멈추고, 자리가 다 차도 하던 일을 이어 갑니다 |
1343
+ | [1.9.x](docs/ko/releases/1.x.md#19x) | 화면이 읽히고, 회사 API 가 제 말을 알아듣습니다 |
1344
+ | [1.8.x](docs/ko/releases/1.x.md#18x) | 한 시간짜리 토큰을 쓰는 사내 게이트웨이에서 하루를 보낼 수 있습니다 |
1345
+ | [1.7.x](docs/ko/releases/1.x.md#17x) | 로컬은 그대로 두고, 말했을 때만 바깥으로 나갑니다 |
1346
+ | [1.6.x](docs/ko/releases/1.x.md#16x) | 일이 되고 있는데 헛돈다고 끊던 자리 |
1347
+ | [1.5.x](docs/ko/releases/1.x.md#15x) | 5MB 문서를 919줄 중 8줄만 보고 있었습니다 |
1348
+ | [1.4.x](docs/ko/releases/1.x.md#14x) | README 가 왜 다른지 말하고, 심사서의 빠진 한 줄을 채운다 |
1349
+ | [1.3.x](docs/ko/releases/1.x.md#13x) | 말 대신 증거, 터미널 대신 에디터 |
1350
+ | [1.2.x](docs/ko/releases/1.x.md#12x) | 대화가 끊기지 않게 |
1351
+
1352
+ </details>
1334
1353
 
1335
1354
  ---
1336
1355