@askexenow/exe-os 0.8.91 → 0.8.93

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 (44) hide show
  1. package/dist/bin/backfill-conversations.js +12 -3
  2. package/dist/bin/backfill-responses.js +12 -3
  3. package/dist/bin/backfill-vectors.js +12 -3
  4. package/dist/bin/cli.js +12 -3
  5. package/dist/bin/exe-assign.js +12 -3
  6. package/dist/bin/exe-boot.js +12 -3
  7. package/dist/bin/exe-gateway.js +12 -3
  8. package/dist/bin/exe-link.js +12 -3
  9. package/dist/bin/exe-rename.js +12 -3
  10. package/dist/bin/exe-search.js +12 -3
  11. package/dist/bin/exe-session-cleanup.js +12 -3
  12. package/dist/bin/git-sweep.js +12 -3
  13. package/dist/bin/scan-tasks.js +12 -3
  14. package/dist/bin/setup.js +12 -3
  15. package/dist/gateway/index.js +12 -3
  16. package/dist/hooks/commit-complete.js +12 -3
  17. package/dist/hooks/error-recall.js +12 -3
  18. package/dist/hooks/ingest-worker.js +12 -3
  19. package/dist/hooks/instructions-loaded.js +12 -3
  20. package/dist/hooks/notification.js +12 -3
  21. package/dist/hooks/post-compact.js +12 -3
  22. package/dist/hooks/pre-compact.js +12 -3
  23. package/dist/hooks/pre-tool-use.js +12 -3
  24. package/dist/hooks/prompt-ingest-worker.js +12 -3
  25. package/dist/hooks/prompt-submit.js +12 -3
  26. package/dist/hooks/response-ingest-worker.js +12 -3
  27. package/dist/hooks/session-end.js +12 -3
  28. package/dist/hooks/session-start.js +12 -3
  29. package/dist/hooks/stop.js +12 -3
  30. package/dist/hooks/subagent-stop.js +12 -3
  31. package/dist/hooks/summary-worker.js +12 -3
  32. package/dist/index.js +12 -3
  33. package/dist/lib/cloud-sync.js +12 -3
  34. package/dist/lib/database.js +12 -3
  35. package/dist/lib/db-daemon-client.js +12 -3
  36. package/dist/lib/device-registry.js +12 -3
  37. package/dist/lib/embedder.js +12 -3
  38. package/dist/lib/exe-daemon-client.js +12 -3
  39. package/dist/lib/exe-daemon.js +12 -3
  40. package/dist/lib/hybrid-search.js +12 -3
  41. package/dist/mcp/server.js +12 -3
  42. package/dist/runtime/index.js +12 -3
  43. package/dist/tui/App.js +12 -3
  44. package/package.json +1 -1
@@ -1755,9 +1755,16 @@ function findPackageRoot() {
1755
1755
  function spawnDaemon() {
1756
1756
  const freeGB = os4.freemem() / (1024 * 1024 * 1024);
1757
1757
  const totalGB = os4.totalmem() / (1024 * 1024 * 1024);
1758
- if (freeGB < 1.5 && totalGB <= 8) {
1758
+ if (totalGB <= 8) {
1759
1759
  process.stderr.write(
1760
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
1760
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
1761
+ `
1762
+ );
1763
+ return;
1764
+ }
1765
+ if (totalGB <= 16 && freeGB < 4) {
1766
+ process.stderr.write(
1767
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
1761
1768
  `
1762
1769
  );
1763
1770
  return;
@@ -1782,7 +1789,9 @@ function spawnDaemon() {
1782
1789
  stderrFd = openSync(logPath, "a");
1783
1790
  } catch {
1784
1791
  }
1785
- const child = spawn(process.execPath, [resolvedPath], {
1792
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
1793
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
1794
+ const child = spawn(process.execPath, nodeArgs, {
1786
1795
  detached: true,
1787
1796
  stdio: ["ignore", "ignore", stderrFd],
1788
1797
  env: {
@@ -1755,9 +1755,16 @@ function findPackageRoot() {
1755
1755
  function spawnDaemon() {
1756
1756
  const freeGB = os4.freemem() / (1024 * 1024 * 1024);
1757
1757
  const totalGB = os4.totalmem() / (1024 * 1024 * 1024);
1758
- if (freeGB < 1.5 && totalGB <= 8) {
1758
+ if (totalGB <= 8) {
1759
1759
  process.stderr.write(
1760
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
1760
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
1761
+ `
1762
+ );
1763
+ return;
1764
+ }
1765
+ if (totalGB <= 16 && freeGB < 4) {
1766
+ process.stderr.write(
1767
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
1761
1768
  `
1762
1769
  );
1763
1770
  return;
@@ -1782,7 +1789,9 @@ function spawnDaemon() {
1782
1789
  stderrFd = openSync(logPath, "a");
1783
1790
  } catch {
1784
1791
  }
1785
- const child = spawn(process.execPath, [resolvedPath], {
1792
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
1793
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
1794
+ const child = spawn(process.execPath, nodeArgs, {
1786
1795
  detached: true,
1787
1796
  stdio: ["ignore", "ignore", stderrFd],
1788
1797
  env: {
@@ -1757,9 +1757,16 @@ function findPackageRoot() {
1757
1757
  function spawnDaemon() {
1758
1758
  const freeGB = os4.freemem() / (1024 * 1024 * 1024);
1759
1759
  const totalGB = os4.totalmem() / (1024 * 1024 * 1024);
1760
- if (freeGB < 1.5 && totalGB <= 8) {
1760
+ if (totalGB <= 8) {
1761
1761
  process.stderr.write(
1762
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
1762
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
1763
+ `
1764
+ );
1765
+ return;
1766
+ }
1767
+ if (totalGB <= 16 && freeGB < 4) {
1768
+ process.stderr.write(
1769
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
1763
1770
  `
1764
1771
  );
1765
1772
  return;
@@ -1784,7 +1791,9 @@ function spawnDaemon() {
1784
1791
  stderrFd = openSync(logPath, "a");
1785
1792
  } catch {
1786
1793
  }
1787
- const child = spawn(process.execPath, [resolvedPath], {
1794
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
1795
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
1796
+ const child = spawn(process.execPath, nodeArgs, {
1788
1797
  detached: true,
1789
1798
  stdio: ["ignore", "ignore", stderrFd],
1790
1799
  env: {
package/dist/bin/cli.js CHANGED
@@ -1455,9 +1455,16 @@ function findPackageRoot() {
1455
1455
  function spawnDaemon() {
1456
1456
  const freeGB = os6.freemem() / (1024 * 1024 * 1024);
1457
1457
  const totalGB = os6.totalmem() / (1024 * 1024 * 1024);
1458
- if (freeGB < 1.5 && totalGB <= 8) {
1458
+ if (totalGB <= 8) {
1459
1459
  process.stderr.write(
1460
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
1460
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
1461
+ `
1462
+ );
1463
+ return;
1464
+ }
1465
+ if (totalGB <= 16 && freeGB < 4) {
1466
+ process.stderr.write(
1467
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
1461
1468
  `
1462
1469
  );
1463
1470
  return;
@@ -1482,7 +1489,9 @@ function spawnDaemon() {
1482
1489
  stderrFd = openSync(logPath, "a");
1483
1490
  } catch {
1484
1491
  }
1485
- const child = spawn(process.execPath, [resolvedPath], {
1492
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
1493
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
1494
+ const child = spawn(process.execPath, nodeArgs, {
1486
1495
  detached: true,
1487
1496
  stdio: ["ignore", "ignore", stderrFd],
1488
1497
  env: {
@@ -311,9 +311,16 @@ function findPackageRoot() {
311
311
  function spawnDaemon() {
312
312
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
313
313
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
314
- if (freeGB < 1.5 && totalGB <= 8) {
314
+ if (totalGB <= 8) {
315
315
  process.stderr.write(
316
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
316
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
317
+ `
318
+ );
319
+ return;
320
+ }
321
+ if (totalGB <= 16 && freeGB < 4) {
322
+ process.stderr.write(
323
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
317
324
  `
318
325
  );
319
326
  return;
@@ -338,7 +345,9 @@ function spawnDaemon() {
338
345
  stderrFd = openSync(logPath, "a");
339
346
  } catch {
340
347
  }
341
- const child = spawn(process.execPath, [resolvedPath], {
348
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
349
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
350
+ const child = spawn(process.execPath, nodeArgs, {
342
351
  detached: true,
343
352
  stdio: ["ignore", "ignore", stderrFd],
344
353
  env: {
@@ -495,9 +495,16 @@ function findPackageRoot() {
495
495
  function spawnDaemon() {
496
496
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
497
497
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
498
- if (freeGB < 1.5 && totalGB <= 8) {
498
+ if (totalGB <= 8) {
499
499
  process.stderr.write(
500
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
500
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
501
+ `
502
+ );
503
+ return;
504
+ }
505
+ if (totalGB <= 16 && freeGB < 4) {
506
+ process.stderr.write(
507
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
501
508
  `
502
509
  );
503
510
  return;
@@ -522,7 +529,9 @@ function spawnDaemon() {
522
529
  stderrFd = openSync(logPath, "a");
523
530
  } catch {
524
531
  }
525
- const child = spawn(process.execPath, [resolvedPath], {
532
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
533
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
534
+ const child = spawn(process.execPath, nodeArgs, {
526
535
  detached: true,
527
536
  stdio: ["ignore", "ignore", stderrFd],
528
537
  env: {
@@ -1901,9 +1901,16 @@ function findPackageRoot() {
1901
1901
  function spawnDaemon() {
1902
1902
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
1903
1903
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
1904
- if (freeGB < 1.5 && totalGB <= 8) {
1904
+ if (totalGB <= 8) {
1905
1905
  process.stderr.write(
1906
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
1906
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
1907
+ `
1908
+ );
1909
+ return;
1910
+ }
1911
+ if (totalGB <= 16 && freeGB < 4) {
1912
+ process.stderr.write(
1913
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
1907
1914
  `
1908
1915
  );
1909
1916
  return;
@@ -1928,7 +1935,9 @@ function spawnDaemon() {
1928
1935
  stderrFd = openSync(logPath, "a");
1929
1936
  } catch {
1930
1937
  }
1931
- const child = spawn(process.execPath, [resolvedPath], {
1938
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
1939
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
1940
+ const child = spawn(process.execPath, nodeArgs, {
1932
1941
  detached: true,
1933
1942
  stdio: ["ignore", "ignore", stderrFd],
1934
1943
  env: {
@@ -646,9 +646,16 @@ function findPackageRoot() {
646
646
  function spawnDaemon() {
647
647
  const freeGB = os4.freemem() / (1024 * 1024 * 1024);
648
648
  const totalGB = os4.totalmem() / (1024 * 1024 * 1024);
649
- if (freeGB < 1.5 && totalGB <= 8) {
649
+ if (totalGB <= 8) {
650
650
  process.stderr.write(
651
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
651
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
652
+ `
653
+ );
654
+ return;
655
+ }
656
+ if (totalGB <= 16 && freeGB < 4) {
657
+ process.stderr.write(
658
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
652
659
  `
653
660
  );
654
661
  return;
@@ -673,7 +680,9 @@ function spawnDaemon() {
673
680
  stderrFd = openSync(logPath, "a");
674
681
  } catch {
675
682
  }
676
- const child = spawn(process.execPath, [resolvedPath], {
683
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
684
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
685
+ const child = spawn(process.execPath, nodeArgs, {
677
686
  detached: true,
678
687
  stdio: ["ignore", "ignore", stderrFd],
679
688
  env: {
@@ -330,9 +330,16 @@ function findPackageRoot() {
330
330
  function spawnDaemon() {
331
331
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
332
332
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
333
- if (freeGB < 1.5 && totalGB <= 8) {
333
+ if (totalGB <= 8) {
334
334
  process.stderr.write(
335
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
335
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
336
+ `
337
+ );
338
+ return;
339
+ }
340
+ if (totalGB <= 16 && freeGB < 4) {
341
+ process.stderr.write(
342
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
336
343
  `
337
344
  );
338
345
  return;
@@ -357,7 +364,9 @@ function spawnDaemon() {
357
364
  stderrFd = openSync(logPath, "a");
358
365
  } catch {
359
366
  }
360
- const child = spawn(process.execPath, [resolvedPath], {
367
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
368
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
369
+ const child = spawn(process.execPath, nodeArgs, {
361
370
  detached: true,
362
371
  stdio: ["ignore", "ignore", stderrFd],
363
372
  env: {
@@ -2727,9 +2727,16 @@ function findPackageRoot() {
2727
2727
  function spawnDaemon() {
2728
2728
  const freeGB = os4.freemem() / (1024 * 1024 * 1024);
2729
2729
  const totalGB = os4.totalmem() / (1024 * 1024 * 1024);
2730
- if (freeGB < 1.5 && totalGB <= 8) {
2730
+ if (totalGB <= 8) {
2731
2731
  process.stderr.write(
2732
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
2732
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
2733
+ `
2734
+ );
2735
+ return;
2736
+ }
2737
+ if (totalGB <= 16 && freeGB < 4) {
2738
+ process.stderr.write(
2739
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
2733
2740
  `
2734
2741
  );
2735
2742
  return;
@@ -2754,7 +2761,9 @@ function spawnDaemon() {
2754
2761
  stderrFd = openSync(logPath, "a");
2755
2762
  } catch {
2756
2763
  }
2757
- const child = spawn(process.execPath, [resolvedPath], {
2764
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
2765
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
2766
+ const child = spawn(process.execPath, nodeArgs, {
2758
2767
  detached: true,
2759
2768
  stdio: ["ignore", "ignore", stderrFd],
2760
2769
  env: {
@@ -454,9 +454,16 @@ function findPackageRoot() {
454
454
  function spawnDaemon() {
455
455
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
456
456
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
457
- if (freeGB < 1.5 && totalGB <= 8) {
457
+ if (totalGB <= 8) {
458
458
  process.stderr.write(
459
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
459
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
460
+ `
461
+ );
462
+ return;
463
+ }
464
+ if (totalGB <= 16 && freeGB < 4) {
465
+ process.stderr.write(
466
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
460
467
  `
461
468
  );
462
469
  return;
@@ -481,7 +488,9 @@ function spawnDaemon() {
481
488
  stderrFd = openSync(logPath, "a");
482
489
  } catch {
483
490
  }
484
- const child = spawn(process.execPath, [resolvedPath], {
491
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
492
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
493
+ const child = spawn(process.execPath, nodeArgs, {
485
494
  detached: true,
486
495
  stdio: ["ignore", "ignore", stderrFd],
487
496
  env: {
@@ -726,9 +726,16 @@ function findPackageRoot() {
726
726
  function spawnDaemon() {
727
727
  const freeGB = os5.freemem() / (1024 * 1024 * 1024);
728
728
  const totalGB = os5.totalmem() / (1024 * 1024 * 1024);
729
- if (freeGB < 1.5 && totalGB <= 8) {
729
+ if (totalGB <= 8) {
730
730
  process.stderr.write(
731
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
731
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
732
+ `
733
+ );
734
+ return;
735
+ }
736
+ if (totalGB <= 16 && freeGB < 4) {
737
+ process.stderr.write(
738
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
732
739
  `
733
740
  );
734
741
  return;
@@ -753,7 +760,9 @@ function spawnDaemon() {
753
760
  stderrFd = openSync(logPath, "a");
754
761
  } catch {
755
762
  }
756
- const child = spawn(process.execPath, [resolvedPath], {
763
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
764
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
765
+ const child = spawn(process.execPath, nodeArgs, {
757
766
  detached: true,
758
767
  stdio: ["ignore", "ignore", stderrFd],
759
768
  env: {
@@ -726,9 +726,16 @@ function findPackageRoot() {
726
726
  function spawnDaemon() {
727
727
  const freeGB = os5.freemem() / (1024 * 1024 * 1024);
728
728
  const totalGB = os5.totalmem() / (1024 * 1024 * 1024);
729
- if (freeGB < 1.5 && totalGB <= 8) {
729
+ if (totalGB <= 8) {
730
730
  process.stderr.write(
731
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
731
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
732
+ `
733
+ );
734
+ return;
735
+ }
736
+ if (totalGB <= 16 && freeGB < 4) {
737
+ process.stderr.write(
738
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
732
739
  `
733
740
  );
734
741
  return;
@@ -753,7 +760,9 @@ function spawnDaemon() {
753
760
  stderrFd = openSync(logPath, "a");
754
761
  } catch {
755
762
  }
756
- const child = spawn(process.execPath, [resolvedPath], {
763
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
764
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
765
+ const child = spawn(process.execPath, nodeArgs, {
757
766
  detached: true,
758
767
  stdio: ["ignore", "ignore", stderrFd],
759
768
  env: {
package/dist/bin/setup.js CHANGED
@@ -455,9 +455,16 @@ function findPackageRoot() {
455
455
  function spawnDaemon() {
456
456
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
457
457
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
458
- if (freeGB < 1.5 && totalGB <= 8) {
458
+ if (totalGB <= 8) {
459
459
  process.stderr.write(
460
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
460
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
461
+ `
462
+ );
463
+ return;
464
+ }
465
+ if (totalGB <= 16 && freeGB < 4) {
466
+ process.stderr.write(
467
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
461
468
  `
462
469
  );
463
470
  return;
@@ -482,7 +489,9 @@ function spawnDaemon() {
482
489
  stderrFd = openSync(logPath, "a");
483
490
  } catch {
484
491
  }
485
- const child = spawn(process.execPath, [resolvedPath], {
492
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
493
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
494
+ const child = spawn(process.execPath, nodeArgs, {
486
495
  detached: true,
487
496
  stdio: ["ignore", "ignore", stderrFd],
488
497
  env: {
@@ -1894,9 +1894,16 @@ function findPackageRoot() {
1894
1894
  function spawnDaemon() {
1895
1895
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
1896
1896
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
1897
- if (freeGB < 1.5 && totalGB <= 8) {
1897
+ if (totalGB <= 8) {
1898
1898
  process.stderr.write(
1899
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
1899
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
1900
+ `
1901
+ );
1902
+ return;
1903
+ }
1904
+ if (totalGB <= 16 && freeGB < 4) {
1905
+ process.stderr.write(
1906
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
1900
1907
  `
1901
1908
  );
1902
1909
  return;
@@ -1921,7 +1928,9 @@ function spawnDaemon() {
1921
1928
  stderrFd = openSync(logPath, "a");
1922
1929
  } catch {
1923
1930
  }
1924
- const child = spawn(process.execPath, [resolvedPath], {
1931
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
1932
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
1933
+ const child = spawn(process.execPath, nodeArgs, {
1925
1934
  detached: true,
1926
1935
  stdio: ["ignore", "ignore", stderrFd],
1927
1936
  env: {
@@ -725,9 +725,16 @@ function findPackageRoot() {
725
725
  function spawnDaemon() {
726
726
  const freeGB = os5.freemem() / (1024 * 1024 * 1024);
727
727
  const totalGB = os5.totalmem() / (1024 * 1024 * 1024);
728
- if (freeGB < 1.5 && totalGB <= 8) {
728
+ if (totalGB <= 8) {
729
729
  process.stderr.write(
730
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
730
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
731
+ `
732
+ );
733
+ return;
734
+ }
735
+ if (totalGB <= 16 && freeGB < 4) {
736
+ process.stderr.write(
737
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
731
738
  `
732
739
  );
733
740
  return;
@@ -752,7 +759,9 @@ function spawnDaemon() {
752
759
  stderrFd = openSync(logPath, "a");
753
760
  } catch {
754
761
  }
755
- const child = spawn(process.execPath, [resolvedPath], {
762
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
763
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
764
+ const child = spawn(process.execPath, nodeArgs, {
756
765
  detached: true,
757
766
  stdio: ["ignore", "ignore", stderrFd],
758
767
  env: {
@@ -2729,9 +2729,16 @@ function findPackageRoot() {
2729
2729
  function spawnDaemon() {
2730
2730
  const freeGB = os4.freemem() / (1024 * 1024 * 1024);
2731
2731
  const totalGB = os4.totalmem() / (1024 * 1024 * 1024);
2732
- if (freeGB < 1.5 && totalGB <= 8) {
2732
+ if (totalGB <= 8) {
2733
2733
  process.stderr.write(
2734
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
2734
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
2735
+ `
2736
+ );
2737
+ return;
2738
+ }
2739
+ if (totalGB <= 16 && freeGB < 4) {
2740
+ process.stderr.write(
2741
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
2735
2742
  `
2736
2743
  );
2737
2744
  return;
@@ -2756,7 +2763,9 @@ function spawnDaemon() {
2756
2763
  stderrFd = openSync(logPath, "a");
2757
2764
  } catch {
2758
2765
  }
2759
- const child = spawn(process.execPath, [resolvedPath], {
2766
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
2767
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
2768
+ const child = spawn(process.execPath, nodeArgs, {
2760
2769
  detached: true,
2761
2770
  stdio: ["ignore", "ignore", stderrFd],
2762
2771
  env: {
@@ -526,9 +526,16 @@ function findPackageRoot() {
526
526
  function spawnDaemon() {
527
527
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
528
528
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
529
- if (freeGB < 1.5 && totalGB <= 8) {
529
+ if (totalGB <= 8) {
530
530
  process.stderr.write(
531
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
531
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
532
+ `
533
+ );
534
+ return;
535
+ }
536
+ if (totalGB <= 16 && freeGB < 4) {
537
+ process.stderr.write(
538
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
532
539
  `
533
540
  );
534
541
  return;
@@ -553,7 +560,9 @@ function spawnDaemon() {
553
560
  stderrFd = openSync(logPath, "a");
554
561
  } catch {
555
562
  }
556
- const child = spawn(process.execPath, [resolvedPath], {
563
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
564
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
565
+ const child = spawn(process.execPath, nodeArgs, {
557
566
  detached: true,
558
567
  stdio: ["ignore", "ignore", stderrFd],
559
568
  env: {
@@ -354,9 +354,16 @@ function findPackageRoot() {
354
354
  function spawnDaemon() {
355
355
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
356
356
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
357
- if (freeGB < 1.5 && totalGB <= 8) {
357
+ if (totalGB <= 8) {
358
358
  process.stderr.write(
359
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
359
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
360
+ `
361
+ );
362
+ return;
363
+ }
364
+ if (totalGB <= 16 && freeGB < 4) {
365
+ process.stderr.write(
366
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
360
367
  `
361
368
  );
362
369
  return;
@@ -381,7 +388,9 @@ function spawnDaemon() {
381
388
  stderrFd = openSync(logPath, "a");
382
389
  } catch {
383
390
  }
384
- const child = spawn(process.execPath, [resolvedPath], {
391
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
392
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
393
+ const child = spawn(process.execPath, nodeArgs, {
385
394
  detached: true,
386
395
  stdio: ["ignore", "ignore", stderrFd],
387
396
  env: {
@@ -363,9 +363,16 @@ function findPackageRoot() {
363
363
  function spawnDaemon() {
364
364
  const freeGB = os3.freemem() / (1024 * 1024 * 1024);
365
365
  const totalGB = os3.totalmem() / (1024 * 1024 * 1024);
366
- if (freeGB < 1.5 && totalGB <= 8) {
366
+ if (totalGB <= 8) {
367
367
  process.stderr.write(
368
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
368
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
369
+ `
370
+ );
371
+ return;
372
+ }
373
+ if (totalGB <= 16 && freeGB < 4) {
374
+ process.stderr.write(
375
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
369
376
  `
370
377
  );
371
378
  return;
@@ -390,7 +397,9 @@ function spawnDaemon() {
390
397
  stderrFd = openSync(logPath, "a");
391
398
  } catch {
392
399
  }
393
- const child = spawn(process.execPath, [resolvedPath], {
400
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
401
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
402
+ const child = spawn(process.execPath, nodeArgs, {
394
403
  detached: true,
395
404
  stdio: ["ignore", "ignore", stderrFd],
396
405
  env: {
@@ -597,9 +597,16 @@ function findPackageRoot() {
597
597
  function spawnDaemon() {
598
598
  const freeGB = os5.freemem() / (1024 * 1024 * 1024);
599
599
  const totalGB = os5.totalmem() / (1024 * 1024 * 1024);
600
- if (freeGB < 1.5 && totalGB <= 8) {
600
+ if (totalGB <= 8) {
601
601
  process.stderr.write(
602
- `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only. Close other apps and retry.
602
+ `[exed-client] SKIP: ${totalGB.toFixed(0)}GB system \u2014 embedding daemon disabled. Using keyword search only. Minimum 16GB recommended for vector search.
603
+ `
604
+ );
605
+ return;
606
+ }
607
+ if (totalGB <= 16 && freeGB < 4) {
608
+ process.stderr.write(
609
+ `[exed-client] SKIP: low memory (${freeGB.toFixed(1)}GB free / ${totalGB.toFixed(0)}GB total). Embedding daemon not started \u2014 using keyword search only.
603
610
  `
604
611
  );
605
612
  return;
@@ -624,7 +631,9 @@ function spawnDaemon() {
624
631
  stderrFd = openSync(logPath, "a");
625
632
  } catch {
626
633
  }
627
- const child = spawn(process.execPath, [resolvedPath], {
634
+ const heapCapMB = totalGB <= 8 ? 256 : 512;
635
+ const nodeArgs = [`--max-old-space-size=${heapCapMB}`, resolvedPath];
636
+ const child = spawn(process.execPath, nodeArgs, {
628
637
  detached: true,
629
638
  stdio: ["ignore", "ignore", stderrFd],
630
639
  env: {