rip: enterprise dirs + paywalls — full AGPL, no commercial-license code

Drop the dual-licensed `ee/` tree entirely. All features previously
locked behind the Hanzo Dataroom Commercial License are now part of the
AGPL-3.0 core and freely available — custom domains, branded viewing,
advanced analytics, watermarks, access controls, Q&A, AI vector stores,
workflows, SAML SSO, dataroom invitations, conversations, templates.

Layout changes:
* `ee/features/{ai,conversations,workflows,permissions,storage,templates,
  dataroom-invitations,access-notifications,security,conversions}/` →
  `features/<name>/` (AGPL).
* `ee/limits/` → `lib/billing/limits/` with every plan resolving to an
  unlimited profile (no users/links/documents/domains/datarooms cap,
  conversations and watermarks always on).
* `ee/stripe/` → `lib/billing/legacy/` (already a compat shim over
  `@hanzoai/commerce`; renewal-reminder webhook is now a no-op).
* `ee/features/billing/cancellation/` deleted. Pause/unpause/cancel/
  retention routes now compile against `lib/billing/cancellation.ts`
  stubs that return 410 Gone; `isTeamPaused`/`isTeamPausedById` in
  `lib/billing/paused.ts` always report active. `CancellationModal` is
  a no-op shim in `components/billing/`.
* `app/(ee)/api/*` route group folded into `app/api/*` (SAML auth,
  SCIM, AI chat, workflows, FAQ, link-upload).

Build: `npm run build` green.
This commit is contained in:
Hanzo AI
2026-06-07 11:46:48 -07:00
parent caf8fa1053
commit d4f4071ee4
198 changed files with 359 additions and 425 deletions
-1
View File
@@ -1 +0,0 @@
../ee/LICENSE.md
-1
View File
@@ -1 +0,0 @@
../ee/README.md
+5 -5
View File
@@ -1,10 +1,10 @@
import { NextRequest } from "next/server";
import { generateChatTitle } from "@/ee/features/ai/lib/chat/generate-chat-title";
import { getFilteredDataroomDocumentIds } from "@/ee/features/ai/lib/chat/get-filtered-dataroom-document-ids";
import { sendMessage } from "@/ee/features/ai/lib/chat/send-message";
import { validateChatAccess } from "@/ee/features/ai/lib/permissions/validate-chat-access";
import { sendMessageSchema } from "@/ee/features/ai/schemas/chat";
import { generateChatTitle } from "@/features/ai/lib/chat/generate-chat-title";
import { getFilteredDataroomDocumentIds } from "@/features/ai/lib/chat/get-filtered-dataroom-document-ids";
import { sendMessage } from "@/features/ai/lib/chat/send-message";
import { validateChatAccess } from "@/features/ai/lib/permissions/validate-chat-access";
import { sendMessageSchema } from "@/features/ai/schemas/chat";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
+1 -1
View File
@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from "next/server";
import { validateChatAccess } from "@/ee/features/ai/lib/permissions/validate-chat-access";
import { validateChatAccess } from "@/features/ai/lib/permissions/validate-chat-access";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
+2 -2
View File
@@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from "next/server";
import { createChat } from "@/ee/features/ai/lib/chat/create-chat";
import { createChatSchema } from "@/ee/features/ai/schemas/chat";
import { createChat } from "@/features/ai/lib/chat/create-chat";
import { createChatSchema } from "@/features/ai/schemas/chat";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
import { z } from "zod";
@@ -4,8 +4,8 @@ import {
SUPPORTED_AI_CONTENT_TYPES,
addFileToVectorStoreTask,
processDocumentForAITask,
} from "@/ee/features/ai/lib/trigger";
import { createDataroomVectorStore } from "@/ee/features/ai/lib/vector-stores/create-dataroom-vector-store";
} from "@/features/ai/lib/trigger";
import { createDataroomVectorStore } from "@/features/ai/lib/vector-stores/create-dataroom-vector-store";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
@@ -4,9 +4,9 @@ import {
addFileToVectorStoreTask,
processDocumentForAITask,
SUPPORTED_AI_CONTENT_TYPES,
} from "@/ee/features/ai/lib/trigger";
import { createTeamVectorStore } from "@/ee/features/ai/lib/vector-stores/create-team-vector-store";
import { removeFileFromVectorStore } from "@/ee/features/ai/lib/vector-stores/remove-file-from-vector-store";
} from "@/features/ai/lib/trigger";
import { createTeamVectorStore } from "@/features/ai/lib/vector-stores/create-team-vector-store";
import { removeFileFromVectorStore } from "@/features/ai/lib/vector-stores/remove-file-from-vector-store";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
+1 -1
View File
@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from "next/server";
import { getVectorStoreInfo } from "@/ee/features/ai/lib/vector-stores/get-vector-store-info";
import { getVectorStoreInfo } from "@/features/ai/lib/vector-stores/get-vector-store-info";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
+2 -2
View File
@@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from "next/server";
import { reportDeniedAccessAttempt } from "@/ee/features/access-notifications";
import { getTeamStorageConfigById } from "@/ee/features/storage/config";
import { reportDeniedAccessAttempt } from "@/features/access-notifications";
import { getTeamStorageConfigById } from "@/features/storage/config";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { ItemType, LinkAudienceType } from "@prisma/client";
import { ipAddress, waitUntil } from "@vercel/functions";
+2 -2
View File
@@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from "next/server";
import { reportDeniedAccessAttempt } from "@/ee/features/access-notifications";
import { getTeamStorageConfigById } from "@/ee/features/storage/config";
import { reportDeniedAccessAttempt } from "@/features/access-notifications";
import { getTeamStorageConfigById } from "@/features/storage/config";
// Import authOptions directly from the source
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { ipAddress, waitUntil } from "@vercel/functions";
@@ -1,11 +1,11 @@
import { cookies } from "next/headers";
import { NextRequest, NextResponse } from "next/server";
import { WorkflowEngine } from "@/ee/features/workflows/lib/engine";
import { WorkflowEngine } from "@/features/workflows/lib/engine";
import {
AccessRequestSchema,
VerifyEmailRequestSchema,
} from "@/ee/features/workflows/lib/types";
} from "@/features/workflows/lib/types";
import { ipAddress, waitUntil } from "@vercel/functions";
import { z } from "zod";
@@ -1,8 +1,8 @@
import { cookies } from "next/headers";
import { NextRequest, NextResponse } from "next/server";
import { WorkflowEngine } from "@/ee/features/workflows/lib/engine";
import { AccessRequestSchema } from "@/ee/features/workflows/lib/types";
import { WorkflowEngine } from "@/features/workflows/lib/engine";
import { AccessRequestSchema } from "@/features/workflows/lib/types";
import { ipAddress } from "@vercel/functions";
import { z } from "zod";
@@ -6,7 +6,7 @@ import { ratelimit } from "@/lib/redis";
import { sendOtpVerificationEmail } from "@/lib/emails/send-email-otp-verification";
import { generateOTP } from "@/lib/utils/generate-otp";
import { validateEmail } from "@/lib/utils/validate-email";
import { VerifyEmailRequestSchema } from "@/ee/features/workflows/lib/types";
import { VerifyEmailRequestSchema } from "@/features/workflows/lib/types";
// POST /app/(ee)/api/workflow-entry/[entryLinkId]/verify - Send OTP
export async function POST(
+1 -1
View File
@@ -3,7 +3,7 @@ import { NextRequest, NextResponse } from "next/server";
import {
UpdateWorkflowRequestSchema,
formatZodError,
} from "@/ee/features/workflows/lib/validation";
} from "@/features/workflows/lib/validation";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { customAlphabet } from "nanoid";
import { getServerSession } from "next-auth";
@@ -5,7 +5,7 @@ import {
formatZodError,
validateActions,
validateConditions,
} from "@/ee/features/workflows/lib/validation";
} from "@/features/workflows/lib/validation";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
import { z } from "zod";
@@ -10,8 +10,8 @@ import {
formatZodError,
validateConditions,
validateActions,
} from "@/ee/features/workflows/lib/validation";
import { ReorderStepsRequest } from "@/ee/features/workflows/lib/types";
} from "@/features/workflows/lib/validation";
import { ReorderStepsRequest } from "@/features/workflows/lib/types";
// GET /app/(ee)/api/workflows/[workflowId]/steps?teamId=xxx - List all steps
export async function GET(
+1 -1
View File
@@ -3,7 +3,7 @@ import { NextRequest, NextResponse } from "next/server";
import {
CreateWorkflowRequestSchema,
formatZodError,
} from "@/ee/features/workflows/lib/validation";
} from "@/features/workflows/lib/validation";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth";
import { z } from "zod";
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
ColumnDef,
SortingState,
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
ColumnDef,
SortingState,
+1 -1
View File
@@ -1,6 +1,6 @@
import { useEffect, useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { differenceInDays, format, startOfDay, subDays } from "date-fns";
import { CalendarIcon, ChevronDown, CrownIcon } from "lucide-react";
import { DateRange } from "react-day-picker";
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
ColumnDef,
SortingState,
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
ColumnDef,
SortingState,
+2 -2
View File
@@ -4,8 +4,8 @@ import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { useTeam } from "@/context/team-context";
import { getPriceIdFromPlan } from "@/ee/stripe/functions/get-price-id-from-plan";
import { getQuantityFromPriceId } from "@/ee/stripe/functions/get-quantity-from-plan";
import { getPriceIdFromPlan } from "@/lib/billing/legacy/functions/get-price-id-from-plan";
import { getQuantityFromPriceId } from "@/lib/billing/legacy/functions/get-quantity-from-plan";
import { toast } from "sonner";
import { useAnalytics } from "@/lib/analytics";
+16
View File
@@ -0,0 +1,16 @@
/**
* Stub `CancellationModal` — the commercial cancellation funnel was removed
* with the AGPL paywall rip. We keep the component as a no-op so existing
* call sites compile.
*/
export type CancellationModalProps = {
open?: boolean;
onOpenChange?: (open: boolean) => void;
};
export function CancellationModal(_props: CancellationModalProps) {
return null;
}
export default CancellationModal;
+1 -1
View File
@@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import { Dispatch, SetStateAction, useState } from "react";
import { useTeam } from "@/context/team-context";
import { getPriceIdFromPlan } from "@/ee/stripe/functions/get-price-id-from-plan";
import { getPriceIdFromPlan } from "@/lib/billing/legacy/functions/get-price-id-from-plan";
import Cookies from "js-cookie";
import { toast } from "sonner";
+1 -1
View File
@@ -1,6 +1,6 @@
import { Dispatch, SetStateAction } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import Cookies from "js-cookie";
import X from "@/components/shared/icons/x";
@@ -3,8 +3,8 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { CancellationModal } from "@/ee/features/billing/cancellation/components";
import { PlanEnum } from "@/ee/stripe/constants";
import { CancellationModal } from "@/components/billing/cancellation-modal";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
BanIcon,
CirclePauseIcon,
@@ -4,8 +4,8 @@ import { useEffect, useMemo, useState } from "react";
import React from "react";
import { useTeam } from "@/context/team-context";
import { getStripe } from "@/ee/stripe/client";
import { PLANS } from "@/ee/stripe/utils";
import { getStripe } from "@/lib/billing/legacy/client";
import { PLANS } from "@/lib/billing/legacy/utils";
import { CheckIcon } from "lucide-react";
import { Button } from "@/components/ui/button";
@@ -5,10 +5,10 @@ import { useEffect, useMemo, useState } from "react";
import React from "react";
import { useTeam } from "@/context/team-context";
import { getStripe } from "@/ee/stripe/client";
import { Feature, PlanEnum, getPlanFeatures } from "@/ee/stripe/constants";
import { getPriceIdFromPlan } from "@/ee/stripe/functions/get-price-id-from-plan";
import { PLANS } from "@/ee/stripe/utils";
import { getStripe } from "@/lib/billing/legacy/client";
import { Feature, PlanEnum, getPlanFeatures } from "@/lib/billing/legacy/constants";
import { getPriceIdFromPlan } from "@/lib/billing/legacy/functions/get-price-id-from-plan";
import { PLANS } from "@/lib/billing/legacy/utils";
import {
CheckIcon,
CircleHelpIcon,
+4 -4
View File
@@ -5,10 +5,10 @@ import { useEffect, useMemo, useState } from "react";
import React from "react";
import { useTeam } from "@/context/team-context";
import { getStripe } from "@/ee/stripe/client";
import { Feature, PlanEnum, getPlanFeatures } from "@/ee/stripe/constants";
import { getPriceIdFromPlan } from "@/ee/stripe/functions/get-price-id-from-plan";
import { PLANS } from "@/ee/stripe/utils";
import { getStripe } from "@/lib/billing/legacy/client";
import { Feature, PlanEnum, getPlanFeatures } from "@/lib/billing/legacy/constants";
import { getPriceIdFromPlan } from "@/lib/billing/legacy/functions/get-price-id-from-plan";
import { PLANS } from "@/lib/billing/legacy/utils";
import { CheckIcon, CircleHelpIcon, Users2Icon, XIcon } from "lucide-react";
import { useAnalytics } from "@/lib/analytics";
+3 -3
View File
@@ -5,9 +5,9 @@ import { useRouter } from "next/router";
import { Dispatch, SetStateAction, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum, getPlanFeatures } from "@/ee/stripe/constants";
import { getPriceIdFromPlan } from "@/ee/stripe/functions/get-price-id-from-plan";
import { PLANS } from "@/ee/stripe/utils";
import { PlanEnum, getPlanFeatures } from "@/lib/billing/legacy/constants";
import { getPriceIdFromPlan } from "@/lib/billing/legacy/functions/get-price-id-from-plan";
import { PLANS } from "@/lib/billing/legacy/utils";
import Cookies from "js-cookie";
import { CheckIcon, Sparkles, X } from "lucide-react";
import { AnimatePresence, motion } from "motion/react";
+2 -2
View File
@@ -1,7 +1,7 @@
"use client";
import { ConversationListItem as ConversationListItemEE } from "@/ee/features/conversations/components/dashboard/conversation-list-item";
import { ConversationMessage as ConversationMessageEE } from "@/ee/features/conversations/components/shared/conversation-message";
import { ConversationListItem as ConversationListItemEE } from "@/features/conversations/components/dashboard/conversation-list-item";
import { ConversationMessage as ConversationMessageEE } from "@/features/conversations/components/shared/conversation-message";
export function ConversationListItem(props: any) {
return <ConversationListItemEE {...props} />;
@@ -1,6 +1,6 @@
import { useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
FileJson,
FileSlidersIcon,
@@ -1,6 +1,6 @@
import { useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { ListOrderedIcon } from "lucide-react";
import { toast } from "sonner";
+1 -1
View File
@@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
Brain,
BriefcaseIcon,
@@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { E164Number } from "libphonenumber-js";
import { toast } from "sonner";
import { mutate } from "swr";
@@ -1,7 +1,7 @@
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { useUninvitedMembers } from "@/ee/features/dataroom-invitations/lib/swr/use-dataroom-invitations";
import { useUninvitedMembers } from "@/features/dataroom-invitations/lib/swr/use-dataroom-invitations";
import {
MailCheckIcon,
MoreHorizontalIcon,
@@ -40,7 +40,7 @@ import {
import { TimestampTooltip } from "@/components/ui/timestamp-tooltip";
import { VisitorAvatar } from "@/components/visitors/visitor-avatar";
import { InviteViewersModal } from "../../../ee/features/dataroom-invitations/components/invite-viewers-modal";
import { InviteViewersModal } from "@/features/dataroom-invitations/components/invite-viewers-modal";
import { AddGroupMemberModal } from "./add-member-modal";
export default function GroupMemberTable({
@@ -2,7 +2,7 @@ import Link from "next/link";
import { Dispatch, SetStateAction, useMemo, useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { CircleHelpIcon, Tag } from "lucide-react";
import { toast } from "sonner";
import { mutate } from "swr";
@@ -2,8 +2,8 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useLimits } from "@/ee/limits/swr-handler";
import { PlanEnum } from "@/ee/stripe/constants";
import { useLimits } from "@/lib/billing/limits/swr-handler";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { toast } from "sonner";
import { mutate } from "swr";
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { FormEvent, useEffect, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { DefaultPermissionStrategy } from "@prisma/client";
import { parsePageId } from "notion-utils";
import { toast } from "sonner";
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { useEffect, useRef, useState } from "react";
import { TeamContextType } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import {
BetweenHorizontalStartIcon,
ChevronRight,
+2 -2
View File
@@ -4,8 +4,8 @@ import { useRouter } from "next/router";
import { useEffect, useRef, useState } from "react";
import { useTeam } from "@/context/team-context";
import { DocumentAIDialog } from "@/ee/features/ai/components/document-ai-dialog";
import { PlanEnum } from "@/ee/stripe/constants";
import { DocumentAIDialog } from "@/features/ai/components/document-ai-dialog";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { Document, DocumentVersion } from "@prisma/client";
import {
ArrowRightIcon,
+1 -1
View File
@@ -1,7 +1,7 @@
import { type ElementType, useEffect, useRef, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { LinkType } from "@prisma/client";
import { AlertTriangleIcon, CircleCheckIcon, InfoIcon } from "lucide-react";
import { toast } from "sonner";
+1 -1
View File
@@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { toast } from "sonner";
import { mutate } from "swr";
import { z } from "zod";
+1 -1
View File
@@ -3,7 +3,7 @@ import React, { useEffect, useState } from "react";
import { initialState } from "@/context/team-context";
import { useTeam } from "@/context/team-context";
import { TeamContextType } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { InfoIcon, ShieldAlertIcon } from "lucide-react";
import { signOut, useSession } from "next-auth/react";
+1 -1
View File
@@ -1,7 +1,7 @@
import { Dispatch, SetStateAction, useEffect, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import Cookies from "js-cookie";
import { CrownIcon } from "lucide-react";
@@ -1,3 +1,3 @@
import ConversationSection from "@/ee/features/conversations/components/dashboard/link-option-conversation-section";
import ConversationSection from "@/features/conversations/components/dashboard/link-option-conversation-section";
export default ConversationSection;
@@ -3,7 +3,7 @@
import {
DataroomLinkSheet as DataroomLinkSheetEE,
type ItemPermission as ItemPermissionEE,
} from "@/ee/features/permissions/components/dataroom-link-sheet";
} from "@/features/permissions/components/dataroom-link-sheet";
export type ItemPermission = ItemPermissionEE;
@@ -9,7 +9,7 @@ import {
} from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { Domain, LinkType } from "@prisma/client";
import { ShuffleIcon } from "lucide-react";
import { customAlphabet } from "nanoid";
+1 -1
View File
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { Dispatch, SetStateAction, useEffect, useRef, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { LinkAudienceType, LinkPreset, LinkType } from "@prisma/client";
import { RefreshCwIcon } from "lucide-react";
import { useHotkeys } from "react-hotkeys-hook";
+1 -1
View File
@@ -1,6 +1,6 @@
import { useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { LinkAudienceType, LinkType } from "@prisma/client";
import { LinkPreset } from "@prisma/client";
import { ChevronDown } from "lucide-react";
@@ -1,6 +1,6 @@
"use client";
import { PermissionsSheet as PermissionsSheetEE } from "@/ee/features/permissions/components/permissions-sheet";
import { PermissionsSheet as PermissionsSheetEE } from "@/features/permissions/components/permissions-sheet";
export function PermissionsSheet(props: any) {
return <PermissionsSheetEE {...props} />;
@@ -2,7 +2,7 @@ import Link from "next/link";
import { Dispatch, SetStateAction, useMemo, useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { CircleHelpIcon, Tag } from "lucide-react";
import { toast } from "sonner";
import { mutate } from "swr";
+3 -3
View File
@@ -3,9 +3,9 @@ import { useRouter } from "next/router";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useTeam } from "@/context/team-context";
import { InviteViewersModal } from "@/ee/features/dataroom-invitations/components/invite-viewers-modal";
import { invitationEmailSchema } from "@/ee/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { PlanEnum } from "@/ee/stripe/constants";
import { InviteViewersModal } from "@/features/dataroom-invitations/components/invite-viewers-modal";
import { invitationEmailSchema } from "@/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { DocumentVersion, LinkAudienceType } from "@prisma/client";
import { isWithinInterval, subMinutes } from "date-fns";
import {
+1 -1
View File
@@ -5,7 +5,7 @@ import { useRouter } from "next/router";
import * as React from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { CrownIcon } from "lucide-react";
import { cn } from "@/lib/utils";
+1 -1
View File
@@ -7,7 +7,7 @@ import * as React from "react";
import { useEffect, useState } from "react";
import { TeamContextType, initialState, useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import Cookies from "js-cookie";
import {
BrushIcon,
+1 -1
View File
@@ -3,7 +3,7 @@
import Link from "next/link";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { ChevronRight, CrownIcon, type LucideIcon } from "lucide-react";
import { useAnalytics } from "@/lib/analytics";
+2 -2
View File
@@ -2,8 +2,8 @@
import * as React from "react";
import { useLimits } from "@/ee/limits/swr-handler";
import { PlanEnum } from "@/ee/stripe/constants";
import { useLimits } from "@/lib/billing/limits/swr-handler";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { ChevronsUpDown, UserRoundPlusIcon } from "lucide-react";
import { usePlan } from "@/lib/swr/use-billing";
import { Team } from "@/lib/types";
+1 -1
View File
@@ -1,6 +1,6 @@
import { ChangeEvent, FormEventHandler, useMemo, useRef } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { usePlan } from "@/lib/swr/use-billing";
import { TagColorProps } from "@/lib/types";
+1 -1
View File
@@ -1,6 +1,6 @@
import React from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { LockIcon } from "lucide-react";
import { cn } from "@/lib/utils";
+1 -1
View File
@@ -1,6 +1,6 @@
import React, { ButtonHTMLAttributes, useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { CrownIcon } from "lucide-react";
import { cn } from "@/lib/utils";
+1 -1
View File
@@ -3,7 +3,7 @@
import {
ConversationSidebarProps,
ConversationViewSidebar as ConversationViewSidebarEE,
} from "@/ee/features/conversations/components/viewer/conversation-view-sidebar";
} from "@/features/conversations/components/viewer/conversation-view-sidebar";
export function ConversationSidebar(props: ConversationSidebarProps) {
return <ConversationViewSidebarEE {...props} />;
+1 -1
View File
@@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import React, { useEffect, useState } from "react";
import { useViewerChatSafe } from "@/ee/features/ai/components/viewer-chat-provider";
import { useViewerChatSafe } from "@/features/ai/components/viewer-chat-provider";
import { Brand, DataroomBrand } from "@prisma/client";
import {
ArrowUpRight,
+3 -3
View File
@@ -1,11 +1,11 @@
import dynamic from "next/dynamic";
import { ViewerChatPanel } from "@/ee/features/ai/components/viewer-chat-panel";
import { ViewerChatPanel } from "@/features/ai/components/viewer-chat-panel";
import {
ViewerChatLayout,
ViewerChatProvider,
} from "@/ee/features/ai/components/viewer-chat-provider";
import { ViewerChatToggle } from "@/ee/features/ai/components/viewer-chat-toggle";
} from "@/features/ai/components/viewer-chat-provider";
import { ViewerChatToggle } from "@/features/ai/components/viewer-chat-toggle";
import {
Brand,
DataroomBrand,
+3 -3
View File
@@ -3,12 +3,12 @@ import { useRouter } from "next/router";
import { useEffect, useMemo, useState } from "react";
import React from "react";
import { ViewerChatPanel } from "@/ee/features/ai/components/viewer-chat-panel";
import { ViewerChatPanel } from "@/features/ai/components/viewer-chat-panel";
import {
ViewerChatLayout,
ViewerChatProvider,
} from "@/ee/features/ai/components/viewer-chat-provider";
import { ViewerChatToggle } from "@/ee/features/ai/components/viewer-chat-toggle";
} from "@/features/ai/components/viewer-chat-provider";
import { ViewerChatToggle } from "@/features/ai/components/viewer-chat-toggle";
import {
DataroomBrand,
DataroomFolder,
@@ -1,4 +1,4 @@
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { CrownIcon } from "lucide-react";
import { UpgradePlanModal } from "@/components/billing/upgrade-plan-modal";
+1 -1
View File
@@ -3,7 +3,7 @@ import Link from "next/link";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { DocumentVersion } from "@prisma/client";
import {
AlertTriangleIcon,
@@ -1,6 +1,6 @@
import { useState } from "react";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { LinkAudienceType, LinkType } from "@prisma/client";
import { LinkPreset } from "@prisma/client";
+1 -1
View File
@@ -3,7 +3,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { E164Number } from "libphonenumber-js";
import { motion } from "motion/react";
import { toast } from "sonner";
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
import { DocumentStorageType } from "@prisma/client";
import { toFile } from "openai";
import path from "path";
@@ -1,6 +1,6 @@
import { logger, metadata, task } from "@trigger.dev/sdk/v3";
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
import type { AddToVectorStorePayload } from "./types";
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
import { logger, metadata, task } from "@trigger.dev/sdk/v3";
import path from "path";
import * as XLSX from "xlsx";
@@ -1,5 +1,5 @@
import { vertex } from "@/ee/features/ai/lib/models/google";
import { openai } from "@/ee/features/ai/lib/models/openai";
import { vertex } from "@/features/ai/lib/models/google";
import { openai } from "@/features/ai/lib/models/openai";
import { logger, metadata, task } from "@trigger.dev/sdk/v3";
import { generateText } from "ai";
import path from "path";
@@ -1,7 +1,7 @@
import { logger, metadata, task } from "@trigger.dev/sdk/v3";
import path from "path";
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
import { getFile } from "@/lib/files/get-file";
import prisma from "@/lib/prisma";
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
/**
* Create a vector store for a dataroom
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
/**
* Create a vector store for a team
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
/**
* Delete a vector store
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
import { type OpenAI } from "openai";
/**
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
/**
* Remove a file from a vector store
@@ -1,4 +1,4 @@
import { openai } from "@/ee/features/ai/lib/models/openai";
import { openai } from "@/features/ai/lib/models/openai";
interface VectorStoreFileOptions {
vectorStoreId: string;
@@ -1,6 +1,6 @@
import { NextApiRequest, NextApiResponse } from "next";
import { sendConversationNotification } from "@/ee/features/conversations/emails/lib/send-conversation-notification";
import { sendConversationNotification } from "@/features/conversations/emails/lib/send-conversation-notification";
import prisma from "@/lib/prisma";
import { log } from "@/lib/utils";
@@ -1,6 +1,6 @@
import { NextApiRequest, NextApiResponse } from "next";
import { sendConversationTeamNotification } from "@/ee/features/conversations/emails/lib/send-conversation-team-notification";
import { sendConversationTeamNotification } from "@/features/conversations/emails/lib/send-conversation-team-notification";
import { z } from "zod";
import prisma from "@/lib/prisma";
@@ -5,7 +5,7 @@ import {
faqParamSchema,
publishFAQSchema,
updateFAQSchema,
} from "@/ee/features/conversations/lib/schemas/faq";
} from "@/features/conversations/lib/schemas/faq";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth/next";
@@ -3,7 +3,7 @@ import React, { useEffect, useState } from "react";
import {
editFAQFormSchema,
faqParamSchema,
} from "@/ee/features/conversations/lib/schemas/faq";
} from "@/features/conversations/lib/schemas/faq";
import { BookOpen, Check, FileText, Link2 } from "lucide-react";
import { toast } from "sonner";
@@ -3,7 +3,7 @@ import React, { useState } from "react";
import {
faqParamSchema,
publishFAQFormSchema,
} from "@/ee/features/conversations/lib/schemas/faq";
} from "@/features/conversations/lib/schemas/faq";
import { BookOpen, Check, FileText, Link2 } from "lucide-react";
import { toast } from "sonner";
@@ -2,9 +2,9 @@
import { useState } from "react";
import { ConversationDocumentContext } from "@/ee/features/conversations/components/shared/conversation-document-context";
import { ConversationMessage } from "@/ee/features/conversations/components/shared/conversation-message";
import { FAQSection } from "@/ee/features/conversations/components/viewer/faq-section";
import { ConversationDocumentContext } from "@/features/conversations/components/shared/conversation-document-context";
import { ConversationMessage } from "@/features/conversations/components/shared/conversation-message";
import { FAQSection } from "@/features/conversations/components/viewer/faq-section";
import { format } from "date-fns";
import { ArrowLeftIcon, BellIcon, BellOffIcon, Plus } from "lucide-react";
import { toast } from "sonner";
@@ -1,4 +1,4 @@
import ConversationNotification from "@/ee/features/conversations/emails/components/conversation-notification";
import ConversationNotification from "@/features/conversations/emails/components/conversation-notification";
import { sendEmail } from "@/lib/resend";
@@ -1,4 +1,4 @@
import ConversationTeamNotification from "@/ee/features/conversations/emails/components/conversation-team-notification";
import ConversationTeamNotification from "@/features/conversations/emails/components/conversation-team-notification";
import { sendEmail } from "@/lib/resend";
@@ -3,10 +3,10 @@ import { useRouter } from "next/router";
import React, { useEffect, useState } from "react";
import { ConversationListItem } from "@/ee/features/conversations/components/dashboard/conversation-list-item";
import { PublishFAQModal } from "@/ee/features/conversations/components/dashboard/publish-faq-modal";
import { ConversationDocumentContext } from "@/ee/features/conversations/components/shared/conversation-document-context";
import { ConversationMessage } from "@/ee/features/conversations/components/shared/conversation-message";
import { ConversationListItem } from "@/features/conversations/components/dashboard/conversation-list-item";
import { PublishFAQModal } from "@/features/conversations/components/dashboard/publish-faq-modal";
import { ConversationDocumentContext } from "@/features/conversations/components/shared/conversation-document-context";
import { ConversationMessage } from "@/features/conversations/components/shared/conversation-message";
import {
BookOpenCheckIcon,
Loader2,
@@ -4,8 +4,8 @@ import { useRouter } from "next/router";
import { useEffect, useMemo, useState } from "react";
import { useTeam } from "@/context/team-context";
import { ConversationListItem } from "@/ee/features/conversations/components/dashboard/conversation-list-item";
import { ConversationsNotEnabledBanner } from "@/ee/features/conversations/components/dashboard/conversations-not-enabled-banner";
import { ConversationListItem } from "@/features/conversations/components/dashboard/conversation-list-item";
import { ConversationsNotEnabledBanner } from "@/features/conversations/components/dashboard/conversations-not-enabled-banner";
import {
BookOpenCheckIcon,
Loader2,
@@ -4,7 +4,7 @@ import { useRouter } from "next/router";
import { useState } from "react";
import { useTeam } from "@/context/team-context";
import { EditFAQModal } from "@/ee/features/conversations/components/dashboard/edit-faq-modal";
import { EditFAQModal } from "@/features/conversations/components/dashboard/edit-faq-modal";
import {
BookOpenCheckIcon,
ClockIcon,
@@ -1,6 +1,6 @@
import { NextApiRequest, NextApiResponse } from "next";
import { SendGroupInvitationSchema } from "@/ee/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { SendGroupInvitationSchema } from "@/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { LinkAudienceType, LinkType } from "@prisma/client";
import { getServerSession } from "next-auth/next";
@@ -3,7 +3,7 @@ import { NextApiRequest, NextApiResponse } from "next";
import {
SendLinkInvitationSchema,
invitationEmailSchema,
} from "@/ee/features/dataroom-invitations/lib/schema/dataroom-invitations";
} from "@/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { LinkType } from "@prisma/client";
import { getServerSession } from "next-auth/next";
@@ -1,8 +1,8 @@
import { useEffect, useMemo, useState } from "react";
import { useTeam } from "@/context/team-context";
import { invitationEmailSchema } from "@/ee/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { useUninvitedMembers } from "@/ee/features/dataroom-invitations/lib/swr/use-dataroom-invitations";
import { invitationEmailSchema } from "@/features/dataroom-invitations/lib/schema/dataroom-invitations";
import { useUninvitedMembers } from "@/features/dataroom-invitations/lib/swr/use-dataroom-invitations";
import { Link } from "@prisma/client";
import { useSession } from "next-auth/react";
import { toast } from "sonner";
@@ -1,6 +1,6 @@
import { sendEmail } from "@/lib/resend";
import DataroomViewerInvitation from "@/ee/features/dataroom-invitations/emails/components/dataroom-viewer-invitation";
import DataroomViewerInvitation from "@/features/dataroom-invitations/emails/components/dataroom-viewer-invitation";
export const sendDataroomViewerInvite = async ({
dataroomName,
@@ -3,7 +3,7 @@
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useTeam } from "@/context/team-context";
import { PlanEnum } from "@/ee/stripe/constants";
import { PlanEnum } from "@/lib/billing/legacy/constants";
import { ItemType, PermissionGroupAccessControls } from "@prisma/client";
import {
ColumnDef,
+1 -1
View File
@@ -1,7 +1,7 @@
import {
type StorageConfig,
getStorageConfig,
} from "@/ee/features/storage/config";
} from "@/features/storage/config";
import { S3 } from "@aws-sdk/client-s3";
import { S3Store } from "@tus/s3-store";
import type { Upload } from "@tus/server";
@@ -3,8 +3,8 @@ import type { NextApiRequest, NextApiResponse } from "next";
import {
DATAROOM_TEMPLATES,
FolderTemplate,
} from "@/ee/features/templates/constants/dataroom-templates";
import { applyTemplateSchema } from "@/ee/features/templates/schemas/dataroom-templates";
} from "@/features/templates/constants/dataroom-templates";
import { applyTemplateSchema } from "@/features/templates/schemas/dataroom-templates";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth/next";
+4 -4
View File
@@ -1,12 +1,12 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { isTeamPausedById } from "@/ee/features/billing/cancellation/lib/is-team-paused";
import { isTeamPausedById } from "@/lib/billing/paused";
import {
DATAROOM_TEMPLATES,
FolderTemplate,
} from "@/ee/features/templates/constants/dataroom-templates";
import { generateDataroomSchema } from "@/ee/features/templates/schemas/dataroom-templates";
import { getLimits } from "@/ee/limits/server";
} from "@/features/templates/constants/dataroom-templates";
import { generateDataroomSchema } from "@/features/templates/schemas/dataroom-templates";
import { getLimits } from "@/lib/billing/limits/server";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getServerSession } from "next-auth/next";
+1 -1
View File
@@ -1,4 +1,4 @@
import { isTeamPausedById } from "@/ee/features/billing/cancellation/lib/is-team-paused";
import { isTeamPausedById } from "@/lib/billing/paused";
import prisma from "@/lib/prisma";
import { log } from "@/lib/utils";

Some files were not shown because too many files have changed in this diff Show More