@xqyz/xq-cli 0.3.11 → 0.3.12

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/CHANGELOG.md CHANGED
@@ -10,7 +10,27 @@
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
- (暂无未发布变更)
13
+ ### 供应方式确认恢复
14
+
15
+ - 修复解析完成但 `bidderIdentity_judgement=0` 时 WorkBuddy 直接阻塞的问题,新增“我们自己生产 / 我们采购供应”选择卡。
16
+ - 供应方式提交后沿用同一 `runId/cid/uuid` 继续生成,兼容旧版本已标记为 `blocked` 的历史任务,并防止重复提交。
17
+ - 同步 CLI `bidder-role` 命令、MCP App、Hook 白名单、Connector/Plugin Skill 和回归测试。
18
+ - 计划发布 `@xqyz/xq-cli@0.3.12`、`@xqyz/workbuddy-plugin-xique@0.10.30`,生成 SkillHub `1.0.12` 上传包(待发布人手动上传)。
19
+
20
+ ## [WorkBuddy Plugin 0.10.29] - 2026-08-27
21
+
22
+ ### 模板5表格顺序
23
+
24
+ - 保持模板5紧凑编号表格位于“导出模板”之后,避免展开“导出格式设置”时顺序错乱。
25
+ - `@xqyz/workbuddy-plugin-xique@0.10.29` 已发布,`latest` 和 `workbuddy-stable` 均已指向该版本;SkillHub 无需新增版本。
26
+
27
+ ## [WorkBuddy Plugin 0.10.28] - 2026-08-27
28
+
29
+ ### 模板5自定义编号表格
30
+
31
+ - 修复模板5自定义编号在并入“导出格式设置”后误用通用单选卡的问题。
32
+ - 恢复标题级、正文级编号设置的紧凑表格下拉布局;数据结构和导出参数保持不变。
33
+ - `@xqyz/workbuddy-plugin-xique@0.10.28` 已发布,`latest` 和 `workbuddy-stable` 均已指向该版本;SkillHub 无需新增版本。
14
34
 
15
35
  ## [xq-cli 0.3.11 / WorkBuddy Plugin 0.10.27 / SkillHub 1.0.11] - 2026-08-27
16
36
 
@@ -20,7 +40,7 @@
20
40
  - 极短篇、超短篇按前端规则禁用专家智笔和旗舰智笔;图片来源选项保持直接展示。
21
41
  - 表格、流程图、模板、编号、修改标记、页边距和图片尺寸等低频选项统一收纳到默认收起的“导出格式设置”。
22
42
  - 同步 CLI、MCP App、Connector 和 Skill 文档,保持配置提交和规划流程不变。
23
- - `@xqyz/xq-cli@0.3.11` 与 `@xqyz/workbuddy-plugin-xique@0.10.27` 待发布;SkillHub `1.0.11` 上传包待手动上传。
43
+ - `@xqyz/xq-cli@0.3.11` 与 `@xqyz/workbuddy-plugin-xique@0.10.27` 已发布;`latest` 和 `workbuddy-stable` 均已指向对应版本。SkillHub `1.0.11` 上传包待手动上传。
24
44
 
25
45
  ## [WorkBuddy Plugin 0.10.26 / SkillHub 1.0.10] - 2026-08-27
26
46
 
package/README.md CHANGED
@@ -59,6 +59,7 @@ xq-cli login --browser
59
59
  xq-cli wizard
60
60
  xq-cli wizard --file D:\bids\tender.docx
61
61
  xq-cli init --file D:\bids\tender.docx --wait
62
+ xq-cli bidder-role --cid <cid> --uuid <uuid> --bidder-role <1|2>
62
63
  xq-cli outline --cid <cid> --interactive --wait
63
64
  xq-cli outline --cid <cid> --wait
64
65
  xq-cli outline view --cid <cid>
@@ -95,6 +96,11 @@ uploads an image in the Xique frontend.
95
96
 
96
97
  When `outline --wait` or `write --wait` hits a required response-basis step, the CLI will pause and ask you to choose `0/1/2` before continuing. It no longer auto-selects a default when you just press Enter.
97
98
 
99
+ For goods procurement tasks paused on the bidder supply method, use
100
+ `xq-cli bidder-role --cid <cid> --uuid <uuid> --bidder-role 1|2` (`1` means
101
+ self production, `2` means procured supply). The command only submits the
102
+ choice for the existing parsed task; it does not upload or create a task.
103
+
98
104
  `write --wait` now also retries `sequelForOutline` when the directory phase stalls at the outline-complete step, and auto-calls `generateAllUnfinished` if the backend reports `100%` but still leaves unfinished chapters behind.
99
105
 
100
106
  `write` follows the frontend flow:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xqyz/xq-cli",
3
- "version": "0.3.11",
3
+ "version": "0.3.12",
4
4
  "description": "CLI for xique bid-book task workflows",
5
5
  "type": "module",
6
6
  "scripts": {
package/src/cli.mjs CHANGED
@@ -398,6 +398,9 @@ async function main() {
398
398
  case 'period-confirm':
399
399
  await handlePeriodConfirm(parsed, state);
400
400
  return;
401
+ case 'bidder-role':
402
+ await handleBidderRole(parsed, state);
403
+ return;
401
404
  case 'outline':
402
405
  if (isOutlineAction(parsed, ['view', 'show'])) {
403
406
  await handleOutlineView(parsed, state);
@@ -467,6 +470,7 @@ Commands
467
470
  parse-status Query or wait for parse completion
468
471
  period-status Query engineering project period confirmation status
469
472
  period-confirm Save confirmed engineering project period
473
+ bidder-role Save the bidder's goods supply method for the current task
470
474
  outline Pre-set task params and trigger outline generation
471
475
  outline view View the current outline without triggering generation
472
476
  outline update Update the current outline from an edited JSON file
@@ -500,6 +504,7 @@ Examples
500
504
  $env:XQ_API_KEY="xq_sk_xxx"
501
505
  xq-cli init --file D:\\bids\\tender.docx --wait
502
506
  xq-cli parse-status --cid <cid> --uuid <uuid> --wait
507
+ xq-cli bidder-role --cid <cid> --uuid <uuid> --bidder-role <1|2>
503
508
  xq-cli choices
504
509
  xq-cli choices outline --json
505
510
  xq-cli gallery-status --json
@@ -539,6 +544,7 @@ Common options
539
544
  --timeout-sec <n> Poll timeout in seconds, default 600
540
545
  --interval-sec <n> Poll interval in seconds, default 10
541
546
  --reference-type <0|1|2> Outline reference choice: 0=merge, 1=format only, 2=score only
547
+ --bidder-role <1|2> Goods supply method: 1=self production, 2=procured supply
542
548
  --browser Skip the local login page and open browser authorization directly
543
549
  --api-key <key> Save a user API key locally and verify it with /user/info
544
550
  --no-open Do not open the local login page automatically
@@ -948,6 +954,41 @@ async function handlePeriodConfirm(args, state) {
948
954
  return payload;
949
955
  }
950
956
 
957
+ async function handleBidderRole(args, state) {
958
+ const client = createAuthorizedClient(args, state);
959
+ const cid = resolveCid(args, state);
960
+ const snapshot = await hydrateTaskSnapshot(client, state, cid);
961
+ const uuid = stringOption(args, 'uuid', snapshot.uuid);
962
+ if (!uuid) {
963
+ throw new Error(`No uuid found for task ${cid}. Pass --uuid explicitly or run init first.`);
964
+ }
965
+ const bidderRole = numberOption(args, 'bidderRole');
966
+ if (![1, 2].includes(bidderRole)) {
967
+ throw new Error('Option --bidder-role expects 1 (self production) or 2 (procured supply).');
968
+ }
969
+ const response = await getJson(client, '/proxy/savebidderRole', {
970
+ uuid,
971
+ bidderRole,
972
+ });
973
+ saveTaskSnapshot(state, cid, {
974
+ uuid,
975
+ bidderRole,
976
+ });
977
+ const payload = {
978
+ command: 'bidder-role',
979
+ cid,
980
+ uuid,
981
+ bidderRole,
982
+ response,
983
+ };
984
+ outputResult(args, payload, [
985
+ `bidder role saved: cid=${cid}`,
986
+ `uuid: ${uuid}`,
987
+ `bidder role: ${bidderRole === 1 ? 'self production' : 'procured supply'}`,
988
+ ]);
989
+ return payload;
990
+ }
991
+
951
992
  function handleChoices(args) {
952
993
  const scope = normalizeChoicesScope(args._[1] || 'all');
953
994
  const payload = buildChoicesPayload(scope);
@@ -5254,6 +5295,7 @@ function pickTaskSnapshot(source) {
5254
5295
  multiBidType: source.multiBidType,
5255
5296
  choiceMultiBiddingId: source.choiceMultiBiddingId,
5256
5297
  epcEngineerType: source.epcEngineerType,
5298
+ bidderRole: source.bidderRole,
5257
5299
  outlineReferenceType: source.outlineReferenceType,
5258
5300
  referenceStatus: source.referenceStatus,
5259
5301
  themeStyleSetting: source.themeStyleSetting,