@aiyiran/myclaw 1.0.154 → 1.0.155
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/package.json +3 -7
- package/wsl2.js +107 -1
package/package.json
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiyiran/myclaw",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.155",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"
|
|
8
|
-
"
|
|
7
|
+
"mc": "index.js",
|
|
8
|
+
"myclaw": "index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
12
12
|
},
|
|
13
|
-
"keywords": [],
|
|
14
13
|
"author": "",
|
|
15
14
|
"license": "ISC",
|
|
16
15
|
"dependencies": {
|
|
17
16
|
"chalk": "^4.1.2"
|
|
18
|
-
},
|
|
19
|
-
"engines": {
|
|
20
|
-
"node": ">=16"
|
|
21
17
|
}
|
|
22
18
|
}
|
package/wsl2.js
CHANGED
|
@@ -36,6 +36,8 @@ const C = isWindows
|
|
|
36
36
|
const STATE_FILE = path.join(os.homedir(), '.myclaw_wsl_state');
|
|
37
37
|
const MARKER_PATH_PS = STATE_FILE.replace(/\\/g, '\\\\');
|
|
38
38
|
|
|
39
|
+
const CONFIG_FILE = path.join(os.homedir(), '.myclaw_config');
|
|
40
|
+
|
|
39
41
|
const WORK_DIR = path.join(os.homedir(), '.myclaw_tmp');
|
|
40
42
|
try { fs.mkdirSync(WORK_DIR, { recursive: true }); } catch {}
|
|
41
43
|
const WORK_DIR_PS = WORK_DIR.replace(/\\/g, '\\\\');
|
|
@@ -55,6 +57,22 @@ function setState(state) {
|
|
|
55
57
|
fs.writeFileSync(STATE_FILE, state, 'utf8');
|
|
56
58
|
}
|
|
57
59
|
|
|
60
|
+
function getConfig() {
|
|
61
|
+
try {
|
|
62
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
63
|
+
const content = fs.readFileSync(CONFIG_FILE, 'utf8');
|
|
64
|
+
return JSON.parse(content);
|
|
65
|
+
}
|
|
66
|
+
} catch {}
|
|
67
|
+
return {};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function setConfig(key, value) {
|
|
71
|
+
const config = getConfig();
|
|
72
|
+
config[key] = value;
|
|
73
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8');
|
|
74
|
+
}
|
|
75
|
+
|
|
58
76
|
function launchElevatedPS(script) {
|
|
59
77
|
const tmpDir = process.env.LOCALAPPDATA
|
|
60
78
|
? path.join(process.env.LOCALAPPDATA, 'myclaw')
|
|
@@ -80,7 +98,8 @@ function launchElevatedPS(script) {
|
|
|
80
98
|
}
|
|
81
99
|
|
|
82
100
|
function makeAskLocalOrCDN(prompt, destVar, cdnUrl, desc, fileName) {
|
|
83
|
-
const
|
|
101
|
+
const config = getConfig();
|
|
102
|
+
const callerDir = (config.installerDir || process.env.MYCLAW_INSTALLER_DIR || process.cwd()).replace(/\\/g, '\\\\');
|
|
84
103
|
const cdnFilename = cdnUrl.split('/').pop();
|
|
85
104
|
return `
|
|
86
105
|
$callerDir = "${callerDir}"
|
|
@@ -436,6 +455,87 @@ if ($installed) {
|
|
|
436
455
|
}
|
|
437
456
|
}
|
|
438
457
|
|
|
458
|
+
// ============================================================================
|
|
459
|
+
// ============================================================================
|
|
460
|
+
// CLI 模式
|
|
461
|
+
// ============================================================================
|
|
462
|
+
|
|
463
|
+
function runCliMode() {
|
|
464
|
+
const readline = require('readline');
|
|
465
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
466
|
+
|
|
467
|
+
const question = (prompt) => new Promise(resolve => rl.question(prompt, resolve));
|
|
468
|
+
|
|
469
|
+
async function showMenu() {
|
|
470
|
+
console.log('');
|
|
471
|
+
console.log('========================================');
|
|
472
|
+
console.log(' MyClaw WSL2 CLI 控制面板');
|
|
473
|
+
console.log('========================================');
|
|
474
|
+
console.log('');
|
|
475
|
+
|
|
476
|
+
const config = getConfig();
|
|
477
|
+
const currentPath = config.installerDir || '(未设置)';
|
|
478
|
+
|
|
479
|
+
console.log('当前安装包路径: ' + C.y + currentPath + C.nc);
|
|
480
|
+
console.log('');
|
|
481
|
+
console.log('请选择操作:');
|
|
482
|
+
console.log(' 1. 重新安装 Phase 1 (启用功能 + 下载)');
|
|
483
|
+
console.log(' 2. 重新安装 Phase 2 (导入 Linux 环境)');
|
|
484
|
+
console.log(' 3. 重新设置安装包路径');
|
|
485
|
+
console.log(' 0. 退出');
|
|
486
|
+
console.log('');
|
|
487
|
+
|
|
488
|
+
const choice = await question('请输入选项 (0-3): ');
|
|
489
|
+
|
|
490
|
+
switch (choice.trim()) {
|
|
491
|
+
case '1':
|
|
492
|
+
console.log('');
|
|
493
|
+
console.log('[' + C.y + '执行' + C.nc + '] 开始 Phase 1 安装...');
|
|
494
|
+
setState('needs-features');
|
|
495
|
+
rl.close();
|
|
496
|
+
runPhase1();
|
|
497
|
+
break;
|
|
498
|
+
|
|
499
|
+
case '2':
|
|
500
|
+
console.log('');
|
|
501
|
+
console.log('[' + C.y + '执行' + C.nc + '] 开始 Phase 2 安装...');
|
|
502
|
+
setState('phase1-done');
|
|
503
|
+
rl.close();
|
|
504
|
+
runPhase2();
|
|
505
|
+
break;
|
|
506
|
+
|
|
507
|
+
case '3':
|
|
508
|
+
console.log('');
|
|
509
|
+
const newPath = await question('请输入安装包存放路径: ');
|
|
510
|
+
if (newPath.trim()) {
|
|
511
|
+
setConfig('installerDir', newPath.trim());
|
|
512
|
+
console.log('');
|
|
513
|
+
console.log('[' + C.g + 'OK' + C.nc + '] 路径已保存: ' + C.y + newPath.trim() + C.nc);
|
|
514
|
+
console.log('');
|
|
515
|
+
console.log('再次运行 ' + C.y + 'myclaw wsl2' + C.nc + ' 时将使用此路径。');
|
|
516
|
+
} else {
|
|
517
|
+
console.log('[' + C.r + '取消' + C.nc + '] 路径为空,未保存。');
|
|
518
|
+
}
|
|
519
|
+
rl.close();
|
|
520
|
+
break;
|
|
521
|
+
|
|
522
|
+
case '0':
|
|
523
|
+
console.log('');
|
|
524
|
+
console.log('已退出。');
|
|
525
|
+
rl.close();
|
|
526
|
+
break;
|
|
527
|
+
|
|
528
|
+
default:
|
|
529
|
+
console.log('');
|
|
530
|
+
console.log('[' + C.r + '错误' + C.nc + '] 无效选项,请重试。');
|
|
531
|
+
await showMenu();
|
|
532
|
+
break;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
showMenu();
|
|
537
|
+
}
|
|
538
|
+
|
|
439
539
|
// ============================================================================
|
|
440
540
|
// 主入口
|
|
441
541
|
// ============================================================================
|
|
@@ -446,6 +546,12 @@ function run() {
|
|
|
446
546
|
process.exit(0);
|
|
447
547
|
}
|
|
448
548
|
|
|
549
|
+
// CLI 模式
|
|
550
|
+
if (process.argv.includes('--cli')) {
|
|
551
|
+
runCliMode();
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
554
|
+
|
|
449
555
|
// 隐藏的高级玩家后门
|
|
450
556
|
if (process.argv.includes('--force-phase1')) {
|
|
451
557
|
setState('needs-features');
|