@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.
Files changed (59) hide show
  1. package/README.md +101 -0
  2. package/dist/args.d.ts +9 -0
  3. package/dist/args.js +54 -0
  4. package/dist/args.js.map +1 -0
  5. package/dist/commands/agent.d.ts +1 -0
  6. package/dist/commands/agent.js +177 -0
  7. package/dist/commands/agent.js.map +1 -0
  8. package/dist/commands/api.d.ts +3 -0
  9. package/dist/commands/api.js +52 -0
  10. package/dist/commands/api.js.map +1 -0
  11. package/dist/commands/auth.d.ts +1 -0
  12. package/dist/commands/auth.js +166 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/db-profile.d.ts +1 -0
  15. package/dist/commands/db-profile.js +66 -0
  16. package/dist/commands/db-profile.js.map +1 -0
  17. package/dist/commands/hosted-service.d.ts +1 -0
  18. package/dist/commands/hosted-service.js +332 -0
  19. package/dist/commands/hosted-service.js.map +1 -0
  20. package/dist/commands/module.d.ts +1 -0
  21. package/dist/commands/module.js +199 -0
  22. package/dist/commands/module.js.map +1 -0
  23. package/dist/commands/platform-app.d.ts +1 -0
  24. package/dist/commands/platform-app.js +225 -0
  25. package/dist/commands/platform-app.js.map +1 -0
  26. package/dist/commands/project.d.ts +1 -0
  27. package/dist/commands/project.js +206 -0
  28. package/dist/commands/project.js.map +1 -0
  29. package/dist/commands/runtime.d.ts +1 -0
  30. package/dist/commands/runtime.js +86 -0
  31. package/dist/commands/runtime.js.map +1 -0
  32. package/dist/commands/skill.d.ts +1 -0
  33. package/dist/commands/skill.js +224 -0
  34. package/dist/commands/skill.js.map +1 -0
  35. package/dist/commands/workspace.d.ts +1 -0
  36. package/dist/commands/workspace.js +32 -0
  37. package/dist/commands/workspace.js.map +1 -0
  38. package/dist/config.d.ts +10 -0
  39. package/dist/config.js +71 -0
  40. package/dist/config.js.map +1 -0
  41. package/dist/errors.d.ts +5 -0
  42. package/dist/errors.js +14 -0
  43. package/dist/errors.js.map +1 -0
  44. package/dist/help.d.ts +1 -0
  45. package/dist/help.js +103 -0
  46. package/dist/help.js.map +1 -0
  47. package/dist/http.d.ts +12 -0
  48. package/dist/http.js +82 -0
  49. package/dist/http.js.map +1 -0
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.js +86 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/json.d.ts +3 -0
  54. package/dist/json.js +19 -0
  55. package/dist/json.js.map +1 -0
  56. package/dist/types.d.ts +26 -0
  57. package/dist/types.js +2 -0
  58. package/dist/types.js.map +1 -0
  59. package/package.json +35 -0
@@ -0,0 +1,66 @@
1
+ import { currentAuth, currentEnvironment, loadConfig } from "../config.js";
2
+ import { option, parseOptions } from "../args.js";
3
+ import { assertCondition, CliError } from "../errors.js";
4
+ import { BaijimuHttpClient } from "../http.js";
5
+ import { parseJsonInput, printJson } from "../json.js";
6
+ export async function runDbProfileCommand(args) {
7
+ const [command, ...rest] = args;
8
+ const client = await authenticatedClient();
9
+ const options = parseOptions(rest);
10
+ const workspaceId = options.positionals[0] || option(options, "workspace-id");
11
+ assertCondition(workspaceId, "用法: baijimu db-profile <allocate|get|list|release> <workspaceId>");
12
+ if (command === "allocate") {
13
+ const body = mergeBody(await parseJsonInput(option(options, "data"), {}), {
14
+ dbInstanceKey: option(options, "db-instance-key"),
15
+ databaseName: option(options, "database-name"),
16
+ metadataJson: option(options, "metadata-json")
17
+ });
18
+ await post(client, workspaceId, "/db-bindings/allocate", body);
19
+ return;
20
+ }
21
+ if (command === "list") {
22
+ await post(client, workspaceId, "/db-bindings/list", await parseJsonInput(option(options, "data"), {}));
23
+ return;
24
+ }
25
+ if (command === "get" || command === "release") {
26
+ const id = option(options, "id") || options.positionals[1];
27
+ assertCondition(id, `${command} 需要 --id`);
28
+ await post(client, workspaceId, `/db-bindings/${command}`, { id: toNumber(id) });
29
+ return;
30
+ }
31
+ throw new CliError("用法: baijimu db-profile <allocate|get|list|release> <workspaceId>");
32
+ }
33
+ async function authenticatedClient() {
34
+ const config = await loadConfig();
35
+ const auth = currentAuth(config);
36
+ assertCondition(auth.token, "当前环境未登录,请先执行 baijimu auth login --token <lc_pat_...>");
37
+ return new BaijimuHttpClient({
38
+ environment: currentEnvironment(config),
39
+ token: auth.token
40
+ });
41
+ }
42
+ async function post(client, workspaceId, suffix, body) {
43
+ printJson(await client.request({
44
+ method: "POST",
45
+ path: `/partner/v1/workspaces/${workspaceId}${suffix}`,
46
+ body
47
+ }));
48
+ }
49
+ function mergeBody(base, fields) {
50
+ const target = {};
51
+ if (base && typeof base === "object" && !Array.isArray(base)) {
52
+ Object.assign(target, base);
53
+ }
54
+ for (const [key, value] of Object.entries(fields)) {
55
+ if (value !== undefined && value !== "") {
56
+ target[key] = value;
57
+ }
58
+ }
59
+ return target;
60
+ }
61
+ function toNumber(value) {
62
+ const numeric = Number(value);
63
+ assertCondition(Number.isFinite(numeric), `非法数字: ${value}`);
64
+ return numeric;
65
+ }
66
+ //# sourceMappingURL=db-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-profile.js","sourceRoot":"","sources":["../../src/commands/db-profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runHostedServiceCommand(args: string[]): Promise<void>;
@@ -0,0 +1,332 @@
1
+ import { currentAuth, currentEnvironment, loadConfig } from "../config.js";
2
+ import { option, parseOptions } from "../args.js";
3
+ import { assertCondition, CliError } from "../errors.js";
4
+ import { BaijimuHttpClient } from "../http.js";
5
+ import { parseJsonInput, printJson } from "../json.js";
6
+ export async function runHostedServiceCommand(args) {
7
+ const [areaOrCommand, maybeCommand, ...rest] = args;
8
+ const client = await authenticatedClient();
9
+ if (areaOrCommand === "create") {
10
+ const options = parseOptions([maybeCommand, ...rest].filter(Boolean));
11
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service create <workspaceId> --service-key <key> --name <name> --source-project-id <id>");
12
+ const serviceKey = option(options, "service-key");
13
+ const name = option(options, "name");
14
+ const sourceProjectId = option(options, "source-project-id");
15
+ assertCondition(serviceKey, "create 需要 --service-key");
16
+ assertCondition(name, "create 需要 --name");
17
+ assertCondition(sourceProjectId, "create 需要 --source-project-id");
18
+ const body = mergeBody(await parseJsonInput(option(options, "data"), {}), {
19
+ serviceKey,
20
+ name,
21
+ description: option(options, "description"),
22
+ sourceProjectId: toNumber(sourceProjectId),
23
+ runtimeKind: option(options, "runtime-kind"),
24
+ sourceType: option(options, "source-type"),
25
+ serviceType: option(options, "service-type")
26
+ });
27
+ await post(client, workspaceId, "/hosted-services/create", body);
28
+ return;
29
+ }
30
+ if (areaOrCommand === "get") {
31
+ const options = parseOptions([maybeCommand, ...rest].filter(Boolean));
32
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service get <workspaceId> --id <id>");
33
+ const id = option(options, "id") || options.positionals[1];
34
+ assertCondition(id, "get 需要 --id");
35
+ await post(client, workspaceId, "/hosted-services/get", { id: toNumber(id) });
36
+ return;
37
+ }
38
+ if (areaOrCommand === "list") {
39
+ const options = parseOptions([maybeCommand, ...rest].filter(Boolean));
40
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service list <workspaceId>");
41
+ await post(client, workspaceId, "/hosted-services/list", await parseJsonInput(option(options, "data"), {}));
42
+ return;
43
+ }
44
+ if (areaOrCommand === "env" && maybeCommand === "create") {
45
+ const options = parseOptions(rest);
46
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service env create <workspaceId> --hosted-service-id <id> --name <env>");
47
+ const hostedServiceId = option(options, "hosted-service-id");
48
+ const environmentName = option(options, "name") || option(options, "environment-name");
49
+ assertCondition(hostedServiceId, "env create 需要 --hosted-service-id");
50
+ assertCondition(environmentName, "env create 需要 --name");
51
+ const body = mergeBody(await parseJsonInput(option(options, "data"), {}), {
52
+ hostedServiceId: toNumber(hostedServiceId),
53
+ environmentName,
54
+ primaryBaseUrl: option(options, "primary-base-url"),
55
+ configJson: option(options, "config-json")
56
+ });
57
+ await post(client, workspaceId, "/hosted-services/environment/create", body);
58
+ return;
59
+ }
60
+ if (areaOrCommand === "env" && maybeCommand === "list") {
61
+ const options = parseOptions(rest);
62
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service env list <workspaceId> --hosted-service-id <id>");
63
+ const id = option(options, "hosted-service-id") || option(options, "id");
64
+ assertCondition(id, "env list 需要 --hosted-service-id");
65
+ await post(client, workspaceId, "/hosted-services/environment/list", { id: toNumber(id) });
66
+ return;
67
+ }
68
+ if (areaOrCommand === "config-provider") {
69
+ await runConfigProviderCommand(client, maybeCommand, rest);
70
+ return;
71
+ }
72
+ if (areaOrCommand === "config-binding") {
73
+ await runConfigBindingCommand(client, maybeCommand, rest);
74
+ return;
75
+ }
76
+ if (areaOrCommand === "consumer") {
77
+ await runConsumerCommand(client, maybeCommand, rest);
78
+ return;
79
+ }
80
+ if (areaOrCommand === "token") {
81
+ await runTokenCommand(client, maybeCommand, rest);
82
+ return;
83
+ }
84
+ if (areaOrCommand === "auth-config" && maybeCommand === "get") {
85
+ const options = parseOptions(rest);
86
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service auth-config get <workspaceId> --environment-id <id>");
87
+ const environmentId = option(options, "environment-id") || option(options, "id");
88
+ assertCondition(environmentId, "auth-config get 需要 --environment-id");
89
+ await post(client, workspaceId, "/hosted-services/auth-config/get", { id: toNumber(environmentId) });
90
+ return;
91
+ }
92
+ if (areaOrCommand === "project" && maybeCommand === "get") {
93
+ const options = parseOptions(rest);
94
+ const { workspaceId, projectId } = requiredWorkspaceAndProject(options, "baijimu hosted-service project get <workspaceId> <projectId>");
95
+ await projectPost(client, workspaceId, projectId, "/get", await parseJsonInput(option(options, "data"), {}));
96
+ return;
97
+ }
98
+ if (areaOrCommand === "project" && maybeCommand === "publish") {
99
+ const options = parseOptions(rest);
100
+ const { workspaceId, projectId } = requiredWorkspaceAndProject(options, "baijimu hosted-service project publish <workspaceId> <projectId>");
101
+ const body = mergeBody(await parseJsonInput(option(options, "data"), {}), {
102
+ environmentId: toOptionalNumber(option(options, "environment-id"))
103
+ });
104
+ await projectPost(client, workspaceId, projectId, "/publish", body);
105
+ return;
106
+ }
107
+ if (areaOrCommand === "project" && maybeCommand === "deployments") {
108
+ const options = parseOptions(rest);
109
+ const { workspaceId, projectId } = requiredWorkspaceAndProject(options, "baijimu hosted-service project deployments <workspaceId> <projectId>");
110
+ const body = mergeBody(await parseJsonInput(option(options, "data"), {}), {
111
+ environmentId: toOptionalNumber(option(options, "environment-id")),
112
+ limit: toOptionalNumber(option(options, "limit"))
113
+ });
114
+ await projectPost(client, workspaceId, projectId, "/deployments/list", body);
115
+ return;
116
+ }
117
+ if (areaOrCommand === "project" && maybeCommand === "artifacts") {
118
+ const options = parseOptions(rest);
119
+ const { workspaceId, projectId } = requiredWorkspaceAndProject(options, "baijimu hosted-service project artifacts <workspaceId> <projectId>");
120
+ const body = mergeBody(await parseJsonInput(option(options, "data"), {}), {
121
+ limit: toOptionalNumber(option(options, "limit"))
122
+ });
123
+ await projectPost(client, workspaceId, projectId, "/artifacts/list", body);
124
+ return;
125
+ }
126
+ throw new CliError("用法: baijimu hosted-service <create|get|list|env|config-provider|config-binding|consumer|token|auth-config|project>");
127
+ }
128
+ async function runConfigProviderCommand(client, command, args) {
129
+ const options = parseOptions(args);
130
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service config-provider <create|update|delete|list> <workspaceId>");
131
+ const body = await parseJsonInput(option(options, "data"), {});
132
+ if (command === "list") {
133
+ await post(client, workspaceId, "/hosted-services/config-provider/list", mergeBody(body, {
134
+ hostedServiceId: toOptionalNumber(option(options, "hosted-service-id")),
135
+ includeGlobal: toOptionalBoolean(option(options, "include-global"))
136
+ }));
137
+ return;
138
+ }
139
+ if (command === "create" || command === "update" || command === "delete") {
140
+ await post(client, workspaceId, `/hosted-services/config-provider/${command}`, body);
141
+ return;
142
+ }
143
+ throw new CliError("用法: baijimu hosted-service config-provider <create|update|delete|list> <workspaceId> [--data json]");
144
+ }
145
+ async function runConfigBindingCommand(client, command, args) {
146
+ const options = parseOptions(args);
147
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service config-binding <create|update|delete|list> <workspaceId>");
148
+ const body = await parseJsonInput(option(options, "data"), {});
149
+ if (command === "create") {
150
+ const environmentId = option(options, "environment-id");
151
+ const name = option(options, "name");
152
+ const providerKey = option(options, "provider-key");
153
+ const profileRef = option(options, "profile-ref");
154
+ assertCondition(environmentId, "config-binding create 需要 --environment-id");
155
+ assertCondition(name, "config-binding create 需要 --name");
156
+ assertCondition(providerKey, "config-binding create 需要 --provider-key");
157
+ assertCondition(profileRef, "config-binding create 需要 --profile-ref");
158
+ await post(client, workspaceId, "/hosted-services/environment/config-binding/create", mergeBody(body, {
159
+ environmentId: toNumber(environmentId),
160
+ name,
161
+ providerKey,
162
+ profileRef,
163
+ profileAuthToken: option(options, "profile-auth-token"),
164
+ projectionJson: option(options, "projection-json"),
165
+ metadataJson: option(options, "metadata-json")
166
+ }));
167
+ return;
168
+ }
169
+ if (command === "list") {
170
+ const environmentId = option(options, "environment-id");
171
+ assertCondition(environmentId, "config-binding list 需要 --environment-id");
172
+ await post(client, workspaceId, "/hosted-services/environment/config-binding/list", mergeBody(body, {
173
+ environmentId: toNumber(environmentId)
174
+ }));
175
+ return;
176
+ }
177
+ if (command === "update" || command === "delete") {
178
+ await post(client, workspaceId, `/hosted-services/environment/config-binding/${command}`, body);
179
+ return;
180
+ }
181
+ throw new CliError("用法: baijimu hosted-service config-binding <create|update|delete|list> <workspaceId>");
182
+ }
183
+ async function runConsumerCommand(client, command, args) {
184
+ const options = parseOptions(args);
185
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service consumer <create|list> <workspaceId>");
186
+ const body = await parseJsonInput(option(options, "data"), {});
187
+ if (command === "create") {
188
+ const environmentId = option(options, "environment-id");
189
+ const name = option(options, "name");
190
+ assertCondition(environmentId, "consumer create 需要 --environment-id");
191
+ assertCondition(name, "consumer create 需要 --name");
192
+ await post(client, workspaceId, "/hosted-services/consumer/create", mergeBody(body, {
193
+ environmentId: toNumber(environmentId),
194
+ name
195
+ }));
196
+ return;
197
+ }
198
+ if (command === "list") {
199
+ const environmentId = option(options, "environment-id") || option(options, "id");
200
+ assertCondition(environmentId, "consumer list 需要 --environment-id");
201
+ await post(client, workspaceId, "/hosted-services/consumer/list", { id: toNumber(environmentId) });
202
+ return;
203
+ }
204
+ throw new CliError("用法: baijimu hosted-service consumer <create|list> <workspaceId>");
205
+ }
206
+ async function runTokenCommand(client, command, args) {
207
+ const options = parseOptions(args);
208
+ const workspaceId = requiredWorkspaceId(options, "baijimu hosted-service token <create|revoke|list> <workspaceId>");
209
+ const body = await parseJsonInput(option(options, "data"), {});
210
+ if (command === "create") {
211
+ const environmentId = option(options, "environment-id");
212
+ assertCondition(environmentId, "token create 需要 --environment-id");
213
+ await post(client, workspaceId, "/hosted-services/token/create", mergeBody(body, {
214
+ environmentId: toNumber(environmentId),
215
+ endpointName: option(options, "endpoint-name"),
216
+ consumerId: toOptionalNumber(option(options, "consumer-id")),
217
+ consumerName: option(options, "consumer-name"),
218
+ scopes: optionalCsv(option(options, "scopes")),
219
+ notBeforeEpochSeconds: toOptionalNumber(option(options, "not-before-epoch-seconds")),
220
+ expiresAtEpochSeconds: toOptionalNumber(option(options, "expires-at-epoch-seconds"))
221
+ }));
222
+ return;
223
+ }
224
+ if (command === "revoke") {
225
+ const environmentId = option(options, "environment-id");
226
+ const tokenId = option(options, "token-id");
227
+ assertCondition(environmentId, "token revoke 需要 --environment-id");
228
+ assertCondition(tokenId, "token revoke 需要 --token-id");
229
+ await post(client, workspaceId, "/hosted-services/token/revoke", mergeBody(body, {
230
+ environmentId: toNumber(environmentId),
231
+ tokenId
232
+ }));
233
+ return;
234
+ }
235
+ if (command === "list") {
236
+ const environmentId = option(options, "environment-id") || option(options, "id");
237
+ assertCondition(environmentId, "token list 需要 --environment-id");
238
+ await post(client, workspaceId, "/hosted-services/token/list", { id: toNumber(environmentId) });
239
+ return;
240
+ }
241
+ throw new CliError("用法: baijimu hosted-service token <create|revoke|list> <workspaceId>");
242
+ }
243
+ async function authenticatedClient() {
244
+ const config = await loadConfig();
245
+ const auth = currentAuth(config);
246
+ assertCondition(auth.token, "当前环境未登录,请先执行 baijimu auth login --token <lc_pat_...>");
247
+ return new BaijimuHttpClient({
248
+ environment: currentEnvironment(config),
249
+ token: auth.token
250
+ });
251
+ }
252
+ async function post(client, workspaceId, suffix, body) {
253
+ printJson(await client.request({
254
+ method: "POST",
255
+ path: `/partner/v1/workspaces/${workspaceId}${suffix}`,
256
+ body
257
+ }));
258
+ }
259
+ async function projectPost(client, workspaceId, projectId, suffix, body) {
260
+ printJson(await client.request({
261
+ method: "POST",
262
+ path: `/partner/v1/workspaces/${workspaceId}/hosted-services/projects/${projectId}${suffix}`,
263
+ body
264
+ }));
265
+ }
266
+ function requiredWorkspaceId(options, usage) {
267
+ const workspaceId = options.positionals[0] || option(options, "workspace-id");
268
+ assertCondition(workspaceId, `用法: ${usage}`);
269
+ return workspaceId;
270
+ }
271
+ function requiredWorkspaceAndProject(options, usage) {
272
+ const workspaceId = options.positionals[0] || option(options, "workspace-id");
273
+ const projectId = options.positionals[1] || option(options, "project-id");
274
+ assertCondition(workspaceId && projectId, `用法: ${usage}`);
275
+ return { workspaceId, projectId };
276
+ }
277
+ function mergeBody(base, fields) {
278
+ const target = {};
279
+ if (base && typeof base === "object" && !Array.isArray(base)) {
280
+ Object.assign(target, base);
281
+ }
282
+ for (const [key, value] of Object.entries(fields)) {
283
+ const normalized = normalizeJsonValue(value);
284
+ if (normalized !== undefined) {
285
+ target[key] = normalized;
286
+ }
287
+ }
288
+ return target;
289
+ }
290
+ function normalizeJsonValue(value) {
291
+ if (value === undefined || value === "") {
292
+ return undefined;
293
+ }
294
+ if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
295
+ return value;
296
+ }
297
+ if (Array.isArray(value)) {
298
+ return value.map((item) => normalizeJsonValue(item) ?? null);
299
+ }
300
+ if (typeof value === "object") {
301
+ const result = {};
302
+ for (const [key, item] of Object.entries(value)) {
303
+ const normalized = normalizeJsonValue(item);
304
+ if (normalized !== undefined) {
305
+ result[key] = normalized;
306
+ }
307
+ }
308
+ return result;
309
+ }
310
+ return undefined;
311
+ }
312
+ function toNumber(value) {
313
+ const numeric = Number(value);
314
+ assertCondition(Number.isFinite(numeric), `非法数字: ${value}`);
315
+ return numeric;
316
+ }
317
+ function toOptionalNumber(value) {
318
+ return value === undefined ? undefined : toNumber(value);
319
+ }
320
+ function toOptionalBoolean(value) {
321
+ if (value === undefined) {
322
+ return undefined;
323
+ }
324
+ return ["1", "true", "yes", "y"].includes(value.toLowerCase());
325
+ }
326
+ function optionalCsv(value) {
327
+ if (value === undefined || value.trim() === "") {
328
+ return undefined;
329
+ }
330
+ return value.split(",").map((item) => item.trim()).filter(Boolean);
331
+ }
332
+ //# sourceMappingURL=hosted-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-service.js","sourceRoot":"","sources":["../../src/commands/hosted-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runModuleCommand(args: string[]): Promise<void>;
@@ -0,0 +1,199 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { currentAuth, currentEnvironment, loadConfig } from "../config.js";
3
+ import { assertCondition, CliError } from "../errors.js";
4
+ import { BaijimuHttpClient } from "../http.js";
5
+ import { hasFlag, option, parseOptions } from "../args.js";
6
+ import { parseJsonInput, printJson } from "../json.js";
7
+ export async function runModuleCommand(args) {
8
+ const [subcommand, ...rest] = args;
9
+ const config = await loadConfig();
10
+ const auth = currentAuth(config);
11
+ assertCondition(auth.token, "当前环境未登录,请先执行 baijimu auth login --token <lc_pat_...>");
12
+ const client = new BaijimuHttpClient({
13
+ environment: currentEnvironment(config),
14
+ token: auth.token
15
+ });
16
+ if (subcommand === "project") {
17
+ const [projectSubcommand, workspaceId, ...optionArgs] = rest;
18
+ assertCondition(projectSubcommand === "create" && workspaceId, "用法: baijimu module project create <workspaceId> --name <name> [--description <text>] [--access-scope workspace|restricted] [--data <json|@file>]");
19
+ const options = parseOptions(optionArgs);
20
+ const body = await parseObjectInput(option(options, "data"));
21
+ assignString(body, "name", option(options, "name"));
22
+ assignString(body, "description", option(options, "description"));
23
+ assignString(body, "aiBrief", option(options, "ai-brief"));
24
+ assignString(body, "accessScope", option(options, "access-scope"));
25
+ assignNumber(body, "agentConfigId", option(options, "agent-config-id"));
26
+ assignNumber(body, "templateProjectId", option(options, "template-project-id"));
27
+ assignString(body, "templateGitCommitId", option(options, "template-git-commit-id"));
28
+ assignString(body, "zipUrl", option(options, "zip-url"));
29
+ assignString(body, "gitRepoUrl", option(options, "git-repo-url"));
30
+ assignString(body, "gitBranch", option(options, "git-branch"));
31
+ assignString(body, "gitSubfolder", option(options, "git-subfolder"));
32
+ assignString(body, "gitProvider", option(options, "git-provider"));
33
+ assignString(body, "gitProviderInstanceId", option(options, "git-provider-instance-id"));
34
+ assignString(body, "gitProviderCredentialId", option(options, "git-provider-credential-id"));
35
+ assertCondition(body.name, "module project create 需要 --name 或 --data.name");
36
+ printJson(await client.request({
37
+ method: "POST",
38
+ path: `/partner/v1/workspaces/${workspaceId}/modules/projects/create`,
39
+ body
40
+ }));
41
+ return;
42
+ }
43
+ if (subcommand === "list") {
44
+ const [workspaceId, ...optionArgs] = rest;
45
+ assertCondition(workspaceId, "用法: baijimu module list <workspaceId> [--project-id <projectId>]");
46
+ const options = parseOptions(optionArgs);
47
+ const projectId = option(options, "project-id");
48
+ const body = projectId ? { projectId: Number(projectId) } : {};
49
+ printJson(await client.request({
50
+ method: "POST",
51
+ path: `/partner/v1/workspaces/${workspaceId}/modules/list`,
52
+ body
53
+ }));
54
+ return;
55
+ }
56
+ if (subcommand === "create") {
57
+ const [workspaceId, ...optionArgs] = rest;
58
+ assertCondition(workspaceId, "用法: baijimu module create <workspaceId> --project-id <projectId> --name <name> --description <text> [--property-definition <json|@file>] [--user-domains <json|@file>] [--data <json|@file>]");
59
+ const options = parseOptions(optionArgs);
60
+ const body = await parseObjectInput(option(options, "data"));
61
+ assignNumber(body, "projectId", option(options, "project-id"));
62
+ assignString(body, "name", option(options, "name"));
63
+ assignString(body, "description", option(options, "description"));
64
+ assignString(body, "moduleDependencies", option(options, "module-dependencies"));
65
+ assignString(body, "dependencyDefinition", option(options, "dependency-definition"));
66
+ assignString(body, "logics", option(options, "logics"));
67
+ assignString(body, "implementedInterfaces", option(options, "implemented-interfaces"));
68
+ await assignJson(body, "propertyDefinition", option(options, "property-definition"));
69
+ await assignJson(body, "userDomains", option(options, "user-domains"));
70
+ assertCondition(body.projectId, "module create 需要 --project-id 或 --data.projectId");
71
+ assertCondition(body.name, "module create 需要 --name 或 --data.name");
72
+ assertCondition(body.description, "module create 需要 --description 或 --data.description");
73
+ printJson(await client.request({
74
+ method: "POST",
75
+ path: `/partner/v1/workspaces/${workspaceId}/modules/create`,
76
+ body
77
+ }));
78
+ return;
79
+ }
80
+ if (subcommand === "method") {
81
+ await runModuleMethodCommand(client, rest);
82
+ return;
83
+ }
84
+ if (subcommand === "publish") {
85
+ const [workspaceId, projectId, ...optionArgs] = rest;
86
+ assertCondition(workspaceId && projectId, "用法: baijimu module publish <workspaceId> <projectId> --module-id <moduleId> --version <semver> [--commit-id <id>] [--description <text>] [--scope-type <scope>] [--target-workspace-id <id>]");
87
+ const options = parseOptions(optionArgs);
88
+ const moduleId = option(options, "module-id");
89
+ const semanticVersion = option(options, "version") || option(options, "semantic-version");
90
+ assertCondition(moduleId && semanticVersion, "module 发布需要 --module-id 和 --version");
91
+ const body = {
92
+ projectId: Number(projectId),
93
+ moduleId: Number(moduleId),
94
+ semanticVersion
95
+ };
96
+ const gitCommitId = option(options, "commit-id");
97
+ const description = option(options, "description");
98
+ const scopeType = option(options, "scope-type");
99
+ const targetWorkspaceId = option(options, "target-workspace-id");
100
+ if (gitCommitId) {
101
+ body.gitCommitId = gitCommitId;
102
+ }
103
+ if (description) {
104
+ body.versionDescription = description;
105
+ }
106
+ if (scopeType) {
107
+ body.scopeType = scopeType;
108
+ }
109
+ if (targetWorkspaceId) {
110
+ body.workspaceId = Number(targetWorkspaceId);
111
+ }
112
+ printJson(await client.request({
113
+ method: "POST",
114
+ path: `/partner/v1/workspaces/${workspaceId}/modules/versions/publish`,
115
+ body
116
+ }));
117
+ return;
118
+ }
119
+ throw new CliError("用法: baijimu module <project|list|create|method|publish>");
120
+ }
121
+ async function runModuleMethodCommand(client, args) {
122
+ const [methodSubcommand, workspaceId, projectId, ...rest] = args;
123
+ assertCondition(methodSubcommand, "用法: baijimu module method <create|delete> ...");
124
+ if (methodSubcommand === "create") {
125
+ assertCondition(workspaceId && projectId, "用法: baijimu module method create <workspaceId> <projectId> --name <name> [--description <text>] [--type <type>] [--method-body <text>|--method-body-file <file>] [--param-definitions <json|@file>] [--data <json|@file>]");
126
+ const options = parseOptions(rest);
127
+ const body = await parseObjectInput(option(options, "data"));
128
+ body.projectId = Number(projectId);
129
+ assignString(body, "name", option(options, "name"));
130
+ assignString(body, "description", option(options, "description"));
131
+ assignString(body, "maintainerNotes", option(options, "maintainer-notes"));
132
+ assignString(body, "testCase", option(options, "test-case"));
133
+ assignString(body, "methodBody", option(options, "method-body"));
134
+ assignString(body, "returnType", option(options, "return-type"));
135
+ assignString(body, "paramDefinitions", option(options, "param-definitions"));
136
+ assignString(body, "errorTypeMap", option(options, "error-type-map"));
137
+ assignString(body, "type", option(options, "type"));
138
+ await assignFileContent(body, "methodBody", option(options, "method-body-file"));
139
+ assignBooleanFlag(body, "async", options, "async");
140
+ assertCondition(body.name, "module method create 需要 --name 或 --data.name");
141
+ printJson(await client.request({
142
+ method: "POST",
143
+ path: `/partner/v1/workspaces/${workspaceId}/modules/methods/create`,
144
+ body
145
+ }));
146
+ return;
147
+ }
148
+ if (methodSubcommand === "delete") {
149
+ const [methodId, ...optionArgs] = rest;
150
+ assertCondition(workspaceId && projectId && methodId, "用法: baijimu module method delete <workspaceId> <projectId> <methodId>");
151
+ const options = parseOptions(optionArgs);
152
+ const body = await parseObjectInput(option(options, "data"));
153
+ body.projectId = Number(projectId);
154
+ body.id = Number(methodId);
155
+ printJson(await client.request({
156
+ method: "POST",
157
+ path: `/partner/v1/workspaces/${workspaceId}/modules/methods/delete`,
158
+ body
159
+ }));
160
+ return;
161
+ }
162
+ throw new CliError("用法: baijimu module method <create|delete>");
163
+ }
164
+ async function parseObjectInput(input) {
165
+ const parsed = await parseJsonInput(input, {});
166
+ assertCondition(isPlainObject(parsed), "--data 必须是 JSON object");
167
+ return { ...parsed };
168
+ }
169
+ function assignString(body, key, value) {
170
+ if (value !== undefined) {
171
+ body[key] = value;
172
+ }
173
+ }
174
+ function assignNumber(body, key, value) {
175
+ if (value !== undefined) {
176
+ body[key] = Number(value);
177
+ }
178
+ }
179
+ function assignBooleanFlag(body, key, options, flag) {
180
+ if (hasFlag(options, flag)) {
181
+ body[key] = true;
182
+ }
183
+ }
184
+ async function assignJson(body, key, input) {
185
+ if (input !== undefined) {
186
+ const parsed = await parseJsonInput(input);
187
+ assertCondition(parsed !== undefined, `${key} JSON 不能为空`);
188
+ body[key] = parsed;
189
+ }
190
+ }
191
+ async function assignFileContent(body, key, filePath) {
192
+ if (filePath !== undefined) {
193
+ body[key] = await readFile(filePath, "utf8");
194
+ }
195
+ }
196
+ function isPlainObject(value) {
197
+ return value !== null && typeof value === "object" && !Array.isArray(value);
198
+ }
199
+ //# sourceMappingURL=module.js.map