Repository navigation
v0.2.0 — read-only HTTP snapshot endpoint
本版新增:只读 HTTP 快照端点
供 Web GUI 面板读取当前会话的任务栈:
GET /api/dsh-task-stack/snapshot?sessionId=<id>&cwd=<绝对路径>
返回 depth / top / stack / history / warnings。
| 情况 | 响应 |
|---|---|
| 正常 | 200 + JSON,cache-control: no-store |
| 未认证(无浏览器 cookie)/ Host 不受信 | 401 / 403 |
组合里没有 connection 服务(无法鉴权) |
503,失败关闭 |
缺 sessionId、cwd 非绝对路径 |
400 |
非 GET/HEAD |
405 + Allow |
| 会话没有状态文件 | 200,空栈(不是 404) |
安全
raw WebServer 路由不继承 Connection 的鉴权,因此端点自行调用 connection.requestRejection(req)——与第一方 API 同一道 Host/Origin + 浏览器 cookie 校验。组合里没有 connection 时失败关闭返回 503,而不是无鉴权放行。
只读
端点只暴露 getSnapshot;关闭任务仍走 focus_complete 或 /focus。写入面需要单独的安全设计,不在本版范围内。
破坏性变更
无。三个工具、/focus 命令、配置字段、状态文件格式都没有变化,从 0.1.x 升级不影响现有任务栈数据。
验证
- 发布闸门 11 步全绿,共 80 项断言
- 新增
scripts/test-http.mjs:挂载真实@deepseek-ai/dsh-host-webserver到 OS 分配的端口,用真实 socket 驱动,覆盖 fence 双向、缺 connection 返回 503、卸载时撤销路由 - 真实宿主实测:带浏览器 cookie →
200且与磁盘状态逐项一致;匿名 →401;被拒 Host →403
安装
dsh plugin --profile <名称> add @ray1270/dsh-task-stack注:npm 上的 0.2.0 是这个 tag 指向的内容(shasum 130e8109a3259781ba8a5213697f661790ba012f,17 个文件)。