import equal from "fast-deep-equal"; import type { ScriptStatusUpdateMessage } from "@server/shared/messages"; import type { WorkspaceDescriptor } from "@/stores/session-store"; import { resolveWorkspaceMapKeyByIdentity } from "@/utils/workspace-execution"; export function patchWorkspaceScripts( workspaces: Map, update: ScriptStatusUpdateMessage["payload"], ): Map { const workspaceKey = resolveWorkspaceMapKeyByIdentity({ workspaces, workspaceId: update.workspaceId, }); if (!workspaceKey) { return workspaces; } const existing = workspaces.get(workspaceKey); if (!existing) { return workspaces; } if (equal(existing.scripts, update.scripts)) { return workspaces; } const next = new Map(workspaces); next.set(workspaceKey, { ...existing, scripts: update.scripts.map((s) => ({ ...s })), }); return next; }