@cloudglab/yapi-cli 0.0.4 → 0.0.7
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/CHANGELOG.md +19 -0
- package/README.md +22 -4
- package/dist/cli.js +121 -23
- package/dist/cli.js.map +1 -1
- package/dist/core/cli-output.d.ts +1 -1
- package/dist/core/cli-output.js +114 -25
- package/dist/core/cli-output.js.map +1 -1
- package/dist/core/errors.js +36 -3
- package/dist/core/errors.js.map +1 -1
- package/dist/core/http-metrics.d.ts +31 -0
- package/dist/core/http-metrics.js +35 -0
- package/dist/core/http-metrics.js.map +1 -0
- package/dist/core/output.d.ts +18 -4
- package/dist/core/output.js +105 -22
- package/dist/core/output.js.map +1 -1
- package/dist/core/update-probe.d.ts +4 -1
- package/dist/core/update-probe.js +43 -2
- package/dist/core/update-probe.js.map +1 -1
- package/dist/core/url-parser.d.ts +20 -0
- package/dist/core/url-parser.js +237 -0
- package/dist/core/url-parser.js.map +1 -0
- package/dist/install.js +334 -108
- package/dist/install.js.map +1 -1
- package/dist/manifest.json +22 -2
- package/dist/services/yapi/api.d.ts +12 -1
- package/dist/services/yapi/api.js +96 -10
- package/dist/services/yapi/api.js.map +1 -1
- package/dist/tools/shared.d.ts +2 -2
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/yapi/register-auth.js +12 -12
- package/dist/tools/yapi/register-auth.js.map +1 -1
- package/dist/tools/yapi/register-group.js +16 -16
- package/dist/tools/yapi/register-group.js.map +1 -1
- package/dist/tools/yapi/register-interface.js +123 -55
- package/dist/tools/yapi/register-interface.js.map +1 -1
- package/dist/tools/yapi/register-project.js +92 -31
- package/dist/tools/yapi/register-project.js.map +1 -1
- package/dist/tools/yapi/register-test.js +11 -11
- package/dist/tools/yapi/register-test.js.map +1 -1
- package/dist/tools/yapi/register-util.js +124 -34
- package/dist/tools/yapi/register-util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/ai-cli-optimization-plan.md +412 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.0.7 - 2026-06-23
|
|
4
|
+
|
|
5
|
+
- 新增 `--output compact|normal|verbose|pretty` 输出分级;`--json` 继续作为兼容别名,并修复了命令前后位置与 `pnpm dev -- ...` 场景下的全局参数解析。
|
|
6
|
+
- `help` / `list` 现在会展示命令分组、预估成本和推荐下一步,方便在终端与 AI 工作流里更快选择低成本命令。
|
|
7
|
+
- 新增 `project-snapshot`、`interface-snapshot`、`workspace-snapshot` 三个快照命令,一次聚合项目、接口和工作区上下文,减少多次查询。
|
|
8
|
+
- 新增 `url-parse`,并支持直接粘贴 YApi 页面 URL 自动解析或自动执行对应查询命令;当前已覆盖项目、接口、分类、集合、用例、分组、用户和关注页。
|
|
9
|
+
- API 请求新增短时 GET 缓存与 `requestCount` / `durationMs` / `cacheHit` 元信息;常见认证、网络、404、非 JSON 返回等错误提示也更具体。
|
|
10
|
+
|
|
11
|
+
## 0.0.6 - 2026-06-22
|
|
12
|
+
|
|
13
|
+
- `install` 与 `update` 完成后会输出 `yapi-cli` ASCII 标识,和后续的快速开始指引一起展示,便于首次安装后直接继续操作。
|
|
14
|
+
- README 同步补充安装成功后的终端效果说明,保持文档与命令行体验一致。
|
|
15
|
+
|
|
16
|
+
## 0.0.5 - 2026-06-22
|
|
17
|
+
|
|
18
|
+
- `install`、`update`、`uninstall` 的主链路改为对齐 `zentao-cli`:先处理全局 CLI,再通过 `skills add/remove` 安装或卸载 skill,不再把 skill 直接复制到 `~/.opencode/agent`。
|
|
19
|
+
- 安装时会自动清理旧的全局 `yapi` / `yapi-cli` bin 残留,以及 npm / npx 缓存里的历史包目录,减少全局安装因文件冲突失败的问题。
|
|
20
|
+
- 安装完成后的配置校验继续保留统一交互与非交互提示:交互终端会引导输入配置,非交互环境会明确要求显式传入 `--url`、`--username`、`--password`、`--auth-mode`。
|
|
21
|
+
|
|
3
22
|
## 0.0.4 - 2026-06-22
|
|
4
23
|
|
|
5
24
|
- 修复普通账号 `native` 登录链路,兼容需要先用 RSA 公钥加密密码后再调用 `/api/user/login` 的部署环境。
|
package/README.md
CHANGED
|
@@ -8,21 +8,27 @@
|
|
|
8
8
|
|
|
9
9
|
## 这版补了什么
|
|
10
10
|
|
|
11
|
-
-
|
|
11
|
+
- 新增 `compact / normal / verbose / pretty` 输出分级;`--json` 仍可用,且支持放在命令前后位置。
|
|
12
|
+
- 新增 `project-snapshot`、`interface-snapshot`、`workspace-snapshot`,适合先拿上下文再细查。
|
|
13
|
+
- 新增 URL 解析能力:既可以显式执行 `yapi url-parse --url ...`,也可以直接把 YApi 页面 URL 贴给 CLI 自动解析并查询。
|
|
12
14
|
- 新增内置命令:`doctor`、`changelog`、`completion`,补齐安装 / 更新 / 卸载 / 版本查看链路。
|
|
13
15
|
- 配置文件按 `url/username/password/authMode` 收敛;`install` / `config-init` 现在统一走配置校验流程:交互终端会逐步提示填写,非交互环境会明确要求显式传参,token 只保存在认证缓存里。
|
|
14
16
|
- 普通账号 `native` 登录现在兼容两种后端形态:直接明文校验,以及先经 RSA 公钥加密再提交 `/api/user/login`。
|
|
17
|
+
- `install` / `update` / `uninstall` 的安装链路已对齐 `zentao-cli`:优先安装全局 CLI,再通过 `skills add/remove` 管理 skill,并在必要时自动清理旧的全局 bin 与 npm 残留。
|
|
18
|
+
- `install` / `update` 完成后会打印 ASCII 标识和快速开始提示,首次装好后能直接看到下一步命令。
|
|
15
19
|
- 命令层统一使用 `InMemoryCliRegistry + Zod schema + jsonResult`,便于 Agent 稳定调用。
|
|
16
20
|
- 共享了分页、项目 ID、可选文本、布尔值和导出格式等 Zod 片段,减少重复定义。
|
|
17
21
|
- API 客户端加入超时、重试和错误分层,遇到认证 / 网络 / 配置错误时可直接判断。
|
|
18
22
|
|
|
19
23
|
## 典型变化
|
|
20
24
|
|
|
21
|
-
- **输出模式**:`yapi <command> --json`
|
|
25
|
+
- **输出模式**:`yapi <command> --output compact|normal|verbose|pretty` 可切换结果粒度;`--json` 等价于结构化详细输出。
|
|
22
26
|
- **自检**:`yapi doctor --verbose` 可检查 Node 版本、配置、网络连通性和认证状态。
|
|
23
27
|
- **版本记录**:`yapi changelog --limit 5`、`--version`、`--since`、`--raw` 都可用。
|
|
24
28
|
- **补全**:`yapi completion bash|zsh|fish` 会生成对应 shell 的补全脚本。
|
|
25
29
|
- **更新探测**:`yapi update` 会先探测 npm 版本,再刷新 skill 文件。
|
|
30
|
+
- **快照查询**:可先用 `workspace-snapshot`、`project-snapshot`、`interface-snapshot` 拿聚合上下文,再决定是否细查。
|
|
31
|
+
- **URL 入口**:可直接粘贴 YApi 页面 URL,让 CLI 自动解析并执行对应查询命令。
|
|
26
32
|
|
|
27
33
|
## 版本要求
|
|
28
34
|
|
|
@@ -37,9 +43,11 @@
|
|
|
37
43
|
npx -y @cloudglab/yapi-cli@latest install
|
|
38
44
|
```
|
|
39
45
|
|
|
40
|
-
|
|
46
|
+
该命令会先安装全局 CLI,再通过 `skills add` 安装内置 Skill。首次安装时,会先检查本机是否已有可用配置;如果没有,会在交互终端里逐步提示你输入 YApi 地址、登录用户名、登录密码和认证方式。
|
|
41
47
|
|
|
42
|
-
|
|
48
|
+
安装或更新成功后,终端还会打印 ASCII 标识和一组快速开始命令,方便直接继续执行 `yapi help`、`yapi config-init`、`yapi whoami` 等操作。
|
|
49
|
+
|
|
50
|
+
如果需要重新安装 CLI 与 skill,可直接运行:
|
|
43
51
|
|
|
44
52
|
```bash
|
|
45
53
|
yapi install
|
|
@@ -56,6 +64,9 @@ yapi update
|
|
|
56
64
|
```bash
|
|
57
65
|
yapi help
|
|
58
66
|
yapi list
|
|
67
|
+
yapi --json help
|
|
68
|
+
yapi interface-list --project-id 1 --limit 20 --json
|
|
69
|
+
yapi project-list --output compact
|
|
59
70
|
yapi install
|
|
60
71
|
yapi version --verbose
|
|
61
72
|
yapi doctor
|
|
@@ -75,6 +86,8 @@ yapi whoami
|
|
|
75
86
|
|
|
76
87
|
如果在 CI 或其他非交互环境中初始化配置,请显式传入 `--url`、`--username`、`--password`、`--auth-mode`。
|
|
77
88
|
|
|
89
|
+
如果本机之前残留了旧版全局 `yapi` / `yapi-cli` 可执行文件,`install` 会先尝试自动清理,再继续安装。
|
|
90
|
+
|
|
78
91
|
```bash
|
|
79
92
|
yapi group-list
|
|
80
93
|
yapi project-list --project-id 1
|
|
@@ -85,6 +98,11 @@ yapi request --path /api/user/status
|
|
|
85
98
|
```bash
|
|
86
99
|
yapi user-list
|
|
87
100
|
yapi user-search --query alice
|
|
101
|
+
yapi workspace-snapshot
|
|
102
|
+
yapi project-snapshot --project-id 1
|
|
103
|
+
yapi interface-snapshot --interface-id 123
|
|
104
|
+
yapi url-parse --url "https://yapi.example.com/project/1/interface/api/123"
|
|
105
|
+
yapi "https://yapi.example.com/project/1/interface/api/123"
|
|
88
106
|
yapi col-list --project-id 1
|
|
89
107
|
yapi docs-sync --file docs/api.md --project-id 1 --cat-id 2
|
|
90
108
|
```
|
package/dist/cli.js
CHANGED
|
@@ -10,7 +10,48 @@ import { checkForUpdates, getUpdateSuggestion } from './core/update-probe.js';
|
|
|
10
10
|
import { handleCliError } from './core/errors.js';
|
|
11
11
|
import { setOutputFormat, getOutputFormatter } from './tools/shared.js';
|
|
12
12
|
import { getAvailableCommandNames, resolveCommandGroup } from './core/manifest.js';
|
|
13
|
+
import { resetRequestMetrics } from './core/http-metrics.js';
|
|
14
|
+
import { loadConfig } from './services/yapi/index.js';
|
|
15
|
+
import { looksLikeHttpUrl, parseYApiPageUrl, resolveParsedYApiUrlCommand } from './core/url-parser.js';
|
|
13
16
|
const BUILTIN_COMMANDS = ['help', 'list', 'version', 'install', 'update', 'uninstall', 'remove', 'doctor', 'changelog', 'completion'];
|
|
17
|
+
function stripGlobalOutputFlags(rawArgs) {
|
|
18
|
+
const args = [];
|
|
19
|
+
let outputFormat = 'pretty';
|
|
20
|
+
for (let index = 0; index < rawArgs.length; index += 1) {
|
|
21
|
+
const token = rawArgs[index];
|
|
22
|
+
if (token === '--') {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (token === '--json') {
|
|
26
|
+
outputFormat = 'verbose';
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (token === '--output') {
|
|
30
|
+
const next = rawArgs[index + 1];
|
|
31
|
+
if (!next || next.startsWith('-')) {
|
|
32
|
+
throw new Error('缺少 --output 的值');
|
|
33
|
+
}
|
|
34
|
+
outputFormat = parseOutputFormat(next);
|
|
35
|
+
index += 1;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (token.startsWith('--output=')) {
|
|
39
|
+
outputFormat = parseOutputFormat(token.slice('--output='.length));
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
args.push(token);
|
|
43
|
+
}
|
|
44
|
+
return { args, outputFormat };
|
|
45
|
+
}
|
|
46
|
+
function parseOutputFormat(value) {
|
|
47
|
+
if (value === 'json' || value === 'verbose') {
|
|
48
|
+
return 'verbose';
|
|
49
|
+
}
|
|
50
|
+
if (value === 'pretty' || value === 'compact' || value === 'normal') {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`未知输出模式: ${value}`);
|
|
54
|
+
}
|
|
14
55
|
function parseTopLevelArgs(rawArgs) {
|
|
15
56
|
const args = [...rawArgs];
|
|
16
57
|
if (args.length === 0) {
|
|
@@ -30,23 +71,84 @@ function parseTopLevelArgs(rawArgs) {
|
|
|
30
71
|
function isHelpFlag(args) {
|
|
31
72
|
return args.includes('--help') || args.includes('-h');
|
|
32
73
|
}
|
|
33
|
-
function
|
|
34
|
-
|
|
74
|
+
function unwrapJsonContentResult(result) {
|
|
75
|
+
const text = result.content.map((item) => item.text).join('\n');
|
|
76
|
+
try {
|
|
77
|
+
return JSON.parse(text);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return text;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function executeBusinessCommand(commandName, commandArgs) {
|
|
84
|
+
const commandGroup = resolveCommandGroup(commandName);
|
|
85
|
+
if (!commandGroup) {
|
|
86
|
+
throw new Error(`URL 解析后映射到未知命令: ${commandName}`);
|
|
87
|
+
}
|
|
88
|
+
const registry = await buildRegistryForCommand({ commandName, commandGroup });
|
|
89
|
+
const command = registry.getCommand(commandName);
|
|
90
|
+
if (!command) {
|
|
91
|
+
throw new Error(`URL 解析后映射到未注册命令: ${commandName}`);
|
|
92
|
+
}
|
|
93
|
+
const input = parseCommandInput(command.schema, commandArgs);
|
|
94
|
+
return await command.handler(input);
|
|
35
95
|
}
|
|
36
96
|
export async function runCli(rawArgs, appName = 'yapi-cli') {
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
97
|
+
// 每次 CLI 执行开始时清零请求指标,避免上一次运行的累计值混入当前输出
|
|
98
|
+
resetRequestMetrics();
|
|
99
|
+
let args;
|
|
100
|
+
let outputFormat;
|
|
101
|
+
try {
|
|
102
|
+
({ args, outputFormat } = stripGlobalOutputFlags(rawArgs));
|
|
40
103
|
}
|
|
41
|
-
|
|
42
|
-
|
|
104
|
+
catch (error) {
|
|
105
|
+
const msg = handleCliError(error);
|
|
106
|
+
process.stderr.write(`${msg}\n`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
setOutputFormat(outputFormat);
|
|
110
|
+
const { commandName, commandArgs } = parseTopLevelArgs(args);
|
|
111
|
+
if (commandName && looksLikeHttpUrl(commandName)) {
|
|
112
|
+
const output = getOutputFormatter();
|
|
113
|
+
const config = loadConfig();
|
|
114
|
+
const parsed = parseYApiPageUrl(commandName, config?.url ?? null);
|
|
115
|
+
const resolvedCommand = resolveParsedYApiUrlCommand(parsed);
|
|
116
|
+
if (!resolvedCommand) {
|
|
117
|
+
output.printMessage(formatCommandResult(output.result(parsed)));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
const result = await executeBusinessCommand(resolvedCommand.commandName, resolvedCommand.commandArgs);
|
|
122
|
+
if (outputFormat === 'pretty') {
|
|
123
|
+
const lines = [`已从 URL 解析并执行: ${resolvedCommand.displayCommand}`];
|
|
124
|
+
if (parsed.note) {
|
|
125
|
+
lines.push(`说明: ${parsed.note}`);
|
|
126
|
+
}
|
|
127
|
+
lines.push('', formatCommandResult(result));
|
|
128
|
+
output.printMessage(lines.join('\n'));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
output.printMessage(formatCommandResult(output.result({
|
|
132
|
+
parsed,
|
|
133
|
+
executed: {
|
|
134
|
+
commandName: resolvedCommand.commandName,
|
|
135
|
+
commandArgs: resolvedCommand.commandArgs,
|
|
136
|
+
command: resolvedCommand.displayCommand,
|
|
137
|
+
},
|
|
138
|
+
result: unwrapJsonContentResult(result),
|
|
139
|
+
})));
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
const msg = handleCliError(error);
|
|
143
|
+
process.stderr.write(`${msg}\n`);
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
43
146
|
}
|
|
44
|
-
const { commandName, commandArgs } = parseTopLevelArgs(rawArgs);
|
|
45
|
-
const commandNames = getAvailableCommandNames();
|
|
46
147
|
// --- 无参 -> 总帮助 ---
|
|
47
148
|
if (!commandName || commandName === 'help') {
|
|
48
149
|
if (commandArgs.length === 0) {
|
|
49
|
-
|
|
150
|
+
const registry = await buildRegistryForCommand();
|
|
151
|
+
printHelp(appName, registry.listCommands());
|
|
50
152
|
return;
|
|
51
153
|
}
|
|
52
154
|
const targetName = commandArgs[0];
|
|
@@ -72,12 +174,13 @@ export async function runCli(rawArgs, appName = 'yapi-cli') {
|
|
|
72
174
|
}
|
|
73
175
|
// --- list ---
|
|
74
176
|
if (commandName === 'list') {
|
|
75
|
-
|
|
177
|
+
const registry = await buildRegistryForCommand();
|
|
178
|
+
printHelp(appName, registry.listCommands());
|
|
76
179
|
return;
|
|
77
180
|
}
|
|
78
181
|
// --- version ---
|
|
79
182
|
if (commandName === 'version') {
|
|
80
|
-
if (
|
|
183
|
+
if (outputFormat !== 'pretty') {
|
|
81
184
|
process.stdout.write(`${JSON.stringify({ version: CLI_VERSION, name: appName }, null, 2)}\n`);
|
|
82
185
|
}
|
|
83
186
|
else if (commandArgs.includes('--verbose')) {
|
|
@@ -111,7 +214,7 @@ export async function runCli(rawArgs, appName = 'yapi-cli') {
|
|
|
111
214
|
}
|
|
112
215
|
// --- update ---
|
|
113
216
|
if (commandName === 'update') {
|
|
114
|
-
const updateInfo = checkForUpdates();
|
|
217
|
+
const updateInfo = checkForUpdates({ force: true });
|
|
115
218
|
if (updateInfo.isUpdateAvailable) {
|
|
116
219
|
process.stdout.write(`${getUpdateSuggestion(updateInfo)}\n\n`);
|
|
117
220
|
}
|
|
@@ -131,7 +234,7 @@ export async function runCli(rawArgs, appName = 'yapi-cli') {
|
|
|
131
234
|
}
|
|
132
235
|
// --- doctor ---
|
|
133
236
|
if (commandName === 'doctor') {
|
|
134
|
-
await runDoctor(commandArgs);
|
|
237
|
+
await runDoctor(outputFormat === 'pretty' ? commandArgs : ['--json', ...commandArgs]);
|
|
135
238
|
return;
|
|
136
239
|
}
|
|
137
240
|
// --- changelog ---
|
|
@@ -141,32 +244,27 @@ export async function runCli(rawArgs, appName = 'yapi-cli') {
|
|
|
141
244
|
}
|
|
142
245
|
// --- completion ---
|
|
143
246
|
if (commandName === 'completion') {
|
|
247
|
+
const commandNames = getAvailableCommandNames();
|
|
144
248
|
const script = generateCompletionScript(commandNames, appName, commandArgs[0]);
|
|
145
249
|
process.stdout.write(script);
|
|
146
250
|
return;
|
|
147
251
|
}
|
|
148
252
|
// --- 业务命令 ---
|
|
149
|
-
|
|
150
|
-
if (!commandGroup) {
|
|
253
|
+
if (!resolveCommandGroup(commandName)) {
|
|
151
254
|
process.stderr.write(`未找到命令: ${commandName}\n运行 \`${appName} help\` 查看可用命令。\n`);
|
|
152
255
|
process.exitCode = 1;
|
|
153
256
|
return;
|
|
154
257
|
}
|
|
258
|
+
const commandGroup = resolveCommandGroup(commandName);
|
|
155
259
|
const registry = await buildRegistryForCommand({ commandName, commandGroup });
|
|
156
260
|
const command = registry.getCommand(commandName);
|
|
157
|
-
if (!command) {
|
|
158
|
-
process.stderr.write(`未找到命令: ${commandName}\n运行 \`${appName} help\` 查看可用命令。\n`);
|
|
159
|
-
process.exitCode = 1;
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
261
|
if (isHelpFlag(commandArgs)) {
|
|
163
262
|
printCommandHelp(appName, command);
|
|
164
263
|
return;
|
|
165
264
|
}
|
|
166
265
|
// 执行业务命令,统一错误处理
|
|
167
266
|
try {
|
|
168
|
-
const
|
|
169
|
-
const result = await command.handler(input);
|
|
267
|
+
const result = await executeBusinessCommand(commandName, commandArgs);
|
|
170
268
|
const output = getOutputFormatter();
|
|
171
269
|
output.printMessage(formatCommandResult(result));
|
|
172
270
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CliCommandDefinition } from './cli-registry.js';
|
|
2
2
|
export declare function getBuiltinCommandNames(): string[];
|
|
3
3
|
/** 格式化 registry 注册命令的执行结果 */
|
|
4
4
|
export declare function formatCommandResult(result: {
|
package/dist/core/cli-output.js
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
import { describeSchema } from './cli-registry.js';
|
|
2
2
|
import { CLI_VERSION } from '../version.js';
|
|
3
|
+
import { resolveCommandGroup } from './manifest.js';
|
|
4
|
+
const GROUP_ORDER = ['auth', 'group', 'project', 'interface', 'util', 'test'];
|
|
5
|
+
const GROUP_LABELS = {
|
|
6
|
+
auth: '开始使用',
|
|
7
|
+
group: '分组管理',
|
|
8
|
+
project: '项目与环境',
|
|
9
|
+
interface: '接口查询与变更',
|
|
10
|
+
util: '工具与导出',
|
|
11
|
+
test: '测试与自动化',
|
|
12
|
+
};
|
|
3
13
|
export function getBuiltinCommandNames() {
|
|
4
14
|
return ['help', 'install', 'list', 'remove', 'uninstall', 'update', 'version', 'doctor', 'changelog', 'completion'];
|
|
5
15
|
}
|
|
6
16
|
/** 格式化 registry 注册命令的执行结果 */
|
|
7
17
|
export function formatCommandResult(result) {
|
|
8
|
-
const
|
|
9
|
-
return
|
|
18
|
+
const texts = result.content?.map((item) => item.text).filter(Boolean) ?? [];
|
|
19
|
+
return texts.join('\n');
|
|
10
20
|
}
|
|
11
21
|
/** 打印总帮助 */
|
|
12
22
|
export function printHelp(appName, commands) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return { name: command.name, description: command.description ?? '' };
|
|
18
|
-
});
|
|
19
|
-
const maxCommandWidth = Math.max(...commandList.map((command) => command.name.length), 0, 12) + 2;
|
|
23
|
+
const normalized = commands.map((command) => normalizeHelpCommand(command));
|
|
24
|
+
const maxCommandWidth = Math.max(...normalized.map((command) => command.name.length), 0, 12) + 2;
|
|
25
|
+
const grouped = groupCommands(normalized);
|
|
26
|
+
const recommended = pickRecommendedCommands(normalized);
|
|
20
27
|
const lines = [
|
|
21
28
|
`${appName} v${CLI_VERSION}`,
|
|
22
29
|
'',
|
|
@@ -26,17 +33,25 @@ export function printHelp(appName, commands) {
|
|
|
26
33
|
'用法:',
|
|
27
34
|
` ${appName} <command> [options]`,
|
|
28
35
|
` ${appName} help <command>`,
|
|
36
|
+
` ${appName} --output compact <command> [options]`,
|
|
29
37
|
` npx ${appName} <command> [options]`,
|
|
30
38
|
'',
|
|
31
39
|
'快速开始:',
|
|
32
|
-
` ${appName} list
|
|
33
|
-
` ${appName} help <command>
|
|
34
|
-
` ${appName} whoami
|
|
35
|
-
` ${appName} doctor
|
|
40
|
+
` ${appName} list 查看全部可用命令(推荐)`,
|
|
41
|
+
` ${appName} help <command> 查看命令参数`,
|
|
42
|
+
` ${appName} whoami 校验当前账号`,
|
|
43
|
+
` ${appName} doctor --verbose 自检配置与网络`,
|
|
44
|
+
` ${appName} --output compact search --q 关键词`,
|
|
45
|
+
'',
|
|
46
|
+
'输出模式:',
|
|
47
|
+
' pretty 人类友好表格(默认)',
|
|
48
|
+
' compact 精简 JSON,适合 AI 首轮探测',
|
|
49
|
+
' normal 保留主要字段的 JSON',
|
|
50
|
+
' verbose 完整 JSON(`--json` 等价)',
|
|
36
51
|
'',
|
|
37
52
|
'内置命令:',
|
|
38
53
|
' help 显示帮助信息',
|
|
39
|
-
' list
|
|
54
|
+
' list 按分组列出业务命令',
|
|
40
55
|
' version 显示版本号',
|
|
41
56
|
' install 安装 CLI(配置 + skill)',
|
|
42
57
|
' update 检查更新 + 刷新 skill',
|
|
@@ -48,20 +63,43 @@ export function printHelp(appName, commands) {
|
|
|
48
63
|
'',
|
|
49
64
|
'业务命令:',
|
|
50
65
|
];
|
|
51
|
-
if (
|
|
66
|
+
if (normalized.length === 0) {
|
|
52
67
|
lines.push(' (暂无)');
|
|
53
68
|
}
|
|
54
69
|
else {
|
|
55
|
-
for (const
|
|
56
|
-
|
|
70
|
+
for (const group of GROUP_ORDER) {
|
|
71
|
+
const commandsInGroup = grouped.get(group) ?? [];
|
|
72
|
+
if (commandsInGroup.length === 0) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
lines.push(` ${GROUP_LABELS[group]}`);
|
|
76
|
+
for (const command of commandsInGroup) {
|
|
77
|
+
lines.push(formatHelpCommandLine(command, maxCommandWidth));
|
|
78
|
+
}
|
|
79
|
+
lines.push('');
|
|
80
|
+
}
|
|
81
|
+
const others = grouped.get('other') ?? [];
|
|
82
|
+
if (others.length > 0) {
|
|
83
|
+
lines.push(' 其他');
|
|
84
|
+
for (const command of others) {
|
|
85
|
+
lines.push(formatHelpCommandLine(command, maxCommandWidth));
|
|
86
|
+
}
|
|
87
|
+
lines.push('');
|
|
57
88
|
}
|
|
58
89
|
}
|
|
59
|
-
if (
|
|
60
|
-
lines.push(
|
|
61
|
-
|
|
90
|
+
if (normalized.length > 0) {
|
|
91
|
+
lines.push(`共 ${normalized.length} 个业务命令。使用 \`${appName} help <command>\` 查看参数详情。`);
|
|
92
|
+
if (recommended.length > 0) {
|
|
93
|
+
lines.push('');
|
|
94
|
+
lines.push('推荐起手:');
|
|
95
|
+
for (const command of recommended) {
|
|
96
|
+
lines.push(` - ${appName} ${command.name}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
62
99
|
lines.push('');
|
|
63
100
|
lines.push('下一步:');
|
|
64
101
|
lines.push(` - 查看参数:${appName} help <command>`);
|
|
102
|
+
lines.push(` - 精简 JSON:${appName} --output compact <command> ...`);
|
|
65
103
|
lines.push(` - 校验账号:${appName} whoami`);
|
|
66
104
|
lines.push(` - 初始化配置:${appName} config-init --url <url> --username <username> --password <password>`);
|
|
67
105
|
}
|
|
@@ -74,15 +112,66 @@ export function printCommandHelp(appName, command) {
|
|
|
74
112
|
const description = field.description ? `:${field.description}` : '';
|
|
75
113
|
return ` --${field.name} <${field.type}> (${requiredLabel})${description}`;
|
|
76
114
|
});
|
|
115
|
+
const group = resolveCommandGroup(command.name);
|
|
77
116
|
const lines = [
|
|
78
117
|
`${appName} ${command.name}`,
|
|
79
118
|
command.description ?? '',
|
|
80
|
-
'',
|
|
81
|
-
'参数:',
|
|
82
|
-
...(schemaRows.length > 0 ? schemaRows : [' (暂无参数)']),
|
|
83
|
-
'',
|
|
84
|
-
`提示:使用 \`${appName} --json ${command.name} ...\` 可输出 JSON 结果`,
|
|
85
119
|
];
|
|
120
|
+
if (group) {
|
|
121
|
+
lines.push(`分组:${GROUP_LABELS[group] ?? group}`);
|
|
122
|
+
}
|
|
123
|
+
if (command.metadata?.costHint) {
|
|
124
|
+
lines.push(`预估成本:${formatCostHint(command.metadata.costHint)}`);
|
|
125
|
+
}
|
|
126
|
+
if (command.metadata?.nextBestTools?.length) {
|
|
127
|
+
lines.push(`推荐下一步:${command.metadata.nextBestTools.join(' / ')}`);
|
|
128
|
+
}
|
|
129
|
+
lines.push('');
|
|
130
|
+
lines.push('参数:');
|
|
131
|
+
lines.push(...(schemaRows.length > 0 ? schemaRows : [' (暂无参数)']));
|
|
132
|
+
lines.push('');
|
|
133
|
+
lines.push('输出建议:');
|
|
134
|
+
lines.push(` ${appName} --output compact ${command.name} ... # AI 首轮探测`);
|
|
135
|
+
lines.push(` ${appName} --output normal ${command.name} ... # 保留主要字段`);
|
|
136
|
+
lines.push(` ${appName} --output verbose ${command.name} ... # 完整 JSON`);
|
|
137
|
+
lines.push(` ${appName} ${command.name} ... # 人类友好输出`);
|
|
86
138
|
process.stdout.write(`${lines.join('\n')}\n`);
|
|
87
139
|
}
|
|
140
|
+
function normalizeHelpCommand(command) {
|
|
141
|
+
if (typeof command === 'string') {
|
|
142
|
+
return {
|
|
143
|
+
name: command,
|
|
144
|
+
description: '',
|
|
145
|
+
groupKey: resolveCommandGroup(command) ?? 'other',
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
name: command.name,
|
|
150
|
+
description: command.description ?? '',
|
|
151
|
+
metadata: command.metadata,
|
|
152
|
+
groupKey: resolveCommandGroup(command.name) ?? 'other',
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function groupCommands(commands) {
|
|
156
|
+
const grouped = new Map();
|
|
157
|
+
for (const command of commands) {
|
|
158
|
+
grouped.set(command.groupKey, [...(grouped.get(command.groupKey) ?? []), command]);
|
|
159
|
+
}
|
|
160
|
+
for (const [key, items] of grouped) {
|
|
161
|
+
grouped.set(key, [...items].sort((left, right) => left.name.localeCompare(right.name)));
|
|
162
|
+
}
|
|
163
|
+
return grouped;
|
|
164
|
+
}
|
|
165
|
+
function formatHelpCommandLine(command, width) {
|
|
166
|
+
const cost = command.metadata?.costHint ? `[${formatCostHint(command.metadata.costHint)}] ` : '';
|
|
167
|
+
return ` ${command.name.padEnd(width)}${cost}${command.description}`.trimEnd();
|
|
168
|
+
}
|
|
169
|
+
function formatCostHint(costHint) {
|
|
170
|
+
return costHint === 'low' ? '低' : costHint === 'medium' ? '中' : '高';
|
|
171
|
+
}
|
|
172
|
+
function pickRecommendedCommands(commands) {
|
|
173
|
+
const preferred = ['whoami', 'login', 'project-list', 'search', 'interface-list'];
|
|
174
|
+
const index = new Map(commands.map((command) => [command.name, command]));
|
|
175
|
+
return preferred.map((name) => index.get(name)).filter(Boolean);
|
|
176
|
+
}
|
|
88
177
|
//# sourceMappingURL=cli-output.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-output.js","sourceRoot":"","sources":["../../src/core/cli-output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-output.js","sourceRoot":"","sources":["../../src/core/cli-output.ts"],"names":[],"mappings":"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"}
|
package/dist/core/errors.js
CHANGED
|
@@ -60,15 +60,48 @@ export function handleCliError(err) {
|
|
|
60
60
|
if (err instanceof CliError) {
|
|
61
61
|
process.exitCode = err.exitCode;
|
|
62
62
|
let msg = err.message;
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
const hint = mergeHints(err.hint, inferKnownErrorHint(err));
|
|
64
|
+
if (hint)
|
|
65
|
+
msg += `\n提示: ${hint}`;
|
|
65
66
|
return msg;
|
|
66
67
|
}
|
|
67
68
|
if (err instanceof Error) {
|
|
68
69
|
process.exitCode = 1;
|
|
69
|
-
|
|
70
|
+
const hint = inferKnownErrorHint(err);
|
|
71
|
+
return hint ? `${err.message}\n提示: ${hint}` : err.message;
|
|
70
72
|
}
|
|
71
73
|
process.exitCode = 1;
|
|
72
74
|
return String(err);
|
|
73
75
|
}
|
|
76
|
+
function mergeHints(primary, secondary) {
|
|
77
|
+
if (primary && secondary) {
|
|
78
|
+
if (primary === secondary) {
|
|
79
|
+
return primary;
|
|
80
|
+
}
|
|
81
|
+
return `${primary};${secondary}`;
|
|
82
|
+
}
|
|
83
|
+
return primary ?? secondary;
|
|
84
|
+
}
|
|
85
|
+
function inferKnownErrorHint(err) {
|
|
86
|
+
const candidate = err;
|
|
87
|
+
const code = candidate.code ?? '';
|
|
88
|
+
const statusCode = candidate.statusCode;
|
|
89
|
+
const message = err.message;
|
|
90
|
+
if (code === 'AUTH_FAILED' || statusCode === 401 || /登录已过期|未登录|认证失败/i.test(message)) {
|
|
91
|
+
return '请先运行 `yapi login` 重新登录,或用 `yapi whoami` 检查当前状态';
|
|
92
|
+
}
|
|
93
|
+
if (code === 'NETWORK_ERROR' || code === 'TIMEOUT' || /网络错误|请求超时|ECONNRESET|ETIMEDOUT|ENOTFOUND/i.test(message)) {
|
|
94
|
+
return '请检查 YApi 地址和网络连通性,必要时运行 `yapi doctor --verbose`';
|
|
95
|
+
}
|
|
96
|
+
if (statusCode === 404 || code === 'HTTP_NOT_FOUND' || /接口不存在|未找到|not found/i.test(message)) {
|
|
97
|
+
return '请检查接口路径、YApi 地址,或确认当前后端版本是否支持这个接口';
|
|
98
|
+
}
|
|
99
|
+
if (code === 'PARSE_ERROR' || /JSON 解析失败|非 JSON/i.test(message)) {
|
|
100
|
+
return '服务端返回了非 JSON 内容,请检查反向代理、登录态或服务端异常';
|
|
101
|
+
}
|
|
102
|
+
if (code.startsWith('API_ERROR_') && /密码错误|password/i.test(message)) {
|
|
103
|
+
return '请确认账号、密码以及认证方式是否正确(native / ldap)';
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
74
107
|
//# sourceMappingURL=errors.js.map
|