Merge branch 'main' into dev

This commit is contained in:
Mohamed Boudra
2026-04-14 16:02:23 +07:00
27 changed files with 1242 additions and 198 deletions
+29 -1
View File
@@ -56,6 +56,7 @@ import type { AttachmentMetadata } from "@/attachments/types";
import { reconcilePreviousAgentStatuses } from "@/contexts/session-status-tracking";
import { patchWorkspaceScripts } from "@/contexts/session-workspace-scripts";
import { isNative } from "@/constants/platform";
import { summarizeWorkspaceCollection } from "@/utils/workspace-fetch-debug";
// Re-export types from session-store and draft-store for backward compatibility
export type { DraftInput } from "@/stores/draft-store";
@@ -349,11 +350,24 @@ function SessionProviderInternal({ children, serverId, client }: SessionProvider
let includeSubscribe = options?.subscribe ?? false;
while (true) {
console.log("[WorkspaceFetch][hydrate] request", {
serverId,
cursor,
includeSubscribe,
existingWorkspaces: summarizeWorkspaceCollection(existingWorkspaces?.values()),
});
const payload = await client.fetchWorkspaces({
sort: [{ key: "activity_at", direction: "desc" }],
...(includeSubscribe ? { subscribe: {} } : {}),
page: cursor ? { limit: 200, cursor } : { limit: 200 },
});
console.log("[WorkspaceFetch][hydrate] response", {
serverId,
cursor,
includeSubscribe,
pageInfo: payload.pageInfo,
payload: summarizeWorkspaceCollection(payload.entries),
});
if (options?.isCancelled?.()) {
return;
}
@@ -382,6 +396,11 @@ function SessionProviderInternal({ children, serverId, client }: SessionProvider
setWorkspaces(serverId, workspaces);
setHasHydratedWorkspaces(serverId, true);
console.log("[WorkspaceFetch][hydrate] applied", {
serverId,
subscribed: options?.subscribe ?? false,
nextWorkspaces: summarizeWorkspaceCollection(workspaces.values()),
});
},
[client, isConnected, serverId, setHasHydratedWorkspaces, setWorkspaces],
);
@@ -1173,7 +1192,16 @@ function SessionProviderInternal({ children, serverId, client }: SessionProvider
removeWorkspace(serverId, String(message.payload.id));
return;
}
mergeWorkspaces(serverId, [normalizeWorkspaceDescriptor(message.payload.workspace)]);
const workspace = normalizeWorkspaceDescriptor(message.payload.workspace);
const existingWorkspace = useSessionStore
.getState()
.sessions[serverId]?.workspaces.get(workspace.id);
console.log("[WorkspaceFetch][update] upsert", {
serverId,
existedInStore: Boolean(existingWorkspace),
workspace: summarizeWorkspaceCollection([workspace]),
});
mergeWorkspaces(serverId, [workspace]);
});
const unsubScriptStatusUpdate = client.on("script_status_update", (message) => {