From 7ffaed4fad511d3cabb687dff6c3fe959c4023e4 Mon Sep 17 00:00:00 2001 From: YisfL <128236527+YisfL@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:10:03 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix(shared-core):=20=E9=94=81=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E8=B7=A8=E7=BA=BF=E7=A8=8B=E8=A6=86=E7=9B=96=E7=AB=9E?= =?UTF-8?q?=E6=80=81=E6=A0=B9=E6=B2=BB=20+=20REPO=5FRE=20=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=20+=20=E5=A5=91=E7=BA=A6=E5=B8=B8=E9=87=8F=E6=B8=85?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 锁心跳(P1b):Worker 改经持有 fd 写 token(绝不按路径重开), 并以 SharedArrayBuffer + Atomics 停止握手保证 release 前绝不再写, 根治 release→reacquire 窗口旧 pid 覆盖新持有者锁的跨进程竞态。 - 新增 REPO_RE:source.repo 强制 owner/repo 格式(拒绝穿越/空白/元字符)。 - 移除死常量 CRASH_LOOP_WINDOW_MS;makeError 剥离保留字段(code/message/exitCode)。 - 同步 3 份 vendor-shared 副本(字节一致)。 - 测试:P1b 跨线程覆盖竞态回归 + REPO_RE 矩阵 + refresh 句柄清理 + openssl 加固。 --- .../dsh-memory-hub/vendor-shared/CONTRACT.md | 2 + .../vendor-shared/contracts/constants.js | 10 ++- .../vendor-shared/fs/lock-heartbeat.js | 43 ++++++++++ .../dsh-memory-hub/vendor-shared/fs/lock.js | 86 ++++++++++++++++--- .../dsh-memory-hub/vendor-shared/ids.js | 7 ++ .../dsh-memory-hub/vendor-shared/index.mjs | 4 +- dsh-hotplug-hub/vendor-shared/CONTRACT.md | 2 + .../vendor-shared/contracts/constants.js | 10 ++- .../vendor-shared/fs/lock-heartbeat.js | 43 ++++++++++ dsh-hotplug-hub/vendor-shared/fs/lock.js | 86 ++++++++++++++++--- dsh-hotplug-hub/vendor-shared/ids.js | 7 ++ dsh-hotplug-hub/vendor-shared/index.mjs | 4 +- packages/shared-core/CONTRACT.md | 2 + packages/shared-core/contracts/constants.js | 10 ++- packages/shared-core/fs/lock-heartbeat.js | 43 ++++++++++ packages/shared-core/fs/lock.js | 86 ++++++++++++++++--- packages/shared-core/ids.js | 7 ++ packages/shared-core/index.mjs | 4 +- packages/shared-core/test/ids.test.js | 13 +++ packages/shared-core/test/lock.test.js | 61 +++++++++++++ packages/shared-core/test/net.test.js | 25 ++++-- .../dseam-skillmcp/vendor-shared/CONTRACT.md | 2 + .../vendor-shared/contracts/constants.js | 10 ++- .../vendor-shared/fs/lock-heartbeat.js | 43 ++++++++++ .../dseam-skillmcp/vendor-shared/fs/lock.js | 86 ++++++++++++++++--- vendor/dseam-skillmcp/vendor-shared/ids.js | 7 ++ vendor/dseam-skillmcp/vendor-shared/index.mjs | 4 +- 27 files changed, 623 insertions(+), 84 deletions(-) create mode 100644 dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock-heartbeat.js create mode 100644 dsh-hotplug-hub/vendor-shared/fs/lock-heartbeat.js create mode 100644 packages/shared-core/fs/lock-heartbeat.js create mode 100644 vendor/dseam-skillmcp/vendor-shared/fs/lock-heartbeat.js diff --git a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/CONTRACT.md b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/CONTRACT.md index 71200f6..8c412dc 100644 --- a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/CONTRACT.md +++ b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/CONTRACT.md @@ -17,6 +17,7 @@ | `PACK_ID_RE` | `^[a-z0-9][a-z0-9._-]{0,63}$`(大小写不敏感) | 包 id / CLI id:字母数字开头,允许 `. _ -`,1..64 字符 | | `PLUGIN_NAME_RE` | `^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$` | npm 包名(可 scoped) | | `EXACT_VERSION_RE` | `^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$` | 精确版本号(**须再经 semver 双检**:`semver.valid(v) !== null`,拒绝 `1.02.3` 等) | +| `REPO_RE` | `^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$` | GitHub 仓库 `owner/repo`(两段、字母数字开头;拒绝前导 `. -` 与 `..` 段,防 URL/git clone 路径穿越) | | `RESERVED_WIN_NAMES` | `CON PRN AUX NUL COM1..COM9 LPT1..LPT9` | Windows 保留设备名(任何单段名均拒绝,含首段匹配) | | 长度预算 | id ≤ 64;patch id ≤ 64;source.path ≤ 4096;source.repo ≤ 512;source.ref ≤ 256 | | @@ -25,6 +26,7 @@ - 尾随 `.` 或空格拒绝; - 插件名每个 `/` 段均过 Windows 安全名检查; - `source.path` 必须绝对、拒绝 UNC、拒绝 `.`/`..` 段; +- `source.repo` 必须匹配 `REPO_RE`(`owner/repo` 两段、字母数字开头;拒绝空白/元字符/`..` 段); - `source.ref` 拒绝 `..`、纯点、控制字符、超长(阶段 2 起允许合法 `/`)。 ## 2. 错误码与结果契约 diff --git a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/contracts/constants.js b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/contracts/constants.js index 619d076..da5c89d 100644 --- a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/contracts/constants.js +++ b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/contracts/constants.js @@ -7,6 +7,9 @@ const os = require('os'); const PACK_ID_RE = /^[a-z0-9][a-z0-9._-]{0,63}$/i; const PLUGIN_NAME_RE = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/; const EXACT_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/; +// GitHub 仓库 owner/repo 格式:两段、各段字母数字开头(拒绝前导 . - 与 .. 段, +// 防止 repo 进入 URL/git clone 时产生路径穿越或畸形 URL)。 +const REPO_RE = /^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$/; // Windows 保留设备名(N43:CON/NUL/COM1… 全部拒绝) const RESERVED_WIN_NAMES = new Set([ @@ -45,9 +48,10 @@ const LOCK_REFRESH_MS = 10000; const LAUNCH_ALIVE_CHECK_MS = 500; const LAUNCH_WAIT_TIMEOUT_MS = 120000; -// 崩溃循环判定(3 次 / 30s 窗口) +// 崩溃循环判定:连续 CRASH_LOOP_THRESHOLD 次非零退出(retries 连续失败计数, +// 成功即清零;与 classifyStateSignals / healplan 触发文案一致)。历史曾声明 +// "30s 窗口"语义(CRASH_LOOP_WINDOW_MS),但从未被实现或消费——已删除该死常量。 const CRASH_LOOP_THRESHOLD = 3; -const CRASH_LOOP_WINDOW_MS = 30000; // 自愈默认重试预算 const DEFAULT_RETRY_BUDGET = 3; @@ -133,6 +137,7 @@ module.exports = { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, @@ -148,7 +153,6 @@ module.exports = { LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, - CRASH_LOOP_WINDOW_MS, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, diff --git a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock-heartbeat.js b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock-heartbeat.js new file mode 100644 index 0000000..b290b99 --- /dev/null +++ b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock-heartbeat.js @@ -0,0 +1,43 @@ +'use strict'; +// fs/lock-heartbeat.js — 锁 token 心跳(Worker 线程,独立事件循环) +// +// 背景(P1 修复):主线程持锁期间若执行阻塞式 spawnSync(npm/git 安装 >30s), +// 事件循环冻结,setInterval 无法触发 → token 时间戳不再刷新 → 第二写者按 +// "存活 pid + token 超龄"判定陈旧并接管锁,破坏并发写互斥。 +// 本 Worker 运行在独立线程,其事件循环与主线程互不阻塞,故即使主线程卡在 +// spawnSync,token 仍按 refreshMs 周期刷新,锁的陈旧判定契约(CONTRACT.md §5) +// 得以维持。 +// +// 审计修复(P1b,跨线程覆盖竞态):此前每 tick 用 fs.openSync(lockPath, 'r+') +// 按【路径】重开锁文件写 token——release 后主线程 unlink 旧锁、另一进程在同路径 +// 重建新锁,若本 Worker 尚未被 terminate(terminate 异步、存在窗口),下一次 tick +// 会打开【新持有者的锁文件】并用旧 pid 覆盖其 token,击穿跨进程互斥(已实证复现)。 +// +// 根因修复:Worker 不按路径重开,改经【主线程传入的持有 fd】写——该 fd 由 +// acquireLock 用 'wx' 独占创建、绑定获取锁时创建的固定 inode;release 后主线程 +// unlink + 重建同名文件,本 fd 仍指向旧的(已 unlink)inode,写入不影响新持有者。 +// +// 同步停止握手:主线程 releaseLock 先 Atomics.store(ctrl[0]=1) 请求停止并 +// Atomics.notify 唤醒本 Worker,再 Atomics.wait(ctrl[1]==1) 等待确认;本 Worker +// 仅在 while 条件(ctrl[0]==0)为真时写,收到停止请求后【绝不再写】,随后置 +// ctrl[1]=1 确认并退出。主线程在收到确认前不关闭 fd → 不存在"写已关闭/被复用 fd" +// 的窗口(fd 复用竞态一并消除)。 +const { workerData } = require('worker_threads'); +const fs = require('fs'); + +const { fd, pid, refreshMs, ctrl } = workerData; +const c = new Int32Array(ctrl); // c[0]=停止请求(主线程写);c[1]=已停止确认(本 Worker 写) + +while (Atomics.load(c, 0) === 0) { + try { + fs.ftruncateSync(fd, 0); + fs.writeSync(fd, `${pid}\n${Date.now()}\n`, 0, 'utf8'); + } catch (_) { /* 刷新失败:下次重试;陈旧接管兜底 */ } + // 阻塞至 refreshMs 或主线程请求停止(Atomics.notify 立即唤醒) + Atomics.wait(c, 0, 0, refreshMs); +} + +// 确认停止并退出(主线程据此决定关闭 fd 的时机) +Atomics.store(c, 1, 1); +Atomics.notify(c, 1); +process.exit(0); diff --git a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock.js b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock.js index a30c961..cb508fc 100644 --- a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock.js +++ b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/fs/lock.js @@ -24,7 +24,7 @@ // | EEXIST + pid 死 | 立即接管 | // | EEXIST + EACCES/EPERM(他用户) | 等待至超时,不接管 | // | token 缺失/损坏 | 按文件 mtime 判陈旧 | -const { dirname } = require('path'); +const { dirname, join } = require('path'); const { LOCK_WAIT_MS, LOCK_STALE_MS, @@ -160,6 +160,60 @@ function checkV1DirectoryLock(fsPort, lockPath, opts) { return { held: false }; } +/** + * 启动锁 token 心跳。 + * P1 修复:优先用 Worker 线程(独立事件循环)——主线程执行阻塞式 spawnSync 时 + * setInterval 无法触发,token 会陈旧被第二写者接管;Worker 线程不受主线程阻塞影响。 + * Worker 不可用(环境限制)时回退主线程 setInterval(尽力而为,阻塞期间仍可能陈旧)。 + * + * P1b 修复(跨线程覆盖竞态):Worker 经【主线程传入的持有 fd】写 token,绝不按路径 + * 重开——按路径重开会在 release→reacquire 窗口打开新持有者的锁文件并用旧 pid 覆盖其 + * token。fd 绑定获取锁时创建的 inode,release 后重建同名文件也不受影响。 + * 同步停止握手:返回 heartbeat 句柄含 stop(),其置停止请求 + 等 Worker 确认后再让 + * 调用方关 fd(见 releaseLock)。 + * @param {object} fsPort fs 端口(回退路径用) + * @param {number} pid 持有者 pid + * @param {number} refreshMs 刷新周期(0=不刷新,返回 null) + * @param {number} fd 主线程已打开的锁 fd(Worker 经此写;回退路径重写 token 用) + * @returns {{stop: Function}|object|null} heartbeat 句柄或 interval 句柄 + */ +function startHeartbeat(fsPort, pid, refreshMs, fd) { + if (!(refreshMs > 0)) return null; + try { + const { Worker } = require('worker_threads'); + const ctrl = new SharedArrayBuffer(8); // 2×Int32:c[0]=停止请求,c[1]=已停止确认 + const worker = new Worker(join(__dirname, 'lock-heartbeat.js'), { + workerData: { fd, pid, refreshMs, ctrl } + }); + if (typeof worker.unref === 'function') worker.unref(); + const c = new Int32Array(ctrl); + return { + stop() { + // 请求停止并等待 Worker 确认:确认后 Worker 绝不再写,调用方可安全关 fd。 + Atomics.store(c, 0, 1); + Atomics.notify(c, 0); + const deadline = Date.now() + 1000; + while (Atomics.load(c, 1) === 0 && Date.now() < deadline) { + // Worker 收到 notify 后应立即置 c[1]=1;此处短暂自旋兜底(Worker 崩溃/未启动) + Atomics.wait(c, 1, 0, 50); + } + try { worker.terminate(); } catch (_) { /* 忽略 */ } + } + }; + } catch (_) { + // Worker 不可用(worker_threads 缺失/创建失败)→ 回退主线程 setInterval + if (typeof setInterval !== 'function') return null; + const timer = setInterval(() => { + try { + fsPort.ftruncateSync(fd, 0); + fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); + } catch (_) { /* 刷新失败:陈旧接管兜底 */ } + }, refreshMs); + if (typeof timer.unref === 'function') timer.unref(); + return { stop() { clearInterval(timer); } }; + } +} + /** * 获取文件锁。 * @param {object} fsPort fs 端口 @@ -210,19 +264,15 @@ function acquireLock(fsPort, lockPath, opts = {}) { try { if (fsPort.existsSync(lockPath)) fsPort.unlinkSync(lockPath); } catch (_) { /* 忽略 */ } return { ok: false, error: makeError('ERR_LOCK_ACQUIRE', `写入锁 token 失败 ${lockPath}:${writeErr.message}`) }; } - // 持锁期刷新:经已打开 fd 重写 token(防止长任务被误判陈旧) - let refresh = null; - if (refreshMs > 0 && typeof setInterval === 'function') { - refresh = setInterval(() => { - try { - fsPort.ftruncateSync(fd, 0); - fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); - } catch (_) { /* 刷新失败:下次仍会尝试;陈旧接管兜底 */ } - }, refreshMs); - if (typeof refresh.unref === 'function') refresh.unref(); - } + // 持锁期刷新:Worker 线程心跳(独立事件循环)——主线程阻塞 spawnSync 时 + // setInterval 无法触发,token 会陈旧被第二写者接管(P1);Worker 不受影响。 + const refresh = startHeartbeat(fsPort, pid, refreshMs, fd); const release = () => releaseLock(fsPort, lockPath, { owner, pid, fd, refresh }); - return { ok: true, fd, owner, token, release }; + // 审计修复:返回 refresh 句柄——此前调用方(pipeline/index 等)直接 releaseLock + // {owner,pid,fd} 而不传 refresh,导致持锁期 setInterval 定时器在释放后泄漏、 + // 每 10s 对已关闭 fd 写 token(EBADF 被吞)。返回后调用方须在 releaseLock 时 + // 一并传入 refresh 以清理定时器。 + return { ok: true, fd, owner, token, release, refresh }; } catch (e) { if (fd !== null) { try { fsPort.closeSync(fd); } catch (_) { /* 忽略 */ } @@ -297,7 +347,15 @@ function releaseLock(fsPort, lockPath, opts = {}) { const owner = opts.owner || `pid-${pid}`; try { if (opts.refresh) { - try { clearInterval(opts.refresh); } catch (_) { /* 忽略 */ } + // P1b 修复:refresh 统一为 heartbeat/interval 句柄(含 stop())。 + // stop() 先停 Worker 并等其确认(heartbeat)或 clearInterval(interval), + // 确保返回后不再有 token 写,调用方随后关 fd / unlink 才安全。 + // 兼容旧形态(裸 Worker/interval)以防调用方仍传旧值。 + try { + if (typeof opts.refresh.stop === 'function') opts.refresh.stop(); + else if (typeof opts.refresh.terminate === 'function') opts.refresh.terminate(); + else clearInterval(opts.refresh); + } catch (_) { /* 忽略 */ } } const token = readToken(fsPort, lockPath); if (token && token.pid !== pid) { diff --git a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/ids.js b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/ids.js index 2aed13d..423f6e1 100644 --- a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/ids.js +++ b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/ids.js @@ -10,6 +10,7 @@ const { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, MAX_ID_LENGTH, MAX_SOURCE_PATH_LENGTH @@ -214,6 +215,12 @@ function validateSourceRepo(repo) { if (CONTROL_CHAR_RE.test(repo)) { return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', 'source.repo 不得包含控制字符') }; } + // 审计修复:repo 必须是 owner/repo 格式(两段、字母数字开头、拒绝 .. 段/空白/元字符)。 + // 此前仅查长度+控制字符,`../../etc/passwd`、含空格或 `?query` 的串会进入 + // codeload/git clone URL 拼装,产生畸形 URL 或路径穿越风险。 + if (!REPO_RE.test(repo)) { + return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', `source.repo 必须是 owner/repo 格式:${JSON.stringify(repo)}`) }; + } return { ok: true }; } diff --git a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/index.mjs b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/index.mjs index b2f0128..6a3a2d3 100644 --- a/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/index.mjs +++ b/dsh-hotplug-hub/dsh-memory-hub/vendor-shared/index.mjs @@ -25,10 +25,10 @@ export const { // contracts/constants export const { - PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, + PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, HOTPACK_VERSION, MAX_ID_LENGTH, MAX_PATCH_ID_LENGTH, MAX_SOURCE_PATH_LENGTH, RUNLOG_MAX_BYTES, LOCK_WAIT_MS, LOCK_STALE_MS, LOCK_POLL_MS, LOCK_REFRESH_MS, - LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, CRASH_LOOP_WINDOW_MS, + LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, PATCH_FILE, PROFILE_MANIFEST, SNAPSHOT_INLINE_MAX_BYTES, PROFILES_DIR, STORE_DIR, MEMORY_DIR, HOTPLUG_DIR, PATCH_LOCK_FILE, resolveDshRoot, dshRootPaths, defaultRoots, diff --git a/dsh-hotplug-hub/vendor-shared/CONTRACT.md b/dsh-hotplug-hub/vendor-shared/CONTRACT.md index 71200f6..8c412dc 100644 --- a/dsh-hotplug-hub/vendor-shared/CONTRACT.md +++ b/dsh-hotplug-hub/vendor-shared/CONTRACT.md @@ -17,6 +17,7 @@ | `PACK_ID_RE` | `^[a-z0-9][a-z0-9._-]{0,63}$`(大小写不敏感) | 包 id / CLI id:字母数字开头,允许 `. _ -`,1..64 字符 | | `PLUGIN_NAME_RE` | `^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$` | npm 包名(可 scoped) | | `EXACT_VERSION_RE` | `^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$` | 精确版本号(**须再经 semver 双检**:`semver.valid(v) !== null`,拒绝 `1.02.3` 等) | +| `REPO_RE` | `^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$` | GitHub 仓库 `owner/repo`(两段、字母数字开头;拒绝前导 `. -` 与 `..` 段,防 URL/git clone 路径穿越) | | `RESERVED_WIN_NAMES` | `CON PRN AUX NUL COM1..COM9 LPT1..LPT9` | Windows 保留设备名(任何单段名均拒绝,含首段匹配) | | 长度预算 | id ≤ 64;patch id ≤ 64;source.path ≤ 4096;source.repo ≤ 512;source.ref ≤ 256 | | @@ -25,6 +26,7 @@ - 尾随 `.` 或空格拒绝; - 插件名每个 `/` 段均过 Windows 安全名检查; - `source.path` 必须绝对、拒绝 UNC、拒绝 `.`/`..` 段; +- `source.repo` 必须匹配 `REPO_RE`(`owner/repo` 两段、字母数字开头;拒绝空白/元字符/`..` 段); - `source.ref` 拒绝 `..`、纯点、控制字符、超长(阶段 2 起允许合法 `/`)。 ## 2. 错误码与结果契约 diff --git a/dsh-hotplug-hub/vendor-shared/contracts/constants.js b/dsh-hotplug-hub/vendor-shared/contracts/constants.js index 619d076..da5c89d 100644 --- a/dsh-hotplug-hub/vendor-shared/contracts/constants.js +++ b/dsh-hotplug-hub/vendor-shared/contracts/constants.js @@ -7,6 +7,9 @@ const os = require('os'); const PACK_ID_RE = /^[a-z0-9][a-z0-9._-]{0,63}$/i; const PLUGIN_NAME_RE = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/; const EXACT_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/; +// GitHub 仓库 owner/repo 格式:两段、各段字母数字开头(拒绝前导 . - 与 .. 段, +// 防止 repo 进入 URL/git clone 时产生路径穿越或畸形 URL)。 +const REPO_RE = /^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$/; // Windows 保留设备名(N43:CON/NUL/COM1… 全部拒绝) const RESERVED_WIN_NAMES = new Set([ @@ -45,9 +48,10 @@ const LOCK_REFRESH_MS = 10000; const LAUNCH_ALIVE_CHECK_MS = 500; const LAUNCH_WAIT_TIMEOUT_MS = 120000; -// 崩溃循环判定(3 次 / 30s 窗口) +// 崩溃循环判定:连续 CRASH_LOOP_THRESHOLD 次非零退出(retries 连续失败计数, +// 成功即清零;与 classifyStateSignals / healplan 触发文案一致)。历史曾声明 +// "30s 窗口"语义(CRASH_LOOP_WINDOW_MS),但从未被实现或消费——已删除该死常量。 const CRASH_LOOP_THRESHOLD = 3; -const CRASH_LOOP_WINDOW_MS = 30000; // 自愈默认重试预算 const DEFAULT_RETRY_BUDGET = 3; @@ -133,6 +137,7 @@ module.exports = { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, @@ -148,7 +153,6 @@ module.exports = { LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, - CRASH_LOOP_WINDOW_MS, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, diff --git a/dsh-hotplug-hub/vendor-shared/fs/lock-heartbeat.js b/dsh-hotplug-hub/vendor-shared/fs/lock-heartbeat.js new file mode 100644 index 0000000..b290b99 --- /dev/null +++ b/dsh-hotplug-hub/vendor-shared/fs/lock-heartbeat.js @@ -0,0 +1,43 @@ +'use strict'; +// fs/lock-heartbeat.js — 锁 token 心跳(Worker 线程,独立事件循环) +// +// 背景(P1 修复):主线程持锁期间若执行阻塞式 spawnSync(npm/git 安装 >30s), +// 事件循环冻结,setInterval 无法触发 → token 时间戳不再刷新 → 第二写者按 +// "存活 pid + token 超龄"判定陈旧并接管锁,破坏并发写互斥。 +// 本 Worker 运行在独立线程,其事件循环与主线程互不阻塞,故即使主线程卡在 +// spawnSync,token 仍按 refreshMs 周期刷新,锁的陈旧判定契约(CONTRACT.md §5) +// 得以维持。 +// +// 审计修复(P1b,跨线程覆盖竞态):此前每 tick 用 fs.openSync(lockPath, 'r+') +// 按【路径】重开锁文件写 token——release 后主线程 unlink 旧锁、另一进程在同路径 +// 重建新锁,若本 Worker 尚未被 terminate(terminate 异步、存在窗口),下一次 tick +// 会打开【新持有者的锁文件】并用旧 pid 覆盖其 token,击穿跨进程互斥(已实证复现)。 +// +// 根因修复:Worker 不按路径重开,改经【主线程传入的持有 fd】写——该 fd 由 +// acquireLock 用 'wx' 独占创建、绑定获取锁时创建的固定 inode;release 后主线程 +// unlink + 重建同名文件,本 fd 仍指向旧的(已 unlink)inode,写入不影响新持有者。 +// +// 同步停止握手:主线程 releaseLock 先 Atomics.store(ctrl[0]=1) 请求停止并 +// Atomics.notify 唤醒本 Worker,再 Atomics.wait(ctrl[1]==1) 等待确认;本 Worker +// 仅在 while 条件(ctrl[0]==0)为真时写,收到停止请求后【绝不再写】,随后置 +// ctrl[1]=1 确认并退出。主线程在收到确认前不关闭 fd → 不存在"写已关闭/被复用 fd" +// 的窗口(fd 复用竞态一并消除)。 +const { workerData } = require('worker_threads'); +const fs = require('fs'); + +const { fd, pid, refreshMs, ctrl } = workerData; +const c = new Int32Array(ctrl); // c[0]=停止请求(主线程写);c[1]=已停止确认(本 Worker 写) + +while (Atomics.load(c, 0) === 0) { + try { + fs.ftruncateSync(fd, 0); + fs.writeSync(fd, `${pid}\n${Date.now()}\n`, 0, 'utf8'); + } catch (_) { /* 刷新失败:下次重试;陈旧接管兜底 */ } + // 阻塞至 refreshMs 或主线程请求停止(Atomics.notify 立即唤醒) + Atomics.wait(c, 0, 0, refreshMs); +} + +// 确认停止并退出(主线程据此决定关闭 fd 的时机) +Atomics.store(c, 1, 1); +Atomics.notify(c, 1); +process.exit(0); diff --git a/dsh-hotplug-hub/vendor-shared/fs/lock.js b/dsh-hotplug-hub/vendor-shared/fs/lock.js index a30c961..cb508fc 100644 --- a/dsh-hotplug-hub/vendor-shared/fs/lock.js +++ b/dsh-hotplug-hub/vendor-shared/fs/lock.js @@ -24,7 +24,7 @@ // | EEXIST + pid 死 | 立即接管 | // | EEXIST + EACCES/EPERM(他用户) | 等待至超时,不接管 | // | token 缺失/损坏 | 按文件 mtime 判陈旧 | -const { dirname } = require('path'); +const { dirname, join } = require('path'); const { LOCK_WAIT_MS, LOCK_STALE_MS, @@ -160,6 +160,60 @@ function checkV1DirectoryLock(fsPort, lockPath, opts) { return { held: false }; } +/** + * 启动锁 token 心跳。 + * P1 修复:优先用 Worker 线程(独立事件循环)——主线程执行阻塞式 spawnSync 时 + * setInterval 无法触发,token 会陈旧被第二写者接管;Worker 线程不受主线程阻塞影响。 + * Worker 不可用(环境限制)时回退主线程 setInterval(尽力而为,阻塞期间仍可能陈旧)。 + * + * P1b 修复(跨线程覆盖竞态):Worker 经【主线程传入的持有 fd】写 token,绝不按路径 + * 重开——按路径重开会在 release→reacquire 窗口打开新持有者的锁文件并用旧 pid 覆盖其 + * token。fd 绑定获取锁时创建的 inode,release 后重建同名文件也不受影响。 + * 同步停止握手:返回 heartbeat 句柄含 stop(),其置停止请求 + 等 Worker 确认后再让 + * 调用方关 fd(见 releaseLock)。 + * @param {object} fsPort fs 端口(回退路径用) + * @param {number} pid 持有者 pid + * @param {number} refreshMs 刷新周期(0=不刷新,返回 null) + * @param {number} fd 主线程已打开的锁 fd(Worker 经此写;回退路径重写 token 用) + * @returns {{stop: Function}|object|null} heartbeat 句柄或 interval 句柄 + */ +function startHeartbeat(fsPort, pid, refreshMs, fd) { + if (!(refreshMs > 0)) return null; + try { + const { Worker } = require('worker_threads'); + const ctrl = new SharedArrayBuffer(8); // 2×Int32:c[0]=停止请求,c[1]=已停止确认 + const worker = new Worker(join(__dirname, 'lock-heartbeat.js'), { + workerData: { fd, pid, refreshMs, ctrl } + }); + if (typeof worker.unref === 'function') worker.unref(); + const c = new Int32Array(ctrl); + return { + stop() { + // 请求停止并等待 Worker 确认:确认后 Worker 绝不再写,调用方可安全关 fd。 + Atomics.store(c, 0, 1); + Atomics.notify(c, 0); + const deadline = Date.now() + 1000; + while (Atomics.load(c, 1) === 0 && Date.now() < deadline) { + // Worker 收到 notify 后应立即置 c[1]=1;此处短暂自旋兜底(Worker 崩溃/未启动) + Atomics.wait(c, 1, 0, 50); + } + try { worker.terminate(); } catch (_) { /* 忽略 */ } + } + }; + } catch (_) { + // Worker 不可用(worker_threads 缺失/创建失败)→ 回退主线程 setInterval + if (typeof setInterval !== 'function') return null; + const timer = setInterval(() => { + try { + fsPort.ftruncateSync(fd, 0); + fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); + } catch (_) { /* 刷新失败:陈旧接管兜底 */ } + }, refreshMs); + if (typeof timer.unref === 'function') timer.unref(); + return { stop() { clearInterval(timer); } }; + } +} + /** * 获取文件锁。 * @param {object} fsPort fs 端口 @@ -210,19 +264,15 @@ function acquireLock(fsPort, lockPath, opts = {}) { try { if (fsPort.existsSync(lockPath)) fsPort.unlinkSync(lockPath); } catch (_) { /* 忽略 */ } return { ok: false, error: makeError('ERR_LOCK_ACQUIRE', `写入锁 token 失败 ${lockPath}:${writeErr.message}`) }; } - // 持锁期刷新:经已打开 fd 重写 token(防止长任务被误判陈旧) - let refresh = null; - if (refreshMs > 0 && typeof setInterval === 'function') { - refresh = setInterval(() => { - try { - fsPort.ftruncateSync(fd, 0); - fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); - } catch (_) { /* 刷新失败:下次仍会尝试;陈旧接管兜底 */ } - }, refreshMs); - if (typeof refresh.unref === 'function') refresh.unref(); - } + // 持锁期刷新:Worker 线程心跳(独立事件循环)——主线程阻塞 spawnSync 时 + // setInterval 无法触发,token 会陈旧被第二写者接管(P1);Worker 不受影响。 + const refresh = startHeartbeat(fsPort, pid, refreshMs, fd); const release = () => releaseLock(fsPort, lockPath, { owner, pid, fd, refresh }); - return { ok: true, fd, owner, token, release }; + // 审计修复:返回 refresh 句柄——此前调用方(pipeline/index 等)直接 releaseLock + // {owner,pid,fd} 而不传 refresh,导致持锁期 setInterval 定时器在释放后泄漏、 + // 每 10s 对已关闭 fd 写 token(EBADF 被吞)。返回后调用方须在 releaseLock 时 + // 一并传入 refresh 以清理定时器。 + return { ok: true, fd, owner, token, release, refresh }; } catch (e) { if (fd !== null) { try { fsPort.closeSync(fd); } catch (_) { /* 忽略 */ } @@ -297,7 +347,15 @@ function releaseLock(fsPort, lockPath, opts = {}) { const owner = opts.owner || `pid-${pid}`; try { if (opts.refresh) { - try { clearInterval(opts.refresh); } catch (_) { /* 忽略 */ } + // P1b 修复:refresh 统一为 heartbeat/interval 句柄(含 stop())。 + // stop() 先停 Worker 并等其确认(heartbeat)或 clearInterval(interval), + // 确保返回后不再有 token 写,调用方随后关 fd / unlink 才安全。 + // 兼容旧形态(裸 Worker/interval)以防调用方仍传旧值。 + try { + if (typeof opts.refresh.stop === 'function') opts.refresh.stop(); + else if (typeof opts.refresh.terminate === 'function') opts.refresh.terminate(); + else clearInterval(opts.refresh); + } catch (_) { /* 忽略 */ } } const token = readToken(fsPort, lockPath); if (token && token.pid !== pid) { diff --git a/dsh-hotplug-hub/vendor-shared/ids.js b/dsh-hotplug-hub/vendor-shared/ids.js index 2aed13d..423f6e1 100644 --- a/dsh-hotplug-hub/vendor-shared/ids.js +++ b/dsh-hotplug-hub/vendor-shared/ids.js @@ -10,6 +10,7 @@ const { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, MAX_ID_LENGTH, MAX_SOURCE_PATH_LENGTH @@ -214,6 +215,12 @@ function validateSourceRepo(repo) { if (CONTROL_CHAR_RE.test(repo)) { return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', 'source.repo 不得包含控制字符') }; } + // 审计修复:repo 必须是 owner/repo 格式(两段、字母数字开头、拒绝 .. 段/空白/元字符)。 + // 此前仅查长度+控制字符,`../../etc/passwd`、含空格或 `?query` 的串会进入 + // codeload/git clone URL 拼装,产生畸形 URL 或路径穿越风险。 + if (!REPO_RE.test(repo)) { + return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', `source.repo 必须是 owner/repo 格式:${JSON.stringify(repo)}`) }; + } return { ok: true }; } diff --git a/dsh-hotplug-hub/vendor-shared/index.mjs b/dsh-hotplug-hub/vendor-shared/index.mjs index b2f0128..6a3a2d3 100644 --- a/dsh-hotplug-hub/vendor-shared/index.mjs +++ b/dsh-hotplug-hub/vendor-shared/index.mjs @@ -25,10 +25,10 @@ export const { // contracts/constants export const { - PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, + PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, HOTPACK_VERSION, MAX_ID_LENGTH, MAX_PATCH_ID_LENGTH, MAX_SOURCE_PATH_LENGTH, RUNLOG_MAX_BYTES, LOCK_WAIT_MS, LOCK_STALE_MS, LOCK_POLL_MS, LOCK_REFRESH_MS, - LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, CRASH_LOOP_WINDOW_MS, + LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, PATCH_FILE, PROFILE_MANIFEST, SNAPSHOT_INLINE_MAX_BYTES, PROFILES_DIR, STORE_DIR, MEMORY_DIR, HOTPLUG_DIR, PATCH_LOCK_FILE, resolveDshRoot, dshRootPaths, defaultRoots, diff --git a/packages/shared-core/CONTRACT.md b/packages/shared-core/CONTRACT.md index 71200f6..8c412dc 100644 --- a/packages/shared-core/CONTRACT.md +++ b/packages/shared-core/CONTRACT.md @@ -17,6 +17,7 @@ | `PACK_ID_RE` | `^[a-z0-9][a-z0-9._-]{0,63}$`(大小写不敏感) | 包 id / CLI id:字母数字开头,允许 `. _ -`,1..64 字符 | | `PLUGIN_NAME_RE` | `^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$` | npm 包名(可 scoped) | | `EXACT_VERSION_RE` | `^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$` | 精确版本号(**须再经 semver 双检**:`semver.valid(v) !== null`,拒绝 `1.02.3` 等) | +| `REPO_RE` | `^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$` | GitHub 仓库 `owner/repo`(两段、字母数字开头;拒绝前导 `. -` 与 `..` 段,防 URL/git clone 路径穿越) | | `RESERVED_WIN_NAMES` | `CON PRN AUX NUL COM1..COM9 LPT1..LPT9` | Windows 保留设备名(任何单段名均拒绝,含首段匹配) | | 长度预算 | id ≤ 64;patch id ≤ 64;source.path ≤ 4096;source.repo ≤ 512;source.ref ≤ 256 | | @@ -25,6 +26,7 @@ - 尾随 `.` 或空格拒绝; - 插件名每个 `/` 段均过 Windows 安全名检查; - `source.path` 必须绝对、拒绝 UNC、拒绝 `.`/`..` 段; +- `source.repo` 必须匹配 `REPO_RE`(`owner/repo` 两段、字母数字开头;拒绝空白/元字符/`..` 段); - `source.ref` 拒绝 `..`、纯点、控制字符、超长(阶段 2 起允许合法 `/`)。 ## 2. 错误码与结果契约 diff --git a/packages/shared-core/contracts/constants.js b/packages/shared-core/contracts/constants.js index 619d076..da5c89d 100644 --- a/packages/shared-core/contracts/constants.js +++ b/packages/shared-core/contracts/constants.js @@ -7,6 +7,9 @@ const os = require('os'); const PACK_ID_RE = /^[a-z0-9][a-z0-9._-]{0,63}$/i; const PLUGIN_NAME_RE = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/; const EXACT_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/; +// GitHub 仓库 owner/repo 格式:两段、各段字母数字开头(拒绝前导 . - 与 .. 段, +// 防止 repo 进入 URL/git clone 时产生路径穿越或畸形 URL)。 +const REPO_RE = /^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$/; // Windows 保留设备名(N43:CON/NUL/COM1… 全部拒绝) const RESERVED_WIN_NAMES = new Set([ @@ -45,9 +48,10 @@ const LOCK_REFRESH_MS = 10000; const LAUNCH_ALIVE_CHECK_MS = 500; const LAUNCH_WAIT_TIMEOUT_MS = 120000; -// 崩溃循环判定(3 次 / 30s 窗口) +// 崩溃循环判定:连续 CRASH_LOOP_THRESHOLD 次非零退出(retries 连续失败计数, +// 成功即清零;与 classifyStateSignals / healplan 触发文案一致)。历史曾声明 +// "30s 窗口"语义(CRASH_LOOP_WINDOW_MS),但从未被实现或消费——已删除该死常量。 const CRASH_LOOP_THRESHOLD = 3; -const CRASH_LOOP_WINDOW_MS = 30000; // 自愈默认重试预算 const DEFAULT_RETRY_BUDGET = 3; @@ -133,6 +137,7 @@ module.exports = { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, @@ -148,7 +153,6 @@ module.exports = { LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, - CRASH_LOOP_WINDOW_MS, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, diff --git a/packages/shared-core/fs/lock-heartbeat.js b/packages/shared-core/fs/lock-heartbeat.js new file mode 100644 index 0000000..b290b99 --- /dev/null +++ b/packages/shared-core/fs/lock-heartbeat.js @@ -0,0 +1,43 @@ +'use strict'; +// fs/lock-heartbeat.js — 锁 token 心跳(Worker 线程,独立事件循环) +// +// 背景(P1 修复):主线程持锁期间若执行阻塞式 spawnSync(npm/git 安装 >30s), +// 事件循环冻结,setInterval 无法触发 → token 时间戳不再刷新 → 第二写者按 +// "存活 pid + token 超龄"判定陈旧并接管锁,破坏并发写互斥。 +// 本 Worker 运行在独立线程,其事件循环与主线程互不阻塞,故即使主线程卡在 +// spawnSync,token 仍按 refreshMs 周期刷新,锁的陈旧判定契约(CONTRACT.md §5) +// 得以维持。 +// +// 审计修复(P1b,跨线程覆盖竞态):此前每 tick 用 fs.openSync(lockPath, 'r+') +// 按【路径】重开锁文件写 token——release 后主线程 unlink 旧锁、另一进程在同路径 +// 重建新锁,若本 Worker 尚未被 terminate(terminate 异步、存在窗口),下一次 tick +// 会打开【新持有者的锁文件】并用旧 pid 覆盖其 token,击穿跨进程互斥(已实证复现)。 +// +// 根因修复:Worker 不按路径重开,改经【主线程传入的持有 fd】写——该 fd 由 +// acquireLock 用 'wx' 独占创建、绑定获取锁时创建的固定 inode;release 后主线程 +// unlink + 重建同名文件,本 fd 仍指向旧的(已 unlink)inode,写入不影响新持有者。 +// +// 同步停止握手:主线程 releaseLock 先 Atomics.store(ctrl[0]=1) 请求停止并 +// Atomics.notify 唤醒本 Worker,再 Atomics.wait(ctrl[1]==1) 等待确认;本 Worker +// 仅在 while 条件(ctrl[0]==0)为真时写,收到停止请求后【绝不再写】,随后置 +// ctrl[1]=1 确认并退出。主线程在收到确认前不关闭 fd → 不存在"写已关闭/被复用 fd" +// 的窗口(fd 复用竞态一并消除)。 +const { workerData } = require('worker_threads'); +const fs = require('fs'); + +const { fd, pid, refreshMs, ctrl } = workerData; +const c = new Int32Array(ctrl); // c[0]=停止请求(主线程写);c[1]=已停止确认(本 Worker 写) + +while (Atomics.load(c, 0) === 0) { + try { + fs.ftruncateSync(fd, 0); + fs.writeSync(fd, `${pid}\n${Date.now()}\n`, 0, 'utf8'); + } catch (_) { /* 刷新失败:下次重试;陈旧接管兜底 */ } + // 阻塞至 refreshMs 或主线程请求停止(Atomics.notify 立即唤醒) + Atomics.wait(c, 0, 0, refreshMs); +} + +// 确认停止并退出(主线程据此决定关闭 fd 的时机) +Atomics.store(c, 1, 1); +Atomics.notify(c, 1); +process.exit(0); diff --git a/packages/shared-core/fs/lock.js b/packages/shared-core/fs/lock.js index a30c961..cb508fc 100644 --- a/packages/shared-core/fs/lock.js +++ b/packages/shared-core/fs/lock.js @@ -24,7 +24,7 @@ // | EEXIST + pid 死 | 立即接管 | // | EEXIST + EACCES/EPERM(他用户) | 等待至超时,不接管 | // | token 缺失/损坏 | 按文件 mtime 判陈旧 | -const { dirname } = require('path'); +const { dirname, join } = require('path'); const { LOCK_WAIT_MS, LOCK_STALE_MS, @@ -160,6 +160,60 @@ function checkV1DirectoryLock(fsPort, lockPath, opts) { return { held: false }; } +/** + * 启动锁 token 心跳。 + * P1 修复:优先用 Worker 线程(独立事件循环)——主线程执行阻塞式 spawnSync 时 + * setInterval 无法触发,token 会陈旧被第二写者接管;Worker 线程不受主线程阻塞影响。 + * Worker 不可用(环境限制)时回退主线程 setInterval(尽力而为,阻塞期间仍可能陈旧)。 + * + * P1b 修复(跨线程覆盖竞态):Worker 经【主线程传入的持有 fd】写 token,绝不按路径 + * 重开——按路径重开会在 release→reacquire 窗口打开新持有者的锁文件并用旧 pid 覆盖其 + * token。fd 绑定获取锁时创建的 inode,release 后重建同名文件也不受影响。 + * 同步停止握手:返回 heartbeat 句柄含 stop(),其置停止请求 + 等 Worker 确认后再让 + * 调用方关 fd(见 releaseLock)。 + * @param {object} fsPort fs 端口(回退路径用) + * @param {number} pid 持有者 pid + * @param {number} refreshMs 刷新周期(0=不刷新,返回 null) + * @param {number} fd 主线程已打开的锁 fd(Worker 经此写;回退路径重写 token 用) + * @returns {{stop: Function}|object|null} heartbeat 句柄或 interval 句柄 + */ +function startHeartbeat(fsPort, pid, refreshMs, fd) { + if (!(refreshMs > 0)) return null; + try { + const { Worker } = require('worker_threads'); + const ctrl = new SharedArrayBuffer(8); // 2×Int32:c[0]=停止请求,c[1]=已停止确认 + const worker = new Worker(join(__dirname, 'lock-heartbeat.js'), { + workerData: { fd, pid, refreshMs, ctrl } + }); + if (typeof worker.unref === 'function') worker.unref(); + const c = new Int32Array(ctrl); + return { + stop() { + // 请求停止并等待 Worker 确认:确认后 Worker 绝不再写,调用方可安全关 fd。 + Atomics.store(c, 0, 1); + Atomics.notify(c, 0); + const deadline = Date.now() + 1000; + while (Atomics.load(c, 1) === 0 && Date.now() < deadline) { + // Worker 收到 notify 后应立即置 c[1]=1;此处短暂自旋兜底(Worker 崩溃/未启动) + Atomics.wait(c, 1, 0, 50); + } + try { worker.terminate(); } catch (_) { /* 忽略 */ } + } + }; + } catch (_) { + // Worker 不可用(worker_threads 缺失/创建失败)→ 回退主线程 setInterval + if (typeof setInterval !== 'function') return null; + const timer = setInterval(() => { + try { + fsPort.ftruncateSync(fd, 0); + fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); + } catch (_) { /* 刷新失败:陈旧接管兜底 */ } + }, refreshMs); + if (typeof timer.unref === 'function') timer.unref(); + return { stop() { clearInterval(timer); } }; + } +} + /** * 获取文件锁。 * @param {object} fsPort fs 端口 @@ -210,19 +264,15 @@ function acquireLock(fsPort, lockPath, opts = {}) { try { if (fsPort.existsSync(lockPath)) fsPort.unlinkSync(lockPath); } catch (_) { /* 忽略 */ } return { ok: false, error: makeError('ERR_LOCK_ACQUIRE', `写入锁 token 失败 ${lockPath}:${writeErr.message}`) }; } - // 持锁期刷新:经已打开 fd 重写 token(防止长任务被误判陈旧) - let refresh = null; - if (refreshMs > 0 && typeof setInterval === 'function') { - refresh = setInterval(() => { - try { - fsPort.ftruncateSync(fd, 0); - fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); - } catch (_) { /* 刷新失败:下次仍会尝试;陈旧接管兜底 */ } - }, refreshMs); - if (typeof refresh.unref === 'function') refresh.unref(); - } + // 持锁期刷新:Worker 线程心跳(独立事件循环)——主线程阻塞 spawnSync 时 + // setInterval 无法触发,token 会陈旧被第二写者接管(P1);Worker 不受影响。 + const refresh = startHeartbeat(fsPort, pid, refreshMs, fd); const release = () => releaseLock(fsPort, lockPath, { owner, pid, fd, refresh }); - return { ok: true, fd, owner, token, release }; + // 审计修复:返回 refresh 句柄——此前调用方(pipeline/index 等)直接 releaseLock + // {owner,pid,fd} 而不传 refresh,导致持锁期 setInterval 定时器在释放后泄漏、 + // 每 10s 对已关闭 fd 写 token(EBADF 被吞)。返回后调用方须在 releaseLock 时 + // 一并传入 refresh 以清理定时器。 + return { ok: true, fd, owner, token, release, refresh }; } catch (e) { if (fd !== null) { try { fsPort.closeSync(fd); } catch (_) { /* 忽略 */ } @@ -297,7 +347,15 @@ function releaseLock(fsPort, lockPath, opts = {}) { const owner = opts.owner || `pid-${pid}`; try { if (opts.refresh) { - try { clearInterval(opts.refresh); } catch (_) { /* 忽略 */ } + // P1b 修复:refresh 统一为 heartbeat/interval 句柄(含 stop())。 + // stop() 先停 Worker 并等其确认(heartbeat)或 clearInterval(interval), + // 确保返回后不再有 token 写,调用方随后关 fd / unlink 才安全。 + // 兼容旧形态(裸 Worker/interval)以防调用方仍传旧值。 + try { + if (typeof opts.refresh.stop === 'function') opts.refresh.stop(); + else if (typeof opts.refresh.terminate === 'function') opts.refresh.terminate(); + else clearInterval(opts.refresh); + } catch (_) { /* 忽略 */ } } const token = readToken(fsPort, lockPath); if (token && token.pid !== pid) { diff --git a/packages/shared-core/ids.js b/packages/shared-core/ids.js index 2aed13d..423f6e1 100644 --- a/packages/shared-core/ids.js +++ b/packages/shared-core/ids.js @@ -10,6 +10,7 @@ const { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, MAX_ID_LENGTH, MAX_SOURCE_PATH_LENGTH @@ -214,6 +215,12 @@ function validateSourceRepo(repo) { if (CONTROL_CHAR_RE.test(repo)) { return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', 'source.repo 不得包含控制字符') }; } + // 审计修复:repo 必须是 owner/repo 格式(两段、字母数字开头、拒绝 .. 段/空白/元字符)。 + // 此前仅查长度+控制字符,`../../etc/passwd`、含空格或 `?query` 的串会进入 + // codeload/git clone URL 拼装,产生畸形 URL 或路径穿越风险。 + if (!REPO_RE.test(repo)) { + return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', `source.repo 必须是 owner/repo 格式:${JSON.stringify(repo)}`) }; + } return { ok: true }; } diff --git a/packages/shared-core/index.mjs b/packages/shared-core/index.mjs index b2f0128..6a3a2d3 100644 --- a/packages/shared-core/index.mjs +++ b/packages/shared-core/index.mjs @@ -25,10 +25,10 @@ export const { // contracts/constants export const { - PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, + PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, HOTPACK_VERSION, MAX_ID_LENGTH, MAX_PATCH_ID_LENGTH, MAX_SOURCE_PATH_LENGTH, RUNLOG_MAX_BYTES, LOCK_WAIT_MS, LOCK_STALE_MS, LOCK_POLL_MS, LOCK_REFRESH_MS, - LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, CRASH_LOOP_WINDOW_MS, + LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, PATCH_FILE, PROFILE_MANIFEST, SNAPSHOT_INLINE_MAX_BYTES, PROFILES_DIR, STORE_DIR, MEMORY_DIR, HOTPLUG_DIR, PATCH_LOCK_FILE, resolveDshRoot, dshRootPaths, defaultRoots, diff --git a/packages/shared-core/test/ids.test.js b/packages/shared-core/test/ids.test.js index 69d40bd..a7f25bf 100644 --- a/packages/shared-core/test/ids.test.js +++ b/packages/shared-core/test/ids.test.js @@ -127,10 +127,23 @@ describe('validateSourcePath', () => { describe('validateSourceRepo / validateSourceRef', () => { it('repo 基本校验', () => { expect(validateSourceRepo('owner/repo').ok).toBe(true); + expect(validateSourceRepo('owner/repo.sub-1').ok).toBe(true); expect(validateSourceRepo('').ok).toBe(false); expect(validateSourceRepo('x'.repeat(513)).ok).toBe(false); expect(validateSourceRepo('a\u0000b').ok).toBe(false); }); + it('repo 必须是 owner/repo 格式(审计修复:拒绝穿越/空白/元字符/前导点)', () => { + expect(validateSourceRepo('../../etc/passwd').ok).toBe(false); + expect(validateSourceRepo('a/../b').ok).toBe(false); + expect(validateSourceRepo('a/..').ok).toBe(false); + expect(validateSourceRepo('.owner/repo').ok).toBe(false); + expect(validateSourceRepo('owner/.repo').ok).toBe(false); + expect(validateSourceRepo('a b/c').ok).toBe(false); + expect(validateSourceRepo('owner/repo?query').ok).toBe(false); + expect(validateSourceRepo('owner').ok).toBe(false); // 缺 / + expect(validateSourceRepo('a/b/c').ok).toBe(false); // 多段 + expect(validateSourceRepo('owner/repo&x').ok).toBe(false); + }); it('ref 拒绝 .. / 纯点 / 空段 / 控制字符 / 超长;H-10 允许合法 /', () => { expect(validateSourceRef('main').ok).toBe(true); expect(validateSourceRef('v1.0.0').ok).toBe(true); diff --git a/packages/shared-core/test/lock.test.js b/packages/shared-core/test/lock.test.js index 0a2443c..fc65124 100644 --- a/packages/shared-core/test/lock.test.js +++ b/packages/shared-core/test/lock.test.js @@ -65,6 +65,67 @@ describe('acquire / release(单进程)', () => { expect(fs.existsSync(lock)).toBe(false); }); + it('acquireLock 返回 refresh 句柄,releaseLock 传入后清理定时器(审计修复:防定时器泄漏)', () => { + const dir = tempDir(); + const lock = path.join(dir, '.lock'); + // refreshMs>0 时 acquireLock 应返回 refresh 句柄(此前不返回,调用方直接 releaseLock + // 无法清理 setInterval → 释放后仍每 10s 对已关闭 fd 写 token 泄漏) + const a = acquireLock(nodeFs, lock, { waitMs: 500, refreshMs: 20 }); + expect(a.ok).toBe(true); + expect(a.refresh).toBeTruthy(); + expect(typeof a.release).toBe('function'); + // 经 releaseLock 传入 refresh 释放 → 定时器被清理、锁文件删除 + const r = releaseLock(nodeFs, lock, { owner: a.owner, pid: process.pid, fd: a.fd, refresh: a.refresh }); + expect(r.ok).toBe(true); + expect(fs.existsSync(lock)).toBe(false); + // 释放后再次获取成功(无残留定时器干扰) + const b = acquireLock(nodeFs, lock, { waitMs: 200, refreshMs: 0 }); + expect(b.ok).toBe(true); + releaseLock(nodeFs, lock, { owner: b.owner, pid: process.pid, fd: b.fd, refresh: b.refresh }); + }); + + it('持锁方阻塞(真实 spawnSync)期间 token 仍被 Worker 心跳刷新(P1:不被陈旧接管)', () => { + const dir = tempDir(); + const lock = path.join(dir, '.lock'); + // 短 stale 窗口 + 短 refresh 周期,快速复现阻塞期陈旧 + const staleMs = 200; + const refreshMs = 30; + const a = acquireLock(nodeFs, lock, { waitMs: 500, staleMs, refreshMs, pollMs: 20 }); + expect(a.ok).toBe(true); + // 主线程阻塞 > staleMs(真实 spawnSync 冻结事件循环,setInterval 无法触发) + spawnSync(process.execPath, ['-e', 'const s=Date.now(); while(Date.now()-s<400){}'], { stdio: 'ignore' }); + const token = readToken(nodeFs, lock); + expect(token).not.toBeNull(); + // P1 断言:Worker 线程在阻塞期间持续刷新 token → 仍新鲜(旧 setInterval 实现会陈旧) + expect(isStale(token, Date.now(), staleMs)).toBe(false); + releaseLock(nodeFs, lock, { owner: a.owner, pid: process.pid, fd: a.fd, refresh: a.refresh }); + // 释放后 Worker 已终止、锁文件删除 + expect(fs.existsSync(lock)).toBe(false); + }); + + it('P1b:Worker 经持有 fd 写,释放后重建的锁文件不被旧 Worker 覆盖(跨线程覆盖竞态回归)', () => { + const dir = tempDir(); + const lock = path.join(dir, '.lock'); + // A 持锁,Worker 心跳每 20ms 刷新,注入 pid=11111 + const a = acquireLock(nodeFs, lock, { waitMs: 500, refreshMs: 20, pid: 11111 }); + expect(a.ok).toBe(true); + // 模拟竞态窗口:B 在 A 释放后立即接管(关 A 的 fd、删旧锁、写 B token)。 + // 故意【不】先 stop A 的 Worker——制造"旧 Worker 仍在运行"的最坏窗口。 + // 旧实现(每 tick fs.openSync(lockPath,'r+') 按路径重开)会打开 B 的新锁文件 + // 并用 11111 覆盖其 token;新实现(经持有 fd 写旧 inode)不影响 B 的锁文件。 + nodeFs.closeSync(a.fd); + nodeFs.unlinkSync(lock); + nodeFs.writeFileSync(lock, formatToken(22222, Date.now())); + // 阻塞 > 数个 refreshMs 周期(真实 spawnSync 冻结主线程,让 Worker 有机会跑多个 tick) + spawnSync(process.execPath, ['-e', 'const s=Date.now(); while(Date.now()-s<200){}'], { stdio: 'ignore' }); + const token = readToken(nodeFs, lock); + expect(token).not.toBeNull(); + expect(token.pid).toBe(22222); // B 的 token 未被旧 Worker 覆盖(P1b 修复) + // 清理:停止 A 的 Worker(其 fd 已关,写走 EBADF 分支,不影响 stop 语义) + if (a.refresh && typeof a.refresh.stop === 'function') a.refresh.stop(); + if (fs.existsSync(lock)) fs.unlinkSync(lock); + }); + it('持锁期间二次获取失败(互斥)', () => { const dir = tempDir(); const lock = path.join(dir, '.lock'); diff --git a/packages/shared-core/test/net.test.js b/packages/shared-core/test/net.test.js index 0605476..e001a56 100644 --- a/packages/shared-core/test/net.test.js +++ b/packages/shared-core/test/net.test.js @@ -79,16 +79,25 @@ describe('httpsGetText(本地 TLS 服务)', () => { hasOpenssl = true; } catch { hasOpenssl = false; } if (!hasOpenssl) return; - const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'shared-tls-')); - cert = path.join(dir, 'cert.pem'); - key = path.join(dir, 'key.pem'); - // CN=127.0.0.1 + SAN IP(Node 对 IP 校验 SAN;CN 回退已废弃) try { - execFileSync('openssl', ['req', '-x509', '-newkey', 'rsa:2048', '-keyout', key, '-out', cert, - '-days', '1', '-nodes', '-subj', '/CN=127.0.0.1', '-addext', 'subjectAltName=IP:127.0.0.1'], { stdio: 'ignore' }); + const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'shared-tls-')); + cert = path.join(dir, 'cert.pem'); + key = path.join(dir, 'key.pem'); + // 审计修复:`openssl req` 依赖系统 openssl.cnf(Windows 默认指向 + // C:\Program Files\Common Files\ssl\openssl.cnf,Anaconda 等环境该文件缺失会 + // 令证书生成失败且未被兜底 catch 捕获 → 整组崩溃)。现内嵌最小 openssl.cnf 并用 + // -config 显式指定(不依赖系统配置),含 SAN IP(Node 对 IP 校验 SAN;CN 回退已废弃)。 + const cnf = path.join(dir, 'openssl.cnf'); + fs.writeFileSync(cnf, [ + '[req]', 'distinguished_name = dn', 'x509_extensions = v3', 'prompt = no', '', + '[dn]', 'CN = 127.0.0.1', '', + '[v3]', 'subjectAltName = IP:127.0.0.1', '' + ].join('\n')); + execFileSync('openssl', ['req', '-x509', '-config', cnf, '-newkey', 'rsa:2048', + '-keyout', key, '-out', cert, '-days', '1', '-nodes'], { stdio: 'ignore' }); } catch { - execFileSync('openssl', ['req', '-x509', '-newkey', 'rsa:2048', '-keyout', key, '-out', cert, - '-days', '1', '-nodes', '-subj', '/CN=127.0.0.1'], { stdio: 'ignore' }); + // 证书生成失败(openssl 缺失/损坏/无可用配置)→ 整组优雅跳过,不再崩溃套件 + hasOpenssl = false; } }); diff --git a/vendor/dseam-skillmcp/vendor-shared/CONTRACT.md b/vendor/dseam-skillmcp/vendor-shared/CONTRACT.md index 71200f6..8c412dc 100644 --- a/vendor/dseam-skillmcp/vendor-shared/CONTRACT.md +++ b/vendor/dseam-skillmcp/vendor-shared/CONTRACT.md @@ -17,6 +17,7 @@ | `PACK_ID_RE` | `^[a-z0-9][a-z0-9._-]{0,63}$`(大小写不敏感) | 包 id / CLI id:字母数字开头,允许 `. _ -`,1..64 字符 | | `PLUGIN_NAME_RE` | `^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$` | npm 包名(可 scoped) | | `EXACT_VERSION_RE` | `^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$` | 精确版本号(**须再经 semver 双检**:`semver.valid(v) !== null`,拒绝 `1.02.3` 等) | +| `REPO_RE` | `^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$` | GitHub 仓库 `owner/repo`(两段、字母数字开头;拒绝前导 `. -` 与 `..` 段,防 URL/git clone 路径穿越) | | `RESERVED_WIN_NAMES` | `CON PRN AUX NUL COM1..COM9 LPT1..LPT9` | Windows 保留设备名(任何单段名均拒绝,含首段匹配) | | 长度预算 | id ≤ 64;patch id ≤ 64;source.path ≤ 4096;source.repo ≤ 512;source.ref ≤ 256 | | @@ -25,6 +26,7 @@ - 尾随 `.` 或空格拒绝; - 插件名每个 `/` 段均过 Windows 安全名检查; - `source.path` 必须绝对、拒绝 UNC、拒绝 `.`/`..` 段; +- `source.repo` 必须匹配 `REPO_RE`(`owner/repo` 两段、字母数字开头;拒绝空白/元字符/`..` 段); - `source.ref` 拒绝 `..`、纯点、控制字符、超长(阶段 2 起允许合法 `/`)。 ## 2. 错误码与结果契约 diff --git a/vendor/dseam-skillmcp/vendor-shared/contracts/constants.js b/vendor/dseam-skillmcp/vendor-shared/contracts/constants.js index 619d076..da5c89d 100644 --- a/vendor/dseam-skillmcp/vendor-shared/contracts/constants.js +++ b/vendor/dseam-skillmcp/vendor-shared/contracts/constants.js @@ -7,6 +7,9 @@ const os = require('os'); const PACK_ID_RE = /^[a-z0-9][a-z0-9._-]{0,63}$/i; const PLUGIN_NAME_RE = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/; const EXACT_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/; +// GitHub 仓库 owner/repo 格式:两段、各段字母数字开头(拒绝前导 . - 与 .. 段, +// 防止 repo 进入 URL/git clone 时产生路径穿越或畸形 URL)。 +const REPO_RE = /^[0-9A-Za-z][0-9A-Za-z._-]*\/[0-9A-Za-z][0-9A-Za-z._-]*$/; // Windows 保留设备名(N43:CON/NUL/COM1… 全部拒绝) const RESERVED_WIN_NAMES = new Set([ @@ -45,9 +48,10 @@ const LOCK_REFRESH_MS = 10000; const LAUNCH_ALIVE_CHECK_MS = 500; const LAUNCH_WAIT_TIMEOUT_MS = 120000; -// 崩溃循环判定(3 次 / 30s 窗口) +// 崩溃循环判定:连续 CRASH_LOOP_THRESHOLD 次非零退出(retries 连续失败计数, +// 成功即清零;与 classifyStateSignals / healplan 触发文案一致)。历史曾声明 +// "30s 窗口"语义(CRASH_LOOP_WINDOW_MS),但从未被实现或消费——已删除该死常量。 const CRASH_LOOP_THRESHOLD = 3; -const CRASH_LOOP_WINDOW_MS = 30000; // 自愈默认重试预算 const DEFAULT_RETRY_BUDGET = 3; @@ -133,6 +137,7 @@ module.exports = { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, @@ -148,7 +153,6 @@ module.exports = { LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, - CRASH_LOOP_WINDOW_MS, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, diff --git a/vendor/dseam-skillmcp/vendor-shared/fs/lock-heartbeat.js b/vendor/dseam-skillmcp/vendor-shared/fs/lock-heartbeat.js new file mode 100644 index 0000000..b290b99 --- /dev/null +++ b/vendor/dseam-skillmcp/vendor-shared/fs/lock-heartbeat.js @@ -0,0 +1,43 @@ +'use strict'; +// fs/lock-heartbeat.js — 锁 token 心跳(Worker 线程,独立事件循环) +// +// 背景(P1 修复):主线程持锁期间若执行阻塞式 spawnSync(npm/git 安装 >30s), +// 事件循环冻结,setInterval 无法触发 → token 时间戳不再刷新 → 第二写者按 +// "存活 pid + token 超龄"判定陈旧并接管锁,破坏并发写互斥。 +// 本 Worker 运行在独立线程,其事件循环与主线程互不阻塞,故即使主线程卡在 +// spawnSync,token 仍按 refreshMs 周期刷新,锁的陈旧判定契约(CONTRACT.md §5) +// 得以维持。 +// +// 审计修复(P1b,跨线程覆盖竞态):此前每 tick 用 fs.openSync(lockPath, 'r+') +// 按【路径】重开锁文件写 token——release 后主线程 unlink 旧锁、另一进程在同路径 +// 重建新锁,若本 Worker 尚未被 terminate(terminate 异步、存在窗口),下一次 tick +// 会打开【新持有者的锁文件】并用旧 pid 覆盖其 token,击穿跨进程互斥(已实证复现)。 +// +// 根因修复:Worker 不按路径重开,改经【主线程传入的持有 fd】写——该 fd 由 +// acquireLock 用 'wx' 独占创建、绑定获取锁时创建的固定 inode;release 后主线程 +// unlink + 重建同名文件,本 fd 仍指向旧的(已 unlink)inode,写入不影响新持有者。 +// +// 同步停止握手:主线程 releaseLock 先 Atomics.store(ctrl[0]=1) 请求停止并 +// Atomics.notify 唤醒本 Worker,再 Atomics.wait(ctrl[1]==1) 等待确认;本 Worker +// 仅在 while 条件(ctrl[0]==0)为真时写,收到停止请求后【绝不再写】,随后置 +// ctrl[1]=1 确认并退出。主线程在收到确认前不关闭 fd → 不存在"写已关闭/被复用 fd" +// 的窗口(fd 复用竞态一并消除)。 +const { workerData } = require('worker_threads'); +const fs = require('fs'); + +const { fd, pid, refreshMs, ctrl } = workerData; +const c = new Int32Array(ctrl); // c[0]=停止请求(主线程写);c[1]=已停止确认(本 Worker 写) + +while (Atomics.load(c, 0) === 0) { + try { + fs.ftruncateSync(fd, 0); + fs.writeSync(fd, `${pid}\n${Date.now()}\n`, 0, 'utf8'); + } catch (_) { /* 刷新失败:下次重试;陈旧接管兜底 */ } + // 阻塞至 refreshMs 或主线程请求停止(Atomics.notify 立即唤醒) + Atomics.wait(c, 0, 0, refreshMs); +} + +// 确认停止并退出(主线程据此决定关闭 fd 的时机) +Atomics.store(c, 1, 1); +Atomics.notify(c, 1); +process.exit(0); diff --git a/vendor/dseam-skillmcp/vendor-shared/fs/lock.js b/vendor/dseam-skillmcp/vendor-shared/fs/lock.js index a30c961..cb508fc 100644 --- a/vendor/dseam-skillmcp/vendor-shared/fs/lock.js +++ b/vendor/dseam-skillmcp/vendor-shared/fs/lock.js @@ -24,7 +24,7 @@ // | EEXIST + pid 死 | 立即接管 | // | EEXIST + EACCES/EPERM(他用户) | 等待至超时,不接管 | // | token 缺失/损坏 | 按文件 mtime 判陈旧 | -const { dirname } = require('path'); +const { dirname, join } = require('path'); const { LOCK_WAIT_MS, LOCK_STALE_MS, @@ -160,6 +160,60 @@ function checkV1DirectoryLock(fsPort, lockPath, opts) { return { held: false }; } +/** + * 启动锁 token 心跳。 + * P1 修复:优先用 Worker 线程(独立事件循环)——主线程执行阻塞式 spawnSync 时 + * setInterval 无法触发,token 会陈旧被第二写者接管;Worker 线程不受主线程阻塞影响。 + * Worker 不可用(环境限制)时回退主线程 setInterval(尽力而为,阻塞期间仍可能陈旧)。 + * + * P1b 修复(跨线程覆盖竞态):Worker 经【主线程传入的持有 fd】写 token,绝不按路径 + * 重开——按路径重开会在 release→reacquire 窗口打开新持有者的锁文件并用旧 pid 覆盖其 + * token。fd 绑定获取锁时创建的 inode,release 后重建同名文件也不受影响。 + * 同步停止握手:返回 heartbeat 句柄含 stop(),其置停止请求 + 等 Worker 确认后再让 + * 调用方关 fd(见 releaseLock)。 + * @param {object} fsPort fs 端口(回退路径用) + * @param {number} pid 持有者 pid + * @param {number} refreshMs 刷新周期(0=不刷新,返回 null) + * @param {number} fd 主线程已打开的锁 fd(Worker 经此写;回退路径重写 token 用) + * @returns {{stop: Function}|object|null} heartbeat 句柄或 interval 句柄 + */ +function startHeartbeat(fsPort, pid, refreshMs, fd) { + if (!(refreshMs > 0)) return null; + try { + const { Worker } = require('worker_threads'); + const ctrl = new SharedArrayBuffer(8); // 2×Int32:c[0]=停止请求,c[1]=已停止确认 + const worker = new Worker(join(__dirname, 'lock-heartbeat.js'), { + workerData: { fd, pid, refreshMs, ctrl } + }); + if (typeof worker.unref === 'function') worker.unref(); + const c = new Int32Array(ctrl); + return { + stop() { + // 请求停止并等待 Worker 确认:确认后 Worker 绝不再写,调用方可安全关 fd。 + Atomics.store(c, 0, 1); + Atomics.notify(c, 0); + const deadline = Date.now() + 1000; + while (Atomics.load(c, 1) === 0 && Date.now() < deadline) { + // Worker 收到 notify 后应立即置 c[1]=1;此处短暂自旋兜底(Worker 崩溃/未启动) + Atomics.wait(c, 1, 0, 50); + } + try { worker.terminate(); } catch (_) { /* 忽略 */ } + } + }; + } catch (_) { + // Worker 不可用(worker_threads 缺失/创建失败)→ 回退主线程 setInterval + if (typeof setInterval !== 'function') return null; + const timer = setInterval(() => { + try { + fsPort.ftruncateSync(fd, 0); + fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); + } catch (_) { /* 刷新失败:陈旧接管兜底 */ } + }, refreshMs); + if (typeof timer.unref === 'function') timer.unref(); + return { stop() { clearInterval(timer); } }; + } +} + /** * 获取文件锁。 * @param {object} fsPort fs 端口 @@ -210,19 +264,15 @@ function acquireLock(fsPort, lockPath, opts = {}) { try { if (fsPort.existsSync(lockPath)) fsPort.unlinkSync(lockPath); } catch (_) { /* 忽略 */ } return { ok: false, error: makeError('ERR_LOCK_ACQUIRE', `写入锁 token 失败 ${lockPath}:${writeErr.message}`) }; } - // 持锁期刷新:经已打开 fd 重写 token(防止长任务被误判陈旧) - let refresh = null; - if (refreshMs > 0 && typeof setInterval === 'function') { - refresh = setInterval(() => { - try { - fsPort.ftruncateSync(fd, 0); - fsPort.writeSync(fd, formatToken(pid, Date.now()), 0, 'utf8'); - } catch (_) { /* 刷新失败:下次仍会尝试;陈旧接管兜底 */ } - }, refreshMs); - if (typeof refresh.unref === 'function') refresh.unref(); - } + // 持锁期刷新:Worker 线程心跳(独立事件循环)——主线程阻塞 spawnSync 时 + // setInterval 无法触发,token 会陈旧被第二写者接管(P1);Worker 不受影响。 + const refresh = startHeartbeat(fsPort, pid, refreshMs, fd); const release = () => releaseLock(fsPort, lockPath, { owner, pid, fd, refresh }); - return { ok: true, fd, owner, token, release }; + // 审计修复:返回 refresh 句柄——此前调用方(pipeline/index 等)直接 releaseLock + // {owner,pid,fd} 而不传 refresh,导致持锁期 setInterval 定时器在释放后泄漏、 + // 每 10s 对已关闭 fd 写 token(EBADF 被吞)。返回后调用方须在 releaseLock 时 + // 一并传入 refresh 以清理定时器。 + return { ok: true, fd, owner, token, release, refresh }; } catch (e) { if (fd !== null) { try { fsPort.closeSync(fd); } catch (_) { /* 忽略 */ } @@ -297,7 +347,15 @@ function releaseLock(fsPort, lockPath, opts = {}) { const owner = opts.owner || `pid-${pid}`; try { if (opts.refresh) { - try { clearInterval(opts.refresh); } catch (_) { /* 忽略 */ } + // P1b 修复:refresh 统一为 heartbeat/interval 句柄(含 stop())。 + // stop() 先停 Worker 并等其确认(heartbeat)或 clearInterval(interval), + // 确保返回后不再有 token 写,调用方随后关 fd / unlink 才安全。 + // 兼容旧形态(裸 Worker/interval)以防调用方仍传旧值。 + try { + if (typeof opts.refresh.stop === 'function') opts.refresh.stop(); + else if (typeof opts.refresh.terminate === 'function') opts.refresh.terminate(); + else clearInterval(opts.refresh); + } catch (_) { /* 忽略 */ } } const token = readToken(fsPort, lockPath); if (token && token.pid !== pid) { diff --git a/vendor/dseam-skillmcp/vendor-shared/ids.js b/vendor/dseam-skillmcp/vendor-shared/ids.js index 2aed13d..423f6e1 100644 --- a/vendor/dseam-skillmcp/vendor-shared/ids.js +++ b/vendor/dseam-skillmcp/vendor-shared/ids.js @@ -10,6 +10,7 @@ const { PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, + REPO_RE, RESERVED_WIN_NAMES, MAX_ID_LENGTH, MAX_SOURCE_PATH_LENGTH @@ -214,6 +215,12 @@ function validateSourceRepo(repo) { if (CONTROL_CHAR_RE.test(repo)) { return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', 'source.repo 不得包含控制字符') }; } + // 审计修复:repo 必须是 owner/repo 格式(两段、字母数字开头、拒绝 .. 段/空白/元字符)。 + // 此前仅查长度+控制字符,`../../etc/passwd`、含空格或 `?query` 的串会进入 + // codeload/git clone URL 拼装,产生畸形 URL 或路径穿越风险。 + if (!REPO_RE.test(repo)) { + return { ok: false, error: makeError('ERR_ASSEMBLY_FIELD', `source.repo 必须是 owner/repo 格式:${JSON.stringify(repo)}`) }; + } return { ok: true }; } diff --git a/vendor/dseam-skillmcp/vendor-shared/index.mjs b/vendor/dseam-skillmcp/vendor-shared/index.mjs index b2f0128..6a3a2d3 100644 --- a/vendor/dseam-skillmcp/vendor-shared/index.mjs +++ b/vendor/dseam-skillmcp/vendor-shared/index.mjs @@ -25,10 +25,10 @@ export const { // contracts/constants export const { - PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, + PACK_ID_RE, PLUGIN_NAME_RE, EXACT_VERSION_RE, REPO_RE, RESERVED_WIN_NAMES, GITHUB_MIRRORS, SCHEMA_VERSION, HOTPACK_VERSION, MAX_ID_LENGTH, MAX_PATCH_ID_LENGTH, MAX_SOURCE_PATH_LENGTH, RUNLOG_MAX_BYTES, LOCK_WAIT_MS, LOCK_STALE_MS, LOCK_POLL_MS, LOCK_REFRESH_MS, - LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, CRASH_LOOP_WINDOW_MS, + LAUNCH_ALIVE_CHECK_MS, LAUNCH_WAIT_TIMEOUT_MS, CRASH_LOOP_THRESHOLD, DEFAULT_RETRY_BUDGET, STATE_FILE, RUN_LOG_FILE, PATCH_FILE, PROFILE_MANIFEST, SNAPSHOT_INLINE_MAX_BYTES, PROFILES_DIR, STORE_DIR, MEMORY_DIR, HOTPLUG_DIR, PATCH_LOCK_FILE, resolveDshRoot, dshRootPaths, defaultRoots, From d3b3f276289ab40fd3a56b2b77e42e0c2147336b Mon Sep 17 00:00:00 2001 From: YisfL <128236527+YisfL@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:10:12 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix(launcher):=20=E5=B4=A9=E6=BA=83?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=E8=AF=AD=E4=B9=89=E4=BF=AE=E6=AD=A3=20+=20sp?= =?UTF-8?q?awn=20=E6=9D=83=E9=99=90=E5=BD=92=E5=9B=A0=20+=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E8=A7=A3=E6=9E=90=E6=94=B6=E6=95=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - classify:EACCES/EPERM→INSTALL_FAIL;exit 无退出码→无信号; CRASH_LOOP 对齐"连续 N 次"语义(移除时间窗口描述)。 - resolve:垃圾版本串提前 unresolved(不再静默 pin 最高版); isExactVersion 收敛 shared isValidSemverString 单一真源。 - manifest:versionSpec 用归一化 semver.valid(ver)(修复 ^v1.2.3)。 - stages:lastExit 基础设施失败回退 null(不误判 CRASH_LOOP); stages-heal 预览(无 --yes)零持久副作用。 - 锁 refresh 句柄传递(pipeline/index);healplan context 空对象兜底。 - 测试:audit-fixes 回归 + stages-heal 磁盘断言 + classify 穷尽。 --- launcher/app/pipeline.js | 2 +- launcher/app/stages-heal.js | 14 ++++-- launcher/app/stages.js | 6 ++- launcher/domain/classify.js | 20 +++++--- launcher/domain/healplan.js | 5 +- launcher/domain/manifest.js | 5 +- launcher/domain/resolve.js | 29 ++++++----- launcher/index.js | 3 +- launcher/test/audit-fixes.test.js | 64 ++++++++++++++++++++++++ launcher/test/qa3-classify-extra.test.js | 17 ++++--- launcher/test/stages-heal.test.js | 4 ++ 11 files changed, 134 insertions(+), 35 deletions(-) create mode 100644 launcher/test/audit-fixes.test.js diff --git a/launcher/app/pipeline.js b/launcher/app/pipeline.js index 6953b92..b73316f 100644 --- a/launcher/app/pipeline.js +++ b/launcher/app/pipeline.js @@ -74,7 +74,7 @@ async function runPipeline(core, command, args) { return result; } finally { if (lock) { - core.infra.lock.releaseLock(fsPort, lockPath, { owner: lock.owner, pid: process.pid, fd: lock.fd }); + core.infra.lock.releaseLock(fsPort, lockPath, { owner: lock.owner, pid: process.pid, fd: lock.fd, refresh: lock.refresh }); core._activeLock = null; } } diff --git a/launcher/app/stages-heal.js b/launcher/app/stages-heal.js index d2a6df7..cbe606d 100644 --- a/launcher/app/stages-heal.js +++ b/launcher/app/stages-heal.js @@ -30,11 +30,15 @@ async function stageHeal(core, state, args) { } const profileDir = path.join(core.config.roots.profilesRoot, id); // C7 修复:heal 执行前确保 profile 目录存在(此前从未 launch 的 id 直接 heal 时, - // reinstall 的 npm install 以缺失目录为 cwd → 误导性的 ENOENT/ERR_INSTALL_FAILED) - try { - fsPort.mkdirSync(profileDir, { recursive: true }); - } catch (e) { - return errResult(makeError('ERR_INSTALL_DEP', `无法创建 profile 目录 ${profileDir}:${e.message}`)); + // reinstall 的 npm install 以缺失目录为 cwd → 误导性的 ENOENT/ERR_INSTALL_FAILED)。 + // 审计修复:mkdirSync 是持久副作用,必须只在执行模式(--yes)下做——预览(无 --yes) + // 契约承诺"零持久副作用",此前无条件 mkdirSync 违反该契约。 + if (yes) { + try { + fsPort.mkdirSync(profileDir, { recursive: true }); + } catch (e) { + return errResult(makeError('ERR_INSTALL_DEP', `无法创建 profile 目录 ${profileDir}:${e.message}`)); + } } const ctx = buildHealContext(core, state, id, profileDir); const run = await core.infra.heal.runHeal(core, planned.actions, ctx, { dryRun: !yes }); diff --git a/launcher/app/stages.js b/launcher/app/stages.js index d7d5fe0..7e71eda 100644 --- a/launcher/app/stages.js +++ b/launcher/app/stages.js @@ -199,7 +199,11 @@ async function stageLaunch(core, state, args) { // C6 修复:失败时 pid 置 null(无存活进程),避免残留旧 pid 误导 status。 state.launch = { ...state.launch, - lastExit: launched.error.childExitCode !== undefined ? launched.error.childExitCode : (launched.error.exitCode || 1), + // 审计修复:无 childExitCode(spawn/timeout/detach 等基础设施失败,子进程从未 + // 启动/退出)时 lastExit 记 null,而非 fallback 到 ERR_ 契约码 8——后者会让 + // classifyStateSignals 误判为"非零退出→CRASH_LOOP"(基础设施失败应走 HARNESS_FIX)。 + // null 与"detach 存活中 lastExit:null"语义一致,classifyStateSignals 视为无信号。 + lastExit: launched.error.childExitCode !== undefined ? launched.error.childExitCode : null, retries: (state.launch.retries || 0) + 1, pid: null }; diff --git a/launcher/domain/classify.js b/launcher/domain/classify.js index cb46dc3..50aa9e6 100644 --- a/launcher/domain/classify.js +++ b/launcher/domain/classify.js @@ -60,10 +60,17 @@ function classifySignal(signal) { // 无法修复缺失的 dsh 可执行文件)——映射独立动作 HARNESS_FIX。 return { code: 'ERR_LAUNCH_SPAWN', action: 'HARNESS_FIX', suggest: '可执行文件不存在,检查安装或 PATH' }; } + // 审计修复:EACCES/EPERM(权限不足)此前一律归 HARNESS_FIX——reprobe-harness + // 无法修复权限类错误,正确动作是 INSTALL_FAIL(检查目录权限/重装)。 + if (c === 'EACCES' || c === 'EPERM') { + return { code: 'ERR_LAUNCH_SPAWN', action: 'INSTALL_FAIL', suggest: '可执行文件权限不足,检查目录权限后重试' }; + } return { code: 'ERR_LAUNCH_SPAWN', action: 'HARNESS_FIX', suggest: `spawn 失败:${(signal.err && signal.err.message) || '未知错误'}` }; } case 'exit': { - if (signal.exitCode !== 0) { + // 审计修复:exitCode 为 null/undefined 时应视为"无信号"(与 classifyStateSignals + // 将 lastExit===null 视为无信号一致),而非 `null !== 0` 被误判为非零退出。 + if (signal.exitCode != null && signal.exitCode !== 0) { return { code: 'ERR_LAUNCH_EXIT', action: 'CRASH_LOOP', suggest: '启动后非零退出,检查 run.jsonl 日志' }; } return null; @@ -119,13 +126,14 @@ function classifyEntries(entries) { * 基于 state.launch 的状态驱动分类(C3 修复:CRASH_LOOP 真实可达)。 * * 背景:classifyEntries 只能从行式日志产生 stderr/log 信号,进程退出码从不写入 - * run.jsonl,导致 CRASH_LOOP 在 heal 链路上永远不可达(CRASH_LOOP_THRESHOLD/WINDOW - * 常量定义后无人使用)。本函数把 state.launch 的退出信息合成结构化信号: - * - lastExit 非 0:若 retries 已超过窗口阈值 → CRASH_LOOP(动作触发); + * run.jsonl,导致 CRASH_LOOP 在 heal 链路上永远不可达。本函数把 state.launch 的 + * 退出信息合成结构化信号: + * - lastExit 非 0:若 retries 达到 CRASH_LOOP_THRESHOLD(连续失败计数,成功即清零) + * → CRASH_LOOP(动作触发); * - 否则返回 null(单次崩溃不足,由调用方决定是否等待更多证据)。 * - * 窗口语义(与 healplan.CRASH_LOOP 触发文案一致):CRASH_LOOP_THRESHOLD 次 - * 非零退出(retries 计数)即判定崩溃循环。 + * 语义(与 healplan.CRASH_LOOP 触发文案一致):连续 CRASH_LOOP_THRESHOLD 次 + * 非零退出(retries 计数)即判定崩溃循环;不依赖时间窗口。 * * @param {object} state 当前 state(含 launch.lastExit/retries) * @returns {Array<{code:string, action:string, suggest:string}>} diff --git a/launcher/domain/healplan.js b/launcher/domain/healplan.js index 423442b..2483f0b 100644 --- a/launcher/domain/healplan.js +++ b/launcher/domain/healplan.js @@ -57,7 +57,7 @@ const ACTIONS = { }, CRASH_LOOP: { code: 'CRASH_LOOP', - trigger: `启动后 ${CRASH_LOOP_THRESHOLD} 次在窗口内崩溃`, + trigger: `启动后连续 ${CRASH_LOOP_THRESHOLD} 次非零退出`, steps: [{ type: 'rollback-snapshot' }, { type: 'disable-recent' }], verify: '重启后存活时间显著增加', rollback: '恢复被禁用插件', @@ -99,6 +99,9 @@ const ACTIONS = { * @returns {{ok: boolean, actions: Array}} */ function planActions(classification, context = {}) { + // 审计修复:`context = {}` 只覆盖 undefined;显式传 null 时 context.dryRun 抛 + // TypeError。改为空对象兜底(null/undefined 一视同仁)。 + context = context || {}; const items = Array.isArray(classification) ? classification : [classification]; const codes = new Set(); for (const c of items) { diff --git a/launcher/domain/manifest.js b/launcher/domain/manifest.js index 0c46af5..118479a 100644 --- a/launcher/domain/manifest.js +++ b/launcher/domain/manifest.js @@ -57,7 +57,10 @@ function buildManifest(pack, plugins, storeRoot) { */ function versionSpec(ver) { if (typeof ver !== 'string' || ver.length === 0) return 'latest'; - if (semver.valid(ver)) return `^${ver}`; // 精确版 → 兼容范围 + const valid = semver.valid(ver); + // 审计修复:用归一化后的 semver.valid(ver) 加 ^——此前 `^${ver}` 对 'v1.2.3' + // 产出非规范 `^v1.2.3`(semver.valid 容忍 v 前缀但原样拼接未归一化)。 + if (valid) return `^${valid}`; // 精确版(含 v 前缀)→ 归一化 + ^ if (semver.validRange(ver)) return ver; // 已是范围(^1.0.0/>=1.0.0/1.x) if (/^(latest|next|beta|alpha|rc)$/.test(ver)) return ver; // 已知 tag 原样 return 'latest'; // 非法串 → 兜底 latest diff --git a/launcher/domain/resolve.js b/launcher/domain/resolve.js index 97a3ffb..4982668 100644 --- a/launcher/domain/resolve.js +++ b/launcher/domain/resolve.js @@ -5,14 +5,17 @@ const semver = require('semver'); const { EXACT_VERSION_RE } = require('../contracts/constants'); const { makeError } = require('../contracts/errors'); +const { isValidSemverString } = require('./ids'); /** - * 是否为精确版本号(C2 修复:正则 + semver.valid 双条件,与 ids.validateVersion 一致)。 + * 是否为精确版本号(审计修复:收敛到 shared ids.isValidSemverString 单一真源—— + * 此前本地用 `semver.valid(v) !== null` 重复实现同一判定,与零依赖内建实现语义等价 + * 却分叉维护;现与 ids.validateVersion 共用同一判定)。 * @param {unknown} v * @returns {boolean} */ function isExactVersion(v) { - return typeof v === 'string' && EXACT_VERSION_RE.test(v) && semver.valid(v) !== null; + return typeof v === 'string' && EXACT_VERSION_RE.test(v) && isValidSemverString(v); } /** @@ -42,6 +45,17 @@ function resolveVersion(name, version, registry) { if (isExactVersion(version)) { return { resolvedVersion: version, pinned: true, source: 'exact' }; } + // 审计修复:非空垃圾版本串(既非精确版也非合法范围,如 'garbage'/'latest')在 + // 有 registry 数据时,此前被 `range = '*'` 兜底静默 pin 最高版——与注释声称的 + // "unresolved + warning"矛盾。现提前判定,垃圾串一律 unresolved,绝不进入 registry 匹配。 + if (typeof version === 'string' && version.length > 0 && !semver.validRange(version)) { + return { + resolvedVersion: null, + pinned: false, + source: 'unresolved', + warning: `非法版本串,无法 pin ${name}@${version}` + }; + } if (Array.isArray(available) && available.length > 0) { const range = version && semver.validRange(version) ? version : '*'; let best = semver.maxSatisfying(available, range); @@ -80,17 +94,6 @@ function resolveVersion(name, version, registry) { warning: `无 registry 数据,无法 pin ${name}@${version}` }; } - // C2 修复:既非精确版也非合法范围的垃圾版本串('garbage'/'latest' 等)—— - // 不得标 pinned:true source:'exact'(曾导致 install 把垃圾 spec 交给 npm、 - // conflicts 将其按"缺版本"处理),改为 unresolved + warning。 - if (typeof version === 'string' && version.length > 0) { - return { - resolvedVersion: null, - pinned: false, - source: 'unresolved', - warning: `非法版本串,无法 pin ${name}@${version}` - }; - } return { resolvedVersion: null, pinned: false, source: 'unresolved', warning: `缺少版本,无法 pin ${name}` }; } diff --git a/launcher/index.js b/launcher/index.js index 62e7daa..cfdee33 100644 --- a/launcher/index.js +++ b/launcher/index.js @@ -43,7 +43,8 @@ async function main() { core.infra.lock.releaseLock(core.ports.fs, core._activeLock.lockPath, { owner: core._activeLock.owner, pid: process.pid, - fd: core._activeLock.fd + fd: core._activeLock.fd, + refresh: core._activeLock.refresh }); } } catch (_) { /* 释放失败不影响退出 */ } diff --git a/launcher/test/audit-fixes.test.js b/launcher/test/audit-fixes.test.js new file mode 100644 index 0000000..b279310 --- /dev/null +++ b/launcher/test/audit-fixes.test.js @@ -0,0 +1,64 @@ +'use strict'; +// test/audit-fixes.test.js — 架构审计回归:契约漂移 / 死代码 / 健壮性(每条曾真实失败) +// +// 1. resolveVersion:垃圾版本串在有 registry 数据时不再静默 pin 最高版(曾 pin 最高版) +// 2. versionSpec:'v1.2.3' 归一化为 '^1.2.3'(曾产出非规范 '^v1.2.3') +// 3. planActions:显式传 null context 不再抛 TypeError(默认参数只覆盖 undefined) +// 4. classifySignal:exit exitCode=null/undefined 视为"无信号"(曾误判 CRASH_LOOP) +const { resolveVersion } = require('../domain/resolve'); +const { versionSpec } = require('../domain/manifest'); +const { planActions } = require('../domain/healplan'); +const { classifySignal, classifyStateSignals } = require('../domain/classify'); + +describe('resolveVersion:垃圾版本串不被 registry 兜底 pin 最高版(审计修复)', () => { + const registry = { availableVersions: () => ['1.0.0', '2.0.0'] }; + it('garbage 版本串 → unresolved + warning(此前 pin 2.0.0)', () => { + const r = resolveVersion('pkg', 'garbage!@#', registry); + expect(r.resolvedVersion).toBeNull(); + expect(r.pinned).toBe(false); + expect(r.source).toBe('unresolved'); + expect(r.warning).toContain('非法版本串'); + }); + it('精确版仍直接 pin', () => { + const r = resolveVersion('pkg', '1.2.3', registry); + expect(r).toEqual({ resolvedVersion: '1.2.3', pinned: true, source: 'exact' }); + }); + it('合法范围仍走 registry 匹配', () => { + const r = resolveVersion('pkg', '^1.0.0', registry); + expect(r.pinned).toBe(true); + expect(r.resolvedVersion).toBe('1.0.0'); + }); +}); + +describe('versionSpec:v 前缀归一化(审计修复)', () => { + it("versionSpec('v1.2.3') → '^1.2.3'(此前 '^v1.2.3')", () => { + expect(versionSpec('v1.2.3')).toBe('^1.2.3'); + }); + it('精确版 → ^;范围 → 原样;tag → 原样;垃圾 → latest', () => { + expect(versionSpec('1.2.3')).toBe('^1.2.3'); + expect(versionSpec('^1.0.0')).toBe('^1.0.0'); + expect(versionSpec('latest')).toBe('latest'); + expect(versionSpec('garbage')).toBe('latest'); + expect(versionSpec(undefined)).toBe('latest'); + }); +}); + +describe('planActions:null context 健壮性(审计修复)', () => { + it('planActions(classification, null) 不抛 TypeError', () => { + const r = planActions([{ action: 'CRASH_LOOP' }], null); + expect(r.ok).toBe(true); + expect(r.actions).toHaveLength(1); + expect(r.actions[0].code).toBe('CRASH_LOOP'); + expect(r.actions[0].dryRun).toBe(true); + }); +}); + +describe('classifySignal:exit 无退出码视为无信号(审计修复)', () => { + it('exitCode null/undefined → null(此前误判 CRASH_LOOP)', () => { + expect(classifySignal({ kind: 'exit', exitCode: null })).toBeNull(); + expect(classifySignal({ kind: 'exit', exitCode: undefined })).toBeNull(); + }); + it('classifyStateSignals:lastExit null 仍为无信号(回归不变)', () => { + expect(classifyStateSignals({ launch: { lastExit: null, retries: 3 } })).toEqual([]); + }); +}); diff --git a/launcher/test/qa3-classify-extra.test.js b/launcher/test/qa3-classify-extra.test.js index 4fe260b..cf11c5d 100644 --- a/launcher/test/qa3-classify-extra.test.js +++ b/launcher/test/qa3-classify-extra.test.js @@ -58,19 +58,24 @@ describe('QA3 classify 分类穷尽(审计 J 强化)', () => { } }); - it('spawn-error 多信号优先级:spawn-error → HARNESS_FIX(C3 修复:harness 归因)', () => { + it('spawn-error 多信号优先级:ENOENT → HARNESS_FIX;EACCES → INSTALL_FAIL(审计修复:权限归因)', () => { const c1 = classifySignal({ kind: 'spawn-error', err: Object.assign(new Error('ENOENT'), { code: 'ENOENT' }) }); expect(c1.action).toBe('HARNESS_FIX'); - const c2 = classifySignal({ kind: 'spawn-error', err: new Error('EACCES') }); - expect(c2.action).toBe('HARNESS_FIX'); + // EACCES/EPERM(权限不足)→ INSTALL_FAIL(reprobe-harness 无法修复权限) + const c2 = classifySignal({ kind: 'spawn-error', err: Object.assign(new Error('EACCES'), { code: 'EACCES' }) }); + expect(c2.action).toBe('INSTALL_FAIL'); expect(c2.code).toBe('ERR_LAUNCH_SPAWN'); + // 无 code 的未知 spawn 错误 → 保守 HARNESS_FIX + const c3 = classifySignal({ kind: 'spawn-error', err: new Error('EACCES') }); + expect(c3.action).toBe('HARNESS_FIX'); + expect(c3.code).toBe('ERR_LAUNCH_SPAWN'); }); - it('exit 信号:非零 → CRASH_LOOP;零 → null;exitCode 为 null(信号退出)→ CRASH_LOOP', () => { + it('exit 信号:非零 → CRASH_LOOP;零/null/undefined → null(审计修复:null=无退出码,与 classifyStateSignals 一致,非信号退出)', () => { expect(classifySignal({ kind: 'exit', exitCode: 1 }).action).toBe('CRASH_LOOP'); expect(classifySignal({ kind: 'exit', exitCode: 0 })).toBeNull(); - expect(classifySignal({ kind: 'exit', exitCode: null }).action).toBe('CRASH_LOOP'); - expect(classifySignal({ kind: 'exit', exitCode: undefined }).action).toBe('CRASH_LOOP'); + expect(classifySignal({ kind: 'exit', exitCode: null })).toBeNull(); + expect(classifySignal({ kind: 'exit', exitCode: undefined })).toBeNull(); }); it('log 信号:error 级 + U+FFFD → UTF8_CORRUPTION;error 级 + 规则行 → 对应动作;info 级 → null', () => { diff --git a/launcher/test/stages-heal.test.js b/launcher/test/stages-heal.test.js index ada62f2..ddbdd3c 100644 --- a/launcher/test/stages-heal.test.js +++ b/launcher/test/stages-heal.test.js @@ -64,6 +64,10 @@ describe('app/stages-heal.js stageHeal', () => { // 预览零持久副作用:phase/history/dirty 均未变 expect(JSON.stringify(state)).toBe(before); expect(state.phase).toBe('LAUNCHED'); + // 审计修复回归:预览(无 --yes)不得创建 profile 目录(mkdirSync 副作用守卫)。 + // 此前无条件 mkdirSync 违反"预览零持久副作用"契约——现用磁盘断言钉死。 + const profileDir = path.join(core.config.roots.profilesRoot, 'demo'); + expect(fs.existsSync(profileDir)).toBe(false); }); it('有信号 + --yes + 快照 → ok,phase=HEALING,history 追加(C7)', async () => { From 9e1a7d301c8f182e276846abfd0d6ebd48caf58a Mon Sep 17 00:00:00 2001 From: YisfL <128236527+YisfL@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:10:28 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix(hotplug-hub):=20RPC=20=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=A0=81=E5=A5=91=E7=BA=A6=E7=BB=9F=E4=B8=80=20+=20?= =?UTF-8?q?=E6=8C=82=E8=BD=BD=E4=BA=8B=E5=8A=A1=E5=9B=9E=E6=BB=9A=20+=20?= =?UTF-8?q?=E5=B8=82=E5=9C=BA=E9=94=99=E8=AF=AF=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - gateway:成功信封统一 code:"OK"/exitCode:0;失败 exitCode 由 shared exitCodeForCode 推导(ERR_ASSEMBLY_* 不再被压成 1)。 - patch:mountPack 事务化(失败全量回滚 link/bundles/patch/npm); removePatchBlock 返回统一契约;锁 refresh 句柄传递。 - market:修复运算符优先级死代码(网络失败正确显示"网络请求失败")。 - ai-session:saveSession 收敛 shared writeFileAtomic(无 .tmp 残留)。 - status:旧单 # marker 用 shared findPatchBlock 识别。 - client:离线 CATALOG 标 importable:false;详情失败显式标记;无 manifest 拒绝导入。 - memory-hub store 锁 refresh 句柄传递。 - 测试:audit-fixes + gateway + patch + market 错误分支。 --- dsh-hotplug-hub/dsh-memory-hub/lib/store.mjs | 3 +- dsh-hotplug-hub/lib/client.js | 48 ++++++--- dsh-hotplug-hub/lib/core/ai-session.js | 26 +++-- dsh-hotplug-hub/lib/core/hotpack.js | 6 +- dsh-hotplug-hub/lib/core/market.js | 4 +- dsh-hotplug-hub/lib/core/patch.js | 46 ++++++--- dsh-hotplug-hub/lib/core/status.js | 6 +- dsh-hotplug-hub/lib/gateway.js | 31 ++++-- dsh-hotplug-hub/test/audit-fixes.test.mjs | 103 +++++++++++++++++++ dsh-hotplug-hub/test/gateway.test.mjs | 10 +- dsh-hotplug-hub/test/market-net.test.mjs | 13 +++ dsh-hotplug-hub/test/patch.test.mjs | 23 ++++- 12 files changed, 257 insertions(+), 62 deletions(-) create mode 100644 dsh-hotplug-hub/test/audit-fixes.test.mjs diff --git a/dsh-hotplug-hub/dsh-memory-hub/lib/store.mjs b/dsh-hotplug-hub/dsh-memory-hub/lib/store.mjs index 66332f1..5d16d2d 100644 --- a/dsh-hotplug-hub/dsh-memory-hub/lib/store.mjs +++ b/dsh-hotplug-hub/dsh-memory-hub/lib/store.mjs @@ -272,7 +272,8 @@ export class MemoryStore { try { return fn() } finally { - releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd }) + // 审计修复:传入 refresh 句柄清理心跳(Worker 线程),否则释放后仍持续写锁文件。 + releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd, refresh: a.refresh }) } } diff --git a/dsh-hotplug-hub/lib/client.js b/dsh-hotplug-hub/lib/client.js index 705b675..8d376f9 100644 --- a/dsh-hotplug-hub/lib/client.js +++ b/dsh-hotplug-hub/lib/client.js @@ -206,13 +206,17 @@ window.__ModuleLoader__.load({ // 市场抓取来源通道:'github'=官方,其余为镜像站域名(与 lib/core/paths.js GITHUB_MIRRORS 一致) const MARKET_SOURCE_OPTIONS = ["github", "ghfast.top", "gh-proxy.com", "ghproxy.net", "mirror.ghproxy.com", "ghproxy.cc", "gh-proxy.net"]; const MARKET_DETAIL_CONCURRENCY = 6; + // 离线示例目录:仅作展示(无真实插件清单 manifest)。审计修复:此前未标 importable, + // 渲染层 `installable = p.importable !== false` 把它们当成可导入,doMarketInstall 用 + // plugins:[] 硬拼 manifest → parseHotpack 非空校验必失败(离线「导入」恒报错)。 + // 现显式标 importable:false,按钮正确显示「不可导入」且禁用。 const CATALOG = [ - { id: "pack-research", name: "科研插座包", tags: ["科研", "论文", "文献"], desc: "文献检索、综述、论文写作、引用与审稿建议", plugins: 4, accent: "#0e7c6b" }, - { id: "pack-video", name: "视频制作插座包", tags: ["视频", "剪辑", "字幕"], desc: "脚本、分镜、剪辑清单、字幕与封面生成", plugins: 4, accent: "#b45309" }, - { id: "pack-social", name: "自媒体插座包", tags: ["自媒体", "选题", "文案"], desc: "热点选题、拆解、文案与发布清单", plugins: 3, accent: "#8b5e3c" }, - { id: "pack-kaoyan", name: "考研冲刺插座包", tags: ["考研", "学习", "闪卡"], desc: "背诵计划、真题梳理、中日双语文法和闪卡导出", plugins: 3, accent: "#1d5f9e" }, - { id: "pack-fullstack", name: "全栈开发插座包", tags: ["开发", "全栈", "DevOps"], desc: "脚手架、代码评审、测试和安全检查", plugins: 4, accent: "#5b5488" }, - { id: "pack-notes", name: "知识管理插座包", tags: ["笔记", "知识库", "整理"], desc: "网页收藏、笔记整理、书摘提取与双链", plugins: 3, accent: "#237a57" } + { id: "pack-research", name: "科研插座包", tags: ["科研", "论文", "文献"], desc: "文献检索、综述、论文写作、引用与审稿建议", plugins: 4, accent: "#0e7c6b", importable: false, importError: "离线示例包,需联网搜索真实插件包" }, + { id: "pack-video", name: "视频制作插座包", tags: ["视频", "剪辑", "字幕"], desc: "脚本、分镜、剪辑清单、字幕与封面生成", plugins: 4, accent: "#b45309", importable: false, importError: "离线示例包,需联网搜索真实插件包" }, + { id: "pack-social", name: "自媒体插座包", tags: ["自媒体", "选题", "文案"], desc: "热点选题、拆解、文案与发布清单", plugins: 3, accent: "#8b5e3c", importable: false, importError: "离线示例包,需联网搜索真实插件包" }, + { id: "pack-kaoyan", name: "考研冲刺插座包", tags: ["考研", "学习", "闪卡"], desc: "背诵计划、真题梳理、中日双语文法和闪卡导出", plugins: 3, accent: "#1d5f9e", importable: false, importError: "离线示例包,需联网搜索真实插件包" }, + { id: "pack-fullstack", name: "全栈开发插座包", tags: ["开发", "全栈", "DevOps"], desc: "脚手架、代码评审、测试和安全检查", plugins: 4, accent: "#5b5488", importable: false, importError: "离线示例包,需联网搜索真实插件包" }, + { id: "pack-notes", name: "知识管理插座包", tags: ["笔记", "知识库", "整理"], desc: "网页收藏、笔记整理、书摘提取与双链", plugins: 3, accent: "#237a57", importable: false, importError: "离线示例包,需联网搜索真实插件包" } ]; // AI 服务商预设(与后端 lib/core/ai.js AI_PROVIDERS 注册表一致的默认值; // 后端为权威,此处仅作 UI 快捷填充。label 只写平台名,模型名由模型输入框体现, @@ -427,7 +431,19 @@ window.__ModuleLoader__.load({ if (!prev) return prev; return { ...prev, entries: prev.entries.map((x) => (x.id === e.id ? { ...x, ...entry, detailPending: false } : x)) }; }); - } catch { /* 单条详情失败:保留列表占位,标记不可导入,不阻塞其他条目 */ } + } catch { + // 审计修复:catch 原为空转——注释声称"标记不可导入"却未实现,导致 + // detailPending 永远为 true、卡片永久「加载中…」。现显式标记失败态。 + setMarketData((prev) => { + if (!prev) return prev; + return { + ...prev, + entries: prev.entries.map((x) => (x.id === e.id + ? { ...x, detailPending: false, importable: false, importError: "详情加载失败,可稍后重试" } + : x)), + }; + }); + } } }; Array.from({ length: Math.min(MARKET_DETAIL_CONCURRENCY, pending.length) }, () => worker()); @@ -437,16 +453,14 @@ window.__ModuleLoader__.load({ const doMarketRefresh = () => { setMarketPage(1); loadMarket(marketParams(1, true)); }; const doMarketMore = () => { const next = marketPage + 1; setMarketPage(next); loadMarket(marketParams(next, false)); }; const doMarketInstall = (pack) => { - const manifest = pack.manifest || { - hotpack: "1.0", - id: pack.id, - name: pack.name, - version: "1.0.0", - description: pack.description || pack.desc || "", - tags: pack.tags || pack.topics || [], - plugins: [] - }; - run("import", () => api.importPack(JSON.stringify(manifest))).then((result) => { + // 审计修复:无真实 manifest 的条目(离线 CATALOG 示例 / 详情抓取失败的仓库) + // 此前用 plugins:[] 硬拼 manifest → parseHotpack 非空校验必失败。现显式拒绝, + // 不再发起注定失败的 import(渲染层已用 importable:false 禁用按钮,此为双保险)。 + if (!pack.manifest) { + say("error", (pack.importError || t("marketUnavailable"))); + return; + } + run("import", () => api.importPack(JSON.stringify(pack.manifest))).then((result) => { if (result && result.ok) { say("success", t("importDone") + pack.name); setTab("hub"); diff --git a/dsh-hotplug-hub/lib/core/ai-session.js b/dsh-hotplug-hub/lib/core/ai-session.js index c36f23e..316fecd 100644 --- a/dsh-hotplug-hub/lib/core/ai-session.js +++ b/dsh-hotplug-hub/lib/core/ai-session.js @@ -10,10 +10,19 @@ * - 消息内容为 LLM 原文(产物 JSON/闲聊文本),不含凭据。 */ -import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs' +import { + closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, readdirSync, + renameSync, rmSync, unlinkSync, writeFileSync, +} from 'node:fs' import { join } from 'node:path' +import { writeFileAtomic } from '../../vendor-shared/index.mjs' import { hotplugRoot } from './paths.js' +// node:fs 直连端口(shared writeFileAtomic 契约所需方法;与 patch.js 的 nodeFsPort 一致) +const atomicFsPort = { + mkdirSync, openSync, writeFileSync, fsyncSync, closeSync, renameSync, existsSync, unlinkSync, +} + /** 会话消息保留上限(超出裁掉最旧的;防 token 爆炸)。 */ export const SESSION_MAX_MESSAGES = 16 /** 单条消息内容截断上限(防超大上下文)。 */ @@ -79,16 +88,16 @@ export function loadSession(id) { } /** - * 保存会话(原子写:临时文件 + rename 替换,避免半写)。 + * 保存会话(统一走 shared writeFileAtomic:随机 tmp + O_EXCL + fsync + rename)。 + * 审计修复:此前自写"伪原子"——writeFileSync(tmp)→rmSync(file)→writeFileSync(file) + * →rmSync(tmp),.tmp 是死代码、先删原文件再直写存在丢文件窗口且无 rename 语义。 + * 现收敛到单一真源 writeFileAtomic,失败不留下半写文件、原文件在 rename 成功前始终完好。 * @param {object} session {id, persona, messages, pack, turn, createdAt, updatedAt} * @returns {boolean} 是否成功 */ export function saveSession(session) { if (!session || typeof session.id !== 'string' || session.id.trim() === '') return false try { - mkdirSync(sessionsDir(), { recursive: true }) - const file = sessionPath(session.id) - const tmp = file + '.tmp' const payload = JSON.stringify({ id: session.id, persona: session.persona, @@ -98,11 +107,8 @@ export function saveSession(session) { createdAt: session.createdAt, updatedAt: session.updatedAt || new Date().toISOString(), }) - writeFileSync(tmp, payload, 'utf8') - rmSync(file, { force: true }) - writeFileSync(file, payload, 'utf8') - rmSync(tmp, { force: true }) - return true + const r = writeFileAtomic(atomicFsPort, sessionPath(session.id), payload, { errorCode: 'ERR_LOG_WRITE' }) + return r.ok } catch { return false } diff --git a/dsh-hotplug-hub/lib/core/hotpack.js b/dsh-hotplug-hub/lib/core/hotpack.js index b63d88f..63aa6f8 100644 --- a/dsh-hotplug-hub/lib/core/hotpack.js +++ b/dsh-hotplug-hub/lib/core/hotpack.js @@ -24,13 +24,15 @@ function adapt(pack) { export function parseHotpack(input) { const r = sharedParseHotpack(input, SHARED_OPTS) - if (!r.ok) return { ok: false, error: r.message } + // 审计修复:保留 shared 的 CLI 域错误码(code)——此前只透传 message,错误码被 + // 网关归一为 ERR_HOTPLUG_FAILED/exit 1,32 码契约从不透传(ERR_ASSEMBLY_* 应 exit 3)。 + if (!r.ok) return { ok: false, code: r.code, error: r.message } return { ok: true, pack: adapt(r.pack) } } /** .dshpack.json(规划格式)→ hotpack v1 转换(vendor-shared 单一桥接 + 展示适配)。 */ export function dshpackToHotpack(text) { const r = sharedDshpackToHotpack(text, SHARED_OPTS) - if (!r.ok) return { ok: false, error: r.message } + if (!r.ok) return { ok: false, code: r.code, error: r.message } return { ok: true, pack: adapt(r.pack) } } diff --git a/dsh-hotplug-hub/lib/core/market.js b/dsh-hotplug-hub/lib/core/market.js index 2310bcf..dd2fcf7 100644 --- a/dsh-hotplug-hub/lib/core/market.js +++ b/dsh-hotplug-hub/lib/core/market.js @@ -185,7 +185,9 @@ export function rawFileUrls(repo, ref, path, sources) { export async function searchMarketRepos(topic, q, page, sources) { // 选中的来源通道同时发起,取第一个成功响应("哪个快用哪个") const res = await raceFetch(apiSearchUrls(topic, q, page, sources), 20000, { Accept: 'application/vnd.github+json' }, 15000) - if (!res.ok) return { ok: false, error: 'HTTP ' + (res.status ?? 0) || '网络请求失败' } + // 审计修复:原 'HTTP ' + (res.status ?? 0) || '网络请求失败' 因 + 优先级高于 ||, + // 后半段为永不可达死代码,网络失败(status=0)时错误地显示 "HTTP 0"。 + if (!res.ok) return { ok: false, error: res.status ? 'HTTP ' + res.status : '网络请求失败' } try { const json = JSON.parse(res.text) if (!Array.isArray(json.items)) return { ok: false, error: json.message ?? '响应结构异常' } diff --git a/dsh-hotplug-hub/lib/core/patch.js b/dsh-hotplug-hub/lib/core/patch.js index c46b15c..bc653fb 100644 --- a/dsh-hotplug-hub/lib/core/patch.js +++ b/dsh-hotplug-hub/lib/core/patch.js @@ -79,36 +79,42 @@ export function appendPatchBlock(pack) { if (!r.ok) return { ok: false, error: r.error.message } return { ok: true } } finally { - releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd }) + releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd, refresh: a.refresh }) } } /** * 移除 hotplug 分节块(按 marker 匹配,不按 id 内容——迁移规则 §9)。 * 兼容旧内联形态(`- insert: # hotplug:`):按行手术移除。 + * 审计修复:返回统一为 {ok, removed?, error?}(与 appendPatchBlock/shared 一致); + * 此前锁获取失败静默 return false,调用方 unmountPack 丢弃返回值——deactivate 会 + * 在 patch 块实际未移除的情况下仍返回成功,破坏"停用即卸载"契约。 + * @returns {{ok: boolean, removed?: boolean, error?: string}} */ export function removePatchBlock(packId) { const path = patchPath() const lockPath = patchLockPath() const a = acquireLock(nodeFsPort, lockPath, { waitMs: 10000, refreshMs: 5000 }) - if (!a.ok) return false + if (!a.ok) return { ok: false, error: `patch 锁获取失败:${a.error.message}` } try { - if (!existsSync(path)) return false + if (!existsSync(path)) return { ok: true, removed: false } // 1) 契约形态(## / # 单行 marker) const r = sharedRemovePatchBlock(nodeFsPort, path, 'hotplug', packId) - if (r.ok && r.removed) return true + if (!r.ok) return { ok: false, error: r.error.message } + if (r.removed) return { ok: true, removed: true } // 2) 旧内联形态(- insert: # hotplug:) const lines = readFileSync(path, 'utf8').split('\n') const markerRe = new RegExp(`#\\s*hotplug:${packId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*$`) const start = lines.findIndex((line) => markerRe.test(line)) - if (start === -1) return false + if (start === -1) return { ok: true, removed: false } let end = start + 1 while (end < lines.length && (lines[end].startsWith(' ') || lines[end].startsWith('\t') || lines[end].trim() === '')) end++ lines.splice(start, end - start) const w = writeFileAtomic(nodeFsPort, path, lines.join('\n'), { errorCode: 'ERR_INSTALL_FAILED' }) - return w.ok + if (!w.ok) return { ok: false, error: w.error.message } + return { ok: true, removed: true } } finally { - releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd }) + releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd, refresh: a.refresh }) } } @@ -184,7 +190,8 @@ export function removeBundles(names) { // ---------- 激活 / 卸载 ---------- export async function unmountPack(pack) { - removePatchBlock(pack.id) + const removed = removePatchBlock(pack.id) + if (!removed.ok) return { ok: false, error: removed.error } const bundleNames = bundlePkgNames(pack) removeBundles(bundleNames) const manifest = readJson(manifestPath()) @@ -207,21 +214,36 @@ export async function unmountPack(pack) { return { ok: true } } +/** + * 回滚一次失败的挂载:以 unmountPack 作为逆操作(link / bundles / patch / npm 全撤销)。 + * 只撤销已写入的部分——unmountPack 各项均为"存在才移除"的幂等语义,故半挂载安全。 + * @param {object} pack + */ +async function rollbackMount(pack) { + try { await unmountPack(pack) } catch { /* 回滚失败不覆盖主错误(尽力而为) */ } +} + export async function mountPack(pack) { const steps = [] + // 审计修复:挂载失败统一回滚(此前 gateway 只撤 patch+bundles,link: 依赖/junction + // 与 ensureNpm 装入的 npm 包残留,形成半挂载)。现在 mount = 全有或全无。 + const fail = async (error) => { + await rollbackMount(pack) + return { ok: false, error, steps } + } for (const entry of pack.plugins) { const ensured = await ensureEntry(entry) - if (!ensured.ok) return { ok: false, error: ensured.error, steps } + if (!ensured.ok) return fail(ensured.error) steps.push({ id: entry.id, name: entry.name, status: ensured.status, detail: ensured.detail }) } const manifest = readJson(manifestPath()) - if (manifest === null) return { ok: false, error: 'profile package.json 不可读', steps } + if (manifest === null) return fail('profile package.json 不可读') for (const entry of pack.plugins.filter((item) => item.source.type !== 'npm')) { const linked = linkEntryIntoProfile(entry) - if (!linked.ok) return { ok: false, error: linked.error, steps } + if (!linked.ok) return fail(linked.error) } addBundles(bundlePkgNames(pack)) const patched = appendPatchBlock(pack) - if (!patched.ok) return { ok: false, error: patched.error, steps } + if (!patched.ok) return fail(patched.error) return { ok: true, steps, restartNeeded: true } } diff --git a/dsh-hotplug-hub/lib/core/status.js b/dsh-hotplug-hub/lib/core/status.js index 35458c7..735525a 100644 --- a/dsh-hotplug-hub/lib/core/status.js +++ b/dsh-hotplug-hub/lib/core/status.js @@ -8,7 +8,7 @@ import { readJson, readPackManifest, listPackIds, readState, writeJsonSafe } fro import { runCli } from './run-cli.js' import { parseHotpack } from './hotpack.js' import { installedVersion, npmModuleDir, storeDirOf } from './ensure.js' -import { patchMarker } from './patch.js' +import { findPatchBlock } from '../../vendor-shared/index.mjs' export function statusSync() { const state = readState() @@ -52,7 +52,9 @@ export function statusSync() { home: homeDir(), profile: { name: profileName(), dir: profileDir() }, activePack: state.activePack ?? null, - activePatchOk: state.activePack ? patchText.includes(patchMarker(state.activePack)) : true, + // 审计修复:改用 shared findPatchBlock(识别 `#`/`##` 两种 marker 形态)—— + // 此前 includes('## hotplug:') 对旧单 # marker 误报 activePatchOk=false。 + activePatchOk: state.activePack ? findPatchBlock(patchText, 'hotplug', state.activePack).found : true, packs, store: { dir: storeRoot(), entries: storeEntries }, } diff --git a/dsh-hotplug-hub/lib/gateway.js b/dsh-hotplug-hub/lib/gateway.js index b516458..fcbe269 100644 --- a/dsh-hotplug-hub/lib/gateway.js +++ b/dsh-hotplug-hub/lib/gateway.js @@ -12,7 +12,8 @@ import { readPackManifest, readState, writeState } from './core/state.js' import { statusSync, importPackSync, previewPack, checkAsync } from './core/status.js' import { marketListAsync, marketDetailAsync } from './core/market.js' import { aiAssemble, aiChat as aiChatCore } from './core/ai.js' -import { mountPack, unmountPack, removePatchBlock, removeBundles, bundlePkgNames } from './core/patch.js' +import { mountPack, unmountPack, removePatchBlock } from './core/patch.js' +import { exitCodeForCode } from '../vendor-shared/index.mjs' /** 网关通用失败码(RPC 域,非 CLI ERROR_CODES 表)。 */ export const RPC_ERROR_CODE = 'ERR_HOTPLUG_FAILED' @@ -20,16 +21,30 @@ export const RPC_ERROR_CODE = 'ERR_HOTPLUG_FAILED' /** * RPC 结果归一化:失败统一 {ok:false, code, message, exitCode}; * 兼容保留 error 字段(迁移期 client 可回退读取)。 + * 审计修复:exitCode 只由 code 推导(shared exitCodeForCode)——此前 result 未带 + * exitCode 时一律归一为 1,导致 hotpack 校验错误(ERR_ASSEMBLY_*,应为 exit 3)被 + * 压成 exit 1,32 码退出码契约从不透传。 * @param {object} result * @returns {object} */ export function normalizeRpc(result) { - if (!result || result.ok !== false) return result + if (!result) return result + if (result.ok !== false) { + // 审计修复:成功信封统一补 code:'OK' / exitCode:0——此前只有 aiAssemble/aiChat + // 手写 {code:'OK', data, exitCode:0},其余方法(status/importPack/activate…)裸返回, + // RPC 信封 {ok, code, exitCode} 不统一;现在所有成功响应统一携带 OK/0。 + return { + ...result, + code: result.code === undefined ? 'OK' : result.code, + exitCode: result.exitCode === undefined ? 0 : result.exitCode, + } + } + const code = typeof result.code === 'string' && result.code !== '' ? result.code : RPC_ERROR_CODE return { ...result, - code: typeof result.code === 'string' ? result.code : RPC_ERROR_CODE, + code, message: typeof result.message === 'string' ? result.message : (typeof result.error === 'string' ? result.error : '操作失败'), - exitCode: typeof result.exitCode === 'number' ? result.exitCode : 1, + exitCode: typeof result.exitCode === 'number' ? result.exitCode : exitCodeForCode(code), } } @@ -86,12 +101,8 @@ class HotplugGateway extends TypertRemoteService { } } const mounted = await mountPack(manifest) - if (!mounted.ok) { - // 挂载失败:把已经写进去的部分尽量还原(patch 块 + bundles),避免半挂载。 - removePatchBlock(manifest.id) - removeBundles(bundlePkgNames(manifest)) - return { ok: false, error: mounted.error, steps: mounted.steps } - } + // mountPack 已事务化:失败时内部回滚 link/bundles/patch/npm,无需此处二次清理。 + if (!mounted.ok) return { ok: false, error: mounted.error, steps: mounted.steps } const next = readState() next.activePack = packId next.history = [...(next.history ?? []), { event: 'activate', packId, at: new Date().toISOString() }].slice(-64) diff --git a/dsh-hotplug-hub/test/audit-fixes.test.mjs b/dsh-hotplug-hub/test/audit-fixes.test.mjs new file mode 100644 index 0000000..b8f9b05 --- /dev/null +++ b/dsh-hotplug-hub/test/audit-fixes.test.mjs @@ -0,0 +1,103 @@ +// test/audit-fixes.test.mjs — 架构审计回归:统一契约 / 原子写 / 错误码透传 / 旧 marker 兼容 +// +// 覆盖审计修复(每条均曾真实失败): +// 1. normalizeRpc:exitCode 只由 code 推导(ERR_ASSEMBLY_* → exit 3,不再一律 1) +// 2. core/hotpack.parseHotpack:保留 shared 的 CLI 域错误码(不再吞 code) +// 3. core/ai-session.saveSession:统一 shared writeFileAtomic(无 .tmp 残留、往返一致) +// 4. core/status.statusSync:旧单 # marker 正确识别为 activePatchOk=true +import { describe, it, expect, beforeEach, afterEach } from 'vitest' +import { join } from 'node:path' +import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs' +import { normalizeRpc } from '../lib/gateway.js' +import { parseHotpack } from '../lib/core/hotpack.js' +import { saveSession, loadSession, sessionsDir } from '../lib/core/ai-session.js' +import { statusSync } from '../lib/core/status.js' +import { applyIsolatedEnv, isolatedDsh } from './helpers.mjs' + +let restoreEnv = null +let iso = null + +beforeEach(() => { + iso = isolatedDsh() + restoreEnv = applyIsolatedEnv(iso.dshHome) +}) +afterEach(() => { if (restoreEnv) restoreEnv(); if (iso) iso.cleanup() }) + +describe('normalizeRpc:exitCode 只由 code 推导(审计修复)', () => { + it('ERR_ASSEMBLY_FIELD → exit 3(此前被压成 1)', () => { + const r = normalizeRpc({ ok: false, code: 'ERR_ASSEMBLY_FIELD', message: '字段非法' }) + expect(r.code).toBe('ERR_ASSEMBLY_FIELD') + expect(r.exitCode).toBe(3) + }) + it('无 code 时回退 RPC_ERROR_CODE + exit 1', () => { + const r = normalizeRpc({ ok: false, error: 'x' }) + expect(r.exitCode).toBe(1) + }) +}) + +describe('core/hotpack.parseHotpack:保留 shared 错误码(审计修复)', () => { + it('非法 JSON → code=ERR_ASSEMBLY_INVALID_JSON', () => { + const r = parseHotpack('{ not json') + expect(r.ok).toBe(false) + expect(r.code).toBe('ERR_ASSEMBLY_INVALID_JSON') + }) + it('非对象输入 → code=ERR_ASSEMBLY_FIELD', () => { + const r = parseHotpack(null) + expect(r.ok).toBe(false) + expect(r.code).toBe('ERR_ASSEMBLY_FIELD') + }) +}) + +describe('core/ai-session.saveSession:统一原子写(审计修复)', () => { + it('保存→读取往返一致,且无 .tmp 残留', () => { + const ok = saveSession({ id: 's1', persona: 'maid', messages: [{ role: 'user', content: 'hi' }], pack: null, turn: 1 }) + expect(ok).toBe(true) + const loaded = loadSession('s1') + expect(loaded.id).toBe('s1') + expect(loaded.messages).toEqual([{ role: 'user', content: 'hi' }]) + expect(loaded.turn).toBe(1) + // 无 .tmp 残留(此前 writeFileSync(tmp) + rmSync(file) + writeFileSync(file) 留下死代码路径) + const files = readdirSync(sessionsDir()) + expect(files.some((f) => f.endsWith('.tmp'))).toBe(false) + expect(files).toContain('s1.json') + }) + + it('覆盖写入:旧内容被替换,仍无残留', () => { + saveSession({ id: 's2', messages: [{ role: 'user', content: 'v1' }], turn: 1 }) + saveSession({ id: 's2', messages: [{ role: 'user', content: 'v2' }], turn: 2 }) + const loaded = loadSession('s2') + expect(loaded.messages[0].content).toBe('v2') + expect(loaded.turn).toBe(2) + expect(readdirSync(sessionsDir()).some((f) => f.endsWith('.tmp'))).toBe(false) + }) +}) + +describe('core/status.statusSync:旧单 # marker 兼容(审计修复)', () => { + function seedActivePackWithPatch(patchText) { + const hub = join(iso.dshHome, 'hotplug-hub') + mkdirSync(join(hub, 'packs', 'pack.test'), { recursive: true }) + writeFileSync(join(hub, 'state.json'), JSON.stringify({ version: 1, activePack: 'pack.test', history: [] })) + writeFileSync(join(hub, 'packs', 'pack.test', 'hotpack.json'), JSON.stringify({ + hotpack: '1.0', id: 'pack.test', name: 'Test', version: '1.0.0', description: '', tags: [], + plugins: [{ id: 'a', name: 'pkg-a', source: { type: 'npm' }, version: '1.0.0', config: {} }], + })) + writeFileSync(join(iso.profile, 'cordis.patch.yml'), patchText) + } + + it('旧单 # marker 仍识别为 activePatchOk=true(此前误报 false)', () => { + seedActivePackWithPatch('# hotplug:pack.test\n- insert:\n - id: hp-x\n name: \'x\'\n config: {}\n') + const status = statusSync() + expect(status.activePack).toBe('pack.test') + expect(status.activePatchOk).toBe(true) + }) + + it('契约 ## marker 仍为 true', () => { + seedActivePackWithPatch('## hotplug:pack.test\n- insert:\n - id: hp-x\n name: \'x\'\n config: {}\n') + expect(statusSync().activePatchOk).toBe(true) + }) + + it('patch 缺失 marker 时为 false', () => { + seedActivePackWithPatch('## desktop:other\n- insert: []\n') + expect(statusSync().activePatchOk).toBe(false) + }) +}) diff --git a/dsh-hotplug-hub/test/gateway.test.mjs b/dsh-hotplug-hub/test/gateway.test.mjs index 07f5ebb..a8e931e 100644 --- a/dsh-hotplug-hub/test/gateway.test.mjs +++ b/dsh-hotplug-hub/test/gateway.test.mjs @@ -16,9 +16,13 @@ beforeEach(() => { afterEach(() => { if (restoreEnv) restoreEnv(); if (iso) iso.cleanup() }) describe('normalizeRpc(R-v5-10)', () => { - it('成功结果原样透传', () => { - const ok = { ok: true, data: 1 } - expect(normalizeRpc(ok)).toBe(ok) + it('成功结果统一补 code:"OK"/exitCode:0(审计修复:RPC 信封统一)', () => { + const r = normalizeRpc({ ok: true, data: 1 }) + expect(r.code).toBe('OK') + expect(r.exitCode).toBe(0) + expect(r.data).toBe(1) + // 已带 code/exitCode 的成功结果保留原值 + expect(normalizeRpc({ ok: true, code: 'OK', data: 2, exitCode: 0 }).code).toBe('OK') }) it('失败统一 {ok, code, message, exitCode};error 兼容保留', () => { diff --git a/dsh-hotplug-hub/test/market-net.test.mjs b/dsh-hotplug-hub/test/market-net.test.mjs index 1bfb0c8..1e60bac 100644 --- a/dsh-hotplug-hub/test/market-net.test.mjs +++ b/dsh-hotplug-hub/test/market-net.test.mjs @@ -99,6 +99,19 @@ describe('searchMarketRepos', () => { const r = await searchMarketRepos('dsh-plugin', '', 1, ['github']) expect(r.ok).toBe(false) }) + + it('searchMarketRepos:HTTP 错误 → "HTTP ";网络失败(status=0) → "网络请求失败"(审计修复:运算符优先级死代码)', async () => { + // status=404:确定性结算 → 错误消息应为 HTTP 404 + stubFetch([{ match: () => true, status: 404, text: '' }]) + const r404 = await searchMarketRepos('dsh-plugin', '', 1, ['github']) + expect(r404.ok).toBe(false) + expect(r404.error).toBe('HTTP 404') + // status=0:网络层失败(curl 兜底也失败)→ 错误消息应为「网络请求失败」而非「HTTP 0」 + stubFetch([{ match: () => true, status: 0, text: '' }]) + const r0 = await searchMarketRepos('dsh-plugin', '', 1, ['github']) + expect(r0.ok).toBe(false) + expect(r0.error).toBe('网络请求失败') + }) }) describe('fetchRepoDetail / marketListAsync(全链路桩)', () => { diff --git a/dsh-hotplug-hub/test/patch.test.mjs b/dsh-hotplug-hub/test/patch.test.mjs index eb6d90f..a3e1ecc 100644 --- a/dsh-hotplug-hub/test/patch.test.mjs +++ b/dsh-hotplug-hub/test/patch.test.mjs @@ -53,10 +53,10 @@ describe('appendPatchBlock / removePatchBlock(锁内分节合并)', () => { const r2 = appendPatchBlock(pack) expect(r2.ok).toBe(false) expect(r2.error).toContain('已存在') - // 移除(契约形态) - expect(removePatchBlock('pack.test')).toBe(true) + // 移除(契约形态)——返回统一 {ok, removed} 形状(审计修复:锁失败不再静默 false) + expect(removePatchBlock('pack.test')).toEqual({ ok: true, removed: true }) expect(readFileSync(iso.profile + '/cordis.patch.yml', 'utf8')).not.toContain('hotplug:pack.test') - expect(removePatchBlock('pack.test')).toBe(false) + expect(removePatchBlock('pack.test')).toEqual({ ok: true, removed: false }) }) it('移除保留其它块与注释(分节语义)', () => { @@ -72,7 +72,7 @@ describe('appendPatchBlock / removePatchBlock(锁内分节合并)', () => { it('旧内联形态(- insert: # hotplug:pack.test)移除兼容(迁移规则 §9)', () => { writeFileSync(join(iso.profile, 'cordis.patch.yml'), '# 顶部注释\n- insert: # hotplug:pack.test\n - id: hp-old\n name: \'old\'\n config: {}\n') - expect(removePatchBlock('pack.test')).toBe(true) + expect(removePatchBlock('pack.test')).toEqual({ ok: true, removed: true }) const text = readFileSync(join(iso.profile, 'cordis.patch.yml'), 'utf8') expect(text).toContain('# 顶部注释') expect(text).not.toContain('hotplug:pack.test') @@ -122,4 +122,19 @@ describe('mountPack / unmountPack 对称回滚(H-9,path 源,零 spawn)', expect(Array.isArray(m.steps)).toBe(true) expect(m.steps[0].status).toBe('reused') }) + + it('挂载失败(appendPatchBlock 拒绝已存在块)→ 回滚已 link 的依赖(审计修复:无半挂载)', async () => { + const okDir = join(iso.dshHome, 'plugin-src', 'pkg-ok') + mkdirSync(okDir, { recursive: true }) + writeFileSync(join(okDir, 'package.json'), JSON.stringify({ name: 'pkg-ok', version: '1.0.0' })) + const pack = samplePack({ plugins: [{ id: 'ok', name: 'pkg-ok', source: { type: 'path', path: okDir }, config: {} }] }) + // 预置同名 patch 块,使 appendPatchBlock 在 link 之后失败,验证回滚撤销 link: 依赖与 junction + writeFileSync(join(iso.profile, 'cordis.patch.yml'), '## hotplug:pack.test\n- insert: []\n') + const m = await mountPack(pack) + expect(m.ok).toBe(false) + // 审计修复断言:失败后 profile 无 link: 残留(此前仅撤 patch+bundles,link 残留) + const manifest = JSON.parse(readFileSync(join(iso.profile, 'package.json'), 'utf8')) + expect(manifest.dependencies?.['pkg-ok']).toBeUndefined() + expect(existsSync(join(iso.profile, 'node_modules', 'pkg-ok'))).toBe(false) + }) }) From 7910eeb71893c1c8ba54b8a0cd430405110614e1 Mon Sep 17 00:00:00 2001 From: YisfL <128236527+YisfL@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:10:36 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix(vendor+crosslang):=20patch-editor=20?= =?UTF-8?q?=E5=8E=9F=E5=AD=90=E5=86=99=E6=94=B6=E6=95=9B=20+=20C#=20Releas?= =?UTF-8?q?ePatchLock=20=E6=8B=92=E7=BB=9D=E9=87=8A=E6=94=BE=E4=BB=96?= =?UTF-8?q?=E4=BA=BA=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vendor patch-editor:writeFileAtomic 收敛 shared(O_EXCL + 随机 tmp + rename); 锁 refresh 句柄传递。 - C# ReleasePatchLock(m7):移除 finally 中无条件 File.Delete,token pid 不匹配时仅关闭自身 fd、绝不删除锁文件,与 JS releaseLock 语义一致。 - 契约测试 PatchContractTests 实机编译运行 69/69(含新增 m7 断言)。 --- release/src/PatchContract.cs | 17 ++++++++---- release/tests/PatchContractTests.cs | 12 ++++++++ vendor/dseam-skillmcp/lib/patch-editor.js | 34 ++++++++++------------- 3 files changed, 37 insertions(+), 26 deletions(-) diff --git a/release/src/PatchContract.cs b/release/src/PatchContract.cs index 23ac13f..1359f4a 100644 --- a/release/src/PatchContract.cs +++ b/release/src/PatchContract.cs @@ -184,12 +184,17 @@ public static string ReadTokenText(string lockPath) } } - /// 释放补丁锁(校验 token pid == 自己)。 + /// 释放补丁锁(校验 token pid == 自己;仅当拥有该锁时才删除锁文件)。 + /// m7(安全审计):此前把 File.Delete 放在 finally 里,导致"拒绝释放他人锁" + /// 的 return 分支仍会执行删除——进程 A 的陈旧锁被 B 接管后,A 若再调用本方法 + /// 会误删 B 的有效锁,破坏跨进程互斥。现改为:token pid 不匹配时仅关闭自己 + /// 的 fd,绝不删除锁文件(与 JS releaseLock 的"不匹配即拒绝 unlink"一致)。 public static void ReleasePatchLock(FileStream handle, string profileDir) { + string lockPath = PatchLockPath(profileDir); + bool refuse = false; try { - string lockPath = PatchLockPath(profileDir); if (File.Exists(lockPath)) { string token = ReadTokenText(lockPath); @@ -198,15 +203,15 @@ public static void ReleasePatchLock(FileStream handle, string profileDir) { int pid; if (int.TryParse(parts[0].Trim(), out pid) && pid != Process.GetCurrentProcess().Id) - return; // token pid 不匹配:拒绝释放他人锁 + refuse = true; // token pid 不匹配:拒绝释放他人锁 } } } catch { /* 读取失败按可释放处理 */ } - finally + try { if (handle != null) handle.Close(); } catch { } + if (!refuse) { - try { if (handle != null) handle.Close(); } catch { } - try { File.Delete(PatchLockPath(profileDir)); } catch { } + try { File.Delete(lockPath); } catch { } } } diff --git a/release/tests/PatchContractTests.cs b/release/tests/PatchContractTests.cs index 7703189..ca3e64f 100644 --- a/release/tests/PatchContractTests.cs +++ b/release/tests/PatchContractTests.cs @@ -161,6 +161,18 @@ public static int Run() Check(heldBlocked, "v1 目录锁(存活持有者)不迁移,等待至超时"); Directory.Delete(v1Dir, true); + // m7(安全审计):ReleasePatchLock 不得删除他人锁(token pid != 自己) + // 此前 finally 无条件 File.Delete,跨进程互斥可被误删打破 + Console.WriteLine("-- ⑥ ReleasePatchLock 拒绝释放他人锁(m7) --"); + string foreignDir = TmpDir("pc-release-foreign-"); + Directory.CreateDirectory(foreignDir); + File.WriteAllText(Path.Combine(foreignDir, ".dsh-patch.lock"), + (Process.GetCurrentProcess().Id + 1) + "\n" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + "\n"); + PatchContract.ReleasePatchLock(null, foreignDir); + Check(File.Exists(Path.Combine(foreignDir, ".dsh-patch.lock")), + "ReleasePatchLock 拒绝释放他人锁(token pid != 自己 → 锁文件保留)"); + Directory.Delete(foreignDir, true); + // m6(安全审计):AssertShellSafeArg 字符集与 JS assertShellSafe 对齐 Console.WriteLine("-- ⑤ 参数安全字符集(m6:≡ JS assertShellSafe) --"); Check(SafeArg("my-tag_1", "tag"), "接受 my-tag_1"); diff --git a/vendor/dseam-skillmcp/lib/patch-editor.js b/vendor/dseam-skillmcp/lib/patch-editor.js index e5db560..744d8c4 100644 --- a/vendor/dseam-skillmcp/lib/patch-editor.js +++ b/vendor/dseam-skillmcp/lib/patch-editor.js @@ -8,11 +8,11 @@ * `/.dsh-patch.lock`(与 launcher/hotplug/C# 同一把锁); * - 标记之外的内容逐字节保留,永不整文件覆盖。 */ -import { readFile, rename, rm, writeFile } from "node:fs/promises"; +import { readFile } from "node:fs/promises"; import { existsSync, openSync, writeFileSync, readFileSync, renameSync, unlinkSync, mkdirSync, statSync, lstatSync, readdirSync, closeSync, fsyncSync, copyFileSync, rmSync } from "node:fs"; import { dirname, join } from "node:path"; import { parseDocument, stringify } from "yaml"; -import { findPatchBlock, patchMarker, acquireLock, releaseLock } from "../vendor-shared/index.mjs"; +import { findPatchBlock, patchMarker, acquireLock, releaseLock, writeFileAtomic as sharedWriteFileAtomic } from "../vendor-shared/index.mjs"; export const PANEL_MCP_BLOCK_BEGIN = "# >>> dseam-skillmcp:mcp:begin"; export const PANEL_MCP_BLOCK_END = "# <<< dseam-skillmcp:mcp:end"; /** 契约单行 marker(CONTRACT.md §4;owner=dseam-skillmcp, id=mcp)。 */ @@ -190,24 +190,16 @@ const nodeFsPort = { readFileSync, writeFileSync, existsSync, mkdirSync, statSync, lstatSync, openSync, closeSync, fsyncSync, renameSync, unlinkSync, rmSync, readdirSync, copyFileSync, }; -/** 同目录临时文件 + rename 原子写;Windows 上 rename 覆盖失败时退化为 rm+rename。 */ +/** + * 原子写(审计修复:收敛到 vendor-shared 单一真源 writeFileAtomic)。 + * 此前本地重实现一份:用 Math.random() 生成可预测临时名、无 O_EXCL 独占创建 + * (缺 A2 防符号链接预置劫持)、且与共享实现分叉维护。现以共享实现为唯一实现, + * 仅保留本模块的 async 签名(node:fs 直连端口 nodeFsPort 由下方提供)。 + */ export async function writeFileAtomic(path, content) { - const temp = join(dirname(path), ".dseam-skillmcp-tmp-" + process.pid + "-" + Math.random().toString(36).slice(2, 8)); - try { - await writeFile(temp, content, "utf8"); - try { - await rename(temp, path); - } - catch (error) { - if (error === null || typeof error !== "object" || !["EPERM", "EEXIST", "EACCES"].includes(error.code ?? "")) - throw error; - await rm(path, { force: true }); - await rename(temp, path); - } - } - finally { - await rm(temp, { force: true }).catch(() => { }); - } + const w = sharedWriteFileAtomic(nodeFsPort, path, content, { errorCode: "ERR_INSTALL_FAILED" }); + if (!w.ok) + throw w.error; } /** * 以共享文件锁 `/.dsh-patch.lock` 执行 fn(CONTRACT.md §5 四写者协议; @@ -222,7 +214,9 @@ export async function withPatchLock(path, fn) { return await fn(); } finally { - releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd }); + // 审计修复:必须传入 refresh 句柄——锁心跳(Worker 线程)否则在释放后泄漏, + // 持续对已删除/已关闭的锁文件写 token(与 launcher pipeline/index 同款修复)。 + releaseLock(nodeFsPort, lockPath, { pid: process.pid, fd: a.fd, refresh: a.refresh }); } } /** From ff3db0495745688e740ece811fd0544adac5ccf4 Mon Sep 17 00:00:00 2001 From: YisfL <128236527+YisfL@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:10:48 +0800 Subject: [PATCH 5/6] =?UTF-8?q?chore(release):=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E7=BB=9F=E4=B8=80=201.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README.md:徽章、当前版本表、发布链接、各平台安装包文件名 v1.0.0 → v1.0.1(中英两段)。 - 重建 DSH-Hotplug-Hub-Setup.exe(内嵌 v1.0.1)。 - 甄别保留:第三方插件 dseam-skillmcp 0.8.1-pre、子包独立版本 (shared-core 0.1.0 / launcher 0.3.0 / memory-hub 0.8.0-pre)、 示例数据、测试夹具、.NET assembly version 均不改动。 --- README.md | 58 +++++++++++++++--------------- release/DSH-Hotplug-Hub-Setup.exe | Bin 1362432 -> 1445376 bytes 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 2b8e354..31081b7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ > 面向 AI 编程协作者:开始任何工作前,请先阅读本目录的 `AI_AGENTS.md`,并遵循其中的同步/检查/上报流程。

- version + version platform license stack @@ -27,14 +27,14 @@ A hot-plug package manager for [DeepSeek Harness (dsh)](https://github.com/deeps | | | |---|---| -| **Release** | **v1.0.0** | -| Releases page | | -| Windows installer | `DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe` | -| Windows portable | `DSH-Hotplug-Hub-win-x64-portable-v1.0.0.zip` | -| Linux installer | `DSH-Hotplug-Hub-linux-x64-setup-v1.0.0.sh` | -| Linux portable | `DSH-Hotplug-Hub-linux-x64-portable-v1.0.0.tar.gz` | -| macOS installer | `DSH-Hotplug-Hub-macos-x64-setup-v1.0.0.command` | -| macOS portable | `DSH-Hotplug-Hub-macos-x64-portable-v1.0.0.zip` | +| **Release** | **v1.0.1** | +| Releases page | | +| Windows installer | `DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe` | +| Windows portable | `DSH-Hotplug-Hub-win-x64-portable-v1.0.1.zip` | +| Linux installer | `DSH-Hotplug-Hub-linux-x64-setup-v1.0.1.sh` | +| Linux portable | `DSH-Hotplug-Hub-linux-x64-portable-v1.0.1.tar.gz` | +| macOS installer | `DSH-Hotplug-Hub-macos-x64-setup-v1.0.1.command` | +| macOS portable | `DSH-Hotplug-Hub-macos-x64-portable-v1.0.1.zip` | ## Key Features @@ -61,22 +61,22 @@ A hot-plug package manager for [DeepSeek Harness (dsh)](https://github.com/deeps ### Option 1 — Installer (recommended) -1. Download `DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe` from the Releases page. +1. Download `DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe` from the Releases page. 2. Double-click and choose an install location (default `%LOCALAPPDATA%\Programs\DseamWorld`). 3. The installer auto-creates desktop / start-menu shortcuts and launches when finished. Silent install: ```powershell -DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe --silent -DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe --silent --dir "D:\MyApps\DseamWorld" +DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe --silent +DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe --silent --dir "D:\MyApps\DseamWorld" ``` ### Option 2 — Portable -- **Windows**: unzip `DSH-Hotplug-Hub-win-x64-portable-v1.0.0.zip`, then double-click `DSH-Hotplug-Hub.exe` (WebView2 runtime DLLs are included in the same directory). -- **Linux**: `tar -xzf DSH-Hotplug-Hub-linux-x64-portable-v1.0.0.tar.gz`, then run `./dsh-hotplug-hub`. -- **macOS**: unzip `DSH-Hotplug-Hub-macos-x64-portable-v1.0.0.zip`, then double-click `Start-DSH-Hotplug-Hub.command`. +- **Windows**: unzip `DSH-Hotplug-Hub-win-x64-portable-v1.0.1.zip`, then double-click `DSH-Hotplug-Hub.exe` (WebView2 runtime DLLs are included in the same directory). +- **Linux**: `tar -xzf DSH-Hotplug-Hub-linux-x64-portable-v1.0.1.tar.gz`, then run `./dsh-hotplug-hub`. +- **macOS**: unzip `DSH-Hotplug-Hub-macos-x64-portable-v1.0.1.zip`, then double-click `Start-DSH-Hotplug-Hub.command`. ### Option 3 — From source @@ -169,14 +169,14 @@ Full change history: [`开发文档/开发历史.md`](开发文档/开发历史. | | | |---|---| -| **正式版** | **v1.0.0** | -| 发布页 | | -| Windows 安装版 | `DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe` | -| Windows 便携版 | `DSH-Hotplug-Hub-win-x64-portable-v1.0.0.zip` | -| Linux 安装版 | `DSH-Hotplug-Hub-linux-x64-setup-v1.0.0.sh` | -| Linux 便携版 | `DSH-Hotplug-Hub-linux-x64-portable-v1.0.0.tar.gz` | -| macOS 安装版 | `DSH-Hotplug-Hub-macos-x64-setup-v1.0.0.command` | -| macOS 便携版 | `DSH-Hotplug-Hub-macos-x64-portable-v1.0.0.zip` | +| **正式版** | **v1.0.1** | +| 发布页 | | +| Windows 安装版 | `DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe` | +| Windows 便携版 | `DSH-Hotplug-Hub-win-x64-portable-v1.0.1.zip` | +| Linux 安装版 | `DSH-Hotplug-Hub-linux-x64-setup-v1.0.1.sh` | +| Linux 便携版 | `DSH-Hotplug-Hub-linux-x64-portable-v1.0.1.tar.gz` | +| macOS 安装版 | `DSH-Hotplug-Hub-macos-x64-setup-v1.0.1.command` | +| macOS 便携版 | `DSH-Hotplug-Hub-macos-x64-portable-v1.0.1.zip` | ## 主要功能 @@ -203,22 +203,22 @@ Full change history: [`开发文档/开发历史.md`](开发文档/开发历史. ### 方式一:安装包(推荐) -1. 在 Release 页面下载 `DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe`。 +1. 在 Release 页面下载 `DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe`。 2. 双击运行,选择安装位置(默认 `%LOCALAPPDATA%\Programs\DseamWorld`)。 3. 安装包自动创建桌面 / 开始菜单快捷方式,完成后直接启动。 静默安装: ```powershell -DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe --silent -DSH-Hotplug-Hub-win-x64-setup-v1.0.0.exe --silent --dir "D:\MyApps\DseamWorld" +DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe --silent +DSH-Hotplug-Hub-win-x64-setup-v1.0.1.exe --silent --dir "D:\MyApps\DseamWorld" ``` ### 方式二:便携版 -- **Windows**:解压 `DSH-Hotplug-Hub-win-x64-portable-v1.0.0.zip`,双击 `DSH-Hotplug-Hub.exe`(WebView2 运行时 DLL 已内置同目录)。 -- **Linux**:`tar -xzf DSH-Hotplug-Hub-linux-x64-portable-v1.0.0.tar.gz`,运行 `./dsh-hotplug-hub`。 -- **macOS**:解压 `DSH-Hotplug-Hub-macos-x64-portable-v1.0.0.zip`,双击 `Start-DSH-Hotplug-Hub.command`。 +- **Windows**:解压 `DSH-Hotplug-Hub-win-x64-portable-v1.0.1.zip`,双击 `DSH-Hotplug-Hub.exe`(WebView2 运行时 DLL 已内置同目录)。 +- **Linux**:`tar -xzf DSH-Hotplug-Hub-linux-x64-portable-v1.0.1.tar.gz`,运行 `./dsh-hotplug-hub`。 +- **macOS**:解压 `DSH-Hotplug-Hub-macos-x64-portable-v1.0.1.zip`,双击 `Start-DSH-Hotplug-Hub.command`。 ### 方式三:源码安装 diff --git a/release/DSH-Hotplug-Hub-Setup.exe b/release/DSH-Hotplug-Hub-Setup.exe index 32599cace1f18c7348a505015eb5f9c3ff089954..652f842a79539232eafcea0eefc219e58b40a7fe 100644 GIT binary patch delta 254263 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НM*zuVi6 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

h^28$4F&u2w_ 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

Qh-MUjv1piFhysORyZW~SL2 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 THhMNr7!%MMD?s6PU*P`>(X-u3 delta 191357 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%0A-fwg$o3io!`a565hzZ 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 From 5970468046448dca21ff548288a81646988a52ab Mon Sep 17 00:00:00 2001 From: YisfL <128236527+YisfL@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:16:45 +0800 Subject: [PATCH 6/6] =?UTF-8?q?chore(release):=20=E9=87=8D=E6=89=93?= =?UTF-8?q?=E5=8C=85=E5=86=85=E5=B5=8C=20dseam-skillmcp=20tgz=20=E4=BB=A5?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=20vendor=20=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vendor/dseam-skillmcp 源码改动(patch-editor.js 原子写收敛、vendor-shared 同步 lock-heartbeat.js 等)后,release/embedded 下的内嵌 tgz 未同步, 导致 CI「embedded tgz 与 vendor 源码逐字节一致(R-v5-15)」失败。 经 scripts/repack-dseam-tgz.mjs 重打包,check-embedded-tgz.mjs 本地校验 45 文件一致。 --- release/embedded/dseam-skillmcp-0.8.1-pre.tgz | Bin 139657 -> 142591 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/release/embedded/dseam-skillmcp-0.8.1-pre.tgz b/release/embedded/dseam-skillmcp-0.8.1-pre.tgz index d9eba74236e75da699da25ef842d11c7b243cfee..4ec7276f846b70f84f7eb8adc22056f5792c9900 100644 GIT binary patch delta 95214 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ϏfB*1Y!ja4v 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 delta 92234 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 Vf6xD(|NUS8`+s9j3}67f2moH{XbJ!T