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/src/config.js
CHANGED
|
@@ -164,6 +164,23 @@ export function save(cfg, { toProject = false } = {}) {
|
|
|
164
164
|
return p;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
/**
|
|
168
|
+
* 설정을 남긴다. 못 남겨도 던지지 않고, **왜 못 남겼는지를 돌려준다.**
|
|
169
|
+
*
|
|
170
|
+
* 부르는 자리가 아홉 군데인데 전부 `try { save(cfg) } catch {}` 였다. 「못
|
|
171
|
+
* 남겨도 이번 세션에는 먹는다」 는 맞는 말이지만, 그 뒤에 화면은 `✓` 를
|
|
172
|
+
* 찍는다 — 사람은 정해진 줄 알고 다음에 창을 열었다가 옛 값을 본다. 그리고
|
|
173
|
+
* 그때는 무엇 때문인지 알 길이 없다(홈이 읽기 전용인지, 디스크가 찼는지).
|
|
174
|
+
*
|
|
175
|
+
* 던지는 것은 안 바꾼다. 설정 하나 못 적었다고 대화가 끊기면 본말이 뒤집힌다.
|
|
176
|
+
*
|
|
177
|
+
* @returns {{ok: true, 자리: string} | {ok: false, 왜: string}}
|
|
178
|
+
*/
|
|
179
|
+
export function 저장시도(cfg, 옵션 = {}) {
|
|
180
|
+
try { return { ok: true, 자리: save(cfg, 옵션) }; }
|
|
181
|
+
catch (err) { return { ok: false, 왜: err?.message ?? String(err) }; }
|
|
182
|
+
}
|
|
183
|
+
|
|
167
184
|
export function activeProfile(cfg = load()) {
|
|
168
185
|
if (!cfg.profiles.length) return null;
|
|
169
186
|
return cfg.profiles.find((x) => x.id === cfg.active) ?? cfg.profiles[0];
|
|
@@ -172,6 +189,23 @@ export function activeProfile(cfg = load()) {
|
|
|
172
189
|
// 환경변수가 있으면 파일보다 우선한다 — 사내망에서 키를 파일에 안 남기고 싶을 때 쓴다.
|
|
173
190
|
const 푼것 = new Map(); // 잠긴 값 → 푼 글. 한 판에 한 번만 풀면 된다.
|
|
174
191
|
|
|
192
|
+
/**
|
|
193
|
+
* 잠근 열쇠를 못 푼 까닭. 화면이 한 번 읽어 가면 지워진다.
|
|
194
|
+
*
|
|
195
|
+
* ── 왜 있어야 하나 ──────────────────────────────────────────────────────
|
|
196
|
+
*
|
|
197
|
+
* keystore.js 의 풀기() 는 왜 못 풀었는지를 성실하게 만들어 돌려준다 —
|
|
198
|
+
* 「이 PC 의 이 계정에서 잠근 것만 풀립니다」 같은 말이다. 그 함수 머리말이
|
|
199
|
+
* 그렇게 하는 까닭까지 적어 뒀다: **빈 글자만 돌려주면 사람은 401 만 보고
|
|
200
|
+
* 게이트웨이를 의심한다.**
|
|
201
|
+
*
|
|
202
|
+
* 그런데 부르는 쪽이 그 말을 버리고 있었다. 빈 열쇠가 나가면 http.js 는
|
|
203
|
+
* Authorization 머리말을 아예 안 붙이고, 게이트웨이는 401 을 준다. 사람은
|
|
204
|
+
* 방화벽·주소·계정을 뒤진다. 진짜 까닭은 「설정 파일을 다른 PC 로 옮겼다」 인데.
|
|
205
|
+
*/
|
|
206
|
+
let 열쇠탈 = null;
|
|
207
|
+
export function 열쇠탈소식() { const s = 열쇠탈; 열쇠탈 = null; return s; }
|
|
208
|
+
|
|
175
209
|
export function resolveKey(profile) {
|
|
176
210
|
const byName = profile?.id ? process.env[`DEEL_KEY_${profile.id.toUpperCase()}`] : null;
|
|
177
211
|
const 값 = byName || process.env.DEEL_API_KEY || profile?.apiKey || '';
|
|
@@ -180,8 +214,19 @@ export function resolveKey(profile) {
|
|
|
180
214
|
// 기다리는 시간이라, 판에 한 번만 풀고 들고 있는다.
|
|
181
215
|
if (푼것.has(값)) return 푼것.get(값);
|
|
182
216
|
const r = 풀기(값);
|
|
183
|
-
|
|
184
|
-
|
|
217
|
+
if (!r.ok) {
|
|
218
|
+
/*
|
|
219
|
+
* **실패는 안 담아 둔다.**
|
|
220
|
+
*
|
|
221
|
+
* 담아 두면 그 판 내내 다시 시도조차 안 한다. 사람이 그 사이에
|
|
222
|
+
* `deel setup` 으로 열쇠를 다시 넣어도 이 판에서는 영영 안 풀린다.
|
|
223
|
+
* 푸는 값이 0.2초라, 안 되는 것을 아껴서 얻을 것이 없다.
|
|
224
|
+
*/
|
|
225
|
+
열쇠탈 = r.why || '잠근 열쇠를 못 풀었습니다';
|
|
226
|
+
return '';
|
|
227
|
+
}
|
|
228
|
+
푼것.set(값, r.text);
|
|
229
|
+
return r.text;
|
|
185
230
|
}
|
|
186
231
|
|
|
187
232
|
export function upsert(cfg, profile) {
|