je-cd 0.1.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.
package/dist/index.js ADDED
@@ -0,0 +1,2251 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getCpuManager,
4
+ getDiskManager,
5
+ getGpuManager,
6
+ getMemoryManager,
7
+ getNetworkManager,
8
+ getOsManager,
9
+ getProcessManager
10
+ } from "./chunk-DZZGI7AU.js";
11
+
12
+ // src/cli/router.ts
13
+ import chalk2 from "chalk";
14
+
15
+ // src/groups/claude/run.ts
16
+ import { spawn } from "child_process";
17
+ async function handler(args) {
18
+ return new Promise((resolve, reject) => {
19
+ const child = spawn("claude", args, { stdio: "inherit", shell: true });
20
+ child.on("close", (code) => code === 0 ? resolve() : reject(new Error(`claude exit code ${code}`)));
21
+ child.on("error", (e) => reject(e));
22
+ });
23
+ }
24
+ var commandDef = { name: "run", description: "\u542F\u52A8 Claude Code", handler, examples: ["jc claude"] };
25
+
26
+ // src/groups/claude/bypass.ts
27
+ import { spawn as spawn2 } from "child_process";
28
+ async function handler2(_args) {
29
+ return new Promise((resolve, reject) => {
30
+ const child = spawn2("claude", ["--permission-mode", "bypassPermissions"], { stdio: "inherit", shell: true });
31
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
32
+ child.on("error", reject);
33
+ });
34
+ }
35
+ var commandDef2 = { name: "b", description: "\u8DF3\u8FC7\u6743\u9650\u6A21\u5F0F", handler: handler2, examples: ["jc claude b"] };
36
+
37
+ // src/groups/claude/resume.ts
38
+ import { spawn as spawn3 } from "child_process";
39
+ async function handler3(_args) {
40
+ return new Promise((resolve, reject) => {
41
+ const child = spawn3("claude", ["-r", "--dangerously-skip-permissions"], { stdio: "inherit", shell: true });
42
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
43
+ child.on("error", reject);
44
+ });
45
+ }
46
+ var commandDef3 = { name: "r", description: "\u6062\u590D\u4E0A\u6B21\u4F1A\u8BDD", handler: handler3, examples: ["jc claude r"] };
47
+
48
+ // src/groups/claude/ultracode.ts
49
+ import { spawn as spawn4 } from "child_process";
50
+ async function handler4(_args) {
51
+ return new Promise((resolve, reject) => {
52
+ const child = spawn4("claude", ["--dangerously-skip-permissions", "/effort ultracode"], { stdio: "inherit", shell: true });
53
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
54
+ child.on("error", reject);
55
+ });
56
+ }
57
+ var commandDef4 = { name: "e", description: "Ultracode \u6A21\u5F0F", handler: handler4, examples: ["jc claude e"] };
58
+
59
+ // src/groups/claude/index.ts
60
+ var claudeGroup = {
61
+ name: "claude",
62
+ alias: "c",
63
+ description: "Claude Code CLI \u5305\u88C5",
64
+ commands: [commandDef, commandDef2, commandDef3, commandDef4],
65
+ defaultHandler: handler
66
+ };
67
+
68
+ // src/groups/happy/run.ts
69
+ import { spawn as spawn5 } from "child_process";
70
+ async function handler5(args) {
71
+ return new Promise((resolve, reject) => {
72
+ const child = spawn5("happy", args, { stdio: "inherit", shell: true });
73
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`happy exit ${c}`)));
74
+ child.on("error", reject);
75
+ });
76
+ }
77
+ var commandDef5 = { name: "run", description: "\u542F\u52A8 Happy", handler: handler5, examples: ["jc happy"] };
78
+
79
+ // src/groups/happy/claude.ts
80
+ import { spawn as spawn6 } from "child_process";
81
+ async function handler6(_args) {
82
+ return new Promise((resolve, reject) => {
83
+ const child = spawn6("happy", ["claude"], { stdio: "inherit", shell: true });
84
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
85
+ child.on("error", reject);
86
+ });
87
+ }
88
+ var commandDef6 = { name: "claude", description: "\u542F\u52A8 Happy + Claude", handler: handler6, examples: ["jc happy claude"] };
89
+
90
+ // src/groups/happy/codex.ts
91
+ import { spawn as spawn7 } from "child_process";
92
+ async function handler7(_args) {
93
+ return new Promise((resolve, reject) => {
94
+ const child = spawn7("happy", ["codex"], { stdio: "inherit", shell: true });
95
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
96
+ child.on("error", reject);
97
+ });
98
+ }
99
+ var commandDef7 = { name: "codex", description: "\u542F\u52A8 Happy + Codex", handler: handler7, examples: ["jc happy codex"] };
100
+
101
+ // src/groups/happy/resume.ts
102
+ import { spawn as spawn8 } from "child_process";
103
+ async function handler8(args) {
104
+ return new Promise((resolve, reject) => {
105
+ const child = spawn8("happy", ["resume", ...args], { stdio: "inherit", shell: true });
106
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
107
+ child.on("error", reject);
108
+ });
109
+ }
110
+ var commandDef8 = { name: "resume", description: "\u6062\u590D Happy \u4F1A\u8BDD", handler: handler8, examples: ["jc happy resume <session-id>"] };
111
+
112
+ // src/groups/happy/daemon.ts
113
+ import { spawn as spawn9 } from "child_process";
114
+ async function handler9(_args) {
115
+ return new Promise((resolve, reject) => {
116
+ const child = spawn9("happy", ["daemon"], { stdio: "inherit", shell: true });
117
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
118
+ child.on("error", reject);
119
+ });
120
+ }
121
+ var commandDef9 = { name: "daemon", description: "\u542F\u52A8 Happy \u5B88\u62A4\u8FDB\u7A0B", handler: handler9, examples: ["jc happy daemon"] };
122
+
123
+ // src/groups/happy/doctor.ts
124
+ import { spawn as spawn10 } from "child_process";
125
+ async function handler10(_args) {
126
+ return new Promise((resolve, reject) => {
127
+ const child = spawn10("happy", ["doctor"], { stdio: "inherit", shell: true });
128
+ child.on("close", (c) => c === 0 ? resolve() : reject(new Error(`exit ${c}`)));
129
+ child.on("error", reject);
130
+ });
131
+ }
132
+ var commandDef10 = { name: "doctor", description: "Happy \u8BCA\u65AD\u68C0\u67E5", handler: handler10, examples: ["jc happy doctor"] };
133
+
134
+ // src/groups/happy/stop.ts
135
+ import { execSync } from "child_process";
136
+ async function handler11(_args) {
137
+ if (process.platform === "win32") {
138
+ execSync(`powershell -NoProfile "Get-CimInstance Win32_Process -Filter \\"Name='node.exe'\\" | Where-Object { $_.CommandLine -match 'happy' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }"`);
139
+ } else {
140
+ execSync('pkill -f "happy"', { stdio: "ignore" });
141
+ }
142
+ console.log("Happy \u8FDB\u7A0B\u5DF2\u505C\u6B62");
143
+ }
144
+ var commandDef11 = { name: "x", description: "\u505C\u6B62\u6240\u6709 Happy \u8FDB\u7A0B", handler: handler11, examples: ["jc happy x"] };
145
+
146
+ // src/groups/happy/index.ts
147
+ var happyGroup = {
148
+ name: "happy",
149
+ alias: "hy",
150
+ description: "Happy mobile Claude \u5305\u88C5",
151
+ commands: [commandDef5, commandDef6, commandDef7, commandDef8, commandDef9, commandDef10, commandDef11],
152
+ defaultHandler: commandDef5.handler
153
+ };
154
+
155
+ // src/cli/output.ts
156
+ import chalk from "chalk";
157
+ var jc = chalk.red("jc");
158
+ var groupName = chalk.yellow;
159
+ var subCmd = chalk.blue;
160
+ var error = chalk.red;
161
+ var warning = chalk.yellow;
162
+ var success = chalk.green;
163
+ function padEnd(s, n) {
164
+ return s + " ".repeat(Math.max(0, n - s.length));
165
+ }
166
+ function printHeader(title) {
167
+ console.log(`===== ${chalk.yellow(title)} =====`);
168
+ }
169
+ function printCommands(commands) {
170
+ for (const cmd of commands) {
171
+ console.log(
172
+ ` ${chalk.red("jc")} ${chalk.yellow(padEnd(cmd.name, 14))} ${cmd.description}`
173
+ );
174
+ }
175
+ }
176
+ function printCommandHelp(cmd, group, category) {
177
+ const tag = category ? ` [${category}]` : "";
178
+ console.log(`${chalk.yellow(`[jc ${group} ${cmd.name}]`)} ${cmd.description} ${chalk.blue(tag)}`);
179
+ console.log();
180
+ if (cmd.helpText) {
181
+ console.log(` ${cmd.helpText}`);
182
+ console.log();
183
+ }
184
+ if (cmd.examples && cmd.examples.length > 0) {
185
+ console.log(` ${chalk.red("\u793A\u4F8B")}:`);
186
+ for (const ex of cmd.examples) {
187
+ console.log(` ${ex}`);
188
+ }
189
+ console.log();
190
+ }
191
+ if (cmd.related && cmd.related.length > 0) {
192
+ console.log(` ${chalk.red("\u76F8\u5173")}: ${cmd.related.join(" / ")}`);
193
+ }
194
+ }
195
+ function printGroupHelp(group) {
196
+ console.log();
197
+ printHeader(group.name);
198
+ console.log(` ${group.description}`);
199
+ console.log();
200
+ printCommands(group.commands);
201
+ if (group.categories) {
202
+ for (const cat of group.categories) {
203
+ console.log();
204
+ console.log(` ${chalk.blue(`[${cat.name}]`)} \u2014 ${cat.description}`);
205
+ printCommands(cat.commands);
206
+ }
207
+ }
208
+ console.log();
209
+ console.log(`\u7528\u6CD5: jc ${chalk.yellow(group.name)} ${chalk.blue("<\u547D\u4EE4>")} [\u53C2\u6570...]`);
210
+ }
211
+ function printCategoryHelp(cat) {
212
+ console.log();
213
+ printHeader(cat.name);
214
+ console.log(` ${cat.description}`);
215
+ console.log();
216
+ printCommands(cat.commands);
217
+ console.log();
218
+ }
219
+
220
+ // src/groups/w/proc/port.ts
221
+ async function handler12(args) {
222
+ const pm = getProcessManager();
223
+ if (args.length === 0) {
224
+ const ports = await pm.getListeningPorts();
225
+ console.log("\u76D1\u542C\u7AEF\u53E3\u5217\u8868:");
226
+ if (ports.length === 0) {
227
+ console.log("\u65E0\u76D1\u542C\u7684\u7AEF\u53E3");
228
+ return;
229
+ }
230
+ console.table(ports.map((p) => ({ PID: p.pid, Port: p.port, State: p.state })));
231
+ return;
232
+ }
233
+ const port = parseInt(args[0], 10);
234
+ if (isNaN(port)) {
235
+ console.error(error("\u274C \u7AEF\u53E3\u53F7\u5FC5\u987B\u662F\u6570\u5B57"));
236
+ process.exit(1);
237
+ }
238
+ const procs = await pm.getProcessByPort(port);
239
+ if (procs.length === 0) {
240
+ console.log(`\u7AEF\u53E3 ${port} \u65E0\u8FDB\u7A0B\u5360\u7528`);
241
+ return;
242
+ }
243
+ console.table(procs.map((p) => ({ PID: p.pid, \u8FDB\u7A0B\u540D: p.name, CPU: `${p.cpu}%`, \u5185\u5B58: `${p.memory}MB` })));
244
+ }
245
+ var commandDef12 = {
246
+ name: "p",
247
+ description: "\u67E5\u7AEF\u53E3\u5360\u7528\u7684\u8FDB\u7A0B",
248
+ handler: handler12,
249
+ helpText: "\u7528\u6CD5:\n jc w p [\u65E0\u53C2] - \u5217\u6240\u6709\u76D1\u542C\u7AEF\u53E3\n jc w p <PORT> - \u67E5\u6307\u5B9A\u7AEF\u53E3",
250
+ examples: ["jc w p", "jc w p 3306"],
251
+ related: ["jc w pk", "jc w k", "jc w portscan"]
252
+ };
253
+
254
+ // src/groups/w/proc/portkill.ts
255
+ async function handler13(args) {
256
+ if (args.length === 0 || args[0] === "--help" || args[0] === "?") {
257
+ console.log(`\u7528\u6CD5: jc w pk <PORT> [--soft|--list]`);
258
+ return;
259
+ }
260
+ const port = parseInt(args[0], 10);
261
+ if (isNaN(port)) {
262
+ console.error(error("\u274C \u7AEF\u53E3\u53F7\u5FC5\u987B\u662F\u6570\u5B57"));
263
+ process.exit(1);
264
+ }
265
+ const pm = getProcessManager();
266
+ const procs = await pm.getProcessByPort(port);
267
+ if (procs.length === 0) {
268
+ console.log(`\u7AEF\u53E3 ${port} \u65E0\u8FDB\u7A0B\u5360\u7528`);
269
+ return;
270
+ }
271
+ const isListOnly = args.includes("--list");
272
+ const isSoft = args.includes("--soft");
273
+ console.log(`\u7AEF\u53E3 ${port} \u88AB\u4EE5\u4E0B\u8FDB\u7A0B\u5360\u7528:`);
274
+ procs.forEach((p) => console.log(` PID: ${p.pid}, \u540D\u79F0: ${p.name}`));
275
+ if (isListOnly) return;
276
+ for (const p of procs) {
277
+ try {
278
+ if (isSoft) {
279
+ process.kill(p.pid, "SIGTERM");
280
+ } else {
281
+ process.kill(p.pid, "SIGKILL");
282
+ }
283
+ console.log(`\u2705 PID ${p.pid} (${p.name}) \u5DF2\u7EC8\u6B62`);
284
+ } catch (e) {
285
+ console.error(warning(`\u26A0\uFE0F PID ${p.pid} \u7EC8\u6B62\u5931\u8D25: ${e.message}`));
286
+ }
287
+ }
288
+ }
289
+ var commandDef13 = {
290
+ name: "pk",
291
+ description: "\u4E00\u952E\u67E5\u5E76\u6740\u7AEF\u53E3\u8FDB\u7A0B",
292
+ handler: handler13,
293
+ helpText: "\u7528\u6CD5:\n jc w pk <PORT> - \u5F3A\u5236\u6740\n jc w pk <PORT> --list - \u53EA\u67E5\u4E0D\u6740\n jc w pk <PORT> --soft - \u4F18\u96C5\u7EC8\u6B62",
294
+ examples: ["jc w pk 8080", "jc w pk 3000 --list"],
295
+ related: ["jc w p", "jc w k", "jc w kn"]
296
+ };
297
+
298
+ // src/groups/w/proc/kill.ts
299
+ async function handler14(args) {
300
+ if (args.length === 0) {
301
+ console.error(error("\u274C \u8BF7\u6307\u5B9A PID"));
302
+ process.exit(1);
303
+ }
304
+ const pid = parseInt(args[0], 10);
305
+ if (isNaN(pid)) {
306
+ console.error(error("\u274C PID \u5FC5\u987B\u662F\u6570\u5B57"));
307
+ process.exit(1);
308
+ }
309
+ try {
310
+ await getProcessManager().killProcess(pid);
311
+ console.log(`\u2705 PID ${pid} \u5DF2\u7EC8\u6B62`);
312
+ } catch (e) {
313
+ console.error(error(`\u274C \u7EC8\u6B62\u5931\u8D25: ${e.message}`));
314
+ process.exit(2);
315
+ }
316
+ }
317
+ var commandDef14 = {
318
+ name: "k",
319
+ description: "\u6309 PID \u6740\u8FDB\u7A0B",
320
+ handler: handler14,
321
+ helpText: "\u7528\u6CD5:\n jc w k <PID> - \u5F3A\u5236\u7ED3\u675F\u6307\u5B9A PID",
322
+ examples: ["jc w k 1234"],
323
+ related: ["jc w p", "jc w pk", "jc w kn", "jc w ps"]
324
+ };
325
+
326
+ // src/groups/w/proc/killname.ts
327
+ async function handler15(args) {
328
+ if (args.length === 0) {
329
+ console.error(error("\u274C \u8BF7\u6307\u5B9A\u8FDB\u7A0B\u540D"));
330
+ process.exit(1);
331
+ }
332
+ const name = args[0];
333
+ const pm = getProcessManager();
334
+ const procs = await pm.getProcessByName(name);
335
+ if (procs.length === 0) {
336
+ console.log(`\u672A\u627E\u5230\u8FDB\u7A0B: ${name}`);
337
+ return;
338
+ }
339
+ for (const p of procs) {
340
+ try {
341
+ await pm.killProcess(p.pid);
342
+ console.log(`\u2705 ${p.name} (PID: ${p.pid}) \u5DF2\u7EC8\u6B62`);
343
+ } catch (e) {
344
+ console.error(warning(`\u26A0\uFE0F ${p.name} (PID: ${p.pid}) \u7EC8\u6B62\u5931\u8D25: ${e.message}`));
345
+ }
346
+ }
347
+ }
348
+ var commandDef15 = {
349
+ name: "kn",
350
+ description: "\u6309\u8FDB\u7A0B\u540D\u6740\u8FDB\u7A0B",
351
+ handler: handler15,
352
+ helpText: "\u7528\u6CD5:\n jc w kn <NAME> - \u5982 chrome / node",
353
+ examples: ["jc w kn chrome", "jc w kn node"],
354
+ related: ["jc w k", "jc w ps", "jc w p"]
355
+ };
356
+
357
+ // src/groups/w/proc/ps.ts
358
+ async function handler16(args) {
359
+ const pm = getProcessManager();
360
+ const filter = args.length > 0 ? args[0] : void 0;
361
+ const procs = await pm.listProcesses(filter);
362
+ if (procs.length === 0) {
363
+ console.log(filter ? `\u672A\u627E\u5230\u5339\u914D\u8FDB\u7A0B: ${filter}` : "\u65E0\u8FDB\u7A0B");
364
+ return;
365
+ }
366
+ console.table(procs.slice(0, 50).map((p) => ({
367
+ PID: p.pid,
368
+ \u540D\u79F0: p.name,
369
+ CPU: `${p.cpu}%`,
370
+ \u5185\u5B58: `${p.memory}MB`,
371
+ \u72B6\u6001: p.state || ""
372
+ })));
373
+ if (procs.length > 50) {
374
+ console.log(`... \u8FD8\u6709 ${procs.length - 50} \u4E2A\u8FDB\u7A0B`);
375
+ }
376
+ }
377
+ var commandDef16 = {
378
+ name: "ps",
379
+ description: "\u67E5\u8FDB\u7A0B",
380
+ handler: handler16,
381
+ helpText: "\u7528\u6CD5:\n jc w ps [\u65E0\u53C2] - \u5217\u51FA\u5168\u90E8\u8FDB\u7A0B\n jc w ps <NAME> - \u6309\u8FDB\u7A0B\u540D\u8FC7\u6EE4",
382
+ examples: ["jc w ps", "jc w ps chrome"],
383
+ related: ["jc w p", "jc w k", "jc w kn", "jc w top"]
384
+ };
385
+
386
+ // src/groups/w/proc/top.ts
387
+ async function handler17(args) {
388
+ const pm = getProcessManager();
389
+ const limit = parseInt(args[0], 10) || 20;
390
+ const procs = await pm.getTopProcesses("cpu", limit);
391
+ console.table(procs.map((p) => ({
392
+ PID: p.pid,
393
+ \u540D\u79F0: p.name,
394
+ CPU: `${p.cpu}%`,
395
+ \u5185\u5B58: `${p.memory}MB`
396
+ })));
397
+ }
398
+ var commandDef17 = {
399
+ name: "top",
400
+ description: "CPU \u5360\u7528 Top20",
401
+ handler: handler17,
402
+ helpText: "\u7528\u6CD5:\n jc w top [N] - CPU \u964D\u5E8F\u524D N (\u9ED8\u8BA4 20)",
403
+ examples: ["jc w top"],
404
+ related: ["jc w mem", "jc w ps", "jc w psg"]
405
+ };
406
+
407
+ // src/groups/w/proc/mem.ts
408
+ async function handler18(args) {
409
+ const { getProcessManager: getProcessManager2 } = await import("./adapter-DN3PLEN3.js");
410
+ const pm = getProcessManager2();
411
+ const limit = parseInt(args[0], 10) || 20;
412
+ const procs = await pm.getTopProcesses("memory", limit);
413
+ console.table(procs.map((p) => ({
414
+ PID: p.pid,
415
+ \u540D\u79F0: p.name,
416
+ \u5185\u5B58: `${p.memory}MB`,
417
+ CPU: `${p.cpu}%`
418
+ })));
419
+ }
420
+ var commandDef18 = {
421
+ name: "mem",
422
+ description: "\u5185\u5B58\u5360\u7528 Top20 (MB)",
423
+ handler: handler18,
424
+ helpText: "\u7528\u6CD5:\n jc w mem [N] - \u5185\u5B58\u964D\u5E8F\u524D N (\u9ED8\u8BA4 20)",
425
+ examples: ["jc w mem"],
426
+ related: ["jc w top", "jc w ps", "jc w psg"]
427
+ };
428
+
429
+ // src/groups/w/proc/psg.ts
430
+ async function handler19(_args) {
431
+ const pm = getProcessManager();
432
+ const stats = await pm.getProcessStats();
433
+ console.log(`\u8FDB\u7A0B\u603B\u6570: ${stats.total}`);
434
+ console.log(`\u8FD0\u884C\u4E2D: ${stats.running}`);
435
+ console.log(`CPU \u5360\u7528: ${stats.cpuPercent}%`);
436
+ console.log(`\u5185\u5B58\u5360\u7528: ${stats.memoryGB}GB`);
437
+ }
438
+ var commandDef19 = {
439
+ name: "psg",
440
+ description: "\u8FDB\u7A0B\u7EDF\u8BA1\u6982\u89C8",
441
+ handler: handler19,
442
+ helpText: "\u7528\u6CD5:\n jc w psg [\u65E0\u53C2] - \u8FDB\u7A0B\u7EDF\u8BA1\u6982\u89C8",
443
+ examples: ["jc w psg"],
444
+ related: ["jc w ps", "jc w top", "jc w mem"]
445
+ };
446
+
447
+ // src/groups/w/sys/sysinfo.ts
448
+ async function handler20(_args) {
449
+ const [os2, cpu, mem, disks, gpus] = await Promise.all([
450
+ getOsManager().getInfo(),
451
+ getCpuManager().getInfo(),
452
+ getMemoryManager().getInfo(),
453
+ getDiskManager().getInfo(),
454
+ getGpuManager().getInfo()
455
+ ]);
456
+ console.log(`\u4E3B\u673A\u540D: ${os2.hostname}`);
457
+ console.log(`\u64CD\u4F5C\u7CFB\u7EDF: ${os2.platform} ${os2.distro} ${os2.release}`);
458
+ console.log(`\u5185\u6838: ${os2.kernel}`);
459
+ console.log(`CPU: ${cpu.brand} (${cpu.physicalCores}\u7269\u7406\u6838 / ${cpu.logicalCores}\u903B\u8F91\u6838)`);
460
+ console.log(`CPU \u8D1F\u8F7D: ${cpu.loadPercent}%`);
461
+ console.log(`\u5185\u5B58: ${mem.totalGB}GB (\u5DF2\u7528 ${mem.usedGB}GB, \u5269\u4F59 ${mem.freeGB}GB)`);
462
+ console.log(`\u8FD0\u884C\u65F6\u957F: ${await getOsManager().getUptime()}`);
463
+ console.log(`BIOS: ${os2.biosVendor} ${os2.biosVersion} (${os2.biosDate})`);
464
+ if (disks.length > 0) {
465
+ const d = disks[0];
466
+ console.log(`\u7CFB\u7EDF\u76D8: ${d.drive} ${d.usedGB}GB/${d.sizeGB}GB (${d.percentUsed}%)`);
467
+ }
468
+ if (gpus.length > 0) {
469
+ console.log(`GPU: ${gpus[0].model} (${gpus[0].vramGB}GB)`);
470
+ }
471
+ }
472
+ var commandDef20 = {
473
+ name: "sysinfo",
474
+ description: "\u7CFB\u7EDF\u8BE6\u7EC6\u4FE1\u606F",
475
+ handler: handler20,
476
+ helpText: "\u7528\u6CD5:\n jc w sysinfo - \u663E\u793A\u7CFB\u7EDF\u5B8C\u6574\u4FE1\u606F",
477
+ examples: ["jc w sysinfo"],
478
+ related: ["jc w host", "jc w cpu", "jc w meminfo", "jc w disk"]
479
+ };
480
+
481
+ // src/groups/w/sys/host.ts
482
+ async function handler21(_args) {
483
+ console.log(await getOsManager().getHostname());
484
+ }
485
+ var commandDef21 = {
486
+ name: "host",
487
+ description: "\u672C\u673A\u4E3B\u673A\u540D",
488
+ handler: handler21,
489
+ examples: ["jc w host"],
490
+ related: ["jc w ip", "jc w sysinfo"]
491
+ };
492
+
493
+ // src/groups/w/sys/uptime.ts
494
+ async function handler22(_args) {
495
+ console.log(await getOsManager().getUptime());
496
+ }
497
+ var commandDef22 = {
498
+ name: "uptime",
499
+ description: "\u7CFB\u7EDF\u8FD0\u884C\u65F6\u957F",
500
+ handler: handler22,
501
+ examples: ["jc w uptime"],
502
+ related: ["jc w host", "jc w sysinfo"]
503
+ };
504
+
505
+ // src/groups/w/sys/cpu.ts
506
+ async function handler23(_args) {
507
+ const cpu = await getCpuManager().getInfo();
508
+ console.log(`\u578B\u53F7: ${cpu.manufacturer} ${cpu.brand}`);
509
+ console.log(`\u7269\u7406\u6838: ${cpu.physicalCores}`);
510
+ console.log(`\u903B\u8F91\u6838: ${cpu.logicalCores}`);
511
+ console.log(`\u4E3B\u9891: ${cpu.speedGHz}GHz`);
512
+ console.log(`\u5F53\u524D\u8D1F\u8F7D: ${cpu.loadPercent}%`);
513
+ }
514
+ var commandDef23 = {
515
+ name: "cpu",
516
+ description: "CPU \u4FE1\u606F",
517
+ handler: handler23,
518
+ examples: ["jc w cpu"],
519
+ related: ["jc w meminfo", "jc w gpu", "jc w sysinfo"]
520
+ };
521
+
522
+ // src/groups/w/sys/meminfo.ts
523
+ async function handler24(_args) {
524
+ const mem = await getMemoryManager().getInfo();
525
+ console.log(`\u603B\u8BA1: ${mem.totalGB}GB`);
526
+ console.log(`\u5DF2\u7528: ${mem.usedGB}GB (${mem.percentUsed}%)`);
527
+ console.log(`\u5269\u4F59: ${mem.freeGB}GB`);
528
+ if (mem.swapTotalGB > 0) {
529
+ console.log(`\u4EA4\u6362: ${mem.swapUsedGB}GB / ${mem.swapTotalGB}GB`);
530
+ }
531
+ }
532
+ var commandDef24 = {
533
+ name: "meminfo",
534
+ description: "\u5185\u5B58\u4FE1\u606F",
535
+ handler: handler24,
536
+ examples: ["jc w meminfo"],
537
+ related: ["jc w cpu", "jc w disk", "jc w sysinfo"]
538
+ };
539
+
540
+ // src/groups/w/sys/disk.ts
541
+ async function handler25(_args) {
542
+ const disks = await getDiskManager().getInfo();
543
+ if (disks.length === 0) {
544
+ console.log("\u672A\u627E\u5230\u78C1\u76D8\u5377");
545
+ return;
546
+ }
547
+ for (const d of disks) {
548
+ console.log(`\u5377: ${d.drive}`);
549
+ console.log(` \u603B\u8BA1: ${d.sizeGB}GB`);
550
+ console.log(` \u5DF2\u7528: ${d.usedGB}GB (${d.percentUsed}%)`);
551
+ console.log(` \u5269\u4F59: ${d.freeGB}GB`);
552
+ console.log(` \u6587\u4EF6\u7CFB\u7EDF: ${d.filesystem}`);
553
+ console.log("");
554
+ }
555
+ }
556
+ var commandDef25 = {
557
+ name: "disk",
558
+ description: "\u78C1\u76D8\u5377\u4FE1\u606F (Get-Volume \u98CE\u683C)",
559
+ handler: handler25,
560
+ examples: ["jc w disk"],
561
+ related: ["jc w diskfull", "jc w sysinfo"]
562
+ };
563
+
564
+ // src/groups/w/sys/diskfull.ts
565
+ async function handler26(_args) {
566
+ const disks = await getDiskManager().getFullInfo();
567
+ if (disks.length === 0) {
568
+ console.log("\u672A\u627E\u5230\u78C1\u76D8");
569
+ return;
570
+ }
571
+ console.log("\u6240\u6709\u78C1\u76D8\u4FE1\u606F (Get-PSDrive \u98CE\u683C):");
572
+ for (const d of disks) {
573
+ console.log(`${d.drive}`);
574
+ console.log(` \u5DF2\u7528: ${d.usedGB}GB / ${d.sizeGB}GB (${d.percentUsed}%)`);
575
+ console.log(` \u5269\u4F59: ${d.freeGB}GB`);
576
+ console.log(` \u6587\u4EF6\u7CFB\u7EDF: ${d.filesystem}`);
577
+ console.log("");
578
+ }
579
+ }
580
+ var commandDef26 = {
581
+ name: "diskfull",
582
+ description: "\u5B8C\u6574\u78C1\u76D8\u4FE1\u606F (Get-PSDrive \u98CE\u683C)",
583
+ handler: handler26,
584
+ examples: ["jc w diskfull"],
585
+ related: ["jc w disk", "jc w sysinfo"]
586
+ };
587
+
588
+ // src/groups/w/sys/gpu.ts
589
+ async function handler27(_args) {
590
+ const gpus = await getGpuManager().getInfo();
591
+ if (gpus.length === 0) {
592
+ console.log("\u672A\u68C0\u6D4B\u5230 GPU");
593
+ return;
594
+ }
595
+ for (let i = 0; i < gpus.length; i++) {
596
+ const g = gpus[i];
597
+ console.log(`GPU #${i + 1}`);
598
+ console.log(` \u578B\u53F7: ${g.model}`);
599
+ console.log(` \u9A71\u52A8: ${g.driverVersion || "(\u672A\u77E5)"}`);
600
+ console.log(` \u663E\u5B58: ${g.vramGB}GB`);
601
+ console.log("");
602
+ }
603
+ }
604
+ var commandDef27 = {
605
+ name: "gpu",
606
+ description: "GPU \u4FE1\u606F",
607
+ handler: handler27,
608
+ examples: ["jc w gpu"],
609
+ related: ["jc w cpu", "jc w sysinfo"]
610
+ };
611
+
612
+ // src/groups/w/sys/bios.ts
613
+ async function handler28(_args) {
614
+ const os2 = await getOsManager().getInfo();
615
+ console.log(`BIOS \u5382\u5546: ${os2.biosVendor || "(\u672A\u77E5)"}`);
616
+ console.log(`BIOS \u7248\u672C: ${os2.biosVersion || "(\u672A\u77E5)"}`);
617
+ console.log(`BIOS \u65E5\u671F: ${os2.biosDate || "(\u672A\u77E5)"}`);
618
+ }
619
+ var commandDef28 = {
620
+ name: "bios",
621
+ description: "BIOS \u4FE1\u606F",
622
+ handler: handler28,
623
+ examples: ["jc w bios"],
624
+ related: ["jc w sysinfo"]
625
+ };
626
+
627
+ // src/groups/w/sys/bat.ts
628
+ import si from "systeminformation";
629
+ async function handler29(_args) {
630
+ try {
631
+ const bat = await si.battery();
632
+ if (!bat.hasBattery) {
633
+ console.log("\u672A\u68C0\u6D4B\u5230\u7535\u6C60");
634
+ return;
635
+ }
636
+ console.log(`\u7535\u91CF: ${bat.percent}%`);
637
+ console.log(`\u72B6\u6001: ${bat.acConnected ? "\u7535\u6E90\u9002\u914D\u5668" : "\u4F7F\u7528\u7535\u6C60"}`);
638
+ if (bat.isCharging) console.log(`\u5145\u7535\u4E2D: ${bat.percent}%`);
639
+ if (bat.timeRemaining > 0) {
640
+ const m = Math.floor(bat.timeRemaining / 60);
641
+ console.log(`\u5269\u4F59\u65F6\u95F4: ${m} \u5206\u949F`);
642
+ }
643
+ if (bat.maxCapacity) console.log(`\u8BBE\u8BA1\u5BB9\u91CF: ${(bat.maxCapacity / 1e3).toFixed(1)}Wh`);
644
+ if (bat.currentCapacity) console.log(`\u5F53\u524D\u5BB9\u91CF: ${(bat.currentCapacity / 1e3).toFixed(1)}Wh`);
645
+ } catch {
646
+ console.error("\u65E0\u6CD5\u83B7\u53D6\u7535\u6C60\u4FE1\u606F\uFF08\u53EF\u80FD\u65E0\u7535\u6C60\u8BBE\u5907\uFF09");
647
+ }
648
+ }
649
+ var commandDef29 = {
650
+ name: "bat",
651
+ description: "\u7535\u6C60\u72B6\u6001",
652
+ handler: handler29,
653
+ examples: ["jc w bat"],
654
+ related: ["jc w sysinfo", "jc w powercfg"]
655
+ };
656
+
657
+ // src/groups/w/sys/mon.ts
658
+ import si2 from "systeminformation";
659
+ async function handler30(_args) {
660
+ try {
661
+ const graphics = await si2.graphics();
662
+ const displays = graphics.displays || [];
663
+ if (displays.length === 0) {
664
+ console.log("\u672A\u68C0\u6D4B\u5230\u663E\u793A\u5668");
665
+ return;
666
+ }
667
+ for (let i = 0; i < displays.length; i++) {
668
+ const d = displays[i];
669
+ console.log(`\u663E\u793A\u5668 #${i + 1}`);
670
+ console.log(` \u578B\u53F7: ${d.model || "(\u672A\u77E5)"}`);
671
+ if (d.main) console.log(" \u4E3B\u663E\u793A\u5668: \u662F");
672
+ console.log(` \u5206\u8FA8\u7387: ${d.resolutionX}x${d.resolutionY}`);
673
+ if (d.currentResX && d.currentResY) console.log(` \u5F53\u524D: ${d.currentResX}x${d.currentResY}`);
674
+ if (d.pixelDepth) console.log(` \u4F4D\u6DF1: ${d.pixelDepth}bit`);
675
+ if (d.sizeX && d.sizeY) console.log(` \u5C3A\u5BF8: ${(d.sizeX / 25.4).toFixed(1)}" (${d.sizeX}x${d.sizeY}mm)`);
676
+ console.log("");
677
+ }
678
+ } catch {
679
+ console.error("\u65E0\u6CD5\u83B7\u53D6\u663E\u793A\u5668\u4FE1\u606F");
680
+ }
681
+ }
682
+ var commandDef30 = {
683
+ name: "mon",
684
+ description: "\u663E\u793A\u5668\u4FE1\u606F",
685
+ handler: handler30,
686
+ examples: ["jc w mon"],
687
+ related: ["jc w gpu", "jc w sysinfo"]
688
+ };
689
+
690
+ // src/groups/w/sys/powercfg.ts
691
+ import { execSync as execSync2 } from "child_process";
692
+ async function handler31(_args) {
693
+ if (process.platform !== "win32") {
694
+ console.log("powercfg \u4EC5\u652F\u6301 Windows");
695
+ return;
696
+ }
697
+ console.log("\u6B63\u5728\u751F\u6210\u7535\u6E90\u65B9\u6848\u62A5\u544A...\n");
698
+ try {
699
+ const schemes = execSync2("powercfg /list", { encoding: "utf8" });
700
+ console.log("\u7535\u6E90\u65B9\u6848:");
701
+ console.log(schemes);
702
+ const query = execSync2("powercfg /query", { encoding: "utf8", timeout: 15e3 });
703
+ console.log("\u7535\u6E90\u65B9\u6848\u8BE6\u7EC6\u8BBE\u7F6E:");
704
+ console.log(query);
705
+ } catch (e) {
706
+ console.error(error(`\u7535\u6E90\u62A5\u544A\u751F\u6210\u5931\u8D25: ${e.message}`));
707
+ }
708
+ }
709
+ var commandDef31 = {
710
+ name: "powercfg",
711
+ description: "\u7535\u6E90\u65B9\u6848\u4FE1\u606F",
712
+ handler: handler31,
713
+ examples: ["jc w powercfg"],
714
+ related: ["jc w bat", "jc w sysinfo"]
715
+ };
716
+
717
+ // src/groups/w/net/ip.ts
718
+ async function handler32(_args) {
719
+ const net2 = await getNetworkManager().getNetworkInfo();
720
+ console.log(`\u4E3B\u673A\u540D: ${net2.hostname}`);
721
+ if (net2.defaultGateway) console.log(`\u9ED8\u8BA4\u7F51\u5173: ${net2.defaultGateway}`);
722
+ console.log("");
723
+ for (const iface of net2.interfaces) {
724
+ console.log(`${iface.name} [${iface.type}]`);
725
+ console.log(` IPv4: ${iface.ip4 || "-"}`);
726
+ console.log(` IPv6: ${iface.ip6 || "-"}`);
727
+ console.log(` MAC: ${iface.mac || "-"}`);
728
+ console.log("");
729
+ }
730
+ }
731
+ var commandDef32 = {
732
+ name: "ip",
733
+ description: "\u7F51\u7EDC\u63A5\u53E3\u4FE1\u606F (IP/MAC)",
734
+ handler: handler32,
735
+ examples: ["jc w ip"],
736
+ related: ["jc w ip4", "jc w mac", "jc w wifi"]
737
+ };
738
+
739
+ // src/groups/w/net/ip4.ts
740
+ async function handler33(_args) {
741
+ const net2 = await getNetworkManager().getNetworkInfo();
742
+ for (const iface of net2.interfaces) {
743
+ if (iface.ip4) {
744
+ console.log(`${iface.name}: ${iface.ip4}`);
745
+ }
746
+ }
747
+ }
748
+ var commandDef33 = {
749
+ name: "ip4",
750
+ description: "IPv4 \u5730\u5740",
751
+ handler: handler33,
752
+ examples: ["jc w ip4"],
753
+ related: ["jc w ip", "jc w mac"]
754
+ };
755
+
756
+ // src/groups/w/net/dns.ts
757
+ async function handler34(_args) {
758
+ try {
759
+ await getNetworkManager().flushDns();
760
+ console.log("DNS \u7F13\u5B58\u5DF2\u5237\u65B0");
761
+ } catch (e) {
762
+ console.error(`DNS \u5237\u65B0\u5931\u8D25: ${e.message}`);
763
+ }
764
+ }
765
+ var commandDef34 = {
766
+ name: "dns",
767
+ description: "\u5237\u65B0 DNS \u7F13\u5B58",
768
+ handler: handler34,
769
+ examples: ["jc w dns"],
770
+ related: ["jc w ns", "jc w proxy"]
771
+ };
772
+
773
+ // src/groups/w/net/ns.ts
774
+ import { execSync as execSync3 } from "child_process";
775
+ async function handler35(args) {
776
+ const host = args[0];
777
+ if (!host) {
778
+ console.log("\u7528\u6CD5: jc w ns <hostname>");
779
+ return;
780
+ }
781
+ try {
782
+ const output = execSync3(`nslookup ${host}`, { encoding: "utf8", timeout: 1e4 });
783
+ console.log(output);
784
+ } catch (e) {
785
+ console.error(`DNS \u67E5\u8BE2\u5931\u8D25: ${e.message}`);
786
+ }
787
+ }
788
+ var commandDef35 = {
789
+ name: "ns",
790
+ description: "DNS \u67E5\u8BE2 (nslookup)",
791
+ handler: handler35,
792
+ examples: ["jc w ns google.com"],
793
+ related: ["jc w dns", "jc w ping"]
794
+ };
795
+
796
+ // src/groups/w/net/ping.ts
797
+ async function handler36(args) {
798
+ const host = args[0] || "127.0.0.1";
799
+ console.log(`Pinging ${host}...`);
800
+ const result = await getNetworkManager().ping(host);
801
+ if (result.alive) {
802
+ console.log(`\u54CD\u5E94: ${result.time}ms`);
803
+ } else {
804
+ console.log("\u8D85\u65F6\u6216\u65E0\u54CD\u5E94");
805
+ }
806
+ }
807
+ var commandDef36 = {
808
+ name: "ping",
809
+ description: "Ping \u4E3B\u673A",
810
+ handler: handler36,
811
+ examples: ["jc w ping google.com", "jc w ping 8.8.8.8"],
812
+ related: ["jc w ns", "jc w trace"]
813
+ };
814
+
815
+ // src/groups/w/net/trace.ts
816
+ async function handler37(args) {
817
+ const host = args[0];
818
+ if (!host) {
819
+ console.log("\u7528\u6CD5: jc w trace <host>");
820
+ return;
821
+ }
822
+ console.log(`\u8DEF\u7531\u8FFD\u8E2A\u5230 ${host}...`);
823
+ const hops = await getNetworkManager().traceRoute(host);
824
+ if (hops.length === 0) {
825
+ console.log("\u65E0\u54CD\u5E94");
826
+ return;
827
+ }
828
+ for (let i = 0; i < hops.length; i++) {
829
+ console.log(` ${i + 1}. ${hops[i]}`);
830
+ }
831
+ }
832
+ var commandDef37 = {
833
+ name: "trace",
834
+ description: "\u8DEF\u7531\u8FFD\u8E2A",
835
+ handler: handler37,
836
+ examples: ["jc w trace google.com"],
837
+ related: ["jc w ping", "jc w route"]
838
+ };
839
+
840
+ // src/groups/w/net/route.ts
841
+ import { execSync as execSync4 } from "child_process";
842
+ async function handler38(_args) {
843
+ try {
844
+ const cmd = process.platform === "win32" ? "route print" : "netstat -rn";
845
+ const output = execSync4(cmd, { encoding: "utf8" });
846
+ console.log(output);
847
+ } catch (e) {
848
+ console.error(`\u83B7\u53D6\u8DEF\u7531\u8868\u5931\u8D25: ${e.message}`);
849
+ }
850
+ }
851
+ var commandDef38 = {
852
+ name: "route",
853
+ description: "\u8DEF\u7531\u8868",
854
+ handler: handler38,
855
+ examples: ["jc w route"],
856
+ related: ["jc w trace", "jc w ip"]
857
+ };
858
+
859
+ // src/groups/w/net/conn.ts
860
+ async function handler39(_args) {
861
+ const conns = await getNetworkManager().getConnections();
862
+ if (conns.length === 0) {
863
+ console.log("\u65E0 TCP \u8FDE\u63A5");
864
+ return;
865
+ }
866
+ const listening = conns.filter((c) => c.state === "listen");
867
+ const established = conns.filter((c) => c.state === "established");
868
+ console.log(`TCP \u8FDE\u63A5\u603B\u6570: ${conns.length}`);
869
+ console.log(` \u76D1\u542C\u4E2D: ${listening.length}`);
870
+ console.log(` \u5DF2\u5EFA\u7ACB: ${established.length}`);
871
+ console.log("");
872
+ if (listening.length > 0) {
873
+ console.log("\u76D1\u542C\u7AEF\u53E3:");
874
+ for (const c of listening.slice(0, 20)) {
875
+ console.log(` :${c.localPort} (PID: ${c.pid})`);
876
+ }
877
+ if (listening.length > 20) console.log(` ... \u8FD8\u6709 ${listening.length - 20} \u4E2A`);
878
+ }
879
+ }
880
+ var commandDef39 = {
881
+ name: "conn",
882
+ description: "TCP \u8FDE\u63A5\u4FE1\u606F",
883
+ handler: handler39,
884
+ examples: ["jc w conn"],
885
+ related: ["jc w p", "jc w portscan"]
886
+ };
887
+
888
+ // src/groups/w/net/wifi.ts
889
+ async function handler40(_args) {
890
+ const networks = await getNetworkManager().getWiFiInfo();
891
+ if (networks.length === 0) {
892
+ console.log("\u672A\u8FDE\u63A5 WiFi \u6216\u65E0 WiFi \u9002\u914D\u5668");
893
+ return;
894
+ }
895
+ for (const n of networks) {
896
+ console.log(`SSID: ${n.ssid}`);
897
+ console.log(`\u4FE1\u53F7: ${n.signal}%`);
898
+ console.log(`\u9891\u7387: ${n.frequency}`);
899
+ console.log(`\u4FE1\u9053: ${n.channel}`);
900
+ console.log(`\u5B89\u5168\u7C7B\u578B: ${n.security}`);
901
+ console.log("");
902
+ }
903
+ }
904
+ var commandDef40 = {
905
+ name: "wifi",
906
+ description: "WiFi \u8FDE\u63A5\u4FE1\u606F",
907
+ handler: handler40,
908
+ examples: ["jc w wifi"],
909
+ related: ["jc w wifipwd", "jc w ip"]
910
+ };
911
+
912
+ // src/groups/w/net/wifipwd.ts
913
+ async function handler41(_args) {
914
+ try {
915
+ const profiles = await getNetworkManager().getWiFiPasswords();
916
+ if (profiles.length === 0) {
917
+ console.log("\u672A\u627E\u5230 WiFi \u914D\u7F6E\u6587\u4EF6");
918
+ return;
919
+ }
920
+ for (const p of profiles) {
921
+ console.log(`${p.ssid}: ${p.password}`);
922
+ }
923
+ } catch (e) {
924
+ console.error(`\u83B7\u53D6 WiFi \u5BC6\u7801\u5931\u8D25: ${e.message}`);
925
+ }
926
+ }
927
+ var commandDef41 = {
928
+ name: "wifipwd",
929
+ description: "WiFi \u5BC6\u7801 (\u4EC5 Windows)",
930
+ handler: handler41,
931
+ platform: "win32",
932
+ examples: ["jc w wifipwd"],
933
+ related: ["jc w wifi", "jc w wifiexp"]
934
+ };
935
+
936
+ // src/groups/w/net/wifiexp.ts
937
+ import { execSync as execSync5 } from "child_process";
938
+ async function handler42(_args) {
939
+ if (process.platform !== "win32") {
940
+ console.error(error("\u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows"));
941
+ return;
942
+ }
943
+ try {
944
+ const output = execSync5("netsh wlan export profile folder=. key=clear", { encoding: "utf8" });
945
+ console.log("WiFi \u914D\u7F6E\u6587\u4EF6\u5DF2\u5BFC\u51FA\u5230\u5F53\u524D\u76EE\u5F55");
946
+ console.log(output);
947
+ } catch (e) {
948
+ console.error(error(`\u5BFC\u51FA WiFi \u914D\u7F6E\u5931\u8D25: ${e.message}`));
949
+ }
950
+ }
951
+ var commandDef42 = {
952
+ name: "wifiexp",
953
+ description: "\u5BFC\u51FA WiFi \u914D\u7F6E (\u4EC5 Windows)",
954
+ handler: handler42,
955
+ platform: "win32",
956
+ examples: ["jc w wifiexp"],
957
+ related: ["jc w wifi", "jc w wifipwd"]
958
+ };
959
+
960
+ // src/groups/w/net/proxy.ts
961
+ async function handler43(_args) {
962
+ const proxy = await getNetworkManager().getProxySettings();
963
+ console.log(`\u4EE3\u7406\u72B6\u6001: ${proxy.enabled ? "\u5DF2\u542F\u7528" : "\u5DF2\u7981\u7528"}`);
964
+ console.log(`HTTP \u4EE3\u7406: ${proxy.httpProxy || "(\u65E0)"}`);
965
+ console.log(`HTTPS \u4EE3\u7406: ${proxy.httpsProxy || "(\u65E0)"}`);
966
+ }
967
+ var commandDef43 = {
968
+ name: "proxy",
969
+ description: "\u4EE3\u7406\u8BBE\u7F6E",
970
+ handler: handler43,
971
+ examples: ["jc w proxy"],
972
+ related: ["jc w dns", "jc w ip"]
973
+ };
974
+
975
+ // src/groups/w/net/portscan.ts
976
+ import net from "net";
977
+ async function checkPort(host, port, timeout = 3e3) {
978
+ return new Promise((resolve) => {
979
+ const socket = new net.Socket();
980
+ socket.setTimeout(timeout);
981
+ socket.on("connect", () => {
982
+ socket.destroy();
983
+ resolve(true);
984
+ });
985
+ socket.on("error", () => {
986
+ socket.destroy();
987
+ resolve(false);
988
+ });
989
+ socket.on("timeout", () => {
990
+ socket.destroy();
991
+ resolve(false);
992
+ });
993
+ socket.connect(port, host);
994
+ });
995
+ }
996
+ async function handler44(args) {
997
+ const host = args[0] || "127.0.0.1";
998
+ const portsArg = args[1] || "22,80,443,3306,5432,6379,8080,8443";
999
+ const ports = portsArg.split(",").map((p) => parseInt(p.trim(), 10)).filter((p) => !isNaN(p));
1000
+ console.log(`\u626B\u63CF ${host} \u7AEF\u53E3: ${ports.join(", ")}`);
1001
+ console.log("");
1002
+ for (const port of ports) {
1003
+ const open15 = await checkPort(host, port);
1004
+ console.log(` Port ${port}: ${open15 ? "\u5F00\u653E" : "\u5173\u95ED"}`);
1005
+ }
1006
+ }
1007
+ var commandDef44 = {
1008
+ name: "portscan",
1009
+ description: "\u7AEF\u53E3\u626B\u63CF",
1010
+ handler: handler44,
1011
+ examples: ["jc w portscan", "jc w portscan 192.168.1.1 22,80,443"],
1012
+ related: ["jc w p", "jc w conn"]
1013
+ };
1014
+
1015
+ // src/groups/w/net/mac.ts
1016
+ async function handler45(_args) {
1017
+ const macs = await getNetworkManager().getMacAddresses();
1018
+ if (macs.length === 0) {
1019
+ console.log("\u672A\u627E\u5230\u7F51\u7EDC\u63A5\u53E3");
1020
+ return;
1021
+ }
1022
+ for (const m of macs) {
1023
+ console.log(`${m.name}: ${m.mac || "-"}`);
1024
+ }
1025
+ }
1026
+ var commandDef45 = {
1027
+ name: "mac",
1028
+ description: "MAC \u5730\u5740",
1029
+ handler: handler45,
1030
+ examples: ["jc w mac"],
1031
+ related: ["jc w ip", "jc w ip4"]
1032
+ };
1033
+
1034
+ // src/groups/w/net/share.ts
1035
+ import { execSync as execSync6 } from "child_process";
1036
+ async function handler46(_args) {
1037
+ try {
1038
+ let output;
1039
+ if (process.platform === "win32") {
1040
+ output = execSync6("net share", { encoding: "utf8" });
1041
+ } else {
1042
+ output = execSync6("share", { encoding: "utf8" }).replace(/^.*\n/, "");
1043
+ }
1044
+ console.log(output);
1045
+ } catch (e) {
1046
+ console.error(`\u83B7\u53D6\u7F51\u7EDC\u5171\u4EAB\u5931\u8D25: ${e.message}`);
1047
+ }
1048
+ }
1049
+ var commandDef46 = {
1050
+ name: "share",
1051
+ description: "\u7F51\u7EDC\u5171\u4EAB",
1052
+ handler: handler46,
1053
+ examples: ["jc w share"],
1054
+ related: ["jc w ip", "jc w proxy"]
1055
+ };
1056
+
1057
+ // src/groups/w/file/ls.ts
1058
+ import fs from "fs";
1059
+ import path from "path";
1060
+ async function handler47(args) {
1061
+ const dir = args[0] || ".";
1062
+ try {
1063
+ const items = fs.readdirSync(dir, { withFileTypes: true });
1064
+ for (const item of items) {
1065
+ const fullPath = path.join(dir, item.name);
1066
+ let stat = null;
1067
+ try {
1068
+ stat = fs.statSync(fullPath);
1069
+ } catch {
1070
+ }
1071
+ if (item.isDirectory()) {
1072
+ console.log(`[DIR] ${item.name}${stat ? ` (${stat.size} bytes)` : ""}`);
1073
+ } else if (item.isSymbolicLink()) {
1074
+ const target = fs.readlinkSync(fullPath);
1075
+ console.log(`[LNK] ${item.name} -> ${target}`);
1076
+ } else {
1077
+ console.log(`[FILE] ${item.name}${stat ? ` (${stat.size} bytes)` : ""}`);
1078
+ }
1079
+ }
1080
+ } catch (e) {
1081
+ console.error(`\u8BFB\u53D6\u76EE\u5F55\u5931\u8D25: ${e.message}`);
1082
+ }
1083
+ }
1084
+ var commandDef47 = {
1085
+ name: "ls",
1086
+ description: "\u5217\u51FA\u76EE\u5F55\u5185\u5BB9",
1087
+ handler: handler47,
1088
+ examples: ["jc w ls", "jc w ls C:\\"],
1089
+ related: ["jc w pwd", "jc w dtree", "jc w find"]
1090
+ };
1091
+
1092
+ // src/groups/w/file/pwd.ts
1093
+ async function handler48(_args) {
1094
+ console.log(process.cwd());
1095
+ }
1096
+ var commandDef48 = {
1097
+ name: "pwd",
1098
+ description: "\u663E\u793A\u5F53\u524D\u76EE\u5F55",
1099
+ handler: handler48,
1100
+ examples: ["jc w pwd"],
1101
+ related: ["jc w ls", "jc w cd"]
1102
+ };
1103
+
1104
+ // src/groups/w/file/cd.ts
1105
+ async function handler49(args) {
1106
+ const dir = args[0];
1107
+ if (!dir) {
1108
+ console.log(`\u5F53\u524D\u76EE\u5F55: ${process.cwd()}`);
1109
+ return;
1110
+ }
1111
+ try {
1112
+ process.chdir(dir);
1113
+ console.log(`\u5DF2\u5207\u6362\u5230: ${process.cwd()}`);
1114
+ } catch (e) {
1115
+ console.error(`\u5207\u6362\u76EE\u5F55\u5931\u8D25: ${e.message}`);
1116
+ }
1117
+ }
1118
+ var commandDef49 = {
1119
+ name: "cd",
1120
+ description: "\u5207\u6362\u76EE\u5F55 (\u4EC5\u5F53\u524D\u4F1A\u8BDD)",
1121
+ handler: handler49,
1122
+ examples: ["jc w cd C:\\", "jc w cd .."],
1123
+ related: ["jc w pwd", "jc w ls"]
1124
+ };
1125
+
1126
+ // src/groups/w/file/rm.ts
1127
+ import fs2 from "fs";
1128
+ import readline from "readline";
1129
+ function confirm(prompt) {
1130
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
1131
+ return new Promise((resolve) => {
1132
+ rl.question(prompt, (answer) => {
1133
+ rl.close();
1134
+ resolve(answer.toLowerCase() === "y");
1135
+ });
1136
+ });
1137
+ }
1138
+ async function handler50(args) {
1139
+ const dir = args[0];
1140
+ if (!dir) {
1141
+ console.log("\u7528\u6CD5: jc w rm <directory>");
1142
+ return;
1143
+ }
1144
+ try {
1145
+ if (!fs2.existsSync(dir)) {
1146
+ console.error(`\u76EE\u5F55\u4E0D\u5B58\u5728: ${dir}`);
1147
+ return;
1148
+ }
1149
+ const ok = await confirm(`\u786E\u8BA4\u5220\u9664\u76EE\u5F55 "${dir}"? (y/N) `);
1150
+ if (!ok) {
1151
+ console.log("\u5DF2\u53D6\u6D88");
1152
+ return;
1153
+ }
1154
+ fs2.rmSync(dir, { recursive: true, force: true });
1155
+ console.log(`\u5DF2\u5220\u9664\u76EE\u5F55: ${dir}`);
1156
+ } catch (e) {
1157
+ console.error(`\u5220\u9664\u5931\u8D25: ${e.message}`);
1158
+ }
1159
+ }
1160
+ var commandDef50 = {
1161
+ name: "rm",
1162
+ description: "\u5220\u9664\u76EE\u5F55 (\u542B\u786E\u8BA4\u63D0\u793A)",
1163
+ handler: handler50,
1164
+ examples: ["jc w rm ./node_modules"],
1165
+ related: ["jc w del", "jc w mkdir"]
1166
+ };
1167
+
1168
+ // src/groups/w/file/del.ts
1169
+ import fs3 from "fs";
1170
+ async function handler51(args) {
1171
+ const file = args[0];
1172
+ if (!file) {
1173
+ console.log("\u7528\u6CD5: jc w del <file>");
1174
+ return;
1175
+ }
1176
+ try {
1177
+ fs3.unlinkSync(file);
1178
+ console.log(`\u5DF2\u5220\u9664: ${file}`);
1179
+ } catch (e) {
1180
+ console.error(`\u5220\u9664\u5931\u8D25: ${e.message}`);
1181
+ }
1182
+ }
1183
+ var commandDef51 = {
1184
+ name: "del",
1185
+ description: "\u5220\u9664\u6587\u4EF6",
1186
+ handler: handler51,
1187
+ examples: ["jc w del ./temp.txt"],
1188
+ related: ["jc w rm", "jc w cp", "jc w mv"]
1189
+ };
1190
+
1191
+ // src/groups/w/file/mkdir.ts
1192
+ import fs4 from "fs";
1193
+ async function handler52(args) {
1194
+ const dir = args[0];
1195
+ if (!dir) {
1196
+ console.log("\u7528\u6CD5: jc w mkdir <directory>");
1197
+ return;
1198
+ }
1199
+ try {
1200
+ fs4.mkdirSync(dir, { recursive: true });
1201
+ console.log(`\u5DF2\u521B\u5EFA\u76EE\u5F55: ${dir}`);
1202
+ } catch (e) {
1203
+ console.error(`\u521B\u5EFA\u76EE\u5F55\u5931\u8D25: ${e.message}`);
1204
+ }
1205
+ }
1206
+ var commandDef52 = {
1207
+ name: "mkdir",
1208
+ description: "\u521B\u5EFA\u76EE\u5F55",
1209
+ handler: handler52,
1210
+ examples: ["jc w mkdir ./newdir", "jc w mkdir ./a/b/c"],
1211
+ related: ["jc w rm", "jc w touch"]
1212
+ };
1213
+
1214
+ // src/groups/w/file/touch.ts
1215
+ import fs5 from "fs";
1216
+ import path2 from "path";
1217
+ async function handler53(args) {
1218
+ const file = args[0];
1219
+ if (!file) {
1220
+ console.log("\u7528\u6CD5: jc w touch <file>");
1221
+ return;
1222
+ }
1223
+ try {
1224
+ if (fs5.existsSync(file)) {
1225
+ const now = /* @__PURE__ */ new Date();
1226
+ fs5.utimesSync(file, now, now);
1227
+ console.log(`\u5DF2\u66F4\u65B0: ${file}`);
1228
+ } else {
1229
+ const dir = path2.dirname(file);
1230
+ if (dir && !fs5.existsSync(dir)) {
1231
+ fs5.mkdirSync(dir, { recursive: true });
1232
+ }
1233
+ fs5.writeFileSync(file, "", "utf8");
1234
+ console.log(`\u5DF2\u521B\u5EFA: ${file}`);
1235
+ }
1236
+ } catch (e) {
1237
+ console.error(`\u64CD\u4F5C\u5931\u8D25: ${e.message}`);
1238
+ }
1239
+ }
1240
+ var commandDef53 = {
1241
+ name: "touch",
1242
+ description: "\u521B\u5EFA\u7A7A\u6587\u4EF6\u6216\u66F4\u65B0\u6587\u4EF6\u65F6\u95F4\u6233",
1243
+ handler: handler53,
1244
+ examples: ["jc w touch ./newfile.txt"],
1245
+ related: ["jc w mkdir", "jc w del"]
1246
+ };
1247
+
1248
+ // src/groups/w/file/cp.ts
1249
+ import fs6 from "fs";
1250
+ import path3 from "path";
1251
+ async function handler54(args) {
1252
+ const src = args[0];
1253
+ const dest = args[1];
1254
+ if (!src || !dest) {
1255
+ console.log("\u7528\u6CD5: jc w cp <source> <destination>");
1256
+ return;
1257
+ }
1258
+ try {
1259
+ const srcStat = fs6.statSync(src);
1260
+ if (srcStat.isDirectory()) {
1261
+ cpDir(src, dest);
1262
+ } else {
1263
+ const destDir = path3.dirname(dest);
1264
+ if (destDir && !fs6.existsSync(destDir)) {
1265
+ fs6.mkdirSync(destDir, { recursive: true });
1266
+ }
1267
+ fs6.copyFileSync(src, dest);
1268
+ }
1269
+ console.log(`\u5DF2\u590D\u5236: ${src} -> ${dest}`);
1270
+ } catch (e) {
1271
+ console.error(`\u590D\u5236\u5931\u8D25: ${e.message}`);
1272
+ }
1273
+ }
1274
+ function cpDir(src, dest) {
1275
+ fs6.mkdirSync(dest, { recursive: true });
1276
+ const items = fs6.readdirSync(src);
1277
+ for (const item of items) {
1278
+ const srcPath = path3.join(src, item);
1279
+ const destPath = path3.join(dest, item);
1280
+ if (fs6.statSync(srcPath).isDirectory()) {
1281
+ cpDir(srcPath, destPath);
1282
+ } else {
1283
+ fs6.copyFileSync(srcPath, destPath);
1284
+ }
1285
+ }
1286
+ }
1287
+ var commandDef54 = {
1288
+ name: "cp",
1289
+ description: "\u590D\u5236\u6587\u4EF6\u6216\u76EE\u5F55",
1290
+ handler: handler54,
1291
+ examples: ["jc w cp file.txt backup.txt", "jc w cp dir1 dir2"],
1292
+ related: ["jc w mv", "jc w del", "jc w ls"]
1293
+ };
1294
+
1295
+ // src/groups/w/file/mv.ts
1296
+ import fs7 from "fs";
1297
+ import path4 from "path";
1298
+ async function handler55(args) {
1299
+ const src = args[0];
1300
+ const dest = args[1];
1301
+ if (!src || !dest) {
1302
+ console.log("\u7528\u6CD5: jc w mv <source> <destination>");
1303
+ return;
1304
+ }
1305
+ try {
1306
+ const destDir = path4.dirname(dest);
1307
+ if (destDir && !fs7.existsSync(destDir)) {
1308
+ fs7.mkdirSync(destDir, { recursive: true });
1309
+ }
1310
+ fs7.renameSync(src, dest);
1311
+ console.log(`\u5DF2\u79FB\u52A8/\u91CD\u547D\u540D: ${src} -> ${dest}`);
1312
+ } catch (e) {
1313
+ console.error(`\u79FB\u52A8\u5931\u8D25: ${e.message}`);
1314
+ }
1315
+ }
1316
+ var commandDef55 = {
1317
+ name: "mv",
1318
+ description: "\u79FB\u52A8\u6216\u91CD\u547D\u540D\u6587\u4EF6/\u76EE\u5F55",
1319
+ handler: handler55,
1320
+ examples: ["jc w mv old.txt new.txt", "jc w mv file.txt ./backup/"],
1321
+ related: ["jc w cp", "jc w del", "jc w ls"]
1322
+ };
1323
+
1324
+ // src/groups/w/file/find.ts
1325
+ import fs8 from "fs";
1326
+ import path5 from "path";
1327
+ function searchDir(dir, pattern, results) {
1328
+ try {
1329
+ const items = fs8.readdirSync(dir);
1330
+ for (const item of items) {
1331
+ const fullPath = path5.join(dir, item);
1332
+ try {
1333
+ const stat = fs8.statSync(fullPath);
1334
+ if (item.toLowerCase().includes(pattern.toLowerCase())) {
1335
+ results.push(fullPath);
1336
+ }
1337
+ if (stat.isDirectory()) {
1338
+ searchDir(fullPath, pattern, results);
1339
+ }
1340
+ } catch {
1341
+ }
1342
+ }
1343
+ } catch {
1344
+ }
1345
+ }
1346
+ async function handler56(args) {
1347
+ const pattern = args[0];
1348
+ const rootDir = args[1] || ".";
1349
+ if (!pattern) {
1350
+ console.log("\u7528\u6CD5: jc w find <pattern> [rootDir]");
1351
+ return;
1352
+ }
1353
+ console.log(`\u5728 ${rootDir} \u4E2D\u641C\u7D22 "${pattern}"...`);
1354
+ const results = [];
1355
+ searchDir(rootDir, pattern, results);
1356
+ if (results.length === 0) {
1357
+ console.log("\u672A\u627E\u5230\u5339\u914D\u9879");
1358
+ return;
1359
+ }
1360
+ for (const r of results) {
1361
+ console.log(r);
1362
+ }
1363
+ console.log(`
1364
+ \u5171 ${results.length} \u4E2A\u5339\u914D`);
1365
+ }
1366
+ var commandDef56 = {
1367
+ name: "find",
1368
+ description: "\u9012\u5F52\u641C\u7D22\u6587\u4EF6",
1369
+ handler: handler56,
1370
+ examples: ["jc w find .ts", "jc w find node_modules C:\\project"],
1371
+ related: ["jc w ls", "jc w dtree"]
1372
+ };
1373
+
1374
+ // src/groups/w/file/size.ts
1375
+ import fs9 from "fs";
1376
+ import path6 from "path";
1377
+ function getDirSize(dir) {
1378
+ let total = 0;
1379
+ try {
1380
+ const items = fs9.readdirSync(dir);
1381
+ for (const item of items) {
1382
+ const fullPath = path6.join(dir, item);
1383
+ try {
1384
+ const stat = fs9.statSync(fullPath);
1385
+ if (stat.isDirectory()) {
1386
+ total += getDirSize(fullPath);
1387
+ } else {
1388
+ total += stat.size;
1389
+ }
1390
+ } catch {
1391
+ }
1392
+ }
1393
+ } catch {
1394
+ }
1395
+ return total;
1396
+ }
1397
+ function formatBytes(bytes) {
1398
+ if (bytes < 1024) return `${bytes} B`;
1399
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
1400
+ if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
1401
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
1402
+ }
1403
+ async function handler57(args) {
1404
+ const target = args[0] || ".";
1405
+ try {
1406
+ const stat = fs9.statSync(target);
1407
+ if (stat.isDirectory()) {
1408
+ console.log(`\u6B63\u5728\u8BA1\u7B97 "${target}" \u7684\u5927\u5C0F...`);
1409
+ const size = getDirSize(target);
1410
+ console.log(`\u76EE\u5F55\u5927\u5C0F: ${formatBytes(size)}`);
1411
+ } else {
1412
+ console.log(`${target}: ${formatBytes(stat.size)}`);
1413
+ }
1414
+ } catch (e) {
1415
+ console.error(`\u83B7\u53D6\u5927\u5C0F\u5931\u8D25: ${e.message}`);
1416
+ }
1417
+ }
1418
+ var commandDef57 = {
1419
+ name: "size",
1420
+ description: "\u76EE\u5F55\u6216\u6587\u4EF6\u5927\u5C0F",
1421
+ handler: handler57,
1422
+ examples: ["jc w size .", "jc w size ./node_modules"],
1423
+ related: ["jc w disk", "jc w ls", "jc w dtree"]
1424
+ };
1425
+
1426
+ // src/groups/w/file/dtree.ts
1427
+ import fs10 from "fs";
1428
+ import path7 from "path";
1429
+ function printTree(dir, prefix = "") {
1430
+ let items = [];
1431
+ try {
1432
+ items = fs10.readdirSync(dir);
1433
+ } catch {
1434
+ return;
1435
+ }
1436
+ for (let i = 0; i < items.length; i++) {
1437
+ const item = items[i];
1438
+ const fullPath = path7.join(dir, item);
1439
+ const isLast = i === items.length - 1;
1440
+ const connector = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
1441
+ console.log(prefix + connector + item);
1442
+ try {
1443
+ if (fs10.statSync(fullPath).isDirectory()) {
1444
+ const ext = isLast ? " " : "\u2502 ";
1445
+ printTree(fullPath, prefix + ext);
1446
+ }
1447
+ } catch {
1448
+ }
1449
+ }
1450
+ }
1451
+ async function handler58(args) {
1452
+ const dir = args[0] || ".";
1453
+ console.log(dir);
1454
+ printTree(dir);
1455
+ }
1456
+ var commandDef58 = {
1457
+ name: "dtree",
1458
+ description: "\u76EE\u5F55\u6811",
1459
+ handler: handler58,
1460
+ examples: ["jc w dtree", "jc w dtree C:\\project"],
1461
+ related: ["jc w ls", "jc w find", "jc w size"]
1462
+ };
1463
+
1464
+ // src/groups/w/file/ln.ts
1465
+ import fs11 from "fs";
1466
+ import path8 from "path";
1467
+ async function handler59(args) {
1468
+ const target = args[0];
1469
+ const linkPath = args[1];
1470
+ if (!target || !linkPath) {
1471
+ console.log("\u7528\u6CD5: jc w ln <target> <link>");
1472
+ return;
1473
+ }
1474
+ try {
1475
+ const absTarget = path8.resolve(target);
1476
+ const absLink = path8.resolve(linkPath);
1477
+ const isDir = fs11.statSync(absTarget).isDirectory();
1478
+ if (process.platform === "win32" && isDir) {
1479
+ fs11.symlinkSync(absTarget, absLink, "junction");
1480
+ } else {
1481
+ fs11.symlinkSync(absTarget, absLink);
1482
+ }
1483
+ console.log(`\u5DF2\u521B\u5EFA\u94FE\u63A5: ${absLink} -> ${absTarget}`);
1484
+ } catch (e) {
1485
+ console.error(`\u521B\u5EFA\u94FE\u63A5\u5931\u8D25: ${e.message}`);
1486
+ }
1487
+ }
1488
+ var commandDef59 = {
1489
+ name: "ln",
1490
+ description: "\u521B\u5EFA\u7B26\u53F7\u94FE\u63A5",
1491
+ handler: handler59,
1492
+ examples: ["jc w ln /real/path /link/path"],
1493
+ related: ["jc w cp", "jc w mv", "jc w ls"]
1494
+ };
1495
+
1496
+ // src/groups/w/svc/svc.ts
1497
+ import si3 from "systeminformation";
1498
+ async function handler60(args) {
1499
+ const services = await si3.services("*");
1500
+ const filter = args[0]?.toLowerCase();
1501
+ const filtered = filter ? services.filter((s) => s.name.toLowerCase().includes(filter)) : services;
1502
+ console.table(filtered.slice(0, 50).map((s) => ({ \u540D\u79F0: s.name, \u72B6\u6001: s.running ? "\u8FD0\u884C\u4E2D" : "\u5DF2\u505C\u6B62" })));
1503
+ }
1504
+ var commandDef60 = {
1505
+ name: "svc",
1506
+ description: "\u67E5\u670D\u52A1",
1507
+ handler: handler60,
1508
+ examples: ["jc w svc", "jc w svc w32time"],
1509
+ related: ["jc w svcstart", "jc w svcstop"]
1510
+ };
1511
+
1512
+ // src/groups/w/svc/svcstart.ts
1513
+ import { execSync as execSync7 } from "child_process";
1514
+ async function handler61(args) {
1515
+ const name = args[0];
1516
+ if (!name) {
1517
+ console.error("\u274C \u8BF7\u6307\u5B9A\u670D\u52A1\u540D");
1518
+ process.exit(1);
1519
+ }
1520
+ execSync7(`net start "${name}"`, { stdio: "inherit" });
1521
+ }
1522
+ var commandDef61 = {
1523
+ name: "svcstart",
1524
+ description: "\u542F\u52A8\u670D\u52A1",
1525
+ handler: handler61,
1526
+ examples: ["jc w svcstart w32time"],
1527
+ related: ["jc w svc", "jc w svcstop"]
1528
+ };
1529
+
1530
+ // src/groups/w/svc/svcstop.ts
1531
+ import { execSync as execSync8 } from "child_process";
1532
+ async function handler62(args) {
1533
+ const name = args[0];
1534
+ if (!name) {
1535
+ console.error("\u274C \u8BF7\u6307\u5B9A\u670D\u52A1\u540D");
1536
+ process.exit(1);
1537
+ }
1538
+ execSync8(`net stop "${name}"`, { stdio: "inherit" });
1539
+ }
1540
+ var commandDef62 = {
1541
+ name: "svcstop",
1542
+ description: "\u505C\u6B62\u670D\u52A1",
1543
+ handler: handler62,
1544
+ examples: ["jc w svcstop w32time"],
1545
+ related: ["jc w svc", "jc w svcstart"]
1546
+ };
1547
+
1548
+ // src/groups/w/svc/svcrestart.ts
1549
+ import { execSync as execSync9 } from "child_process";
1550
+ async function handler63(args) {
1551
+ const name = args[0];
1552
+ if (!name) {
1553
+ console.error("\u274C \u8BF7\u6307\u5B9A\u670D\u52A1\u540D");
1554
+ process.exit(1);
1555
+ }
1556
+ execSync9(`net stop "${name}"`, { stdio: "inherit" });
1557
+ execSync9(`net start "${name}"`, { stdio: "inherit" });
1558
+ }
1559
+ var commandDef63 = {
1560
+ name: "svcrestart",
1561
+ description: "\u91CD\u542F\u670D\u52A1",
1562
+ handler: handler63,
1563
+ examples: ["jc w svcrestart w32time"]
1564
+ };
1565
+
1566
+ // src/groups/w/svc/svcdelayed.ts
1567
+ import { execSync as execSync10 } from "child_process";
1568
+ async function handler64(args) {
1569
+ const name = args[0];
1570
+ if (!name) {
1571
+ console.error("\u274C \u8BF7\u6307\u5B9A\u670D\u52A1\u540D");
1572
+ process.exit(1);
1573
+ }
1574
+ execSync10(`sc config "${name}" start=delayed-auto`, { stdio: "inherit" });
1575
+ }
1576
+ var commandDef64 = {
1577
+ name: "svcdelayed",
1578
+ description: "\u8BBE\u7F6E\u670D\u52A1\u4E3A\u5EF6\u8FDF\u81EA\u542F",
1579
+ handler: handler64,
1580
+ examples: ["jc w svcdelayed w32time"]
1581
+ };
1582
+
1583
+ // src/groups/w/pwr/off.ts
1584
+ import { execSync as execSync11 } from "child_process";
1585
+ async function handler65(_args) {
1586
+ const cmd = process.platform === "win32" ? "shutdown /s /t 5" : "shutdown -h now";
1587
+ execSync11(cmd, { stdio: "inherit" });
1588
+ }
1589
+ var commandDef65 = {
1590
+ name: "off",
1591
+ description: "\u5173\u673A (5s \u7F13\u51B2)",
1592
+ handler: handler65,
1593
+ examples: ["jc w off"],
1594
+ related: ["jc w reboot", "jc w cancel"]
1595
+ };
1596
+
1597
+ // src/groups/w/pwr/reboot.ts
1598
+ import { execSync as execSync12 } from "child_process";
1599
+ async function handler66(_args) {
1600
+ const cmd = process.platform === "win32" ? "shutdown /r /t 5" : "shutdown -r now";
1601
+ execSync12(cmd, { stdio: "inherit" });
1602
+ }
1603
+ var commandDef66 = {
1604
+ name: "reboot",
1605
+ description: "\u91CD\u542F (5s \u7F13\u51B2)",
1606
+ handler: handler66,
1607
+ examples: ["jc w reboot"],
1608
+ related: ["jc w off", "jc w cancel"]
1609
+ };
1610
+
1611
+ // src/groups/w/pwr/logout.ts
1612
+ import { execSync as execSync13 } from "child_process";
1613
+ async function handler67(_args) {
1614
+ const cmd = process.platform === "win32" ? "shutdown /l" : "pkill -KILL -u $USER";
1615
+ execSync13(cmd, { stdio: "inherit" });
1616
+ }
1617
+ var commandDef67 = {
1618
+ name: "logout",
1619
+ description: "\u6CE8\u9500\u5F53\u524D\u7528\u6237",
1620
+ handler: handler67,
1621
+ examples: ["jc w logout"]
1622
+ };
1623
+
1624
+ // src/groups/w/pwr/lock.ts
1625
+ import { execSync as execSync14 } from "child_process";
1626
+ async function handler68(_args) {
1627
+ const cmd = process.platform === "win32" ? "rundll32.exe user32.dll,LockWorkStation" : "loginctl lock-session";
1628
+ execSync14(cmd, { stdio: "inherit" });
1629
+ }
1630
+ var commandDef68 = {
1631
+ name: "lock",
1632
+ description: "\u9501\u5B9A\u5C4F\u5E55",
1633
+ handler: handler68,
1634
+ examples: ["jc w lock"]
1635
+ };
1636
+
1637
+ // src/groups/w/pwr/sleep.ts
1638
+ import { execSync as execSync15 } from "child_process";
1639
+ async function handler69(_args) {
1640
+ const cmd = process.platform === "win32" ? "shutdown /h" : "systemctl suspend";
1641
+ execSync15(cmd, { stdio: "inherit" });
1642
+ }
1643
+ var commandDef69 = {
1644
+ name: "sleep",
1645
+ description: "\u4F11\u7720",
1646
+ handler: handler69,
1647
+ examples: ["jc w sleep"]
1648
+ };
1649
+
1650
+ // src/groups/w/pwr/cancel.ts
1651
+ import { execSync as execSync16 } from "child_process";
1652
+ async function handler70(_args) {
1653
+ const cmd = process.platform === "win32" ? "shutdown /a" : "shutdown -c";
1654
+ execSync16(cmd, { stdio: "inherit" });
1655
+ }
1656
+ var commandDef70 = {
1657
+ name: "cancel",
1658
+ description: "\u53D6\u6D88\u5173\u673A/\u91CD\u542F",
1659
+ handler: handler70,
1660
+ examples: ["jc w cancel"],
1661
+ related: ["jc w off", "jc w reboot"]
1662
+ };
1663
+
1664
+ // src/groups/w/reg/reg.ts
1665
+ import { execSync as execSync17 } from "child_process";
1666
+ function requireWin() {
1667
+ if (process.platform !== "win32") {
1668
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1669
+ process.exit(3);
1670
+ }
1671
+ }
1672
+ async function handler71(args) {
1673
+ requireWin();
1674
+ const path9 = args[0] || "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
1675
+ try {
1676
+ console.log(execSync17(`reg query "${path9}"`, { encoding: "utf8" }));
1677
+ } catch {
1678
+ console.log(`\u8DEF\u5F84\u4E0D\u5B58\u5728: ${path9}`);
1679
+ }
1680
+ }
1681
+ var commandDef71 = {
1682
+ name: "reg",
1683
+ description: "\u67E5\u6CE8\u518C\u8868\u9879",
1684
+ handler: handler71,
1685
+ platform: "win32",
1686
+ examples: ['jc w reg "HKCU\\Software\\..."'],
1687
+ related: ["jc w regset", "jc w regdel"]
1688
+ };
1689
+
1690
+ // src/groups/w/reg/regset.ts
1691
+ import { execSync as execSync18 } from "child_process";
1692
+ function requireWin2() {
1693
+ if (process.platform !== "win32") {
1694
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1695
+ process.exit(3);
1696
+ }
1697
+ }
1698
+ async function handler72(args) {
1699
+ requireWin2();
1700
+ const path9 = args[0];
1701
+ const name = args[1];
1702
+ const value = args.slice(2).join(" ");
1703
+ if (!path9 || !name) {
1704
+ console.error("\u274C \u7528\u6CD5: jc w regset <path> <name> <value>");
1705
+ process.exit(1);
1706
+ }
1707
+ execSync18(`reg add "${path9}" /v "${name}" /d "${value}" /f`, { stdio: "inherit" });
1708
+ }
1709
+ var commandDef72 = {
1710
+ name: "regset",
1711
+ description: "\u5199\u6CE8\u518C\u8868\u503C",
1712
+ handler: handler72,
1713
+ platform: "win32"
1714
+ };
1715
+
1716
+ // src/groups/w/reg/regdel.ts
1717
+ import { execSync as execSync19 } from "child_process";
1718
+ function requireWin3() {
1719
+ if (process.platform !== "win32") {
1720
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1721
+ process.exit(3);
1722
+ }
1723
+ }
1724
+ async function handler73(args) {
1725
+ requireWin3();
1726
+ const path9 = args[0];
1727
+ if (!path9) {
1728
+ console.error("\u274C \u8BF7\u6307\u5B9A\u6CE8\u518C\u8868\u8DEF\u5F84");
1729
+ process.exit(1);
1730
+ }
1731
+ console.log(`\u786E\u8BA4\u5220\u9664 ${path9}? (y/N)`);
1732
+ const answer = await new Promise((resolve) => process.stdin.once("data", (d) => resolve(d.toString().trim().toLowerCase())));
1733
+ if (answer === "y") {
1734
+ execSync19(`reg delete "${path9}" /f`, { stdio: "inherit" });
1735
+ } else {
1736
+ console.log("\u5DF2\u53D6\u6D88");
1737
+ }
1738
+ }
1739
+ var commandDef73 = {
1740
+ name: "regdel",
1741
+ description: "\u5220\u6CE8\u518C\u8868\u9879",
1742
+ handler: handler73,
1743
+ platform: "win32"
1744
+ };
1745
+
1746
+ // src/groups/w/reg/regfind.ts
1747
+ import { execSync as execSync20 } from "child_process";
1748
+ function requireWin4() {
1749
+ if (process.platform !== "win32") {
1750
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1751
+ process.exit(3);
1752
+ }
1753
+ }
1754
+ async function handler74(args) {
1755
+ requireWin4();
1756
+ execSync20(`reg query HKCU /s /f "${args[0] || ""}"`, { stdio: "inherit" });
1757
+ }
1758
+ var commandDef74 = {
1759
+ name: "regfind",
1760
+ description: "\u641C\u6CE8\u518C\u8868\u503C\u540D",
1761
+ handler: handler74,
1762
+ platform: "win32"
1763
+ };
1764
+
1765
+ // src/groups/w/task/task.ts
1766
+ import { execSync as execSync21 } from "child_process";
1767
+ async function handler75(_args) {
1768
+ if (process.platform !== "win32") {
1769
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1770
+ process.exit(3);
1771
+ }
1772
+ execSync21("schtasks /query /fo TABLE /nh", { stdio: "inherit" });
1773
+ }
1774
+ var commandDef75 = {
1775
+ name: "task",
1776
+ description: "\u5217\u51FA\u8BA1\u5212\u4EFB\u52A1",
1777
+ handler: handler75,
1778
+ platform: "win32"
1779
+ };
1780
+
1781
+ // src/groups/w/task/taskrun.ts
1782
+ import { execSync as execSync22 } from "child_process";
1783
+ async function handler76(args) {
1784
+ if (process.platform !== "win32") {
1785
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1786
+ process.exit(3);
1787
+ }
1788
+ const name = args[0];
1789
+ if (!name) {
1790
+ console.error("\u274C \u8BF7\u6307\u5B9A\u4EFB\u52A1\u540D");
1791
+ process.exit(1);
1792
+ }
1793
+ execSync22(`powershell -NoProfile "Start-ScheduledTask -TaskPath '\\' -TaskName '${name}'"`, { stdio: "inherit" });
1794
+ }
1795
+ var commandDef76 = {
1796
+ name: "taskrun",
1797
+ description: "\u8FD0\u884C\u8BA1\u5212\u4EFB\u52A1",
1798
+ handler: handler76,
1799
+ platform: "win32"
1800
+ };
1801
+
1802
+ // src/groups/w/task/taskstop.ts
1803
+ import { execSync as execSync23 } from "child_process";
1804
+ async function handler77(args) {
1805
+ if (process.platform !== "win32") {
1806
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
1807
+ process.exit(3);
1808
+ }
1809
+ const name = args[0];
1810
+ if (!name) {
1811
+ console.error("\u274C \u8BF7\u6307\u5B9A\u4EFB\u52A1\u540D");
1812
+ process.exit(1);
1813
+ }
1814
+ execSync23(`powershell -NoProfile "Stop-ScheduledTask -TaskPath '\\' -TaskName '${name}'"`, { stdio: "inherit" });
1815
+ }
1816
+ var commandDef77 = {
1817
+ name: "taskstop",
1818
+ description: "\u505C\u6B62\u8BA1\u5212\u4EFB\u52A1",
1819
+ handler: handler77,
1820
+ platform: "win32"
1821
+ };
1822
+
1823
+ // src/groups/w/tools/taskmgr.ts
1824
+ import open from "open";
1825
+ async function handler78(_args) {
1826
+ await open("taskmgr");
1827
+ }
1828
+ var commandDef78 = {
1829
+ name: "taskmgr",
1830
+ description: "\u4EFB\u52A1\u7BA1\u7406\u5668",
1831
+ handler: handler78,
1832
+ examples: ["jc w taskmgr"]
1833
+ };
1834
+
1835
+ // src/groups/w/tools/resmon.ts
1836
+ import open2 from "open";
1837
+ async function handler79(_args) {
1838
+ await open2("resmon");
1839
+ }
1840
+ var commandDef79 = {
1841
+ name: "resmon",
1842
+ description: "\u8D44\u6E90\u76D1\u89C6\u5668",
1843
+ handler: handler79,
1844
+ examples: ["jc w resmon"]
1845
+ };
1846
+
1847
+ // src/groups/w/tools/perfmon.ts
1848
+ import open3 from "open";
1849
+ async function handler80(_args) {
1850
+ await open3("perfmon /report");
1851
+ }
1852
+ var commandDef80 = {
1853
+ name: "perfmon",
1854
+ description: "\u6027\u80FD\u76D1\u89C6\u5668",
1855
+ handler: handler80,
1856
+ examples: ["jc w perfmon"]
1857
+ };
1858
+
1859
+ // src/groups/w/tools/eventvwr.ts
1860
+ import open4 from "open";
1861
+ async function handler81(_args) {
1862
+ await open4("eventvwr.msc");
1863
+ }
1864
+ var commandDef81 = {
1865
+ name: "eventvwr",
1866
+ description: "\u4E8B\u4EF6\u67E5\u770B\u5668",
1867
+ handler: handler81,
1868
+ examples: ["jc w eventvwr"]
1869
+ };
1870
+
1871
+ // src/groups/w/tools/devmgmt.ts
1872
+ import open5 from "open";
1873
+ async function handler82(_args) {
1874
+ await open5("devmgmt.msc");
1875
+ }
1876
+ var commandDef82 = {
1877
+ name: "devmgmt",
1878
+ description: "\u8BBE\u5907\u7BA1\u7406\u5668",
1879
+ handler: handler82,
1880
+ examples: ["jc w devmgmt"]
1881
+ };
1882
+
1883
+ // src/groups/w/tools/diskmgmt.ts
1884
+ import open6 from "open";
1885
+ async function handler83(_args) {
1886
+ await open6("diskmgmt.msc");
1887
+ }
1888
+ var commandDef83 = {
1889
+ name: "diskmgmt",
1890
+ description: "\u78C1\u76D8\u7BA1\u7406",
1891
+ handler: handler83,
1892
+ examples: ["jc w diskmgmt"]
1893
+ };
1894
+
1895
+ // src/groups/w/tools/msconfig.ts
1896
+ import open7 from "open";
1897
+ async function handler84(_args) {
1898
+ await open7("msconfig");
1899
+ }
1900
+ var commandDef84 = {
1901
+ name: "msconfig",
1902
+ description: "\u7CFB\u7EDF\u914D\u7F6E",
1903
+ handler: handler84,
1904
+ examples: ["jc w msconfig"]
1905
+ };
1906
+
1907
+ // src/groups/w/tools/reged.ts
1908
+ import open8 from "open";
1909
+ async function handler85(_args) {
1910
+ await open8("regedit");
1911
+ }
1912
+ var commandDef85 = {
1913
+ name: "reged",
1914
+ description: "\u6CE8\u518C\u8868\u7F16\u8F91\u5668",
1915
+ handler: handler85,
1916
+ examples: ["jc w reged"]
1917
+ };
1918
+
1919
+ // src/groups/w/tools/gpedit.ts
1920
+ import open9 from "open";
1921
+ async function handler86(_args) {
1922
+ await open9("gpedit.msc");
1923
+ }
1924
+ var commandDef86 = {
1925
+ name: "gpedit",
1926
+ description: "\u7EC4\u7B56\u7565\u7F16\u8F91\u5668",
1927
+ handler: handler86,
1928
+ examples: ["jc w gpedit"]
1929
+ };
1930
+
1931
+ // src/groups/w/tools/control.ts
1932
+ import open10 from "open";
1933
+ async function handler87(_args) {
1934
+ await open10("control");
1935
+ }
1936
+ var commandDef87 = {
1937
+ name: "control",
1938
+ description: "\u63A7\u5236\u9762\u677F",
1939
+ handler: handler87,
1940
+ examples: ["jc w control"]
1941
+ };
1942
+
1943
+ // src/groups/w/tools/services.ts
1944
+ import open11 from "open";
1945
+ async function handler88(_args) {
1946
+ await open11("services.msc");
1947
+ }
1948
+ var commandDef88 = {
1949
+ name: "services",
1950
+ description: "\u670D\u52A1\u7BA1\u7406\u5668",
1951
+ handler: handler88,
1952
+ examples: ["jc w services"]
1953
+ };
1954
+
1955
+ // src/groups/w/tools/here.ts
1956
+ import open12 from "open";
1957
+ async function handler89(_args) {
1958
+ await open12(".");
1959
+ }
1960
+ var commandDef89 = {
1961
+ name: "here",
1962
+ description: "\u6253\u5F00\u5F53\u524D\u76EE\u5F55",
1963
+ handler: handler89,
1964
+ examples: ["jc w here"]
1965
+ };
1966
+
1967
+ // src/groups/w/tools/wt.ts
1968
+ import open13 from "open";
1969
+ async function handler90(_args) {
1970
+ await open13("wt");
1971
+ }
1972
+ var commandDef90 = {
1973
+ name: "wt",
1974
+ description: "\u6253\u5F00 Windows Terminal",
1975
+ handler: handler90,
1976
+ examples: ["jc w wt"]
1977
+ };
1978
+
1979
+ // src/groups/w/tools/code.ts
1980
+ import open14 from "open";
1981
+ async function handler91(_args) {
1982
+ await open14("code .");
1983
+ }
1984
+ var commandDef91 = {
1985
+ name: "code",
1986
+ description: "\u6253\u5F00 VS Code (\u5F53\u524D\u76EE\u5F55)",
1987
+ handler: handler91,
1988
+ examples: ["jc w code"]
1989
+ };
1990
+
1991
+ // src/groups/w/user/who.ts
1992
+ import os from "os";
1993
+ async function handler92(_args) {
1994
+ const info = os.userInfo();
1995
+ console.log(`\u7528\u6237\u540D: ${info.username}`);
1996
+ console.log(`\u7528\u6237\u76EE\u5F55: ${info.homedir}`);
1997
+ console.log(`Shell: ${info.shell}`);
1998
+ }
1999
+ var commandDef92 = {
2000
+ name: "who",
2001
+ description: "\u5F53\u524D\u7528\u6237\u4FE1\u606F",
2002
+ handler: handler92,
2003
+ examples: ["jc w who"]
2004
+ };
2005
+
2006
+ // src/groups/w/user/users.ts
2007
+ import { execSync as execSync24 } from "child_process";
2008
+ async function handler93(_args) {
2009
+ if (process.platform === "win32") {
2010
+ execSync24("net user", { stdio: "inherit" });
2011
+ } else {
2012
+ execSync24("cat /etc/passwd | cut -d: -f1,3,6,7", { stdio: "inherit" });
2013
+ }
2014
+ }
2015
+ var commandDef93 = {
2016
+ name: "users",
2017
+ description: "\u5217\u51FA\u7CFB\u7EDF\u7528\u6237",
2018
+ handler: handler93,
2019
+ examples: ["jc w users"]
2020
+ };
2021
+
2022
+ // src/groups/w/user/admin.ts
2023
+ import { execSync as execSync25 } from "child_process";
2024
+ async function handler94(_args) {
2025
+ if (process.platform === "win32") {
2026
+ try {
2027
+ execSync25("net session", { stdio: "ignore" });
2028
+ console.log("\u2705 \u4EE5\u7BA1\u7406\u5458\u8EAB\u4EFD\u8FD0\u884C");
2029
+ } catch {
2030
+ console.log("\u26A0\uFE0F \u975E\u7BA1\u7406\u5458\u8EAB\u4EFD\u8FD0\u884C");
2031
+ }
2032
+ } else {
2033
+ console.log(process.getuid?.() === 0 ? "\u2705 \u4EE5 root \u8EAB\u4EFD\u8FD0\u884C" : "\u26A0\uFE0F \u4EE5\u666E\u901A\u7528\u6237\u8EAB\u4EFD\u8FD0\u884C");
2034
+ }
2035
+ }
2036
+ var commandDef94 = {
2037
+ name: "admin",
2038
+ description: "\u68C0\u67E5\u662F\u5426\u7BA1\u7406\u5458/root",
2039
+ handler: handler94,
2040
+ examples: ["jc w admin"]
2041
+ };
2042
+
2043
+ // src/groups/w/user/runas.ts
2044
+ import { execSync as execSync26 } from "child_process";
2045
+ async function handler95(_args) {
2046
+ if (process.platform === "win32") {
2047
+ execSync26('powershell -NoProfile "Start-Process cmd -Verb RunAs"', { stdio: "inherit" });
2048
+ } else {
2049
+ execSync26("sudo -i", { stdio: "inherit" });
2050
+ }
2051
+ }
2052
+ var commandDef95 = {
2053
+ name: "runas",
2054
+ description: "\u4EE5\u7BA1\u7406\u5458/root \u8EAB\u4EFD\u8FD0\u884C",
2055
+ handler: handler95,
2056
+ examples: ["jc w runas"]
2057
+ };
2058
+
2059
+ // src/groups/w/wsl/wsl.ts
2060
+ import { execSync as execSync27 } from "child_process";
2061
+ async function handler96(_args) {
2062
+ if (process.platform !== "win32") {
2063
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
2064
+ process.exit(3);
2065
+ }
2066
+ execSync27("wsl --list --verbose", { stdio: "inherit" });
2067
+ }
2068
+ var commandDef96 = {
2069
+ name: "wsl",
2070
+ description: "\u5217\u51FA WSL \u53D1\u884C\u7248",
2071
+ handler: handler96,
2072
+ platform: "win32"
2073
+ };
2074
+
2075
+ // src/groups/w/wsl/wslkill.ts
2076
+ import { execSync as execSync28 } from "child_process";
2077
+ async function handler97(_args) {
2078
+ if (process.platform !== "win32") {
2079
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
2080
+ process.exit(3);
2081
+ }
2082
+ execSync28("wsl --shutdown", { stdio: "inherit" });
2083
+ }
2084
+ var commandDef97 = {
2085
+ name: "wslkill",
2086
+ description: "\u5173\u95ED\u6240\u6709 WSL \u5B9E\u4F8B",
2087
+ handler: handler97,
2088
+ platform: "win32"
2089
+ };
2090
+
2091
+ // src/groups/w/wsl/docker.ts
2092
+ import { execSync as execSync29 } from "child_process";
2093
+ async function handler98(_args) {
2094
+ if (process.platform !== "win32") {
2095
+ console.error("\u274C \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
2096
+ process.exit(3);
2097
+ }
2098
+ execSync29("docker ps -a", { stdio: "inherit" });
2099
+ }
2100
+ var commandDef98 = {
2101
+ name: "docker",
2102
+ description: "\u5217\u51FA Docker \u5BB9\u5668",
2103
+ handler: handler98,
2104
+ platform: "win32"
2105
+ };
2106
+
2107
+ // src/groups/w/index.ts
2108
+ var procCategory = {
2109
+ name: "proc",
2110
+ description: "\u8FDB\u7A0B (8)",
2111
+ commands: [commandDef12, commandDef13, commandDef14, commandDef15, commandDef16, commandDef17, commandDef18, commandDef19]
2112
+ };
2113
+ var sysCategory = {
2114
+ name: "sys",
2115
+ description: "\u7CFB\u7EDF\u4FE1\u606F (12)",
2116
+ commands: [commandDef20, commandDef21, commandDef22, commandDef23, commandDef24, commandDef25, commandDef26, commandDef27, commandDef28, commandDef29, commandDef30, commandDef31]
2117
+ };
2118
+ var netCategory = {
2119
+ name: "net",
2120
+ description: "\u7F51\u7EDC (15)",
2121
+ commands: [commandDef32, commandDef33, commandDef34, commandDef35, commandDef36, commandDef37, commandDef38, commandDef39, commandDef40, commandDef41, commandDef42, commandDef43, commandDef44, commandDef45, commandDef46]
2122
+ };
2123
+ var fileCategory = {
2124
+ name: "file",
2125
+ description: "\u6587\u4EF6/\u76EE\u5F55 (13)",
2126
+ commands: [commandDef47, commandDef48, commandDef49, commandDef50, commandDef51, commandDef52, commandDef53, commandDef54, commandDef55, commandDef56, commandDef57, commandDef58, commandDef59]
2127
+ };
2128
+ var svcCategory = {
2129
+ name: "svc",
2130
+ description: "\u670D\u52A1 (5)",
2131
+ commands: [commandDef60, commandDef61, commandDef62, commandDef63, commandDef64]
2132
+ };
2133
+ var pwrCategory = {
2134
+ name: "pwr",
2135
+ description: "\u7535\u6E90 (6)",
2136
+ commands: [commandDef65, commandDef66, commandDef67, commandDef68, commandDef69, commandDef70]
2137
+ };
2138
+ var regCategory = {
2139
+ name: "reg",
2140
+ description: "\u6CE8\u518C\u8868 (4)",
2141
+ commands: [commandDef71, commandDef72, commandDef73, commandDef74]
2142
+ };
2143
+ var taskCategory = {
2144
+ name: "task",
2145
+ description: "\u8BA1\u5212\u4EFB\u52A1 (3)",
2146
+ commands: [commandDef75, commandDef76, commandDef77]
2147
+ };
2148
+ var toolsCategory = {
2149
+ name: "tools",
2150
+ description: "\u7CFB\u7EDF\u5DE5\u5177 (14)",
2151
+ commands: [commandDef78, commandDef79, commandDef80, commandDef81, commandDef82, commandDef83, commandDef84, commandDef85, commandDef86, commandDef87, commandDef88, commandDef89, commandDef90, commandDef91]
2152
+ };
2153
+ var userCategory = {
2154
+ name: "user",
2155
+ description: "\u7528\u6237 (4)",
2156
+ commands: [commandDef92, commandDef93, commandDef94, commandDef95]
2157
+ };
2158
+ var wslCategory = {
2159
+ name: "wsl",
2160
+ description: "WSL/Docker (3)",
2161
+ commands: [commandDef96, commandDef97, commandDef98]
2162
+ };
2163
+ var wGroup = {
2164
+ name: "w",
2165
+ alias: "w",
2166
+ description: "Windows \u5FEB\u6377\u547D\u4EE4\u96C6 / \u7CFB\u7EDF\u5DE5\u5177",
2167
+ commands: [],
2168
+ categories: [procCategory, sysCategory, netCategory, fileCategory, svcCategory, pwrCategory, regCategory, taskCategory, toolsCategory, userCategory, wslCategory]
2169
+ };
2170
+
2171
+ // src/cli/router.ts
2172
+ function parseArgs(argv) {
2173
+ if (argv.length === 0) return null;
2174
+ if (argv.length === 1) return { group: argv[0], command: "", args: [] };
2175
+ if (argv.length === 2 && argv[1] === "l") return { group: argv[0], command: "l", args: [] };
2176
+ return { group: argv[0], command: argv[1], args: argv.slice(2) };
2177
+ }
2178
+ var groups = {};
2179
+ function registerGroup(group) {
2180
+ groups[group.name] = group;
2181
+ groups[group.alias] = group;
2182
+ }
2183
+ registerGroup(claudeGroup);
2184
+ registerGroup(happyGroup);
2185
+ registerGroup(wGroup);
2186
+ async function route(argv) {
2187
+ const parsed = parseArgs(argv);
2188
+ if (!parsed) {
2189
+ console.log(`${jc} \u2014 j \u547D\u4EE4\u5957\u4EF6`);
2190
+ console.log();
2191
+ for (const [key, g] of Object.entries(groups)) {
2192
+ if (key === g.name) {
2193
+ console.log(` ${jc} ${chalk2.yellow(g.name.padEnd(14))} ${g.description}`);
2194
+ }
2195
+ }
2196
+ console.log();
2197
+ console.log(`\u7528\u6CD5: ${jc} ${chalk2.yellow("<\u7EC4>")} ${chalk2.blue("<\u547D\u4EE4>")} [\u53C2\u6570...]`);
2198
+ console.log(`\u67E5\u770B\u7EC4\u8BE6\u60C5: ${jc} ${chalk2.yellow("<\u7EC4>")} l`);
2199
+ return;
2200
+ }
2201
+ const group = groups[parsed.group];
2202
+ if (!group) {
2203
+ console.error(`\u9519\u8BEF: \u672A\u77E5\u547D\u4EE4: ${parsed.group}`);
2204
+ process.exit(1);
2205
+ }
2206
+ if (parsed.command === "l") {
2207
+ printGroupHelp(group);
2208
+ return;
2209
+ }
2210
+ if (parsed.command === "" || !parsed.command) {
2211
+ if (group.defaultHandler) {
2212
+ await group.defaultHandler(parsed.args);
2213
+ } else {
2214
+ printGroupHelp(group);
2215
+ }
2216
+ return;
2217
+ }
2218
+ const allCmds = group.categories ? group.categories.flatMap((c) => c.commands).concat(group.commands) : group.commands;
2219
+ const cmd = allCmds.find((c) => c.name === parsed.command || c.alias?.includes(parsed.command));
2220
+ if (cmd) {
2221
+ if (parsed.args[0] === "?" || parsed.args[0] === "-h" || parsed.args[0] === "--help") {
2222
+ printCommandHelp(cmd, parsed.group);
2223
+ return;
2224
+ }
2225
+ if (cmd.platform === "win32" && process.platform !== "win32") {
2226
+ console.error("\u9519\u8BEF: \u6B64\u547D\u4EE4\u4EC5\u652F\u6301 Windows");
2227
+ process.exit(3);
2228
+ }
2229
+ await cmd.handler(parsed.args);
2230
+ return;
2231
+ }
2232
+ if (group.categories) {
2233
+ const cat = group.categories.find((c) => c.name === parsed.command);
2234
+ if (cat) {
2235
+ printCategoryHelp(cat);
2236
+ return;
2237
+ }
2238
+ }
2239
+ console.error(`\u9519\u8BEF: \u672A\u77E5\u547D\u4EE4: ${parsed.group} ${parsed.command}`);
2240
+ process.exit(1);
2241
+ }
2242
+
2243
+ // src/index.ts
2244
+ async function main() {
2245
+ const args = process.argv.slice(2);
2246
+ await route(args);
2247
+ }
2248
+ main().catch((err) => {
2249
+ console.error("\u274C", err.message);
2250
+ process.exit(1);
2251
+ });