@baijimu/cli 0.1.4
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 +101 -0
- package/dist/args.d.ts +9 -0
- package/dist/args.js +54 -0
- package/dist/args.js.map +1 -0
- package/dist/commands/agent.d.ts +1 -0
- package/dist/commands/agent.js +177 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/api.d.ts +3 -0
- package/dist/commands/api.js +52 -0
- package/dist/commands/api.js.map +1 -0
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +166 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/db-profile.d.ts +1 -0
- package/dist/commands/db-profile.js +66 -0
- package/dist/commands/db-profile.js.map +1 -0
- package/dist/commands/hosted-service.d.ts +1 -0
- package/dist/commands/hosted-service.js +332 -0
- package/dist/commands/hosted-service.js.map +1 -0
- package/dist/commands/module.d.ts +1 -0
- package/dist/commands/module.js +199 -0
- package/dist/commands/module.js.map +1 -0
- package/dist/commands/platform-app.d.ts +1 -0
- package/dist/commands/platform-app.js +225 -0
- package/dist/commands/platform-app.js.map +1 -0
- package/dist/commands/project.d.ts +1 -0
- package/dist/commands/project.js +206 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/runtime.d.ts +1 -0
- package/dist/commands/runtime.js +86 -0
- package/dist/commands/runtime.js.map +1 -0
- package/dist/commands/skill.d.ts +1 -0
- package/dist/commands/skill.js +224 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/workspace.d.ts +1 -0
- package/dist/commands/workspace.js +32 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +71 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +14 -0
- package/dist/errors.js.map +1 -0
- package/dist/help.d.ts +1 -0
- package/dist/help.js +103 -0
- package/dist/help.js.map +1 -0
- package/dist/http.d.ts +12 -0
- package/dist/http.js +82 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +3 -0
- package/dist/json.js +19 -0
- package/dist/json.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { currentAuth, currentEnvironment, loadConfig } from "../config.js";
|
|
2
|
+
import { assertCondition, CliError } from "../errors.js";
|
|
3
|
+
import { BaijimuHttpClient } from "../http.js";
|
|
4
|
+
import { option, parseOptions } from "../args.js";
|
|
5
|
+
import { parseJsonInput, printJson } from "../json.js";
|
|
6
|
+
export async function runSkillCommand(args) {
|
|
7
|
+
const [subcommand, ...rest] = args;
|
|
8
|
+
const config = await loadConfig();
|
|
9
|
+
const env = currentEnvironment(config);
|
|
10
|
+
const auth = currentAuth(config);
|
|
11
|
+
assertCondition(auth.token, "当前环境未登录,请先执行 baijimu auth login --token <lc_pat_...>");
|
|
12
|
+
const client = new BaijimuHttpClient({ environment: env, token: auth.token });
|
|
13
|
+
if (subcommand === "list") {
|
|
14
|
+
const [workspaceId, ...optionArgs] = rest;
|
|
15
|
+
assertCondition(workspaceId, "用法: baijimu skill list <workspaceId> [--review-status status] [--project-id id] [--page n] [--size n] [--api-key key]");
|
|
16
|
+
const options = parseOptions(optionArgs);
|
|
17
|
+
printJson(await client.request({
|
|
18
|
+
method: "GET",
|
|
19
|
+
path: "/apikey/agent-skills",
|
|
20
|
+
query: compactQuery({
|
|
21
|
+
workspaceId,
|
|
22
|
+
reviewStatus: option(options, "review-status"),
|
|
23
|
+
projectId: option(options, "project-id"),
|
|
24
|
+
page: option(options, "page"),
|
|
25
|
+
size: option(options, "size")
|
|
26
|
+
}),
|
|
27
|
+
headers: apiKeyHeader(options)
|
|
28
|
+
}));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (subcommand === "market") {
|
|
32
|
+
const [workspaceId, ...optionArgs] = rest;
|
|
33
|
+
assertCondition(workspaceId, "用法: baijimu skill market <workspaceId> [--page n] [--size n] [--api-key key]");
|
|
34
|
+
const options = parseOptions(optionArgs);
|
|
35
|
+
printJson(await client.request({
|
|
36
|
+
method: "GET",
|
|
37
|
+
path: "/apikey/agent-skills/market",
|
|
38
|
+
query: compactQuery({
|
|
39
|
+
workspaceId,
|
|
40
|
+
page: option(options, "page"),
|
|
41
|
+
size: option(options, "size")
|
|
42
|
+
}),
|
|
43
|
+
headers: apiKeyHeader(options)
|
|
44
|
+
}));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (subcommand === "search") {
|
|
48
|
+
const [query, ...optionArgs] = rest;
|
|
49
|
+
assertCondition(query, "用法: baijimu skill search <query> [--limit n]");
|
|
50
|
+
const options = parseOptions(optionArgs);
|
|
51
|
+
printJson(await client.request({
|
|
52
|
+
method: "GET",
|
|
53
|
+
path: "/apikey/agent-skills/global-market/search",
|
|
54
|
+
query: compactQuery({
|
|
55
|
+
query,
|
|
56
|
+
limit: option(options, "limit")
|
|
57
|
+
})
|
|
58
|
+
}));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (subcommand === "get") {
|
|
62
|
+
const [skillId, ...optionArgs] = rest;
|
|
63
|
+
assertCondition(skillId, "用法: baijimu skill get <skillId> [--api-key key]");
|
|
64
|
+
const options = parseOptions(optionArgs);
|
|
65
|
+
printJson(await client.request({
|
|
66
|
+
method: "GET",
|
|
67
|
+
path: `/apikey/agent-skills/${skillId}`,
|
|
68
|
+
headers: apiKeyHeader(options, false)
|
|
69
|
+
}));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (subcommand === "versions") {
|
|
73
|
+
const [skillId, ...optionArgs] = rest;
|
|
74
|
+
assertCondition(skillId, "用法: baijimu skill versions <skillId> [--api-key key]");
|
|
75
|
+
const options = parseOptions(optionArgs);
|
|
76
|
+
printJson(await client.request({
|
|
77
|
+
method: "GET",
|
|
78
|
+
path: `/apikey/agent-skills/${skillId}/versions`,
|
|
79
|
+
headers: apiKeyHeader(options, false)
|
|
80
|
+
}));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (subcommand === "publish") {
|
|
84
|
+
const [workspaceId, ...optionArgs] = rest;
|
|
85
|
+
assertCondition(workspaceId, "用法: baijimu skill publish <workspaceId> (--project-id id --commit-id id|--github-url url) [--github-ref ref] [--version semver] [--name name] [--description text] [--data json|@file] [--api-key key]");
|
|
86
|
+
const options = parseOptions(optionArgs);
|
|
87
|
+
const body = await parseObjectInput(option(options, "data"));
|
|
88
|
+
body.workspaceId = Number(workspaceId);
|
|
89
|
+
assignNumber(body, "projectId", option(options, "project-id"));
|
|
90
|
+
assignString(body, "gitCommitId", option(options, "commit-id") || option(options, "git-commit-id"));
|
|
91
|
+
assignString(body, "githubUrl", option(options, "github-url"));
|
|
92
|
+
assignString(body, "githubRef", option(options, "github-ref"));
|
|
93
|
+
assignString(body, "version", option(options, "version"));
|
|
94
|
+
assignString(body, "skillName", option(options, "name") || option(options, "skill-name"));
|
|
95
|
+
assignString(body, "skillDescription", option(options, "description") || option(options, "skill-description"));
|
|
96
|
+
assertPublishSource(body);
|
|
97
|
+
printJson(await client.request({
|
|
98
|
+
method: "POST",
|
|
99
|
+
path: "/apikey/agent-skills/publish",
|
|
100
|
+
body,
|
|
101
|
+
headers: apiKeyHeader(options)
|
|
102
|
+
}));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (subcommand === "publish-oss") {
|
|
106
|
+
const [workspaceId, ...optionArgs] = rest;
|
|
107
|
+
assertCondition(workspaceId, "用法: baijimu skill publish-oss <workspaceId> --oss-url url [--version semver] [--name name] [--description text] [--archive-size n] [--archive-checksum sha256] [--data json|@file] [--api-key key]");
|
|
108
|
+
const options = parseOptions(optionArgs);
|
|
109
|
+
const body = await parseObjectInput(option(options, "data"));
|
|
110
|
+
body.workspaceId = Number(workspaceId);
|
|
111
|
+
assignString(body, "ossUrl", option(options, "oss-url"));
|
|
112
|
+
assignString(body, "version", option(options, "version"));
|
|
113
|
+
assignString(body, "skillName", option(options, "name") || option(options, "skill-name"));
|
|
114
|
+
assignString(body, "skillDescription", option(options, "description") || option(options, "skill-description"));
|
|
115
|
+
assignNumber(body, "archiveSize", option(options, "archive-size"));
|
|
116
|
+
assignString(body, "archiveChecksum", option(options, "archive-checksum"));
|
|
117
|
+
assertCondition(body.ossUrl, "publish-oss 需要 --oss-url 或 --data.ossUrl");
|
|
118
|
+
printJson(await client.request({
|
|
119
|
+
method: "POST",
|
|
120
|
+
path: "/apikey/agent-skills/publish-oss",
|
|
121
|
+
body,
|
|
122
|
+
headers: apiKeyHeader(options)
|
|
123
|
+
}));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (subcommand === "submit-review" || subcommand === "publish-market") {
|
|
127
|
+
const [skillId, ...optionArgs] = rest;
|
|
128
|
+
assertCondition(skillId, "用法: baijimu skill submit-review <skillId> [--api-key key]");
|
|
129
|
+
const options = parseOptions(optionArgs);
|
|
130
|
+
printJson(await client.request({
|
|
131
|
+
method: "POST",
|
|
132
|
+
path: `/apikey/agent-skills/${skillId}/publish-market`,
|
|
133
|
+
headers: apiKeyHeader(options)
|
|
134
|
+
}));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (subcommand === "install-internal") {
|
|
138
|
+
const [agentConfigId, ...optionArgs] = rest;
|
|
139
|
+
assertCondition(agentConfigId, "用法: baijimu skill install-internal <agentConfigId> --skill-id <skillId> [--version semver]");
|
|
140
|
+
const options = parseOptions(optionArgs);
|
|
141
|
+
const skillId = option(options, "skill-id");
|
|
142
|
+
assertCondition(skillId, "install-internal 需要 --skill-id");
|
|
143
|
+
const body = { skillId: Number(skillId) };
|
|
144
|
+
assignString(body, "version", option(options, "version"));
|
|
145
|
+
printJson(await client.request({
|
|
146
|
+
method: "POST",
|
|
147
|
+
path: `/partner/v1/agent-config/${agentConfigId}/skills/install-internal`,
|
|
148
|
+
body
|
|
149
|
+
}));
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (subcommand === "install-external") {
|
|
153
|
+
const [agentConfigId, ...optionArgs] = rest;
|
|
154
|
+
assertCondition(agentConfigId, "用法: baijimu skill install-external <agentConfigId> --download-url <url>");
|
|
155
|
+
const options = parseOptions(optionArgs);
|
|
156
|
+
const downloadUrl = option(options, "download-url");
|
|
157
|
+
assertCondition(downloadUrl, "install-external 需要 --download-url");
|
|
158
|
+
printJson(await client.request({
|
|
159
|
+
method: "POST",
|
|
160
|
+
path: `/partner/v1/agent-config/${agentConfigId}/skills/install-external`,
|
|
161
|
+
body: { downloadUrl }
|
|
162
|
+
}));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (subcommand === "file") {
|
|
166
|
+
const [agentConfigId, ...optionArgs] = rest;
|
|
167
|
+
assertCondition(agentConfigId, "用法: baijimu skill file <agentConfigId> --skill-ref <ref> [--path path] [--project-id id]");
|
|
168
|
+
const options = parseOptions(optionArgs);
|
|
169
|
+
const skillRef = option(options, "skill-ref") || option(options, "skill");
|
|
170
|
+
assertCondition(skillRef, "skill file 需要 --skill-ref");
|
|
171
|
+
const body = { skillRef };
|
|
172
|
+
assignString(body, "path", option(options, "path"));
|
|
173
|
+
assignNumber(body, "projectId", option(options, "project-id"));
|
|
174
|
+
printJson(await client.request({
|
|
175
|
+
method: "POST",
|
|
176
|
+
path: `/partner/v1/agent-config/${agentConfigId}/skills/file`,
|
|
177
|
+
body
|
|
178
|
+
}));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
throw new CliError("用法: baijimu skill <list|market|search|get|versions|publish|publish-oss|submit-review|install-internal|install-external|file> ...");
|
|
182
|
+
}
|
|
183
|
+
function apiKeyHeader(options, required = true) {
|
|
184
|
+
const apiKey = option(options, "api-key") || process.env.BAIJIMU_API_KEY;
|
|
185
|
+
if (!apiKey) {
|
|
186
|
+
assertCondition(!required, "该技能接口需要 --api-key 或环境变量 BAIJIMU_API_KEY;当前 baijimu auth token 不会自动当作 X-API-Key 使用");
|
|
187
|
+
return {};
|
|
188
|
+
}
|
|
189
|
+
return { "X-API-Key": apiKey };
|
|
190
|
+
}
|
|
191
|
+
function compactQuery(input) {
|
|
192
|
+
const query = {};
|
|
193
|
+
for (const [key, value] of Object.entries(input)) {
|
|
194
|
+
if (value !== undefined && value !== "") {
|
|
195
|
+
query[key] = [value];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return query;
|
|
199
|
+
}
|
|
200
|
+
async function parseObjectInput(input) {
|
|
201
|
+
const parsed = await parseJsonInput(input, {});
|
|
202
|
+
assertCondition(isPlainObject(parsed), "--data 必须是 JSON object");
|
|
203
|
+
return { ...parsed };
|
|
204
|
+
}
|
|
205
|
+
function assignString(body, key, value) {
|
|
206
|
+
if (value !== undefined) {
|
|
207
|
+
body[key] = value;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function assignNumber(body, key, value) {
|
|
211
|
+
if (value !== undefined) {
|
|
212
|
+
body[key] = Number(value);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function assertPublishSource(body) {
|
|
216
|
+
const hasProjectSource = body.projectId !== undefined && Boolean(body.gitCommitId);
|
|
217
|
+
const hasGithubUrl = Boolean(body.githubUrl);
|
|
218
|
+
assertCondition(hasProjectSource || hasGithubUrl, "publish 需要 --project-id + --commit-id,或 --github-url");
|
|
219
|
+
assertCondition(!(hasProjectSource && hasGithubUrl), "publish 的项目来源和 GitHub 来源不能同时提供");
|
|
220
|
+
}
|
|
221
|
+
function isPlainObject(value) {
|
|
222
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runWorkspaceCommand(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { currentAuth, currentEnvironment, loadConfig } from "../config.js";
|
|
2
|
+
import { assertCondition } from "../errors.js";
|
|
3
|
+
import { BaijimuHttpClient } from "../http.js";
|
|
4
|
+
import { option, parseOptions } from "../args.js";
|
|
5
|
+
import { printJson } from "../json.js";
|
|
6
|
+
export async function runWorkspaceCommand(args) {
|
|
7
|
+
const [subcommand, ...rest] = args;
|
|
8
|
+
const config = await loadConfig();
|
|
9
|
+
const auth = currentAuth(config);
|
|
10
|
+
assertCondition(auth.token, "当前环境未登录,请先执行 baijimu auth login --token <lc_pat_...>");
|
|
11
|
+
const client = new BaijimuHttpClient({
|
|
12
|
+
environment: currentEnvironment(config),
|
|
13
|
+
token: auth.token
|
|
14
|
+
});
|
|
15
|
+
if (subcommand === "list") {
|
|
16
|
+
const options = parseOptions(rest);
|
|
17
|
+
const body = {
|
|
18
|
+
page: Number(option(options, "page") || "1"),
|
|
19
|
+
pageSize: Number(option(options, "page-size") || "20")
|
|
20
|
+
};
|
|
21
|
+
printJson(await client.request({ method: "POST", path: "/partner/v1/workspaces/list", body }));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (subcommand === "get") {
|
|
25
|
+
const [workspaceId] = rest;
|
|
26
|
+
assertCondition(workspaceId, "用法: baijimu workspace get <workspaceId>");
|
|
27
|
+
printJson(await client.request({ method: "GET", path: `/partner/v1/workspaces/${workspaceId}` }));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
throw new Error("用法: baijimu workspace <list|get>");
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAc;IACtD,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,sDAAsD,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC;YAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC;SACvD,CAAC;QACF,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;QAC3B,eAAe,CAAC,WAAW,EAAE,yCAAyC,CAAC,CAAC;QACxE,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAClG,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AuthConfig, BaijimuCliConfig, EnvironmentConfig } from "./types.js";
|
|
2
|
+
export declare function configPath(): string;
|
|
3
|
+
export declare function defaultConfig(): BaijimuCliConfig;
|
|
4
|
+
export declare function loadConfig(): Promise<BaijimuCliConfig>;
|
|
5
|
+
export declare function saveConfig(config: BaijimuCliConfig): Promise<void>;
|
|
6
|
+
export declare function normalizeConfig(config: Partial<BaijimuCliConfig>): BaijimuCliConfig;
|
|
7
|
+
export declare function currentEnvironment(config: BaijimuCliConfig): EnvironmentConfig;
|
|
8
|
+
export declare function currentAuth(config: BaijimuCliConfig): AuthConfig;
|
|
9
|
+
export declare function setCurrentAuth(config: BaijimuCliConfig, auth: AuthConfig): void;
|
|
10
|
+
export declare function maskToken(token: string | undefined): string;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile, chmod } from "node:fs/promises";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
const DEFAULT_CONFIG_DIR = join(homedir(), ".config", "baijimu-cli");
|
|
6
|
+
const DEFAULT_CONFIG_PATH = join(DEFAULT_CONFIG_DIR, "config.json");
|
|
7
|
+
const DEFAULT_ENVIRONMENTS = {
|
|
8
|
+
prod: {
|
|
9
|
+
name: "prod",
|
|
10
|
+
baseUrl: "https://www.baijimu.com/lowcode3",
|
|
11
|
+
managerUrl: "https://www.baijimu.com/manager"
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export function configPath() {
|
|
15
|
+
return process.env.BAIJIMU_CLI_CONFIG || DEFAULT_CONFIG_PATH;
|
|
16
|
+
}
|
|
17
|
+
export function defaultConfig() {
|
|
18
|
+
return {
|
|
19
|
+
currentEnv: "prod",
|
|
20
|
+
environments: { ...DEFAULT_ENVIRONMENTS },
|
|
21
|
+
auth: {}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export async function loadConfig() {
|
|
25
|
+
const path = configPath();
|
|
26
|
+
if (!existsSync(path)) {
|
|
27
|
+
return defaultConfig();
|
|
28
|
+
}
|
|
29
|
+
const raw = await readFile(path, "utf8");
|
|
30
|
+
const parsed = JSON.parse(raw);
|
|
31
|
+
return normalizeConfig(parsed);
|
|
32
|
+
}
|
|
33
|
+
export async function saveConfig(config) {
|
|
34
|
+
const path = configPath();
|
|
35
|
+
await mkdir(dirname(path), { recursive: true });
|
|
36
|
+
await writeFile(path, `${JSON.stringify(config, null, 2)}\n`, { mode: 0o600 });
|
|
37
|
+
if (process.platform !== "win32") {
|
|
38
|
+
await chmod(path, 0o600);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function normalizeConfig(config) {
|
|
42
|
+
const environments = {
|
|
43
|
+
...DEFAULT_ENVIRONMENTS,
|
|
44
|
+
...(config.environments || {})
|
|
45
|
+
};
|
|
46
|
+
const currentEnv = config.currentEnv && environments[config.currentEnv] ? config.currentEnv : "prod";
|
|
47
|
+
return {
|
|
48
|
+
currentEnv,
|
|
49
|
+
environments,
|
|
50
|
+
auth: config.auth || {}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function currentEnvironment(config) {
|
|
54
|
+
return config.environments[config.currentEnv] || DEFAULT_ENVIRONMENTS.prod;
|
|
55
|
+
}
|
|
56
|
+
export function currentAuth(config) {
|
|
57
|
+
return config.auth[config.currentEnv] || {};
|
|
58
|
+
}
|
|
59
|
+
export function setCurrentAuth(config, auth) {
|
|
60
|
+
config.auth[config.currentEnv] = auth;
|
|
61
|
+
}
|
|
62
|
+
export function maskToken(token) {
|
|
63
|
+
if (!token) {
|
|
64
|
+
return "";
|
|
65
|
+
}
|
|
66
|
+
if (token.length <= 14) {
|
|
67
|
+
return `${token.slice(0, 4)}...`;
|
|
68
|
+
}
|
|
69
|
+
return `${token.slice(0, 8)}...${token.slice(-6)}`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
package/dist/errors.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class CliError extends Error {
|
|
2
|
+
exitCode;
|
|
3
|
+
constructor(message, exitCode = 1) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = "CliError";
|
|
6
|
+
this.exitCode = exitCode;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function assertCondition(condition, message) {
|
|
10
|
+
if (!condition) {
|
|
11
|
+
throw new CliError(message);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IAE1B,YAAY,OAAe,EAAE,QAAQ,GAAG,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,SAAkB,EAAE,OAAe;IACjE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
package/dist/help.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const HELP_TEXT = "Baijimu CLI\n\nUsage:\n baijimu auth login [--workspace-id <id>] [--scope <scope,...>] [--no-browser]\n baijimu auth login --token <lc_pat_...>\n baijimu auth token set <lc_pat_...>\n baijimu auth status [--verify]\n baijimu auth logout\n\n baijimu api <METHOD> <PATH> [--data <json|@file>] [--query k=v] [--header 'Name: value']\n\n baijimu workspace list [--page 1] [--page-size 20]\n baijimu workspace get <workspaceId>\n\n baijimu project file list <projectId> [path]\n baijimu project file read <projectId> <path> [--include-binary]\n baijimu project file write <projectId> <path> (--content <text>|--content-file <file>) [--encoding text|base64] [--no-create]\n baijimu project file grep <projectId> <query> [path] [--regex] [--case-sensitive] [--max-results n] [--include glob] [--exclude glob]\n baijimu project file download <projectId> [path]\n baijimu project file import-url <projectId> <targetPath> --source-url <url> [--file-name name] [--content-type type]\n\n baijimu project git status <projectId>\n baijimu project git head <projectId>\n baijimu project git log <projectId> [--limit n]\n baijimu project git diff <projectId> <filePath> [--staged]\n baijimu project git commit <projectId> --message <message> [--file path ...]\n baijimu project git pull <projectId>\n baijimu project git push <projectId>\n baijimu project git rollback <projectId> <file...>\n baijimu project git reset <projectId> <commitId>\n\n baijimu agent session create <projectId> --agent-config-id <id> [--title title] [--metadata <json|@file>]\n baijimu agent session list <projectId> [--limit n] [--offset n]\n baijimu agent session recent [--limit n] [--offset n]\n baijimu agent session get <projectId> <sessionId>\n baijimu agent session messages <projectId> <sessionId> [--limit n] [--offset n] [--before-message-id id]\n baijimu agent session audit <projectId> <sessionId>\n baijimu agent session delete <projectId> <sessionId>\n baijimu agent chat <projectId> <sessionId> --message <text> [--agent-config-id id] [--client-message-id id]\n\n baijimu module list <workspaceId> [--project-id <projectId>]\n baijimu module project create <workspaceId> --name <name> [--description <text>] [--access-scope workspace|restricted] [--data <json|@file>]\n baijimu module create <workspaceId> --project-id <projectId> --name <name> --description <text> [--property-definition <json|@file>] [--user-domains <json|@file>] [--data <json|@file>]\n baijimu module method create <workspaceId> <projectId> --name <name> [--description <text>] [--type <type>] [--method-body <text>|--method-body-file <file>] [--param-definitions <json|@file>] [--async] [--data <json|@file>]\n baijimu module method delete <workspaceId> <projectId> <methodId>\n baijimu module publish <workspaceId> <projectId> --module-id <moduleId> --version <semver> [--commit-id <id>] [--description <text>] [--scope-type <scope>]\n\n baijimu hosted-service create <workspaceId> --service-key <key> --name <name> --source-project-id <id> [--description <text>]\n baijimu hosted-service get <workspaceId> --id <id>\n baijimu hosted-service list <workspaceId>\n baijimu hosted-service env create <workspaceId> --hosted-service-id <id> --name <env> [--config-json <json>]\n baijimu hosted-service env list <workspaceId> --hosted-service-id <id>\n baijimu hosted-service config-provider list <workspaceId> [--hosted-service-id <id>] [--include-global true]\n baijimu hosted-service config-binding create <workspaceId> --environment-id <id> --name <name> --provider-key <key> --profile-ref <ref> [--profile-auth-token <token>]\n baijimu hosted-service config-binding list <workspaceId> --environment-id <id>\n baijimu hosted-service config-binding update <workspaceId> --data <json|@file>\n baijimu hosted-service config-binding delete <workspaceId> --data <json|@file>\n baijimu hosted-service consumer create <workspaceId> --environment-id <id> --name <name>\n baijimu hosted-service consumer list <workspaceId> --environment-id <id>\n baijimu hosted-service token create <workspaceId> --environment-id <id> [--endpoint-name <name>] [--consumer-id <id>|--consumer-name <name>] [--scopes <csv>]\n baijimu hosted-service token list <workspaceId> --environment-id <id>\n baijimu hosted-service token revoke <workspaceId> --environment-id <id> --token-id <id>\n baijimu hosted-service auth-config get <workspaceId> --environment-id <id>\n baijimu hosted-service project get <workspaceId> <projectId>\n baijimu hosted-service project publish <workspaceId> <projectId> [--environment-id <id>]\n baijimu hosted-service project artifacts <workspaceId> <projectId> [--limit n]\n baijimu hosted-service project deployments <workspaceId> <projectId> [--environment-id <id>] [--limit n]\n\n baijimu db-profile allocate <workspaceId> [--database-name <name>] [--metadata-json <json>]\n baijimu db-profile list <workspaceId>\n baijimu db-profile get <workspaceId> --id <id>\n baijimu db-profile release <workspaceId> --id <id>\n\n baijimu platform-app list [--include-system true]\n baijimu platform-app create --platform-app-id <id> --name <name> [--description <text>] [--version <semver>] [--entry-type PLATFORM_ROUTE|EXTERNAL_URL|TRUSTED_EXTERNAL_APP] [--entry-url-template <url>] [--open-mode CURRENT|NEW_TAB|WORKSPACE_TAB] [--market-scope WORKSPACE|PUBLIC] [--install-workspace-id <id>]\n baijimu platform-app version list <platformAppId>\n baijimu platform-app version publish <platformAppId> --version <semver> --entry-url-template <url> [--entry-type <type>] [--open-mode <mode>]\n baijimu platform-app market publish <platformAppId> --version-id <id> [--scope-type WORKSPACE|PUBLIC] [--workspace-id <id>]\n baijimu platform-app workspace install <workspaceId> <platformAppId> [--version-id <id>]\n baijimu platform-app workspace list <workspaceId>\n\n baijimu skill list <workspaceId> [--review-status status] [--project-id id] [--page n] [--size n] --api-key key\n baijimu skill market <workspaceId> [--page n] [--size n] --api-key key\n baijimu skill search <query> [--limit n]\n baijimu skill get <skillId> [--api-key key]\n baijimu skill versions <skillId> [--api-key key]\n baijimu skill publish <workspaceId> (--project-id id --commit-id id|--github-url url) [--github-ref ref] [--version semver] [--name name] [--description text] [--data <json|@file>] --api-key key\n baijimu skill publish-oss <workspaceId> --oss-url url [--version semver] [--name name] [--description text] [--archive-size n] [--archive-checksum sha256] [--data <json|@file>] --api-key key\n baijimu skill submit-review <skillId> --api-key key\n baijimu skill install-internal <agentConfigId> --skill-id <skillId> [--version semver]\n baijimu skill install-external <agentConfigId> --download-url <url>\n baijimu skill file <agentConfigId> --skill-ref <ref> [--path path] [--project-id id]\n\n baijimu runtime app install <workspaceId> --module-id <moduleId> [--version-id <versionId>] [--properties <json|@file>]\n baijimu runtime app upgrade <workspaceId> --module-id <moduleId> --version-id <versionId> [--properties <json|@file>]\n baijimu runtime app update-properties <workspaceId> --module-id <moduleId> --properties <json|@file>\n baijimu runtime app uninstall <workspaceId> --module-id <moduleId>\n\nEnvironment variables:\n BAIJIMU_CLI_CONFIG Override config file path.\n BAIJIMU_API_KEY API key for /apikey skill publishing and market management commands.\n";
|
package/dist/help.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export const HELP_TEXT = `Baijimu CLI
|
|
2
|
+
|
|
3
|
+
Usage:
|
|
4
|
+
baijimu auth login [--workspace-id <id>] [--scope <scope,...>] [--no-browser]
|
|
5
|
+
baijimu auth login --token <lc_pat_...>
|
|
6
|
+
baijimu auth token set <lc_pat_...>
|
|
7
|
+
baijimu auth status [--verify]
|
|
8
|
+
baijimu auth logout
|
|
9
|
+
|
|
10
|
+
baijimu api <METHOD> <PATH> [--data <json|@file>] [--query k=v] [--header 'Name: value']
|
|
11
|
+
|
|
12
|
+
baijimu workspace list [--page 1] [--page-size 20]
|
|
13
|
+
baijimu workspace get <workspaceId>
|
|
14
|
+
|
|
15
|
+
baijimu project file list <projectId> [path]
|
|
16
|
+
baijimu project file read <projectId> <path> [--include-binary]
|
|
17
|
+
baijimu project file write <projectId> <path> (--content <text>|--content-file <file>) [--encoding text|base64] [--no-create]
|
|
18
|
+
baijimu project file grep <projectId> <query> [path] [--regex] [--case-sensitive] [--max-results n] [--include glob] [--exclude glob]
|
|
19
|
+
baijimu project file download <projectId> [path]
|
|
20
|
+
baijimu project file import-url <projectId> <targetPath> --source-url <url> [--file-name name] [--content-type type]
|
|
21
|
+
|
|
22
|
+
baijimu project git status <projectId>
|
|
23
|
+
baijimu project git head <projectId>
|
|
24
|
+
baijimu project git log <projectId> [--limit n]
|
|
25
|
+
baijimu project git diff <projectId> <filePath> [--staged]
|
|
26
|
+
baijimu project git commit <projectId> --message <message> [--file path ...]
|
|
27
|
+
baijimu project git pull <projectId>
|
|
28
|
+
baijimu project git push <projectId>
|
|
29
|
+
baijimu project git rollback <projectId> <file...>
|
|
30
|
+
baijimu project git reset <projectId> <commitId>
|
|
31
|
+
|
|
32
|
+
baijimu agent session create <projectId> --agent-config-id <id> [--title title] [--metadata <json|@file>]
|
|
33
|
+
baijimu agent session list <projectId> [--limit n] [--offset n]
|
|
34
|
+
baijimu agent session recent [--limit n] [--offset n]
|
|
35
|
+
baijimu agent session get <projectId> <sessionId>
|
|
36
|
+
baijimu agent session messages <projectId> <sessionId> [--limit n] [--offset n] [--before-message-id id]
|
|
37
|
+
baijimu agent session audit <projectId> <sessionId>
|
|
38
|
+
baijimu agent session delete <projectId> <sessionId>
|
|
39
|
+
baijimu agent chat <projectId> <sessionId> --message <text> [--agent-config-id id] [--client-message-id id]
|
|
40
|
+
|
|
41
|
+
baijimu module list <workspaceId> [--project-id <projectId>]
|
|
42
|
+
baijimu module project create <workspaceId> --name <name> [--description <text>] [--access-scope workspace|restricted] [--data <json|@file>]
|
|
43
|
+
baijimu module create <workspaceId> --project-id <projectId> --name <name> --description <text> [--property-definition <json|@file>] [--user-domains <json|@file>] [--data <json|@file>]
|
|
44
|
+
baijimu module method create <workspaceId> <projectId> --name <name> [--description <text>] [--type <type>] [--method-body <text>|--method-body-file <file>] [--param-definitions <json|@file>] [--async] [--data <json|@file>]
|
|
45
|
+
baijimu module method delete <workspaceId> <projectId> <methodId>
|
|
46
|
+
baijimu module publish <workspaceId> <projectId> --module-id <moduleId> --version <semver> [--commit-id <id>] [--description <text>] [--scope-type <scope>]
|
|
47
|
+
|
|
48
|
+
baijimu hosted-service create <workspaceId> --service-key <key> --name <name> --source-project-id <id> [--description <text>]
|
|
49
|
+
baijimu hosted-service get <workspaceId> --id <id>
|
|
50
|
+
baijimu hosted-service list <workspaceId>
|
|
51
|
+
baijimu hosted-service env create <workspaceId> --hosted-service-id <id> --name <env> [--config-json <json>]
|
|
52
|
+
baijimu hosted-service env list <workspaceId> --hosted-service-id <id>
|
|
53
|
+
baijimu hosted-service config-provider list <workspaceId> [--hosted-service-id <id>] [--include-global true]
|
|
54
|
+
baijimu hosted-service config-binding create <workspaceId> --environment-id <id> --name <name> --provider-key <key> --profile-ref <ref> [--profile-auth-token <token>]
|
|
55
|
+
baijimu hosted-service config-binding list <workspaceId> --environment-id <id>
|
|
56
|
+
baijimu hosted-service config-binding update <workspaceId> --data <json|@file>
|
|
57
|
+
baijimu hosted-service config-binding delete <workspaceId> --data <json|@file>
|
|
58
|
+
baijimu hosted-service consumer create <workspaceId> --environment-id <id> --name <name>
|
|
59
|
+
baijimu hosted-service consumer list <workspaceId> --environment-id <id>
|
|
60
|
+
baijimu hosted-service token create <workspaceId> --environment-id <id> [--endpoint-name <name>] [--consumer-id <id>|--consumer-name <name>] [--scopes <csv>]
|
|
61
|
+
baijimu hosted-service token list <workspaceId> --environment-id <id>
|
|
62
|
+
baijimu hosted-service token revoke <workspaceId> --environment-id <id> --token-id <id>
|
|
63
|
+
baijimu hosted-service auth-config get <workspaceId> --environment-id <id>
|
|
64
|
+
baijimu hosted-service project get <workspaceId> <projectId>
|
|
65
|
+
baijimu hosted-service project publish <workspaceId> <projectId> [--environment-id <id>]
|
|
66
|
+
baijimu hosted-service project artifacts <workspaceId> <projectId> [--limit n]
|
|
67
|
+
baijimu hosted-service project deployments <workspaceId> <projectId> [--environment-id <id>] [--limit n]
|
|
68
|
+
|
|
69
|
+
baijimu db-profile allocate <workspaceId> [--database-name <name>] [--metadata-json <json>]
|
|
70
|
+
baijimu db-profile list <workspaceId>
|
|
71
|
+
baijimu db-profile get <workspaceId> --id <id>
|
|
72
|
+
baijimu db-profile release <workspaceId> --id <id>
|
|
73
|
+
|
|
74
|
+
baijimu platform-app list [--include-system true]
|
|
75
|
+
baijimu platform-app create --platform-app-id <id> --name <name> [--description <text>] [--version <semver>] [--entry-type PLATFORM_ROUTE|EXTERNAL_URL|TRUSTED_EXTERNAL_APP] [--entry-url-template <url>] [--open-mode CURRENT|NEW_TAB|WORKSPACE_TAB] [--market-scope WORKSPACE|PUBLIC] [--install-workspace-id <id>]
|
|
76
|
+
baijimu platform-app version list <platformAppId>
|
|
77
|
+
baijimu platform-app version publish <platformAppId> --version <semver> --entry-url-template <url> [--entry-type <type>] [--open-mode <mode>]
|
|
78
|
+
baijimu platform-app market publish <platformAppId> --version-id <id> [--scope-type WORKSPACE|PUBLIC] [--workspace-id <id>]
|
|
79
|
+
baijimu platform-app workspace install <workspaceId> <platformAppId> [--version-id <id>]
|
|
80
|
+
baijimu platform-app workspace list <workspaceId>
|
|
81
|
+
|
|
82
|
+
baijimu skill list <workspaceId> [--review-status status] [--project-id id] [--page n] [--size n] --api-key key
|
|
83
|
+
baijimu skill market <workspaceId> [--page n] [--size n] --api-key key
|
|
84
|
+
baijimu skill search <query> [--limit n]
|
|
85
|
+
baijimu skill get <skillId> [--api-key key]
|
|
86
|
+
baijimu skill versions <skillId> [--api-key key]
|
|
87
|
+
baijimu skill publish <workspaceId> (--project-id id --commit-id id|--github-url url) [--github-ref ref] [--version semver] [--name name] [--description text] [--data <json|@file>] --api-key key
|
|
88
|
+
baijimu skill publish-oss <workspaceId> --oss-url url [--version semver] [--name name] [--description text] [--archive-size n] [--archive-checksum sha256] [--data <json|@file>] --api-key key
|
|
89
|
+
baijimu skill submit-review <skillId> --api-key key
|
|
90
|
+
baijimu skill install-internal <agentConfigId> --skill-id <skillId> [--version semver]
|
|
91
|
+
baijimu skill install-external <agentConfigId> --download-url <url>
|
|
92
|
+
baijimu skill file <agentConfigId> --skill-ref <ref> [--path path] [--project-id id]
|
|
93
|
+
|
|
94
|
+
baijimu runtime app install <workspaceId> --module-id <moduleId> [--version-id <versionId>] [--properties <json|@file>]
|
|
95
|
+
baijimu runtime app upgrade <workspaceId> --module-id <moduleId> --version-id <versionId> [--properties <json|@file>]
|
|
96
|
+
baijimu runtime app update-properties <workspaceId> --module-id <moduleId> --properties <json|@file>
|
|
97
|
+
baijimu runtime app uninstall <workspaceId> --module-id <moduleId>
|
|
98
|
+
|
|
99
|
+
Environment variables:
|
|
100
|
+
BAIJIMU_CLI_CONFIG Override config file path.
|
|
101
|
+
BAIJIMU_API_KEY API key for /apikey skill publishing and market management commands.
|
|
102
|
+
`;
|
|
103
|
+
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGxB,CAAC"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EnvironmentConfig, RequestOptions } from "./types.js";
|
|
2
|
+
export interface BaijimuHttpClientOptions {
|
|
3
|
+
environment: EnvironmentConfig;
|
|
4
|
+
token?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class BaijimuHttpClient {
|
|
7
|
+
private readonly environment;
|
|
8
|
+
private readonly token?;
|
|
9
|
+
constructor(options: BaijimuHttpClientOptions);
|
|
10
|
+
request(options: RequestOptions): Promise<unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildUrl(baseUrl: string, path: string, query?: Record<string, string[]>): string;
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { CliError } from "./errors.js";
|
|
2
|
+
export class BaijimuHttpClient {
|
|
3
|
+
environment;
|
|
4
|
+
token;
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.environment = options.environment;
|
|
7
|
+
this.token = options.token;
|
|
8
|
+
}
|
|
9
|
+
async request(options) {
|
|
10
|
+
const url = buildUrl(this.environment.baseUrl, options.path, options.query);
|
|
11
|
+
const headers = {
|
|
12
|
+
Accept: "application/json",
|
|
13
|
+
...(options.headers || {})
|
|
14
|
+
};
|
|
15
|
+
if (this.token) {
|
|
16
|
+
headers.Authorization = `Bearer ${this.token}`;
|
|
17
|
+
}
|
|
18
|
+
let body;
|
|
19
|
+
if (options.body !== undefined && options.method.toUpperCase() !== "GET") {
|
|
20
|
+
headers["Content-Type"] ||= "application/json";
|
|
21
|
+
body = JSON.stringify(options.body);
|
|
22
|
+
}
|
|
23
|
+
const response = await fetch(url, {
|
|
24
|
+
method: options.method.toUpperCase(),
|
|
25
|
+
headers,
|
|
26
|
+
body
|
|
27
|
+
});
|
|
28
|
+
const text = await response.text();
|
|
29
|
+
const data = parseResponseBody(text);
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
throw new CliError(formatHttpError(response.status, data, text));
|
|
32
|
+
}
|
|
33
|
+
if (isBusinessError(data)) {
|
|
34
|
+
const obj = data;
|
|
35
|
+
throw new CliError(`${String(obj.errorCode)} ${String(obj.value || obj.message || "请求失败")}`);
|
|
36
|
+
}
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function buildUrl(baseUrl, path, query) {
|
|
41
|
+
const normalizedBase = baseUrl.replace(/\/+$/, "");
|
|
42
|
+
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
43
|
+
const url = new URL(`${normalizedBase}${normalizedPath}`);
|
|
44
|
+
for (const [key, values] of Object.entries(query || {})) {
|
|
45
|
+
for (const value of values) {
|
|
46
|
+
url.searchParams.append(key, value);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return url.toString();
|
|
50
|
+
}
|
|
51
|
+
function parseResponseBody(text) {
|
|
52
|
+
if (!text.trim()) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(text);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return text;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function formatHttpError(status, data, raw) {
|
|
63
|
+
if (typeof data === "object" && data !== null) {
|
|
64
|
+
const obj = data;
|
|
65
|
+
const code = obj.errorCode || obj.error || status;
|
|
66
|
+
const message = obj.value || obj.message || obj.error_description || raw;
|
|
67
|
+
return `HTTP ${status}: ${String(code)} ${String(message)}`;
|
|
68
|
+
}
|
|
69
|
+
return `HTTP ${status}: ${raw}`;
|
|
70
|
+
}
|
|
71
|
+
function isBusinessError(data) {
|
|
72
|
+
if (typeof data !== "object" || data === null) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const obj = data;
|
|
76
|
+
if (!("errorCode" in obj)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const code = obj.errorCode;
|
|
80
|
+
return code !== "0" && code !== 0;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED