sino-bc-cli 1.1.0 → 1.2.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/README.md +30 -33
- package/dist/SKILL.md +41 -21
- package/dist/commands/api-endpoint.command.d.ts +58 -0
- package/dist/commands/api-endpoint.command.js +209 -0
- package/dist/commands/api-endpoint.command.js.map +1 -0
- package/dist/commands/bc-api.command.d.ts +20 -0
- package/dist/commands/bc-api.command.js +30 -0
- package/dist/commands/bc-api.command.js.map +1 -0
- package/dist/commands/ic-api.command.d.ts +8 -42
- package/dist/commands/ic-api.command.js +7 -186
- package/dist/commands/ic-api.command.js.map +1 -1
- package/dist/commands/index.d.ts +2 -2
- package/dist/commands/index.js +7 -9
- package/dist/commands/index.js.map +1 -1
- package/dist/constants/biz-line-api-doc.d.ts +19 -0
- package/dist/constants/biz-line-api-doc.js +353 -0
- package/dist/constants/biz-line-api-doc.js.map +1 -0
- package/dist/constants/index.d.ts +2 -12
- package/dist/constants/index.js +6 -13
- package/dist/constants/index.js.map +1 -1
- package/dist/core/cli-app.js +3 -5
- package/dist/core/cli-app.js.map +1 -1
- package/dist/core/command-registry.d.ts +2 -2
- package/dist/core/command-registry.js +2 -2
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -3
- package/dist/commands/homepage.command.d.ts +0 -19
- package/dist/commands/homepage.command.js +0 -96
- package/dist/commands/homepage.command.js.map +0 -1
- package/dist/commands/nexus-swagger.command.d.ts +0 -19
- package/dist/commands/nexus-swagger.command.js +0 -95
- package/dist/commands/nexus-swagger.command.js.map +0 -1
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ sino-bc-cli /init
|
|
|
91
91
|
### ⑥ 免安装临时执行
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
|
-
npx sino-bc-cli
|
|
94
|
+
npx sino-bc-cli --help
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
注意 `npx` 方式不会持久注册 Agent 技能,需要技能能力时仍请走全局安装 + `/init`。
|
|
@@ -140,9 +140,10 @@ sino-bc-cli/
|
|
|
140
140
|
│ │
|
|
141
141
|
│ ├── commands/ # 📦 命令实现层(每命令一个文件,可独立扩展)
|
|
142
142
|
│ │ ├── index.ts # 命令批量注册入口
|
|
143
|
-
│ │ ├──
|
|
144
|
-
│ │ ├──
|
|
145
|
-
│ │
|
|
143
|
+
│ │ ├── init.command.ts # /init 命令实现(注册 Agent 技能)
|
|
144
|
+
│ │ ├── api-endpoint.command.ts # 接口调用类命令基类(选择接口 → 发起调用 → 打印响应)
|
|
145
|
+
│ │ ├── ic-api.command.ts # /ic-api 命令实现(调用 iCenter 接口地址)
|
|
146
|
+
│ │ └── bc-api.command.ts # /bc-api 命令实现(调用业务线查询 / 业务线策略接口)
|
|
146
147
|
│ │
|
|
147
148
|
│ ├── utils/ # 🛠 工具类层(高内聚的可复用工具)
|
|
148
149
|
│ │ ├── index.ts # 工具模块统一导出
|
|
@@ -156,7 +157,7 @@ sino-bc-cli/
|
|
|
156
157
|
│ │ └── index.ts # 全局接口、枚举定义(ICommand、LogLevel 等)
|
|
157
158
|
│ │
|
|
158
159
|
│ └── constants/ # 🔧 常量配置层
|
|
159
|
-
│ └── index.ts # CLI
|
|
160
|
+
│ └── index.ts # CLI 配置、命令名称、默认值
|
|
160
161
|
│
|
|
161
162
|
├── dist/ # 📤 编译输出目录(编译后自动生成)
|
|
162
163
|
│ └── ... # JavaScript 编译产物 + 类型声明 + SourceMap
|
|
@@ -235,8 +236,8 @@ npm run dev -- [参数]
|
|
|
235
236
|
# 示例:查看帮助
|
|
236
237
|
npm run dev -- --help
|
|
237
238
|
|
|
238
|
-
# 示例:执行 /
|
|
239
|
-
npm run dev -- /
|
|
239
|
+
# 示例:执行 /ic-api 命令
|
|
240
|
+
npm run dev -- /ic-api
|
|
240
241
|
```
|
|
241
242
|
|
|
242
243
|
### 5. 全局安装(推荐)
|
|
@@ -257,7 +258,8 @@ npm i sino-bc-cli -g
|
|
|
257
258
|
|
|
258
259
|
```bash
|
|
259
260
|
sino-bc-cli --help
|
|
260
|
-
sino-bc-cli /
|
|
261
|
+
sino-bc-cli /init
|
|
262
|
+
sino-bc-cli /ic-api
|
|
261
263
|
```
|
|
262
264
|
|
|
263
265
|
`npm i sino-bc-cli -g` 完成后会自动执行 `/init`,把 `SKILL.md` 写到用户主目录的 Agent 技能目录(`~/.agents/skills/sino-bc-cli` 等)。飞书豆包工作:技能·连接器 → 管理 → **本地** → 刷新。若未出现,手动执行:
|
|
@@ -274,11 +276,11 @@ sino-bc-cli /init
|
|
|
274
276
|
|
|
275
277
|
### 可用命令一览
|
|
276
278
|
|
|
277
|
-
| 命令
|
|
278
|
-
|
|
|
279
|
-
| `/
|
|
280
|
-
| `/
|
|
281
|
-
| `/
|
|
279
|
+
| 命令 | 说明 |
|
|
280
|
+
| :-------- | :-------------------------------------------------------------------------------------------- |
|
|
281
|
+
| `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
|
|
282
|
+
| `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
|
|
283
|
+
| `/bc-api` | 交互选择并调用业务线查询 / 业务线策略接口(共 22 个,路径统一带 `/sino-opti-hive` 前缀) |
|
|
282
284
|
|
|
283
285
|
### 全局选项
|
|
284
286
|
|
|
@@ -302,40 +304,35 @@ sino-bc-cli --help
|
|
|
302
304
|
sino-bc-cli -h
|
|
303
305
|
```
|
|
304
306
|
|
|
305
|
-
#### ②
|
|
307
|
+
#### ② 调用 iCenter 接口地址
|
|
306
308
|
|
|
307
309
|
```bash
|
|
308
|
-
sino-bc-cli /
|
|
310
|
+
sino-bc-cli /ic-api
|
|
311
|
+
sino-bc-cli /ic-api test
|
|
309
312
|
```
|
|
310
313
|
|
|
311
|
-
|
|
314
|
+
执行效果:交互选择接口后,向对应环境的 iCenter 接口地址发起请求。
|
|
312
315
|
|
|
313
|
-
#### ③
|
|
316
|
+
#### ③ 调用业务线查询 / 业务线策略接口
|
|
314
317
|
|
|
315
318
|
```bash
|
|
316
|
-
sino-bc-cli /
|
|
319
|
+
sino-bc-cli /bc-api
|
|
320
|
+
sino-bc-cli /bc-api test
|
|
317
321
|
```
|
|
318
322
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
#### ④ 调用 iCenter 接口地址
|
|
323
|
+
执行效果:按「业务线查询(5 个)」「业务线策略(17 个)」两组列出接口,输入序号后向对应环境网关发起请求。所有路径统一带 `/sino-opti-hive` 路由前缀,接口清单见 [`src/api-doc/README.md`](./src/api-doc/README.md)。
|
|
322
324
|
|
|
323
|
-
|
|
324
|
-
sino-bc-cli /ic-api
|
|
325
|
-
sino-bc-cli /ic-api test
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
执行效果:交互选择接口后,向对应环境的 iCenter 接口地址发起请求。
|
|
325
|
+
> ⚠️ 业务线策略组含新建 / 编辑 / 删除等写操作接口,会按文档示例请求体直接发起调用,执行前请确认环境。
|
|
329
326
|
|
|
330
|
-
####
|
|
327
|
+
#### ④ 启用 Debug 模式运行
|
|
331
328
|
|
|
332
329
|
```bash
|
|
333
|
-
sino-bc-cli --debug /
|
|
330
|
+
sino-bc-cli --debug /ic-api
|
|
334
331
|
# 或使用短选项
|
|
335
|
-
sino-bc-cli -d /
|
|
332
|
+
sino-bc-cli -d /ic-api
|
|
336
333
|
```
|
|
337
334
|
|
|
338
|
-
Debug
|
|
335
|
+
Debug 模式会输出详细的日志,包括参数解析、命令注册、接口调用过程等信息,便于排查问题。
|
|
339
336
|
|
|
340
337
|
---
|
|
341
338
|
|
|
@@ -407,8 +404,8 @@ export class ExampleCommand implements ICommand {
|
|
|
407
404
|
import { ExampleCommand } from "./example.command"; // 新增导入
|
|
408
405
|
|
|
409
406
|
export const commands: ICommand[] = [
|
|
410
|
-
new
|
|
411
|
-
new
|
|
407
|
+
new InitCommand(),
|
|
408
|
+
new IcApiCommand(),
|
|
412
409
|
new ExampleCommand(), // 新增注册
|
|
413
410
|
];
|
|
414
411
|
```
|
package/dist/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sino-bc-cli
|
|
3
3
|
description: >
|
|
4
4
|
BeyondClick CLI 项目说明、命令用法、扩展新命令与 npm 发布/回滚步骤。
|
|
5
|
-
Use when 开发或使用 sino-bc-cli、执行 /init /
|
|
5
|
+
Use when 开发或使用 sino-bc-cli、执行 /init /ic-api /bc-api、
|
|
6
6
|
把技能注册到飞书豆包工作 / Cursor / Claude / Codex、扩展命令、
|
|
7
7
|
npm publish、release:patch/minor/major、切 registry、排查 ENEEDAUTH/E403/EPUBLISHCONFLICT,
|
|
8
8
|
或发布到私有 Nexus / 企业私服。
|
|
@@ -116,7 +116,7 @@ npm run rebuild # 清理后重新编译
|
|
|
116
116
|
|
|
117
117
|
```bash
|
|
118
118
|
npm run dev -- --help
|
|
119
|
-
npm run dev -- /
|
|
119
|
+
npm run dev -- /ic-api
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
### 全局安装(推荐)
|
|
@@ -132,8 +132,8 @@ npm i sino-bc-cli -g
|
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
134
|
sino-bc-cli --help
|
|
135
|
-
sino-bc-cli /homepage
|
|
136
135
|
sino-bc-cli /init
|
|
136
|
+
sino-bc-cli /ic-api
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
`npm i -g` / `npm link` 后的 postinstall 会自动执行 `/init`,把 `SKILL.md` 写到 `~/.agents/skills/sino-bc-cli/`(以及 Codex / Cursor / Claude 目录)。飞书豆包工作:技能·连接器 → 管理 → **本地** → 刷新。未出现时再手动跑一遍 `/init`。
|
|
@@ -156,12 +156,11 @@ npm run rebuild # clean + tsc
|
|
|
156
156
|
|
|
157
157
|
### 可用命令
|
|
158
158
|
|
|
159
|
-
| 命令
|
|
160
|
-
|
|
|
161
|
-
| `/init`
|
|
162
|
-
| `/
|
|
163
|
-
| `/
|
|
164
|
-
| `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
|
|
159
|
+
| 命令 | 说明 |
|
|
160
|
+
| :-------- | :----------------------------------------------------------------------------------------------------------------- |
|
|
161
|
+
| `/init` | 将本包 `SKILL.md` 复制到用户主目录下的 Agent 技能目录,供飞书豆包工作 / Cursor / Claude / Codex 自动识别 |
|
|
162
|
+
| `/ic-api` | 交互选择并调用 iCenter 接口地址;`ENV` 默认 `prod`,`API_KEY` 默认使用网关常量 |
|
|
163
|
+
| `/bc-api` | 交互选择并调用业务线查询(5 个)/ 业务线策略(17 个)接口;路径统一带 `/sino-opti-hive` 前缀,参数同 `/ic-api` |
|
|
165
164
|
|
|
166
165
|
### 全局选项
|
|
167
166
|
|
|
@@ -177,20 +176,18 @@ npm run rebuild # clean + tsc
|
|
|
177
176
|
sino-bc-cli --version
|
|
178
177
|
sino-bc-cli --help
|
|
179
178
|
sino-bc-cli /init
|
|
180
|
-
sino-bc-cli /homepage
|
|
181
|
-
sino-bc-cli /nexus-swagger
|
|
182
179
|
sino-bc-cli /ic-api
|
|
183
180
|
sino-bc-cli /ic-api test
|
|
184
|
-
sino-bc-cli
|
|
185
|
-
sino-bc-cli -
|
|
181
|
+
sino-bc-cli /bc-api
|
|
182
|
+
sino-bc-cli /bc-api test
|
|
183
|
+
sino-bc-cli --debug /ic-api
|
|
184
|
+
sino-bc-cli -d /ic-api
|
|
186
185
|
```
|
|
187
186
|
|
|
188
187
|
- `/init`:把 `SKILL.md` 写到 `~/.agents/skills/sino-bc-cli/`(以及 Codex / Cursor / Claude 对应目录)。`npm i sino-bc-cli -g` 的 postinstall 会自动跑一遍;飞书豆包工作请到「技能·连接器 → 管理 → 本地」刷新。Windows 使用 `%USERPROFILE%`,macOS / Linux 使用 `$HOME`。
|
|
189
|
-
|
|
190
|
-
- `/homepage`:打开 `https://business.beyondclick.com/`
|
|
191
|
-
- `/nexus-swagger`:打开 Nexus Swagger 文档页
|
|
192
188
|
- `/ic-api`:交互选择并调用 iCenter 接口地址(默认 `prod` + 内置 API Key)
|
|
193
|
-
-
|
|
189
|
+
- `/bc-api`:交互选择并调用 sino-opti-hive 业务线接口,按「业务线查询 / 业务线策略」分组展示。接口清单在 `src/constants/biz-line-api-doc.ts`,文档在 `src/api-doc/biz-line-query.md`、`src/api-doc/biz-line-strategy.md`。所有路径带 `/sino-opti-hive` 前缀;策略组含写操作接口,执行前先确认环境
|
|
190
|
+
- Debug 会输出参数解析、命令注册、接口调用过程
|
|
194
191
|
|
|
195
192
|
### 跨平台兼容性
|
|
196
193
|
|
|
@@ -231,14 +228,37 @@ export class ExampleCommand implements ICommand {
|
|
|
231
228
|
import { ExampleCommand } from "./example.command";
|
|
232
229
|
|
|
233
230
|
export const commands: ICommand[] = [
|
|
234
|
-
new
|
|
235
|
-
new
|
|
231
|
+
new InitCommand(),
|
|
232
|
+
new IcApiCommand(),
|
|
236
233
|
new ExampleCommand(),
|
|
237
234
|
];
|
|
238
235
|
```
|
|
239
236
|
|
|
240
237
|
完成后 `npm run build`,即可使用 `sino-bc-cli /example`。
|
|
241
238
|
|
|
239
|
+
### 扩展「接口调用类」命令
|
|
240
|
+
|
|
241
|
+
新增一组接口调用命令(如 `/ic-api`、`/bc-api`)时,不要重复实现调用流程,继承 `BaseApiEndpointCommand` 即可复用「解析环境与 API Key → 分组展示接口 → 发起调用 → 打印响应」:
|
|
242
|
+
|
|
243
|
+
1. 在 `src/constants/` 下新建接口清单文件,导出 `IApiDocEndpoint[]`(`group` 字段用于分组展示)
|
|
244
|
+
2. 在 `src/commands/` 下继承 `BaseApiEndpointCommand`,只声明 `name`、`description`、`usage`、`endpoints`、`docSource`
|
|
245
|
+
3. 在 `src/constants/index.ts` 的 `COMMAND_NAMES` 中登记命令名并导出清单,再加入 `commands` 数组
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
// src/commands/example-api.command.ts
|
|
249
|
+
import { IApiDocEndpoint } from "../types";
|
|
250
|
+
import { COMMAND_NAMES, EXAMPLE_APIS } from "../constants";
|
|
251
|
+
import { BaseApiEndpointCommand } from "./api-endpoint.command";
|
|
252
|
+
|
|
253
|
+
export class ExampleApiCommand extends BaseApiEndpointCommand {
|
|
254
|
+
public readonly name: string = COMMAND_NAMES.EXAMPLE_API;
|
|
255
|
+
public readonly description: string = "交互选择并调用示例接口";
|
|
256
|
+
public readonly usage: string = `/${COMMAND_NAMES.EXAMPLE_API} test`;
|
|
257
|
+
protected readonly endpoints: IApiDocEndpoint[] = EXAMPLE_APIS;
|
|
258
|
+
protected readonly docSource: string = "src/api-doc/example.md";
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
242
262
|
---
|
|
243
263
|
|
|
244
264
|
## npm 发布
|
|
@@ -379,7 +399,7 @@ npm view sino-bc-cli version
|
|
|
379
399
|
```powershell
|
|
380
400
|
npx sino-bc-cli@latest --version
|
|
381
401
|
npx sino-bc-cli@latest --help
|
|
382
|
-
# npx sino-bc-cli@latest /
|
|
402
|
+
# npx sino-bc-cli@latest /ic-api
|
|
383
403
|
```
|
|
384
404
|
|
|
385
405
|
**③ 浏览器打开包页**,确认 README 渲染、Version / License / Keywords、Dependencies(lodash、dayjs、axios、crypto-js、chalk、commander、open)
|
|
@@ -469,7 +489,7 @@ npm deprecate sino-bc-cli@* "此包已废弃,请使用 @newscope/sino-bc-cli"
|
|
|
469
489
|
| 发版白名单 files / publishConfig | `package.json` 的 `files` + `publishConfig` |
|
|
470
490
|
| TypeScript 编译配置 | `tsconfig.json` |
|
|
471
491
|
| CLI 入口(带 shebang) | `src/index.ts` → 编译后 `dist/index.js` |
|
|
472
|
-
|
|
|
492
|
+
| 网关 / 命令常量 | `src/constants/index.ts`、`src/constants/gateway.ts` |
|
|
473
493
|
|
|
474
494
|
---
|
|
475
495
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { IApiDocEndpoint, ICommand, EnvName } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 接口调用类命令基类
|
|
4
|
+
* 统一封装「解析环境与 API Key → 交互选择接口 → 按网关地址发起调用 → 打印响应」流程
|
|
5
|
+
* 子类只需提供命令名、描述与可调用接口清单
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class BaseApiEndpointCommand implements ICommand {
|
|
8
|
+
/** 命令名称 */
|
|
9
|
+
abstract readonly name: string;
|
|
10
|
+
/** 命令描述 */
|
|
11
|
+
abstract readonly description: string;
|
|
12
|
+
/** 命令使用示例 */
|
|
13
|
+
abstract readonly usage: string;
|
|
14
|
+
/** 可调用接口清单 */
|
|
15
|
+
protected abstract readonly endpoints: IApiDocEndpoint[];
|
|
16
|
+
/** 接口清单来源说明,展示在选择列表标题处 */
|
|
17
|
+
protected abstract readonly docSource: string;
|
|
18
|
+
/**
|
|
19
|
+
* 命令执行函数
|
|
20
|
+
* @param args 位置参数:[ENV] [API_KEY]
|
|
21
|
+
* @param options 解析后的选项,支持 --env / --api-key
|
|
22
|
+
*/
|
|
23
|
+
execute(args: string[], options?: Record<string, unknown>): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* 解析环境参数,优先级:--env > 位置参数中的合法 ENV > 默认 prod
|
|
26
|
+
*/
|
|
27
|
+
protected resolveEnv(args: string[], options?: Record<string, unknown>): EnvName;
|
|
28
|
+
/**
|
|
29
|
+
* 解析 API Key,优先级:--api-key > 非 ENV 的位置参数 > 默认值
|
|
30
|
+
*/
|
|
31
|
+
protected resolveApiKey(args: string[], options?: Record<string, unknown>): string;
|
|
32
|
+
/**
|
|
33
|
+
* 从 options 中按候选 key 取第一个有效值
|
|
34
|
+
*/
|
|
35
|
+
protected pickOption(options: Record<string, unknown> | undefined, keys: string[]): unknown;
|
|
36
|
+
/**
|
|
37
|
+
* 打印接口清单并让用户选择
|
|
38
|
+
* 接口带 group 时按分组分节展示,序号仍为全局连续编号
|
|
39
|
+
*/
|
|
40
|
+
protected selectApi(): Promise<IApiDocEndpoint>;
|
|
41
|
+
/**
|
|
42
|
+
* 打印即将发起的请求概要
|
|
43
|
+
*/
|
|
44
|
+
protected printRequestPreview(api: IApiDocEndpoint, url: string, apiKey: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* 按接口方法发起请求并打印响应
|
|
47
|
+
*/
|
|
48
|
+
protected callApi(api: IApiDocEndpoint, url: string, apiKey: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* 将响应格式化为可读 JSON 文本
|
|
51
|
+
* 部分接口可能返回 text/plain,需兜底解析
|
|
52
|
+
*/
|
|
53
|
+
protected formatResponse(data: unknown): string;
|
|
54
|
+
/**
|
|
55
|
+
* 统一处理 HTTP 失败:优先打印服务端响应体
|
|
56
|
+
*/
|
|
57
|
+
protected handleRequestError(error: unknown): never;
|
|
58
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
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.BaseApiEndpointCommand = void 0;
|
|
40
|
+
const _ = __importStar(require("lodash"));
|
|
41
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const axios_1 = require("axios");
|
|
44
|
+
const types_1 = require("../types");
|
|
45
|
+
const utils_1 = require("../utils");
|
|
46
|
+
const constants_1 = require("../constants");
|
|
47
|
+
/**
|
|
48
|
+
* 接口调用类命令基类
|
|
49
|
+
* 统一封装「解析环境与 API Key → 交互选择接口 → 按网关地址发起调用 → 打印响应」流程
|
|
50
|
+
* 子类只需提供命令名、描述与可调用接口清单
|
|
51
|
+
*/
|
|
52
|
+
class BaseApiEndpointCommand {
|
|
53
|
+
/**
|
|
54
|
+
* 命令执行函数
|
|
55
|
+
* @param args 位置参数:[ENV] [API_KEY]
|
|
56
|
+
* @param options 解析后的选项,支持 --env / --api-key
|
|
57
|
+
*/
|
|
58
|
+
async execute(args, options) {
|
|
59
|
+
utils_1.logger.debug(`[${this.name}] 命令执行开始,参数: ${JSON.stringify(args)}`);
|
|
60
|
+
const startTime = (0, dayjs_1.default)();
|
|
61
|
+
const env = this.resolveEnv(args, options);
|
|
62
|
+
const apiKey = this.resolveApiKey(args, options);
|
|
63
|
+
const gateway = (0, constants_1.getGatewayConfig)(env);
|
|
64
|
+
utils_1.logger.info(`[${utils_1.CommonUtils.formatDate(startTime)}] 当前环境: ${gateway.label} (${env}),网关: ${gateway.baseUrl}`);
|
|
65
|
+
const api = await this.selectApi();
|
|
66
|
+
const url = (0, constants_1.joinGatewayUrl)(env, api.path);
|
|
67
|
+
this.printRequestPreview(api, url, apiKey);
|
|
68
|
+
await this.callApi(api, url, apiKey);
|
|
69
|
+
const durationSec = _.round((0, dayjs_1.default)().diff(startTime) / 1000, 2);
|
|
70
|
+
utils_1.logger.debug(`[${this.name}] 命令执行完成,耗时: ${durationSec} 秒`);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 解析环境参数,优先级:--env > 位置参数中的合法 ENV > 默认 prod
|
|
74
|
+
*/
|
|
75
|
+
resolveEnv(args, options) {
|
|
76
|
+
const optionValue = this.pickOption(options, ['env', 'ENV']);
|
|
77
|
+
if ((0, constants_1.isEnvName)(optionValue)) {
|
|
78
|
+
return optionValue;
|
|
79
|
+
}
|
|
80
|
+
if (!_.isNil(optionValue) && optionValue !== true) {
|
|
81
|
+
throw new Error(`无效的 ENV: ${String(optionValue)},仅支持 test / pre / prod`);
|
|
82
|
+
}
|
|
83
|
+
const argEnv = _.find(args, (item) => (0, constants_1.isEnvName)(_.toLower(_.trim(item))));
|
|
84
|
+
if (!_.isNil(argEnv)) {
|
|
85
|
+
return _.toLower(_.trim(argEnv));
|
|
86
|
+
}
|
|
87
|
+
return types_1.EnvName.PROD;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 解析 API Key,优先级:--api-key > 非 ENV 的位置参数 > 默认值
|
|
91
|
+
*/
|
|
92
|
+
resolveApiKey(args, options) {
|
|
93
|
+
const optionValue = this.pickOption(options, ['api-key', 'apiKey', 'API_KEY']);
|
|
94
|
+
if (_.isString(optionValue) && !_.isEmpty(_.trim(optionValue))) {
|
|
95
|
+
return _.trim(optionValue);
|
|
96
|
+
}
|
|
97
|
+
const argKey = _.find(args, (item) => !(0, constants_1.isEnvName)(_.toLower(_.trim(item))));
|
|
98
|
+
if (!_.isNil(argKey) && !_.isEmpty(_.trim(argKey))) {
|
|
99
|
+
return _.trim(argKey);
|
|
100
|
+
}
|
|
101
|
+
return constants_1.DEFAULT_API_KEY;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 从 options 中按候选 key 取第一个有效值
|
|
105
|
+
*/
|
|
106
|
+
pickOption(options, keys) {
|
|
107
|
+
if (_.isNil(options)) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
const matchedKey = _.find(keys, (key) => !_.isUndefined(options[key]));
|
|
111
|
+
return _.isNil(matchedKey) ? undefined : options[matchedKey];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 打印接口清单并让用户选择
|
|
115
|
+
* 接口带 group 时按分组分节展示,序号仍为全局连续编号
|
|
116
|
+
*/
|
|
117
|
+
async selectApi() {
|
|
118
|
+
process.stdout.write('\n');
|
|
119
|
+
process.stdout.write(chalk_1.default.bold('📦 可调用接口') + chalk_1.default.gray(`(来源: ${this.docSource})`) + '\n\n');
|
|
120
|
+
// 按 group 分组展示;无 group 的接口归入一个匿名分组
|
|
121
|
+
const grouped = _.groupBy(this.endpoints, (api) => api.group ?? '');
|
|
122
|
+
let serialNo = 0;
|
|
123
|
+
_.forEach(grouped, (apis, group) => {
|
|
124
|
+
if (!_.isEmpty(group)) {
|
|
125
|
+
process.stdout.write(chalk_1.default.bold.blueBright(` ── ${group} (${apis.length}) ──`) + '\n\n');
|
|
126
|
+
}
|
|
127
|
+
_.forEach(apis, (api) => {
|
|
128
|
+
serialNo += 1;
|
|
129
|
+
const serial = chalk_1.default.greenBright(` ${serialNo}.`);
|
|
130
|
+
const title = chalk_1.default.whiteBright(` ${api.displayName}`);
|
|
131
|
+
const meta = chalk_1.default.gray(` ${api.method} ${api.path}`);
|
|
132
|
+
const desc = chalk_1.default.white(` ${api.description}`);
|
|
133
|
+
process.stdout.write(`${serial}${title}\n${meta}\n${desc}\n\n`);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
// 分组仅影响展示顺序,需按同样顺序取回选中项
|
|
137
|
+
const ordered = _.flatMap(grouped, (apis) => apis);
|
|
138
|
+
const selectedIndex = await utils_1.PromptUtils.selectIndex(ordered.length);
|
|
139
|
+
return ordered[selectedIndex];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* 打印即将发起的请求概要
|
|
143
|
+
*/
|
|
144
|
+
printRequestPreview(api, url, apiKey) {
|
|
145
|
+
utils_1.logger.info(`已选择: ${api.displayName} (${api.name})`);
|
|
146
|
+
utils_1.logger.info(`请求方法: ${api.method}`);
|
|
147
|
+
utils_1.logger.info(`请求地址: ${url}`);
|
|
148
|
+
utils_1.logger.debug(`Authorization: Bearer ${apiKey}`);
|
|
149
|
+
utils_1.logger.tip('已注入请求头 Authorization: Bearer ***');
|
|
150
|
+
if (!_.isNil(api.defaultBody)) {
|
|
151
|
+
utils_1.logger.info('请求体(文档默认示例):');
|
|
152
|
+
utils_1.logger.info(api.defaultBody);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
utils_1.logger.info('该接口无请求体');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 按接口方法发起请求并打印响应
|
|
160
|
+
*/
|
|
161
|
+
async callApi(api, url, apiKey) {
|
|
162
|
+
const config = {
|
|
163
|
+
timeout: api.timeout,
|
|
164
|
+
headers: {
|
|
165
|
+
Authorization: `Bearer ${apiKey}`,
|
|
166
|
+
'Content-Type': 'application/json',
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
try {
|
|
170
|
+
utils_1.logger.info('正在发起请求...');
|
|
171
|
+
const data = api.method === 'GET'
|
|
172
|
+
? await utils_1.HttpUtils.get(url, config)
|
|
173
|
+
: await utils_1.HttpUtils.post(url, api.defaultBody, config);
|
|
174
|
+
utils_1.logger.success('接口调用成功,响应如下:');
|
|
175
|
+
process.stdout.write(this.formatResponse(data) + '\n');
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
this.handleRequestError(error);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 将响应格式化为可读 JSON 文本
|
|
183
|
+
* 部分接口可能返回 text/plain,需兜底解析
|
|
184
|
+
*/
|
|
185
|
+
formatResponse(data) {
|
|
186
|
+
if (_.isString(data)) {
|
|
187
|
+
try {
|
|
188
|
+
return JSON.stringify(JSON.parse(data), null, 2);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return data;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return JSON.stringify(data, null, 2);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* 统一处理 HTTP 失败:优先打印服务端响应体
|
|
198
|
+
*/
|
|
199
|
+
handleRequestError(error) {
|
|
200
|
+
if (error instanceof axios_1.AxiosError && !_.isNil(error.response)) {
|
|
201
|
+
utils_1.logger.error(`接口调用失败,HTTP 状态码: ${error.response.status}`);
|
|
202
|
+
process.stdout.write(this.formatResponse(error.response.data) + '\n');
|
|
203
|
+
throw new Error(`接口调用失败: HTTP ${error.response.status}`);
|
|
204
|
+
}
|
|
205
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
exports.BaseApiEndpointCommand = BaseApiEndpointCommand;
|
|
209
|
+
//# sourceMappingURL=api-endpoint.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-endpoint.command.js","sourceRoot":"","sources":["../../src/commands/api-endpoint.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IApiDocEndpoint } from '../types';
|
|
2
|
+
import { BaseApiEndpointCommand } from './api-endpoint.command';
|
|
3
|
+
/**
|
|
4
|
+
* 调用 sino-opti-hive 业务线接口命令
|
|
5
|
+
* 命令名称: /bc-api
|
|
6
|
+
* 功能: 交互选择「业务线查询 / 业务线策略」接口,向对应接口地址发起调用
|
|
7
|
+
* 所有路径统一带 /sino-opti-hive 网关路由前缀
|
|
8
|
+
*/
|
|
9
|
+
export declare class BcApiCommand extends BaseApiEndpointCommand {
|
|
10
|
+
/** 命令名称 */
|
|
11
|
+
readonly name: string;
|
|
12
|
+
/** 命令描述 */
|
|
13
|
+
readonly description: string;
|
|
14
|
+
/** 命令使用示例 */
|
|
15
|
+
readonly usage: string;
|
|
16
|
+
/** 可调用接口清单 */
|
|
17
|
+
protected readonly endpoints: IApiDocEndpoint[];
|
|
18
|
+
/** 接口清单来源说明 */
|
|
19
|
+
protected readonly docSource: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BcApiCommand = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const api_endpoint_command_1 = require("./api-endpoint.command");
|
|
6
|
+
/**
|
|
7
|
+
* 调用 sino-opti-hive 业务线接口命令
|
|
8
|
+
* 命令名称: /bc-api
|
|
9
|
+
* 功能: 交互选择「业务线查询 / 业务线策略」接口,向对应接口地址发起调用
|
|
10
|
+
* 所有路径统一带 /sino-opti-hive 网关路由前缀
|
|
11
|
+
*/
|
|
12
|
+
class BcApiCommand extends api_endpoint_command_1.BaseApiEndpointCommand {
|
|
13
|
+
/** 命令名称 */
|
|
14
|
+
name = constants_1.COMMAND_NAMES.BC_API;
|
|
15
|
+
/** 命令描述 */
|
|
16
|
+
description = '交互选择并调用业务线查询 / 业务线策略接口(请求体默认使用文档示例)';
|
|
17
|
+
/** 命令使用示例 */
|
|
18
|
+
usage = `
|
|
19
|
+
/${constants_1.COMMAND_NAMES.BC_API}
|
|
20
|
+
/${constants_1.COMMAND_NAMES.BC_API} test
|
|
21
|
+
/${constants_1.COMMAND_NAMES.BC_API} prod sk-your-api-key
|
|
22
|
+
sino-bc-cli /${constants_1.COMMAND_NAMES.BC_API} --env=pre --api-key=sk-xxx
|
|
23
|
+
`;
|
|
24
|
+
/** 可调用接口清单 */
|
|
25
|
+
endpoints = constants_1.BIZ_LINE_APIS;
|
|
26
|
+
/** 接口清单来源说明 */
|
|
27
|
+
docSource = 'src/api-doc/biz-line-*.md';
|
|
28
|
+
}
|
|
29
|
+
exports.BcApiCommand = BcApiCommand;
|
|
30
|
+
//# sourceMappingURL=bc-api.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bc-api.command.js","sourceRoot":"","sources":["../../src/commands/bc-api.command.ts"],"names":[],"mappings":";;;AACA,4CAA4D;AAC5D,iEAAgE;AAEhE;;;;;GAKG;AACH,MAAa,YAAa,SAAQ,6CAAsB;IACtD,WAAW;IACK,IAAI,GAAW,yBAAa,CAAC,MAAM,CAAC;IAEpD,WAAW;IACK,WAAW,GAAW,qCAAqC,CAAC;IAE5E,aAAa;IACG,KAAK,GAAW;OAC3B,yBAAa,CAAC,MAAM;OACpB,yBAAa,CAAC,MAAM;OACpB,yBAAa,CAAC,MAAM;mBACR,yBAAa,CAAC,MAAM;GACpC,CAAC;IAEF,cAAc;IACK,SAAS,GAAsB,yBAAa,CAAC;IAEhE,eAAe;IACI,SAAS,GAAW,2BAA2B,CAAC;CACpE;AApBD,oCAoBC"}
|