@askexenow/exe-os 0.8.93 → 0.8.95

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/dist/bin/cli.js CHANGED
@@ -12419,10 +12419,11 @@ async function validateModel(log) {
12419
12419
  }
12420
12420
  async function runSetupWizard(opts = {}) {
12421
12421
  const {
12422
- skipModel = false,
12422
+ skipModel: skipModelOpt = false,
12423
12423
  skipModelValidation = false,
12424
12424
  log = (msg) => process.stderr.write(msg + "\n")
12425
12425
  } = opts;
12426
+ let skipModel = skipModelOpt;
12426
12427
  const rl = opts.createReadline ? opts.createReadline() : createInterface3({ input: process.stdin, output: process.stderr });
12427
12428
  try {
12428
12429
  log("");
@@ -12599,9 +12600,16 @@ async function runSetupWizard(opts = {}) {
12599
12600
  }
12600
12601
  log("");
12601
12602
  if (!state.completedSteps.includes(3)) {
12603
+ const totalGB = getTotalMemoryGB();
12604
+ if (totalGB <= 8) {
12605
+ log(`System: ${totalGB.toFixed(0)}GB RAM detected`);
12606
+ log("Skipping embedding model download (keyword search mode).");
12607
+ log("Vector search requires 16GB+ RAM. Your search uses keyword matching,");
12608
+ log("which works great for most use cases.");
12609
+ skipModel = true;
12610
+ }
12602
12611
  if (!skipModel) {
12603
12612
  const freeGB = getAvailableMemoryGB();
12604
- const totalGB = getTotalMemoryGB();
12605
12613
  if (freeGB < 2) {
12606
12614
  log(`\u26A0 Low memory detected: ${freeGB.toFixed(1)}GB free of ${totalGB.toFixed(0)}GB total`);
12607
12615
  log(" Close other applications (browser, Slack, etc.) before continuing.");
@@ -12960,6 +12968,9 @@ async function runSetupWizard(opts = {}) {
12960
12968
  log("Encryption: SQLCipher (local) + AES-256-GCM (sync)");
12961
12969
  if (!skipModel) {
12962
12970
  log("Model: " + LOCAL_FILENAME);
12971
+ log("Search: hybrid (vector + keyword)");
12972
+ } else if (getTotalMemoryGB() <= 8) {
12973
+ log("Search: keyword only (8GB RAM \u2014 vector search requires 16GB+)");
12963
12974
  }
12964
12975
  if (createdEmployees.length > 0) {
12965
12976
  log("Team: " + createdEmployees.map((e) => `${e.name} (${e.role})`).join(", "));
@@ -13171,7 +13182,7 @@ var init_update = __esm({
13171
13182
  init_is_main();
13172
13183
  init_update_check();
13173
13184
  init_update_check();
13174
- if (isMainModule(import.meta.url)) {
13185
+ if (isMainModule(import.meta.url) && process.argv[1]?.includes("update")) {
13175
13186
  runUpdate().catch((err) => {
13176
13187
  console.error(err instanceof Error ? err.message : String(err));
13177
13188
  process.exit(1);
package/dist/bin/setup.js CHANGED
@@ -5809,10 +5809,11 @@ async function validateModel(log) {
5809
5809
  }
5810
5810
  async function runSetupWizard(opts = {}) {
5811
5811
  const {
5812
- skipModel: skipModel2 = false,
5812
+ skipModel: skipModelOpt = false,
5813
5813
  skipModelValidation = false,
5814
5814
  log = (msg) => process.stderr.write(msg + "\n")
5815
5815
  } = opts;
5816
+ let skipModel2 = skipModelOpt;
5816
5817
  const rl = opts.createReadline ? opts.createReadline() : createInterface({ input: process.stdin, output: process.stderr });
5817
5818
  try {
5818
5819
  log("");
@@ -5989,9 +5990,16 @@ async function runSetupWizard(opts = {}) {
5989
5990
  }
5990
5991
  log("");
5991
5992
  if (!state.completedSteps.includes(3)) {
5993
+ const totalGB = getTotalMemoryGB();
5994
+ if (totalGB <= 8) {
5995
+ log(`System: ${totalGB.toFixed(0)}GB RAM detected`);
5996
+ log("Skipping embedding model download (keyword search mode).");
5997
+ log("Vector search requires 16GB+ RAM. Your search uses keyword matching,");
5998
+ log("which works great for most use cases.");
5999
+ skipModel2 = true;
6000
+ }
5992
6001
  if (!skipModel2) {
5993
6002
  const freeGB = getAvailableMemoryGB();
5994
- const totalGB = getTotalMemoryGB();
5995
6003
  if (freeGB < 2) {
5996
6004
  log(`\u26A0 Low memory detected: ${freeGB.toFixed(1)}GB free of ${totalGB.toFixed(0)}GB total`);
5997
6005
  log(" Close other applications (browser, Slack, etc.) before continuing.");
@@ -6350,6 +6358,9 @@ async function runSetupWizard(opts = {}) {
6350
6358
  log("Encryption: SQLCipher (local) + AES-256-GCM (sync)");
6351
6359
  if (!skipModel2) {
6352
6360
  log("Model: " + LOCAL_FILENAME);
6361
+ log("Search: hybrid (vector + keyword)");
6362
+ } else if (getTotalMemoryGB() <= 8) {
6363
+ log("Search: keyword only (8GB RAM \u2014 vector search requires 16GB+)");
6353
6364
  }
6354
6365
  if (createdEmployees.length > 0) {
6355
6366
  log("Team: " + createdEmployees.map((e) => `${e.name} (${e.role})`).join(", "));
@@ -654,7 +654,7 @@ async function runUpdate(cliArgs) {
654
654
  }
655
655
  console.log("\n\u{1F680} Ready. Start your COO session to use the new version.\n");
656
656
  }
657
- if (isMainModule(import.meta.url)) {
657
+ if (isMainModule(import.meta.url) && process.argv[1]?.includes("update")) {
658
658
  runUpdate().catch((err) => {
659
659
  console.error(err instanceof Error ? err.message : String(err));
660
660
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.8.93",
3
+ "version": "0.8.95",
4
4
  "description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
5
5
  "license": "CC-BY-NC-4.0",
6
6
  "type": "module",