CREATE TABLE IF NOT EXISTS "ConversationWorkingState" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "userId" uuid NOT NULL, "chatId" uuid NOT NULL, "projectId" uuid, "currentIntent" varchar(64), "currentSubIntent" varchar(64), "currentFocusAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "currentFocusImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "selectedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "selectedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastUploadedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastUploadedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastGeneratedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastGeneratedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastReferencedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastReferencedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastResolvedTargetAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastResolvedTargetImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "activeCanvasNodeIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "lastCanvasSnapshot" jsonb, "lastTurnSummary" jsonb, "lastMessageId" uuid, "turnCount" integer DEFAULT 0 NOT NULL, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp DEFAULT now() NOT NULL, CONSTRAINT "ConversationWorkingState_chatId_unique" UNIQUE("chatId") ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "MessageTargetResolution" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "userId" uuid NOT NULL, "chatId" uuid NOT NULL, "messageId" uuid, "projectId" uuid, "rawText" text NOT NULL, "uploadedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "uploadedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "selectedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "selectedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "candidateAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "candidateImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "resolvedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL, "resolvedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL, "resolutionMode" varchar(64) NOT NULL, "confidence" integer DEFAULT 0 NOT NULL, "needsClarification" boolean DEFAULT false NOT NULL, "reasoning" jsonb, "createdAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint DO $$ BEGIN ALTER TABLE "ConversationWorkingState" ADD CONSTRAINT "ConversationWorkingState_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "ConversationWorkingState" ADD CONSTRAINT "ConversationWorkingState_chatId_Chat_id_fk" FOREIGN KEY ("chatId") REFERENCES "public"."Chat"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "ConversationWorkingState" ADD CONSTRAINT "ConversationWorkingState_projectId_CanvasProject_id_fk" FOREIGN KEY ("projectId") REFERENCES "public"."CanvasProject"("id") ON DELETE set null ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_chatId_Chat_id_fk" FOREIGN KEY ("chatId") REFERENCES "public"."Chat"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_messageId_Message_v2_id_fk" FOREIGN KEY ("messageId") REFERENCES "public"."Message_v2"("id") ON DELETE set null ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_projectId_CanvasProject_id_fk" FOREIGN KEY ("projectId") REFERENCES "public"."CanvasProject"("id") ON DELETE set null ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint CREATE INDEX IF NOT EXISTS "ConversationWorkingState_user_updated_idx" ON "ConversationWorkingState"("userId", "updatedAt"); --> statement-breakpoint CREATE INDEX IF NOT EXISTS "MessageTargetResolution_chat_created_idx" ON "MessageTargetResolution"("chatId", "createdAt"); --> statement-breakpoint CREATE INDEX IF NOT EXISTS "MessageTargetResolution_message_idx" ON "MessageTargetResolution"("messageId");