@xqyz/xq-cli 0.3.6 → 0.3.7
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 +26 -2
- package/package.json +1 -1
- package/src/cli.mjs +17 -4
package/CHANGELOG.md
CHANGED
|
@@ -10,12 +10,36 @@
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## [0.3.7 / WorkBuddy Plugin 0.10.20 / SkillHub 1.0.4] - 2026-08-25
|
|
14
|
+
|
|
15
|
+
### 规划模式解析唤醒修复
|
|
16
|
+
|
|
17
|
+
- 修复规划模式新任务只调用 `/task/preSet`、没有调用 `/proxy/multiBiddingChoice` 的问题。
|
|
18
|
+
- 规划模式现在与 Web 端一致:先保存用户配置,再唤醒异步解析;解析结果补齐后才展示“智能解读确认”,不会提前生成大纲。
|
|
19
|
+
- 保留规划模式确认闸门:用户确认智能解读后才调用 `plan confirm-outline`,不会因为修复唤醒链路而跳过大纲、目录审阅。
|
|
20
|
+
- 新增真实模拟回归测试,覆盖解析字段为空时的唤醒顺序和禁止提前调用正式生成接口。
|
|
21
|
+
|
|
22
|
+
## [0.3.6 / WorkBuddy Plugin 0.10.19] - 2026-08-24
|
|
23
|
+
|
|
24
|
+
### 安装和二次更新闭环
|
|
25
|
+
|
|
26
|
+
- SkillHub 正式身份统一为 `@org-kkw9656k/xique-ai`;安装器会同步完整 Skill 到正式目录、修正 `.skills_store_lock.json`,并把历史 `xique-bid` 重复目录移入可恢复的 `.skill-backup`。
|
|
27
|
+
- 用户明确安装或更新时通过 npm 受控标签 `workbuddy-stable` 获取最新稳定安装器;安装器解析自身版本后,仍将精确版本写入 `mcp.json`,所以 WorkBuddy 重启不会因浮动标签加载不同构建。
|
|
28
|
+
- 一次更新同时覆盖 Skill、MCP Plugin 和内置 xq-cli。MCP 配置保留其他服务,更新前备份;新 MCP 必须完成 `initialize` 握手,失败会恢复旧配置且不宣称成功。
|
|
29
|
+
- Windows 支持带空格的 Node/npx 路径;macOS/Linux 不依赖 `sort -V`,支持 WorkBuddy 的 `bin/node` 和扁平 Node 布局,并检查执行权限。
|
|
30
|
+
- 新增新装、旧 Skill 身份迁移、锁记录修复、重复更新幂等、MCP 启动失败回滚及 Windows 安装回归测试。
|
|
31
|
+
- npm 正式包并发安装验收发现共享 npx 缓存会在 Windows 产生 `ENOTEMPTY` 和包文件缺失;`0.10.16` 起为每次 bootstrap 使用独立缓存,并为安装器增加跨进程锁和喜鹊专属 MCP 运行缓存。
|
|
32
|
+
- `0.10.17` 在 Windows 上通过隐藏 Node 进程延迟清理 bootstrap 缓存,并在下次安装时回收陈旧目录,避免 npx 子进程短暂占用造成残留。
|
|
33
|
+
- `0.10.18` 查询 `workbuddy-stable` 时强制 `--prefer-online`,避免 npm 本地元数据缓存让已移动的稳定标签继续解析到旧版本。
|
|
34
|
+
- `0.10.19` 改为读取 npm `dist-tags --json` 中的 `workbuddy-stable` 字段,不再依赖 `包@标签 version` 的 CDN 别名解析,避免标签移动后的短暂旧值。
|
|
35
|
+
- 安装前先从 npm 官方 registry 解析 `workbuddy-stable` 的精确版本,安装器再校验自身版本;即使 npx 复用错误缓存,也会在写配置前失败。`0.10.15` 已发布但不作为稳定安装版本。
|
|
36
|
+
|
|
37
|
+
### 正文阶段安全闸门
|
|
14
38
|
|
|
15
39
|
- 大纲和目录实际保存前强制读取喜鹊后台权威任务状态,不再因为本机没有任务缓存而绕过“正文已开始/已完成”保护。
|
|
16
40
|
- 状态校验放在 `--dry-run` 和用户确认之后、写接口之前,保留离线差异预览能力,同时覆盖确认后发生的并发状态变化。
|
|
17
41
|
- 新增回归测试:无本地缓存的已完成任务不会调用大纲或目录保存接口;纯预览不会额外依赖任务详情接口。
|
|
18
|
-
-
|
|
42
|
+
- `@xqyz/xq-cli@0.3.6` 包含该修复,WorkBuddy Plugin `0.10.19` 固定依赖此版本。
|
|
19
43
|
|
|
20
44
|
### WorkBuddy Plugin 0.10.14 / SkillHub 1.0.11 发布记录
|
|
21
45
|
|
package/package.json
CHANGED
package/src/cli.mjs
CHANGED
|
@@ -1409,7 +1409,7 @@ async function handleOutlineUnlocked(args, state) {
|
|
|
1409
1409
|
|
|
1410
1410
|
const planningMode = Number(params.planMode) === 1;
|
|
1411
1411
|
const triggerMode = planningMode
|
|
1412
|
-
? await preparePlanningAnalysis(client, params)
|
|
1412
|
+
? await preparePlanningAnalysis(client, outlineSnapshot, params)
|
|
1413
1413
|
: await triggerOutlineGeneration(client, outlineSnapshot, params);
|
|
1414
1414
|
saveTaskSnapshot(state, cid, {
|
|
1415
1415
|
...outlineSnapshot,
|
|
@@ -2083,10 +2083,23 @@ async function triggerOutlineGeneration(client, snapshot, params) {
|
|
|
2083
2083
|
return 'multiBiddingChoice';
|
|
2084
2084
|
}
|
|
2085
2085
|
|
|
2086
|
-
async function preparePlanningAnalysis(client, params) {
|
|
2087
|
-
//
|
|
2088
|
-
//
|
|
2086
|
+
async function preparePlanningAnalysis(client, snapshot, params) {
|
|
2087
|
+
// Planning mode pauses before outline generation, but new tasks still need
|
|
2088
|
+
// the same parser wake-up as quick mode. Without multiBiddingChoice,
|
|
2089
|
+
// autoGenerateDirectoryJobHandler never fills requirement/rating/plan and
|
|
2090
|
+
// the analysis poll remains pending until the local timeout.
|
|
2091
|
+
if (Number(snapshot.task_status) === 0) {
|
|
2092
|
+
// Legacy tasks already contain parsed fields and do not need the
|
|
2093
|
+
// asynchronous parser wake-up endpoint.
|
|
2094
|
+
await postJson(client, '/task/preSet', params);
|
|
2095
|
+
return 'planningAnalysisPrepared';
|
|
2096
|
+
}
|
|
2089
2097
|
await postJson(client, '/task/preSet', params);
|
|
2098
|
+
await getJson(client, '/proxy/multiBiddingChoice', compactObject({
|
|
2099
|
+
uuid: snapshot.uuid,
|
|
2100
|
+
multiBidId: params.multiBidId ?? snapshot.multiBidId,
|
|
2101
|
+
epcEngineerType: normalizeEpcEngineerTypeForProxy(params.epcEngineerType ?? snapshot.epcEngineerType),
|
|
2102
|
+
}));
|
|
2090
2103
|
return 'planningAnalysisPrepared';
|
|
2091
2104
|
}
|
|
2092
2105
|
|