Skip to content

Releases

v0.3.11 — 冷恢复 preset 挂载失败不再静默投递

Choose a tag to compare

@zsjs110110-cpu zsjs110110-cpu released this 04 Nov 15:16

0.3.11 — 冷恢复 preset 挂载失败不再静默投递

修复 #1:冷恢复时 agent preset 解析/挂载失败曾被静默吞掉,cross_session_send 仍继续投递,最终得到一个只有全局插件工具、却能回消息的轻量 Agent。

变更

  • installPreset 不再返回 undefined 后继续组合;失败会抛出并保留原始错误。
  • presetId 缺失时回退宿主 agentPresets.defaultId;旧版服务没有 defaultId 时由 mount() 使用默认语义。
  • 请求的 preset 失败时尝试宿主默认 preset;默认 preset 也失败或 agentPresets 服务缺失时明确抛错。
  • resumeColdAgent / cross_session_spawn 检查 preset 是否真正挂载;未挂载时释放 handle、返回错误,不投递消息。
  • README 补充冷恢复行为与 0.3.11 版本记录。

验收

  • node --check:lib/index.js、lib/bridge-core.js、lib/state.js、lib/host-fallback.js、verify-preset-mount.mjs 全通过。
  • 本地回归 verify-preset-mount.mjs:8/8 PASS,覆盖缺失 presetId、指定 preset 失败回退默认、默认也失败、服务缺失、旧版无 resolve/defaultId、冷恢复吞异常等路径。
  • npm pack --dry-run / npm pack:0.3.11 包 12 个文件,测试脚本未进包。

对应提交:a1bc570(fix(0.3.11): 冷恢复 preset 挂载失败不再静默投递)。

v0.3.10 — 补齐别名解析(cwd 归一化收口)

Choose a tag to compare

@zsjs110110-cpu zsjs110110-cpu released this 16 Oct 22:47

v0.3.10

补齐 v0.3.9 没修完的那一半:别名解析在 send / reply / read / rename / archive 上仍然失败。

0.3.9 的问题

0.3.9 修掉了"把 { cwd } 当 signal 传给 listSessions(signal?) 导致 TypeError 被静默吞掉"的根因,
但候选集的过滤写成了 normalizeCwd(header.cwd) !== cwd。而 cwd 这个入参有的调用方传归一化值
(cross_session_list / status:normalizeCwd(workspaceOf(...))),有的传裸值
(send / reply / read / rename / archive:直接 workspaceOf(...))。
normalizeCwd 在 Windows 下会 toLowerCase ⇒ 'g:\work' !== 'G:\work' 恒真 ⇒ 候选集仍为空。

实测(重启到 0.3.9 后):status 对列表里 17 个别名全部解析成功,但
read(cs_yybWQl2PyB) 仍报「找不到该别名对应的会话」。

0.3.10 的修法

把归一化收口到 collectSessionIdCandidates 入口:

const root = normalizeCwd(cwd);          // 无论调用方传什么,先归一化
...
if (normalizeCwd(header.cwd ?? '') !== root) continue;   // 两侧都归一化再比

一处收口覆盖全部 8 个调用点。

⚠️ 升级后需要重启宿主才生效。

资产

  • dsh-cross-session-approval.tgz — 无版本号别名,latest/download/ 永久有效
  • dsh-cross-session-approval-0.3.10.tgz — 本版固定名
sha256  9959e29c00cca184751ad24041103fe93546083bb6228776fbc9ec1a57e27752

v0.3.9 — 修复别名解析候选集(列表有别名、发送说没有)

Choose a tag to compare

@zsjs110110-cpu zsjs110110-cpu released this 16 Oct 21:45

⚠️ 此版修复不完整,请直接使用 v0.3.10 及以后。
0.3.9 只修好了 status / list 路径(它们传归一化过的 cwd),
send / reply / read / rename / archive 因为传的是裸 workspaceOf(...),
候选集过滤 normalizeCwd(header.cwd) !== cwd 恒不相等 ⇒ 仍然"找不到该别名"。
详见 v0.3.10 的说明。


v0.3.9

修复:cross_session_list 给出的别名约半数解析不到("列表说有、发消息说没有")。

根因

别名解析的候选集把 { cwd } 当作 signal 传给了宿主的 sessionQuery.listSessions(signal?)。
宿主实现首行是 signal?.throwIfAborted(),在非 signal 对象上抛
TypeError: signal?.throwIfAborted is not a function,又被该处原来的空 catch {} 静默吞掉
⇒ 候选集退化成「仅登记表(workers + leadSessionId)」。
于是列表里凡不是登记 worker / lead 的宿主会话,别名一律解析不到:
send / reply / read / rename / archive 全部受影响,status 还会误报「没有登记的任务会话」。

同一处第二个缺陷:旧代码读 r?.id ?? r?.session_id,而宿主返回 { header, live, persisted },
真实 id 在 record.header.id。

修法

  • 改用宿主唯一支持的 listSessions()(无参),并套用与 cross_session_list 完全相同的过滤:
    排除 parentSession 子会话、按 normalizeCwd(header.cwd) === cwd;
  • 两处互加交叉引用注释,防止再次分叉;
  • 枚举失败不再静默降级,改为 ctx.logger.warn 留痕。

⚠️ 升级后需要重启宿主才生效(link 插件运行的是内存中的旧模块)。

资产

  • dsh-cross-session-approval.tgz — 无版本号别名,latest/download/ 永久有效
  • dsh-cross-session-approval-0.3.9.tgz — 本版固定名
sha256  783db4ffbf33789318f7ba45653f453d0a6d6708a3f5b4d8486f8b788c9d174e

v0.3.8 — dsh-cross-session-approval

Choose a tag to compare

@zsjs110110-cpu zsjs110110-cpu released this 16 Oct 20:41

v0.3.8

改名:包名 / 插件 id 由 dsh-cross-session-2 统一为 dsh-cross-session-approval。

  • SESSION_ALIAS_SALT 改用新包名 ⇒ 旧 cs_ 别名全部作废(重新 cross_session_list 取新别名;真实 session-id / 登记表 / 会话内容不受影响)
  • 消息前缀统一为 [dsh-cross-session-approval]
  • 补 MIT LICENSE;公开前清理(去内部话术、宿主私有行号引用等)

能力:10 个工具(cross_session_spawn / send / reply / status / read / list / broadcast / rename / archive / approve)+ 跨会话审批桥(R1′ 固定所有者、危险删除强制拒绝)+ 子会话权限夹紧(A 发布前三维 / F 派生入口)+ cs_ base62 会话别名(规避显示层 UUID 遮蔽)。

要求:DeepSeek Harness 0.2.x。已知边界与信任模型见 README。

安装

从 GitHub(已提交 lib/ 构建产物,无需构建):

dsh plugin --profile web add github:zsjs110110-cpu/dsh-cross-session-approval

或用本 Release 的预构建 tarball(免 allowBuilds 构建授权):

dsh plugin --profile web add https://github.com/zsjs110110-cpu/dsh-cross-session-approval/releases/latest/download/dsh-cross-session-approval.tgz

资产

  • dsh-cross-session-approval.tgz — 无版本号别名,latest/download/ 永久有效
  • dsh-cross-session-approval-0.3.8.tgz — 本版固定名
sha256  190c2963d760750bdc363994da95581fdf689e69f2eb3ed1f3292e803a26ca87