@siming-org/cli 0.8.7 → 0.8.9

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 (2) hide show
  1. package/dist/index.js +55 -8
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -656,7 +656,7 @@ function extractError(res, body) {
656
656
  }
657
657
  }
658
658
  if (res.status === 401) {
659
- error.hint = bizCode === "AUTH_TOKEN_INVALID" ? "Token \u65E0\u6548\u6216\u5DF2\u88AB\u91CD\u7F6E\uFF1AWeb \u7BA1\u7406\u53F0\u91CD\u65B0\u751F\u6210\u540E\u8FD0\u884C siming auth token set \u66F4\u65B0\u672C\u5730\u914D\u7F6E" : "\u672A\u914D\u7F6E\u51ED\u8BC1\uFF1A\u8FD0\u884C siming auth whoami \u8BCA\u65AD\u8EAB\u4EFD\uFF1BWeb \u7BA1\u7406\u53F0\u751F\u6210 Token \u540E\u8FD0\u884C siming auth token set \u914D\u7F6E";
659
+ error.hint = bizCode === "AUTH_TOKEN_INVALID" ? "Token \u65E0\u6548\u6216\u5DF2\u88AB\u540A\u9500\uFF1AWeb \u7BA1\u7406\u53F0\u67E5\u770B/\u590D\u5236\u6709\u6548 Token\uFF0C\u6216\u91CD\u65B0\u7B7E\u53D1\u540E\u8FD0\u884C siming auth token set \u66F4\u65B0\u672C\u5730\u914D\u7F6E" : "\u672A\u914D\u7F6E\u51ED\u8BC1\uFF1A\u8FD0\u884C siming auth whoami \u8BCA\u65AD\u8EAB\u4EFD\uFF1BWeb \u7BA1\u7406\u53F0\u751F\u6210 Token \u540E\u8FD0\u884C siming auth token set \u914D\u7F6E";
660
660
  }
661
661
  return error;
662
662
  }
@@ -1458,10 +1458,27 @@ var defaultGitRunner = async (args, cwd) => {
1458
1458
  return { ok: false, stdout: e.stdout ?? "", stderr: e.stderr ?? e.message ?? String(err2) };
1459
1459
  }
1460
1460
  };
1461
+ var KNOWN_BRANCH_PREFIXES = ["refs/remotes/origin/", "refs/heads/", "refs/remotes/", "origin/"];
1462
+ function normalizeBaseBranch(raw) {
1463
+ let name = raw.trim();
1464
+ let stripped = true;
1465
+ while (stripped) {
1466
+ stripped = false;
1467
+ for (const prefix of KNOWN_BRANCH_PREFIXES) {
1468
+ if (name.startsWith(prefix)) {
1469
+ name = name.slice(prefix.length);
1470
+ stripped = true;
1471
+ break;
1472
+ }
1473
+ }
1474
+ }
1475
+ return name.length > 0 ? name : null;
1476
+ }
1461
1477
  async function resolveCheckContextWithRunner(base, vcs, cwd, scan) {
1462
1478
  const result = scan !== void 0 ? scan(cwd) : scanWorkspaceRepos(cwd);
1463
1479
  const alignRecord = base.nodeRecords["ALIGN"];
1464
- const baseBranch = (alignRecord?.baseBranch !== void 0 && alignRecord.baseBranch !== "" ? alignRecord.baseBranch : void 0) ?? vcs.baseBranch ?? null;
1480
+ const normalizeSource = (value) => value !== void 0 && value !== "" ? normalizeBaseBranch(value) : null;
1481
+ const baseBranch = normalizeSource(alignRecord?.baseBranch) ?? normalizeSource(vcs.baseBranch) ?? null;
1465
1482
  return {
1466
1483
  ...base,
1467
1484
  repos: result.repos,
@@ -3742,7 +3759,7 @@ function createTaskCommand() {
3742
3759
  renderResult(opts.format, result, { fields: result.success ? nodeFields(result.data) : [] });
3743
3760
  });
3744
3761
  const record = task.command("record").description("Node execution records \u2014 summary/checks/artifacts/confirmations/decisions/review (draft-writable, small-step append)");
3745
- withCommonOpts(record.command("set <taskId>"), "fancy").description("Set node record fields \u2014 --summary and/or structured fields (T202609230001: baseBranch/testReport/... ; at least one required)").requiredOption("--node <nid>", "node id (see `task context`)").option("--summary <text>", "node summary text").option("--base-branch <branch>", "align \u57FA\u7840\u5206\u652F\uFF08test-integrate \u7B49\u8282\u70B9\u7ED3\u6784\u5316\u5199\u5165\uFF09").option("--verified-commit <sha>", "\u9A8C\u8BC1\u901A\u8FC7\u5BF9\u5E94\u7684\u63D0\u4EA4\u53F7\uFF08verifiedCommit\uFF09").option("--fixes-applied <n>", "fixesApplied \u4FEE\u590D\u6B21\u6570\uFF08\u975E\u8D1F\u6574\u6570\uFF1BB4 \u6761\u4EF6\u95E8\u7981\uFF1A>0 \u987B\u8BC4\u5BA1 verdict=pass\uFF09").option("--test-report <json>", `testReport JSON\uFF1A'{"command":"pnpm test","passed":10,"failed":0,"skipped":0}'`).option("--deferred-issues <list>", "\u5EF6\u540E\u95EE\u9898 id \u5217\u8868\uFF08\u9017\u53F7\u5206\u9694\uFF09").option("--evidence-files <list>", "\u8BC1\u636E\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\uFF08\u9017\u53F7\u5206\u9694\uFF09").action(
3762
+ withCommonOpts(record.command("set <taskId>"), "fancy").description("Set node record fields \u2014 --summary and/or structured fields (T202609230001: baseBranch/testReport/... ; at least one required)").requiredOption("--node <nid>", "node id (see `task context`)").option("--summary <text>", "node summary text").option("--base-branch <branch>", "align \u57FA\u7840\u5206\u652F\uFF08test-integrate \u7B49\u8282\u70B9\u7ED3\u6784\u5316\u5199\u5165\uFF09").option("--verified-commit <sha>", "\u9A8C\u8BC1\u901A\u8FC7\u5BF9\u5E94\u7684\u63D0\u4EA4\u53F7\uFF08verifiedCommit\uFF09").option("--fixes-applied <n>", "fixesApplied \u4FEE\u590D\u6B21\u6570\uFF08\u975E\u8D1F\u6574\u6570\uFF1BB4 \u6761\u4EF6\u95E8\u7981\uFF1A>0 \u987B\u8BC4\u5BA1 verdict=pass\uFF09").option("--test-report <json>", `testReport JSON\uFF1A'{"command":"pnpm test","passed":10,"failed":0,"skipped":0}'`).option("--deferred-issues <list>", "\u5EF6\u540E\u95EE\u9898 id \u5217\u8868\uFF08\u9017\u53F7\u5206\u9694\u6216 JSON \u5B57\u7B26\u4E32\u6570\u7EC4\uFF09").option("--evidence-files <list>", "\u8BC1\u636E\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\uFF08\u9017\u53F7\u5206\u9694\u6216 JSON \u5B57\u7B26\u4E32\u6570\u7EC4\uFF09").action(
3746
3763
  async (taskId, opts) => {
3747
3764
  const client = createClient(opts.url);
3748
3765
  let fixesApplied;
@@ -3763,9 +3780,39 @@ function createTaskCommand() {
3763
3780
  return;
3764
3781
  }
3765
3782
  }
3766
- const splitList = (raw) => raw === void 0 ? void 0 : raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
3767
- const deferredIssues = splitList(opts.deferredIssues);
3768
- const evidenceFiles = splitList(opts.evidenceFiles);
3783
+ const parseListField = (label, raw) => {
3784
+ const trimmed = raw.trim();
3785
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
3786
+ try {
3787
+ const parsed = JSON.parse(trimmed);
3788
+ if (Array.isArray(parsed) && parsed.every((item) => typeof item === "string")) {
3789
+ return { ok: true, value: parsed.filter((s) => s.trim().length > 0) };
3790
+ }
3791
+ return { ok: false, message: `${label} JSON \u6570\u7EC4\u5143\u7D20\u987B\u5168\u4E3A\u5B57\u7B26\u4E32\uFF08\u6536\u5230 ${raw}\uFF09` };
3792
+ } catch {
3793
+ return { ok: false, message: `${label} JSON \u6570\u7EC4\u89E3\u6790\u5931\u8D25\uFF08\u6536\u5230 ${raw}\uFF09` };
3794
+ }
3795
+ }
3796
+ return { ok: true, value: raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0) };
3797
+ };
3798
+ let deferredIssues;
3799
+ if (opts.deferredIssues !== void 0) {
3800
+ const parsed = parseListField("--deferred-issues", opts.deferredIssues);
3801
+ if (!parsed.ok) {
3802
+ renderResult(opts.format, fail({ message: parsed.message, httpStatus: 0 }));
3803
+ return;
3804
+ }
3805
+ deferredIssues = parsed.value;
3806
+ }
3807
+ let evidenceFiles;
3808
+ if (opts.evidenceFiles !== void 0) {
3809
+ const parsed = parseListField("--evidence-files", opts.evidenceFiles);
3810
+ if (!parsed.ok) {
3811
+ renderResult(opts.format, fail({ message: parsed.message, httpStatus: 0 }));
3812
+ return;
3813
+ }
3814
+ evidenceFiles = parsed.value;
3815
+ }
3769
3816
  const fields = {
3770
3817
  ...opts.summary !== void 0 ? { summary: opts.summary } : {},
3771
3818
  ...opts.baseBranch !== void 0 ? { baseBranch: opts.baseBranch } : {},
@@ -9135,7 +9182,7 @@ async function runDoctor(client) {
9135
9182
  name: "auth",
9136
9183
  status: invalidToken ? "FAIL" : missingToken ? "WARN" : "PASS",
9137
9184
  detail: `server \u9274\u6743${authEnabled ? "\u5DF2\u5F00\u542F" : "\u672A\u5F00\u542F"}\uFF1B\u51ED\u8BC1\u5C42\uFF1A${layerDetail}\uFF1Bserver \u5B9E\u6D4B\u8EAB\u4EFD\uFF1A${identity}`,
9138
- ...invalidToken ? { hint: "\u672C\u5730 Token \u672A\u901A\u8FC7 server \u6821\u9A8C\uFF08\u53EF\u80FD\u5DF2\u88AB\u91CD\u7F6E\uFF09\u2014\u2014Web \u7BA1\u7406\u53F0\u91CD\u65B0\u751F\u6210\u540E\u8FD0\u884C siming auth token set --force \u66F4\u65B0" } : {},
9185
+ ...invalidToken ? { hint: "\u672C\u5730 Token \u672A\u901A\u8FC7 server \u6821\u9A8C\uFF08\u53EF\u80FD\u5DF2\u88AB\u540A\u9500\uFF09\u2014\u2014Web \u7BA1\u7406\u53F0\u67E5\u770B/\u590D\u5236\u6709\u6548 Token \u6216\u91CD\u65B0\u7B7E\u53D1\u540E\u8FD0\u884C siming auth token set --force \u66F4\u65B0" } : {},
9139
9186
  ...missingToken ? { hint: "\u9274\u6743\u5DF2\u5F00\u542F\u4F46\u672C\u5730\u672A\u914D\u7F6E Token\u2014\u2014\u6570\u636E\u64CD\u4F5C\u5C06 401\uFF1BWeb \u7BA1\u7406\u53F0\u751F\u6210 Token \u540E\u8FD0\u884C siming auth token set --global \u914D\u7F6E\uFF08\u672C\u673A\u4E00\u6B21\u5168\u5DE5\u4F5C\u533A\u751F\u6548\uFF09\uFF0C\u6216\u5DE5\u4F5C\u533A\u914D\u7F6E siming auth token set" } : {}
9140
9187
  });
9141
9188
  }
@@ -10355,7 +10402,7 @@ function createAuthCommand() {
10355
10402
  info("\u63D0\u793A\uFF1A\u76EE\u6807 server \u5DF2\u5F00\u542F\u9274\u6743\u4E14\u672C\u5730\u672A\u914D\u7F6E Token\u2014\u2014Web \u7BA1\u7406\u53F0\u751F\u6210 Token \u540E\u8FD0\u884C siming auth token set --global \u914D\u7F6E\uFF08\u672C\u673A\u4E00\u6B21\u5168\u5DE5\u4F5C\u533A\u751F\u6548\uFF09\uFF0C\u6216\u5DE5\u4F5C\u533A\u914D\u7F6E siming auth token set\uFF08\u9879\u76EE\u5F52\u5C5E\u573A\u666F\uFF09");
10356
10403
  }
10357
10404
  if (authEnabled && localToken !== "none" && identity === "none") {
10358
- info("\u63D0\u793A\uFF1A\u672C\u5730 Token \u672A\u901A\u8FC7 server \u6821\u9A8C\uFF08\u53EF\u80FD\u5DF2\u88AB\u91CD\u7F6E\uFF09\u2014\u2014\u91CD\u65B0\u751F\u6210\u540E siming auth token set --force \u66F4\u65B0");
10405
+ info("\u63D0\u793A\uFF1A\u672C\u5730 Token \u672A\u901A\u8FC7 server \u6821\u9A8C\uFF08\u53EF\u80FD\u5DF2\u88AB\u540A\u9500\uFF09\u2014\u2014Web \u7BA1\u7406\u53F0\u67E5\u770B/\u590D\u5236\u6709\u6548 Token \u6216\u91CD\u65B0\u7B7E\u53D1\u540E siming auth token set --force \u66F4\u65B0");
10359
10406
  }
10360
10407
  process.exitCode = 0;
10361
10408
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siming-org/cli",
3
- "version": "0.8.7",
3
+ "version": "0.8.9",
4
4
  "license": "MIT",
5
5
  "author": "Wuchao",
6
6
  "engines": {
@@ -27,8 +27,8 @@
27
27
  "picocolors": "^1.1.1",
28
28
  "yaml": "^2.6.0",
29
29
  "zod": "^4.4.3",
30
- "@siming-org/core": "0.8.7",
31
- "@siming-org/server": "0.8.7"
30
+ "@siming-org/core": "0.8.9",
31
+ "@siming-org/server": "0.8.9"
32
32
  },
33
33
  "devDependencies": {
34
34
  "tsup": "^8.3.5",