@askexenow/exe-os 0.8.42 → 0.8.43

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
@@ -4805,7 +4805,21 @@ function getCacheAgeMs() {
4805
4805
  }
4806
4806
  }
4807
4807
  async function checkLicense() {
4808
- const key = loadLicense();
4808
+ let key = loadLicense();
4809
+ if (!key) {
4810
+ try {
4811
+ const configPath = path11.join(EXE_AI_DIR, "config.json");
4812
+ if (existsSync10(configPath)) {
4813
+ const raw = JSON.parse(readFileSync6(configPath, "utf8"));
4814
+ const cloud = raw.cloud;
4815
+ if (cloud?.apiKey) {
4816
+ key = cloud.apiKey;
4817
+ saveLicense(key);
4818
+ }
4819
+ }
4820
+ } catch {
4821
+ }
4822
+ }
4809
4823
  if (!key) return FREE_LICENSE;
4810
4824
  const cached = await getCachedLicense();
4811
4825
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -2532,7 +2532,21 @@ function getCacheAgeMs() {
2532
2532
  }
2533
2533
  }
2534
2534
  async function checkLicense() {
2535
- const key = loadLicense();
2535
+ let key = loadLicense();
2536
+ if (!key) {
2537
+ try {
2538
+ const configPath = path9.join(EXE_AI_DIR, "config.json");
2539
+ if (existsSync8(configPath)) {
2540
+ const raw = JSON.parse(readFileSync7(configPath, "utf8"));
2541
+ const cloud = raw.cloud;
2542
+ if (cloud?.apiKey) {
2543
+ key = cloud.apiKey;
2544
+ saveLicense(key);
2545
+ }
2546
+ }
2547
+ } catch {
2548
+ }
2549
+ }
2536
2550
  if (!key) return FREE_LICENSE;
2537
2551
  const cached = await getCachedLicense();
2538
2552
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -373,7 +373,21 @@ function getCacheAgeMs() {
373
373
  }
374
374
  }
375
375
  async function checkLicense() {
376
- const key = loadLicense();
376
+ let key = loadLicense();
377
+ if (!key) {
378
+ try {
379
+ const configPath = path4.join(EXE_AI_DIR, "config.json");
380
+ if (existsSync4(configPath)) {
381
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
382
+ const cloud = raw.cloud;
383
+ if (cloud?.apiKey) {
384
+ key = cloud.apiKey;
385
+ saveLicense(key);
386
+ }
387
+ }
388
+ } catch {
389
+ }
390
+ }
377
391
  if (!key) return FREE_LICENSE;
378
392
  const cached = await getCachedLicense();
379
393
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -3064,7 +3064,21 @@ function getCacheAgeMs() {
3064
3064
  }
3065
3065
  }
3066
3066
  async function checkLicense() {
3067
- const key = loadLicense();
3067
+ let key = loadLicense();
3068
+ if (!key) {
3069
+ try {
3070
+ const configPath = path5.join(EXE_AI_DIR, "config.json");
3071
+ if (existsSync5(configPath)) {
3072
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
3073
+ const cloud = raw.cloud;
3074
+ if (cloud?.apiKey) {
3075
+ key = cloud.apiKey;
3076
+ saveLicense(key);
3077
+ }
3078
+ }
3079
+ } catch {
3080
+ }
3081
+ }
3068
3082
  if (!key) return FREE_LICENSE;
3069
3083
  const cached = await getCachedLicense();
3070
3084
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -477,6 +477,10 @@ function loadLicense() {
477
477
  return null;
478
478
  }
479
479
  }
480
+ function saveLicense(apiKey) {
481
+ mkdirSync(EXE_AI_DIR, { recursive: true });
482
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
483
+ }
480
484
  async function verifyLicenseJwt(token) {
481
485
  try {
482
486
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -566,7 +570,21 @@ function getCacheAgeMs() {
566
570
  }
567
571
  }
568
572
  async function checkLicense() {
569
- const key = loadLicense();
573
+ let key = loadLicense();
574
+ if (!key) {
575
+ try {
576
+ const configPath = path4.join(EXE_AI_DIR, "config.json");
577
+ if (existsSync4(configPath)) {
578
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
579
+ const cloud = raw.cloud;
580
+ if (cloud?.apiKey) {
581
+ key = cloud.apiKey;
582
+ saveLicense(key);
583
+ }
584
+ }
585
+ } catch {
586
+ }
587
+ }
570
588
  if (!key) return FREE_LICENSE;
571
589
  const cached = await getCachedLicense();
572
590
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -1306,6 +1306,10 @@ function loadLicense() {
1306
1306
  return null;
1307
1307
  }
1308
1308
  }
1309
+ function saveLicense(apiKey) {
1310
+ mkdirSync(EXE_AI_DIR, { recursive: true });
1311
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
1312
+ }
1309
1313
  async function verifyLicenseJwt(token) {
1310
1314
  try {
1311
1315
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -1396,7 +1400,21 @@ function getCacheAgeMs() {
1396
1400
  }
1397
1401
  }
1398
1402
  async function checkLicense() {
1399
- const key = loadLicense();
1403
+ let key = loadLicense();
1404
+ if (!key) {
1405
+ try {
1406
+ const configPath = path3.join(EXE_AI_DIR, "config.json");
1407
+ if (existsSync3(configPath)) {
1408
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
1409
+ const cloud = raw.cloud;
1410
+ if (cloud?.apiKey) {
1411
+ key = cloud.apiKey;
1412
+ saveLicense(key);
1413
+ }
1414
+ }
1415
+ } catch {
1416
+ }
1417
+ }
1400
1418
  if (!key) return FREE_LICENSE;
1401
1419
  const cached = await getCachedLicense();
1402
1420
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
package/dist/bin/setup.js CHANGED
@@ -841,7 +841,21 @@ function getCacheAgeMs() {
841
841
  }
842
842
  }
843
843
  async function checkLicense() {
844
- const key = loadLicense();
844
+ let key = loadLicense();
845
+ if (!key) {
846
+ try {
847
+ const configPath = path5.join(EXE_AI_DIR, "config.json");
848
+ if (existsSync5(configPath)) {
849
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
850
+ const cloud = raw.cloud;
851
+ if (cloud?.apiKey) {
852
+ key = cloud.apiKey;
853
+ saveLicense(key);
854
+ }
855
+ }
856
+ } catch {
857
+ }
858
+ }
845
859
  if (!key) return FREE_LICENSE;
846
860
  const cached = await getCachedLicense();
847
861
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -1773,6 +1773,10 @@ function loadLicense() {
1773
1773
  return null;
1774
1774
  }
1775
1775
  }
1776
+ function saveLicense(apiKey) {
1777
+ mkdirSync2(EXE_AI_DIR, { recursive: true });
1778
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
1779
+ }
1776
1780
  async function verifyLicenseJwt(token) {
1777
1781
  try {
1778
1782
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -1862,7 +1866,21 @@ function getCacheAgeMs() {
1862
1866
  }
1863
1867
  }
1864
1868
  async function checkLicense() {
1865
- const key = loadLicense();
1869
+ let key = loadLicense();
1870
+ if (!key) {
1871
+ try {
1872
+ const configPath = path8.join(EXE_AI_DIR, "config.json");
1873
+ if (existsSync7(configPath)) {
1874
+ const raw = JSON.parse(readFileSync5(configPath, "utf8"));
1875
+ const cloud = raw.cloud;
1876
+ if (cloud?.apiKey) {
1877
+ key = cloud.apiKey;
1878
+ saveLicense(key);
1879
+ }
1880
+ }
1881
+ } catch {
1882
+ }
1883
+ }
1866
1884
  if (!key) return FREE_LICENSE;
1867
1885
  const cached = await getCachedLicense();
1868
1886
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -2396,6 +2396,10 @@ function loadLicense() {
2396
2396
  return null;
2397
2397
  }
2398
2398
  }
2399
+ function saveLicense(apiKey) {
2400
+ mkdirSync2(EXE_AI_DIR, { recursive: true });
2401
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
2402
+ }
2399
2403
  async function verifyLicenseJwt(token) {
2400
2404
  try {
2401
2405
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -2486,7 +2490,21 @@ function getCacheAgeMs() {
2486
2490
  }
2487
2491
  }
2488
2492
  async function checkLicense() {
2489
- const key = loadLicense();
2493
+ let key = loadLicense();
2494
+ if (!key) {
2495
+ try {
2496
+ const configPath = path6.join(EXE_AI_DIR, "config.json");
2497
+ if (existsSync5(configPath)) {
2498
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
2499
+ const cloud = raw.cloud;
2500
+ if (cloud?.apiKey) {
2501
+ key = cloud.apiKey;
2502
+ saveLicense(key);
2503
+ }
2504
+ }
2505
+ } catch {
2506
+ }
2507
+ }
2490
2508
  if (!key) return FREE_LICENSE;
2491
2509
  const cached = await getCachedLicense();
2492
2510
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -1963,6 +1963,10 @@ function loadLicense() {
1963
1963
  return null;
1964
1964
  }
1965
1965
  }
1966
+ function saveLicense(apiKey) {
1967
+ mkdirSync2(EXE_AI_DIR, { recursive: true });
1968
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
1969
+ }
1966
1970
  async function verifyLicenseJwt(token) {
1967
1971
  try {
1968
1972
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -2052,7 +2056,21 @@ function getCacheAgeMs() {
2052
2056
  }
2053
2057
  }
2054
2058
  async function checkLicense() {
2055
- const key = loadLicense();
2059
+ let key = loadLicense();
2060
+ if (!key) {
2061
+ try {
2062
+ const configPath = path7.join(EXE_AI_DIR, "config.json");
2063
+ if (existsSync6(configPath)) {
2064
+ const raw = JSON.parse(readFileSync4(configPath, "utf8"));
2065
+ const cloud = raw.cloud;
2066
+ if (cloud?.apiKey) {
2067
+ key = cloud.apiKey;
2068
+ saveLicense(key);
2069
+ }
2070
+ }
2071
+ } catch {
2072
+ }
2073
+ }
2056
2074
  if (!key) return FREE_LICENSE;
2057
2075
  const cached = await getCachedLicense();
2058
2076
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -1764,6 +1764,10 @@ function loadLicense() {
1764
1764
  return null;
1765
1765
  }
1766
1766
  }
1767
+ function saveLicense(apiKey) {
1768
+ mkdirSync2(EXE_AI_DIR, { recursive: true });
1769
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
1770
+ }
1767
1771
  async function verifyLicenseJwt(token) {
1768
1772
  try {
1769
1773
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -1853,7 +1857,21 @@ function getCacheAgeMs() {
1853
1857
  }
1854
1858
  }
1855
1859
  async function checkLicense() {
1856
- const key = loadLicense();
1860
+ let key = loadLicense();
1861
+ if (!key) {
1862
+ try {
1863
+ const configPath = path6.join(EXE_AI_DIR, "config.json");
1864
+ if (existsSync6(configPath)) {
1865
+ const raw = JSON.parse(readFileSync4(configPath, "utf8"));
1866
+ const cloud = raw.cloud;
1867
+ if (cloud?.apiKey) {
1868
+ key = cloud.apiKey;
1869
+ saveLicense(key);
1870
+ }
1871
+ }
1872
+ } catch {
1873
+ }
1874
+ }
1857
1875
  if (!key) return FREE_LICENSE;
1858
1876
  const cached = await getCachedLicense();
1859
1877
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -297,6 +297,10 @@ function loadLicense() {
297
297
  return null;
298
298
  }
299
299
  }
300
+ function saveLicense(apiKey) {
301
+ mkdirSync(EXE_AI_DIR, { recursive: true });
302
+ writeFileSync(LICENSE_PATH, apiKey.trim(), { encoding: "utf8", mode: 384 });
303
+ }
300
304
  async function verifyLicenseJwt(token) {
301
305
  try {
302
306
  const key = await importSPKI(LICENSE_PUBLIC_KEY_PEM, LICENSE_JWT_ALG);
@@ -387,7 +391,21 @@ function getCacheAgeMs() {
387
391
  }
388
392
  }
389
393
  async function checkLicense() {
390
- const key = loadLicense();
394
+ let key = loadLicense();
395
+ if (!key) {
396
+ try {
397
+ const configPath = path3.join(EXE_AI_DIR, "config.json");
398
+ if (existsSync3(configPath)) {
399
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
400
+ const cloud = raw.cloud;
401
+ if (cloud?.apiKey) {
402
+ key = cloud.apiKey;
403
+ saveLicense(key);
404
+ }
405
+ }
406
+ } catch {
407
+ }
408
+ }
391
409
  if (!key) return FREE_LICENSE;
392
410
  const cached = await getCachedLicense();
393
411
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -269,7 +269,21 @@ function getCacheAgeMs() {
269
269
  }
270
270
  }
271
271
  async function checkLicense() {
272
- const key = loadLicense();
272
+ let key = loadLicense();
273
+ if (!key) {
274
+ try {
275
+ const configPath = path2.join(EXE_AI_DIR, "config.json");
276
+ if (existsSync2(configPath)) {
277
+ const raw = JSON.parse(readFileSync2(configPath, "utf8"));
278
+ const cloud = raw.cloud;
279
+ if (cloud?.apiKey) {
280
+ key = cloud.apiKey;
281
+ saveLicense(key);
282
+ }
283
+ }
284
+ } catch {
285
+ }
286
+ }
273
287
  if (!key) return FREE_LICENSE;
274
288
  const cached = await getCachedLicense();
275
289
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
@@ -3455,7 +3455,21 @@ function getCacheAgeMs() {
3455
3455
  }
3456
3456
  }
3457
3457
  async function checkLicense() {
3458
- const key = loadLicense();
3458
+ let key = loadLicense();
3459
+ if (!key) {
3460
+ try {
3461
+ const configPath = path10.join(EXE_AI_DIR, "config.json");
3462
+ if (existsSync8(configPath)) {
3463
+ const raw = JSON.parse(readFileSync6(configPath, "utf8"));
3464
+ const cloud = raw.cloud;
3465
+ if (cloud?.apiKey) {
3466
+ key = cloud.apiKey;
3467
+ saveLicense(key);
3468
+ }
3469
+ }
3470
+ } catch {
3471
+ }
3472
+ }
3459
3473
  if (!key) return FREE_LICENSE;
3460
3474
  const cached = await getCachedLicense();
3461
3475
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
package/dist/tui/App.js CHANGED
@@ -1443,7 +1443,21 @@ function getCacheAgeMs() {
1443
1443
  }
1444
1444
  }
1445
1445
  async function checkLicense() {
1446
- const key = loadLicense();
1446
+ let key = loadLicense();
1447
+ if (!key) {
1448
+ try {
1449
+ const configPath = path2.join(EXE_AI_DIR, "config.json");
1450
+ if (existsSync3(configPath)) {
1451
+ const raw = JSON.parse(readFileSync3(configPath, "utf8"));
1452
+ const cloud = raw.cloud;
1453
+ if (cloud?.apiKey) {
1454
+ key = cloud.apiKey;
1455
+ saveLicense(key);
1456
+ }
1457
+ }
1458
+ } catch {
1459
+ }
1460
+ }
1447
1461
  if (!key) return FREE_LICENSE;
1448
1462
  const cached = await getCachedLicense();
1449
1463
  if (cached && getCacheAgeMs() < CACHE_MAX_AGE_MS) return cached;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askexenow/exe-os",
3
- "version": "0.8.42",
3
+ "version": "0.8.43",
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",