@chaoset/session-archive 0.3.0 → 0.3.3
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 +86 -38
- package/README.md +31 -45
- package/client/client.cjs +23 -3
- package/client/index.tsx +17 -3
- package/lib/remote.d.ts.map +1 -1
- package/lib/remote.js +21 -0
- package/lib/remote.js.map +1 -1
- package/package.json +8 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,91 +1,139 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 0.3.3 (2026-08-29)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
* 加载反馈:列表与详情加载中显示 spinner +「加载中…」(respect
|
|
8
|
+
`prefers-reduced-motion`),替代原先孤零零的 "…";手动刷新列表时同样可见
|
|
9
|
+
(静默刷新不打扰)
|
|
10
|
+
|
|
11
|
+
## 0.3.2 (2026-08-28)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* 支持从源码运行的 DSH:typert-protocol 解析链首插安装闭包共享 fallback
|
|
16
|
+
`$DSH_HOME/profiles/node_modules/<pkg>`,以 realpath 导入保证与 harness 同一
|
|
17
|
+
模块实例;失败回落原有解析链。已对照 dsh 源码 0.1.2-alpha.1 复核
|
|
18
|
+
workspaceRegistry / sessionPersistence 契约与事件形状无变化
|
|
19
|
+
|
|
20
|
+
## 0.3.1 (2026-08-28)
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* 适配 DSH 0.1.1-rc.2:`@deepseek-ai/dsh-typert-protocol` 依赖 range 从
|
|
25
|
+
`^0.1.0-rc.8` 升到 `^0.1.1-rc.2`(npm semver 的 prerelease 规则下旧 range
|
|
26
|
+
无法匹配 `0.1.1-rc.2`,新版宿主下面板远程服务会因官方包解析到旧版本而不可用)
|
|
27
|
+
* 已对照 0.1.1-rc.2 复核 workspaceRegistry / sessionPersistence / sessions
|
|
28
|
+
契约与 `session/title`、`user/message`、`assistant/message` 事件形状:无变化
|
|
29
|
+
|
|
30
|
+
## 0.3.0 (2026-08-25)
|
|
31
|
+
|
|
32
|
+
### Features
|
|
33
|
+
|
|
34
|
+
* **实时徽标与列表**:订阅宿主 workspaces 服务的归档集合 store——会话菜单点
|
|
35
|
+
「归档」、其它标签页变更、宿主推送 `host/archived-sessions-changed` 都即时
|
|
36
|
+
反映到侧边栏徽标与打开中的面板,不再等 5s 轮询;集合含 ghost id 与 `count()`
|
|
37
|
+
口径不同,故仅作触发信号、数目仍以 `count()` 为准;store 不可用时降级为纯轮询
|
|
38
|
+
* `count()` 调用失败自动退回一次 `list()` 取数并同步徽标:任何 host 版本组合下
|
|
39
|
+
徽标都能自我纠正,不再卡在过期值
|
|
40
|
+
* **徽标 hover 与「设置」入口对齐**:几何与官方侧边栏设置触发按钮逐字一致
|
|
41
|
+
(收起态 36×36 圆形、图标 18px);根因修复:`.sa_root` 作为 flex 项会收缩到
|
|
42
|
+
内容宽,显式撑满后 hover 命中面积与设置入口完全一致
|
|
10
43
|
|
|
11
44
|
### Bug Fixes
|
|
12
45
|
|
|
13
|
-
* `deleteArchived` 冷文件快速路径:不在内存且 60s 内无写入的归档删除跳过固定
|
|
14
|
-
|
|
15
|
-
|
|
46
|
+
* `deleteArchived` 冷文件快速路径:不在内存且 60s 内无写入的归档删除跳过固定
|
|
47
|
+
2×300ms settle 复验,批量清理陈旧归档从 ~12s/20 个降到 <1s;可能活跃的会话
|
|
48
|
+
维持原两段复验与 `reappeared` 语义
|
|
49
|
+
* 徽标关闭态轮询在标签页隐藏时暂停、恢复可见立即刷一次并重启;面板打开期间
|
|
50
|
+
新增 30s 静默刷新(数据不变不重渲染、不打断勾选)
|
|
51
|
+
* 批量删除成功后清理 `details`/`expanded` 缓存:内存不再随操作缓慢增长,
|
|
52
|
+
展开态不再指向已删除的行
|
|
16
53
|
|
|
17
54
|
### Accessibility / UI
|
|
18
55
|
|
|
19
|
-
*
|
|
20
|
-
* 徽标按钮补回 `aria-label`(icon-only 场景 accessible name
|
|
21
|
-
* warn 级通知独立 warn
|
|
22
|
-
* 面板 150ms 入场动画(淡入 + 轻微上移,respect `prefers-reduced-motion
|
|
56
|
+
* 面板焦点管理:打开时焦点移入面板、关闭时归还徽标按钮
|
|
57
|
+
* 徽标按钮补回 `aria-label`(icon-only 场景 accessible name 自带语义与数量)
|
|
58
|
+
* warn 级通知独立 warn 色,不再与错误同红
|
|
59
|
+
* 面板 150ms 入场动画(淡入 + 轻微上移,respect `prefers-reduced-motion`)
|
|
23
60
|
|
|
24
|
-
##
|
|
61
|
+
## 0.2.4 (2026-08-23)
|
|
25
62
|
|
|
26
63
|
### Bug Fixes
|
|
27
64
|
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
* `
|
|
31
|
-
|
|
32
|
-
*
|
|
65
|
+
* `SessionArchiveGateway` 缺少 0.2.3 引入的 `count()` 方法认领——徽标轮询端点
|
|
66
|
+
实际返回 404(客户端静默吞错,表现为计数不更新);补齐方法与 marker
|
|
67
|
+
* `detail()` 达到 `detailMaxMessages` 后只递增计数、不再做文本提取;响应新增
|
|
68
|
+
`totalMessageCount` 与 `truncated`,客户端如实显示「共 N 条消息(已截断)」
|
|
69
|
+
* `deleteArchived` 对 ghost id 先经 `locate()` 探测孤儿文件:首行损坏、被
|
|
70
|
+
`persistence.list()` 静默跳过的日志计入 `failed('unenumerable')`,不再谎报
|
|
71
|
+
成功并把文件留在磁盘上
|
|
72
|
+
* rm 后约 300ms 复验:文件被进行中的生成流重建则再删一次,仍压不掉计入
|
|
73
|
+
`failed('reappeared')`
|
|
74
|
+
* 客户端:列表浅比较未变化跳过重渲染;选择集自动剔除已消失项;批量异常提示带
|
|
75
|
+
请求数量;零体积显示 "—";`detail.messages` 渲染前加形状防御
|
|
33
76
|
|
|
34
77
|
### Accessibility
|
|
35
78
|
|
|
36
|
-
* 行标题由 span 改为真 button(键盘可达);面板补 `role="dialog"` 与
|
|
79
|
+
* 行标题由 span 改为真 button(键盘可达);面板补 `role="dialog"` 与
|
|
80
|
+
aria-label;Escape 关闭面板
|
|
37
81
|
|
|
38
|
-
##
|
|
82
|
+
## 0.2.3 (2026-08-22)
|
|
39
83
|
|
|
40
84
|
### Features
|
|
41
85
|
|
|
42
|
-
* `count()` 轻端点 + 按 mtime 的标题缓存:面板关闭态的徽标轮询不再每 5
|
|
43
|
-
|
|
44
|
-
*
|
|
86
|
+
* `count()` 轻端点 + 按 mtime 的标题缓存:面板关闭态的徽标轮询不再每 5 秒
|
|
87
|
+
全量解析归档事件流
|
|
88
|
+
* 删除失败原因端到端透出(`not-archived` / `busy` 等)
|
|
89
|
+
* 客户端:成功通知独立样式;删除确认锁定选择集并显示数量;批量失败原因逐条
|
|
90
|
+
展示;detail 加载失败可重试;复选框 aria-label
|
|
45
91
|
|
|
46
92
|
### Bug Fixes
|
|
47
93
|
|
|
48
|
-
* `deleteArchived`/`detail`
|
|
49
|
-
|
|
94
|
+
* `deleteArchived`/`detail` 前置校验归档成员资格:未归档的持久化会话不再可能
|
|
95
|
+
经远程端点被不可逆删除/读取
|
|
96
|
+
* busy 判定 TOCTOU:rm 前重取 mtime 复核;unarchive 的存在性确认移入 registry
|
|
97
|
+
写锁临界区,并发删除不再能把已删会话「复活」回侧边栏
|
|
50
98
|
|
|
51
|
-
##
|
|
99
|
+
## 0.2.2 (2026-08-22)
|
|
52
100
|
|
|
53
101
|
### Dependencies
|
|
54
102
|
|
|
55
|
-
*
|
|
103
|
+
* `@deepseek-ai/*` 更新到 0.1.0-rc.8
|
|
56
104
|
|
|
57
|
-
##
|
|
105
|
+
## 0.2.1 (2026-08-22)
|
|
58
106
|
|
|
59
107
|
### Refactor
|
|
60
108
|
|
|
61
|
-
*
|
|
109
|
+
* 重新发布 TypeScript 重构后的构建产物(tsc + esbuild 流水线)
|
|
62
110
|
|
|
63
|
-
##
|
|
111
|
+
## 0.2.0 (2026-08-21)
|
|
64
112
|
|
|
65
113
|
### Bug Fixes
|
|
66
114
|
|
|
67
|
-
*
|
|
115
|
+
* 展开态徽标的文字/图标状态跟随侧边栏 wide 属性
|
|
68
116
|
|
|
69
|
-
##
|
|
117
|
+
## 0.1.3 (2026-08-18)
|
|
70
118
|
|
|
71
119
|
### Bug Fixes
|
|
72
120
|
|
|
73
|
-
*
|
|
121
|
+
* 确认删除按钮 hover 红字红底不可读,改为红底白字
|
|
74
122
|
|
|
75
|
-
##
|
|
123
|
+
## 0.1.2 (2026-08-18)
|
|
76
124
|
|
|
77
125
|
### Bug Fixes
|
|
78
126
|
|
|
79
|
-
*
|
|
127
|
+
* 删除归档会话后保留归档集合占位 id,内存中的会话不再重新出现在侧边栏
|
|
80
128
|
|
|
81
|
-
##
|
|
129
|
+
## 0.1.1 (2026-08-17)
|
|
82
130
|
|
|
83
131
|
### Bug Fixes
|
|
84
132
|
|
|
85
|
-
*
|
|
133
|
+
* 归档会话不再被误标为运行中;恢复可勾选删除
|
|
86
134
|
|
|
87
|
-
##
|
|
135
|
+
## 0.1.0 (2026-08-17)
|
|
88
136
|
|
|
89
137
|
### Features
|
|
90
138
|
|
|
91
|
-
*
|
|
139
|
+
* 首个归档会话插件:归档列表、只读详情、批量恢复与彻底删除
|
package/README.md
CHANGED
|
@@ -1,50 +1,38 @@
|
|
|
1
|
-
# @chaoset/session-archive
|
|
1
|
+
# @chaoset/session-archive — DSH 归档会话管理
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
补上 DSH 缺失的「归档后半程」:web 侧边栏底部新增**归档**面板。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **彻底删除**(delete):删除勾选会话的持久化文件与会话目录。删除为
|
|
14
|
-
两段式确认(第一次点击进入确认态,4 秒内再次点击执行),避免误删。
|
|
15
|
-
删除后该会话在侧边栏对话列表与归档面板中都不会再出现。
|
|
16
|
-
- 工具条提供**全选**、已选计数;**运行中**(live)的会话显示黄色徽标且
|
|
17
|
-
禁止勾选删除(请先停止会话);列表随会话树变化自动可刷新(⟳)。
|
|
5
|
+
- **查看归档**:列出全部归档会话(标题、目录、时间、体积、运行状态);点击
|
|
6
|
+
会话可展开**只读浏览**其聊天内容(用户/助手文本消息)。
|
|
7
|
+
- **批量恢复**:勾选多个会话一键移回会话树,恢复其在原工作区的位置。
|
|
8
|
+
- **彻底删除**:删除勾选会话的持久化文件与会话目录;两段式确认(第一次点击
|
|
9
|
+
进入确认态,4 秒内再次点击执行)避免误删。运行中(live)的会话禁止删除,
|
|
10
|
+
需先停止。
|
|
11
|
+
- 工具条提供全选与已选计数;侧边栏徽标实时显示归档数量(订阅宿主归档集合,
|
|
12
|
+
轻量轮询兜底)。
|
|
18
13
|
|
|
19
14
|
## 安装
|
|
20
15
|
|
|
21
16
|
```bash
|
|
22
17
|
dsh plugin --profile web add @chaoset/session-archive
|
|
18
|
+
dsh plugin --profile web remove @chaoset/session-archive
|
|
23
19
|
```
|
|
24
20
|
|
|
25
|
-
重启 web profile
|
|
26
|
-
|
|
27
|
-
自动激活。
|
|
21
|
+
重启 web profile 后,侧边栏底部出现「归档」入口。其他安装来源见仓库根
|
|
22
|
+
`README.md` 的「安装」。
|
|
28
23
|
|
|
29
24
|
## 工作原理
|
|
30
25
|
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **删除**:live
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
保留 ghost id 后由 `list()` 的存在性过滤隐藏,面板与侧边栏都不再显示。
|
|
42
|
-
归档集合没有官方写入 API,插件复用 registry 自身的串行化写入通道
|
|
43
|
-
(`enqueueOperation → requireState → setState`,与 `archiveSession` 同一
|
|
44
|
-
路径);若内部形状变化会自动降级为"仅删文件",归档列表按文件存在性
|
|
45
|
-
过滤,功能不受影响。
|
|
46
|
-
- **恢复**:仅从归档集合移除**仍存在持久化文件**的会话 id,会话数据不动,
|
|
47
|
-
恢复后回到原工作区位置;文件已删的已删除会话拒绝恢复(防"复活")。
|
|
26
|
+
- **列表**:宿主归档集合 ∩ 持久化会话列表;标题折叠自会话事件流的最后一个
|
|
27
|
+
`session/title` 事件,体积来自文件 stat。
|
|
28
|
+
- **查看**:只读解析会话事件流,提取用户/助手文本消息;超过 `detailMaxMessages`
|
|
29
|
+
条时截断并如实标注。
|
|
30
|
+
- **恢复**:仅从归档集合移除仍存在持久化文件的会话 id,会话数据不动;文件已删
|
|
31
|
+
的会话拒绝恢复。
|
|
32
|
+
- **删除**:live 会话拒绝;每个会话删除持久化文件与会话目录。删除后**保留**
|
|
33
|
+
该会话在归档集合中的占位 id——否则仍挂在内存中的会话会因「不再归档」立刻
|
|
34
|
+
重新出现在侧边栏(效果等同恢复);列表按文件存在性过滤,面板与侧边栏都不再
|
|
35
|
+
显示该会话。宿主内部形状变化时自动降级为「仅删文件」,功能不受影响。
|
|
48
36
|
|
|
49
37
|
## Remote API(`ctx.remote.sessionArchive`)
|
|
50
38
|
|
|
@@ -56,14 +44,12 @@ dsh plugin --profile web add @chaoset/session-archive
|
|
|
56
44
|
| `delete(sessionIds[])` | id 数组 | `{ deleted, failed, removedFromArchive }` |
|
|
57
45
|
| `unarchive(sessionIds[])` | id 数组 | `{ restored, removedFromArchive }` |
|
|
58
46
|
|
|
59
|
-
> `delete` 的 `failed[].reason`:`not-archived`(非归档成员)、`live
|
|
60
|
-
>
|
|
61
|
-
>
|
|
62
|
-
> 生成流重建、二次删除仍压不掉);其余为底层删除错误消息。
|
|
47
|
+
> `delete` 的 `failed[].reason`:`not-archived`(非归档成员)、`live`(内存中
|
|
48
|
+
> 未归档会话)、`busy`(归档会话 60s 内仍有写入)、`unenumerable`(文件存在但
|
|
49
|
+
> 持久化枚举不到)、`reappeared`(删除后被生成流重建);其余为底层删除错误消息。
|
|
63
50
|
|
|
64
|
-
> `delete` 的 `removedFromArchive` 恒为 0
|
|
65
|
-
>
|
|
66
|
-
> 实际从归档集合移除的 id 数。
|
|
51
|
+
> `delete` 的 `removedFromArchive` 恒为 0(删除保留归档占位 id,见上);
|
|
52
|
+
> `unarchive` 的为实际从归档集合移除的 id 数。
|
|
67
53
|
|
|
68
54
|
`ArchiveRow`:`{ sessionId, title, cwd, createdAt, updatedAt, size, live }`。
|
|
69
55
|
|
|
@@ -77,6 +63,6 @@ config 字段(`cordis.patch.yml` 或 `~/.dsh/plugins/session-archive/config.js
|
|
|
77
63
|
|
|
78
64
|
## 限制
|
|
79
65
|
|
|
80
|
-
- 运行中(live
|
|
81
|
-
- 无官方 unarchive API,恢复归档通过 registry 写入通道实现;若未来 DSH
|
|
82
|
-
|
|
66
|
+
- 运行中(live)的会话无法删除——先停止会话再删除。
|
|
67
|
+
- 无官方 unarchive API,恢复归档通过 registry 写入通道实现;若未来 DSH 提供
|
|
68
|
+
官方 API,插件会切换过去(行为不变)。
|
package/client/client.cjs
CHANGED
|
@@ -110,7 +110,13 @@ window.__ModuleLoader__.load({
|
|
|
110
110
|
".sa_msgRole{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px;text-transform:uppercase;letter-spacing:.04em}",
|
|
111
111
|
".sa_msgText{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:18px}",
|
|
112
112
|
".sa_msgTextUser{color:var(--dsw-alias-label-secondary)}",
|
|
113
|
-
".sa_busy{opacity:.55;pointer-events:none}"
|
|
113
|
+
".sa_busy{opacity:.55;pointer-events:none}",
|
|
114
|
+
// 加载中:spinner + 文案(列表与详情共用)。系统开启「减少动态效果」时
|
|
115
|
+
// spinner 停止旋转(保持静态圆环,提示语义仍在)。
|
|
116
|
+
".sa_loading{color:var(--dsw-alias-label-tertiary);margin:8px 0;font-size:12px;line-height:18px;display:flex;align-items:center;gap:6px}",
|
|
117
|
+
".sa_spin{flex:none;width:12px;height:12px;border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-label-secondary);border-radius:50%;animation:sa-spin .8s linear infinite}",
|
|
118
|
+
"@keyframes sa-spin{to{transform:rotate(360deg)}}",
|
|
119
|
+
"@media (prefers-reduced-motion:reduce){.sa_spin{animation:none}}"
|
|
114
120
|
].join("");
|
|
115
121
|
var tagId = "@chaoset/session-archive/client.css";
|
|
116
122
|
if (typeof document !== "undefined" && document.querySelector('style[data-plugin-css="' + tagId + '"]') === null) {
|
|
@@ -129,6 +135,7 @@ window.__ModuleLoader__.load({
|
|
|
129
135
|
close: "\u5173\u95ED",
|
|
130
136
|
empty: "\u6682\u65E0\u5F52\u6863\u4F1A\u8BDD\u3002\u5728\u4F1A\u8BDD\u5217\u8868\u7684\u66F4\u591A\u83DC\u5355\u4E2D\u5F52\u6863\u4F1A\u8BDD\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002",
|
|
131
137
|
loadFailed: "\u52A0\u8F7D\u5F52\u6863\u5217\u8868\u5931\u8D25",
|
|
138
|
+
loading: "\u52A0\u8F7D\u4E2D\u2026",
|
|
132
139
|
selectAll: "\u5168\u9009",
|
|
133
140
|
selected: "\u5DF2\u9009 {n} \u9879",
|
|
134
141
|
restore: "\u6062\u590D\u6240\u9009",
|
|
@@ -162,6 +169,7 @@ window.__ModuleLoader__.load({
|
|
|
162
169
|
close: "Close",
|
|
163
170
|
empty: "No archived sessions. Archive a session from its menu in the session list and it will show up here.",
|
|
164
171
|
loadFailed: "Failed to load archive list",
|
|
172
|
+
loading: "Loading\u2026",
|
|
165
173
|
selectAll: "Select all",
|
|
166
174
|
selected: "{n} selected",
|
|
167
175
|
restore: "Restore",
|
|
@@ -551,7 +559,14 @@ window.__ModuleLoader__.load({
|
|
|
551
559
|
{ className: "sa_body" },
|
|
552
560
|
notice !== null ? React.createElement("p", { className: notice.kind === "ok" ? "sa_ok" : notice.kind === "warn" ? "sa_warn" : "sa_error", role: "status" }, notice.text) : null,
|
|
553
561
|
error !== null ? React.createElement("p", { className: "sa_error", role: "alert" }, error) : null,
|
|
554
|
-
loading
|
|
562
|
+
// 加载中明确提示(loading 只由打开面板/手动刷新置位,静默刷新不打扰):
|
|
563
|
+
// 此前列表已有内容时手动刷新零反馈,首次加载只有一个孤零零的 "…"。
|
|
564
|
+
loading ? React.createElement(
|
|
565
|
+
"p",
|
|
566
|
+
{ className: "sa_loading", role: "status" },
|
|
567
|
+
React.createElement("span", { className: "sa_spin", "aria-hidden": true }),
|
|
568
|
+
t("loading")
|
|
569
|
+
) : null,
|
|
555
570
|
!loading && items.length === 0 && error === null ? React.createElement("p", { className: "sa_empty" }, t("empty")) : null,
|
|
556
571
|
items.length > 0 ? React.createElement(
|
|
557
572
|
"ul",
|
|
@@ -612,7 +627,12 @@ window.__ModuleLoader__.load({
|
|
|
612
627
|
isExpanded ? React.createElement(
|
|
613
628
|
"div",
|
|
614
629
|
{ className: "sa_detail" },
|
|
615
|
-
detailPending ? React.createElement(
|
|
630
|
+
detailPending ? React.createElement(
|
|
631
|
+
"p",
|
|
632
|
+
{ className: "sa_loading" },
|
|
633
|
+
React.createElement("span", { className: "sa_spin", "aria-hidden": true }),
|
|
634
|
+
t("loading")
|
|
635
|
+
) : null,
|
|
616
636
|
detail === void 0 ? null : detail.error !== void 0 ? React.createElement("p", { className: "sa_error" }, detail.error) : !Array.isArray(detail.messages) ? React.createElement("p", { className: "sa_error" }, t("detailLoadFailed")) : detail.messages.length === 0 ? React.createElement("p", { className: "sa_empty" }, t("noMessages")) : detail.messages.map((message, index) => React.createElement(
|
|
617
637
|
"div",
|
|
618
638
|
{ className: "sa_msg", key: index },
|
package/client/index.tsx
CHANGED
|
@@ -72,7 +72,13 @@ var css = [
|
|
|
72
72
|
".sa_msgRole{color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:14px;text-transform:uppercase;letter-spacing:.04em}",
|
|
73
73
|
".sa_msgText{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:18px}",
|
|
74
74
|
".sa_msgTextUser{color:var(--dsw-alias-label-secondary)}",
|
|
75
|
-
".sa_busy{opacity:.55;pointer-events:none}"
|
|
75
|
+
".sa_busy{opacity:.55;pointer-events:none}",
|
|
76
|
+
// 加载中:spinner + 文案(列表与详情共用)。系统开启「减少动态效果」时
|
|
77
|
+
// spinner 停止旋转(保持静态圆环,提示语义仍在)。
|
|
78
|
+
".sa_loading{color:var(--dsw-alias-label-tertiary);margin:8px 0;font-size:12px;line-height:18px;display:flex;align-items:center;gap:6px}",
|
|
79
|
+
".sa_spin{flex:none;width:12px;height:12px;border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-label-secondary);border-radius:50%;animation:sa-spin .8s linear infinite}",
|
|
80
|
+
"@keyframes sa-spin{to{transform:rotate(360deg)}}",
|
|
81
|
+
"@media (prefers-reduced-motion:reduce){.sa_spin{animation:none}}"
|
|
76
82
|
].join("");
|
|
77
83
|
var tagId = "@chaoset/session-archive/client.css";
|
|
78
84
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"" + tagId + "\"]") === null) {
|
|
@@ -92,6 +98,7 @@ const zh = {
|
|
|
92
98
|
close: "关闭",
|
|
93
99
|
empty: "暂无归档会话。在会话列表的更多菜单中归档会话后会出现在这里。",
|
|
94
100
|
loadFailed: "加载归档列表失败",
|
|
101
|
+
loading: "加载中…",
|
|
95
102
|
selectAll: "全选",
|
|
96
103
|
selected: "已选 {n} 项",
|
|
97
104
|
restore: "恢复所选",
|
|
@@ -125,6 +132,7 @@ const en = {
|
|
|
125
132
|
close: "Close",
|
|
126
133
|
empty: "No archived sessions. Archive a session from its menu in the session list and it will show up here.",
|
|
127
134
|
loadFailed: "Failed to load archive list",
|
|
135
|
+
loading: "Loading…",
|
|
128
136
|
selectAll: "Select all",
|
|
129
137
|
selected: "{n} selected",
|
|
130
138
|
restore: "Restore",
|
|
@@ -547,7 +555,11 @@ function ArchivePanel(props: any) {
|
|
|
547
555
|
{ className: "sa_body" },
|
|
548
556
|
notice !== null ? React.createElement("p", { className: notice.kind === "ok" ? "sa_ok" : notice.kind === "warn" ? "sa_warn" : "sa_error", role: "status" }, notice.text) : null,
|
|
549
557
|
error !== null ? React.createElement("p", { className: "sa_error", role: "alert" }, error) : null,
|
|
550
|
-
loading
|
|
558
|
+
// 加载中明确提示(loading 只由打开面板/手动刷新置位,静默刷新不打扰):
|
|
559
|
+
// 此前列表已有内容时手动刷新零反馈,首次加载只有一个孤零零的 "…"。
|
|
560
|
+
loading ? React.createElement("p", { className: "sa_loading", role: "status" },
|
|
561
|
+
React.createElement("span", { className: "sa_spin", "aria-hidden": true }),
|
|
562
|
+
t("loading")) : null,
|
|
551
563
|
!loading && items.length === 0 && error === null ? React.createElement("p", { className: "sa_empty" }, t("empty")) : null,
|
|
552
564
|
items.length > 0 ? React.createElement(
|
|
553
565
|
"ul",
|
|
@@ -608,7 +620,9 @@ function ArchivePanel(props: any) {
|
|
|
608
620
|
isExpanded ? React.createElement(
|
|
609
621
|
"div",
|
|
610
622
|
{ className: "sa_detail" },
|
|
611
|
-
detailPending ? React.createElement("p", { className: "
|
|
623
|
+
detailPending ? React.createElement("p", { className: "sa_loading" },
|
|
624
|
+
React.createElement("span", { className: "sa_spin", "aria-hidden": true }),
|
|
625
|
+
t("loading")) : null,
|
|
612
626
|
detail === void 0 ? null :
|
|
613
627
|
detail.error !== void 0 ? React.createElement("p", { className: "sa_error" }, detail.error) :
|
|
614
628
|
!Array.isArray(detail.messages) ? React.createElement("p", { className: "sa_error" }, t("detailLoadFailed")) :
|
package/lib/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA4CnD,QAAA,MAAgB,mBAAmB,uEAAuB,CAAC;AA2B3D;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,OAAO,CAAC,IAAI,CAAM;IAClB,YAAY,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAIlE;IACD,IAAI,QAEH;IACD,KAAK,QAEJ;IACD,MAAM,CAAC,SAAS,EAAE,MAAM,OAKvB;IACD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAK1B;IACD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAK7B;CACF"}
|
package/lib/remote.js
CHANGED
|
@@ -12,13 +12,34 @@
|
|
|
12
12
|
* 仅侧边栏面板的远程读写不可用。
|
|
13
13
|
*/
|
|
14
14
|
import { createRequire } from "node:module";
|
|
15
|
+
import { realpathSync } from "node:fs";
|
|
15
16
|
import { homedir } from "node:os";
|
|
16
17
|
import { join, resolve } from "node:path";
|
|
17
18
|
import { pathToFileURL } from "node:url";
|
|
19
|
+
// 安装闭包共享 fallback:$DSH_HOME/profiles/node_modules 由 harness 启动时
|
|
20
|
+
// heal 出来(symlink 镜像 harness 实际使用的依赖闭包,npm 安装与源码运行
|
|
21
|
+
// 都会建立)。优先从这里解析,保证插件与 harness 用同一模块实例;Node ESM
|
|
22
|
+
// 不支持目录导入,用包目录的 package.json 作 require 锚解析入口文件
|
|
23
|
+
// (require.resolve 默认 realpath 化,得到 harness 同源实体路径)。
|
|
24
|
+
// 失败返回 null,由调用方 fall through 原有解析链。
|
|
25
|
+
function loadInstallFallback(specifier) {
|
|
26
|
+
try {
|
|
27
|
+
const dshHome = process.env.DSH_HOME?.trim() ? resolve(process.env.DSH_HOME) : join(homedir(), ".dsh");
|
|
28
|
+
const anchor = join(dshHome, "profiles", "node_modules", specifier, "package.json");
|
|
29
|
+
const real = realpathSync(createRequire(anchor).resolve(specifier));
|
|
30
|
+
return import(pathToFileURL(real).href);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
18
36
|
// @deepseek-ai/dsh-typert-protocol 是 ESM 包。Node 20 早期版本尚不支持
|
|
19
37
|
// require(ESM),因此统一用 import() 加载;fallback 时先用 createRequire
|
|
20
38
|
// 解析出实际文件,再以 file URL 导入。
|
|
21
39
|
async function loadTypert() {
|
|
40
|
+
const fromFallback = loadInstallFallback("@deepseek-ai/dsh-typert-protocol");
|
|
41
|
+
if (fromFallback !== null)
|
|
42
|
+
return fromFallback;
|
|
22
43
|
try {
|
|
23
44
|
return await import("@deepseek-ai/dsh-typert-protocol");
|
|
24
45
|
}
|
package/lib/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,4DAA4D;AAC5D,4DAA4D;AAC5D,0BAA0B;AAC1B,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACvG,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC;KACtD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;YACjF,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;AAE3D,IAAI,OAAO,GAA+C,EAAE,CAAC;AAE7D,sDAAsD;AACtD,SAAS,gBAAgB,CAAC,KAAa,EAAE,MAAc,EAAE,UAAmB;IAC1E,MAAM,YAAY,GAAsB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,cAAc,CAAC,EAAc,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACnD,CAAC;IACT,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,CAAE,KAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,wDAAwD;AACxD,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC;IACtB,OAAO,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,YAAY,EAAE,IAAI,KAAK,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,YAAY;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IACpD,IAAI,CAAM;IAClB,YAAY,GAAY,EAAE,MAAyC;QACjE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IACD,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,SAAiB;QACtB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,UAAoB;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IACD,SAAS,CAAC,UAAoB;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;CACF;AACD,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1D,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3D,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5D,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5D,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC/D,iEAAiE;AACjE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chaoset/session-archive",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "DSH plugin: browse archived sessions, inspect their content, batch-restore or permanently delete them with multi-select",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,13 +33,7 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"optionalDependencies": {
|
|
36
|
-
"@deepseek-ai/dsh-typert-protocol": "^0.1.
|
|
37
|
-
},
|
|
38
|
-
"scripts": {
|
|
39
|
-
"build": "bun ../../scripts/build.mjs",
|
|
40
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
41
|
-
"test": "bun ../../scripts/build.mjs && vitest run",
|
|
42
|
-
"prepublishOnly": "bun run test"
|
|
36
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2"
|
|
43
37
|
},
|
|
44
38
|
"repository": {
|
|
45
39
|
"type": "git",
|
|
@@ -51,5 +45,10 @@
|
|
|
51
45
|
},
|
|
52
46
|
"engines": {
|
|
53
47
|
"node": ">=22.19.0"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "node ../../scripts/build.mjs",
|
|
51
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
52
|
+
"test": "node ../../scripts/build.mjs && vitest run"
|
|
54
53
|
}
|
|
55
|
-
}
|
|
54
|
+
}
|