Reimport archived sessions into the current workspace (#2123)
* fix(sessions): reimport archived sessions in their workspace Archived agent records were treated as active imports, hiding their provider sessions permanently. Workspace-originated imports also discarded their workspace identity and created a duplicate workspace. * fix(sessions): validate archived session restores Restore archived imports under their existing Paseo agent identity, reject stale workspace ownership, and gate workspace targeting when the host cannot honor it. * fix(sessions): roll back failed archived imports If provider resume or history hydration fails, close any partial runtime, re-archive the provider session, and restore the original stored agent record. * fix(sessions): validate restored import ownership * fix(sessions): serialize concurrent restores * fix(sessions): harden archived import recovery * fix(sessions): validate archived import placement * refactor(sessions): centralize provider session imports Keep workspace placement rollback and stored-agent activation behind their existing owners so Session remains the wire boundary.
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
||||
getPromptPreview,
|
||||
getSessionTitle,
|
||||
resolveProvidersToFetch,
|
||||
requiresImportSessionsHostUpgrade,
|
||||
type SessionsQueryResult,
|
||||
sumFilteredAlreadyImportedCount,
|
||||
} from "@/components/import-session-sheet-view-model";
|
||||
@@ -70,6 +71,35 @@ describe("resolveProvidersToFetch", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("requiresImportSessionsHostUpgrade", () => {
|
||||
it("allows home imports on hosts without workspace targeting", () => {
|
||||
expect(
|
||||
requiresImportSessionsHostUpgrade({
|
||||
supportsSnapshot: true,
|
||||
workspaceId: null,
|
||||
supportsWorkspaceTarget: false,
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("requires host support for imports opened from a workspace", () => {
|
||||
expect(
|
||||
requiresImportSessionsHostUpgrade({
|
||||
supportsSnapshot: true,
|
||||
workspaceId: "ws-current",
|
||||
supportsWorkspaceTarget: false,
|
||||
}),
|
||||
).toBe(true);
|
||||
expect(
|
||||
requiresImportSessionsHostUpgrade({
|
||||
supportsSnapshot: true,
|
||||
workspaceId: "ws-current",
|
||||
supportsWorkspaceTarget: true,
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("buildProviderLabelMap", () => {
|
||||
it("returns an empty map when snapshot entries are missing", () => {
|
||||
expect(buildProviderLabelMap(undefined).size).toBe(0);
|
||||
|
||||
Reference in New Issue
Block a user