@my-life-buddies/cli 0.26.2 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -19
- package/dist/bin/buddy.js +11 -37
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +63 -171
- package/dist/bin/core.js.map +4 -4
- package/dist/bin/preview.js +2 -57
- package/dist/bin/preview.js.map +3 -3
- package/package.json +3 -5
- package/resources/brand/README.md +1 -1
- package/dist/web/app.css +0 -758
- package/dist/web/app.js +0 -1155
- package/dist/web/assets/developer-platform-icon.png.base64 +0 -1
- package/dist/web/brand.css +0 -100
- package/dist/web/chat-markdown.js +0 -181
- package/dist/web/diagnostics.js +0 -193
- package/dist/web/index.html +0 -268
- package/dist/web/products.css +0 -19
- package/dist/web/products.js +0 -104
- package/dist/web/tokens.css +0 -15
- package/dist/web/tool-inventory.js +0 -94
- package/dist/web/widgets.css +0 -62
- package/dist/web/widgets.js +0 -317
- /package/dist/{web → bin/resources}/widget-document.js +0 -0
package/dist/bin/core.js
CHANGED
|
@@ -95,19 +95,36 @@ import { lstat, mkdir, mkdtemp, readFile as readFile2, rename, rm, writeFile } f
|
|
|
95
95
|
import { homedir } from "node:os";
|
|
96
96
|
import { join } from "node:path";
|
|
97
97
|
import { promisify } from "node:util";
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
|
|
99
|
+
// packages/cli-core/src/npm-registry.ts
|
|
100
|
+
var REGISTRY = "https://registry.npmjs.org/";
|
|
101
|
+
async function npmPackageManifest(name, selector, options = {}) {
|
|
101
102
|
options.signal?.throwIfAborted();
|
|
102
|
-
const timeout = AbortSignal.timeout(1e4);
|
|
103
|
+
const timeout = AbortSignal.timeout(options.timeoutMs ?? 1e4);
|
|
103
104
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
104
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${
|
|
105
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(name)}`, {
|
|
105
106
|
signal,
|
|
106
107
|
headers: { Accept: "application/json" },
|
|
107
108
|
redirect: "error"
|
|
108
109
|
});
|
|
109
|
-
if (!response.ok) throw new Error(`npm
|
|
110
|
-
const
|
|
110
|
+
if (!response.ok) throw new Error(`npm HTTP ${response.status}`);
|
|
111
|
+
const text2 = await response.text();
|
|
112
|
+
if (text2.length > 8 * 1024 * 1024) throw new Error("npm \u5143\u6570\u636E\u8FC7\u5927");
|
|
113
|
+
const metadata = JSON.parse(text2);
|
|
114
|
+
if (metadata?.name !== name) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
115
|
+
const version = Object.hasOwn(metadata["dist-tags"] ?? {}, selector) ? metadata["dist-tags"][selector] : selector;
|
|
116
|
+
const manifest = typeof version === "string" && Object.hasOwn(metadata.versions ?? {}, version) ? metadata.versions[version] : void 0;
|
|
117
|
+
if (!manifest || manifest.name !== name || manifest.version !== version) {
|
|
118
|
+
throw new Error(`npm ${selector} \u672A\u8FD4\u56DE\u6B64\u5305\u7684\u51C6\u786E\u7248\u672C`);
|
|
119
|
+
}
|
|
120
|
+
return manifest;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// packages/cli-core/src/config/runtime-package.ts
|
|
124
|
+
var RUNTIME_REGISTRY = "https://registry.npmjs.org/";
|
|
125
|
+
var execute = promisify(execFile);
|
|
126
|
+
async function latestRuntimeVersion(options = {}) {
|
|
127
|
+
const metadata = await npmPackageManifest(BUDDY_RUNTIME_PACKAGE, "latest", options);
|
|
111
128
|
if (metadata?.name !== BUDDY_RUNTIME_PACKAGE || !isExactRuntimeVersion(metadata.version) || metadata.version.includes("-")) {
|
|
112
129
|
throw new Error("npm latest \u672A\u8FD4\u56DE\u6B64 Runtime \u7684\u51C6\u786E\u7A33\u5B9A\u7248\u672C");
|
|
113
130
|
}
|
|
@@ -231,7 +248,7 @@ import { lstat as lstat2, mkdir as mkdir2, mkdtemp as mkdtemp2, readFile as read
|
|
|
231
248
|
import { homedir as homedir2 } from "node:os";
|
|
232
249
|
import { isAbsolute, join as join2 } from "node:path";
|
|
233
250
|
import { promisify as promisify2 } from "node:util";
|
|
234
|
-
var
|
|
251
|
+
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
235
252
|
var execute2 = promisify2(execFile2);
|
|
236
253
|
var VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/u;
|
|
237
254
|
function validSkillLock(value, protocolVersions2 = [1]) {
|
|
@@ -303,21 +320,14 @@ async function resolveSkillPackage(definition3, previous, options = {}) {
|
|
|
303
320
|
options.signal?.throwIfAborted();
|
|
304
321
|
const version = options.version ?? pinned?.version ?? "latest";
|
|
305
322
|
options.report?.(`\u6B63\u5728\u67E5\u8BE2 ${definition3.label} Skill ${version}\u2026`);
|
|
306
|
-
let
|
|
323
|
+
let pkg;
|
|
307
324
|
try {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
redirect: "error",
|
|
311
|
-
signal: options.signal ? AbortSignal.any([options.signal, AbortSignal.timeout(15e3)]) : AbortSignal.timeout(15e3)
|
|
312
|
-
});
|
|
313
|
-
} catch {
|
|
325
|
+
pkg = await npmPackageManifest(definition3.name, version, { ...options, timeoutMs: 15e3 });
|
|
326
|
+
} catch (cause) {
|
|
314
327
|
options.signal?.throwIfAborted();
|
|
315
|
-
throw new Error(`\u65E0\u6CD5\u67E5\u8BE2 ${definition3.label} Skill ${version}\uFF0C\u8BF7\u68C0\u67E5 npm \u7F51\u7EDC\u540E\u91CD\u8BD5\uFF1B\u672A\u4F7F\u7528\u65E7\u7248\u672C\uFF0C\u5DF2\u6709\u4F5C\u54C1\u4F1A\u4FDD\u7559\u3002`);
|
|
328
|
+
throw new Error(`\u65E0\u6CD5\u67E5\u8BE2 ${definition3.label} Skill ${version}\uFF08${cause instanceof Error ? cause.message : "npm \u8BF7\u6C42\u5931\u8D25"}\uFF09\uFF0C\u8BF7\u68C0\u67E5 npm \u7F51\u7EDC\u540E\u91CD\u8BD5\uFF1B\u672A\u4F7F\u7528\u65E7\u7248\u672C\uFF0C\u5DF2\u6709\u4F5C\u54C1\u4F1A\u4FDD\u7559\u3002`);
|
|
316
329
|
}
|
|
317
|
-
if (
|
|
318
|
-
const text2 = await response.text();
|
|
319
|
-
if (text2.length > 512 * 1024) throw new Error(`${definition3.label} npm \u5143\u6570\u636E\u8FC7\u5927\u3002`);
|
|
320
|
-
const pkg = JSON.parse(text2);
|
|
330
|
+
if (JSON.stringify(pkg).length > 512 * 1024) throw new Error(`${definition3.label} npm \u5143\u6570\u636E\u8FC7\u5927\u3002`);
|
|
321
331
|
checkProtocol(definition3, pkg);
|
|
322
332
|
if (version !== "latest" && pkg.version !== version) throw new Error(`npm \u8FD4\u56DE\u4E86\u4E0D\u540C\u7684 ${definition3.label} \u7248\u672C\u3002`);
|
|
323
333
|
const lock = { source: "npm", version: pkg.version, integrity: pkg.dist?.integrity, protocolVersion: pkg.buddySkill.protocolVersion };
|
|
@@ -331,7 +341,7 @@ async function resolveSkillPackage(definition3, previous, options = {}) {
|
|
|
331
341
|
try {
|
|
332
342
|
await writeFile2(join2(temporary, "package.json"), JSON.stringify({ name: "buddy-skill-cache", private: true, dependencies: { [definition3.name]: lock.version } }));
|
|
333
343
|
const config = join2(temporary, ".npmrc");
|
|
334
|
-
await writeFile2(config, `registry=${
|
|
344
|
+
await writeFile2(config, `registry=${REGISTRY2}
|
|
335
345
|
`);
|
|
336
346
|
options.report?.(`\u6B63\u5728\u4E0B\u8F7D ${definition3.label} Skill ${lock.version}\u2026`);
|
|
337
347
|
const run = options.runNpm ?? ((args, settings) => execute2("npm", args, { ...settings, encoding: "utf8", maxBuffer: 2 * 1024 * 1024 }));
|
|
@@ -343,8 +353,8 @@ async function resolveSkillPackage(definition3, previous, options = {}) {
|
|
|
343
353
|
"--omit=dev",
|
|
344
354
|
"--no-audit",
|
|
345
355
|
"--no-fund",
|
|
346
|
-
`--registry=${
|
|
347
|
-
...definition3.name.startsWith("@") ? [`--${definition3.name.split("/")[0]}:registry=${
|
|
356
|
+
`--registry=${REGISTRY2}`,
|
|
357
|
+
...definition3.name.startsWith("@") ? [`--${definition3.name.split("/")[0]}:registry=${REGISTRY2}`] : [],
|
|
348
358
|
`--userconfig=${config}`,
|
|
349
359
|
"--fetch-retries=0",
|
|
350
360
|
"--fetch-timeout=20000"
|
|
@@ -2535,7 +2545,7 @@ ${DEVELOPMENT_HANDOFF_SUMMARY}
|
|
|
2535
2545
|
|
|
2536
2546
|
\u5F00\u53D1\u8005\u660E\u786E\u8981\u6C42\u81EA\u52A8\u4F53\u9A8C\u6216\u591A\u573A\u666F\u56DE\u5F52\u65F6\uFF0C\u6309\u6307\u5B9A\u8303\u56F4\u6267\u884C\uFF0C\u62A5\u544A\u7ED3\u679C\uFF0C\u4E0D\u628A\u6D4B\u8BD5\u6388\u6743\u6269\u5927\u4E3A\u6539\u9700\u6C42\u6216\u63D0\u5BA1\u6388\u6743\u3002push\u3001\u53D1\u5E03\u548C\u6536\u8D39\u64CD\u4F5C\u4E0D\u5C5E\u4E8E\u9ED8\u8BA4\u4EA4\u63A5\uFF0C\u9700\u8981\u53E6\u884C\u660E\u786E\u6388\u6743\u3002
|
|
2537
2547
|
|
|
2538
|
-
\u9700\u8981\u91CD\u65B0\u6253\u5F00\u65F6\uFF0C\u4F7F\u7528 \`buddy-cli preview\`\uFF0C\u6216\u4ECE\u540E\u53F0\u300C\u83B7\u53D6\u8FDE\u63A5\u6307\u4EE4\u300D\u53D6\u5F97\u5E26\u642D\u5B50 ID \u548C\u73AF\u5883\u7684\u5B8C\u6574\u547D\u4EE4\uFF0C\u5728\u6B63\u786E\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C\u3002\u540E\u53F0\u590D\u5236\u7684\u547D\u4EE4\u5E26 \`--no-open\`\uFF0C\u6267\u884C\u540E\u8FD4\u56DE\u539F\u8C03\u8BD5\u9875\uFF0C\u4E0D\u91CD\u590D\u6253\u5F00\u7F51\u9875\uFF1B\u9875\u9762\u5DF2\u5173\u95ED\u65F6\u6253\u5F00\u7EC8\u7AEF\u6253\u5370\u7684\u5730\u5740\u3002\u540E\u53F0\u663E\u793A\u300C\u672A\u8FDE\u63A5\u672C\u5730\u5DE5\u7A0B\u300D\u300C\u5DF2\u8FDE\u63A5\u4F46 DEV \u672A\u542F\u52A8\u300D\u300CDEV \u8FD0\u884C\u4E2D\u300D\u3002\u5237\u65B0\u4E0D\u4F1A\u542F\u52A8 DEV\uFF1BCLI \u9000\u51FA\u4F1A\u505C\u6B62 DEV\u3002\
|
|
2548
|
+
\u9700\u8981\u91CD\u65B0\u6253\u5F00\u65F6\uFF0C\u4F7F\u7528 \`buddy-cli preview\`\uFF0C\u6216\u4ECE\u540E\u53F0\u300C\u83B7\u53D6\u8FDE\u63A5\u6307\u4EE4\u300D\u53D6\u5F97\u5E26\u642D\u5B50 ID \u548C\u73AF\u5883\u7684\u5B8C\u6574\u547D\u4EE4\uFF0C\u5728\u6B63\u786E\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C\u3002\u540E\u53F0\u590D\u5236\u7684\u547D\u4EE4\u5E26 \`--no-open\`\uFF0C\u6267\u884C\u540E\u8FD4\u56DE\u539F\u8C03\u8BD5\u9875\uFF0C\u4E0D\u91CD\u590D\u6253\u5F00\u7F51\u9875\uFF1B\u9875\u9762\u5DF2\u5173\u95ED\u65F6\u6253\u5F00\u7EC8\u7AEF\u6253\u5370\u7684\u5730\u5740\u3002\u540E\u53F0\u663E\u793A\u300C\u672A\u8FDE\u63A5\u672C\u5730\u5DE5\u7A0B\u300D\u300C\u5DF2\u8FDE\u63A5\u4F46 DEV \u672A\u542F\u52A8\u300D\u300CDEV \u8FD0\u884C\u4E2D\u300D\u3002\u5237\u65B0\u4E0D\u4F1A\u542F\u52A8 DEV\uFF1BCLI \u9000\u51FA\u4F1A\u505C\u6B62 DEV\u3002\u8C03\u8BD5\u9875\u9762\u7EDF\u4E00\u7531\u540E\u53F0\u63D0\u4F9B\uFF0C\u4E0D\u518D\u652F\u6301\u72EC\u7ACB\u672C\u5730\u7F51\u9875\uFF1B\u540E\u53F0\u4E0D\u53EF\u7528\u65F6\u4FDD\u7559\u5DE5\u7A0B\u4E0E\u73B0\u6709\u8FDE\u63A5\u4FE1\u606F\uFF0C\u4F7F\u7528\u7EC8\u7AEF DEV \u548C\u65E5\u5FD7\u6392\u67E5\u3002
|
|
2539
2549
|
|
|
2540
2550
|
\u7528\u6237\u660E\u786E\u53EA\u505A\u8BBE\u8BA1\u3001\u521D\u59CB\u5316\u3001\u4EE3\u7801\u4FEE\u6539\u6216\u8981\u6C42\u6682\u505C\u65F6\uFF0C\u4EE5\u8BE5\u8303\u56F4\u4E3A\u51C6\uFF0C\u4E0D\u5F3A\u5236\u542F\u52A8\u9884\u89C8\u3002`;
|
|
2541
2551
|
|
|
@@ -3371,7 +3381,6 @@ var CLI_HELP = `\u642D\u642D Developer Platform CLI
|
|
|
3371
3381
|
preview \u8FDE\u63A5\u5DE5\u7A0B\u5E76\u6253\u5F00\u540E\u53F0\u5F00\u53D1\u8C03\u8BD5
|
|
3372
3382
|
push \u4E0A\u4F20\u7A0B\u5E8F\u5305\uFF0C\u53EF\u7528 --product \u540C\u6B65\u63D0\u4EA4\u5546\u54C1\u5BA1\u6838
|
|
3373
3383
|
products \u4E3A\u5DF2\u6709\u7248\u672C\u8865\u63D0\u5546\u54C1\uFF0C\u6216\u6062\u590D\u539F\u63D0\u5BA1\u8BF7\u6C42
|
|
3374
|
-
release \u4ECE\u660E\u786E\u56DE\u6267\u53D1\u5E03\uFF0C\u67E5\u8BE2\u3001\u6062\u590D\u3001\u91CD\u8BD5\u6216\u53D6\u6D88\u53D1\u5E03
|
|
3375
3384
|
status \u67E5\u770B\u4E91\u7AEF\u7248\u672C\u3001\u8FD0\u884C\u3001\u5BA1\u6838\u548C\u6784\u5EFA\u72B6\u6001
|
|
3376
3385
|
meta \u67E5\u770B\u4E91\u7AEF\u8D44\u6599\uFF1Bmeta update \u4FEE\u6539\u8D44\u6599\u6216\u66FF\u6362\u5934\u50CF
|
|
3377
3386
|
avatar \u65E7\u5934\u50CF\u547D\u4EE4\u517C\u5BB9\u5165\u53E3\uFF0C\u63A8\u8350 meta update --avatar
|
|
@@ -5380,21 +5389,12 @@ function parsePackagePush(value) {
|
|
|
5380
5389
|
if (operationId(p.pushId) !== metadata.pushId) invalid2("\u4E0A\u4F20\u56DE\u6267 ID \u4E0E\u5143\u6570\u636E\u4E0D\u5339\u914D");
|
|
5381
5390
|
return { pushId: metadata.pushId, uploadVersion: p.uploadVersion, status: p.status, metadata, reviewIds: selectedReviewIds(p.reviewIds), failure: p.failure ?? null };
|
|
5382
5391
|
}
|
|
5383
|
-
function parseProductRelease(value) {
|
|
5384
|
-
const r = record(value);
|
|
5385
|
-
if (r.mode !== "with_buddy" && r.mode !== "products_only") invalid2("\u53D1\u5E03\u6A21\u5F0F\u65E0\u6548");
|
|
5386
|
-
if (!["accepted", "activating", "active", "failed", "cancelled"].includes(String(r.status))) invalid2("\u53D1\u5E03\u64CD\u4F5C\u72B6\u6001\u65E0\u6548");
|
|
5387
|
-
if (typeof r.buddyVersion !== "string" || !r.buddyVersion.trim() || /[\u0000-\u001f\u007f]/u.test(r.buddyVersion)) invalid2("\u53D1\u5E03\u7248\u672C\u65E0\u6548");
|
|
5388
|
-
return { releaseId: operationId(r.releaseId), mode: r.mode, buddyVersion: r.buddyVersion, reviewIds: selectedReviewIds(r.reviewIds), status: r.status, ...r.failure === void 0 ? {} : { failure: r.failure } };
|
|
5389
|
-
}
|
|
5390
5392
|
var CloudOperationError = class extends CloudLifecycleError {
|
|
5391
|
-
constructor(code2, message, details, push
|
|
5393
|
+
constructor(code2, message, details, push) {
|
|
5392
5394
|
super(code2, message, details);
|
|
5393
5395
|
this.push = push;
|
|
5394
|
-
this.release = release;
|
|
5395
5396
|
}
|
|
5396
5397
|
push;
|
|
5397
|
-
release;
|
|
5398
5398
|
};
|
|
5399
5399
|
function sameReviewIds(a, b) {
|
|
5400
5400
|
return [...a].sort().join("\0") === [...b].sort().join("\0");
|
|
@@ -5432,7 +5432,7 @@ var OperationStore = class {
|
|
|
5432
5432
|
}
|
|
5433
5433
|
async save(record3) {
|
|
5434
5434
|
const prior = await this.read(record3.id, record3.kind);
|
|
5435
|
-
const input = (r) => r.kind === "push" ? r.metadata :
|
|
5435
|
+
const input = (r) => r.kind === "push" ? r.metadata : { version: r.version, reviews: r.reviews };
|
|
5436
5436
|
if (JSON.stringify(input(prior)) !== JSON.stringify(input(record3))) throw new CloudLifecycleError("INVALID_REQUEST", "\u6062\u590D\u8BB0\u5F55\u7684\u539F\u59CB\u8BF7\u6C42\u4E0D\u80FD\u66F4\u6539");
|
|
5437
5437
|
const temporary = this.path(`${record3.id}_${randomUUID8()}`);
|
|
5438
5438
|
await writeFile8(temporary, JSON.stringify({ identity: this.identity, operation: record3 }), { flag: "wx", mode: 384 });
|
|
@@ -5448,11 +5448,6 @@ var OperationStore = class {
|
|
|
5448
5448
|
if (r.metadata.pushId !== id) throw new Error("push mismatch");
|
|
5449
5449
|
if (r.receipt) parsePackagePush(r.receipt);
|
|
5450
5450
|
}
|
|
5451
|
-
if (r.kind === "release") {
|
|
5452
|
-
parseProductRelease({ ...r.request, status: "accepted" });
|
|
5453
|
-
if (r.request.releaseId !== id) throw new Error("release mismatch");
|
|
5454
|
-
if (r.receipt) parseProductRelease(r.receipt);
|
|
5455
|
-
}
|
|
5456
5451
|
if (r.kind === "submission") {
|
|
5457
5452
|
if (typeof r.version !== "string" || !r.version.trim() || typeof r.confirmed !== "boolean" || r.reviews.length === 0) throw new Error("submission invalid");
|
|
5458
5453
|
parsePushMetadata({ pushId: id, commit: "validate", sourceSha256: "0".repeat(64), productReviews: r.reviews });
|
|
@@ -5477,7 +5472,7 @@ var OperationStore = class {
|
|
|
5477
5472
|
var PRODUCT_HELP = {
|
|
5478
5473
|
push: `\u7528\u6CD5: buddy-cli push --commit <\u6539\u52A8\u8BF4\u660E> [--product <\u5546\u54C1 ID> ...] [--directory <\u76EE\u5F55>]
|
|
5479
5474
|
buddy-cli push --resume <pushId> | --status <pushId> [--directory <\u76EE\u5F55>]
|
|
5480
|
-
\u4E0A\u4F20\u4EE3\u7801\u5E76\u63D0\u4EA4\u660E\u786E\u9009\u4E2D\u7684\u5546\u54C1\uFF1B\u4E0D\u6307\u5B9A --product \u53EA\u4E0A\u4F20\u4EE3\u7801\u3002\
|
|
5475
|
+
\u4E0A\u4F20\u4EE3\u7801\u5E76\u63D0\u4EA4\u660E\u786E\u9009\u4E2D\u7684\u5546\u54C1\uFF1B\u4E0D\u6307\u5B9A --product \u53EA\u4E0A\u4F20\u4EE3\u7801\u3002\u53D1\u5E03\u5728\u5F00\u53D1\u8005\u540E\u53F0\u64CD\u4F5C\u3002
|
|
5481
5476
|
\u5546\u54C1 ID \u793A\u4F8B\uFF1Aprd_12345678\uFF1B\u5DF2\u6709 ps_ \u5546\u54C1 ID \u7EE7\u7EED\u517C\u5BB9\u3002
|
|
5482
5477
|
\u9996\u6B21\u4E0A\u4F20\u5FC5\u987B\u5B89\u88C5 npm latest \u6700\u65B0\u7A33\u5B9A Runtime \u7684\u51C6\u786E\u7248\u672C\uFF1B\u91CD\u8BD5\u56FA\u5B9A\u4F7F\u7528\u539F\u59CB\u5305\u3001\u8349\u7A3F\u7248\u672C\u548C\u5BA1\u6838 ID\u3002
|
|
5483
5478
|
\u7F51\u7EDC\u7ED3\u679C\u672A\u77E5\u65F6\u8BF7\u4F7F\u7528\u8F93\u51FA\u7684 --resume\uFF1B--status \u53EA\u67E5\u8BE2\u3002\u4E0D\u8981\u91CD\u65B0\u4E0A\u4F20\u3002`,
|
|
@@ -5485,13 +5480,7 @@ var PRODUCT_HELP = {
|
|
|
5485
5480
|
buddy-cli products submit --resume <submissionId> [--directory <\u76EE\u5F55>]
|
|
5486
5481
|
\u7528\u4E8E\u5DF2\u4E0A\u4F20\u7248\u672C\u8865\u63D0\u5546\u54C1\uFF1B\u6B63\u5E38 push --product \u5DF2\u81EA\u52A8\u63D0\u5BA1\uFF0C\u65E0\u9700\u91CD\u590D\u6267\u884C\u3002
|
|
5487
5482
|
\u5546\u54C1 ID \u793A\u4F8B\uFF1Aprd_12345678\uFF1B\u5DF2\u6709 ps_ \u5546\u54C1 ID \u7EE7\u7EED\u517C\u5BB9\u3002
|
|
5488
|
-
\u6062\u590D\u4F7F\u7528\u9996\u6B21\u6301\u4E45\u4FDD\u5B58\u7684\u5546\u54C1\u96C6\u5408\u3001\u5BA1\u6838 ID \u548C\u8349\u7A3F\u7248\u672C\u3002
|
|
5489
|
-
release: `\u7528\u6CD5: buddy-cli release (--from-push <pushId> | --from-submission <submissionId>) [--products-only] [--directory <\u76EE\u5F55>]
|
|
5490
|
-
buddy-cli release --version <\u7248\u672C> --code-only [--directory <\u76EE\u5F55>]
|
|
5491
|
-
buddy-cli release (--resume | --status | --retry | --cancel) <releaseId> [--directory <\u76EE\u5F55>]
|
|
5492
|
-
\u53D1\u5E03\u53EA\u91C7\u7528\u6307\u5B9A\u6210\u529F\u56DE\u6267\u4E2D\u7684\u5BA1\u6838\u96C6\u5408\uFF1B\u5546\u54C1\u5931\u8D25\u4E0D\u4F1A\u81EA\u52A8\u964D\u7EA7\u4E3A\u7EAF\u4EE3\u7801\u53D1\u5E03\u3002
|
|
5493
|
-
\u9ED8\u8BA4\u968F\u642D\u5B50\u7248\u672C\u4E00\u8D77\u53D1\u5E03\uFF1B--products-only \u53EA\u6FC0\u6D3B\u5546\u54C1\u5E76\u6838\u5BF9\u5F53\u524D\u7EBF\u4E0A\u7248\u672C\u3002
|
|
5494
|
-
\u4EC5 active \u8868\u793A\u5DF2\u751F\u6548\uFF1Baccepted/activating \u8BF7\u7528 --status \u67E5\u8BE2\u3002`
|
|
5483
|
+
\u6062\u590D\u4F7F\u7528\u9996\u6B21\u6301\u4E45\u4FDD\u5B58\u7684\u5546\u54C1\u96C6\u5408\u3001\u5BA1\u6838 ID \u548C\u8349\u7A3F\u7248\u672C\u3002\u5BA1\u6838\u901A\u8FC7\u540E\u5728\u5F00\u53D1\u8005\u540E\u53F0\u53D1\u5E03\u3002`
|
|
5495
5484
|
};
|
|
5496
5485
|
function parse2(command, args) {
|
|
5497
5486
|
if (command === "products") {
|
|
@@ -5500,15 +5489,11 @@ function parse2(command, args) {
|
|
|
5500
5489
|
}
|
|
5501
5490
|
const values = /* @__PURE__ */ new Map();
|
|
5502
5491
|
const products = [];
|
|
5503
|
-
const allowed = command === "push" ? ["--commit", "--resume", "--status", "--product"] :
|
|
5492
|
+
const allowed = command === "push" ? ["--commit", "--resume", "--status", "--product"] : ["--version", "--resume", "--product"];
|
|
5504
5493
|
for (let i = 0; i < args.length; i++) {
|
|
5505
5494
|
const flag2 = args[i];
|
|
5506
5495
|
if (flag2 !== "--directory" && !allowed.includes(flag2)) throw new CloudCommandUsageError(`\u672A\u77E5\u53C2\u6570 ${flag2}`);
|
|
5507
5496
|
if (flag2 !== "--product" && values.has(flag2)) throw new CloudCommandUsageError(`${flag2} \u4E0D\u80FD\u91CD\u590D`);
|
|
5508
|
-
if (["--code-only", "--products-only"].includes(flag2)) {
|
|
5509
|
-
values.set(flag2, "true");
|
|
5510
|
-
continue;
|
|
5511
|
-
}
|
|
5512
5497
|
const value = args[++i];
|
|
5513
5498
|
if (!value?.trim() || value.startsWith("--") || /[\u0000-\u001f\u007f]/u.test(value)) throw new CloudCommandUsageError(`${flag2} \u7F3A\u5C11\u6709\u6548\u503C`);
|
|
5514
5499
|
if (flag2 === "--product") {
|
|
@@ -5517,12 +5502,12 @@ function parse2(command, args) {
|
|
|
5517
5502
|
} else values.set(flag2, value.trim());
|
|
5518
5503
|
}
|
|
5519
5504
|
if (products.length > 10) throw new CloudCommandUsageError("\u4E00\u6B21\u6700\u591A\u9009\u62E9 10 \u4E2A\u5546\u54C1");
|
|
5520
|
-
const recovery = ["--resume", "--status"
|
|
5505
|
+
const recovery = ["--resume", "--status"].filter((f) => values.has(f));
|
|
5521
5506
|
if (recovery.length && (recovery.length !== 1 || products.length || [...values.keys()].some((f) => f !== "--directory" && !recovery.includes(f)))) throw new CloudCommandUsageError("\u6062\u590D\u6216\u67E5\u8BE2\u547D\u4EE4\u4E0D\u80FD\u540C\u65F6\u66F4\u6539\u539F\u59CB\u8BF7\u6C42");
|
|
5522
5507
|
return { values, products };
|
|
5523
5508
|
}
|
|
5524
5509
|
function required(value) {
|
|
5525
|
-
if (!value) throw new CloudCommandUsageError("\u5E73\u53F0 Adapter \u5C1A\u672A\u652F\u6301\u5546\u54C1\u4E0A\u4F20\u548C\
|
|
5510
|
+
if (!value) throw new CloudCommandUsageError("\u5E73\u53F0 Adapter \u5C1A\u672A\u652F\u6301\u5546\u54C1\u4E0A\u4F20\u548C\u63D0\u5BA1\u534F\u8BAE\uFF0C\u8BF7\u5347\u7EA7 Adapter");
|
|
5526
5511
|
return value;
|
|
5527
5512
|
}
|
|
5528
5513
|
function responseError(message) {
|
|
@@ -5558,10 +5543,10 @@ function showPush(io, push) {
|
|
|
5558
5543
|
if (failureMessage(push.failure)) io.writeError(`\u539F\u56E0\uFF1A${failureMessage(push.failure)}`);
|
|
5559
5544
|
if (push.reviewIds.length) io.write(`\u5546\u54C1\u5BA1\u6838\u7F16\u53F7\uFF1A${push.reviewIds.join(", ")}`);
|
|
5560
5545
|
if (push.status === "completed") {
|
|
5561
|
-
io.write(
|
|
5546
|
+
io.write("\u672C\u6B21 push \u4E0D\u4F1A\u53D1\u5E03\u642D\u5B50\uFF1B\u6784\u5EFA\u6210\u529F\u540E\uFF0C\u8BF7\u5230\u5F00\u53D1\u8005\u540E\u53F0\u201C\u7248\u672C\u4E0E\u53D1\u5E03\u201D\u786E\u8BA4\u4EE3\u7801\u53CA\u6240\u9009\u5546\u54C1\u5BA1\u6838\u7ED3\u679C\u540E\u53D1\u5E03\u3002");
|
|
5562
5547
|
return 0;
|
|
5563
5548
|
}
|
|
5564
|
-
if (push.status === "product_reviews_failed") io.writeError(`\u4EE3\u7801\u5305\u5DF2\u4FDD\u5B58\uFF0C\u5546\u54C1\u672A\u5B8C\u6574\u63D0\u5BA1\u3002\u4FEE\u6B63\u5546\u54C1\u540E\u4F7F\u7528 products submit --version ${push.uploadVersion} --product <\u5546\u54C1 ID> \u8865\u63D0\uFF1B\
|
|
5549
|
+
if (push.status === "product_reviews_failed") io.writeError(`\u4EE3\u7801\u5305\u5DF2\u4FDD\u5B58\uFF0C\u5546\u54C1\u672A\u5B8C\u6574\u63D0\u5BA1\u3002\u4FEE\u6B63\u5546\u54C1\u540E\u4F7F\u7528 buddy-cli products submit --version ${push.uploadVersion} --product <\u5546\u54C1 ID> \u8865\u63D0\uFF1B\u53D1\u5E03\u8BF7\u5230\u5F00\u53D1\u8005\u540E\u53F0\u201C\u7248\u672C\u4E0E\u53D1\u5E03\u201D\u64CD\u4F5C\u3002`);
|
|
5565
5550
|
else io.writeError(`\u4E0A\u4F20\u672A\u5B8C\u6210\uFF0C\u4F7F\u7528 buddy-cli push --resume ${push.pushId} \u6062\u590D\u539F\u8BF7\u6C42\u3002`);
|
|
5566
5551
|
return 1;
|
|
5567
5552
|
}
|
|
@@ -5601,23 +5586,6 @@ async function executePush(record3, sourceBundle, store, client, id, io, options
|
|
|
5601
5586
|
throw cause;
|
|
5602
5587
|
}
|
|
5603
5588
|
}
|
|
5604
|
-
function matchRelease(request, release) {
|
|
5605
|
-
if (request.releaseId !== release.releaseId || request.mode !== release.mode || request.buddyVersion !== release.buddyVersion || !sameReviewIds(request.reviewIds, release.reviewIds)) responseError("\u53D1\u5E03\u56DE\u6267\u4E0E\u56FA\u5B9A\u8BF7\u6C42\u4E0D\u4E00\u81F4");
|
|
5606
|
-
}
|
|
5607
|
-
function showRelease(io, release) {
|
|
5608
|
-
io.write(`\u53D1\u5E03\u7F16\u53F7\uFF1A${release.releaseId}`);
|
|
5609
|
-
io.write(`\u53D1\u5E03\u72B6\u6001\uFF1A${release.status}`);
|
|
5610
|
-
io.write(`\u76EE\u6807\u7248\u672C\uFF1A${release.buddyVersion}`);
|
|
5611
|
-
if (failureMessage(release.failure)) io.writeError(`\u539F\u56E0\uFF1A${failureMessage(release.failure)}`);
|
|
5612
|
-
if (release.status === "active") {
|
|
5613
|
-
io.write("\u53D1\u5E03\u5DF2\u751F\u6548\u3002");
|
|
5614
|
-
return 0;
|
|
5615
|
-
}
|
|
5616
|
-
if (release.status === "failed") io.writeError(`\u53D1\u5E03\u672A\u751F\u6548\u3002\u4FEE\u6B63\u539F\u56E0\u540E buddy-cli release --retry ${release.releaseId}\uFF1B\u653E\u5F03\u5219 --cancel ${release.releaseId}\u3002`);
|
|
5617
|
-
else if (release.status === "cancelled") io.write("\u8BE5\u53D1\u5E03\u5DF2\u53D6\u6D88\u3002");
|
|
5618
|
-
else io.write(`\u53D1\u5E03\u4ECD\u5728\u5904\u7406\uFF0C\u8BF7\u8FD0\u884C buddy-cli release --status ${release.releaseId} \u786E\u8BA4\u662F\u5426\u751F\u6548\u3002`);
|
|
5619
|
-
return 1;
|
|
5620
|
-
}
|
|
5621
5589
|
async function runProductLifecycle(command, args, io, options) {
|
|
5622
5590
|
if (args.length === 1 && ["--help", "-h"].includes(args[0]) || command === "products" && args.length === 2 && args[0] === "submit" && args[1] === "--help") {
|
|
5623
5591
|
io.write(PRODUCT_HELP[command]);
|
|
@@ -5625,7 +5593,7 @@ async function runProductLifecycle(command, args, io, options) {
|
|
|
5625
5593
|
}
|
|
5626
5594
|
const p = parse2(command, args);
|
|
5627
5595
|
const v = p.values;
|
|
5628
|
-
if (options.mode === "local-mock") throw new CloudCommandUsageError("\u672C\u5730\u6A21\u62DF\u6A21\u5F0F\u4E0D\u4F1A\u4F2A\u9020\u6B63\u5F0F push \u6216\
|
|
5596
|
+
if (options.mode === "local-mock") throw new CloudCommandUsageError("\u672C\u5730\u6A21\u62DF\u6A21\u5F0F\u4E0D\u4F1A\u4F2A\u9020\u6B63\u5F0F push \u6216\u5546\u54C1\u63D0\u5BA1\uFF0C\u8BF7\u8FDE\u63A5\u771F\u5B9E MLB Server");
|
|
5629
5597
|
const freshPush = command === "push" && !v.has("--resume") && !v.has("--status");
|
|
5630
5598
|
const root = await (options.resolveProjectRoot ?? (freshPush ? requireBuddyAgentProjectRoot : requireBuddyProjectRoot))(resolve15(options.cwd ?? process.cwd(), v.get("--directory") ?? "."));
|
|
5631
5599
|
const platform = resolvePlatformUrl({ env: options.runtimeUpdate?.env });
|
|
@@ -5666,83 +5634,25 @@ async function runProductLifecycle(command, args, io, options) {
|
|
|
5666
5634
|
io.write(`\u6062\u590D\u7F16\u53F7\uFF1A${pushId}`);
|
|
5667
5635
|
return executePush(record4, bundle, store, client, id, io, options);
|
|
5668
5636
|
}
|
|
5669
|
-
if (command === "products") {
|
|
5670
|
-
let record4;
|
|
5671
|
-
if (v.has("--resume")) record4 = await store.read(v.get("--resume"), "submission");
|
|
5672
|
-
else {
|
|
5673
|
-
const version = v.get("--version");
|
|
5674
|
-
if (!version || !p.products.length) throw new CloudCommandUsageError(PRODUCT_HELP.products);
|
|
5675
|
-
const chosen = await selection(client, id, p.products, io);
|
|
5676
|
-
record4 = { kind: "submission", id: `sub_${randomUUID9()}`, version, reviews: chosen.reviews, confirmed: false };
|
|
5677
|
-
await store.create(record4);
|
|
5678
|
-
}
|
|
5679
|
-
io.write(`\u5546\u54C1\u63D0\u4EA4\u7F16\u53F7\uFF1A${record4.id}`);
|
|
5680
|
-
try {
|
|
5681
|
-
const receipt = await required(client.submitPackageProducts).call(client, { id, version: record4.version, reviews: record4.reviews });
|
|
5682
|
-
if (!sameReviewIds(receipt.reviewIds, record4.reviews.map((r) => r.reviewId))) responseError("\u5E73\u53F0\u672A\u786E\u8BA4\u5B8C\u6574\u5546\u54C1\u5BA1\u6838\u96C6\u5408");
|
|
5683
|
-
await store.save({ ...record4, confirmed: true });
|
|
5684
|
-
io.write(`\u5546\u54C1\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF1A${receipt.reviewIds.join(", ")}`);
|
|
5685
|
-
io.write(`\u5BA1\u6838\u901A\u8FC7\u540E\uFF1Abuddy-cli release --from-submission ${record4.id}`);
|
|
5686
|
-
return { exitCode: 0, buddyId: id, version: record4.version };
|
|
5687
|
-
} catch (cause) {
|
|
5688
|
-
io.writeError(`\u4FDD\u7559\u539F\u8BF7\u6C42\u91CD\u8BD5\uFF1Abuddy-cli products submit --resume ${record4.id}`);
|
|
5689
|
-
throw cause;
|
|
5690
|
-
}
|
|
5691
|
-
}
|
|
5692
|
-
const action = ["--resume", "--status", "--retry", "--cancel"].find((f) => v.has(f));
|
|
5693
5637
|
let record3;
|
|
5694
|
-
if (
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
}
|
|
5701
|
-
record3 = await store.read(releaseId, "release");
|
|
5702
|
-
} else {
|
|
5703
|
-
const sources = ["--from-push", "--from-submission", "--version"].filter((f) => v.has(f));
|
|
5704
|
-
if (sources.length !== 1 || v.has("--code-only") !== v.has("--version") || v.has("--code-only") && v.has("--products-only")) throw new CloudCommandUsageError(PRODUCT_HELP.release);
|
|
5705
|
-
let version;
|
|
5706
|
-
let reviewIds;
|
|
5707
|
-
if (v.has("--from-push")) {
|
|
5708
|
-
const pushRecord = await store.read(v.get("--from-push"), "push");
|
|
5709
|
-
const receipt = await required(client.getPackagePush).call(client, { id, pushId: pushRecord.id });
|
|
5710
|
-
confirmPush(pushRecord, receipt);
|
|
5711
|
-
await store.save({ ...pushRecord, receipt });
|
|
5712
|
-
if (receipt.status !== "completed" || !receipt.uploadVersion) throw new CloudCommandUsageError("\u6307\u5B9A\u4E0A\u4F20\u5C1A\u672A\u5B8C\u6574\u63D0\u5BA1\uFF0C\u4E0D\u80FD\u81EA\u52A8\u7701\u7565\u5931\u8D25\u5546\u54C1\uFF1B\u8BF7\u8865\u63D0\u6216\u660E\u786E --version <\u7248\u672C> --code-only");
|
|
5713
|
-
version = receipt.uploadVersion;
|
|
5714
|
-
reviewIds = receipt.reviewIds;
|
|
5715
|
-
} else if (v.has("--from-submission")) {
|
|
5716
|
-
const submission = await store.read(v.get("--from-submission"), "submission");
|
|
5717
|
-
if (!submission.confirmed) throw new CloudCommandUsageError(`\u8865\u63D0\u7ED3\u679C\u5C1A\u672A\u786E\u8BA4\uFF0C\u8BF7\u5148 products submit --resume ${submission.id}`);
|
|
5718
|
-
version = submission.version;
|
|
5719
|
-
reviewIds = submission.reviews.map((r) => r.reviewId);
|
|
5720
|
-
} else {
|
|
5721
|
-
version = v.get("--version");
|
|
5722
|
-
reviewIds = [];
|
|
5723
|
-
}
|
|
5724
|
-
if (v.has("--products-only")) {
|
|
5725
|
-
if (!reviewIds.length) throw new CloudCommandUsageError("--products-only \u9700\u8981\u660E\u786E\u7684\u5546\u54C1\u5BA1\u6838\u96C6\u5408");
|
|
5726
|
-
const buddy2 = await client.getBuddy({ id });
|
|
5727
|
-
if (buddy2.id !== id || !buddy2.released || buddy2.version !== version) throw new CloudCommandUsageError("\u4EC5\u5546\u54C1\u53D1\u5E03\u8981\u6C42\u56DE\u6267\u7248\u672C\u4E0E\u5F53\u524D\u5DF2\u53D1\u5E03\u642D\u5B50\u7248\u672C\u4E00\u81F4");
|
|
5728
|
-
}
|
|
5729
|
-
const releaseId = `rel_${randomUUID9()}`;
|
|
5730
|
-
record3 = { kind: "release", id: releaseId, request: { releaseId, mode: v.has("--products-only") ? "products_only" : "with_buddy", buddyVersion: version, reviewIds } };
|
|
5638
|
+
if (v.has("--resume")) record3 = await store.read(v.get("--resume"), "submission");
|
|
5639
|
+
else {
|
|
5640
|
+
const version = v.get("--version");
|
|
5641
|
+
if (!version || !p.products.length) throw new CloudCommandUsageError(PRODUCT_HELP.products);
|
|
5642
|
+
const chosen = await selection(client, id, p.products, io);
|
|
5643
|
+
record3 = { kind: "submission", id: `sub_${randomUUID9()}`, version, reviews: chosen.reviews, confirmed: false };
|
|
5731
5644
|
await store.create(record3);
|
|
5732
5645
|
}
|
|
5733
|
-
io.write(`\
|
|
5646
|
+
io.write(`\u5546\u54C1\u63D0\u4EA4\u7F16\u53F7\uFF1A${record3.id}`);
|
|
5734
5647
|
try {
|
|
5735
|
-
const receipt =
|
|
5736
|
-
|
|
5737
|
-
await store.save({ ...record3,
|
|
5738
|
-
|
|
5648
|
+
const receipt = await required(client.submitPackageProducts).call(client, { id, version: record3.version, reviews: record3.reviews });
|
|
5649
|
+
if (!sameReviewIds(receipt.reviewIds, record3.reviews.map((r) => r.reviewId))) responseError("\u5E73\u53F0\u672A\u786E\u8BA4\u5B8C\u6574\u5546\u54C1\u5BA1\u6838\u96C6\u5408");
|
|
5650
|
+
await store.save({ ...record3, confirmed: true });
|
|
5651
|
+
io.write(`\u5546\u54C1\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF1A${receipt.reviewIds.join(", ")}`);
|
|
5652
|
+
io.write("\u5BA1\u6838\u901A\u8FC7\u540E\uFF0C\u8BF7\u5230\u5F00\u53D1\u8005\u540E\u53F0\u786E\u8BA4\u5E76\u53D1\u5E03\u3002");
|
|
5653
|
+
return { exitCode: 0, buddyId: id, version: record3.version };
|
|
5739
5654
|
} catch (cause) {
|
|
5740
|
-
|
|
5741
|
-
matchRelease(record3.request, cause.release);
|
|
5742
|
-
await store.save({ ...record3, receipt: cause.release });
|
|
5743
|
-
showRelease(io, cause.release);
|
|
5744
|
-
}
|
|
5745
|
-
io.writeError(`\u53D1\u5E03\u7ED3\u679C\u9700\u786E\u8BA4\uFF1Abuddy-cli release --status ${record3.id}\uFF1B\u539F\u8BF7\u6C42\u6062\u590D\uFF1Abuddy-cli release --resume ${record3.id}`);
|
|
5655
|
+
io.writeError(`\u4FDD\u7559\u539F\u8BF7\u6C42\u91CD\u8BD5\uFF1Abuddy-cli products submit --resume ${record3.id}`);
|
|
5746
5656
|
throw cause;
|
|
5747
5657
|
}
|
|
5748
5658
|
}
|
|
@@ -6120,7 +6030,7 @@ function serverError(response, body) {
|
|
|
6120
6030
|
return new CloudOperationError(code2, message, {
|
|
6121
6031
|
httpStatus: response.status,
|
|
6122
6032
|
retryable: response.status === 408 || response.status === 429 || response.status >= 500
|
|
6123
|
-
}, source?.push === void 0 ? void 0 : parsePackagePush(source.push)
|
|
6033
|
+
}, source?.push === void 0 ? void 0 : parsePackagePush(source.push));
|
|
6124
6034
|
}
|
|
6125
6035
|
var HttpDeveloperPlatformClient = class {
|
|
6126
6036
|
#baseUrl;
|
|
@@ -6287,24 +6197,6 @@ var HttpDeveloperPlatformClient = class {
|
|
|
6287
6197
|
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/packages/${encodeURIComponent(request.version)}/product-reviews`, "POST", { json: { reviews: request.reviews } }), "response");
|
|
6288
6198
|
return { reviewIds: selectedReviewIds(source.reviewIds) };
|
|
6289
6199
|
}
|
|
6290
|
-
async createProductRelease(request) {
|
|
6291
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases`, "POST", { json: request.release }), "response");
|
|
6292
|
-
return parseProductRelease(source.release);
|
|
6293
|
-
}
|
|
6294
|
-
async getProductRelease(request) {
|
|
6295
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases/${encodeURIComponent(request.releaseId)}`, "GET"), "response");
|
|
6296
|
-
const release = parseProductRelease(source.release);
|
|
6297
|
-
if (release.releaseId !== request.releaseId) throw invalid3("\u53D1\u5E03\u56DE\u6267 ID \u4E0D\u5339\u914D");
|
|
6298
|
-
return release;
|
|
6299
|
-
}
|
|
6300
|
-
async retryProductRelease(request) {
|
|
6301
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases/${encodeURIComponent(request.releaseId)}/retry`, "POST"), "response");
|
|
6302
|
-
return parseProductRelease(source.release);
|
|
6303
|
-
}
|
|
6304
|
-
async cancelProductRelease(request) {
|
|
6305
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases/${encodeURIComponent(request.releaseId)}/cancel`, "POST"), "response");
|
|
6306
|
-
return parseProductRelease(source.release);
|
|
6307
|
-
}
|
|
6308
6200
|
async getPackageBuild(request) {
|
|
6309
6201
|
return parseBuild(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/packages/${encodeURIComponent(request.version)}/build`, "GET"));
|
|
6310
6202
|
}
|
|
@@ -6435,7 +6327,6 @@ var HELP = Object.freeze({
|
|
|
6435
6327
|
logout: "\u7528\u6CD5: buddy-cli logout",
|
|
6436
6328
|
push: PRODUCT_HELP.push,
|
|
6437
6329
|
products: PRODUCT_HELP.products,
|
|
6438
|
-
release: PRODUCT_HELP.release,
|
|
6439
6330
|
status: "\u7528\u6CD5: buddy-cli status [--directory <\u9879\u76EE\u76EE\u5F55>]",
|
|
6440
6331
|
meta: `\u7528\u6CD5: buddy-cli meta [--directory <\u9879\u76EE\u76EE\u5F55> | --buddy-id <\u642D\u5B50 ID>]
|
|
6441
6332
|
buddy-cli meta update [--name <\u540D\u79F0>] [--tagline <\u4E00\u53E5\u8BDD\u4ECB\u7ECD>] [--intro <\u5B8C\u6574\u4ECB\u7ECD>] [--avatar <\u56FE\u7247\u6587\u4EF6>] [--directory <\u9879\u76EE\u76EE\u5F55> | --buddy-id <\u642D\u5B50 ID>]
|
|
@@ -6619,7 +6510,7 @@ async function runMeta(parsed, io, options, legacyAvatar = false) {
|
|
|
6619
6510
|
}
|
|
6620
6511
|
async function runCloudCommand(command, args, io, options = {}) {
|
|
6621
6512
|
try {
|
|
6622
|
-
if (command === "push" || command === "products"
|
|
6513
|
+
if (command === "push" || command === "products") return await runProductLifecycle(command, args, io, options);
|
|
6623
6514
|
const parsed = parse3(args, command);
|
|
6624
6515
|
if (parsed.help) {
|
|
6625
6516
|
io.write(HELP[command]);
|
|
@@ -6664,7 +6555,7 @@ async function runCloudCommand(command, args, io, options = {}) {
|
|
|
6664
6555
|
exitCode: cause instanceof CloudCommandUsageError || cause instanceof BuddyProjectContextError ? 2 : 1
|
|
6665
6556
|
};
|
|
6666
6557
|
}
|
|
6667
|
-
if (["push", "products"
|
|
6558
|
+
if (["push", "products"].includes(command)) {
|
|
6668
6559
|
io.writeError(`buddy-cli: ${cause instanceof Error ? cause.message : "\u64CD\u4F5C\u672A\u5B8C\u6210\uFF0C\u8BF7\u6309\u8F93\u51FA\u7F16\u53F7\u67E5\u8BE2\u6216\u6062\u590D"}`);
|
|
6669
6560
|
return { exitCode: 1 };
|
|
6670
6561
|
}
|
|
@@ -8788,7 +8679,7 @@ async function runBuddyCli(args, io, options = {}) {
|
|
|
8788
8679
|
...options.dev
|
|
8789
8680
|
});
|
|
8790
8681
|
}
|
|
8791
|
-
if (command === "login" || command === "logout" || command === "push" || command === "products" || command === "
|
|
8682
|
+
if (command === "login" || command === "logout" || command === "push" || command === "products" || command === "status" || command === "meta" || command === "avatar") {
|
|
8792
8683
|
return await runCloudCommand(command, rest, io, {
|
|
8793
8684
|
cwd: options.cwd,
|
|
8794
8685
|
runtimeUpdate: options.runtimeCatalog,
|
|
@@ -8969,6 +8860,7 @@ export {
|
|
|
8969
8860
|
isWindowsReservedPathSegment,
|
|
8970
8861
|
latestRuntimeTemplate,
|
|
8971
8862
|
normalizePlatformUrl,
|
|
8863
|
+
npmPackageManifest,
|
|
8972
8864
|
openExternalUrl,
|
|
8973
8865
|
parseBuddyAgentConfig,
|
|
8974
8866
|
parseBuddyProjectManifest,
|