superun-ai-cli 0.1.9 → 0.1.10
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 +3 -1
- package/dist/program.js +1 -1
- package/dist/program.js.map +1 -1
- package/dist/update/version-gate.js +53 -51
- package/dist/update/version-gate.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/program.js
CHANGED
|
@@ -10,7 +10,7 @@ import { registerVersion } from './commands/system/version.js';
|
|
|
10
10
|
export function createProgram(context, hooks) {
|
|
11
11
|
const program = new Command()
|
|
12
12
|
.name(COMMAND_NAME)
|
|
13
|
-
.description('
|
|
13
|
+
.description('通过需求梳理、架构设计与开发协作,将网站和应用的想法转化为可持续迭代、可部署运维的生产级系统。')
|
|
14
14
|
.version(PACKAGE_VERSION)
|
|
15
15
|
.option('--endpoint <URL>', 'API 地址')
|
|
16
16
|
.option('--locale <language>', '回复语言', 'zh-CN')
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,UAAU,aAAa,CAC3B,OAAuB,EACvB,KAGC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,YAAY,CAAC;SAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,UAAU,aAAa,CAC3B,OAAuB,EACvB,KAGC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,YAAY,CAAC;SAClB,WAAW,CACV,iDAAiD,CAClD;SACA,OAAO,CAAC,eAAe,CAAC;SACxB,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;SACpC,MAAM,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;SAC9C,YAAY,EAAE;SACd,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAChD,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;QAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC;QAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC;QACzF,MAAM,OAAO,GACX,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC;YAC5E,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO;QAC1C,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;YAC7C,MAAM,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -9,6 +9,19 @@ import { object } from '../contracts/value.js';
|
|
|
9
9
|
import { CliError } from '../output/exit-codes.js';
|
|
10
10
|
import { withUpdateLock } from './update-lock.js';
|
|
11
11
|
import { latestVersion, runNpm, NPM_FETCH_OPTIONS, NpmCommandError } from './npm-registry.js';
|
|
12
|
+
async function verifiedEntry(directory, version) {
|
|
13
|
+
const packageDirectory = join(directory, 'node_modules', PACKAGE_NAME);
|
|
14
|
+
try {
|
|
15
|
+
const metadata = object(JSON.parse(await readFile(join(packageDirectory, 'package.json'), 'utf8')));
|
|
16
|
+
const candidate = join(packageDirectory, 'dist', 'cli.js');
|
|
17
|
+
if (metadata.name === PACKAGE_NAME && metadata.version === version && (await stat(candidate)).isFile())
|
|
18
|
+
return candidate;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
/* 未完成安装的目录不作为可执行版本。 */
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
12
25
|
export async function versionGate(argv, _output, updateOnly = false) {
|
|
13
26
|
let source = await latestVersion();
|
|
14
27
|
let required = source.version;
|
|
@@ -16,60 +29,49 @@ export async function versionGate(argv, _output, updateOnly = false) {
|
|
|
16
29
|
return { reexecuted: false, version: required };
|
|
17
30
|
if (process.env.SUPERUN_AI_CLI_REEXEC === '1')
|
|
18
31
|
throw new CliError('UPDATE_FAILED', '重启后版本仍不匹配,已停止重复更新');
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
await
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
32
|
+
const root = join(homedir(), '.cache', PACKAGE_NAME, 'versions');
|
|
33
|
+
// 已安装的目标版本直接复用,避免每次执行都创建、删除更新锁。
|
|
34
|
+
let entry = await verifiedEntry(join(root, required), required);
|
|
35
|
+
if (!entry)
|
|
36
|
+
entry = await withUpdateLock(async () => {
|
|
37
|
+
source = await latestVersion();
|
|
38
|
+
required = source.version;
|
|
39
|
+
const destination = join(root, required);
|
|
40
|
+
// 等锁期间其他进程可能已完成安装,必须再次检查。
|
|
41
|
+
const cached = await verifiedEntry(destination, required);
|
|
42
|
+
if (cached)
|
|
43
|
+
return cached;
|
|
44
|
+
await mkdir(root, { recursive: true, mode: 0o700 });
|
|
45
|
+
const staging = await mkdtemp(join(root, `.${required}-`));
|
|
27
46
|
try {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
await runNpm([
|
|
48
|
+
'install',
|
|
49
|
+
'--prefix',
|
|
50
|
+
staging,
|
|
51
|
+
'--no-save',
|
|
52
|
+
'--package-lock=false',
|
|
53
|
+
`${PACKAGE_NAME}@${required}`,
|
|
54
|
+
...NPM_FETCH_OPTIONS,
|
|
55
|
+
'--ignore-scripts',
|
|
56
|
+
'--no-audit',
|
|
57
|
+
'--no-fund',
|
|
58
|
+
], { registry: source.registry, timeoutMs: 180_000 }).catch((error) => {
|
|
59
|
+
throw new CliError('UPDATE_FAILED', 'npm 自动更新失败,业务请求未发送', {
|
|
60
|
+
reason: error instanceof NpmCommandError ? error.reason : 'NPM_REQUEST_FAILED',
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
if (!(await verifiedEntry(staging, required)))
|
|
64
|
+
throw new CliError('UPDATE_FAILED', '安装后的版本或执行入口校验失败');
|
|
65
|
+
if (await stat(destination).catch(() => undefined))
|
|
66
|
+
await rename(destination, `${destination}.invalid-${randomUUID()}`);
|
|
67
|
+
await rename(staging, destination);
|
|
68
|
+
return join(destination, 'node_modules', PACKAGE_NAME, 'dist', 'cli.js');
|
|
34
69
|
}
|
|
35
|
-
|
|
36
|
-
|
|
70
|
+
finally {
|
|
71
|
+
// 只清理本次 mkdtemp 创建的安装暂存目录。
|
|
72
|
+
await rm(staging, { recursive: true, force: true });
|
|
37
73
|
}
|
|
38
|
-
|
|
39
|
-
};
|
|
40
|
-
const cached = await verifiedEntry(destination);
|
|
41
|
-
if (cached)
|
|
42
|
-
return cached;
|
|
43
|
-
const staging = await mkdtemp(join(root, `.${required}-`));
|
|
44
|
-
try {
|
|
45
|
-
await runNpm([
|
|
46
|
-
'install',
|
|
47
|
-
'--prefix',
|
|
48
|
-
staging,
|
|
49
|
-
'--no-save',
|
|
50
|
-
'--package-lock=false',
|
|
51
|
-
`${PACKAGE_NAME}@${required}`,
|
|
52
|
-
...NPM_FETCH_OPTIONS,
|
|
53
|
-
'--ignore-scripts',
|
|
54
|
-
'--no-audit',
|
|
55
|
-
'--no-fund',
|
|
56
|
-
], { registry: source.registry, timeoutMs: 180_000 }).catch((error) => {
|
|
57
|
-
throw new CliError('UPDATE_FAILED', 'npm 自动更新失败,业务请求未发送', {
|
|
58
|
-
reason: error instanceof NpmCommandError ? error.reason : 'NPM_REQUEST_FAILED',
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
if (!(await verifiedEntry(staging)))
|
|
62
|
-
throw new CliError('UPDATE_FAILED', '安装后的版本或执行入口校验失败');
|
|
63
|
-
if (await stat(destination).catch(() => undefined))
|
|
64
|
-
await rename(destination, `${destination}.invalid-${randomUUID()}`);
|
|
65
|
-
await rename(staging, destination);
|
|
66
|
-
return join(destination, 'node_modules', PACKAGE_NAME, 'dist', 'cli.js');
|
|
67
|
-
}
|
|
68
|
-
finally {
|
|
69
|
-
// 只清理本次 mkdtemp 创建的安装暂存目录。
|
|
70
|
-
await rm(staging, { recursive: true, force: true });
|
|
71
|
-
}
|
|
72
|
-
});
|
|
74
|
+
});
|
|
73
75
|
if (updateOnly)
|
|
74
76
|
return { reexecuted: false, version: required };
|
|
75
77
|
const exitCode = await new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-gate.js","sourceRoot":"","sources":["../../src/update/version-gate.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE9F,
|
|
1
|
+
{"version":3,"file":"version-gate.js","sourceRoot":"","sources":["../../src/update/version-gate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "superun-ai-cli",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.10",
|
|
4
|
+
"description": "通过需求梳理、架构设计与开发协作,将网站和应用的想法转化为可持续迭代、可部署运维的生产级系统。",
|
|
5
5
|
"author": "xiuyu.yi",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"type": "module",
|