@chaoset/session-archive 0.3.9-alpha.0 → 0.3.9-alpha.2

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
@@ -1,5 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.9-alpha.2 (2026-09-09)
4
+
5
+ ### Changes
6
+
7
+ * 全面接入官方契约类型:`dsh.d.ts` 不再手写任何宿主方法形状,改为映射
8
+ `@deepseek-ai/dsh-workspace` / `dsh-session` / `dsh-session-persistence` /
9
+ `dsh-session-title` 官方 d.ts(新增 devDependencies,自带 cordis Context
10
+ 增强)——宿主契约漂移从此在 typecheck 期暴露,而非运行时
11
+ * host 逻辑仅走官方契约路径并移除全部旧宿主版本兼容分支:读事件流用
12
+ `open(id,'read')` 句柄(官方 `SessionHandle`);标题折叠改用官方
13
+ `foldSessionTitle`(`dsh-session-title` 纯函数,行为与宿主逐字一致,
14
+ 含 `ignorable`/来源语义),替代手写折叠;assistant 消息文本按官方
15
+ `SessionEventMap` 从 `data.message.content` 提取
16
+ * 归档集合移除通道(官方无 unarchive API)显式标注为宿主内部形状依赖
17
+ (官方 d.ts 上 `enqueueOperation`/`requireState`/`setState` 为 private),
18
+ 运行时探测可用性,形状变化自动降级
19
+ * 测试夹具重写为官方契约形状(快照 + 句柄 + 官方事件 data),title 事件
20
+ data 补全官方 `SessionTitleEventData` 必备字段(`messageSeqs`/`source`)
21
+ * 已在 DSH 0.1.5-alpha.1 隔离测试实例真实验证:列表/标题/详情/恢复全通过,
22
+ 控制台零报错
23
+
24
+ ## 0.3.9-alpha.1 (2026-09-09)
25
+
26
+ ### Fixes
27
+
28
+ * 修复归档面板恒空:DSH 0.1.3 起 `sessionPersistence.list()` 返回
29
+ `SessionPersistenceSnapshot[]`(header 在 `.header` 上),旧代码直接读
30
+ `item.id` 全为 undefined,归档 id 一个也匹配不上,列表永远为空。现按
31
+ 快照形状取 header,同时兼容 0.1.2 的 header 数组形状
32
+ * 修复详情/标题读取:`readFrom` 已从持久化契约移除,改为 `open(id,'read')`
33
+ 句柄读事件流(用完 close),旧 `readFrom` 仍在时优先复用
34
+ * 修复恢复/删除对历史会话失效:`locate()` 只按当前格式版本拼日志文件名,
35
+ 历史代际文件(`session.jsonl[.zstd]`、`session.v1.jsonl` 等)stat 落空,
36
+ 恢复被判「文件不存在」全部拒绝(「已恢复 0 个」)、删除谎报成功但文件
37
+ 还在。现按会话目录扫描实际代际文件(一会话一目录,目录路径不随代际
38
+ 变化);同目录的 `session*` 同名族文件视为本会话历史代际而非他者日志
39
+ * 新增失败语义 `unlocatable`:文件存在但宿主后端无 `locate` 定位钩子时,
40
+ 删除不谎报成功也不误删,按失败上报并保留文件
41
+
42
+ ### Changes
43
+
44
+ * 适配 DSH 0.1.5-alpha.1:`@deepseek-ai/dsh-typert-protocol` 依赖升至
45
+ `^0.1.5-alpha.1`,`dsh.host` 更新为 `0.1.5-alpha.1`
46
+ * 测试夹具重写为双线形状(0.1.3+ 快照 + open 句柄为默认,0.1.2 header
47
+ 数组 + readFrom 为兼容锁),新增快照形状、旧代际文件名、无 locate 降级
48
+ 三组回归用例;测试与 DSH 0.1.5-alpha.1 真实测试实例验证通过
49
+
3
50
  ## 0.3.9-alpha.0 (2026-09-08)
4
51
 
5
52
  ### Changes
package/lib/index.d.ts CHANGED
@@ -1,29 +1,42 @@
1
1
  // ── dsh.d.ts augmentations (appended by scripts/build.mjs) ──
2
- import type { Context as CordisContext } from "@deepseek-ai/cordis";
2
+ /**
3
+ * 宿主 service 面的类型接线。全部映射官方包发布的契约类型——官方包自带
4
+ * `declare module '@deepseek-ai/cordis'` 的 Context 增强(sessionPersistence /
5
+ * workspaceRegistry / sessions 三包均有),这里只需让插件编译期看到它们:
6
+ * 本文件 import 各官方包触发其模块增强,并把官方契约导出为插件内部别名。
7
+ *
8
+ * 不手写任何方法形状:宿主契约漂移(如 0.1.2→0.1.3 的 list() 快照化、
9
+ * readFrom 移除)由官方 d.ts 直接体现在 typecheck,而不是运行时才炸。
10
+ */
11
+ import '@deepseek-ai/dsh-session-persistence';
12
+ import '@deepseek-ai/dsh-workspace';
13
+ import '@deepseek-ai/dsh-session';
14
+ import type { SessionPersistenceSnapshot, SessionHandle, SessionLocation } from '@deepseek-ai/dsh-session-persistence';
15
+ import type { Workspace, WorkspaceRegistry } from '@deepseek-ai/dsh-workspace';
16
+ import type { Session, SessionEvent, SessionHeader, SessionId, SessionStore } from '@deepseek-ai/dsh-session';
17
+ import type { SessionTitleEventData } from '@deepseek-ai/dsh-session-title';
3
18
 
4
- declare module "@deepseek-ai/cordis" {
5
- interface Context extends CordisContext {
6
- workspaceRegistry: {
7
- [key: string]: any;
8
- [key: symbol]: any;
9
- archivedSessionIds: any;
10
- enqueueOperation(operation: () => void | Promise<void>): Promise<void>;
11
- requireState(): { archivedSessionIds: string[]; [key: string]: any };
12
- setState(next: Record<string, any>): Promise<void> | void;
13
- };
14
- sessionPersistence: {
15
- [key: string]: any;
16
- [key: symbol]: any;
17
- list(): Promise<Array<{ id: string; cwd?: string; createdAt?: number; [key: string]: any }>>;
18
- locate(meta: { id: string; [key: string]: any }): { kind: string; path: string; [key: string]: any };
19
- readFrom(id: string, offset: number): Promise<{ meta: Record<string, any>; events: Array<any> }>;
20
- };
21
- sessions: {
22
- [key: string]: any;
23
- [key: symbol]: any;
24
- get(id: string): any;
25
- };
26
- }
19
+ export type {
20
+ SessionPersistenceSnapshot,
21
+ SessionHandle,
22
+ SessionLocation,
23
+ Workspace,
24
+ WorkspaceRegistry,
25
+ Session,
26
+ SessionEvent,
27
+ SessionHeader,
28
+ SessionId,
29
+ SessionStore,
30
+ SessionTitleEventData,
31
+ };
32
+
33
+ /**
34
+ * jsonl 后端的 `locate` 诊断钩子:按会话头返回当前代际工件路径。它不在
35
+ * `SessionPersistence` 抽象契约上(0.1.3 起从基类移除),删除/恢复的物理
36
+ * 定位运行时探测它,缺失时降级为「不可定位」而非失败。
37
+ */
38
+ export interface LocatableSessionPersistence {
39
+ locate?(meta: SessionHeader): SessionLocation | undefined;
27
40
  }
28
41
 
29
42
  /**
@@ -33,16 +46,18 @@ declare module "@deepseek-ai/cordis" {
33
46
  * 会话(列表 + 会话内容只读浏览)、一次多选批量恢复归档(unarchive,
34
47
  * 会话回到会话树原位置)或彻底删除归档(删除持久化文件与归档记录)。
35
48
  *
36
- * host 端全部逻辑基于官方 service 接口(workspaceRegistry /
37
- * sessionPersistence / sessions),不依赖 dsh 内部实现:
49
+ * host 端全部逻辑基于官方 service 契约类型(@deepseek-ai/dsh-workspace /
50
+ * dsh-session / dsh-session-persistence / dsh-session-title 的官方 d.ts),
51
+ * 面向 DSH 0.1.5-alpha 宿主线,不保留旧宿主版本兼容:
38
52
  * 1. list() — archivedSessionIds ∩ sessionPersistence.list(),
39
- * 每条附带标题(从事件流折叠 session/title)、目录、
53
+ * 每条附带标题(官方 foldSessionTitle 折叠)、目录、
40
54
  * 创建时间、最后修改时间(文件 mtime)、体积与
41
55
  * live 状态(会话仍在内存中运行时禁止删除)。
42
- * 2. detail(id) — readFrom(id, 0) 只读取会话事件:标题 + 文本消息
43
- * user/assistant),供面板"查看"展开。
56
+ * 2. detail(id) — open(id,'read') 句柄只读会话事件流(标题 + 文本
57
+ * 消息 user/assistant),供面板"查看"展开。
44
58
  * 3. delete(ids) — 批量彻底删除:live 会话拒绝;逐个删除持久化文件
45
- * (locate() 定位)+ 会话目录。删除后**保留**该会话在
59
+ * (jsonl 后端的 locate() 定位,落空时按会话目录扫
60
+ * 实际代际文件)+ 会话目录。删除后**保留**该会话在
46
61
  * 归档集合中的 ghost id(不调用移除):宿主的
47
62
  * archiveSession 只改归档注册表、不停止内存会话,web
48
63
  * 客户端重连还会把旧 tab 恢复进内存——删除时若把 id
@@ -54,14 +69,18 @@ declare module "@deepseek-ai/cordis" {
54
69
  * 会话 id(文件已删的 ghost id 拒绝恢复,防止已彻底
55
70
  * 删除的会话"复活"回侧边栏);会话数据不动。
56
71
  *
57
- * 归档集合(workspaceRegistry.archivedSessionIds)的写入没有官方 API
58
- * 这里复用 registry 自身的串行化写入通道(enqueueOperation requireState
59
- * → setState,与 archiveSession 相同的路径);若 registry 内部形状变化,
60
- * 自动降级为"仅删文件",归档列表会以存在性过滤幽灵 id,功能仍正确。
72
+ * 归档集合(workspaceRegistry.archivedSessionIds)的移除没有官方 API
73
+ * (官方只有 archiveSession 方向),这里复用 registry 自身的串行化写入
74
+ * 通道(enqueueOperation requireState → setState,与 archiveSession
75
+ * 相同的路径;官方 d.ts 上为 private,运行时探测);若 registry 内部形状
76
+ * 变化,自动降级为"仅删文件",归档列表会以存在性过滤幽灵 id,功能仍正确。
61
77
  *
62
- * 本文件不依赖任何 dsh 内部包(纯 ESM + ctx.* service),可独立安装。
78
+ * 本文件运行时不依赖任何 dsh 内部包(纯 ESM + ctx.* service + 官方
79
+ * foldSessionTitle 纯函数),可独立安装;官方包仅作为 devDependency 提供
80
+ * 契约类型。
63
81
  */
64
82
  import type { Context } from '@deepseek-ai/cordis';
83
+ import type { SessionId } from '@deepseek-ai/dsh-session';
65
84
  export declare const name = "session-archive";
66
85
  /** sessions 参与 inject:删除前必须能查询 live 会话(存在即拒绝删除)。 */
67
86
  export declare const inject: string[];
@@ -93,10 +112,10 @@ export declare function createArchiveHost(ctx: Context, cfg: Record<string, any>
93
112
  detail(sessionId: string): Promise<{
94
113
  sessionId: string;
95
114
  header: {
96
- cwd: any;
97
- createdAt: any;
98
- parentSession: any;
99
- agentPreset: any;
115
+ cwd: string | null;
116
+ createdAt: number;
117
+ parentSession: SessionId | null;
118
+ agentPreset: string | null;
100
119
  };
101
120
  title: string | null;
102
121
  messageCount: number;
@@ -105,7 +124,7 @@ export declare function createArchiveHost(ctx: Context, cfg: Record<string, any>
105
124
  messages: {
106
125
  role: string;
107
126
  text: string;
108
- time: any;
127
+ time: number;
109
128
  }[];
110
129
  live: boolean;
111
130
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAYnD,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,oDAAoD;AACpD,eAAO,MAAM,MAAM,UAA0D,CAAC;AAuD9E,eAAO,MAAM,MAAM;IARjB,iCAAiC;;IAEjC,8BAA8B;;IAE9B,4BAA4B;;CAIa,CAAC;AAiE5C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAoIpE;;0BAEsB;IAChB,KAAK;;;IAUX,sCAAsC;IAChC,IAAI;;;IAeV;+CAC2C;IACrC,MAAM,YAAY,MAAM;;;YA4BxB,GAAG;YACH,SAAS;YACT,aAAa;YACb,WAAW;;;;;;;;;;;;;IAWjB;;;;;;;;;;;;OAYG;IACG,cAAc,aAAa,MAAM,EAAE;;;;;;;;IAsFzC;;;;OAIG;IACG,SAAS,aAAa,MAAM,EAAE;;;;EAwBvC;AAED,iCAAiC;AACjC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,CAmBrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAGV,SAAS,EACV,MAAM,0BAA0B,CAAC;AAgBlC,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,oDAAoD;AACpD,eAAO,MAAM,MAAM,UAA0D,CAAC;AA2D9E,eAAO,MAAM,MAAM;IARjB,iCAAiC;;IAEjC,8BAA8B;;IAE9B,4BAA4B;;CAIa,CAAC;AAyE5C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAgNpE;;0BAEsB;IAChB,KAAK;;;IAUX,sCAAsC;IAChC,IAAI;;;IAeV;+CAC2C;IACrC,MAAM,YAAY,MAAM;;;YAkCxB,GAAG;YACH,SAAS;YACT,aAAa;YACb,WAAW;;;;;;;;;;;;;IAWjB;;;;;;;;;;;;OAYG;IACG,cAAc,aAAa,MAAM,EAAE;;;;;;;;IA8FzC;;;;OAIG;IACG,SAAS,aAAa,MAAM,EAAE;;;;EAwBvC;AAED,iCAAiC;AACjC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,CAmBrD"}
package/lib/index.js CHANGED
@@ -5,16 +5,18 @@
5
5
  * 会话(列表 + 会话内容只读浏览)、一次多选批量恢复归档(unarchive,
6
6
  * 会话回到会话树原位置)或彻底删除归档(删除持久化文件与归档记录)。
7
7
  *
8
- * host 端全部逻辑基于官方 service 接口(workspaceRegistry /
9
- * sessionPersistence / sessions),不依赖 dsh 内部实现:
8
+ * host 端全部逻辑基于官方 service 契约类型(@deepseek-ai/dsh-workspace /
9
+ * dsh-session / dsh-session-persistence / dsh-session-title 的官方 d.ts),
10
+ * 面向 DSH 0.1.5-alpha 宿主线,不保留旧宿主版本兼容:
10
11
  * 1. list() — archivedSessionIds ∩ sessionPersistence.list(),
11
- * 每条附带标题(从事件流折叠 session/title)、目录、
12
+ * 每条附带标题(官方 foldSessionTitle 折叠)、目录、
12
13
  * 创建时间、最后修改时间(文件 mtime)、体积与
13
14
  * live 状态(会话仍在内存中运行时禁止删除)。
14
- * 2. detail(id) — readFrom(id, 0) 只读取会话事件:标题 + 文本消息
15
- * user/assistant),供面板"查看"展开。
15
+ * 2. detail(id) — open(id,'read') 句柄只读会话事件流(标题 + 文本
16
+ * 消息 user/assistant),供面板"查看"展开。
16
17
  * 3. delete(ids) — 批量彻底删除:live 会话拒绝;逐个删除持久化文件
17
- * (locate() 定位)+ 会话目录。删除后**保留**该会话在
18
+ * (jsonl 后端的 locate() 定位,落空时按会话目录扫
19
+ * 实际代际文件)+ 会话目录。删除后**保留**该会话在
18
20
  * 归档集合中的 ghost id(不调用移除):宿主的
19
21
  * archiveSession 只改归档注册表、不停止内存会话,web
20
22
  * 客户端重连还会把旧 tab 恢复进内存——删除时若把 id
@@ -26,15 +28,19 @@
26
28
  * 会话 id(文件已删的 ghost id 拒绝恢复,防止已彻底
27
29
  * 删除的会话"复活"回侧边栏);会话数据不动。
28
30
  *
29
- * 归档集合(workspaceRegistry.archivedSessionIds)的写入没有官方 API
30
- * 这里复用 registry 自身的串行化写入通道(enqueueOperation requireState
31
- * → setState,与 archiveSession 相同的路径);若 registry 内部形状变化,
32
- * 自动降级为"仅删文件",归档列表会以存在性过滤幽灵 id,功能仍正确。
31
+ * 归档集合(workspaceRegistry.archivedSessionIds)的移除没有官方 API
32
+ * (官方只有 archiveSession 方向),这里复用 registry 自身的串行化写入
33
+ * 通道(enqueueOperation requireState → setState,与 archiveSession
34
+ * 相同的路径;官方 d.ts 上为 private,运行时探测);若 registry 内部形状
35
+ * 变化,自动降级为"仅删文件",归档列表会以存在性过滤幽灵 id,功能仍正确。
33
36
  *
34
- * 本文件不依赖任何 dsh 内部包(纯 ESM + ctx.* service),可独立安装。
37
+ * 本文件运行时不依赖任何 dsh 内部包(纯 ESM + ctx.* service + 官方
38
+ * foldSessionTitle 纯函数),可独立安装;官方包仅作为 devDependency 提供
39
+ * 契约类型。
35
40
  */
36
41
  import { readdir, stat, rm } from 'node:fs/promises';
37
- import { basename, dirname } from 'node:path';
42
+ import { basename, dirname, join } from 'node:path';
43
+ import { foldSessionTitle } from '@deepseek-ai/dsh-session-title';
38
44
  import { createConfigStore } from './config-store.js';
39
45
  // remote 服务(侧边栏面板 UI 的读写)可选:typert-protocol 不可用时
40
46
  // 动态 import 失败,仅面板不可用,host 逻辑不注册(无其他消费者)。
@@ -85,6 +91,11 @@ async function removeSessionDirIfOwned(sessionId, filePath, warn) {
85
91
  for (const entry of entries) {
86
92
  if (entry === ownFile)
87
93
  continue;
94
+ // session*.jsonl(.zstd) 是本会话自己的历史代际(官方代际命名 session[.vN]
95
+ // .jsonl[.zstd],目录归属校验已确认整个目录属于该会话),不算他者日志;
96
+ // 其余 .jsonl 一律视为他者。
97
+ if (entry.startsWith('session.') && (entry.endsWith('.jsonl') || entry.endsWith('.jsonl.zstd')))
98
+ continue;
88
99
  if (entry.endsWith('.jsonl') || entry.endsWith('.jsonl.zstd')) {
89
100
  warn(`session-archive: session directory "${base}" holds other session logs; keeping it`);
90
101
  return;
@@ -124,6 +135,24 @@ function normalizeConfig(source, defaults = DEFAULT_CONFIG) {
124
135
  titleReadConcurrency: positiveInt(merged.titleReadConcurrency, defaults.titleReadConcurrency),
125
136
  };
126
137
  }
138
+ /**
139
+ * 读取一个会话的完整事件流与头(官方契约路径:open 一个 read 句柄再
140
+ * read(0),用完 close——不 close 会漏句柄;头从句柄上取)。
141
+ */
142
+ async function readSession(persistence, sessionId) {
143
+ const handle = await persistence.open(sessionId, 'read');
144
+ try {
145
+ const { events } = await handle.read(0);
146
+ return { header: handle.header, events: [...events] };
147
+ }
148
+ finally {
149
+ await handle.close();
150
+ }
151
+ }
152
+ /** 从快照列表里取某会话的头(ghost 分支拿 cwd 供 locate 兜底用)。 */
153
+ function headerFromList(snapshots, sessionId) {
154
+ return snapshots.find((snapshot) => snapshot.header.id === sessionId)?.header;
155
+ }
127
156
  /** 并发限制器:最多 N 个任务并行,其余排队。 */
128
157
  function limitedConcurrency(limit, tasks) {
129
158
  const results = new Array(tasks.length);
@@ -137,24 +166,14 @@ function limitedConcurrency(limit, tasks) {
137
166
  });
138
167
  return Promise.all(workers).then(() => results);
139
168
  }
140
- /** 从事件流折叠最新会话标题(与 dsh-session-title 相同的折叠规则)。 */
141
- function foldTitle(events) {
142
- for (let i = events.length - 1; i >= 0; i--) {
143
- const event = events[i];
144
- if (event && event.type === 'session/title') {
145
- const title = event.data && typeof event.data.title === 'string' ? event.data.title.trim() : '';
146
- return title.length > 0 ? title : null;
147
- }
148
- }
149
- return null;
150
- }
151
- /** 从一条消息(Message 结构)提取纯文本(text 块拼接,忽略图片/工具块)。 */
152
- function messageText(message, maxChars) {
153
- if (!message || !Array.isArray(message.content))
169
+ /** 从一条消息提取纯文本(text 块拼接,忽略图片/工具块)。
170
+ * 官方 Message.content 是 ContentBlock[],这里只取 type:'text' 的块。 */
171
+ function messageText(content, maxChars) {
172
+ if (!Array.isArray(content))
154
173
  return '';
155
174
  let text = '';
156
- for (const block of message.content) {
157
- if (block && block.type === 'text' && typeof block.text === 'string') {
175
+ for (const block of content) {
176
+ if (block && typeof block === 'object' && block.type === 'text' && typeof block.text === 'string') {
158
177
  text += block.text;
159
178
  if (text.length > maxChars)
160
179
  break;
@@ -169,10 +188,8 @@ function messageText(message, maxChars) {
169
188
  export function createArchiveHost(ctx, cfg) {
170
189
  const registry = ctx.workspaceRegistry;
171
190
  const persistence = ctx.sessionPersistence;
172
- /** 当前归档集合快照。 */
173
- const archivedSet = () => new Set(typeof registry.archivedSessionIds === 'function'
174
- ? registry.archivedSessionIds()
175
- : (Array.isArray(registry.archivedSessionIds) ? registry.archivedSessionIds : []));
191
+ /** 当前归档集合快照(官方契约:getter 返回只读 SessionId 数组)。 */
192
+ const archivedSet = () => new Set(registry.archivedSessionIds);
176
193
  /** 会话是否"活跃"(不能安全删除)。
177
194
  * 宿主的 archiveSession 只改归档注册表、不停止内存会话,web 客户端
178
195
  * 重连还会把旧 tab 恢复进内存——归档会话因此长期"内存存在"。但归档
@@ -183,23 +200,34 @@ export function createArchiveHost(ctx, cfg) {
183
200
  const isLive = (sessionId) => ctx.sessions.get(sessionId) !== undefined && !archivedSet().has(sessionId);
184
201
  /** 归档瞬间的生成流兜底:会话仍在内存且文件最近有写入(60s 内)时
185
202
  * 视为忙碌——删除文件后进行中的请求会把半截日志 append 回来。 */
186
- const isBusy = (sessionId, file) => file !== null && ctx.sessions.get(sessionId) !== undefined && Date.now() - file.mtimeMs < BUSY_WRITE_WINDOW_MS;
187
- /** 从归档集合移除若干 id(恢复用;删除不调用——见 deleteArchived),返回实际移除的 id。
203
+ const isBusy = (sessionId, file) => ctx.sessions.get(sessionId) !== undefined && Date.now() - file.mtimeMs < BUSY_WRITE_WINDOW_MS;
204
+ /**
205
+ * 从归档集合移除若干 id(恢复用;删除不调用——见 deleteArchived),返回实际移除的 id。
206
+ *
207
+ * 归档集合的移除没有官方 API(官方只有 archiveSession 方向),这里复用
208
+ * registry 自身的串行化写入通道 enqueueOperation → requireState → setState
209
+ * (与官方 archiveSession 相同的路径)。三者在 0.1.5 官方 d.ts 上是 private
210
+ * ——宿主内部形状,这里以显式断言收窄并在运行时探测可用性:形状一旦
211
+ * 变化自动降级为"仅删文件",归档列表按存在性过滤幽灵 id,功能仍正确。
212
+ *
188
213
  * confirm 在 registry 写锁临界区内逐个复核 id 是否仍可恢复(文件仍存在):
189
214
  * 存在性检查放在锁外的话,并发 deleteArchived 可在检查与移除之间删掉文件,
190
- * 结果"文件没了、归档标记也没了",内存中的会话立刻重回侧边栏。 */
215
+ * 结果"文件没了、归档标记也没了",内存中的会话立刻重回侧边栏。
216
+ */
191
217
  async function removeFromArchiveSet(ids, confirm) {
192
218
  const set = new Set(ids);
193
- const canWrite = registry !== undefined &&
194
- typeof registry.enqueueOperation === 'function' &&
195
- typeof registry.requireState === 'function' &&
196
- typeof registry.setState === 'function';
219
+ // 显式断言:私有写入通道的形状(官方 d.ts 未承诺),运行时探测兜底。
220
+ // 用索引签名绕开 private 成员的交叉归约——这是对宿主内部形状的受控依赖。
221
+ const writable = registry;
222
+ const canWrite = typeof writable.enqueueOperation === 'function' &&
223
+ typeof writable.requireState === 'function' &&
224
+ typeof writable.setState === 'function';
197
225
  if (!canWrite)
198
226
  return []; // 降级:仅删文件,列表按存在性过滤幽灵 id
199
227
  let removedIds = [];
200
- await registry.enqueueOperation(async () => {
201
- const state = registry.requireState();
202
- const current = Array.isArray(state.archivedSessionIds) ? state.archivedSessionIds : [];
228
+ await writable.enqueueOperation(async () => {
229
+ const state = writable.requireState();
230
+ const current = [...state.archivedSessionIds];
203
231
  let eligible = current.filter((id) => set.has(id));
204
232
  if (confirm !== undefined) {
205
233
  const confirmed = [];
@@ -218,37 +246,92 @@ export function createArchiveHost(ctx, cfg) {
218
246
  const removedSet = new Set(removedIds);
219
247
  const remaining = current.filter((id) => !removedSet.has(id));
220
248
  if (removedIds.length > 0)
221
- await registry.setState({ ...state, archivedSessionIds: remaining });
249
+ await writable.setState({ ...state, archivedSessionIds: remaining });
222
250
  });
223
251
  return removedIds;
224
252
  }
225
- /** 归档会话的文件信息(路径 + stat),会话文件缺失时返回 null。 */
253
+ /**
254
+ * 解析会话目录里的实际日志文件。locate() 只按当前格式版本拼文件名
255
+ * (如 session.v2.jsonl.zstd),而历史上落盘的可能是旧代际名
256
+ * (session.jsonl / session.v1.jsonl…,0.1.5 的代际解析把 v0 起全部
257
+ * 视为合法代际)——stat 落空不等于会话不存在。官方布局是"一会话一
258
+ * 目录",目录路径不随代际变化,因此在 locate 给出的目录里扫描
259
+ * session*.jsonl(.zstd) 取实际文件(多个代际并存时取最新 mtime)。
260
+ * 扫描结果为空才认定文件不存在。
261
+ */
262
+ async function resolveGenerationFile(dir) {
263
+ let entries;
264
+ try {
265
+ entries = await readdir(dir);
266
+ }
267
+ catch {
268
+ return null; // 目录不存在:无任何代际文件
269
+ }
270
+ let latest = null;
271
+ for (const entry of entries) {
272
+ if (!entry.startsWith('session.') || !(entry.endsWith('.jsonl') || entry.endsWith('.jsonl.zstd')))
273
+ continue;
274
+ const candidate = join(dir, entry);
275
+ try {
276
+ const info = await stat(candidate);
277
+ if (latest === null || info.mtimeMs > latest.mtimeMs)
278
+ latest = { path: candidate, mtimeMs: info.mtimeMs };
279
+ }
280
+ catch { } // 竞态消失的条目跳过
281
+ }
282
+ return latest?.path ?? null;
283
+ }
226
284
  async function fileInfo(header) {
227
285
  try {
286
+ if (typeof persistence.locate !== 'function')
287
+ return { state: 'unknown' };
228
288
  const location = persistence.locate(header);
229
- if (location === undefined || typeof location.path !== 'string' || location.path.length === 0)
230
- return null;
231
- const info = await stat(location.path);
232
- return { path: location.path, size: info.size, mtimeMs: info.mtimeMs };
289
+ if (location === undefined || typeof location.path !== 'string' || location.path.length === 0) {
290
+ return { state: 'unknown' };
291
+ }
292
+ // 先试 locate 的当前代际路径,落空再扫会话目录里的实际代际文件。
293
+ const candidatePaths = [location.path];
294
+ const generation = await resolveGenerationFile(dirname(location.path));
295
+ if (generation !== null)
296
+ candidatePaths.unshift(generation);
297
+ for (const candidate of candidatePaths) {
298
+ try {
299
+ const info = await stat(candidate);
300
+ return { state: 'located', path: candidate, size: info.size, mtimeMs: info.mtimeMs };
301
+ }
302
+ catch { } // ENOENT 或竞态:试下一个候选
303
+ }
304
+ return { state: 'absent' };
233
305
  }
234
306
  catch {
235
- return null;
307
+ return { state: 'absent' };
236
308
  }
237
309
  }
238
- /** ghost 分支的孤儿探测:不经持久化枚举,直接 locate({id}) + stat 判断文件
310
+ /** ghost 分支的孤儿探测:不经持久化枚举,直接 locate(header) + stat 判断文件
239
311
  * 是否实际存在(persistence.list() 会静默跳过首行损坏的日志,"枚举不到"
240
312
  * 不等于"文件不存在")。cwd 未知的 ghost id 只能探到缺省位置(_no-cwd 一类),
241
- * 尽力而为。返回存在的路径;无法定位或不存在返回 null。 */
242
- async function probeOrphanFile(sessionId) {
313
+ * 尽力而为;locate 指向的当前代际名落空时同样扫目录里的实际代际文件。
314
+ * 返回存在的路径;'absent' 确认不存在;无法定位返回 'unknown'。 */
315
+ async function probeOrphanFile(sessionId, cwd) {
243
316
  try {
244
- const location = persistence.locate({ id: sessionId });
245
- if (location === undefined || typeof location.path !== 'string' || location.path.length === 0)
246
- return null;
247
- await stat(location.path);
248
- return location.path;
317
+ if (typeof persistence.locate !== 'function')
318
+ return 'unknown';
319
+ // ghost 探测没有完整 header(cwd 未知时只能探到缺省位置一类)。
320
+ // 合成最小头:version 用官方 SESSION_FORMAT_VERSION 的当前字面(3),
321
+ // locate 只消费 id/cwd 两个字段。
322
+ const location = persistence.locate({ id: sessionId, cwd, createdAt: 0, version: 3, isSeeded: false });
323
+ if (location === undefined || typeof location.path !== 'string' || location.path.length === 0) {
324
+ return 'unknown';
325
+ }
326
+ try {
327
+ await stat(location.path);
328
+ return location.path;
329
+ }
330
+ catch { }
331
+ return await resolveGenerationFile(dirname(location.path)) ?? 'absent';
249
332
  }
250
333
  catch {
251
- return null;
334
+ return 'absent';
252
335
  }
253
336
  }
254
337
  /** 删除后的复验:先等 settleMs 给进行中的写入留出落盘时间,再确认文件没有
@@ -266,34 +349,41 @@ export function createArchiveHost(ctx, cfg) {
266
349
  }
267
350
  }
268
351
  /** 单个归档会话的展示行。标题读取失败回退 null(面板显示目录名)。
269
- * 标题按 mtime 缓存:jsonl 后端没有后缀读取钩子,readFrom(id,0) 会解析
270
- * 整条事件流,而面板关闭态的徽标轮询每 5 秒打一次 list——不缓存的话
271
- * 就是"读整本会话只为取一行标题"的持续开销。mtime 不变即命中缓存。 */
352
+ * 标题按 mtime 缓存:readSession 会解析整条事件流,而面板关闭态的徽标
353
+ * 轮询每 5 秒打一次 list——不缓存的话就是"读整本会话只为取一行标题"的
354
+ * 持续开销。mtime 不变即命中缓存;文件不可定位(无 locate 的宿主后端)
355
+ * 时跳过缓存直接读,标题仍然可得。折叠用官方 foldSessionTitle。 */
272
356
  const titleCache = new Map();
273
357
  async function rowFor(sessionId, header) {
274
358
  const file = await fileInfo(header);
359
+ const located = file.state === 'located' ? file : null;
275
360
  let title = null;
276
- if (file !== null) {
361
+ if (located !== null) {
277
362
  const cached = titleCache.get(sessionId);
278
- if (cached !== undefined && cached.mtimeMs === file.mtimeMs) {
363
+ if (cached !== undefined && cached.mtimeMs === located.mtimeMs) {
279
364
  title = cached.title;
280
365
  }
281
366
  else {
282
367
  try {
283
- const { events } = await persistence.readFrom(sessionId, 0);
284
- title = foldTitle(events);
368
+ title = foldSessionTitle((await readSession(persistence, sessionId)).events)?.title ?? null;
285
369
  }
286
370
  catch { }
287
- titleCache.set(sessionId, { mtimeMs: file.mtimeMs, title });
371
+ titleCache.set(sessionId, { mtimeMs: located.mtimeMs, title });
288
372
  }
289
373
  }
374
+ else {
375
+ try {
376
+ title = foldSessionTitle((await readSession(persistence, sessionId)).events)?.title ?? null;
377
+ }
378
+ catch { }
379
+ }
290
380
  return {
291
381
  sessionId,
292
382
  title,
293
383
  cwd: header.cwd ?? null,
294
384
  createdAt: header.createdAt,
295
- updatedAt: file !== null ? file.mtimeMs : header.createdAt,
296
- size: file !== null ? file.size : 0,
385
+ updatedAt: located !== null ? located.mtimeMs : header.createdAt,
386
+ size: located !== null ? located.size : 0,
297
387
  live: isLive(sessionId),
298
388
  };
299
389
  }
@@ -305,8 +395,8 @@ export function createArchiveHost(ctx, cfg) {
305
395
  const archived = [...archivedSet()];
306
396
  if (archived.length === 0)
307
397
  return { count: 0 };
308
- const headers = await persistence.list();
309
- const persisted = new Set(headers.map((header) => header.id));
398
+ const snapshots = await persistence.list();
399
+ const persisted = new Set(snapshots.map((snapshot) => snapshot.header.id));
310
400
  let count = 0;
311
401
  for (const sessionId of archived)
312
402
  if (persisted.has(sessionId))
@@ -318,8 +408,8 @@ export function createArchiveHost(ctx, cfg) {
318
408
  const archived = [...archivedSet()];
319
409
  if (archived.length === 0)
320
410
  return { items: [] };
321
- const headers = await persistence.list();
322
- const byId = new Map(headers.map((header) => [header.id, header]));
411
+ const snapshots = await persistence.list();
412
+ const byId = new Map(snapshots.map((snapshot) => [snapshot.header.id, snapshot.header]));
323
413
  const rows = [];
324
414
  for (const sessionId of archived) {
325
415
  const header = byId.get(sessionId);
@@ -336,8 +426,9 @@ export function createArchiveHost(ctx, cfg) {
336
426
  if (!archivedSet().has(sessionId)) {
337
427
  throw Object.assign(new Error('session not archived: ' + sessionId), { code: 'NOT_ARCHIVED' });
338
428
  }
339
- const { meta, events } = await persistence.readFrom(sessionId, 0);
340
- const title = foldTitle(events);
429
+ const id = sessionId;
430
+ const { header: meta, events } = await readSession(persistence, id);
431
+ const title = foldSessionTitle(events)?.title ?? null;
341
432
  const messages = [];
342
433
  let totalMessageCount = 0;
343
434
  for (const event of events) {
@@ -349,7 +440,9 @@ export function createArchiveHost(ctx, cfg) {
349
440
  totalMessageCount++;
350
441
  continue;
351
442
  }
352
- const text = messageText(event.data, cfg.messagePreviewChars);
443
+ // 官方事件 data:user/message 是 UserMessage 本体(content 在自身),
444
+ // assistant/message 是包装对象(content 在 .message.content)。
445
+ const text = messageText(event.type === 'user/message' ? event.data.content : event.data.message.content, cfg.messagePreviewChars);
353
446
  if (text.length === 0)
354
447
  continue;
355
448
  messages.push({
@@ -372,7 +465,7 @@ export function createArchiveHost(ctx, cfg) {
372
465
  totalMessageCount,
373
466
  truncated: totalMessageCount > messages.length,
374
467
  messages,
375
- live: isLive(sessionId),
468
+ live: isLive(id),
376
469
  };
377
470
  },
378
471
  /**
@@ -396,14 +489,15 @@ export function createArchiveHost(ctx, cfg) {
396
489
  // 会话,不校验的话任何"未归档、不在内存"的会话 id 都会绕过 live/busy
397
490
  // 两道保护被不可逆物理删除。
398
491
  const archived = archivedSet();
399
- const headers = await persistence.list();
400
- const headersById = new Map(headers.map((item) => [item.id, item]));
492
+ const snapshots = await persistence.list();
493
+ const headersById = new Map(snapshots.map((snapshot) => [snapshot.header.id, snapshot.header]));
401
494
  for (const sessionId of unique) {
495
+ const id = sessionId;
402
496
  if (!archived.has(sessionId)) {
403
497
  failed.push({ sessionId, reason: 'not-archived' });
404
498
  continue;
405
499
  }
406
- if (isLive(sessionId)) {
500
+ if (isLive(id)) {
407
501
  failed.push({ sessionId, reason: 'live' });
408
502
  continue;
409
503
  }
@@ -411,9 +505,11 @@ export function createArchiveHost(ctx, cfg) {
411
505
  if (header === undefined) {
412
506
  // ghost id(枚举不到)。但"枚举不到 ≠ 文件不存在":首行损坏的日志
413
507
  // 会被 persistence.list() 静默跳过,直接当 ghost 报成功会把永远
414
- // 删不掉的孤儿文件留在磁盘上。先 locate({id}) 探测,探到文件即
415
- // "有文件但不可枚举",计入 failed 而非谎报成功。
416
- if ((await probeOrphanFile(sessionId)) !== null) {
508
+ // 删不掉的孤儿文件留在磁盘上。先 locate(header) 探测,探到文件即
509
+ // "有文件但不可枚举",计入 failed 而非谎报成功;定位钩子缺失
510
+ // (unknown)同样不能确认缺失,按不可枚举兜底。
511
+ const orphan = await probeOrphanFile(id, headerFromList(snapshots, sessionId)?.cwd);
512
+ if (orphan !== 'absent') {
417
513
  failed.push({ sessionId, reason: 'unenumerable' });
418
514
  continue;
419
515
  }
@@ -422,11 +518,16 @@ export function createArchiveHost(ctx, cfg) {
422
518
  continue;
423
519
  }
424
520
  const file = await fileInfo(header);
425
- if (file === null) {
521
+ if (file.state === 'unknown') {
522
+ // 文件存在(枚举得到)但无法定位路径:删不得也不该谎报成功。
523
+ failed.push({ sessionId, reason: 'unlocatable' });
524
+ continue;
525
+ }
526
+ if (file.state === 'absent') {
426
527
  deleted.push(sessionId);
427
528
  continue;
428
529
  }
429
- if (isBusy(sessionId, file)) {
530
+ if (isBusy(id, file)) {
430
531
  failed.push({ sessionId, reason: 'busy' });
431
532
  continue;
432
533
  }
@@ -485,8 +586,8 @@ export function createArchiveHost(ctx, cfg) {
485
586
  */
486
587
  async unarchive(sessionIds) {
487
588
  const unique = [...new Set(sessionIds)];
488
- const headers = await persistence.list();
489
- const headersById = new Map(headers.map((item) => [item.id, item]));
589
+ const snapshots = await persistence.list();
590
+ const headersById = new Map(snapshots.map((snapshot) => [snapshot.header.id, snapshot.header]));
490
591
  // 锁外先做一遍廉价过滤(明显不可恢复的直接淘汰),锁内由 confirm 复核,
491
592
  // 消除与并发 deleteArchived 的检查-移除窗口。
492
593
  const candidates = [];
@@ -501,7 +602,7 @@ export function createArchiveHost(ctx, cfg) {
501
602
  if (header === undefined)
502
603
  return false;
503
604
  const file = await fileInfo(header);
504
- return file !== null; // 有记录无文件:拒绝恢复
605
+ return file.state === 'located'; // located 才确认文件在:absent 拒绝,unknown 谨慎拒绝
505
606
  });
506
607
  return { restored, removedFromArchive: restored.length };
507
608
  },
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.9-alpha.0",
3
+ "version": "0.3.9-alpha.2",
4
4
  "description": "DSH plugin: browse archived sessions, inspect their content, batch-restore or permanently delete them with multi-select",
5
5
  "engines": {
6
6
  "node": ">=22.19.0"
@@ -23,7 +23,7 @@
23
23
  "./package.json": "./package.json"
24
24
  },
25
25
  "dsh": {
26
- "host": "0.1.3-alpha.2",
26
+ "host": "0.1.5-alpha.1",
27
27
  "bundle": {
28
28
  "patch": "./cordis.patch.yml"
29
29
  },
@@ -37,7 +37,14 @@
37
37
  }
38
38
  },
39
39
  "optionalDependencies": {
40
- "@deepseek-ai/dsh-typert-protocol": "^0.1.3-alpha.2"
40
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.1"
41
+ },
42
+ "devDependencies": {
43
+ "@deepseek-ai/dsh-scope": "^0.1.5-alpha.1",
44
+ "@deepseek-ai/dsh-session": "^0.1.5-alpha.1",
45
+ "@deepseek-ai/dsh-session-persistence": "^0.1.5-alpha.1",
46
+ "@deepseek-ai/dsh-session-title": "^0.1.5-alpha.1",
47
+ "@deepseek-ai/dsh-workspace": "^0.1.5-alpha.1"
41
48
  },
42
49
  "repository": {
43
50
  "type": "git",