fix: warn when /sessions falls back to live-only list (v0.3.3)

Phone showed 2 sessions because apiProxy catalog failed (pre-0.3.2 inject bug) and live-agent fallback hid cold Web sessions. Surface that mode explicitly.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
owo
2026-08-14 20:22:20 +08:00
co-authored by Cursor
parent 5dbe833205
commit 3566df945b
7 changed files with 16 additions and 7 deletions
+3 -1
View File
@@ -245,7 +245,9 @@ export class TelegramBridge {
}])),
};
const body = [
`选择工作区(共 ${workspaces.length} 个,与 Web 对齐,已排除归档):`,
catalog.complete
? `选择工作区(共 ${workspaces.length} 个,与 Web 对齐,已排除归档):`
: `选择工作区(共 ${workspaces.length} 个)⚠️ 仅运行中的会话(apiProxy 未就绪,完整列表需插件 ≥0.3.2 并重启 dsh web):`,
'',
...shown.map((ws, i) => {
const n = visibleSessionsForWorkspace(catalog, ws).length;
+2
View File
@@ -19,6 +19,8 @@ export interface CatalogSnapshot {
workspaces: WorkspaceRow[];
sessionsById: Map<string, SessionRow>;
archivedIds: Set<string>;
/** true when loaded from apiProxy (Web-aligned); false for live-agent fallback. */
complete: boolean;
}
/** Load workspaces + sessions aligned with Web UI (via apiProxy when available). */
export declare function loadCatalog(ctx: Context): Promise<CatalogSnapshot | undefined>;
+2 -2
View File
@@ -58,7 +58,7 @@ export async function loadCatalog(ctx) {
path: w.path,
sessionIds: (w.sessionIds ?? []).map(String),
}));
return { workspaces, sessionsById, archivedIds };
return { workspaces, sessionsById, archivedIds, complete: true };
}
/** Sessions visible under one workspace (Web-like filters). */
export function visibleSessionsForWorkspace(catalog, workspace) {
@@ -116,5 +116,5 @@ export function catalogFromLiveAgents(agents, ctx) {
path,
sessionIds: bucket.sessionIds,
}));
return { workspaces, sessionsById, archivedIds: new Set() };
return { workspaces, sessionsById, archivedIds: new Set(), complete: false };
}