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.
Files changed (61) hide show
  1. package/README.ko.md +10 -25
  2. package/README.md +43 -51
  3. package/bin/deel.js +56 -13
  4. package/package.json +60 -60
  5. package/src/acp/serve.js +810 -732
  6. package/src/agent/budget.js +156 -153
  7. package/src/agent/compact.js +420 -296
  8. package/src/agent/effort.js +308 -177
  9. package/src/agent/evidence.js +2 -0
  10. package/src/agent/evolve.js +263 -213
  11. package/src/agent/filemem.js +155 -0
  12. package/src/agent/grade.js +51 -1
  13. package/src/agent/loop.js +1707 -1349
  14. package/src/agent/memory.js +156 -152
  15. package/src/agent/mention.js +210 -210
  16. package/src/agent/session.js +1049 -832
  17. package/src/agent/store.js +186 -9
  18. package/src/agent/threads.js +26 -1
  19. package/src/backend/adapter.js +1159 -615
  20. package/src/backend/cachemark.js +150 -0
  21. package/src/backend/detect.js +327 -288
  22. package/src/backend/learn.js +24 -0
  23. package/src/backend/mcp.js +96 -5
  24. package/src/backend/probe.js +131 -61
  25. package/src/backend/quota.js +250 -133
  26. package/src/backend/retry.js +30 -6
  27. package/src/backend/tokens.js +37 -0
  28. package/src/backend/toolfit.js +352 -0
  29. package/src/backend/wire.js +600 -0
  30. package/src/commands.js +3135 -2918
  31. package/src/config.js +47 -2
  32. package/src/i18n/en.js +544 -466
  33. package/src/i18n/index.js +18 -0
  34. package/src/i18n/ja.js +497 -417
  35. package/src/i18n/ko.js +591 -466
  36. package/src/i18n/zh.js +497 -417
  37. package/src/lsp/client.js +49 -5
  38. package/src/oneshot.js +620 -471
  39. package/src/pack/sbom.js +30 -4
  40. package/src/pack/selfpack.js +25 -9
  41. package/src/pack/sheet.en.js +288 -0
  42. package/src/pack/tar.js +65 -2
  43. package/src/plugins/manage.js +46 -9
  44. package/src/providers/bedrock.js +17 -0
  45. package/src/repl.js +2602 -2286
  46. package/src/safety/audit.js +92 -8
  47. package/src/safety/authcmd.js +14 -3
  48. package/src/safety/guard.js +143 -0
  49. package/src/safety/keystore.js +62 -39
  50. package/src/safety/undo.js +24 -6
  51. package/src/tools/fsutil.js +265 -250
  52. package/src/tools/index.js +239 -34
  53. package/src/tools/jobs.js +158 -29
  54. package/src/tools/verify.js +358 -328
  55. package/src/tools/webfetch.js +92 -9
  56. package/src/ui/md.js +201 -5
  57. package/src/ui/motion.js +0 -1
  58. package/src/ui/pastechip.js +50 -3
  59. package/src/ui/pick.js +115 -0
  60. package/src/ui/screen.js +23 -3
  61. package/src/ui/status.js +613 -610
package/src/lsp/client.js CHANGED
@@ -438,11 +438,55 @@ export async function 모두끄기() {
438
438
  * 안 그러면 사용자 컴퓨터에 언어 서버가 하나씩 쌓인다. 이건 사용자가 나중에
439
439
  * 작업 관리자를 열기 전에는 모르는 종류의 탈이라, 반드시 여기서 막아야 한다.
440
440
  */
441
- for (const 신호 of ['exit', 'SIGINT', 'SIGTERM']) {
442
- process.on(신호, () => {
443
- for (const v of 풀.values()) { try { v.아이?.kill(); } catch { /* 이미 갔다 */ } }
444
- 풀.clear();
445
- });
441
+ export const 아이들데려가기 = () => {
442
+ for (const v of 풀.values()) { try { v.아이?.kill(); } catch { /* 이미 갔다 */ } }
443
+ 풀.clear();
444
+ };
445
+
446
+ process.on('exit', 아이들데려가기);
447
+
448
+ /*
449
+ * ── 치우고 나면 **원래대로 죽어야 한다** ────────────────────────────────
450
+ *
451
+ * 여기는 세 신호에 같은 손을 달아 두고 치우기만 했다. 그런데 Node 는
452
+ * SIGINT·SIGTERM 에 손이 하나라도 달려 있으면 **기본 동작(끝내기)을 안 한다.**
453
+ * 그래서 이 파일이 한 번이라도 불려 들어온 프로그램은 —
454
+ *
455
+ * kill <pid> → 언어 서버는 죽고, deel 은 그대로 산다
456
+ *
457
+ * 유닉스에서 SIGTERM 을 **삼키는** 프로그램이 되어 있었다. 잡 관리자·컨테이너
458
+ * 종료·systemd 가 전부 이 신호로 정리하는데, 그것들이 하나같이 시간을 다
459
+ * 기다린 뒤 SIGKILL 로 때려잡게 된다. 그러면 정작 아이 정리는 못 하고 죽는다.
460
+ *
461
+ * 그래서 치운 다음 우리 손을 떼고 같은 신호를 자신에게 다시 보낸다. 그러면
462
+ * 기본 동작이 돌아 128+n 로 끝난다 — 셸이 기대하는 그 값이다.
463
+ *
464
+ * 다만 **남이 그 신호를 맡고 있으면 안 건드린다.** 한 방 실행은 SIGINT 로
465
+ * 턴만 끊고 살아 있어야 하고(oneshot.js), 대화 화면의 Ctrl+C 는 readline 이
466
+ * 따로 받는다. 우리 것 말고 다른 손이 달려 있으면 그쪽 뜻이 먼저다.
467
+ */
468
+ /**
469
+ * 치운 다음 그 신호로 진짜 죽어야 하나.
470
+ *
471
+ * 갈림을 함수로 빼 둔 까닭: 윈도우에서는 이 길을 통째로 밟아 볼 수가 없다
472
+ * (SIGTERM 을 보내면 손이 돌기도 전에 Node 가 죽인다). 그런데 갈림 자체가
473
+ * 틀리면 유닉스에서 한 방 실행의 Ctrl+C 가 턴만 끊는 대신 프로그램을 죽인다 —
474
+ * 어느 판에서든 재어 볼 수 있어야 하는 자리다.
475
+ *
476
+ * @param 셈 이 신호에 달린 손의 수. 우리 것 하나만이면 우리가 마지막이다.
477
+ */
478
+ export function 다시보낼까(신호, 셈 = process.listenerCount(신호)) {
479
+ return Number(셈) <= 1;
480
+ }
481
+
482
+ for (const 신호 of ['SIGINT', 'SIGTERM']) {
483
+ const 손 = () => {
484
+ 아이들데려가기();
485
+ if (!다시보낼까(신호)) return; // 남이 맡고 있다 — 그쪽 뜻이 먼저다
486
+ process.removeListener(신호, 손);
487
+ try { process.kill(process.pid, 신호); } catch { process.exit(신호 === 'SIGINT' ? 130 : 143); }
488
+ };
489
+ process.on(신호, 손);
446
490
  }
447
491
 
448
492
  /**