Add issue document revision restore flow

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
dotta 2026-03-26 08:24:57 -05:00
parent 66aa65f8f7
commit b0b9809732
13 changed files with 12345 additions and 141 deletions

View file

@ -0,0 +1,8 @@
ALTER TABLE "document_revisions" ADD COLUMN "title" text;--> statement-breakpoint
ALTER TABLE "document_revisions" ADD COLUMN "format" text DEFAULT 'markdown' NOT NULL;--> statement-breakpoint
UPDATE "document_revisions" AS "dr"
SET
"title" = "d"."title",
"format" = COALESCE("d"."format", 'markdown')
FROM "documents" AS "d"
WHERE "d"."id" = "dr"."document_id";

File diff suppressed because it is too large Load diff

View file

@ -316,6 +316,13 @@
"when": 1774269579794,
"tag": "0044_illegal_toad",
"breakpoints": true
},
{
"idx": 45,
"version": "7",
"when": 1774531054196,
"tag": "0045_breezy_dexter_bennett",
"breakpoints": true
}
]
}

View file

@ -10,6 +10,8 @@ export const documentRevisions = pgTable(
companyId: uuid("company_id").notNull().references(() => companies.id),
documentId: uuid("document_id").notNull().references(() => documents.id, { onDelete: "cascade" }),
revisionNumber: integer("revision_number").notNull(),
title: text("title"),
format: text("format").notNull().default("markdown"),
body: text("body").notNull(),
changeSummary: text("change_summary"),
createdByAgentId: uuid("created_by_agent_id").references(() => agents.id, { onDelete: "set null" }),

View file

@ -387,6 +387,7 @@ export {
issueDocumentFormatSchema,
issueDocumentKeySchema,
upsertIssueDocumentSchema,
restoreIssueDocumentRevisionSchema,
type CreateIssue,
type CreateIssueLabel,
type UpdateIssue,
@ -399,6 +400,7 @@ export {
type UpdateExecutionWorkspace,
type IssueDocumentFormat,
type UpsertIssueDocument,
type RestoreIssueDocumentRevision,
createGoalSchema,
updateGoalSchema,
type CreateGoal,

View file

@ -81,6 +81,8 @@ export interface DocumentRevision {
issueId: string;
key: string;
revisionNumber: number;
title: string | null;
format: DocumentFormat;
body: string;
changeSummary: string | null;
createdByAgentId: string | null;

View file

@ -128,6 +128,7 @@ export {
issueDocumentFormatSchema,
issueDocumentKeySchema,
upsertIssueDocumentSchema,
restoreIssueDocumentRevisionSchema,
type CreateIssue,
type CreateIssueLabel,
type UpdateIssue,
@ -138,6 +139,7 @@ export {
type CreateIssueAttachmentMetadata,
type IssueDocumentFormat,
type UpsertIssueDocument,
type RestoreIssueDocumentRevision,
} from "./issue.js";
export {

View file

@ -118,5 +118,8 @@ export const upsertIssueDocumentSchema = z.object({
baseRevisionId: z.string().uuid().nullable().optional(),
});
export const restoreIssueDocumentRevisionSchema = z.object({});
export type IssueDocumentFormat = z.infer<typeof issueDocumentFormatSchema>;
export type UpsertIssueDocument = z.infer<typeof upsertIssueDocumentSchema>;
export type RestoreIssueDocumentRevision = z.infer<typeof restoreIssueDocumentRevisionSchema>;