yuangs 1.3.39 → 1.3.45
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/README.md +44 -0
- package/dist/ai/client.d.ts +9 -0
- package/dist/ai/client.js +118 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/prompt.d.ts +3 -0
- package/dist/ai/prompt.js +56 -0
- package/dist/ai/prompt.js.map +1 -0
- package/dist/ai/types.d.ts +5 -0
- package/dist/ai/types.js +3 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +142 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/handleAIChat.d.ts +1 -0
- package/dist/commands/handleAIChat.js +111 -0
- package/dist/commands/handleAIChat.js.map +1 -0
- package/dist/commands/handleAICommand.d.ts +4 -0
- package/dist/commands/handleAICommand.js +97 -0
- package/dist/commands/handleAICommand.js.map +1 -0
- package/dist/commands/handleConfig.d.ts +1 -0
- package/dist/commands/handleConfig.js +73 -0
- package/dist/commands/handleConfig.js.map +1 -0
- package/dist/core/apps.d.ts +7 -0
- package/dist/core/apps.js +64 -0
- package/dist/core/apps.js.map +1 -0
- package/dist/core/autofix.d.ts +3 -0
- package/dist/core/autofix.js +24 -0
- package/dist/core/autofix.js.map +1 -0
- package/dist/core/executor.d.ts +6 -0
- package/dist/core/executor.js +28 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/macros.d.ts +9 -0
- package/dist/core/macros.js +51 -0
- package/dist/core/macros.js.map +1 -0
- package/dist/core/os.d.ts +7 -0
- package/dist/core/os.js +36 -0
- package/dist/core/os.js.map +1 -0
- package/dist/core/risk.d.ts +1 -0
- package/dist/core/risk.js +11 -0
- package/dist/core/risk.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/confirm.d.ts +1 -0
- package/dist/utils/confirm.js +55 -0
- package/dist/utils/confirm.js.map +1 -0
- package/dist/utils/history.d.ts +10 -0
- package/dist/utils/history.js +31 -0
- package/dist/utils/history.js.map +1 -0
- package/package.json +24 -8
- package/cli.js +0 -597
- package/index.js +0 -361
- package/test/index.test.js +0 -78
- package/test/macros.test.js +0 -91
- package/test_interactive_history.js +0 -66
- package/test_interactive_history_multi.js +0 -67
- package/yuangs.config.example.json +0 -11
- package/yuangs.config.example.yaml +0 -23
- package/yuangs.config.json +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleAICommand.js","sourceRoot":"","sources":["../../src/commands/handleAICommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleConfig(args: string[]): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleConfig = handleConfig;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const CONFIG_FILE = path_1.default.join(os_1.default.homedir(), '.yuangs.json');
|
|
12
|
+
function handleConfig(args) {
|
|
13
|
+
const action = args[0]; // get, set, list
|
|
14
|
+
if (!action || action === 'list') {
|
|
15
|
+
const config = readConfig();
|
|
16
|
+
console.log(chalk_1.default.bold.cyan('\n⚙️ 当前配置 (~/.yuangs.json):\n'));
|
|
17
|
+
if (Object.keys(config).length === 0) {
|
|
18
|
+
console.log(chalk_1.default.gray(' (配置文件不存在或为空)'));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
Object.entries(config).forEach(([key, value]) => {
|
|
22
|
+
console.log(` ${chalk_1.default.white(key)}: ${chalk_1.default.green(value)}`);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
console.log('\n使用方法:');
|
|
26
|
+
console.log(chalk_1.default.gray(' yuangs config set <key> <value>'));
|
|
27
|
+
console.log(chalk_1.default.gray(' yuangs config get <key>\n'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (action === 'set') {
|
|
31
|
+
const key = args[1];
|
|
32
|
+
const value = args[2];
|
|
33
|
+
if (!key || !value) {
|
|
34
|
+
console.log(chalk_1.default.red('错误: 请提供 key 和 value。例如: yuangs config set defaultModel Assistant'));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const config = readConfig();
|
|
38
|
+
config[key] = value;
|
|
39
|
+
writeConfig(config);
|
|
40
|
+
console.log(chalk_1.default.green(`✓ 已将 ${key} 设置为 ${value}`));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (action === 'get') {
|
|
44
|
+
const key = args[1];
|
|
45
|
+
if (!key) {
|
|
46
|
+
console.log(chalk_1.default.red('错误: 请提供 key。例如: yuangs config get defaultModel'));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const config = readConfig();
|
|
50
|
+
if (config[key] !== undefined) {
|
|
51
|
+
console.log(config[key]);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(chalk_1.default.yellow(`配置项 ${key} 不存在`));
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function readConfig() {
|
|
60
|
+
if (fs_1.default.existsSync(CONFIG_FILE)) {
|
|
61
|
+
try {
|
|
62
|
+
return JSON.parse(fs_1.default.readFileSync(CONFIG_FILE, 'utf8'));
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
return {};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
function writeConfig(config) {
|
|
71
|
+
fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=handleConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleConfig.js","sourceRoot":"","sources":["../../src/commands/handleConfig.ts"],"names":[],"mappings":";;;;;AAOA,oCA+CC;AAtDD,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AACpB,kDAA0B;AAE1B,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAE5D,SAAgB,YAAY,CAAC,IAAc;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAEzC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACvD,OAAO;IACX,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC;YAC3F,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACzE,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO;IACX,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACf,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,MAAW;IAC5B,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_APPS = void 0;
|
|
7
|
+
exports.loadAppsConfig = loadAppsConfig;
|
|
8
|
+
exports.openUrl = openUrl;
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
13
|
+
const os_1 = __importDefault(require("os"));
|
|
14
|
+
exports.DEFAULT_APPS = {
|
|
15
|
+
shici: 'https://wealth.want.biz/shici/index.html',
|
|
16
|
+
dict: 'https://wealth.want.biz/pages/dict.html',
|
|
17
|
+
pong: 'https://wealth.want.biz/pages/pong.html'
|
|
18
|
+
};
|
|
19
|
+
function loadAppsConfig() {
|
|
20
|
+
const configPaths = [
|
|
21
|
+
path_1.default.join(process.cwd(), 'yuangs.config.json'),
|
|
22
|
+
path_1.default.join(process.cwd(), 'yuangs.config.yaml'),
|
|
23
|
+
path_1.default.join(process.cwd(), 'yuangs.config.yml'),
|
|
24
|
+
path_1.default.join(process.cwd(), '.yuangs.json'),
|
|
25
|
+
path_1.default.join(process.cwd(), '.yuangs.yaml'),
|
|
26
|
+
path_1.default.join(process.cwd(), '.yuangs.yml'),
|
|
27
|
+
path_1.default.join(os_1.default.homedir(), '.yuangs.json'),
|
|
28
|
+
path_1.default.join(os_1.default.homedir(), '.yuangs.yaml'),
|
|
29
|
+
path_1.default.join(os_1.default.homedir(), '.yuangs.yml'),
|
|
30
|
+
];
|
|
31
|
+
for (const configPath of configPaths) {
|
|
32
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
33
|
+
try {
|
|
34
|
+
const configContent = fs_1.default.readFileSync(configPath, 'utf8');
|
|
35
|
+
let config;
|
|
36
|
+
if (configPath.endsWith('.yaml') || configPath.endsWith('.yml')) {
|
|
37
|
+
config = js_yaml_1.default.load(configContent);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
config = JSON.parse(configContent);
|
|
41
|
+
}
|
|
42
|
+
return config.apps || config;
|
|
43
|
+
}
|
|
44
|
+
catch (error) { }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return exports.DEFAULT_APPS;
|
|
48
|
+
}
|
|
49
|
+
function openUrl(url) {
|
|
50
|
+
let command;
|
|
51
|
+
switch (process.platform) {
|
|
52
|
+
case 'darwin':
|
|
53
|
+
command = `open "${url}"`;
|
|
54
|
+
break;
|
|
55
|
+
case 'win32':
|
|
56
|
+
command = `start "${url}"`;
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
command = `xdg-open "${url}"`;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
(0, child_process_1.exec)(command);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/core/apps.ts"],"names":[],"mappings":";;;;;;AAYA,wCA4BC;AAGD,0BAQC;AAnDD,iDAAqC;AACrC,4CAAoB;AACpB,gDAAwB;AACxB,sDAA2B;AAC3B,4CAAoB;AAEP,QAAA,YAAY,GAAG;IACxB,KAAK,EAAE,0CAA0C;IACjD,IAAI,EAAE,yCAAyC;IAC/C,IAAI,EAAE,yCAAyC;CAClD,CAAC;AAEF,SAAgB,cAAc;IAC1B,MAAM,WAAW,GAAG;QAChB,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC;QAC9C,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC;QAC9C,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC;QAC7C,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;QACxC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;QACxC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;QACvC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC;QACvC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC;QACvC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC;KACzC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACD,MAAM,aAAa,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC1D,IAAI,MAAW,CAAC;gBAChB,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9D,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,oBAAY,CAAC;AACxB,CAAC;AAGD,SAAgB,OAAO,CAAC,GAAW;IAC/B,IAAI,OAAO,CAAC;IACZ,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,QAAQ;YAAE,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;YAAC,MAAM;QAChD,KAAK,OAAO;YAAE,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC;YAAC,MAAM;QAChD;YAAS,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAAC,MAAM;IAClD,CAAC;IACD,IAAA,oBAAI,EAAC,OAAO,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoFixCommand = autoFixCommand;
|
|
4
|
+
const prompt_1 = require("../ai/prompt");
|
|
5
|
+
const client_1 = require("../ai/client");
|
|
6
|
+
async function autoFixCommand(originalCmd, stderr, os, model) {
|
|
7
|
+
const prompt = (0, prompt_1.buildFixPrompt)(originalCmd, stderr, os);
|
|
8
|
+
const raw = await (0, client_1.askAI)(prompt, model);
|
|
9
|
+
try {
|
|
10
|
+
// Extract JSON if AI wrapped it in triple backticks
|
|
11
|
+
let jsonContent = raw;
|
|
12
|
+
if (raw.includes('```json')) {
|
|
13
|
+
jsonContent = raw.split('```json')[1].split('```')[0].trim();
|
|
14
|
+
}
|
|
15
|
+
else if (raw.includes('```')) {
|
|
16
|
+
jsonContent = raw.split('```')[1].split('```')[0].trim();
|
|
17
|
+
}
|
|
18
|
+
return JSON.parse(jsonContent);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=autofix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autofix.js","sourceRoot":"","sources":["../../src/core/autofix.ts"],"names":[],"mappings":";;AAKA,wCAsBC;AA1BD,yCAA8C;AAC9C,yCAAqC;AAG9B,KAAK,UAAU,cAAc,CAChC,WAAmB,EACnB,MAAc,EACd,EAAa,EACb,KAAc;IAEd,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,IAAA,cAAK,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEvC,IAAI,CAAC;QACD,oDAAoD;QACpD,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exec = exec;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
async function exec(command) {
|
|
6
|
+
return new Promise((resolve) => {
|
|
7
|
+
let stdout = '';
|
|
8
|
+
let stderr = '';
|
|
9
|
+
// Using shell: true to support things like pipes
|
|
10
|
+
const child = (0, child_process_1.spawn)(command, [], { shell: true });
|
|
11
|
+
child.stdout.on('data', (data) => {
|
|
12
|
+
stdout += data.toString();
|
|
13
|
+
process.stdout.write(data);
|
|
14
|
+
});
|
|
15
|
+
child.stderr.on('data', (data) => {
|
|
16
|
+
stderr += data.toString();
|
|
17
|
+
process.stderr.write(data);
|
|
18
|
+
});
|
|
19
|
+
child.on('close', (code) => {
|
|
20
|
+
resolve({ stdout, stderr, code });
|
|
21
|
+
});
|
|
22
|
+
child.on('error', (err) => {
|
|
23
|
+
stderr += err.message;
|
|
24
|
+
resolve({ stdout, stderr, code: 1 });
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":";;AAQA,oBA2BC;AAnCD,iDAAsC;AAQ/B,KAAK,UAAU,IAAI,CAAC,OAAe;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,iDAAiD;QACjD,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC;YACtB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Macro = {
|
|
2
|
+
commands: string;
|
|
3
|
+
description: string;
|
|
4
|
+
createdAt: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function getMacros(): Record<string, Macro>;
|
|
7
|
+
export declare function saveMacro(name: string, commands: string, description?: string): boolean;
|
|
8
|
+
export declare function deleteMacro(name: string): boolean;
|
|
9
|
+
export declare function runMacro(name: string): boolean;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getMacros = getMacros;
|
|
7
|
+
exports.saveMacro = saveMacro;
|
|
8
|
+
exports.deleteMacro = deleteMacro;
|
|
9
|
+
exports.runMacro = runMacro;
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const os_1 = __importDefault(require("os"));
|
|
13
|
+
const MACROS_FILE = path_1.default.join(os_1.default.homedir(), '.yuangs_macros.json');
|
|
14
|
+
function getMacros() {
|
|
15
|
+
if (fs_1.default.existsSync(MACROS_FILE)) {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(fs_1.default.readFileSync(MACROS_FILE, 'utf8'));
|
|
18
|
+
}
|
|
19
|
+
catch (e) { }
|
|
20
|
+
}
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
function saveMacro(name, commands, description = '') {
|
|
24
|
+
const macros = getMacros();
|
|
25
|
+
macros[name] = {
|
|
26
|
+
commands,
|
|
27
|
+
description,
|
|
28
|
+
createdAt: new Date().toISOString()
|
|
29
|
+
};
|
|
30
|
+
fs_1.default.writeFileSync(MACROS_FILE, JSON.stringify(macros, null, 2));
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
function deleteMacro(name) {
|
|
34
|
+
const macros = getMacros();
|
|
35
|
+
if (macros[name]) {
|
|
36
|
+
delete macros[name];
|
|
37
|
+
fs_1.default.writeFileSync(MACROS_FILE, JSON.stringify(macros, null, 2));
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
function runMacro(name) {
|
|
43
|
+
const macros = getMacros();
|
|
44
|
+
const macro = macros[name];
|
|
45
|
+
if (!macro)
|
|
46
|
+
return false;
|
|
47
|
+
const { spawn } = require('child_process');
|
|
48
|
+
spawn(macro.commands, [], { shell: true, stdio: 'inherit' });
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=macros.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macros.js","sourceRoot":"","sources":["../../src/core/macros.ts"],"names":[],"mappings":";;;;;AAYA,8BAOC;AAED,8BASC;AAED,kCAQC;AAED,4BAQC;AAlDD,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;AAQnE,SAAgB,SAAS;IACrB,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY,EAAE,QAAgB,EAAE,cAAsB,EAAE;IAC9E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,GAAG;QACX,QAAQ;QACR,WAAW;QACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY;IACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/dist/core/os.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOSProfile = getOSProfile;
|
|
4
|
+
function getOSProfile() {
|
|
5
|
+
switch (process.platform) {
|
|
6
|
+
case 'darwin':
|
|
7
|
+
return {
|
|
8
|
+
name: 'macOS',
|
|
9
|
+
shell: 'zsh',
|
|
10
|
+
find: 'bsd',
|
|
11
|
+
stat: 'bsd',
|
|
12
|
+
};
|
|
13
|
+
case 'linux':
|
|
14
|
+
return {
|
|
15
|
+
name: 'Linux',
|
|
16
|
+
shell: 'bash',
|
|
17
|
+
find: 'gnu',
|
|
18
|
+
stat: 'gnu',
|
|
19
|
+
};
|
|
20
|
+
case 'win32':
|
|
21
|
+
return {
|
|
22
|
+
name: 'Windows',
|
|
23
|
+
shell: 'cmd',
|
|
24
|
+
find: 'gnu', // Win32 find is different, but for AI context let's assume GNU style tools if they are there, or just label it.
|
|
25
|
+
stat: 'gnu',
|
|
26
|
+
};
|
|
27
|
+
default:
|
|
28
|
+
return {
|
|
29
|
+
name: process.platform,
|
|
30
|
+
shell: 'sh',
|
|
31
|
+
find: 'gnu',
|
|
32
|
+
stat: 'gnu',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=os.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os.js","sourceRoot":"","sources":["../../src/core/os.ts"],"names":[],"mappings":";;AAOA,oCA+BC;AA/BD,SAAgB,YAAY;IACxB,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,QAAQ;YACT,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,KAAK;aACd,CAAC;QACN,KAAK,OAAO;YACR,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,KAAK;aACd,CAAC;QACN,KAAK,OAAO;YACR,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK,EAAE,gHAAgH;gBAC7H,IAAI,EAAE,KAAK;aACd,CAAC;QACN;YACI,OAAO;gBACH,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,KAAK;aACd,CAAC;IACV,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function assessRisk(command: string, aiRisk: 'low' | 'medium' | 'high'): 'low' | 'medium' | 'high';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assessRisk = assessRisk;
|
|
4
|
+
function assessRisk(command, aiRisk) {
|
|
5
|
+
const highRiskCommands = ['rm ', 'sudo ', 'mv ', 'dd ', '> /dev/', ':(){ :|:& };:'];
|
|
6
|
+
const hasHighRisk = highRiskCommands.some(cmd => command.includes(cmd));
|
|
7
|
+
if (hasHighRisk)
|
|
8
|
+
return 'high';
|
|
9
|
+
return aiRisk;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=risk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/core/risk.ts"],"names":[],"mappings":";;AAAA,gCAOC;AAPD,SAAgB,UAAU,CAAC,OAAe,EAAE,MAAiC;IACzE,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAEpF,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,IAAI,WAAW;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function confirm(message: string): Promise<boolean>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.confirm = confirm;
|
|
40
|
+
const readline = __importStar(require("node:readline/promises"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
async function confirm(message) {
|
|
43
|
+
const rl = readline.createInterface({
|
|
44
|
+
input: process.stdin,
|
|
45
|
+
output: process.stdout,
|
|
46
|
+
});
|
|
47
|
+
try {
|
|
48
|
+
const answer = await rl.question(chalk_1.default.yellow(`\n⚠️ ${message} (y/N) `));
|
|
49
|
+
return answer.toLowerCase() === 'y';
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
rl.close();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=confirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,0BAYC;AAfD,iEAAmD;AACnD,kDAA0B;AAEnB,KAAK,UAAU,OAAO,CAAC,OAAe;IACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,OAAO,SAAS,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;IACxC,CAAC;YAAS,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getCommandHistory = getCommandHistory;
|
|
7
|
+
exports.saveHistory = saveHistory;
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const HISTORY_FILE = path_1.default.join(os_1.default.homedir(), '.yuangs_cmd_history.json');
|
|
12
|
+
function getCommandHistory() {
|
|
13
|
+
if (fs_1.default.existsSync(HISTORY_FILE)) {
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(fs_1.default.readFileSync(HISTORY_FILE, 'utf8'));
|
|
16
|
+
}
|
|
17
|
+
catch (e) { }
|
|
18
|
+
}
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
function saveHistory(entry) {
|
|
22
|
+
let history = getCommandHistory();
|
|
23
|
+
const newEntry = {
|
|
24
|
+
...entry,
|
|
25
|
+
time: new Date().toLocaleString()
|
|
26
|
+
};
|
|
27
|
+
// Keep last 5, unique commands
|
|
28
|
+
history = [newEntry, ...history.filter(item => item.command !== entry.command)].slice(0, 5);
|
|
29
|
+
fs_1.default.writeFileSync(HISTORY_FILE, JSON.stringify(history, null, 2));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/utils/history.ts"],"names":[],"mappings":";;;;;AAYA,8CAOC;AAED,kCASC;AA9BD,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;AAQzE,SAAgB,iBAAiB;IAC7B,IAAI,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAgB,WAAW,CAAC,KAA4C;IACpE,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAiB;QAC3B,GAAG,KAAK;QACR,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE;KACpC,CAAC;IACF,+BAA+B;IAC/B,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yuangs",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.45",
|
|
4
4
|
"description": "苑广山的个人应用集合 CLI(彩色版)",
|
|
5
|
-
"
|
|
5
|
+
"author": "苑广山",
|
|
6
|
+
"license": "ISC",
|
|
6
7
|
"bin": {
|
|
7
|
-
"yuangs": "cli.js"
|
|
8
|
+
"yuangs": "dist/cli.js"
|
|
8
9
|
},
|
|
10
|
+
"main": "dist/cli.js",
|
|
11
|
+
"types": "dist/cli.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
9
15
|
"scripts": {
|
|
16
|
+
"dev": "ts-node src/cli.ts",
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"prepublishOnly": "npm run build",
|
|
10
19
|
"test": "jest"
|
|
11
20
|
},
|
|
12
21
|
"keywords": [
|
|
@@ -15,7 +24,6 @@
|
|
|
15
24
|
"tools",
|
|
16
25
|
"colorful"
|
|
17
26
|
],
|
|
18
|
-
"homepage": "https://github.com/yauangshan/npm_yuangs#readme",
|
|
19
27
|
"repository": {
|
|
20
28
|
"type": "git",
|
|
21
29
|
"url": "git+https://github.com/yuanguangshan/npm_yuangs.git"
|
|
@@ -23,18 +31,26 @@
|
|
|
23
31
|
"bugs": {
|
|
24
32
|
"url": "https://github.com/yuanguangshan/npm_yuangs/issues"
|
|
25
33
|
},
|
|
26
|
-
"
|
|
27
|
-
"license": "ISC",
|
|
34
|
+
"homepage": "https://github.com/yauangshan/npm_yuangs#readme",
|
|
28
35
|
"dependencies": {
|
|
29
36
|
"axios": "^1.13.2",
|
|
30
37
|
"chalk": "^4.1.2",
|
|
31
38
|
"js-yaml": "^4.1.0",
|
|
32
39
|
"marked": "^15.0.12",
|
|
33
40
|
"marked-terminal": "^7.3.0",
|
|
34
|
-
"ora": "^
|
|
41
|
+
"ora": "^6.3.1"
|
|
35
42
|
},
|
|
36
43
|
"devDependencies": {
|
|
37
|
-
"
|
|
44
|
+
"@types/js-yaml": "^4.0.9",
|
|
45
|
+
"@types/marked": "^5.0.2",
|
|
46
|
+
"@types/node": "^20.11.30",
|
|
47
|
+
"@types/ora": "^3.1.0",
|
|
48
|
+
"jest": "^29.7.0",
|
|
49
|
+
"ts-node": "^10.9.2",
|
|
50
|
+
"typescript": "^5.9.3"
|
|
51
|
+
},
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=18"
|
|
38
54
|
},
|
|
39
55
|
"publishConfig": {
|
|
40
56
|
"access": "public"
|