Skip to content

v0.7.6

Choose a tag to compare

@Punchact Punchact released this 06 Nov 12:00
· 8 commits to main since this release
51c5b0f

v0.7.6

从 npm 上现存的 0.5.3 起算,这一版把 0.5.4 → 0.7.6 四个版本一起交付。

变更

0.5.4 · 长调用不再被单次 HTTP 请求的寿命卡死

  • 等待预算按 120 秒切片循环,片长默认 120 s、硬上限 240 s;dsh.discover 回报 maxWaitSliceMs,被钳制时另报 maxWaitSliceMsRequested。
  • 截止不再只靠中止:读流与既有截止赛跑,超时立刻收成本次结果,不等宿主交还控制权。
  • 清理有界:事件流的 return() 最多等 1 秒,答案不依赖清理是否完成。

0.6.0 · 调用方断开时中止,并把非失败结局与错误分开计

  • res.on("close") → 中止本次调用;轮次照旧继续,桥只是不再空等。
  • MCP 的 notifications/cancelled 真的会中止在途调用。
  • /status 新增 calls.outcomes: { timeouts, cancelledByClient };被中止的调用不再计入 errors。

0.7.0–0.7.6 · 无人值守会话撞上审批墙时,桥能回绝,也能把决定交回派发方

  • 三档 approvals.mode:off(默认)/ deny(桥直接回绝升权)/ delegate(派发方 agent 回答)。
  • 两个新方法:dsh.approvals.pending(长轮询 ≤120 s)与 dsh.approvals.resolve。
  • 轮次停在待批时立刻返回 status: "waiting-approval" 与 pendingApproval,而不是把调用方拖到超时。
  • allow-once 只在被批准的那次调用期间放宽预设,调用结束(或下游拒绝、或 5 分钟兜底到期)即恢复;同一会话同一时刻只允许一条待批。
  • 按两轮独立审计收窄:决策包递归脱敏并带 untrusted 标记、所有权只认桥创建的会话、改预设走所有权与模式校验、闸门任何异常都降级放行。

说明

  • approvals.mode 默认仍是 off:不开就与旧版行为一致,升级不会改变任何现有会话的行为。
  • 已知边界(本轮不修):子会话与桥同用户,能读到 ~/.dsh/dsh-rpc/token,因此 delegate 挡不住「拿到 token 的子代理自己批准自己」。默认 off 时不触发;开启前请确保子代理可信。
  • 3 次升权额度与所有权记录仍在内存,宿主重启后清零。

验证

  • 单元/契约:172 例通过(methods 74、mcp-format 19、pending 36、approvals 11、registry 8、wait 6、abort 6/7、client 6、status 6)+ 宿主集成 1 例 + catalogue ok。唯一未通过的是 abort 套件里那条需要 child_process.spawn 的用例,在本机沙箱里报 EPERM,CI 上通过。
  • 打包:31 files, 432.3 KB unpacked, 153.8 KB packed。
  • 真宿主端到端(本机 profile):allow-once、reject、到期、取消、preset 上报五条路径全部跑通;批准后命令确实按新预设执行,拒绝/到期/取消时命令确实未执行。
  • CI:main 的 run 42214271524 双绿(Node 22.x / 24.x)。

安装

dsh plugin add @punchact/dsh-rpc-agent

或在 profile 里 install_bundle("@punchact/dsh-rpc-agent@0.7.6")。MCP 侧接法见 README 的「接进 MCP 客户端」一节。