fix(dsh): session_update 在插件重启后仍能定位活会话(权限热更新不再静默失效)
sessionMap 是纯内存表,插件重启后为空。而 session_update(人在 WebUI 改权限 档位)原来只查这张表 —— 于是「插件刚重启 + 那条会话还没收到新邮件」时, 那条更新被静默忽略:人在界面上把 full 改回 workspace,DSH 运行时仍按 full 执行。 人以为自己收紧了权限,实际上没有。 邮件新建的会话 id 是确定性的(mail-<邮件会话 id>,模型降级重试时带 -r<i>), 所以重启后可以按前缀在活会话里定位,并顺手把 sessionMap/reverseMap 补回去 —— 不补的话这条会话后续的自动转发也会一起失效。 - lib/mail-session-id.js(dsh 专用,9 例测试):id 派生与匹配的纯函数。 放宽成前缀匹配会把 mail-abcdef 误判成 mail-abc 的会话;非数字后缀 (-retry / -rx)也不匹配,避免误改别的会话的档位。 - 接管会话(adopted)仍是例外:其 DSH 会话 id 由平台生成、推不出来, 重启后无法热更新 —— 已知取舍;下次投递会按邮件里的 permission_mode 重设。 - tsconfig 清理:allowJs 原先写在根层(无效位置),移入 compilerOptions 后 会让 lib/*.js 进入 TS 程序并违反 rootDir;这些模块已有 .d.ts 提供类型, 该选项本就不需要,直接移除。 测试:dsh 358(新增 9)/ opencode 316 / pi 405 全绿。
This commit is contained in:
@ -9,8 +9,7 @@
|
||||
"esModuleInterop": true,
|
||||
"declaration": true,
|
||||
"skipLibCheck": true,
|
||||
"types": ["node"],
|
||||
"allowJs": true
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user