deel-local-cli 1.8.0 → 1.12.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.
- package/README.ko.md +10 -25
- package/README.md +43 -51
- package/bin/deel.js +56 -13
- package/package.json +60 -60
- package/src/acp/serve.js +810 -732
- package/src/agent/budget.js +156 -153
- package/src/agent/compact.js +420 -296
- package/src/agent/effort.js +308 -177
- package/src/agent/evidence.js +2 -0
- package/src/agent/evolve.js +263 -213
- package/src/agent/filemem.js +155 -0
- package/src/agent/grade.js +51 -1
- package/src/agent/loop.js +1707 -1349
- package/src/agent/memory.js +156 -152
- package/src/agent/mention.js +210 -210
- package/src/agent/session.js +1049 -832
- package/src/agent/store.js +186 -9
- package/src/agent/threads.js +26 -1
- package/src/backend/adapter.js +1159 -615
- package/src/backend/cachemark.js +150 -0
- package/src/backend/detect.js +327 -288
- package/src/backend/learn.js +24 -0
- package/src/backend/mcp.js +96 -5
- package/src/backend/probe.js +131 -61
- package/src/backend/quota.js +250 -133
- package/src/backend/retry.js +30 -6
- package/src/backend/tokens.js +37 -0
- package/src/backend/toolfit.js +352 -0
- package/src/backend/wire.js +600 -0
- package/src/commands.js +3135 -2918
- package/src/config.js +47 -2
- package/src/i18n/en.js +544 -466
- package/src/i18n/index.js +18 -0
- package/src/i18n/ja.js +497 -417
- package/src/i18n/ko.js +591 -466
- package/src/i18n/zh.js +497 -417
- package/src/lsp/client.js +49 -5
- package/src/oneshot.js +620 -471
- package/src/pack/sbom.js +30 -4
- package/src/pack/selfpack.js +25 -9
- package/src/pack/sheet.en.js +288 -0
- package/src/pack/tar.js +65 -2
- package/src/plugins/manage.js +46 -9
- package/src/providers/bedrock.js +17 -0
- package/src/repl.js +2602 -2286
- package/src/safety/audit.js +92 -8
- package/src/safety/authcmd.js +14 -3
- package/src/safety/guard.js +143 -0
- package/src/safety/keystore.js +62 -39
- package/src/safety/undo.js +24 -6
- package/src/tools/fsutil.js +265 -250
- package/src/tools/index.js +239 -34
- package/src/tools/jobs.js +158 -29
- package/src/tools/verify.js +358 -328
- package/src/tools/webfetch.js +92 -9
- package/src/ui/md.js +201 -5
- package/src/ui/motion.js +0 -1
- package/src/ui/pastechip.js +50 -3
- package/src/ui/pick.js +115 -0
- package/src/ui/screen.js +23 -3
- package/src/ui/status.js +613 -610
package/README.ko.md
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
| [속도와 씀씀이](docs/ko/tuning.md) | 단계별 추론 강도 · 프리픽스 캐시 · 컨텍스트 길이 |
|
|
95
95
|
| [안전망과 사내 반입](docs/ko/safety.md) | 되돌리기 · 작업 범위 · 감사기록 · 심사 서류 |
|
|
96
96
|
| [설정](docs/ko/config.md) · [개발](docs/ko/develop.md) | 환경변수 · 실행 옵션 · 검사 돌리기 · 폴더 구조 |
|
|
97
|
-
| [릴리스 노트](docs/ko/releases.md) | [1.
|
|
97
|
+
| [릴리스 노트](docs/ko/releases.md) | [1.10.x](docs/ko/releases/1.10.md) · [1.9.x](docs/ko/releases/1.9.md) · [1.8.x](docs/ko/releases/1.8.md) · [1.7.x](docs/ko/releases/1.7.md) · [그 앞](docs/ko/releases.md) |
|
|
98
98
|
|
|
99
99
|
---
|
|
100
100
|
|
|
@@ -267,7 +267,7 @@ deel --offline
|
|
|
267
267
|
무엇이 어디로 갈 수 있는지는 켤 때 화면 맨 위에 늘 적혀 있습니다.
|
|
268
268
|
|
|
269
269
|
```
|
|
270
|
-
deel 1.
|
|
270
|
+
deel 1.10.0 ⌂ 이 안
|
|
271
271
|
보냄 이 컴퓨터 안 127.0.0.1:11434 ← 여기 말고는 어디로도 안 갑니다
|
|
272
272
|
```
|
|
273
273
|
|
|
@@ -475,7 +475,8 @@ LM Studio 는 `/api/v0/models`, llama.cpp 는 `/props`. 못 알아보면 `(추
|
|
|
475
475
|
| `/commit [전부\|미리보기\|제목]` | 이번 대화가 바꾼 것만 담아 커밋. 메시지는 diff 와 증거에서. **push 는 안 합니다** |
|
|
476
476
|
| `/model` | 연결·모델 바꾸기 |
|
|
477
477
|
| `/model 카드` | 이 모델을 겪어 본 결과 — 그래서 deel 이 무엇을 바꿔 뒀는지 |
|
|
478
|
-
| `/think <강도>` | 추론 강도 (`off·low·medium·high·max`) |
|
|
478
|
+
| `/think <강도>` | 추론 강도 (`off·low·medium·high·xhigh·max`) — 창구가 안 받는 칸은 받는 값으로 낮춰 보냅니다 |
|
|
479
|
+
| `/think auto` | 시킨 말에 맞춰 강도를 고릅니다 — 정한 값이 **천장**이 됩니다 |
|
|
479
480
|
| `/think 배분 <배분>` | 단계별 배분 (`균일·절약·깊게`) |
|
|
480
481
|
| `/think 자세히` | 단계표 — 어느 단계를 어떤 강도·상한으로 도는지 |
|
|
481
482
|
| `/mode <모드>` | 승인 정책 — 얼마나 물어보나 (`auto` · `confirm` · `strict`) |
|
|
@@ -1151,29 +1152,13 @@ zip 은 진짜 `unzip` 으로, tar 는 진짜 `tar` 가 만든 것을 읽혀 교
|
|
|
1151
1152
|
|
|
1152
1153
|
| 판 | 무엇이 바뀌었나 |
|
|
1153
1154
|
|---|---|
|
|
1155
|
+
| **[1.10.0](docs/ko/releases/1.10.md#1100)** | ESC 가 진짜로 멈춥니다 · 자리가 다 차도 그 턴 안에서 이어 갑니다 · 회사별 창구를 여덟 자리 전부 쟀습니다 |
|
|
1156
|
+
| [1.9.2](docs/ko/releases/1.9.md#192) | 막고 있다고 적어 둔 것이 실제로는 안 막고 있던 자리들 · 접히면 시킨 말과 남은 할 일이 사라지던 것 |
|
|
1157
|
+
| [1.9.1](docs/ko/releases/1.9.md#191) | 한글 이름을 쓴 MCP 도구가 모델 눈에 전부 같아 보이던 것 — 서로 다르고 판마다 같은 이름으로 |
|
|
1158
|
+
| **[1.9.0](docs/ko/releases/1.9.md#190)** | 표를 표로 그린다 · Claude·Bedrock 에 추론 강도가 실제로 걸린다 · 회사별 도구 규격 · 바뀐 자리만 다시 싣기 |
|
|
1154
1159
|
| **[1.8.0](docs/ko/releases/1.8.md#180)** | 한 시간짜리 토큰을 쓰는 사내 게이트웨이에서 하루를 — 열쇠를 받아 오기 · `deel reset` · 영어 화면이 진짜 영어 |
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
| **[1.6.2](docs/ko/releases/1.6.md#162)** | 누르면 멈추고, 시킨 대로 하고, 안 끊긴다 — ESC · 되묻기 · 요청 누락 · 붙여넣기 접기 · 끊긴 자리 잇기 |
|
|
1158
|
-
| **[1.6.1](docs/ko/releases/1.6.md#161)** | 헛도는 턴을 만들던 자리들 — 울타리가 `/dev/null` 까지 막던 것 · 옷 문서를 못 읽던 것 · 파일에서 그림이 사라지던 것 |
|
|
1159
|
-
| **[1.6.0](docs/ko/releases/1.6.md#160)** | 사내망에서 안 되던 것들 — 프록시 · 429 · 윈도우 셸 · 5만 개 저장소 · PDF · 캡처 붙여넣기 · 에디터 이어하기 |
|
|
1160
|
-
| **[1.5.8](docs/ko/releases/1.5.md#158)** | 5MB 문서를 919줄 중 8줄만 보던 것 · 정규식을 경로로 읽어 명령을 막던 것 |
|
|
1161
|
-
| **[1.5.7](docs/ko/releases/1.5.md#157)** | 맥 한글 폴더에서 제 파일이 「범위 밖」이던 것 · 붙여넣기 · ESC |
|
|
1162
|
-
| **[1.5.6](docs/ko/releases/1.5.md#156)** | 막히면 물어본다 — 글로 묻고 턴을 끝내는 대신에 |
|
|
1163
|
-
| **[1.5.5](docs/ko/releases/1.5.md#155)** | 계획을 세우면 방이 찬다 — 「한 명뿐」은 고정이 아니라 버그였다 |
|
|
1164
|
-
| [1.5.4](docs/ko/releases/1.5.md#154) | 방에 하루가 흐른다 — 아침·낮·노을·밤 · 벽시계 · 식은 커피 |
|
|
1165
|
-
| [1.5.3](docs/ko/releases/1.5.md#153) | 맥에서 걸린 세 가지 — 줄바꿈 안내 · 사무실이 안 사라짐 · `/motion` 하나로 |
|
|
1166
|
-
| [1.5.2](docs/ko/releases/1.5.md#152) | 적대적 리뷰가 남긴 나머지를 전부 정리했다 — 화면이 거짓말하던 자리들 |
|
|
1167
|
-
| [1.5.1](docs/ko/releases/1.5.md#151) | 1.5.0 이 넣은 것 두 개가 망가진 채 나갔다. 그것을 고친다 |
|
|
1168
|
-
| [1.5.0](docs/ko/releases/1.5.md#150) | 줄바꿈이 생겼고, 화면이 재미있어졌고, 그러면서 오히려 가벼워졌다 |
|
|
1169
|
-
| [1.4.3](docs/ko/releases/1.4.md#143) | README 가 왜 다른지 말하고, 심사서의 빠진 한 줄을 채운다 |
|
|
1170
|
-
| [1.4.2](docs/ko/releases/1.4.md#142) | 1.4.1 이 보안 수정 전에 나갔다 — 그걸 바로잡는 판 |
|
|
1171
|
-
| [1.4.1](docs/ko/releases/1.4.md#141) | 새 기능 없이, 실제로 찾은 것만 고친다 — 윈도우 abort·ReDoS·XSS |
|
|
1172
|
-
| [1.4.0](docs/ko/releases/1.4.md#140) | deel 이 제 얼굴을 갖고, 영어로도 말하고, 뜻까지 본다 — 열한 자리 |
|
|
1173
|
-
| [1.3.0](docs/ko/releases/1.3.md#130) | 말 대신 증거, 터미널 대신 에디터 — 여섯 자리 |
|
|
1174
|
-
| [1.2.0](docs/ko/releases/1.2.md#120) | 대화가 끊기지 않게 — 여섯 자리 |
|
|
1175
|
-
|
|
1176
|
-
무엇이 왜 바뀌었는지는 **[릴리스 노트](docs/ko/releases.md)** 에 있습니다.
|
|
1160
|
+
|
|
1161
|
+
가까운 다섯 판만 적었습니다. 나머지 전부와 무엇이 왜 바뀌었는지는 **[릴리스 노트](docs/ko/releases.md)** 에 있습니다.
|
|
1177
1162
|
|
|
1178
1163
|
---
|
|
1179
1164
|
|
package/README.md
CHANGED
|
@@ -119,7 +119,7 @@ This page is the **summary**. Each section links to the detail behind it.
|
|
|
119
119
|
| [Speed and spend](docs/en/tuning.md) | Per-stage effort · the prefix cache · context length |
|
|
120
120
|
| [Safety and corporate review](docs/en/safety.md) | Undo · working scope · audit log · the review package |
|
|
121
121
|
| [Configuration](docs/en/config.md) · [Development](docs/en/develop.md) | Env vars · run flags · running the tests · folder layout |
|
|
122
|
-
| [Release notes](docs/en/releases.md) | [1.
|
|
122
|
+
| [Release notes](docs/en/releases.md) | [1.10.x](docs/en/releases/1.10.md) · [1.9.x](docs/en/releases/1.9.md) · [1.8.x](docs/en/releases/1.8.md) · [1.7.x](docs/en/releases/1.7.md) · [older](docs/en/releases.md) |
|
|
123
123
|
|
|
124
124
|
---
|
|
125
125
|
|
|
@@ -256,8 +256,10 @@ English instead of Korean. That side is cheaper, too: the part of the window tha
|
|
|
256
256
|
single request drops from about 4,900 tokens to about 3,450 — on a 32k model, from 15% of the
|
|
257
257
|
window to 10.5%.
|
|
258
258
|
|
|
259
|
-
Tool
|
|
260
|
-
|
|
259
|
+
Tool and argument names are ASCII in every language — `Read(file_path)`, `Task(purpose)`.
|
|
260
|
+
Those are identifiers, not prose, and several vendors reject a non-ASCII name outright.
|
|
261
|
+
The Korean names some models learned earlier are still accepted on the way *in*, so a model
|
|
262
|
+
that sends `목적` instead of `purpose` still gets through.
|
|
261
263
|
|
|
262
264
|
### Install
|
|
263
265
|
|
|
@@ -335,7 +337,7 @@ deel --offline
|
|
|
335
337
|
The destination is printed at the top of every session:
|
|
336
338
|
|
|
337
339
|
```
|
|
338
|
-
deel 1.
|
|
340
|
+
deel 1.10.0 ⌂ inside
|
|
339
341
|
Sends to this machine 127.0.0.1:11434 ← nowhere else
|
|
340
342
|
```
|
|
341
343
|
|
|
@@ -426,7 +428,7 @@ amounts six months later. Write them in `.deel/config.json` — dollars per
|
|
|
426
428
|
million tokens:
|
|
427
429
|
|
|
428
430
|
```json
|
|
429
|
-
"
|
|
431
|
+
"pricing": { "claude-opus-4-6": { "input": 0, "output": 0, "asOf": "2026-09-01" } }
|
|
430
432
|
```
|
|
431
433
|
|
|
432
434
|
The amount is shown with **where it came from and as of when**, and after six
|
|
@@ -445,9 +447,9 @@ never the problem.
|
|
|
445
447
|
So write down *how to get a key* instead of the key:
|
|
446
448
|
|
|
447
449
|
```json
|
|
448
|
-
"
|
|
449
|
-
"
|
|
450
|
-
"
|
|
450
|
+
"authCommand": {
|
|
451
|
+
"command": "az account get-access-token --resource api://ai-gw --query accessToken -o tsv",
|
|
452
|
+
"ttl": 3600
|
|
451
453
|
}
|
|
452
454
|
```
|
|
453
455
|
|
|
@@ -534,15 +536,16 @@ Names follow Claude Code / Codex conventions.
|
|
|
534
536
|
| `/evidence [file]` | Evidence — what changed, and what proves it. **What is unproven is listed too** |
|
|
535
537
|
| `/commit [all\|preview\|title]` | Commits only what this session changed; message from the diff and the evidence. **Never pushes** |
|
|
536
538
|
| `/model` | Switch connection / model |
|
|
537
|
-
| `/model
|
|
538
|
-
| `/think <level>` | Reasoning level (`off·low·medium·high·max`) |
|
|
539
|
-
| `/think
|
|
540
|
-
| `/think
|
|
539
|
+
| `/model card` | Model card — what this model has actually done here, and what deel changed because of it |
|
|
540
|
+
| `/think <level>` | Reasoning level (`off·low·medium·high·xhigh·max`) — a rung this endpoint does not accept is lowered to one it does |
|
|
541
|
+
| `/think auto` | Effort follows the request — your setting becomes the **ceiling** |
|
|
542
|
+
| `/think profile <name>` | Per-stage profile (`even·save·deep`) |
|
|
543
|
+
| `/think detail` | Stage table — which stage runs at which level and cap |
|
|
541
544
|
| `/mode <mode>` | Approval policy — how much it asks (`auto` · `confirm` · `strict`) |
|
|
542
545
|
| `/work [mode]` | Work mode — what kind of work you are doing |
|
|
543
546
|
| `/auto` | Hand the wheel back — it picks the mode from what you type |
|
|
544
547
|
| `/code` `/plan` `/architect` `/debug` `/ask` `/orchestrator` | Switch work mode directly (pins it) |
|
|
545
|
-
| `/level [level]` | How much to show (
|
|
548
|
+
| `/level [level]` | How much to show (`simple` · `developer`) |
|
|
546
549
|
| `/motion [plain\|knight\|animal\|office\|off]` | What animates while it works — takes effect at once, and is saved |
|
|
547
550
|
| `/undo [turns]` | Revert file changes |
|
|
548
551
|
| `/diff [file]` | Files changed this session, and the changed lines |
|
|
@@ -572,7 +575,7 @@ the conversation.
|
|
|
572
575
|
|---|---|
|
|
573
576
|
| `Tab` | Completes the `/` command you are typing. Candidates appear under the box as you type |
|
|
574
577
|
| `Shift+Tab` | Approval policy (`⏵⏵ auto` → `⏵ risky only` → `⏸ everything`) |
|
|
575
|
-
| `Ctrl+O` | Work mode (
|
|
578
|
+
| `Ctrl+O` | Work mode (`Auto` → `Code` → `Plan` → …) |
|
|
576
579
|
| `↑` `↓` | Input history |
|
|
577
580
|
| `Ctrl+C` | Stops the answer in progress; twice on an empty line quits |
|
|
578
581
|
| Typing while it works, then `Enter` | Steers without throwing anything away — takes effect from the next step |
|
|
@@ -622,13 +625,13 @@ overrides something a person chose.
|
|
|
622
625
|
Twenty commands on first launch means nothing gets chosen. Locking features away means
|
|
623
626
|
hitting a wall later. So only **what is shown** differs.
|
|
624
627
|
|
|
625
|
-
| | Simple (
|
|
628
|
+
| | Simple (default) | Developer |
|
|
626
629
|
|---|---|---|
|
|
627
630
|
| `/help` listing | Common commands only | Everything |
|
|
628
631
|
| Error messages | What to do about it | The original text |
|
|
629
632
|
| Safety | **Identical** | **Identical** |
|
|
630
633
|
|
|
631
|
-
`/level
|
|
634
|
+
`/level developer` is saved to config and persists across sessions.
|
|
632
635
|
|
|
633
636
|
Two things matter here:
|
|
634
637
|
|
|
@@ -790,8 +793,8 @@ not a stage table.
|
|
|
790
793
|
```
|
|
791
794
|
$ /think
|
|
792
795
|
|
|
793
|
-
|
|
794
|
-
|
|
796
|
+
Effort medium (First call medium · Continue low · Stuck high)
|
|
797
|
+
harder /think high faster /think low
|
|
795
798
|
```
|
|
796
799
|
|
|
797
800
|
| Profile | Character |
|
|
@@ -800,25 +803,25 @@ $ /think
|
|
|
800
803
|
| `save` (default) | Hard on the first decision only |
|
|
801
804
|
| `deep` | Everything one notch up — for hard work |
|
|
802
805
|
|
|
803
|
-
Set the profile with `/think
|
|
806
|
+
Set the profile with `/think profile save`. **Level and profile are different axes, so the
|
|
804
807
|
commands were split** — `/think high` and `/think save` used to set different things under
|
|
805
808
|
one name, which made the screen unreadable.
|
|
806
809
|
|
|
807
|
-
The stage table moved to `/think
|
|
810
|
+
The stage table moved to `/think detail` (the default at developer level).
|
|
808
811
|
|
|
809
812
|
```
|
|
810
|
-
$ /think
|
|
813
|
+
$ /think detail
|
|
811
814
|
|
|
812
|
-
|
|
813
|
-
|
|
815
|
+
Effort medium (First call medium · Continue low · Stuck high)
|
|
816
|
+
Profile save Hard on the first call, shallow while continuing - usually the better trade
|
|
814
817
|
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
818
|
+
Stage Effort Out cap When
|
|
819
|
+
First call · medium 14,069 Deciding what to do
|
|
820
|
+
Continue ↓ low 12,310 Reading a tool result, picking the next move
|
|
821
|
+
Stuck ↑ high 15,827 The last tool returned an error
|
|
819
822
|
|
|
820
|
-
|
|
821
|
-
|
|
823
|
+
Caps are shared inside 16,384 (unknown, so a default) — /out
|
|
824
|
+
Context 40,960 · used 5,787
|
|
822
825
|
```
|
|
823
826
|
|
|
824
827
|
That second-to-last line exists for a reason: **when all three caps are equal, it is the
|
|
@@ -1096,9 +1099,9 @@ audit-log spec to write SIEM ingestion rules.
|
|
|
1096
1099
|
|
|
1097
1100
|
| File | What |
|
|
1098
1101
|
|---|---|
|
|
1099
|
-
|
|
|
1102
|
+
| `import-review.txt` | Dependencies · install scripts · **every network and process-spawn call site found by scanning the source** (file:line) · the three outbound lanes · SHA-256 per file |
|
|
1100
1103
|
| `sbom.cdx.json` | **SBOM (CycloneDX 1.5).** Feed it straight to a scanner. One component per file with SHA-256; dependencies stated as an **explicit empty array** — "not declared" and "none" are different claims |
|
|
1101
|
-
|
|
|
1104
|
+
| `audit-spec.json` | Egress list (per lane: when, where, what, how it's stopped, and the source location) · **audit-log spec** (field names and meanings, plus what is never recorded) · file hashes |
|
|
1102
1105
|
|
|
1103
1106
|
```bash
|
|
1104
1107
|
deel audit # the human-readable sheet only
|
|
@@ -1107,6 +1110,9 @@ deel sbom --out review.json # to a file
|
|
|
1107
1110
|
deel sbom --only sbom # just the SBOM
|
|
1108
1111
|
```
|
|
1109
1112
|
|
|
1113
|
+
With the screen language set to English these three, and the `deel pack` archive itself,
|
|
1114
|
+
come out in English — file names included (`deel pack` writes `deel-import.zip`).
|
|
1115
|
+
|
|
1110
1116
|
All three are generated by scanning the source, never written by hand — hand-written sheets
|
|
1111
1117
|
drift, and **a review document that drifts is worse than none.** Find one wrong line and the
|
|
1112
1118
|
reviewer stops trusting the rest. The audit-log spec is the one hand-written part, so a test
|
|
@@ -1203,27 +1209,13 @@ so one run tells you everything.
|
|
|
1203
1209
|
|
|
1204
1210
|
| Version | What changed |
|
|
1205
1211
|
|---|---|
|
|
1212
|
+
| **[1.10.0](docs/en/releases/1.10.md#1100)** | ESC actually stops · a full context carries on inside the same turn · every vendor endpoint measured |
|
|
1213
|
+
| [1.9.2](docs/en/releases/1.9.md#192) | Guards that said they were blocking were not blocking · folding lost the request and the outstanding work |
|
|
1214
|
+
| [1.9.1](docs/en/releases/1.9.md#191) | MCP tools with Korean names all looked the same to the model — names are now distinct and stable |
|
|
1215
|
+
| **[1.9.0](docs/en/releases/1.9.md#190)** | Tables are drawn as tables · reasoning effort reaches Claude and Bedrock · tool schemas shaped per vendor · only the changed part of a file is re-sent |
|
|
1206
1216
|
| **[1.8.0](docs/en/releases/1.8.md#180)** | A full day against a gateway that hands out one-hour tokens — fetch the key instead of storing it · `deel reset` · an English screen that is actually English |
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
| **[1.6.0](docs/en/releases/1.6.md#160)** | The things that did not work on a corporate network — proxy · 429 · Windows shell · 50k-file repos · PDF · clipboard paste · editor resume |
|
|
1210
|
-
| **[1.5.8](docs/en/releases/1.5.md#158)** | A 5MB document showed 8 lines out of 919 · a regex read as a path blocked the command |
|
|
1211
|
-
| **[1.5.7](docs/en/releases/1.5.md#157)** | Korean folders on macOS made your own files "out of scope" · paste · ESC |
|
|
1212
|
-
| **[1.5.6](docs/en/releases/1.5.md#156)** | It asks when stuck — instead of writing a question and ending the turn |
|
|
1213
|
-
| **[1.5.5](docs/en/releases/1.5.md#155)** | A plan fills the room — "only one person" was a bug, not a design |
|
|
1214
|
-
| [1.5.4](docs/en/releases/1.5.md#154) | A day passes in the room — morning to night, a wall clock, a cold coffee |
|
|
1215
|
-
| [1.5.3](docs/en/releases/1.5.md#153) | Three things a Mac user tripped over — newline hint, office stays put, one `/motion` |
|
|
1216
|
-
| [1.5.2](docs/en/releases/1.5.md#152) | Everything else the adversarial reviews turned up — where the screen was lying |
|
|
1217
|
-
| [1.5.1](docs/en/releases/1.5.md#151) | Two of the things 1.5.0 added shipped broken. This fixes them |
|
|
1218
|
-
| [1.5.0](docs/en/releases/1.5.md#150) | Line breaks exist now, the screen got fun, and it came out lighter than before |
|
|
1219
|
-
| [1.4.3](docs/en/releases/1.4.md#143) | The README explains what's different, and the review report gets its missing line |
|
|
1220
|
-
| [1.4.2](docs/en/releases/1.4.md#142) | 1.4.1 shipped before its own security fixes — this corrects that |
|
|
1221
|
-
| [1.4.1](docs/en/releases/1.4.md#141) | No new features, only what was actually found and fixed — Windows abort, ReDoS, XSS |
|
|
1222
|
-
| [1.4.0](docs/en/releases/1.4.md#140) | deel gets a face, speaks English, and sees meaning — eleven places |
|
|
1223
|
-
| [1.3.0](docs/en/releases/1.3.md#130) | Evidence instead of claims, the editor instead of a terminal — six places |
|
|
1224
|
-
| [1.2.0](docs/en/releases/1.2.md#120) | So the conversation doesn't break — six places |
|
|
1225
|
-
|
|
1226
|
-
What changed and why is in the **[release notes](docs/en/releases.md)**.
|
|
1217
|
+
|
|
1218
|
+
The five most recent are listed here. Every version, and why each thing changed, is in the **[release notes](docs/en/releases.md)**.
|
|
1227
1219
|
|
|
1228
1220
|
---
|
|
1229
1221
|
|
package/bin/deel.js
CHANGED
|
@@ -15,6 +15,8 @@ import { runSessions } from '../src/agent/sessionui.js';
|
|
|
15
15
|
import { acp } from '../src/acp/serve.js';
|
|
16
16
|
import { runCompletion } from '../src/completion.js';
|
|
17
17
|
import { runReset } from '../src/reset.js';
|
|
18
|
+
import { 언어잡기, 언어 } from '../src/i18n/index.js';
|
|
19
|
+
import { load as 설정읽기 } from '../src/config.js';
|
|
18
20
|
|
|
19
21
|
const MIN_NODE = 20;
|
|
20
22
|
|
|
@@ -35,25 +37,63 @@ function 판번호() {
|
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
|
|
40
|
+
/*
|
|
41
|
+
* 켤 때 말을 한 번 정한다.
|
|
42
|
+
*
|
|
43
|
+
* 여태 이 자리가 비어 있었다. 말을 정하는 곳이 repl.js 하나뿐이라서,
|
|
44
|
+
* `deel audit`·`deel pack`·`deel sbom` 은 **언제나 한국어**로 나왔다 —
|
|
45
|
+
* /lang en 으로 쓰던 사람이 심사에 낼 서류를 뽑으면 한글 문서가 나왔다는 뜻이다.
|
|
46
|
+
*
|
|
47
|
+
* 설정을 못 읽어도 죽지 않는다. 말 하나 때문에 `deel --version` 이 안 되면 안 된다.
|
|
48
|
+
*/
|
|
49
|
+
function 말정하기() {
|
|
50
|
+
let cfg = null;
|
|
51
|
+
try { cfg = 설정읽기(); } catch { /* 설정이 없어도 기본 말로 돈다 */ }
|
|
52
|
+
return 언어잡기({ cfg });
|
|
53
|
+
}
|
|
54
|
+
|
|
38
55
|
// 사내 반입용 묶음 만들기.
|
|
39
56
|
function runPack(flags) {
|
|
40
|
-
const
|
|
57
|
+
const 한국어 = 언어() === 'ko';
|
|
58
|
+
const out = flags.out ? String(flags.out) : join(process.cwd(), 한국어 ? 'deel-반입.zip' : 'deel-import.zip');
|
|
41
59
|
const r = packSelf(out);
|
|
42
60
|
const a = r.audit;
|
|
43
61
|
say('');
|
|
44
|
-
rule('반입 묶음', 70);
|
|
62
|
+
rule(한국어 ? '반입 묶음' : 'Review package', 70);
|
|
45
63
|
say(` ${mark.ok} ${c.bold(r.out)}`);
|
|
46
|
-
say(` ${c.gray(`${r.files}개 파일 · ${(r.bytes / 1024).toFixed(1)}KB`)}`);
|
|
64
|
+
say(` ${c.gray(한국어 ? `${r.files}개 파일 · ${(r.bytes / 1024).toFixed(1)}KB` : `${r.files} files · ${(r.bytes / 1024).toFixed(1)}KB`)}`);
|
|
47
65
|
say('');
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
66
|
+
const 없음 = 한국어 ? '없음' : 'none';
|
|
67
|
+
const 개 = (n, 단위) => (한국어 ? `${n}${단위}` : String(n));
|
|
68
|
+
/*
|
|
69
|
+
* 이름 칸을 손으로 띄우지 않는다.
|
|
70
|
+
*
|
|
71
|
+
* 한글은 한 글자가 두 칸이라 「의존성」 과 「Dependencies」 를 같은 수의
|
|
72
|
+
* 빈칸으로 맞출 수 없다. 손으로 맞춰 두면 말을 바꾸는 순간 줄이 어긋난다 —
|
|
73
|
+
* 실제로 영어판이 처음에 그렇게 어긋났다.
|
|
74
|
+
*/
|
|
75
|
+
const 칸 = (ko, en) => (한국어 ? ko : en.padEnd(18));
|
|
76
|
+
say(` ${c.gray(칸('의존성 ', 'Dependencies'))}${a.deps.length === 0 ? c.green(개(0, '개')) : c.red(개(a.deps.length, '개'))}`);
|
|
77
|
+
say(` ${c.gray(칸('설치 스크립트 ', 'Install scripts'))}${a.lifecycle.length === 0 ? c.green(없음) : c.red(a.lifecycle.join(', '))}`);
|
|
78
|
+
say(` ${c.gray(칸('외부 import ', 'External imports'))}${a.외부모듈.length === 0 ? c.green(개(0, '건')) : c.red(개(a.외부모듈.length, '건'))}`);
|
|
79
|
+
say(` ${c.gray(칸('네트워크 호출 ', 'Network calls'))}${개(a.calls.net.length, '곳')} ${c.gray(한국어 ? '(설정한 주소로만)' : '(only to the configured address)')}`);
|
|
80
|
+
say(` ${c.gray(칸('포트 열기 ', 'Listening ports'))}${a.calls.listen.length === 0 ? c.green(없음) : c.red(개(a.calls.listen.length, '곳'))}`);
|
|
53
81
|
say('');
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
82
|
+
/*
|
|
83
|
+
* 여기 적는 이름은 zip 안에 진짜로 든 이름이어야 한다.
|
|
84
|
+
*
|
|
85
|
+
* 안내 글과 실제 파일 이름이 어긋나면, 받은 사람은 없는 파일을 찾다가
|
|
86
|
+
* 묶음이 잘못 만들어진 줄 안다 — 서류를 못 믿게 되는 자리다.
|
|
87
|
+
*/
|
|
88
|
+
if (한국어) {
|
|
89
|
+
say(` ${c.gray('안에 반입심사서.txt · sbom.cdx.json · 심사명세.json 이 같이 들어 있습니다.')}`);
|
|
90
|
+
say(` ${c.gray('사람이 읽을 것 한 장, 스캐너에 넣을 것 두 장입니다 — 그대로 제출하시면 됩니다.')}`);
|
|
91
|
+
say(` ${c.gray('내용만 먼저 보시려면')} ${c.cyan('deel audit')}`);
|
|
92
|
+
} else {
|
|
93
|
+
say(` ${c.gray('It contains import-review.txt · sbom.cdx.json · audit-spec.json.')}`);
|
|
94
|
+
say(` ${c.gray('One document to read, two to feed a scanner — submit them as they are.')}`);
|
|
95
|
+
say(` ${c.gray('To see the contents first:')} ${c.cyan('deel audit')}`);
|
|
96
|
+
}
|
|
57
97
|
say('');
|
|
58
98
|
return 0;
|
|
59
99
|
}
|
|
@@ -187,7 +227,7 @@ function help() {
|
|
|
187
227
|
say(` ${c.gray('--level <수준>')} 쉬움(기본) / 개발자`);
|
|
188
228
|
say(` ${c.gray('--ctx <길이>')} 컨텍스트 길이 직접 지정 (655360 · 640k · 128k). 없으면 서버에 맞춤`);
|
|
189
229
|
say(` ${c.gray('--max-tokens <길이>')} 한 번에 받을 답 길이 상한 (32k). 큰 파일이 잘리면 올린다 — /out 과 같은 값`);
|
|
190
|
-
say(` ${c.gray('--think <수준>')} off / low / medium(기본) / high / max`);
|
|
230
|
+
say(` ${c.gray('--think <수준>')} off / low / medium(기본) / high / xhigh / max`);
|
|
191
231
|
say(` ${c.gray('--effort <배분>')} even(균일) / save(절약, 기본) / deep(깊게)`);
|
|
192
232
|
say(` ${c.gray('--no-tui')} 입력 상자 없이 줄 화면으로 (파이프·기록·좁은 터미널)`);
|
|
193
233
|
// 실행 모드 셋. 기본이 잠겨 있다는 것을 여기서 분명히 말한다 —
|
|
@@ -208,7 +248,7 @@ function help() {
|
|
|
208
248
|
say(` ${c.gray('--quiet')} 도구가 무엇을 했는지 안 적음 (오류는 그래도 적음)`);
|
|
209
249
|
say(` ${c.gray('--yes')} 승인이 필요한 것도 그냥 실행. ${c.yellow('기본은 거부입니다')}`);
|
|
210
250
|
say(` ${c.gray('답은 표준출력, 도구 기록은 표준오류로 나갑니다 — 파이프로 넘겨도 답만 넘어갑니다.')}`);
|
|
211
|
-
say(` ${c.gray('끝난 까닭이 종료코드에 담깁니다:')} ${c.gray('0 끝냄 · 1 오류 · 2 걸음수상한 · 3 헛돎 · 4 중단')}`);
|
|
251
|
+
say(` ${c.gray('끝난 까닭이 종료코드에 담깁니다:')} ${c.gray('0 끝냄 · 1 오류 · 2 걸음수상한 · 3 헛돎 · 4 중단 · 5 말없이끊김')}`);
|
|
212
252
|
say('');
|
|
213
253
|
say(` ${c.bold('진단 직접 지정')} ${c.gray('— 설정을 남기지 않고 확인만 할 때')}`);
|
|
214
254
|
say('');
|
|
@@ -231,6 +271,9 @@ async function main() {
|
|
|
231
271
|
|
|
232
272
|
const { cmd: 친명령, args, flags } = parse(process.argv.slice(2));
|
|
233
273
|
|
|
274
|
+
// 서류를 뽑는 명령(audit·sbom·pack)이 어느 말로 나갈지를 여기서 정한다.
|
|
275
|
+
말정하기();
|
|
276
|
+
|
|
234
277
|
/*
|
|
235
278
|
* `deel online` · `deel offline` 은 깃발의 별칭이다.
|
|
236
279
|
*
|
package/package.json
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "deel-local-cli",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
5
|
-
"type": "module",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"bin": {
|
|
8
|
-
"deel": "bin/deel.js"
|
|
9
|
-
},
|
|
10
|
-
"engines": {
|
|
11
|
-
"node": ">=20"
|
|
12
|
-
},
|
|
13
|
-
"files": [
|
|
14
|
-
"bin",
|
|
15
|
-
"src",
|
|
16
|
-
"README.md",
|
|
17
|
-
"README.ko.md",
|
|
18
|
-
"LICENSE"
|
|
19
|
-
],
|
|
20
|
-
"keywords": [
|
|
21
|
-
"cli",
|
|
22
|
-
"coding-agent",
|
|
23
|
-
"local-llm",
|
|
24
|
-
"ollama",
|
|
25
|
-
"lm-studio",
|
|
26
|
-
"openai-compatible",
|
|
27
|
-
"offline",
|
|
28
|
-
"air-gapped",
|
|
29
|
-
"zero-dependency",
|
|
30
|
-
"agent",
|
|
31
|
-
"acp",
|
|
32
|
-
"agent-client-protocol",
|
|
33
|
-
"zed",
|
|
34
|
-
"korean"
|
|
35
|
-
],
|
|
36
|
-
"repository": {
|
|
37
|
-
"type": "git",
|
|
38
|
-
"url": "git+https://github.com/jysvai/deel-local-cli.git"
|
|
39
|
-
},
|
|
40
|
-
"bugs": {
|
|
41
|
-
"url": "https://github.com/jysvai/deel-local-cli/issues"
|
|
42
|
-
},
|
|
43
|
-
"homepage": "https://github.com/jysvai/deel-local-cli#readme",
|
|
44
|
-
"scripts": {
|
|
45
|
-
"start": "node bin/deel.js",
|
|
46
|
-
"setup": "node bin/deel.js setup",
|
|
47
|
-
"diagnose": "node bin/deel.js diagnose",
|
|
48
|
-
"chat": "node bin/deel.js",
|
|
49
|
-
"test": "node test/run.mjs",
|
|
50
|
-
"docs": "node tools/check-docs.mjs",
|
|
51
|
-
"verify": "node test/no-bundle.test.js && node test/network.test.js && node test/web.test.js",
|
|
52
|
-
"bench": "node test/edit-bench.js",
|
|
53
|
-
"demo": "node test/demo.js",
|
|
54
|
-
"check": "node --check bin/deel.js && node --check src/repl.js && node --check src/oneshot.js && node --check src/commands.js && node --check src/agent/loop.js && node --check src/agent/session.js && node --check src/agent/effort.js && node --check src/agent/modes.js && node --check src/agent/route.js && node --check src/agent/askcheck.js && node --check src/agent/asks.js && node --check src/agent/models.js && node --check src/agent/grade.js && node --check src/agent/mention.js && node --check src/agent/project.js && node --check src/tools/encoding.js && node --check src/tools/excel-com.js && node --check src/tools/excel.js && node --check src/tools/xlsx.js && node --check src/tools/docs.js && node --check src/tools/convert.js && node --check src/tools/pdf.js && node --check src/tools/clipboard.js && node --check src/agent/compact.js && node --check src/agent/store.js && node --check src/agent/sessionui.js && node --check src/backend/adapter.js && node --check src/backend/ctxsize.js && node --check src/backend/probe.js && node --check src/backend/detect.js && node --check src/backend/http.js && node --check src/backend/retry.js && node --check src/backend/proxy.js && node --check src/backend/azure.js && node --check src/backend/vision.js && node --check src/backend/quota.js && node --check src/backend/price.js && node --check src/backend/scan.js && node --check src/backend/scanui.js && node --check src/tools/index.js && node --check src/tools/desc.en.js && node --check src/tools/lsp.js && node --check src/lsp/rpc.js && node --check src/lsp/servers.js && node --check src/lsp/client.js && node --check src/lsp/diag.js && node --check src/tools/fsutil.js && node --check src/tools/ignore.js && node --check src/tools/spawn.js && node --check src/tools/fastgrep.js && node --check src/tools/edit-match.js && node --check src/tools/webfetch.js && node --check src/tools/todo.js && node --check src/tools/jobs.js && node --check src/tools/shell.js && node --check src/skills/discover.js && node --check src/plugins/manage.js && node --check src/pack/zip.js && node --check src/pack/tar.js && node --check src/pack/selfpack.js && node --check src/safety/guard.js && node --check src/safety/undo.js && node --check src/safety/audit.js && node --check src/safety/keystore.js && node --check src/safety/authcmd.js && node --check src/safety/policy.js && node --check src/safety/network.js && node --check src/safety/runmode.js && node --check src/providers/index.js && node --check src/providers/openai.js && node --check src/providers/anthropic.js && node --check src/providers/gemini.js && node --check src/providers/bedrock.js && node --check src/providers/custom.js && node --check src/setup.js && node --check src/report.js && node --check src/config.js && node --check src/completion.js && node --check src/ui/diff.js && node --check src/ui/ansi.js && node --check src/ui/status.js && node --check src/ui/level.js && node --check src/ui/prompt.js && node --check src/ui/spinner.js && node --check src/ui/motion.js && node --check src/ui/office.js && node --check src/ui/notify.js && node --check src/ui/intro.js && node --check src/ui/banner.js && node --check src/ui/export.js && node --check src/i18n/index.js && node --check src/i18n/ko.js && node --check src/i18n/en.js && node --check src/i18n/ja.js && node --check src/i18n/zh.js && node --check src/preview/serve.js && node --check src/ui/working.js && node --check src/ui/inputbox.js && node --check src/ui/wrap.js && node --check src/ui/pastechip.js && node --check src/ui/histline.js && node --check src/ui/md.js && node --check src/agent/threads.js && node --check src/agent/evolve.js && node --check src/agent/pins.js && node --check src/agent/card.js && node --check src/agent/preset.js && node --check src/agent/evidence.js && node --check src/agent/commit.js && node --check src/agent/review.js && node --check src/acp/jsonrpc.js && node --check src/acp/map.js && node --check src/acp/serve.js && node --check src/pack/sbom.js && node --check src/safety/secrets.js && node --check src/version.js && node --check src/agent/budget.js && node --check src/agent/memory.js && node --check src/agent/recall.js && node --check src/agent/salvage.js && node --check src/backend/learn.js && node --check src/backend/mcp.js && node --check src/tools/task.js && node --check src/tools/outline.js && node --check src/tools/verify.js && node --check src/ui/approve.js && node --check src/ui/complete.js && node --check src/ui/screen.js && node --check src/reset.js && echo OK",
|
|
55
|
-
"coverage": "node test/coverage.mjs",
|
|
56
|
-
"prepublishOnly": "npm run check && npm test"
|
|
57
|
-
},
|
|
58
|
-
"dependencies": {},
|
|
59
|
-
"devDependencies": {}
|
|
60
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "deel-local-cli",
|
|
3
|
+
"version": "1.12.0",
|
|
4
|
+
"description": "A coding-agent CLI that runs on local models and private gateways. Zero dependencies, Node 20+.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"deel": "bin/deel.js"
|
|
9
|
+
},
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=20"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"bin",
|
|
15
|
+
"src",
|
|
16
|
+
"README.md",
|
|
17
|
+
"README.ko.md",
|
|
18
|
+
"LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"cli",
|
|
22
|
+
"coding-agent",
|
|
23
|
+
"local-llm",
|
|
24
|
+
"ollama",
|
|
25
|
+
"lm-studio",
|
|
26
|
+
"openai-compatible",
|
|
27
|
+
"offline",
|
|
28
|
+
"air-gapped",
|
|
29
|
+
"zero-dependency",
|
|
30
|
+
"agent",
|
|
31
|
+
"acp",
|
|
32
|
+
"agent-client-protocol",
|
|
33
|
+
"zed",
|
|
34
|
+
"korean"
|
|
35
|
+
],
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/jysvai/deel-local-cli.git"
|
|
39
|
+
},
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/jysvai/deel-local-cli/issues"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/jysvai/deel-local-cli#readme",
|
|
44
|
+
"scripts": {
|
|
45
|
+
"start": "node bin/deel.js",
|
|
46
|
+
"setup": "node bin/deel.js setup",
|
|
47
|
+
"diagnose": "node bin/deel.js diagnose",
|
|
48
|
+
"chat": "node bin/deel.js",
|
|
49
|
+
"test": "node test/run.mjs",
|
|
50
|
+
"docs": "node tools/check-docs.mjs",
|
|
51
|
+
"verify": "node test/no-bundle.test.js && node test/network.test.js && node test/web.test.js",
|
|
52
|
+
"bench": "node test/edit-bench.js",
|
|
53
|
+
"demo": "node test/demo.js",
|
|
54
|
+
"check": "node --check bin/deel.js && node --check src/repl.js && node --check src/oneshot.js && node --check src/commands.js && node --check src/agent/loop.js && node --check src/agent/session.js && node --check src/agent/effort.js && node --check src/agent/modes.js && node --check src/agent/route.js && node --check src/agent/askcheck.js && node --check src/agent/asks.js && node --check src/agent/models.js && node --check src/agent/grade.js && node --check src/agent/mention.js && node --check src/agent/project.js && node --check src/tools/encoding.js && node --check src/tools/excel-com.js && node --check src/tools/excel.js && node --check src/tools/xlsx.js && node --check src/tools/docs.js && node --check src/tools/convert.js && node --check src/tools/pdf.js && node --check src/tools/clipboard.js && node --check src/agent/compact.js && node --check src/agent/store.js && node --check src/agent/sessionui.js && node --check src/backend/adapter.js && node --check src/backend/toolfit.js && node --check src/backend/ctxsize.js && node --check src/backend/probe.js && node --check src/backend/detect.js && node --check src/backend/http.js && node --check src/backend/retry.js && node --check src/backend/proxy.js && node --check src/backend/azure.js && node --check src/backend/vision.js && node --check src/backend/quota.js && node --check src/backend/wire.js && node --check src/backend/tokens.js && node --check src/backend/cachemark.js && node --check src/backend/price.js && node --check src/backend/scan.js && node --check src/backend/scanui.js && node --check src/tools/index.js && node --check src/tools/desc.en.js && node --check src/tools/lsp.js && node --check src/lsp/rpc.js && node --check src/lsp/servers.js && node --check src/lsp/client.js && node --check src/lsp/diag.js && node --check src/tools/fsutil.js && node --check src/tools/ignore.js && node --check src/tools/spawn.js && node --check src/tools/fastgrep.js && node --check src/tools/edit-match.js && node --check src/tools/webfetch.js && node --check src/tools/todo.js && node --check src/tools/jobs.js && node --check src/tools/shell.js && node --check src/skills/discover.js && node --check src/plugins/manage.js && node --check src/pack/zip.js && node --check src/pack/tar.js && node --check src/pack/selfpack.js && node --check src/safety/guard.js && node --check src/safety/undo.js && node --check src/safety/audit.js && node --check src/safety/keystore.js && node --check src/safety/authcmd.js && node --check src/safety/policy.js && node --check src/safety/network.js && node --check src/safety/runmode.js && node --check src/providers/index.js && node --check src/providers/openai.js && node --check src/providers/anthropic.js && node --check src/providers/gemini.js && node --check src/providers/bedrock.js && node --check src/providers/custom.js && node --check src/setup.js && node --check src/report.js && node --check src/config.js && node --check src/completion.js && node --check src/ui/diff.js && node --check src/ui/ansi.js && node --check src/ui/status.js && node --check src/ui/level.js && node --check src/ui/prompt.js && node --check src/ui/spinner.js && node --check src/ui/motion.js && node --check src/ui/office.js && node --check src/ui/notify.js && node --check src/ui/intro.js && node --check src/ui/banner.js && node --check src/ui/export.js && node --check src/i18n/index.js && node --check src/i18n/ko.js && node --check src/i18n/en.js && node --check src/i18n/ja.js && node --check src/i18n/zh.js && node --check src/preview/serve.js && node --check src/ui/working.js && node --check src/ui/inputbox.js && node --check src/ui/wrap.js && node --check src/ui/pastechip.js && node --check src/ui/pick.js && node --check src/ui/histline.js && node --check src/ui/md.js && node --check src/agent/threads.js && node --check src/agent/evolve.js && node --check src/agent/pins.js && node --check src/agent/card.js && node --check src/agent/preset.js && node --check src/agent/evidence.js && node --check src/agent/commit.js && node --check src/agent/review.js && node --check src/acp/jsonrpc.js && node --check src/acp/map.js && node --check src/acp/serve.js && node --check src/pack/sbom.js && node --check src/pack/sheet.en.js && node --check src/safety/secrets.js && node --check src/version.js && node --check src/agent/budget.js && node --check src/agent/filemem.js && node --check src/agent/memory.js && node --check src/agent/recall.js && node --check src/agent/salvage.js && node --check src/backend/learn.js && node --check src/backend/mcp.js && node --check src/tools/task.js && node --check src/tools/outline.js && node --check src/tools/verify.js && node --check src/ui/approve.js && node --check src/ui/complete.js && node --check src/ui/screen.js && node --check src/reset.js && echo OK",
|
|
55
|
+
"coverage": "node test/coverage.mjs",
|
|
56
|
+
"prepublishOnly": "npm run check && npm test"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {},
|
|
59
|
+
"devDependencies": {}
|
|
60
|
+
}
|