-- ADR-0028 agent configuration folder tree. One org-scoped transparent folder -- tree shared by Agent roles and skills (management-surface grouping only); -- skill name / roleId uniqueness, role→skill bindings, run-time skill loading -- and Feishu slash commands never reference folders. A folder deletes only -- when empty (service-enforced); item `folderId` references are SetNull as -- backstop. -- CreateTable CREATE TABLE "OrganizationAgentConfigFolder" ( "id" TEXT NOT NULL, "organizationId" TEXT NOT NULL, "parentId" TEXT, "name" TEXT NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "OrganizationAgentConfigFolder_pkey" PRIMARY KEY ("id") ); -- AlterTable ALTER TABLE "OrganizationAgentSkill" ADD COLUMN "folderId" TEXT; ALTER TABLE "OrganizationAgentRole" ADD COLUMN "folderId" TEXT; -- CreateIndex CREATE INDEX "OrganizationAgentConfigFolder_organizationId_parentId_idx" ON "OrganizationAgentConfigFolder"("organizationId", "parentId"); CREATE INDEX "OrganizationAgentSkill_organizationId_folderId_idx" ON "OrganizationAgentSkill"("organizationId", "folderId"); CREATE INDEX "OrganizationAgentRole_organizationId_folderId_idx" ON "OrganizationAgentRole"("organizationId", "folderId"); -- AddForeignKey ALTER TABLE "OrganizationAgentConfigFolder" ADD CONSTRAINT "OrganizationAgentConfigFolder_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "OrganizationAgentConfigFolder" ADD CONSTRAINT "OrganizationAgentConfigFolder_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "OrganizationAgentConfigFolder"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "OrganizationAgentSkill" ADD CONSTRAINT "OrganizationAgentSkill_folderId_fkey" FOREIGN KEY ("folderId") REFERENCES "OrganizationAgentConfigFolder"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "OrganizationAgentRole" ADD CONSTRAINT "OrganizationAgentRole_folderId_fkey" FOREIGN KEY ("folderId") REFERENCES "OrganizationAgentConfigFolder"("id") ON DELETE SET NULL ON UPDATE CASCADE;