deel-local-cli 1.20.13 → 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.
- package/README.ko.md +96 -78
- package/README.md +119 -81
- package/bin/deel.js +398 -32
- package/package.json +2 -1
- package/src/acp/jsonrpc.js +87 -7
- package/src/acp/map.js +23 -3
- package/src/acp/serve.js +333 -25
- package/src/agent/agents.js +110 -12
- package/src/agent/askcheck.js +50 -6
- package/src/agent/asks.js +59 -5
- package/src/agent/budget.js +9 -2
- package/src/agent/card.js +8 -2
- package/src/agent/commit.js +168 -16
- package/src/agent/compact.js +93 -21
- package/src/agent/{/354/213/240/353/242/260/353/217/204.js → confidence.js} +1 -1
- package/src/agent/effort.js +85 -15
- package/src/agent/evidence.js +63 -7
- package/src/agent/evolve.js +132 -24
- package/src/agent/grade.js +12 -3
- package/src/agent/loop.js +408 -81
- package/src/agent/memory.js +176 -29
- package/src/agent/mention.js +22 -5
- package/src/agent/models.js +31 -7
- package/src/agent/modes.js +25 -10
- package/src/agent/outschema.js +381 -56
- package/src/agent/pins.js +33 -2
- package/src/agent/project.js +73 -8
- package/src/agent/recall.js +40 -9
- package/src/agent/{/354/204/261/355/225/234/352/270/260/353/241/235.js → recordshape.js} +19 -8
- package/src/agent/review.js +143 -13
- package/src/agent/route.js +253 -26
- package/src/agent/salvage.js +2 -1
- package/src/agent/session.js +457 -31
- package/src/agent/store.js +232 -22
- package/src/agent/threads.js +52 -3
- package/src/backend/adapter.js +508 -85
- package/src/backend/azure.js +12 -1
- package/src/backend/cachemark.js +31 -5
- package/src/backend/clientcert.js +23 -1
- package/src/backend/ctxsize.js +56 -9
- package/src/backend/detect.js +252 -19
- package/src/backend/http.js +383 -42
- package/src/backend/learn.js +101 -11
- package/src/backend/mcp.js +333 -24
- package/src/backend/price.js +61 -13
- package/src/backend/probe.js +188 -36
- package/src/backend/proxy.js +108 -14
- package/src/backend/quota.js +226 -30
- package/src/backend/retry.js +46 -3
- package/src/backend/scan.js +47 -10
- package/src/backend/scanui.js +57 -7
- package/src/backend/toolfit.js +204 -22
- package/src/backend/vision.js +14 -1
- package/src/backend/wire.js +58 -10
- package/src/cmdnames.js +16 -0
- package/src/commands/common.js +70 -0
- package/src/commands/extend.js +300 -0
- package/src/commands/model.js +852 -0
- package/src/commands/view.js +328 -0
- package/src/commands/work.js +823 -0
- package/src/commands.js +193 -2082
- package/src/completion.js +45 -3
- package/src/config.js +452 -39
- package/src/configexplain.js +125 -14
- package/src/doctor.js +164 -26
- package/src/i18n/en.js +22 -0
- package/src/i18n/index.js +31 -1
- package/src/i18n/ja.js +25 -1
- package/src/i18n/ko.js +25 -2
- package/src/i18n/zh.js +25 -1
- package/src/lsp/client.js +111 -9
- package/src/lsp/servers.js +86 -22
- package/src/oneshot.js +325 -65
- package/src/pack/sbom.js +28 -5
- package/src/pack/selfpack.js +54 -5
- package/src/pack/sheet.en.js +24 -3
- package/src/pack/tar.js +45 -8
- package/src/pack/zip.js +103 -8
- package/src/plugins/manage.js +165 -14
- package/src/preview/serve.js +239 -23
- package/src/providers/bedrock.js +30 -5
- package/src/providers/gemini.js +8 -0
- package/src/providers/index.js +17 -1
- package/src/repl.js +254 -61
- package/src/report.js +7 -2
- package/src/reset.js +151 -25
- package/src/safety/audit.js +108 -8
- package/src/safety/authcmd.js +75 -5
- package/src/safety/guard.js +507 -15
- package/src/safety/hooks.js +172 -20
- package/src/safety/keystore.js +178 -18
- package/src/safety/network.js +209 -6
- package/src/safety/policy.js +377 -36
- package/src/safety/runmode.js +9 -2
- package/src/safety/secrets.js +243 -17
- package/src/safety/shellenv.js +64 -3
- package/src/safety/trust.js +298 -32
- package/src/safety/undo.js +409 -17
- package/src/setup.js +175 -17
- package/src/skills/discover.js +122 -19
- package/src/stats.js +57 -16
- package/src/tools/{/355/231/225/354/235/270/353/262/225.js → checkmethods.js} +26 -1
- package/src/tools/clipboard.js +53 -20
- package/src/tools/convert.js +118 -37
- package/src/tools/desc.en.js +48 -5
- package/src/tools/doc2md.js +11 -1
- package/src/tools/docs.js +94 -18
- package/src/tools/edit-match.js +212 -13
- package/src/tools/encoding.js +525 -28
- package/src/tools/excel-com.js +63 -15
- package/src/tools/excel.js +12 -7
- package/src/tools/fastgrep.js +444 -36
- package/src/tools/fig.js +21 -4
- package/src/tools/fsutil.js +235 -21
- package/src/tools/hwpxwrite.js +80 -19
- package/src/tools/ignore.js +55 -7
- package/src/tools/index.js +1029 -145
- package/src/tools/jobs.js +325 -50
- package/src/tools/kiwi.js +50 -5
- package/src/tools/lsp.js +164 -32
- package/src/tools/outline.js +52 -12
- package/src/tools/pdf.js +366 -56
- package/src/tools/shell.js +12 -4
- package/src/tools/spawn.js +203 -18
- package/src/tools/todo.js +73 -4
- package/src/tools/verify.js +312 -43
- package/src/tools/webfetch.js +184 -25
- package/src/tools/xlsx.js +232 -31
- package/src/ui/ansi.js +209 -15
- package/src/ui/banner.js +2 -1
- package/src/ui/complete.js +46 -4
- package/src/ui/diff.js +4 -2
- package/src/ui/export.js +91 -17
- package/src/ui/inputbox.js +58 -18
- package/src/ui/intro.js +9 -2
- package/src/ui/level.js +32 -7
- package/src/ui/md.js +101 -15
- package/src/ui/motion.js +5 -2
- package/src/ui/notify.js +7 -1
- package/src/ui/office.js +37 -5
- package/src/ui/pastechip.js +3 -2
- package/src/ui/pick.js +85 -12
- package/src/ui/prompt.js +176 -13
- package/src/ui/screen.js +2 -1
- package/src/ui/spinner.js +6 -1
- package/src/ui/status.js +80 -12
- package/src/ui/wrap.js +23 -37
- /package/src/agent/{/353/213/250/352/263/204.js" → phase.js} +0 -0
- /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
- /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
- /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
- /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
- /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
- /package/src/skills/builtin/{/354/260/224/353/237/254/353/263/264/352/270/260/SKILL.md" → spike/SKILL.md} +0 -0
- /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/src/lsp/servers.js
CHANGED
|
@@ -76,7 +76,13 @@ export function 갈래(경로) {
|
|
|
76
76
|
return 확장자갈래[extname(경로).toLowerCase()] ?? null;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
/*
|
|
80
|
+
* LSP 가 쓰는 languageId.
|
|
81
|
+
*
|
|
82
|
+
* 「열쇠와 다른 것만 적어 둔다」 고 적혀 있었는데 표에는 같은 것(go·java·cpp·php·lua)도
|
|
83
|
+
* 다 들어 있다. 그리고 **들어 있어야 한다** — 아래 언어아이디() 가 `아이디[갈래] ?? 'plaintext'`
|
|
84
|
+
* 라서, 빠진 열쇠는 서버에게 plaintext 로 소개된다. 갈래 전부를 적어 두는 표다.
|
|
85
|
+
*/
|
|
80
86
|
const 아이디 = { ts: 'typescript', py: 'python', go: 'go', rs: 'rust', java: 'java', cs: 'csharp', cpp: 'cpp', rb: 'ruby', php: 'php', lua: 'lua' };
|
|
81
87
|
|
|
82
88
|
/**
|
|
@@ -91,6 +97,16 @@ export function 언어아이디(경로) {
|
|
|
91
97
|
if (e === '.jsx') return 'javascriptreact';
|
|
92
98
|
if (e === '.tsx') return 'typescriptreact';
|
|
93
99
|
if (e === '.pyi') return 'python';
|
|
100
|
+
/*
|
|
101
|
+
* C 는 C++ 가 아니다. 서버는 clangd 하나라 갈래는 같지만(`확장자갈래` 의 cpp),
|
|
102
|
+
* **소개하는 이름**까지 cpp 로 주면 clangd 가 그 파일에 C++ 규칙을 건다 —
|
|
103
|
+
* `class` 가 이름으로 쓰인 옛 C 코드, 암시적 형변환, 지정 초기화가 전부 오류로
|
|
104
|
+
* 뜬다. 바로 위에 `.js` 를 typescript 라고 소개하면 안 되는 까닭으로 적어 둔 그것이다.
|
|
105
|
+
*
|
|
106
|
+
* `.h` 는 그대로 cpp 다. C 헤더인지 C++ 헤더인지는 확장자로 못 가른다 —
|
|
107
|
+
* 편집기들도 여기서는 cpp 쪽으로 둔다.
|
|
108
|
+
*/
|
|
109
|
+
if (e === '.c') return 'c';
|
|
94
110
|
return 아이디[갈래(경로)] ?? 'plaintext';
|
|
95
111
|
}
|
|
96
112
|
|
|
@@ -119,16 +135,49 @@ export function 어디있나(이름, env = process.env) {
|
|
|
119
135
|
* 서고, 부르면 6ms 만에 "서버가 없습니다" 가 돌아온다 — 있다고 해 놓고
|
|
120
136
|
* 안 되는, 제일 알아채기 어려운 꼴이다.
|
|
121
137
|
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
138
|
+
/*
|
|
139
|
+
* 그리고 **모든 폴더에서** 확장자 붙은 것을 먼저 본다 (2.0.0 6회차 Gemini 서버6bo LSV1·LSV2).
|
|
140
|
+
*
|
|
141
|
+
* 한 폴더 안에서만 먼저 봤더니 앞 폴더의 sh 스크립트가 뒤 폴더의 .cmd 를 이겼고, sh 만
|
|
142
|
+
* 있으면 그걸 돌려줬다 — 바로 위에서 막으려던 그 꼴이다. 윈도우에서 이름 그대로(`''`)를
|
|
143
|
+
* 보는 것은 이름에 이미 PATHEXT 확장자가 붙어 있을 때(`tls.cmd`)뿐이다. 확장자 없는
|
|
144
|
+
* 파일은 윈도우가 못 돌린다. 두 번 도는 사이에도 PATH 차례는 그대로 지킨다.
|
|
145
|
+
*/
|
|
146
|
+
const 윈도우 = process.platform === 'win32';
|
|
147
|
+
/*
|
|
148
|
+
* 빈 PATHEXT 는 **안 적은 것과 같이** 본다 (사냥6 막판-뒷단).
|
|
149
|
+
*
|
|
150
|
+
* `??` 는 빈 글을 안 막는다. `PATHEXT=` 로 비워 둔 판(또는 `;;` 만 든 판)에서는 이
|
|
151
|
+
* 목록이 통째로 비고, 그러면 아래 가장 안쪽 되풀이가 **한 번도 안 돌아** 무엇을 물어도
|
|
152
|
+
* null 이었다 — 옛 코드는 목록 끝에 `''` 가 늘 있어서 적어도 이름 그대로는 찾았다.
|
|
153
|
+
* `이미붙음` 도 빈 목록에서는 거짓이라, 윈도우가 그대로 돌릴 수 있는 완전한 이름
|
|
154
|
+
* (`tls.cmd`)조차 못 찾는다. 화면에는 언어 서버가 통째로 안 깔린 것으로 보인다.
|
|
155
|
+
*/
|
|
156
|
+
const 기본확장 = '.COM;.EXE;.BAT;.CMD';
|
|
157
|
+
const 적힌것 = 윈도우 ? String(env.PATHEXT ?? 기본확장).split(';').filter(Boolean) : [''];
|
|
158
|
+
const 붙일것 = 적힌것.length ? 적힌것 : 기본확장.split(';');
|
|
159
|
+
/*
|
|
160
|
+
* 이름에 **이미 PATHEXT 확장자가 붙어 있으면 그 이름 그대로가 먼저**다 (8회차 · 바깥).
|
|
161
|
+
*
|
|
162
|
+
* 윈도우도 그렇게 한다 — 확장자가 붙은 이름은 PATHEXT 를 더 붙이지 않고 PATH 를
|
|
163
|
+
* 그 이름으로 훑는다. 붙여 보는 쪽을 먼저 돌던 때는 **뒤 폴더의 엉뚱한 파일이
|
|
164
|
+
* 앞 폴더의 진짜 파일을 이겼다** — PATH 를 `A;B` 로 두고 `A\tls.cmd` 와
|
|
165
|
+
* `B\tls.cmd.EXE` 를 놔두면 `어디있나('tls.cmd')` 가 B 쪽을 줬다. PATH 차례는
|
|
166
|
+
* 「앞 폴더가 이긴다」 가 전부인 규칙이라, 그게 깨지면 어느 것이 뜰지 알 수 없다.
|
|
167
|
+
*
|
|
168
|
+
* 확장자가 없는 이름(`tls`)은 여태처럼 붙여 찾는다 — 확장자 없는 파일은 윈도우가 못 돌린다.
|
|
169
|
+
*/
|
|
170
|
+
const 이미붙음 = 윈도우 && 붙일것.some((e) => e.toLowerCase() === extname(이름).toLowerCase());
|
|
171
|
+
const 차례 = 이미붙음 ? [[''], 붙일것] : [붙일것];
|
|
172
|
+
for (const 확장 of 차례) {
|
|
173
|
+
for (const 길 of 길들) {
|
|
174
|
+
for (const e of 확장) {
|
|
175
|
+
const p = join(길, 이름 + e);
|
|
176
|
+
try {
|
|
177
|
+
// 폴더가 이름만 같은 경우가 있다. 파일인지까지 본다.
|
|
178
|
+
if (existsSync(p) && statSync(p).isFile()) return p;
|
|
179
|
+
} catch { /* 못 읽는 자리는 없는 것으로 친다 */ }
|
|
180
|
+
}
|
|
132
181
|
}
|
|
133
182
|
}
|
|
134
183
|
return null;
|
|
@@ -201,17 +250,32 @@ export async function 프로젝트갈래(뿌리, env = process.env) {
|
|
|
201
250
|
const 약속 = (async () => {
|
|
202
251
|
let 답 = null;
|
|
203
252
|
try {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
253
|
+
/*
|
|
254
|
+
* 훑기 한도는 **셀 것이 하나도 없는 파일**에도 똑같이 나간다 (8회차 · 바깥).
|
|
255
|
+
*
|
|
256
|
+
* 문서·자료가 앞에 잔뜩 있는 저장소가 흔하다. 재 봤다 — `.md` 4,200개 뒤에 `.ts`
|
|
257
|
+
* 20개를 둔 폴더에서 한도 4,000 이 md 로 다 나가고 프로젝트갈래 가 **null** 이었다.
|
|
258
|
+
* 그러면 Def·Refs 는 「이 폴더에서 쓸 수 있는 언어 서버가 없습니다」 라고 한다 —
|
|
259
|
+
* 타입스크립트가 가득한 폴더에서. 없는 것과 못 본 것은 다르다.
|
|
260
|
+
*
|
|
261
|
+
* 그래서 **잘렸는데 쓸 만한 갈래를 하나도 못 찾았을 때만** 한 번 더, 더 넓게 훑는다.
|
|
262
|
+
* 한 번에 넓게 훑지 않는 까닭은 값 때문이다 — 멀쩡한 저장소는 첫 판에서 끝난다.
|
|
263
|
+
*/
|
|
264
|
+
for (const 한도 of [4000, 60000]) {
|
|
265
|
+
const 훑은것 = await walk(뿌리, { limit: 한도 });
|
|
266
|
+
const 셈 = new Map();
|
|
267
|
+
const 첫파일 = new Map();
|
|
268
|
+
for (const f of 훑은것) {
|
|
269
|
+
const g = 갈래(f.path);
|
|
270
|
+
if (!g) continue;
|
|
271
|
+
셈.set(g, (셈.get(g) ?? 0) + 1);
|
|
272
|
+
if (!첫파일.has(g)) 첫파일.set(g, f.path);
|
|
273
|
+
}
|
|
274
|
+
const 차례 = [...셈.entries()].sort((a, b) => b[1] - a[1]);
|
|
275
|
+
for (const [g] of 차례) {
|
|
276
|
+
if (고르기(g, env)) { 답 = { 갈래: g, 대표파일: 첫파일.get(g), 개수: 셈.get(g) }; break; }
|
|
277
|
+
}
|
|
278
|
+
if (답 || !훑은것.잘림) break;
|
|
215
279
|
}
|
|
216
280
|
} catch { 답 = null; }
|
|
217
281
|
return 답;
|