dsh-recall-plugin 2.3.11 → 2.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  本文件格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循语义化版本。
4
4
 
5
+ ## [2.3.12] - 2026-09-11
6
+
7
+ ### 修复
8
+
9
+ - **DSH Desktop(0.1.5-rc.2)安装插件被 `validateDesktopPluginGraph` 拒绝**:桌面端 profile 固定 `autoInstallPeers: false`,安装时逐个解析 `package.json` 的 peerDependencies 并要求实体包存在于 profile 的 node_modules。插件声明的 `@deepseek-ai/dsh-client-web-react` 是 dsh 0.1.0 时代的历史包(npm 最高 0.1.0-rc.7),官方 0.1.1+ 已不再发布、0.1.5-rc.2 的宿主共享包中不存在,故报 `requires missing @deepseek-ai/dsh-client-web-react`。该声明早已无运行时意义:`lib/client.js` 唯一的模块请求是 `require("react")`,React 由宿主平台基线模块表提供。修复三处:① 删除该历史 peer;② 保留 `react` peer 但补 `peerDependenciesMeta.react.optional`——桌面端 profile 顶层无 `react`,不标 optional 会在下一轮校验继续报 missing;③ 删除过时的 `dsh.client.inject`(新机制下是包名依赖边,指向已不存在的包会被宿主静默跳过;`dsh.client.platform: "web"` 保留,宿主据此识别 client 半侧的运行平台)。其余 8 个 peer 及其范围不变。`dsh.compatibility.dshReleases` 补 `0.1.5-rc.2`,README 双语安装兼容声明同步。插件功能与运行时零变化,`lib/` 产物结构与 2.3.11 相同。
10
+
5
11
  ## [2.3.11] - 2026-09-11
6
12
 
7
13
  ### 变更
package/README.en.md CHANGED
@@ -11,21 +11,31 @@
11
11
  ![DSH](https://img.shields.io/badge/DSH-0.1.1--rc.1-blue)
12
12
  ![DSH](https://img.shields.io/badge/DSH-Desktop-blue)
13
13
  ---
14
- **Under any message you've sent**, **click "↶ Recall"**, **and both your workspace files and the conversation history roll back to the moment right before that message was sent** (DSH 0.1.1-rc.2).
14
+ Under any message you've sent, click "↶ Recall" **both your workspace files and the conversation history roll back to the moment right before that message was sent** (DSH 0.1.1-rc.2).
15
15
  ---
16
16
 
17
+ Files and conversation roll back together: the workspace is first snapshotted into an independent shadow git repository, and a recall uses it to restore files to their state before that message; the conversation is rewound through DSH's official `sessions.fork` to the turn boundary before it. Snapshots never touch your project's own git and live under `$DSH_HOME` by default; the original session is archived and can be recovered anytime. The main boundary: snapshots are created only **when a message is sent** — messages from before the plugin was enabled have no snapshot and show no recall button.
18
+
17
19
  [Changelog](CHANGELOG.md)
18
20
 
19
- ## UI Preview
21
+ ## Table of Contents
20
22
 
21
- - Recall button location
23
+ - [UI Preview](#ui-preview)
24
+ - [Highlights](#highlights)
25
+ - [Known Limitations](#known-limitations)
26
+ - [Installation](#installation)
27
+ - [Usage](#usage)
28
+ - [Configuration](#configuration)
29
+ - [Snapshot Maintenance & Cleanup](#snapshot-maintenance--cleanup)
30
+ - [How It Works](#how-it-works)
31
+ - [Local Development (without publishing)](#local-development-without-publishing)
32
+ - [License](#license)
22
33
 
23
- ![Recall button appears on hover](docs/screenshots/recall-button.png)
34
+ ## UI Preview
24
35
 
25
- ---
26
- | Confirmation panel · file change list | Confirmation panel · rollback scope |
36
+ | Recall button | Confirmation panel · file change list |
27
37
  | --- | --- |
28
- | ![Confirmation panel · file change list](docs/screenshots/confirm-panel-1.png) | ![Confirmation panel · rollback scope](docs/screenshots/confirm-panel-2.png) |
38
+ | ![Recall button appears on hover](docs/screenshots/recall-button.png) | ![Confirmation panel · file change list](docs/screenshots/confirm-panel-1.png) |
29
39
 
30
40
  - After a recall, the message text is auto-refilled into the input box for quick editing and resending (can be disabled in the settings card)
31
41
  - Settings · plugin config card (config form / exclusions / snapshot manager, saved changes apply live)
@@ -34,23 +44,19 @@
34
44
 
35
45
  ## Highlights
36
46
 
37
- - **Files + conversation, rolled back together**: recalling isn't just about chat history — files the agent modified go back to their original state too.
38
- - **Never touches your project's own git**: snapshots live in an independent shadow git repository; your branches, staging area, and uncommitted changes are untouched. `.git` and `node_modules` are excluded automatically.
39
- - **Keeps your project directory clean**: snapshots always live under `$DSH_HOME`, nothing is ever dropped into your project regardless of the session's sandbox permission (workspace-write / read-only sessions snapshot and recall as usual). Only when home itself is unwritable (e.g. pointed at a read-only drive) does it fall back to an in-project `.dsh-recall-snapshots` directory (the page shows a notice when degraded); once home is writable again, data migrates back and the fallback directory is cleaned up.
40
- - **Byte-level fidelity** (2.1.1+): snapshots and recalls are immune to your project's `.gitattributes` EOL conversion LF/CRLF line endings, `$Id$` keywords, and binary content round-trip byte-for-byte (the shadow repository pins `info/attributes` to disable all attribute-driven conversion).
41
- - **Change your mind as many times as you like**: after one recall you can recall again to an even earlier point; files overwritten during a recall always remain recoverable. Up to 500 snapshots per workspace are kept by default (oldest pruned beyond the cap — adjustable or disableable); once a session is permanently deleted, its snapshots are cleaned up accordingly.
42
- - **See the list before you act**: clicking recall first shows the list of files that will change (modified / restored / deleted); nothing is overwritten until you confirm.
43
- - **Busy-agent guard** (2.0+): preview and recall are refused while an agent is running in the target workspace, so files can't change under you mid-confirmation; if a new snapshot has appeared since the preview, execution forces a fresh preview (staleness check).
44
- - **Auto-rescue on rollback failure** (2.1+): a "pre-rollback" safety snapshot is taken before every recall; if the rollback fails midway, the workspace is automatically restored to its pre-rollback state and if the rescue itself fails, you get a copy-paste-ready manual recovery command. No path ever leaves a half-rolled-back workspace behind.
45
- - **Disk-friendly**: snapshots use git delta compression — incremental, not full-directory copies. Files larger than 100MB are skipped automatically (the threshold is configurable in the settings card).
46
- - **Automatic housekeeping**: periodic `git gc` packs loose objects (lossless — not a single snapshot is lost); snapshots of deleted sessions are cleaned up automatically; optional cleanup by snapshot cap and by retention age (both configurable); build artifacts can be excluded globally via `exclude.txt` (see below).
47
- - **Failures speak up**: snapshot failures are classified by root cause (git missing / disk full / permission denied / lock conflict / directory conflict) with actionable guidance, surfaced as a toast at the top of the page (the same fault only bothers you once per 10 minutes, adjacent repeats merged with a count) — nothing fails silently; the failure reason lands in the "Recent errors" section of the settings card.
48
- - **Self-healing on failure**: after a snapshot fails, leftover objects are pruned automatically; 3 consecutive failures trigger an exponential-backoff circuit breaker (auto-retry after the cooldown); the failure path also sweeps stray git processes and stale locks — concurrent instances yield to each other via heartbeats instead of wedging each other (2.1+), and the disk never bloats from failed retries.
49
- - **Unindexable paths are skipped, not fatal**: embedded git repositories, unreadable files, and other paths that can't be indexed no longer fail the whole snapshot — the snapshot is still taken, and skipped paths are reported via toast (on recall they are neither restored nor deleted, same semantics as exclusions).
50
- - **Tree-view snapshot manager**: the "Snapshot Manager" on the settings page shows a **workspace → session → snapshot** three-level tree with expand/collapse and search support; sessions produced by recalls are grouped into "version families" (v1/v2/v3) along the fork chain. Each level has a delete button on its right, so you can clear all snapshots of a workspace or a session at once. Leaves show a summary of the message content the snapshot corresponds to, making it easy to locate "what this message changed back then".
47
+ Abilities with a version in parentheses require that version or later; the rest have no special version requirement.
48
+
49
+ - **Files + conversation, rolled back together**: recalling isn't just about chat historyfiles the agent modified go back to their original state too; immune to your project's `.gitattributes` conversion, with byte-level fidelity for line endings and binary content (2.1.1+).
50
+ - **Never touches your project's own git, and keeps it clean**: snapshots live in an independent shadow git repository branches, staging area, and uncommitted changes are untouched; storage stays under `$DSH_HOME` regardless of the session's sandbox permission (workspace-write / read-only sessions work as usual), falling back to an in-project `.dsh-recall-snapshots` only when home itself is unwritable.
51
+ - **See the list before you act — and change your mind as often as you like**: recall first shows the list of files that will change (modified / restored / deleted); nothing runs until you confirm. After a recall you can recall again to an even earlier point, and files overwritten during a recall always remain recoverable (up to 500 snapshots per workspace by default).
52
+ - **A guarded recall path** (2.0+; auto-rescue 2.1+): recall is refused while an agent is running, and a new snapshot after the preview forces a fresh preview; a "pre-rollback" safety snapshot is taken before every recall, a failed rollback is rescued automatically, and a failed rescue gives you a copy-paste-ready manual recovery command.
53
+ - **Disk-friendly, self-maintaining**: snapshots use git delta compression and large files are skipped automatically (threshold configurable); periodic lossless `git gc`, session-deletion cleanup, and optional cleanup by cap or retention age — plus a **workspace → session → snapshot** tree manager on the settings page with search and per-level deletion.
54
+ - **Failures speak up and heal** (self-healing 2.1+): failures are classified by root cause (git missing / disk full / permission denied / lock conflict / directory conflict) with actionable guidance (the same fault only bothers you once per 10 minutes; reasons land in the settings card's "Recent errors"); leftover objects are pruned, 3 consecutive failures trigger exponential backoff, concurrent instances yield via heartbeats, and unindexable paths are skipped with a notice instead of failing the whole snapshot (they are neither restored nor deleted on recall).
51
55
 
52
56
  ## Known Limitations
53
57
 
58
+ Boundaries accepted by design and edge cases not yet covered — worth checking before you rely on them.
59
+
54
60
  - Snapshots are created **when a message is sent**; messages from before the plugin was enabled have no snapshot and show no recall button.
55
61
  - The first user message of a session cannot roll back the conversation (files only), because fork requires an earlier turn boundary.
56
62
  - Recall cannot be initiated while an agent is running in the target workspace (by design — stop the agent first).
@@ -61,7 +67,7 @@
61
67
 
62
68
  ## Installation
63
69
 
64
- Prerequisites: git CLI (without it the recall button won't appear and a notice shows at the top of the page — DSH itself keeps running); PowerShell 5.1 / 7 on Windows, bash + git on Linux/macOS; DSH `0.1.1-rc.2` through `0.1.5-rc.1` (peerDependencies open a window per minor line: `>=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6`, consistent with the `dsh.compatibility.dshReleases` declaration; each line is anchored at its first verified version with an exclusive upper bound at the next minor, so later prereleases/releases within a verified line are admitted without touching the peer declaration, while unverified new minor lines (e.g. 0.1.6) remain blocked).
70
+ Prerequisites: git CLI (without it the recall button won't appear and a notice shows at the top of the page — DSH itself keeps running); PowerShell 5.1 / 7 on Windows, bash + git on Linux/macOS; DSH `0.1.1-rc.2` through `0.1.5-rc.2` (peerDependencies open a window per minor line: `>=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6`, consistent with the `dsh.compatibility.dshReleases` declaration; each line is anchored at its first verified version with an exclusive upper bound at the next minor, so later prereleases/releases within a verified line are admitted without touching the peer declaration, while unverified new minor lines (e.g. 0.1.6) remain blocked).
65
71
 
66
72
  - Official DSH plugin command: install and auto-mount into the web profile
67
73
  ```powershell
@@ -83,6 +89,8 @@ pm2 restart <your-dsh-name> # if managed by pm2
83
89
 
84
90
  ## Usage
85
91
 
92
+ A full recall of one user message sent after the plugin was enabled goes like this.
93
+
86
94
  1. Hover over any user message sent **after the plugin was enabled** (including steering messages inserted while the agent is running) — "↶ Recall" appears to the left of the copy button.
87
95
  2. Click it → the confirmation panel shows the list of files that will change (modified / restored / deleted).
88
96
  3. Click "Confirm rollback" → files are restored to their state before that message was sent; the view switches to a new session (that message and everything after it is removed), while the original session is archived and can be recovered anytime.
package/README.md CHANGED
@@ -8,11 +8,26 @@
8
8
  [![DSH](https://img.shields.io/badge/DSH-0.1.2--rc.1-blue)](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-rc.1)
9
9
  [![DSH](https://img.shields.io/badge/DSH-0.1.3--alpha.1-red)](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.1)
10
10
  ---
11
- **在任意一条你发过的消息下方**,**点「↶ 撤回」**,**工作区文件和对话历史一起回到那条消息发出之前的状态**
11
+ 在任意一条你发过的消息下方点「↶ 撤回」——**工作区文件和对话历史一起回到那条消息发出之前的状态**。
12
12
  ---
13
13
 
14
+ 撤回时文件与对话一起回退:工作区先被快照进一个独立的影子 git 仓库,撤回就用它把文件恢复到那条消息发出之前;对话通过 DSH 官方的 `sessions.fork` 切到该消息之前的 turn 边界。快照全程不触碰项目自身的 git,存储默认落在 `$DSH_HOME` 下;原会话归档保留,随时可找回。最主要的边界:快照只在**消息发送时**创建,插件启用前的历史消息没有快照、不显示撤回按钮。
15
+
14
16
  [更新日志](CHANGELOG.md)
15
17
 
18
+ ## 目录
19
+
20
+ - [界面预览](#界面预览)
21
+ - [功能亮点](#功能亮点)
22
+ - [已知限制](#已知限制)
23
+ - [安装](#安装)
24
+ - [使用](#使用)
25
+ - [配置项](#配置项)
26
+ - [快照维护与清理](#快照维护与清理)
27
+ - [工作原理](#工作原理)
28
+ - [本地开发(无需发布)](#本地开发无需发布)
29
+ - [License](#license)
30
+
16
31
  ## 界面预览
17
32
 
18
33
  | 撤回按钮 | 确认面板 · 变更文件清单 |
@@ -26,23 +41,19 @@
26
41
 
27
42
  ## 功能亮点
28
43
 
29
- - **文件 + 对话,整段回退**:撤回的不只是聊天记录,agent 改过的文件也一并回到原样。
30
- - **不碰你项目自己的 git**:快照存在独立的影子 git 仓库里,你的分支、暂存区、未提交改动统统不受影响;`.git`、`node_modules` 自动排除。
31
- - **项目目录保持干净**:快照始终存在 `$DSH_HOME` 下,不会往项目里塞任何东西;与会话的沙箱权限无关(workspace-write / read-only 会话照常快照与回退),仅当 home 本身不可写(如指到只读盘)才降级到项目内 `.dsh-recall-snapshots`(降级时页面会提示),home 恢复后自动迁走、清理干净。
32
- - **字节级保真**(2.1.1+):快照与回退不受项目 `.gitattributes` EOL 转换影响——LF/CRLF 换行、`$Id$`、二进制内容原样往返(影子仓库固化 `info/attributes` 关闭全部属性驱动转换)。
33
- - **可以反复后悔**:撤回一次后还能再撤到更早;撤回时被覆盖的文件也一直找得回来。快照默认每工作区保留 500 条(超限自动清最旧,上限可调或关闭),会话被彻底删除后其快照随之清理。
34
- - **先看清单再动手**:点撤回先弹出将变更的文件清单(修改 / 恢复 / 删除),确认后才执行,不会稀里糊涂覆盖。
35
- - **运行中防护**(2.0+):目标工作区的 agent 正在运行时拒绝预览与撤回,避免确认期间文件又被 agent 改动;预览之后若该消息又有了新快照,执行前强制重新预览(时效校验)。
36
- - **回退失败自动救援**(2.1+):执行撤回前先自动打一份「回退前」安全快照;回退中途失败时自动恢复到回退前状态,救援也失败则给出可直接复制执行的手动恢复命令——任何路径都不留半回退现场。
37
- - **磁盘友好**:快照走 git delta 压缩,是增量不是整目录拷贝;超过 100MB 的大文件自动跳过(阈值可在设置卡片改)。
38
- - **自动瘦身**:定期 `git gc` 把 loose 对象压 pack(无损,快照一个不丢);会话删除后其快照自动清理;支持按条数上限与按保留天数自动清理(可配);构建产物可经 `exclude.txt` 全局排除(见下)。
39
- - **失败了会说话**:快照失败按根因分类(git 缺失 / 磁盘满 / 无权限 / 锁冲突 / 目录冲突)并给出可行动提示,页面顶部 toast(同类故障 10 分钟只打扰一次、相邻重复合并计数),不会无声失效;失败原因进设置卡片「最近错误」。
40
- - **故障自愈**:快照失败后自动清理残骸对象、连续 3 次失败起指数退避熔断(冷却后自动重试);失败路径还会清扫漏网的 git 进程与残留锁——多实例并发时按心跳互让,不会互踩死循环(2.1+),磁盘也不会被失败重试撑爆。
41
- - **个别路径进不去就跳过**:嵌入式 git 仓库、无读权限等无法索引的路径不再让整条快照失败——快照照常落盘,被跳过的路径 toast 告知(撤回时既不恢复也不删它们,与排除表语义一致)。
42
- - **树形快照管理**:设置页「快照管理」按 **工作区 → 会话 → 快照** 三级树形展示,支持展开/折叠与搜索;撤回产生的会话按 fork 链聚成「版本家族」(v1/v2/v3),每级右侧都有删除按钮,可一次清掉整个工作区或某个会话的全部快照,叶子显示该快照对应的消息内容摘要,方便定位“这条消息当时改了什么”。
44
+ 带括号版本号的能力需要该版本或更高;其余无特殊版本要求。
45
+
46
+ - **文件 + 对话,整段回退**:撤回的不只是聊天记录,agent 改过的文件也一并回到原样;不受项目 `.gitattributes` 转换影响,换行与二进制内容字节级保真(2.1.1+)。
47
+ - **不碰你项目自己的 git,目录保持干净**:快照存在独立的影子 git 仓库里,分支、暂存区、未提交改动统统不受影响;存储默认落在 `$DSH_HOME` 下,与会话的沙箱权限无关(workspace-write / read-only 照常工作),仅当 home 不可写才降级到项目内 `.dsh-recall-snapshots`。
48
+ - **先看清单再动手,可反复后悔**:撤回前展示将变更的文件清单(修改 / 恢复 / 删除),确认后才执行;撤回后还能再撤到更早,被覆盖的文件一直找得回来(默认每工作区保留 500 条)。
49
+ - **撤回全程有防护**(2.0+,救援 2.1+):agent 运行中拒绝撤回,预览后出现新快照会强制重新预览;执行前自动打「回退前」安全快照,回退失败自动救援,救援失败给出可直接复制执行的手动恢复命令。
50
+ - **磁盘友好、自动维护**:快照走 git delta 增量压缩,大文件自动跳过(阈值可配);定期无损 `git gc`,会话删除联动清理,可按条数与保留天数自动清理;设置页提供**工作区 → 会话 → 快照**三级树形管理,支持搜索与分级删除。
51
+ - **失败不静默、能自愈**(自愈 2.1+):失败按根因分类(git 缺失 / 磁盘满 / 无权限 / 锁冲突 / 目录冲突)给出可行动提示,同类故障 10 分钟只打扰一次,失败原因进设置卡片「最近错误」;自动清理残骸、连续 3 次失败指数退避、多实例按心跳互让;无法索引的路径跳过并告知,不中断整条快照(撤回时也不触碰它们)。
43
52
 
44
53
  ## 已知限制
45
54
 
55
+ 设计上接受的边界与尚未覆盖的极端情形,使用前值得先确认。
56
+
46
57
  - 快照在**消息发送时**创建,插件启用前的历史消息没有快照,不显示撤回按钮。
47
58
  - 会话第一条用户消息无法回退对话(仅文件回退),因为 fork 需要更早的 turn 边界。
48
59
  - 目标工作区的 agent 正在运行时无法发起撤回(防护设计,先停止 agent 再撤回)。
@@ -53,7 +64,7 @@
53
64
 
54
65
  ## 安装
55
66
 
56
- 前置:git CLI(未装时撤回按钮不出现,页面顶部会提示安装 git,不影响 DSH 运行);Windows 上 PowerShell 5.1 / 7 均可,Linux/macOS 需 bash + git;DSH `0.1.1-rc.2` 至 `0.1.5-rc.1`(peerDependencies 为按 minor 版本线开窗 `>=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6`,与 `dsh.compatibility.dshReleases` 声明一致;每条线以首个核验版本为下限、开一条上界到下一 minor 的区间,同线内后续 prerelease/正式版自动放行、无需改 peer 声明,未验证的新 minor 线(如 0.1.6)仍被拦截)。
67
+ 前置:git CLI(未装时撤回按钮不出现,页面顶部会提示安装 git,不影响 DSH 运行);Windows 上 PowerShell 5.1 / 7 均可,Linux/macOS 需 bash + git;DSH `0.1.1-rc.2` 至 `0.1.5-rc.2`(peerDependencies 为按 minor 版本线开窗 `>=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6`,与 `dsh.compatibility.dshReleases` 声明一致;每条线以首个核验版本为下限、开一条上界到下一 minor 的区间,同线内后续 prerelease/正式版自动放行、无需改 peer 声明,未验证的新 minor 线(如 0.1.6)仍被拦截)。
57
68
 
58
69
 
59
70
  - DSH 官方插件命令:安装并自动挂载进 web profile
@@ -65,13 +76,19 @@ dsh plugin --profile web add dsh-recall-plugin
65
76
  dsh plugin --profile web add github:limbo947/dsh-recall-plugin
66
77
  ```
67
78
 
68
- - 卸载:同时移除依赖与挂载,快照数据保留在 home 下 `dsh-recall-snapshots/`,想彻底清除手动删掉该目录即可。
79
+ - 重启 DSH 进程(按你的启动方式择一)
69
80
  ```powershell
70
- dsh plugin --profile web remove dsh-recall-plugin
81
+ dsh web # 前台运行
82
+ pm2 restart <your-dsh-name> # 由 pm2 托管
71
83
  ```
72
84
 
73
85
  - 验证:重启后硬刷新页面(Ctrl+Shift+R),悬停任意一条插件启用后发送的用户消息——复制按钮旁出现「↶」即生效。没有按钮?九成是没重启 DSH 进程,或 git CLI 不在 PATH 里。
74
86
 
87
+ - 卸载:同时移除依赖与挂载,快照数据保留在 home 下 `dsh-recall-snapshots/`,想彻底清除手动删掉该目录即可。
88
+ ```powershell
89
+ dsh plugin --profile web remove dsh-recall-plugin
90
+ ```
91
+
75
92
 
76
93
 
77
94
  ## 使用
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-recall-plugin",
3
- "version": "2.3.11",
3
+ "version": "2.3.12",
4
4
  "description": "DSH 消息撤回插件:在用户消息气泡旁加「撤回」按钮,把项目文件(独立影子 git 仓库快照)与对话历史(官方 fork)一并回退到该消息发送之前。",
5
5
  "type": "module",
6
6
  "repository": {
@@ -41,10 +41,7 @@
41
41
  "patch": "./cordis.patch.yml"
42
42
  },
43
43
  "client": {
44
- "platform": "web",
45
- "inject": [
46
- "@deepseek-ai/dsh-client-web-react"
47
- ]
44
+ "platform": "web"
48
45
  },
49
46
  "compatibility": {
50
47
  "dshReleases": {
@@ -58,13 +55,13 @@
58
55
  "0.1.3-alpha.2": "compatible",
59
56
  "0.1.5-alpha.1": "compatible",
60
57
  "0.1.5-alpha.2": "compatible",
61
- "0.1.5-rc.1": "compatible"
58
+ "0.1.5-rc.1": "compatible",
59
+ "0.1.5-rc.2": "compatible"
62
60
  }
63
61
  }
64
62
  },
65
63
  "peerDependencies": {
66
64
  "@deepseek-ai/cordis": "^4.0.1",
67
- "@deepseek-ai/dsh-client-web-react": ">=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6",
68
65
  "@deepseek-ai/dsh-host-webserver": ">=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6",
69
66
  "@deepseek-ai/dsh-sandbox-policy": ">=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6",
70
67
  "@deepseek-ai/dsh-session": ">=0.1.1-rc.2 <0.1.2 || >=0.1.2-alpha.1 <0.1.3 || >=0.1.3-alpha.1 <0.1.4 || >=0.1.5-alpha.1 <0.1.6",
@@ -74,6 +71,11 @@
74
71
  "@deepseek-ai/schemastery": "^3.18.1",
75
72
  "react": "^18.2.0"
76
73
  },
74
+ "peerDependenciesMeta": {
75
+ "react": {
76
+ "optional": true
77
+ }
78
+ },
77
79
  "license": "MIT",
78
80
  "devDependencies": {
79
81
  "@types/node": "^20.19.43",