Guard closed isolated workspaces on issues

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
dotta 2026-04-04 13:04:34 -05:00
parent 4993b5338c
commit 65818c3447
7 changed files with 372 additions and 85 deletions

View file

@ -0,0 +1,19 @@
import type { ExecutionWorkspace } from "./types/workspace-runtime.js";
type ExecutionWorkspaceGuardTarget = Pick<ExecutionWorkspace, "closedAt" | "mode" | "name" | "status">;
const CLOSED_EXECUTION_WORKSPACE_STATUSES = new Set<ExecutionWorkspace["status"]>(["archived", "cleanup_failed"]);
export function isClosedIsolatedExecutionWorkspace(
workspace: Pick<ExecutionWorkspaceGuardTarget, "closedAt" | "mode" | "status"> | null | undefined,
): boolean {
if (!workspace) return false;
if (workspace.mode !== "isolated_workspace") return false;
return workspace.closedAt != null || CLOSED_EXECUTION_WORKSPACE_STATUSES.has(workspace.status);
}
export function getClosedIsolatedExecutionWorkspaceMessage(
workspace: Pick<ExecutionWorkspaceGuardTarget, "name">,
): string {
return `This issue is linked to the closed workspace "${workspace.name}". Move it to an open workspace before adding comments or resuming work.`;
}

View file

@ -351,6 +351,11 @@ export {
DEFAULT_FEEDBACK_DATA_SHARING_TERMS_VERSION,
} from "./types/feedback.js";
export {
getClosedIsolatedExecutionWorkspaceMessage,
isClosedIsolatedExecutionWorkspace,
} from "./execution-workspace-guards.js";
export {
instanceGeneralSettingsSchema,
patchInstanceGeneralSettingsSchema,