@baijimu/cli 0.1.5 → 0.1.6

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 (68) hide show
  1. package/README.md +57 -124
  2. package/dist/index.js +7 -66
  3. package/dist/index.js.map +1 -1
  4. package/dist/install.d.ts +4 -0
  5. package/dist/install.js +155 -0
  6. package/dist/install.js.map +1 -0
  7. package/dist/native.d.ts +7 -0
  8. package/dist/native.js +51 -0
  9. package/dist/native.js.map +1 -0
  10. package/dist/platform.d.ts +21 -0
  11. package/dist/platform.js +96 -0
  12. package/dist/platform.js.map +1 -0
  13. package/package.json +10 -3
  14. package/scripts/postinstall.cjs +18 -0
  15. package/dist/args.d.ts +0 -9
  16. package/dist/args.js +0 -54
  17. package/dist/args.js.map +0 -1
  18. package/dist/commands/agent.d.ts +0 -1
  19. package/dist/commands/agent.js +0 -371
  20. package/dist/commands/agent.js.map +0 -1
  21. package/dist/commands/api.d.ts +0 -3
  22. package/dist/commands/api.js +0 -52
  23. package/dist/commands/api.js.map +0 -1
  24. package/dist/commands/auth.d.ts +0 -1
  25. package/dist/commands/auth.js +0 -166
  26. package/dist/commands/auth.js.map +0 -1
  27. package/dist/commands/db-profile.d.ts +0 -1
  28. package/dist/commands/db-profile.js +0 -66
  29. package/dist/commands/db-profile.js.map +0 -1
  30. package/dist/commands/hosted-service.d.ts +0 -1
  31. package/dist/commands/hosted-service.js +0 -349
  32. package/dist/commands/hosted-service.js.map +0 -1
  33. package/dist/commands/module.d.ts +0 -1
  34. package/dist/commands/module.js +0 -199
  35. package/dist/commands/module.js.map +0 -1
  36. package/dist/commands/platform-app.d.ts +0 -1
  37. package/dist/commands/platform-app.js +0 -225
  38. package/dist/commands/platform-app.js.map +0 -1
  39. package/dist/commands/project.d.ts +0 -1
  40. package/dist/commands/project.js +0 -357
  41. package/dist/commands/project.js.map +0 -1
  42. package/dist/commands/runtime.d.ts +0 -1
  43. package/dist/commands/runtime.js +0 -282
  44. package/dist/commands/runtime.js.map +0 -1
  45. package/dist/commands/skill.d.ts +0 -1
  46. package/dist/commands/skill.js +0 -224
  47. package/dist/commands/skill.js.map +0 -1
  48. package/dist/commands/workspace.d.ts +0 -1
  49. package/dist/commands/workspace.js +0 -32
  50. package/dist/commands/workspace.js.map +0 -1
  51. package/dist/config.d.ts +0 -10
  52. package/dist/config.js +0 -71
  53. package/dist/config.js.map +0 -1
  54. package/dist/errors.d.ts +0 -5
  55. package/dist/errors.js +0 -14
  56. package/dist/errors.js.map +0 -1
  57. package/dist/help.d.ts +0 -1
  58. package/dist/help.js +0 -153
  59. package/dist/help.js.map +0 -1
  60. package/dist/http.d.ts +0 -14
  61. package/dist/http.js +0 -82
  62. package/dist/http.js.map +0 -1
  63. package/dist/json.d.ts +0 -3
  64. package/dist/json.js +0 -19
  65. package/dist/json.js.map +0 -1
  66. package/dist/types.d.ts +0 -27
  67. package/dist/types.js +0 -2
  68. package/dist/types.js.map +0 -1
@@ -1,52 +0,0 @@
1
- import { currentAuth, currentEnvironment, loadConfig } from "../config.js";
2
- import { assertCondition, CliError } from "../errors.js";
3
- import { BaijimuHttpClient } from "../http.js";
4
- import { option, optionList, parseOptions } from "../args.js";
5
- import { parseJsonInput, printJson } from "../json.js";
6
- export async function runApiCommand(args) {
7
- const [method, path, ...rest] = args;
8
- assertCondition(method && path, "用法: baijimu api <METHOD> <PATH> [--data <json|@file>]");
9
- const options = parseOptions(rest);
10
- const config = await loadConfig();
11
- const env = currentEnvironment(config);
12
- const auth = currentAuth(config);
13
- assertCondition(auth.token, "当前环境未登录,请先执行 baijimu auth login --token <lc_pat_...>");
14
- const client = new BaijimuHttpClient({
15
- environment: env,
16
- token: auth.token
17
- });
18
- const result = await client.request({
19
- method,
20
- path,
21
- body: await parseJsonInput(option(options, "data"), undefined),
22
- query: parseQueryOptions(optionList(options, "query")),
23
- headers: parseHeaderOptions(optionList(options, "header"))
24
- });
25
- printJson(result);
26
- }
27
- export function parseQueryOptions(values) {
28
- const query = {};
29
- for (const value of values) {
30
- const index = value.indexOf("=");
31
- if (index <= 0) {
32
- throw new CliError(`--query 必须是 k=v 格式: ${value}`);
33
- }
34
- const key = value.slice(0, index);
35
- const item = value.slice(index + 1);
36
- query[key] ||= [];
37
- query[key].push(item);
38
- }
39
- return query;
40
- }
41
- export function parseHeaderOptions(values) {
42
- const headers = {};
43
- for (const value of values) {
44
- const index = value.indexOf(":");
45
- if (index <= 0) {
46
- throw new CliError(`--header 必须是 'Name: value' 格式: ${value}`);
47
- }
48
- headers[value.slice(0, index).trim()] = value.slice(index + 1).trim();
49
- }
50
- return headers;
51
- }
52
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function runAuthCommand(args: string[]): Promise<void>;
@@ -1,166 +0,0 @@
1
- import { currentAuth, currentEnvironment, loadConfig, maskToken, saveConfig, setCurrentAuth } from "../config.js";
2
- import { BaijimuHttpClient } from "../http.js";
3
- import { hasFlag, option, parseOptions } from "../args.js";
4
- import { assertCondition } from "../errors.js";
5
- import { printJson } from "../json.js";
6
- import { spawn } from "node:child_process";
7
- export async function runAuthCommand(args) {
8
- const [subcommand, ...rest] = args;
9
- if (subcommand === "login") {
10
- const options = parseOptions(rest);
11
- if (option(options, "token") || options.positionals[0]?.startsWith("lc_pat_")) {
12
- await setToken(rest);
13
- return;
14
- }
15
- await loginWithDeviceFlow(rest);
16
- return;
17
- }
18
- if (subcommand === "token" && rest[0] === "set") {
19
- await setToken(rest.slice(1));
20
- return;
21
- }
22
- if (subcommand === "status") {
23
- const options = parseOptions(rest);
24
- const config = await loadConfig();
25
- const env = currentEnvironment(config);
26
- const auth = currentAuth(config);
27
- const result = {
28
- environment: config.currentEnv,
29
- baseUrl: env.baseUrl,
30
- authenticated: Boolean(auth.token),
31
- tokenType: auth.tokenType || null,
32
- token: maskToken(auth.token),
33
- loginAt: auth.loginAt || null
34
- };
35
- if (hasFlag(options, "verify")) {
36
- assertCondition(auth.token, "当前环境未登录");
37
- const client = new BaijimuHttpClient({ environment: env, token: auth.token });
38
- result.verification = await client.request({
39
- method: "POST",
40
- path: "/partner/v1/workspaces/list",
41
- body: { page: 1, pageSize: 1 }
42
- });
43
- }
44
- printJson(result);
45
- return;
46
- }
47
- if (subcommand === "logout") {
48
- const config = await loadConfig();
49
- delete config.auth[config.currentEnv];
50
- await saveConfig(config);
51
- printJson({ environment: config.currentEnv, authenticated: false });
52
- return;
53
- }
54
- throw new Error("用法: baijimu auth <login|token set|status|logout>");
55
- }
56
- async function setToken(args) {
57
- const options = parseOptions(args);
58
- const token = option(options, "token") || options.positionals[0];
59
- assertCondition(token, "用法: baijimu auth login --token <lc_pat_...>");
60
- assertCondition(token.startsWith("lc_pat_"), "当前 CLI 只接受 Baijimu PAT: token 必须以 lc_pat_ 开头");
61
- const config = await loadConfig();
62
- setCurrentAuth(config, {
63
- token,
64
- tokenType: "pat",
65
- loginAt: new Date().toISOString()
66
- });
67
- await saveConfig(config);
68
- printJson({
69
- environment: config.currentEnv,
70
- authenticated: true,
71
- token: maskToken(token)
72
- });
73
- }
74
- async function loginWithDeviceFlow(args) {
75
- const options = parseOptions(args);
76
- const config = await loadConfig();
77
- const env = currentEnvironment(config);
78
- const client = new BaijimuHttpClient({ environment: env });
79
- const scopes = [
80
- ...options.positionals.filter((item) => item.includes(":")),
81
- ...((option(options, "scope") || "")
82
- .split(",")
83
- .map((item) => item.trim())
84
- .filter(Boolean))
85
- ];
86
- const workspaceId = option(options, "workspace-id");
87
- const tokenExpiresDays = option(options, "token-expires-days");
88
- const start = await client.request({
89
- method: "POST",
90
- path: "/api/agent-cli-auth/start",
91
- body: {
92
- deviceName: option(options, "device-name") || defaultDeviceName(),
93
- workspaceId: workspaceId ? Number(workspaceId) : null,
94
- scopes,
95
- tokenExpiresDays: tokenExpiresDays ? Number(tokenExpiresDays) : null
96
- }
97
- });
98
- process.stdout.write(`请在浏览器中批准 Baijimu CLI 授权。\n`);
99
- process.stdout.write(`授权码: ${start.userCode}\n`);
100
- process.stdout.write(`授权链接: ${start.verificationUriComplete}\n`);
101
- if (!hasFlag(options, "no-browser")) {
102
- openBrowser(start.verificationUriComplete);
103
- }
104
- const deadline = Date.now() + Math.max(30, start.expiresIn || 600) * 1000;
105
- let intervalMs = Math.max(1, start.interval || 5) * 1000;
106
- while (Date.now() < deadline) {
107
- await sleep(intervalMs);
108
- const poll = await client.request({
109
- method: "POST",
110
- path: "/api/agent-cli-auth/poll",
111
- body: { deviceCode: start.deviceCode }
112
- });
113
- if (poll.status === "pending") {
114
- intervalMs = Math.max(1, poll.interval || start.interval || 5) * 1000;
115
- continue;
116
- }
117
- if (poll.status === "authorized") {
118
- const token = poll.authorizedPayload?.token;
119
- assertCondition(token && token.startsWith("lc_pat_"), "授权成功但响应缺少有效 PAT");
120
- setCurrentAuth(config, {
121
- token,
122
- tokenType: "pat",
123
- loginAt: new Date().toISOString()
124
- });
125
- await saveConfig(config);
126
- printJson({
127
- environment: config.currentEnv,
128
- authenticated: true,
129
- token: maskToken(token),
130
- userId: poll.authorizedPayload?.userId || null,
131
- workspaceId: poll.authorizedPayload?.workspaceId || null,
132
- scopes: poll.authorizedPayload?.scopes || []
133
- });
134
- return;
135
- }
136
- if (poll.status === "denied") {
137
- throw new Error("用户拒绝了 Baijimu CLI 授权");
138
- }
139
- if (poll.status === "expired") {
140
- throw new Error("Baijimu CLI 授权请求已过期");
141
- }
142
- }
143
- throw new Error("等待 Baijimu CLI 授权超时");
144
- }
145
- function openBrowser(url) {
146
- const command = process.platform === "darwin"
147
- ? "open"
148
- : process.platform === "win32"
149
- ? "cmd"
150
- : "xdg-open";
151
- const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
152
- const child = spawn(command, args, {
153
- detached: true,
154
- stdio: "ignore"
155
- });
156
- child.unref();
157
- }
158
- function defaultDeviceName() {
159
- return `Baijimu CLI on ${process.platform}`;
160
- }
161
- function sleep(ms) {
162
- return new Promise((resolve) => {
163
- setTimeout(resolve, ms);
164
- });
165
- }
166
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA2B3C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9E,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAChD,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,GAA4B;YACtC,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;SAC9B,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/B,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBACzC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,6BAA6B;gBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QACzB,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAc;IACpC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACjE,eAAe,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;IACtE,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,8CAA8C,CAAC,CAAC;IAE7F,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,cAAc,CAAC,MAAM,EAAE;QACrB,KAAK;QACL,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC,CAAC;IACH,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,SAAS,CAAC;QACR,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;KACxB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG;QACb,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3D,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;aACjC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;KACpB,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE;YACJ,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,iBAAiB,EAAE;YACjE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,MAAM;YACN,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;SACrE;KACF,CAA8B,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1E,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAChC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;SACvC,CAA6B,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACtE,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC;YAC5C,eAAe,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,CAAC;YACzE,cAAc,CAAC,MAAM,EAAE;gBACrB,KAAK;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,SAAS,CAAC;gBACR,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC9B,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,IAAI;gBAC9C,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,IAAI,IAAI;gBACxD,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,EAAE;aAC7C,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,UAAU,CAAC;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACjC,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,kBAAkB,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- export declare function runDbProfileCommand(args: string[]): Promise<void>;
@@ -1,66 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-profile.js","sourceRoot":"","sources":["../../src/commands/db-profile.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function runHostedServiceCommand(args: string[]): Promise<void>;