dsh-rewind-plugin 0.11.0-alpha.1 → 0.11.0
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/README.en.md +18 -1
- package/README.md +16 -1
- package/docs/compat/audit.md +12 -11
- package/docs/release/release.md +11 -11
- package/docs/release/release.zh.md +7 -7
- package/lib/client.js +1 -1
- package/lib/index.js +4 -7
- package/lib/types/rewind.d.ts +10 -7
- package/package.json +45 -45
package/README.en.md
CHANGED
|
@@ -35,8 +35,11 @@ Every user message carries a **↶ rewind** button in its action row. Clicking i
|
|
|
35
35
|
|
|
36
36
|
## Install
|
|
37
37
|
|
|
38
|
+
Check your local DSH version, then find the matching plugin version in
|
|
39
|
+
[Releases](https://github.com/SiriLee/dsh-rewind/releases).
|
|
40
|
+
|
|
38
41
|
```sh
|
|
39
|
-
dsh plugin --profile web add dsh-rewind-plugin
|
|
42
|
+
dsh plugin --profile web add dsh-rewind-plugin@<version>
|
|
40
43
|
```
|
|
41
44
|
|
|
42
45
|
> ⚠️ The npm name `dsh-rewind` belongs to another author's package — install with `dsh-rewind-plugin`.
|
|
@@ -77,6 +80,20 @@ cleanup** panel (the auto-cleanup switch and the idle-day cutoff), or use the
|
|
|
77
80
|
|
|
78
81
|
<img src="assets/screenshots/cleanup-setting.png" alt="Snapshot cleanup settings: auto-cleanup and idle days" width="600">
|
|
79
82
|
|
|
83
|
+
## Uninstall
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
# Uninstall the plugin
|
|
87
|
+
dsh plugin --profile web remove dsh-rewind-plugin
|
|
88
|
+
|
|
89
|
+
# To also delete local data
|
|
90
|
+
rm -rf <dsh home>/rewind-snapshots
|
|
91
|
+
rm <dsh home>/snapshot-cleanup-last-sweep.json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The plugin's auto-cleanup settings live in the settings document
|
|
95
|
+
(`<dsh home>/settings.yaml`). To remove them completely, delete the key manually.
|
|
96
|
+
|
|
80
97
|
## Why it stands out
|
|
81
98
|
|
|
82
99
|
Compared with the common approaches, here is the trade-off this plugin makes on "rewind":
|
package/README.md
CHANGED
|
@@ -35,8 +35,10 @@ DeepSeek Harness 插件:**一键就地回退对话到任意更早的用户消
|
|
|
35
35
|
|
|
36
36
|
## 安装
|
|
37
37
|
|
|
38
|
+
确认本机 DSH 版本后,在 [Release](https://github.com/SiriLee/dsh-rewind/releases) 找到适配的插件版本。
|
|
39
|
+
|
|
38
40
|
```sh
|
|
39
|
-
dsh plugin --profile web add dsh-rewind-plugin
|
|
41
|
+
dsh plugin --profile web add dsh-rewind-plugin@<版本>
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
> ⚠️ npm 上的 `dsh-rewind` 属于其他作者,请用 `dsh-rewind-plugin` 安装。
|
|
@@ -67,6 +69,19 @@ dsh plugin --profile web add dsh-rewind-plugin
|
|
|
67
69
|
|
|
68
70
|
<img src="assets/screenshots/cleanup-setting.png" alt="快照清理设置:自动清理与失活天数" width="600">
|
|
69
71
|
|
|
72
|
+
## 卸载
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
# 卸载插件
|
|
76
|
+
dsh plugin --profile web remove dsh-rewind-plugin
|
|
77
|
+
|
|
78
|
+
# 如需同时删除本地数据
|
|
79
|
+
rm -rf <dsh home>/rewind-snapshots
|
|
80
|
+
rm <dsh home>/snapshot-cleanup-last-sweep.json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
插件的自动清理设置保存在设置文档(`<dsh home>/settings.yaml`)中。如需彻底清理,可手动删除对应键。
|
|
84
|
+
|
|
70
85
|
## 本插件的优势
|
|
71
86
|
|
|
72
87
|
和常见的几种做法相比,本插件在"回退"这件事上的取舍:
|
package/docs/compat/audit.md
CHANGED
|
@@ -7,27 +7,28 @@
|
|
|
7
7
|
> compatibility invariants. A probe failure is a finding; it enters the
|
|
8
8
|
> fix/pin/record loop.
|
|
9
9
|
>
|
|
10
|
-
> Targeted version: npm `@deepseek-ai/*@0.1.
|
|
10
|
+
> Targeted version: npm `@deepseek-ai/*@0.1.5-rc.1` (the range the peers and `dsh.engines.dsh` declare).
|
|
11
11
|
> Source reference: the upstream [github.com/deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness).
|
|
12
12
|
>
|
|
13
13
|
> Version alignment: `peerDependencies` use one tuple per DSH line
|
|
14
14
|
> (e.g. `^0.1.2-rc.1`). npm's prerelease matching rules require a candidate to
|
|
15
15
|
> share the range comparator's `[major, minor, patch]` tuple, so a new DSH tuple
|
|
16
|
-
> replaces the peer tuple (single-line model)
|
|
17
|
-
>
|
|
16
|
+
> replaces the peer tuple (single-line model). The range is conservative — it
|
|
17
|
+
> declares only what was verified, so a release already inside it changes
|
|
18
|
+
> nothing. Signal: `npm view @deepseek-ai/dsh dist-tags`;
|
|
18
19
|
> flow: `scripts/check-dsh-version.mjs` (it reads the `latest` dist-tag only; a
|
|
19
20
|
> prerelease published under another tag is a manual pre-release check).
|
|
20
21
|
>
|
|
21
|
-
> The plugin targets a single DSH version line
|
|
22
|
-
>
|
|
22
|
+
> The plugin targets a single DSH version line; compatibility with earlier
|
|
23
|
+
> lines is not kept.
|
|
23
24
|
|
|
24
|
-
### Single channel
|
|
25
|
+
### Single channel
|
|
25
26
|
|
|
26
|
-
The plugin targets one DSH channel. Each seam below reads the
|
|
27
|
-
only (no `Session.events` / `[data-time-hover-root]` /
|
|
28
|
-
legacy branch).
|
|
27
|
+
The plugin targets one DSH channel. Each seam below reads the targeted
|
|
28
|
+
version's shape only (no `Session.events` / `[data-time-hover-root]` /
|
|
29
|
+
`<textarea>` / face-`chat` legacy branch).
|
|
29
30
|
|
|
30
|
-
| Seam |
|
|
31
|
+
| Seam | Implementation at the targeted version |
|
|
31
32
|
| --- | --- |
|
|
32
33
|
| Host session log | `session.snapshotEvents()` |
|
|
33
34
|
| Client chat snapshot | `uiConversation` `chat` view (`chatSnapshotOf`) |
|
|
@@ -66,7 +67,7 @@ legacy branch).
|
|
|
66
67
|
- **session-stats / session-telemetry fold the full log**: post-rewind stats do **not** rewind — `turns`/`steps`/`llmMs` still include withdrawn content; the `user/message` marker is folded as a present user turn (it adds no step). This is the intended "fold the full log" semantics, pinned by probe.
|
|
67
68
|
- **token-meter usage anchor stays stable** (G3): the `user/message` marker carries no usage, but because it is not an `assistant/message`, the baseline anchor does not drop to a heuristic estimate — it stays `usage` across a rewind. Pinned by `compat-gaps` G3.
|
|
68
69
|
- **marker content is the constant `(empty message)` placeholder**: never empty, because the session log is immutable but the model serving a session may change later — a strict OpenAI-compatible gateway rejects an empty user message (HTTP 400, Issue #21). The marker is a small visible user turn in derived history. Pin: `verify-host` (`marker is a user/message with the dsh-rewind plugin source and the (empty message) placeholder`).
|
|
69
|
-
- **marker shape (v3)**: the replace `surfaceOp` is `{ op: 'replace', startSeq, endSeq }` (renamed from `start`/`end` in session-format v3)
|
|
70
|
+
- **marker shape (v3)**: the replace `surfaceOp` is `{ op: 'replace', startSeq, endSeq }` (renamed from `start`/`end` in session-format v3); the dsh-rewind source is the plain CLOSED third-party plugin shape `{ kind: 'plugin', plugin: 'dsh-rewind' }` (no private field — the released-format source validator rejects any member outside `kind`/`plugin` + the context-injection `form`/`sections`/`summary`, and a plugin extends the source map by adding a `kind`, not fields); the `user/message` + `sourceEventSeqs` shape and the `(empty message)` content are unchanged.
|
|
70
71
|
- **Withdrawn content stays searchable/exportable**: session-query full-text and `/export` read the raw log; a rewind cuts only the surface, so withdrawn messages remain (declared in the README).
|
|
71
72
|
- **Session title auto-regeneration**: the title derives from the surface, so an automatically-derived title may change after a rewind.
|
|
72
73
|
- **Files written but uncommitted in a cancelled turn**: a `both` rewind cannot restore them (tool side-effect timing; same as Claude Code).
|
package/docs/release/release.md
CHANGED
|
@@ -73,28 +73,28 @@ Each release is `git push <branch>` followed by `git push <branch> --tags`.
|
|
|
73
73
|
|
|
74
74
|
DSH is still in rc; npm's prerelease matching rules require a peer range to
|
|
75
75
|
share the host version's `[major, minor, patch]` tuple. So `peerDependencies`
|
|
76
|
-
uses one peer tuple per DSH line (e.g. `^0.1.2-rc.1`)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
76
|
+
uses one peer tuple per DSH line (e.g. `^0.1.2-rc.1`). The range is
|
|
77
|
+
conservative: it declares only what was verified, and guarantees nothing
|
|
78
|
+
outside it.
|
|
79
|
+
|
|
80
|
+
- **When to update**: when the verified range changes — a new DSH tuple, or a
|
|
81
|
+
deliberate narrowing (e.g. dropping the internal `alpha` series); a release
|
|
82
|
+
already inside the range changes nothing. All `@deepseek-ai/*` packages
|
|
83
|
+
release together; `npm view @deepseek-ai/dsh dist-tags` is the signal.
|
|
83
84
|
- **Published-tuple check (optional)**: `node scripts/check-dsh-version.mjs`
|
|
84
85
|
compares the `latest` dist-tag version against the tuple the peers cover
|
|
85
86
|
(exit 0 = nothing to do, exit 1 = update). It reads the `latest` tag only; a
|
|
86
87
|
pre-release published under another tag or bundled without
|
|
87
88
|
going to npm is a manual pre-release check — see the "Before bumping" step above.
|
|
88
|
-
- **Update steps**:
|
|
89
|
-
|
|
90
|
-
`npm run check` → release.
|
|
89
|
+
- **Update steps**: point every `@deepseek-ai/dsh-*` peer and devDependency at
|
|
90
|
+
the verified range → `npm install` → `npm run check` → release.
|
|
91
91
|
- **After DSH goes final**: final releases are not bound by the prerelease
|
|
92
92
|
tuple rule, so the peers can converge to a single stable range (e.g.
|
|
93
93
|
`^0.1.x`); this section can then be deleted.
|
|
94
94
|
- **Declared minimum (`dsh.engines.dsh`)**: alongside the peer tuple, each
|
|
95
95
|
release declares the DSH runtime floor under `dsh.engines.dsh` (e.g.
|
|
96
96
|
`>=0.1.2-rc.1`), consumed by the plugin-manager update guard. Bump it in
|
|
97
|
-
the same release that
|
|
97
|
+
the same release that changes the peer range; never leave code raised while
|
|
98
98
|
the declared floor stays behind. Only the `>=X.Y.Z[-pre]` form is
|
|
99
99
|
supported (`^`/`~`/multi-range are treated as "cannot verify" and
|
|
100
100
|
fail closed).
|
|
@@ -66,22 +66,22 @@ npm publish --access public
|
|
|
66
66
|
|
|
67
67
|
DSH 仍在 rc 阶段,npm 的 prerelease 匹配规则要求 peer 范围与宿主版本
|
|
68
68
|
**同 `[major, minor, patch]` 元组**才能匹配。因此 peerDependencies 采用
|
|
69
|
-
**每一条 DSH 线一个 peer 元组**(如 `^0.1.2-rc.1
|
|
69
|
+
**每一条 DSH 线一个 peer 元组**(如 `^0.1.2-rc.1`);范围是保守的,只声明实际验证过的内容。
|
|
70
70
|
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
`npm view @deepseek-ai/dsh
|
|
71
|
+
- **何时需要更新**:**已验证范围**变化时——DSH 发新元组,或主动收窄(例如不再
|
|
72
|
+
声明内测的 DSH `alpha` 系列);落在已声明范围内的发布不改变任何东西。DSH 所有包
|
|
73
|
+
同版本发布;信号是 `npm view @deepseek-ai/dsh dist-tags`。
|
|
74
74
|
- **已发布元组检查(可选)**:`node scripts/check-dsh-version.mjs` 用 npm `latest`
|
|
75
75
|
dist-tag 版本对比 peer 覆盖的元组(exit 0 无需动作,exit 1 需要)。它**只读
|
|
76
76
|
`latest` tag**;发布在其它 tag 的 pre-release 走**手动发布前检查**
|
|
77
77
|
——见上文"升版前手动确认"。
|
|
78
|
-
- **更新步骤**:把每个 `@deepseek-ai/dsh-*` peer
|
|
79
|
-
|
|
78
|
+
- **更新步骤**:把每个 `@deepseek-ai/dsh-*` peer 与 devDependency 指向已验证
|
|
79
|
+
范围 → `npm install` → `npm run check` → 发版。
|
|
80
80
|
- **正式版后收敛**:DSH 发布 final 版本后,正式版不受 prerelease 元组规则
|
|
81
81
|
限制,peer 可收敛为稳定的 `^0.1.x` 单范围,此节即可删除。
|
|
82
82
|
- **声明的最低运行时(`dsh.engines.dsh`)**:与 peer 元组一起,每个发布在
|
|
83
83
|
`dsh.engines.dsh` 声明 DSH 运行时下限(如 `>=0.1.2-rc.1`),供插件管理器
|
|
84
|
-
更新守卫读取。**与 peer
|
|
84
|
+
更新守卫读取。**与 peer 范围持平的同一发布里一并 bump**;不可只升代码、
|
|
85
85
|
声明下限停留在旧值。仅支持 `>=X.Y.Z[-pre]` 形式(`^`/`~`/多范围会被视为
|
|
86
86
|
「无法校验」而 fail-closed)。
|
|
87
87
|
|
package/lib/client.js
CHANGED
|
@@ -1345,7 +1345,7 @@ function createRewindBridge(deps) {
|
|
|
1345
1345
|
}
|
|
1346
1346
|
|
|
1347
1347
|
// src/client/build-info.ts
|
|
1348
|
-
var PLUGIN_VERSION = true ? "0.11.0
|
|
1348
|
+
var PLUGIN_VERSION = true ? "0.11.0" : "dev";
|
|
1349
1349
|
var BUILD_HASH = true ? "d770983e" : "dev";
|
|
1350
1350
|
|
|
1351
1351
|
// src/client/locales.ts
|
package/lib/index.js
CHANGED
|
@@ -119,10 +119,7 @@ var RewindError = class extends Error {
|
|
|
119
119
|
}
|
|
120
120
|
code;
|
|
121
121
|
};
|
|
122
|
-
var
|
|
123
|
-
function rewindMarkerSource(targetSeq) {
|
|
124
|
-
return Object.freeze({ ...REWIND_MARKER_BRAND, targetSeq });
|
|
125
|
-
}
|
|
122
|
+
var REWIND_MARKER_SOURCE = Object.freeze({ kind: "plugin", plugin: "dsh-rewind" });
|
|
126
123
|
var CANDIDATE_PREVIEW_CHARS = 80;
|
|
127
124
|
var DEFAULT_CANDIDATE_LIMIT = 100;
|
|
128
125
|
function isUserMessageEvent(event) {
|
|
@@ -1597,10 +1594,10 @@ async function commitEntry(store, pending, anchorCache, trackedBySession, exec,
|
|
|
1597
1594
|
tracked.add(capture.path);
|
|
1598
1595
|
}
|
|
1599
1596
|
var REWIND_MARKER_CONTENT = [{ type: "text", text: "(empty message)" }];
|
|
1600
|
-
function buildMarker(
|
|
1597
|
+
function buildMarker() {
|
|
1601
1598
|
return createUserMessage({
|
|
1602
1599
|
content: REWIND_MARKER_CONTENT,
|
|
1603
|
-
source:
|
|
1600
|
+
source: REWIND_MARKER_SOURCE
|
|
1604
1601
|
});
|
|
1605
1602
|
}
|
|
1606
1603
|
function describeTarget(target) {
|
|
@@ -1712,7 +1709,7 @@ async function executeRewind(ctx, store, fs, invocation, rawTarget, mode, inflig
|
|
|
1712
1709
|
} catch (error) {
|
|
1713
1710
|
return rewindErrorResult(error);
|
|
1714
1711
|
}
|
|
1715
|
-
const marker = buildMarker(
|
|
1712
|
+
const marker = buildMarker();
|
|
1716
1713
|
let event;
|
|
1717
1714
|
try {
|
|
1718
1715
|
event = agent.session.append("user/message", marker, {
|
package/lib/types/rewind.d.ts
CHANGED
|
@@ -75,14 +75,17 @@ export interface RewindPlan {
|
|
|
75
75
|
readonly surfaceEnd: number;
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
78
|
+
* The rewind-marker source: the backend-independent identity carried by every
|
|
79
|
+
* marker the plugin appends. It is the plain third-party plugin source shape
|
|
80
|
+
* `{ kind: 'plugin', plugin: 'dsh-rewind' }` — no extra fields, because a
|
|
81
|
+
* plugin source is a CLOSED shape in the harness (only `kind`/`plugin`, plus
|
|
82
|
+
* the context-injection `form`/`sections`/`summary`; see `MessageSourceMap` and
|
|
83
|
+
* the released-format source validator). A plugin extends the source map by
|
|
84
|
+
* adding a new `kind`, never by hanging private fields off `plugin`.
|
|
81
85
|
*/
|
|
82
|
-
export declare
|
|
83
|
-
kind: 'plugin';
|
|
84
|
-
plugin: 'dsh-rewind';
|
|
85
|
-
targetSeq: number;
|
|
86
|
+
export declare const REWIND_MARKER_SOURCE: Readonly<{
|
|
87
|
+
readonly kind: 'plugin';
|
|
88
|
+
readonly plugin: 'dsh-rewind';
|
|
86
89
|
}>;
|
|
87
90
|
/**
|
|
88
91
|
* Test whether a persisted message source identifies a rewind marker.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-rewind-plugin",
|
|
3
|
-
"version": "0.11.0
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "DSH 插件:真正便捷无感的同窗口内对话回退,从不新建分支;自带轻量工作区备份,可一并还原文件(完整 Claude Code /rewind 语义)。 · DSH plugin: genuinely effortless in-window conversation rewind — never forking a new session; ships a lightweight workspace backup that restores files together with the rewind (full Claude Code /rewind semantics).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"patch": "./cordis.patch.yml"
|
|
51
51
|
},
|
|
52
52
|
"engines": {
|
|
53
|
-
"dsh": ">=0.1.5-
|
|
53
|
+
"dsh": ">=0.1.5-rc.1"
|
|
54
54
|
},
|
|
55
55
|
"client": {
|
|
56
56
|
"inject": [
|
|
@@ -76,18 +76,18 @@
|
|
|
76
76
|
"peerDependencies": {
|
|
77
77
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
78
78
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
79
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.5-
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-commands": "^0.1.5-
|
|
81
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.1.5-
|
|
82
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.5-
|
|
83
|
-
"@deepseek-ai/dsh-commands": "^0.1.5-
|
|
84
|
-
"@deepseek-ai/dsh-fs": "^0.1.5-
|
|
85
|
-
"@deepseek-ai/dsh-home-paths": "^0.1.5-
|
|
86
|
-
"@deepseek-ai/dsh-llm": "^0.1.5-
|
|
87
|
-
"@deepseek-ai/dsh-sandbox": "^0.1.5-
|
|
88
|
-
"@deepseek-ai/dsh-session": "^0.1.5-
|
|
89
|
-
"@deepseek-ai/dsh-settings": "^0.1.5-
|
|
90
|
-
"@deepseek-ai/dsh-tools": "^0.1.5-
|
|
79
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-commands": "^0.1.5-rc.1",
|
|
81
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.1",
|
|
82
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.1",
|
|
83
|
+
"@deepseek-ai/dsh-commands": "^0.1.5-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-fs": "^0.1.5-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-home-paths": "^0.1.5-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-llm": "^0.1.5-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.5-rc.1",
|
|
88
|
+
"@deepseek-ai/dsh-session": "^0.1.5-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-settings": "^0.1.5-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-tools": "^0.1.5-rc.1"
|
|
91
91
|
},
|
|
92
92
|
"peerDependenciesMeta": {
|
|
93
93
|
"@deepseek-ai/cordis": {
|
|
@@ -136,37 +136,37 @@
|
|
|
136
136
|
"devDependencies": {
|
|
137
137
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
138
138
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
139
|
-
"@deepseek-ai/dsh-agent": "^0.1.5-
|
|
140
|
-
"@deepseek-ai/dsh-attachment": "^0.1.5-
|
|
141
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.5-
|
|
142
|
-
"@deepseek-ai/dsh-client-connection": "^0.1.5-
|
|
143
|
-
"@deepseek-ai/dsh-client-store": "^0.1.5-
|
|
144
|
-
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-
|
|
145
|
-
"@deepseek-ai/dsh-api-session-controller": "^0.1.5-
|
|
146
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-
|
|
147
|
-
"@deepseek-ai/dsh-scope": "^0.1.5-
|
|
148
|
-
"@deepseek-ai/dsh-typert-protocol": "^0.1.5-
|
|
149
|
-
"@deepseek-ai/dsh-user-questions": "^0.1.5-
|
|
150
|
-
"@deepseek-ai/dsh-client-ui-commands": "^0.1.5-
|
|
151
|
-
"@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.5-
|
|
152
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.5-
|
|
153
|
-
"@deepseek-ai/dsh-command-compact": "^0.1.5-
|
|
154
|
-
"@deepseek-ai/dsh-commands": "^0.1.5-
|
|
155
|
-
"@deepseek-ai/dsh-compaction": "^0.1.5-
|
|
156
|
-
"@deepseek-ai/dsh-compaction-basic": "^0.1.5-
|
|
157
|
-
"@deepseek-ai/dsh-fs": "^0.1.5-
|
|
158
|
-
"@deepseek-ai/dsh-goal": "^0.1.5-
|
|
159
|
-
"@deepseek-ai/dsh-home-paths": "^0.1.5-
|
|
160
|
-
"@deepseek-ai/dsh-llm": "^0.1.5-
|
|
161
|
-
"@deepseek-ai/dsh-plan-mode": "^0.1.5-
|
|
162
|
-
"@deepseek-ai/dsh-sandbox": "^0.1.5-
|
|
163
|
-
"@deepseek-ai/dsh-session": "^0.1.5-
|
|
164
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.5-
|
|
165
|
-
"@deepseek-ai/dsh-session-stats": "^0.1.5-
|
|
166
|
-
"@deepseek-ai/dsh-session-title": "^0.1.5-
|
|
167
|
-
"@deepseek-ai/dsh-settings": "^0.1.5-
|
|
168
|
-
"@deepseek-ai/dsh-token-meter": "^0.1.5-
|
|
169
|
-
"@deepseek-ai/dsh-tools": "^0.1.5-
|
|
139
|
+
"@deepseek-ai/dsh-agent": "^0.1.5-rc.1",
|
|
140
|
+
"@deepseek-ai/dsh-attachment": "^0.1.5-rc.1",
|
|
141
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.5-rc.1",
|
|
142
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.5-rc.1",
|
|
143
|
+
"@deepseek-ai/dsh-client-store": "^0.1.5-rc.1",
|
|
144
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1",
|
|
145
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.5-rc.1",
|
|
146
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.1",
|
|
147
|
+
"@deepseek-ai/dsh-scope": "^0.1.5-rc.1",
|
|
148
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.5-rc.1",
|
|
149
|
+
"@deepseek-ai/dsh-user-questions": "^0.1.5-rc.1",
|
|
150
|
+
"@deepseek-ai/dsh-client-ui-commands": "^0.1.5-rc.1",
|
|
151
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.5-rc.1",
|
|
152
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.1",
|
|
153
|
+
"@deepseek-ai/dsh-command-compact": "^0.1.5-rc.1",
|
|
154
|
+
"@deepseek-ai/dsh-commands": "^0.1.5-rc.1",
|
|
155
|
+
"@deepseek-ai/dsh-compaction": "^0.1.5-rc.1",
|
|
156
|
+
"@deepseek-ai/dsh-compaction-basic": "^0.1.5-rc.1",
|
|
157
|
+
"@deepseek-ai/dsh-fs": "^0.1.5-rc.1",
|
|
158
|
+
"@deepseek-ai/dsh-goal": "^0.1.5-rc.1",
|
|
159
|
+
"@deepseek-ai/dsh-home-paths": "^0.1.5-rc.1",
|
|
160
|
+
"@deepseek-ai/dsh-llm": "^0.1.5-rc.1",
|
|
161
|
+
"@deepseek-ai/dsh-plan-mode": "^0.1.5-rc.1",
|
|
162
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.5-rc.1",
|
|
163
|
+
"@deepseek-ai/dsh-session": "^0.1.5-rc.1",
|
|
164
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.5-rc.1",
|
|
165
|
+
"@deepseek-ai/dsh-session-stats": "^0.1.5-rc.1",
|
|
166
|
+
"@deepseek-ai/dsh-session-title": "^0.1.5-rc.1",
|
|
167
|
+
"@deepseek-ai/dsh-settings": "^0.1.5-rc.1",
|
|
168
|
+
"@deepseek-ai/dsh-token-meter": "^0.1.5-rc.1",
|
|
169
|
+
"@deepseek-ai/dsh-tools": "^0.1.5-rc.1",
|
|
170
170
|
"@types/node": "^24.0.0",
|
|
171
171
|
"@types/react": "^18.3.31",
|
|
172
172
|
"@types/react-dom": "^18.3.7",
|