dsh-mobile-plugin 0.1.73 → 0.1.75

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.
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * envelope.js 信封拆解(unwrap / envelopeValue),唯一的实现
12
12
  * rpc.js 对宿主 apiProxy 的窄接口封装(callSessions / callAgentPresets)
13
- * session-cache.js 按 ctx 隔离的八张状态表,全部 WeakMap 集中在这里
13
+ * session-cache.js 按 ctx 隔离的状态表,全部 WeakMap 集中在这里
14
14
  * attachments.js 图片附件还原
15
15
  * completion.js 完成提醒状态机
16
16
  * session-models.js 模型目录与切模型
@@ -34,7 +34,7 @@ const { listTitle, deriveMessages, lastMessageOf, promptErrorObject, MODEL_UNAVA
34
34
  const { unwrap } = require('./envelope.js');
35
35
  const { callSessions } = require('./rpc.js');
36
36
  const {
37
- canonicalDeviceKey, sessionListResponseState, invalidateSessionList,
37
+ canonicalDeviceKey, sessionListResponseState, invalidateSessionList, deletedSessionIdsOf,
38
38
  sessionPreviewStateOf, sessionPreviewInFlightStateOf, sessionPreviewClockOf,
39
39
  completionGenerationOf, bumpCompletionGeneration,
40
40
  completionStateOf, sessionModelsStateOf, invalidateSessionModels, sendIdempotencyStateOf,
@@ -223,12 +223,13 @@ async function buildSessionsResponse(ctx, deviceKey = 'legacy', generation = com
223
223
  }
224
224
  // 归档会话在这里剔除,与桌面端侧边栏行为一致:宿主 sessions.list 自己不过滤归档,
225
225
  // 「哪些会话已归档」只存在于 workspaceRegistry.archivedSessionIds(见 workspaceSessionFlags)。
226
+ // 清理时已删日志的 ID 也要压住:宿主 list 或 workspace.list 的短暂旧快照不能让它们复活。
226
227
  // archivedOnly(App 的「只看已归档」筛选视图)反过来只保留归档里的那些行:默认视图藏
227
228
  // 它们,筛选视图正是为了把它们找回来(查看 / 取消归档)。
229
+ const deleted = deletedSessionIdsOf(ctx);
228
230
  const { archived, pinned } = await workspaceSessionFlags(ctx);
229
- const allSummaries = archivedOnly
230
- ? summaries.filter(s => s && archived.has(s.sessionId))
231
- : summaries.filter(s => s && !archived.has(s.sessionId));
231
+ const allSummaries = summaries.filter((item) => item && !deleted.has(item.sessionId)
232
+ && (archivedOnly === archived.has(item.sessionId)));
232
233
  // 状态跟踪覆盖完整列表,不能受预览补全上限影响。
233
234
  const completionStatesForContext = updateCompletionStates(ctx, allSummaries, deviceKey);
234
235
  // 列表完整返回:侧边栏分组依赖全部会话(工作区 sessionIds 排序 + 未分组兜底),