fix: recover workspace publication failures

This commit is contained in:
2026-08-04 01:10:35 +02:00
parent f95a18ab0d
commit 2573d87a0e
5 changed files with 207 additions and 11 deletions
+10
View File
@@ -233,12 +233,22 @@ function errorReply(reply: FastifyReply, error: unknown) {
const body: Record<string, unknown> = { code, message: SAFE_MESSAGES[code] };
if (error instanceof WorkspaceConflictError) {
body.fields = error.fields;
body.expected = error.expected;
body.actual = error.actual;
if (error.base) body.base = error.base;
if (error.local) body.local = error.local;
if (error.remote) body.remote = error.remote;
} else if (code === "workspace_conflict" && error && typeof error === "object") {
const conflict = error as Partial<WorkspaceConflictError>;
if (Array.isArray(conflict.fields) && conflict.fields.every((field) => typeof field === "string")) body.fields = conflict.fields;
for (const key of ["expected", "actual"] as const) {
const revision = conflict[key];
if (
revision
&& typeof revision.commit === "string" && /^[0-9a-f]{40}$/.test(revision.commit)
&& (revision.blob === undefined || (typeof revision.blob === "string" && /^[0-9a-f]{40}$/.test(revision.blob)))
) body[key] = revision;
}
for (const key of ["base", "local", "remote"] as const) {
if (conflict[key] && isCanonicalWorkspace(conflict[key] as WorkspaceDescriptor)) body[key] = conflict[key];
}