{"version":3,"file":"static/chunks/app/[locale]/layout-b4784a95226b066e.js","mappings":"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","sources":["webpack://_N_E/?f610","webpack://_N_E/./generated/clients/ludus-service-client/requests/core/CancelablePromise.ts","webpack://_N_E/./generated/clients/ludus-service-client/requests/core/OpenAPI.ts","webpack://_N_E/./generated/clients/ludus-service-client/requests/core/ApiError.ts","webpack://_N_E/./generated/clients/ludus-service-client/requests/core/request.ts","webpack://_N_E/./generated/clients/ludus-service-client/requests/services.gen.ts","webpack://_N_E/./src/components/cookie-consent/cookie-consent.tsx","webpack://_N_E/./src/components/cookie-consent/cookie-consent-manager.tsx","webpack://_N_E/./src/components/theme-provider.tsx","webpack://_N_E/./src/components/ui/hybrid-tooltip.tsx","webpack://_N_E/./src/components/ui/sonner.tsx","webpack://_N_E/./src/components/ui/tooltip.tsx","webpack://_N_E/./src/providers/clerk-client.provider.tsx","webpack://_N_E/./src/providers/file-manager.provider.interface.tsx","webpack://_N_E/./src/utils/pagination.utils.ts","webpack://_N_E/./src/hooks/use-list-knowledge-base-folder.ts","webpack://_N_E/./src/utils/exception.utils.ts","webpack://_N_E/./src/providers/file-manager.provider.tsx","webpack://_N_E/./src/clients/openapi.config.ts","webpack://_N_E/./src/providers/query-client.provider.tsx","webpack://_N_E/./src/utils/async.utils.ts","webpack://_N_E/./src/styles/global.css","webpack://_N_E/"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/node_modules/@tanstack/react-query-devtools/build/modern/index.js\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/node_modules/next-intl/dist/esm/shared/NextIntlClientProvider.js\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/node_modules/next/font/google/target.css?{\\\"path\\\":\\\"src/app/[locale]/layout.tsx\\\",\\\"import\\\":\\\"Inter\\\",\\\"arguments\\\":[{\\\"subsets\\\":[\\\"latin\\\"],\\\"variable\\\":\\\"--font-sans\\\"}],\\\"variableName\\\":\\\"fontSans\\\"}\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/node_modules/nextjs-toploader/dist/index.js\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/components/cookie-consent/cookie-consent-manager.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/components/theme-provider.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/components/ui/hybrid-tooltip.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/components/ui/sonner.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/components/ui/tooltip.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/providers/clerk-client.provider.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/providers/file-manager.provider.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/providers/query-client.provider.tsx\");\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src835818838/src/ludus-website-next/src/styles/global.css\")","export class CancelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CancelError\";\n }\n\n public get isCancelled(): boolean {\n return true;\n }\n}\n\nexport interface OnCancel {\n readonly isResolved: boolean;\n readonly isRejected: boolean;\n readonly isCancelled: boolean;\n\n (cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise implements Promise {\n private _isResolved: boolean;\n private _isRejected: boolean;\n private _isCancelled: boolean;\n readonly cancelHandlers: (() => void)[];\n readonly promise: Promise;\n private _resolve?: (value: T | PromiseLike) => void;\n private _reject?: (reason?: unknown) => void;\n\n constructor(\n executor: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: unknown) => void,\n onCancel: OnCancel,\n ) => void,\n ) {\n this._isResolved = false;\n this._isRejected = false;\n this._isCancelled = false;\n this.cancelHandlers = [];\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n\n const onResolve = (value: T | PromiseLike): void => {\n if (this._isResolved || this._isRejected || this._isCancelled) {\n return;\n }\n this._isResolved = true;\n if (this._resolve) this._resolve(value);\n };\n\n const onReject = (reason?: unknown): void => {\n if (this._isResolved || this._isRejected || this._isCancelled) {\n return;\n }\n this._isRejected = true;\n if (this._reject) this._reject(reason);\n };\n\n const onCancel = (cancelHandler: () => void): void => {\n if (this._isResolved || this._isRejected || this._isCancelled) {\n return;\n }\n this.cancelHandlers.push(cancelHandler);\n };\n\n Object.defineProperty(onCancel, \"isResolved\", {\n get: (): boolean => this._isResolved,\n });\n\n Object.defineProperty(onCancel, \"isRejected\", {\n get: (): boolean => this._isRejected,\n });\n\n Object.defineProperty(onCancel, \"isCancelled\", {\n get: (): boolean => this._isCancelled,\n });\n\n return executor(onResolve, onReject, onCancel as OnCancel);\n });\n }\n\n get [Symbol.toStringTag]() {\n return \"Cancellable Promise\";\n }\n\n public then(\n onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onRejected?: ((reason: unknown) => TResult2 | PromiseLike) | null,\n ): Promise {\n return this.promise.then(onFulfilled, onRejected);\n }\n\n public catch(\n onRejected?: ((reason: unknown) => TResult | PromiseLike) | null,\n ): Promise {\n return this.promise.catch(onRejected);\n }\n\n public finally(onFinally?: (() => void) | null): Promise {\n return this.promise.finally(onFinally);\n }\n\n public cancel(): void {\n if (this._isResolved || this._isRejected || this._isCancelled) {\n return;\n }\n this._isCancelled = true;\n if (this.cancelHandlers.length) {\n try {\n for (const cancelHandler of this.cancelHandlers) {\n cancelHandler();\n }\n } catch (error) {\n console.warn(\"Cancellation threw an error\", error);\n return;\n }\n }\n this.cancelHandlers.length = 0;\n if (this._reject) this._reject(new CancelError(\"Request aborted\"));\n }\n\n public get isCancelled(): boolean {\n return this._isCancelled;\n }\n}\n","import type { AxiosRequestConfig, AxiosResponse } from \"axios\";\nimport type { ApiRequestOptions } from \"./ApiRequestOptions\";\n\ntype Headers = Record;\ntype Middleware = (value: T) => T | Promise;\ntype Resolver = (options: ApiRequestOptions) => Promise;\n\nexport class Interceptors {\n _fns: Middleware[];\n\n constructor() {\n this._fns = [];\n }\n\n eject(fn: Middleware): void {\n const index = this._fns.indexOf(fn);\n if (index !== -1) {\n this._fns = [...this._fns.slice(0, index), ...this._fns.slice(index + 1)];\n }\n }\n\n use(fn: Middleware): void {\n this._fns = [...this._fns, fn];\n }\n}\n\nexport type OpenAPIConfig = {\n BASE: string;\n CREDENTIALS: \"include\" | \"omit\" | \"same-origin\";\n ENCODE_PATH?: ((path: string) => string) | undefined;\n HEADERS?: Headers | Resolver | undefined;\n PASSWORD?: string | Resolver | undefined;\n TOKEN?: string | Resolver | undefined;\n USERNAME?: string | Resolver | undefined;\n VERSION: string;\n WITH_CREDENTIALS: boolean;\n interceptors: {\n request: Interceptors;\n response: Interceptors;\n };\n};\n\nexport const OpenAPI: OpenAPIConfig = {\n BASE: \"https://api.truffler.ca\",\n CREDENTIALS: \"include\",\n ENCODE_PATH: undefined,\n HEADERS: undefined,\n PASSWORD: undefined,\n TOKEN: undefined,\n USERNAME: undefined,\n VERSION: \"1\",\n WITH_CREDENTIALS: false,\n interceptors: {\n request: new Interceptors(),\n response: new Interceptors(),\n },\n};\n","import type { ApiRequestOptions } from \"./ApiRequestOptions\";\nimport type { ApiResult } from \"./ApiResult\";\n\nexport class ApiError extends Error {\n public readonly url: string;\n public readonly status: number;\n public readonly statusText: string;\n public readonly body: unknown;\n public readonly request: ApiRequestOptions;\n\n constructor(\n request: ApiRequestOptions,\n response: ApiResult,\n message: string,\n ) {\n super(message);\n\n this.name = \"ApiError\";\n this.url = response.url;\n this.status = response.status;\n this.statusText = response.statusText;\n this.body = response.body;\n this.request = request;\n }\n}\n","import axios from \"axios\";\nimport type {\n AxiosError,\n AxiosRequestConfig,\n AxiosResponse,\n AxiosInstance,\n} from \"axios\";\n\nimport { ApiError } from \"./ApiError\";\nimport type { ApiRequestOptions } from \"./ApiRequestOptions\";\nimport type { ApiResult } from \"./ApiResult\";\nimport { CancelablePromise } from \"./CancelablePromise\";\nimport type { OnCancel } from \"./CancelablePromise\";\nimport type { OpenAPIConfig } from \"./OpenAPI\";\n\nexport const isString = (value: unknown): value is string => {\n return typeof value === \"string\";\n};\n\nexport const isStringWithValue = (value: unknown): value is string => {\n return isString(value) && value !== \"\";\n};\n\nexport const isBlob = (value: any): value is Blob => {\n return value instanceof Blob;\n};\n\nexport const isFormData = (value: unknown): value is FormData => {\n return value instanceof FormData;\n};\n\nexport const isSuccess = (status: number): boolean => {\n return status >= 200 && status < 300;\n};\n\nexport const base64 = (str: string): string => {\n try {\n return btoa(str);\n } catch (err) {\n // @ts-ignore\n return Buffer.from(str).toString(\"base64\");\n }\n};\n\nexport const getQueryString = (params: Record): string => {\n const qs: string[] = [];\n\n const append = (key: string, value: unknown) => {\n qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n };\n\n const encodePair = (key: string, value: unknown) => {\n if (value === undefined || value === null) {\n return;\n }\n\n if (value instanceof Date) {\n append(key, value.toISOString());\n } else if (Array.isArray(value)) {\n value.forEach((v) => encodePair(key, v));\n } else if (typeof value === \"object\") {\n Object.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v));\n } else {\n append(key, value);\n }\n };\n\n Object.entries(params).forEach(([key, value]) => encodePair(key, value));\n\n return qs.length ? `?${qs.join(\"&\")}` : \"\";\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n const encoder = config.ENCODE_PATH || encodeURI;\n\n const path = options.url\n .replace(\"{api-version}\", config.VERSION)\n .replace(/{(.*?)}/g, (substring: string, group: string) => {\n if (options.path?.hasOwnProperty(group)) {\n return encoder(String(options.path[group]));\n }\n return substring;\n });\n\n const url = config.BASE + path;\n return options.query ? url + getQueryString(options.query) : url;\n};\n\nexport const getFormData = (\n options: ApiRequestOptions,\n): FormData | undefined => {\n if (options.formData) {\n const formData = new FormData();\n\n const process = (key: string, value: unknown) => {\n if (isString(value) || isBlob(value)) {\n formData.append(key, value);\n } else {\n formData.append(key, JSON.stringify(value));\n }\n };\n\n Object.entries(options.formData)\n .filter(([, value]) => value !== undefined && value !== null)\n .forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((v) => process(key, v));\n } else {\n process(key, value);\n }\n });\n\n return formData;\n }\n return undefined;\n};\n\ntype Resolver = (options: ApiRequestOptions) => Promise;\n\nexport const resolve = async (\n options: ApiRequestOptions,\n resolver?: T | Resolver,\n): Promise => {\n if (typeof resolver === \"function\") {\n return (resolver as Resolver)(options);\n }\n return resolver;\n};\n\nexport const getHeaders = async (\n config: OpenAPIConfig,\n options: ApiRequestOptions,\n): Promise> => {\n const [token, username, password, additionalHeaders] = await Promise.all([\n // @ts-ignore\n resolve(options, config.TOKEN),\n // @ts-ignore\n resolve(options, config.USERNAME),\n // @ts-ignore\n resolve(options, config.PASSWORD),\n // @ts-ignore\n resolve(options, config.HEADERS),\n ]);\n\n const headers = Object.entries({\n Accept: \"application/json\",\n ...additionalHeaders,\n ...options.headers,\n })\n .filter(([, value]) => value !== undefined && value !== null)\n .reduce(\n (headers, [key, value]) => ({\n ...headers,\n [key]: String(value),\n }),\n {} as Record,\n );\n\n if (isStringWithValue(token)) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n\n if (isStringWithValue(username) && isStringWithValue(password)) {\n const credentials = base64(`${username}:${password}`);\n headers[\"Authorization\"] = `Basic ${credentials}`;\n }\n\n if (options.body !== undefined) {\n if (options.mediaType) {\n headers[\"Content-Type\"] = options.mediaType;\n } else if (isBlob(options.body)) {\n headers[\"Content-Type\"] = options.body.type || \"application/octet-stream\";\n } else if (isString(options.body)) {\n headers[\"Content-Type\"] = \"text/plain\";\n } else if (!isFormData(options.body)) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n } else if (options.formData !== undefined) {\n if (options.mediaType) {\n headers[\"Content-Type\"] = options.mediaType;\n }\n }\n\n return headers;\n};\n\nexport const getRequestBody = (options: ApiRequestOptions): unknown => {\n if (options.body) {\n return options.body;\n }\n return undefined;\n};\n\nexport const sendRequest = async (\n config: OpenAPIConfig,\n options: ApiRequestOptions,\n url: string,\n body: unknown,\n formData: FormData | undefined,\n headers: Record,\n onCancel: OnCancel,\n axiosClient: AxiosInstance,\n): Promise> => {\n const controller = new AbortController();\n\n let requestConfig: AxiosRequestConfig = {\n data: body ?? formData,\n headers,\n method: options.method,\n signal: controller.signal,\n url,\n withCredentials: config.WITH_CREDENTIALS,\n };\n\n onCancel(() => controller.abort());\n\n for (const fn of config.interceptors.request._fns) {\n requestConfig = await fn(requestConfig);\n }\n\n try {\n return await axiosClient.request(requestConfig);\n } catch (error) {\n const axiosError = error as AxiosError;\n if (axiosError.response) {\n return axiosError.response;\n }\n throw error;\n }\n};\n\nexport const getResponseHeader = (\n response: AxiosResponse,\n responseHeader?: string,\n): string | undefined => {\n if (responseHeader) {\n const content = response.headers[responseHeader];\n if (isString(content)) {\n return content;\n }\n }\n return undefined;\n};\n\nexport const getResponseBody = (response: AxiosResponse): unknown => {\n if (response.status !== 204) {\n return response.data;\n }\n return undefined;\n};\n\nexport const catchErrorCodes = (\n options: ApiRequestOptions,\n result: ApiResult,\n): void => {\n const errors: Record = {\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 402: \"Payment Required\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 406: \"Not Acceptable\",\n 407: \"Proxy Authentication Required\",\n 408: \"Request Timeout\",\n 409: \"Conflict\",\n 410: \"Gone\",\n 411: \"Length Required\",\n 412: \"Precondition Failed\",\n 413: \"Payload Too Large\",\n 414: \"URI Too Long\",\n 415: \"Unsupported Media Type\",\n 416: \"Range Not Satisfiable\",\n 417: \"Expectation Failed\",\n 418: \"Im a teapot\",\n 421: \"Misdirected Request\",\n 422: \"Unprocessable Content\",\n 423: \"Locked\",\n 424: \"Failed Dependency\",\n 425: \"Too Early\",\n 426: \"Upgrade Required\",\n 428: \"Precondition Required\",\n 429: \"Too Many Requests\",\n 431: \"Request Header Fields Too Large\",\n 451: \"Unavailable For Legal Reasons\",\n 500: \"Internal Server Error\",\n 501: \"Not Implemented\",\n 502: \"Bad Gateway\",\n 503: \"Service Unavailable\",\n 504: \"Gateway Timeout\",\n 505: \"HTTP Version Not Supported\",\n 506: \"Variant Also Negotiates\",\n 507: \"Insufficient Storage\",\n 508: \"Loop Detected\",\n 510: \"Not Extended\",\n 511: \"Network Authentication Required\",\n ...options.errors,\n };\n\n const error = errors[result.status];\n if (error) {\n throw new ApiError(options, result, error);\n }\n\n if (!result.ok) {\n const errorStatus = result.status ?? \"unknown\";\n const errorStatusText = result.statusText ?? \"unknown\";\n const errorBody = (() => {\n try {\n return JSON.stringify(result.body, null, 2);\n } catch (e) {\n return undefined;\n }\n })();\n\n throw new ApiError(\n options,\n result,\n `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`,\n );\n }\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @param axiosClient The axios client instance to use\n * @returns CancelablePromise\n * @throws ApiError\n */\nexport const request = (\n config: OpenAPIConfig,\n options: ApiRequestOptions,\n axiosClient: AxiosInstance = axios,\n): CancelablePromise => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n try {\n const url = getUrl(config, options);\n const formData = getFormData(options);\n const body = getRequestBody(options);\n const headers = await getHeaders(config, options);\n\n if (!onCancel.isCancelled) {\n let response = await sendRequest(\n config,\n options,\n url,\n body,\n formData,\n headers,\n onCancel,\n axiosClient,\n );\n\n for (const fn of config.interceptors.response._fns) {\n response = await fn(response);\n }\n\n const responseBody = getResponseBody(response);\n const responseHeader = getResponseHeader(\n response,\n options.responseHeader,\n );\n\n let transformedBody = responseBody;\n if (options.responseTransformer && isSuccess(response.status)) {\n transformedBody = await options.responseTransformer(responseBody);\n }\n\n const result: ApiResult = {\n url,\n ok: isSuccess(response.status),\n status: response.status,\n statusText: response.statusText,\n body: responseHeader ?? transformedBody,\n };\n\n catchErrorCodes(options, result);\n\n resolve(result.body);\n }\n } catch (error) {\n reject(error);\n }\n });\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { CancelablePromise } from \"./core/CancelablePromise\";\nimport { OpenAPI } from \"./core/OpenAPI\";\nimport { request as __request } from \"./core/request\";\nimport type {\n CreateKnowledgeBaseFileUploadData,\n CreateKnowledgeBaseFileUploadResponse,\n GetKnowledgeBasesForUserData,\n GetKnowledgeBasesForUserResponse,\n CreateKnowledgeBaseData,\n CreateKnowledgeBaseResponse,\n GetKnowledgeBaseData,\n GetKnowledgeBaseResponse,\n UserUpdateKnowledgeBaseData,\n UserUpdateKnowledgeBaseResponse,\n FindKnowledgeBaseFilesData,\n FindKnowledgeBaseFilesResponse,\n GetKnowledgeBaseFileData,\n GetKnowledgeBaseFileResponse,\n UserUpdateKnowledgeBaseFileData,\n UserUpdateKnowledgeBaseFileResponse,\n DeleteKnowledgeBaseFileData,\n DeleteKnowledgeBaseFileResponse,\n GetKnowledgeBaseFileUrlData,\n GetKnowledgeBaseFileUrlResponse,\n GetKnowledgeBaseFileAudioTranscriptUrlData,\n GetKnowledgeBaseFileAudioTranscriptUrlResponse,\n MoveKnowledgeBaseFilesData,\n MoveKnowledgeBaseFilesResponse,\n FindKnowledgeBaseFoldersData,\n FindKnowledgeBaseFoldersResponse,\n CreateKnowledgeBaseFolderData,\n CreateKnowledgeBaseFolderResponse,\n GetKnowledgeBaseFolderData,\n GetKnowledgeBaseFolderResponse,\n UserUpdateKnowledgeBaseFolderData,\n UserUpdateKnowledgeBaseFolderResponse,\n DeleteKnowledgeBaseFolderData,\n DeleteKnowledgeBaseFolderResponse,\n MoveKnowledgeBaseFoldersData,\n MoveKnowledgeBaseFoldersResponse,\n GetKnowledgeBaseFileSolverTasksForUserData,\n GetKnowledgeBaseFileSolverTasksForUserResponse,\n GetKnowledgeBaseLayerConnectionsData,\n GetKnowledgeBaseLayerConnectionsResponse,\n CreateChatSessionData,\n CreateChatSessionResponse,\n AskKnowledgeBaseChatStreamData,\n AskKnowledgeBaseChatStreamResponse,\n GetCurrentUserResponse,\n CreateCheckoutSessionData,\n CreateCheckoutSessionResponse,\n GetSubscriptionUsageForUserResponse,\n ClerkUserWebhookResponse,\n StripeWebhookResponse,\n CreateSolverTaskData,\n CreateSolverTaskResponse,\n GetSolverTaskData,\n GetSolverTaskResponse,\n GetApplicationAuthData,\n GetApplicationAuthResponse,\n HandleGoogleAuthCallbackData,\n HandleGoogleAuthCallbackResponse,\n SearchLayersData,\n SearchLayersResponse,\n GetLayerData,\n GetLayerResponse,\n EditLayerData,\n EditLayerResponse,\n GetUserLayerStarData,\n GetUserLayerStarResponse,\n AddUserLayerStarData,\n AddUserLayerStarResponse,\n RemoveUserLayerStarData,\n RemoveUserLayerStarResponse,\n GetLayerConnectionsData,\n GetLayerConnectionsResponse,\n GetLayerUserConnectionsData,\n GetLayerUserConnectionsResponse,\n GetLayersForUserResponse,\n CreateLayerData,\n CreateLayerResponse,\n EditLayerOverviewData,\n EditLayerOverviewResponse,\n SubscribeToLayerData,\n SubscribeToLayerResponse,\n UnsubscribeToLayerData,\n UnsubscribeToLayerResponse,\n PublishToLayerData,\n PublishToLayerResponse,\n UnpublishToLayerData,\n UnpublishToLayerResponse,\n} from \"./types.gen\";\n\nexport class KnowledgeBaseService {\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.requestBody\n * @returns CreateKnowledgeBaseFileUploadResponseDto\n * @throws ApiError\n */\n public static createKnowledgeBaseFileUpload(\n data: CreateKnowledgeBaseFileUploadData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/knowledge-bases/{kbId}/files/upload\",\n path: {\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.limit\n * @param data.permission\n * @param data.nextCursor\n * @returns GetKnowledgeBasesForUserResponseDto\n * @throws ApiError\n */\n public static getKnowledgeBasesForUser(\n data: GetKnowledgeBasesForUserData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases\",\n query: {\n permission: data.permission,\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns KnowledgeBaseEntity\n * @throws ApiError\n */\n public static createKnowledgeBase(\n data: CreateKnowledgeBaseData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/knowledge-bases\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.includeLayerConnections\n * @returns KnowledgeBaseEntity\n * @throws ApiError\n */\n public static getKnowledgeBase(\n data: GetKnowledgeBaseData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}\",\n path: {\n kbId: data.kbId,\n },\n query: {\n includeLayerConnections: data.includeLayerConnections,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.requestBody\n * @returns KnowledgeBaseEntity\n * @throws ApiError\n */\n public static userUpdateKnowledgeBase(\n data: UserUpdateKnowledgeBaseData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"PUT\",\n url: \"/v1/knowledge-bases/{kbId}\",\n path: {\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.limit\n * @param data.parentFolderId\n * @param data.location\n * @param data.includeUploader\n * @param data.includeMetadata\n * @param data.nextCursor\n * @returns FindKnowledgeBaseFilesResponseDto\n * @throws ApiError\n */\n public static findKnowledgeBaseFiles(\n data: FindKnowledgeBaseFilesData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/files\",\n path: {\n kbId: data.kbId,\n },\n query: {\n parentFolderId: data.parentFolderId,\n location: data.location,\n includeUploader: data.includeUploader,\n includeMetadata: data.includeMetadata,\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.fileId\n * @param data.kbId\n * @param data.location\n * @param data.includeThumbnail\n * @returns KnowledgeBaseFileEntity\n * @throws ApiError\n */\n public static getKnowledgeBaseFile(\n data: GetKnowledgeBaseFileData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/files/{fileId}\",\n path: {\n fileId: data.fileId,\n kbId: data.kbId,\n },\n query: {\n location: data.location,\n includeThumbnail: data.includeThumbnail,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.fileId\n * @param data.kbId\n * @param data.requestBody\n * @returns KnowledgeBaseFileEntity\n * @throws ApiError\n */\n public static userUpdateKnowledgeBaseFile(\n data: UserUpdateKnowledgeBaseFileData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"PUT\",\n url: \"/v1/knowledge-bases/{kbId}/files/{fileId}\",\n path: {\n fileId: data.fileId,\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.fileId\n * @param data.kbId\n * @returns KnowledgeBaseFileEntity\n * @throws ApiError\n */\n public static deleteKnowledgeBaseFile(\n data: DeleteKnowledgeBaseFileData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"DELETE\",\n url: \"/v1/knowledge-bases/{kbId}/files/{fileId}\",\n path: {\n fileId: data.fileId,\n kbId: data.kbId,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.fileId\n * @param data.kbId\n * @param data.inline\n * @param data.source\n * @returns GetKnowledgeBaseFileUrlResponseDto\n * @throws ApiError\n */\n public static getKnowledgeBaseFileUrl(\n data: GetKnowledgeBaseFileUrlData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/files/{fileId}/file-url\",\n path: {\n fileId: data.fileId,\n kbId: data.kbId,\n },\n query: {\n inline: data.inline,\n source: data.source,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.fileId\n * @param data.kbId\n * @param data.inline\n * @returns GetKnowledgeBaseFileAudioTranscriptUrlResponseDto\n * @throws ApiError\n */\n public static getKnowledgeBaseFileAudioTranscriptUrl(\n data: GetKnowledgeBaseFileAudioTranscriptUrlData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/files/{fileId}/audio-transcript-url\",\n path: {\n fileId: data.fileId,\n kbId: data.kbId,\n },\n query: {\n inline: data.inline,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.requestBody\n * @returns KnowledgeBaseFileEntity\n * @throws ApiError\n */\n public static moveKnowledgeBaseFiles(\n data: MoveKnowledgeBaseFilesData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/knowledge-bases/{kbId}/files/move\",\n path: {\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.limit\n * @param data.parentFolderId\n * @param data.location\n * @param data.includeUploader\n * @param data.includeNestedParentFolders\n * @param data.nextCursor\n * @returns FindKnowledgeBaseFoldersResponseDto\n * @throws ApiError\n */\n public static findKnowledgeBaseFolders(\n data: FindKnowledgeBaseFoldersData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/folders\",\n path: {\n kbId: data.kbId,\n },\n query: {\n parentFolderId: data.parentFolderId,\n location: data.location,\n includeUploader: data.includeUploader,\n includeNestedParentFolders: data.includeNestedParentFolders,\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.requestBody\n * @returns KnowledgeBaseFolderEntity\n * @throws ApiError\n */\n public static createKnowledgeBaseFolder(\n data: CreateKnowledgeBaseFolderData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/knowledge-bases/{kbId}/folders\",\n path: {\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.folderId\n * @param data.kbId\n * @param data.location\n * @param data.includeUploader\n * @param data.includeNestedParentFolders\n * @returns KnowledgeBaseFolderEntity\n * @throws ApiError\n */\n public static getKnowledgeBaseFolder(\n data: GetKnowledgeBaseFolderData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/folders/{folderId}\",\n path: {\n folderId: data.folderId,\n kbId: data.kbId,\n },\n query: {\n location: data.location,\n includeUploader: data.includeUploader,\n includeNestedParentFolders: data.includeNestedParentFolders,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.folderId\n * @param data.kbId\n * @param data.requestBody\n * @returns KnowledgeBaseFolderEntity\n * @throws ApiError\n */\n public static userUpdateKnowledgeBaseFolder(\n data: UserUpdateKnowledgeBaseFolderData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"PUT\",\n url: \"/v1/knowledge-bases/{kbId}/folders/{folderId}\",\n path: {\n folderId: data.folderId,\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.folderId\n * @param data.kbId\n * @returns KnowledgeBaseFolderEntity\n * @throws ApiError\n */\n public static deleteKnowledgeBaseFolder(\n data: DeleteKnowledgeBaseFolderData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"DELETE\",\n url: \"/v1/knowledge-bases/{kbId}/folders/{folderId}\",\n path: {\n folderId: data.folderId,\n kbId: data.kbId,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.requestBody\n * @returns KnowledgeBaseFolderEntity\n * @throws ApiError\n */\n public static moveKnowledgeBaseFolders(\n data: MoveKnowledgeBaseFoldersData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/knowledge-bases/{kbId}/folders/move\",\n path: {\n kbId: data.kbId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.fileId\n * @param data.kbId\n * @param data.limit\n * @param data.nextCursor\n * @returns GetKnowledgeBaseFileSolverTasksForUserResponseDto\n * @throws ApiError\n */\n public static getKnowledgeBaseFileSolverTasksForUser(\n data: GetKnowledgeBaseFileSolverTasksForUserData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/files/{fileId}/solver-tasks\",\n path: {\n fileId: data.fileId,\n kbId: data.kbId,\n },\n query: {\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.kbId\n * @param data.layerId\n * @param data.includeLayer\n * @param data.role\n * @returns KnowledgeBaseLayerConnectionEntity\n * @throws ApiError\n */\n public static getKnowledgeBaseLayerConnections(\n data: GetKnowledgeBaseLayerConnectionsData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/knowledge-bases/{kbId}/layers/connections\",\n path: {\n kbId: data.kbId,\n },\n query: {\n layerId: data.layerId,\n includeLayer: data.includeLayer,\n role: data.role,\n },\n });\n }\n}\n\nexport class ChatService {\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns ChatSessionEntity\n * @throws ApiError\n */\n public static createChatSession(\n data: CreateChatSessionData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/chat/session\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.chatSessionId\n * @param data.requestBody\n * @returns AskKnowledgeBaseChatResponse\n * @throws ApiError\n */\n public static askKnowledgeBaseChatStream(\n data: AskKnowledgeBaseChatStreamData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/chat/session/{chatSessionId}/ask/stream\",\n path: {\n chatSessionId: data.chatSessionId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n}\n\nexport class UserService {\n /**\n * @returns UserEntity\n * @throws ApiError\n */\n public static getCurrentUser(): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/users\",\n });\n }\n}\n\nexport class SubscriptionService {\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns CheckoutSessionEntity\n * @throws ApiError\n */\n public static createCheckoutSession(\n data: CreateCheckoutSessionData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/subscription/checkout\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @returns UserSubscriptionUsageEntity\n * @throws ApiError\n */\n public static getSubscriptionUsageForUser(): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/subscription/usage\",\n });\n }\n}\n\nexport class ClerkWebhookService {\n /**\n * @returns UserEntity\n * @throws ApiError\n */\n public static clerkUserWebhook(): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/webhooks/clerk/user\",\n });\n }\n}\n\nexport class StripeWebhookService {\n /**\n * @returns unknown\n * @throws ApiError\n */\n public static stripeWebhook(): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/webhooks/stripe/subscription\",\n });\n }\n}\n\nexport class SolverTaskService {\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns SolverTaskEntity\n * @throws ApiError\n */\n public static createSolverTask(\n data: CreateSolverTaskData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/solver-tasks\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.solverTaskId\n * @param data.includeOutput\n * @returns SolverTaskEntity\n * @throws ApiError\n */\n public static getSolverTask(\n data: GetSolverTaskData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/solver-tasks/{solverTaskId}\",\n path: {\n solverTaskId: data.solverTaskId,\n },\n query: {\n includeOutput: data.includeOutput,\n },\n });\n }\n}\n\nexport class ConnectorService {\n /**\n * @param data The data for the request.\n * @param data.application\n * @returns ApplicationConnectionAuthEntity\n * @throws ApiError\n */\n public static getApplicationAuth(\n data: GetApplicationAuthData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/connectors/auth\",\n query: {\n application: data.application,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns unknown\n * @throws ApiError\n */\n public static handleGoogleAuthCallback(\n data: HandleGoogleAuthCallbackData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/connectors/auth/google-drive/callback\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n}\n\nexport class KnowledgeBaseLayerService {\n /**\n * @param data The data for the request.\n * @param data.limit\n * @param data.searchQuery\n * @param data.sortBy\n * @param data.isFeatured\n * @param data.nextCursor\n * @returns SearchLayersResponseDto\n * @throws ApiError\n */\n public static searchLayers(\n data: SearchLayersData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/layers/search\",\n query: {\n searchQuery: data.searchQuery,\n sortBy: data.sortBy,\n isFeatured: data.isFeatured,\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @param data.includeOverview\n * @returns KnowledgeBaseLayerEntity\n * @throws ApiError\n */\n public static getLayer(\n data: GetLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/layers/{layerId}\",\n path: {\n layerId: data.layerId,\n },\n query: {\n includeOverview: data.includeOverview,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @param data.requestBody\n * @returns KnowledgeBaseLayerEntity\n * @throws ApiError\n */\n public static editLayer(\n data: EditLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"PUT\",\n url: \"/v1/layers/{layerId}\",\n path: {\n layerId: data.layerId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @returns UserLayerStarEntity\n * @throws ApiError\n */\n public static getUserLayerStar(\n data: GetUserLayerStarData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/layers/{layerId}/star\",\n path: {\n layerId: data.layerId,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @returns unknown\n * @throws ApiError\n */\n public static addUserLayerStar(\n data: AddUserLayerStarData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"PUT\",\n url: \"/v1/layers/{layerId}/star\",\n path: {\n layerId: data.layerId,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @returns unknown\n * @throws ApiError\n */\n public static removeUserLayerStar(\n data: RemoveUserLayerStarData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"DELETE\",\n url: \"/v1/layers/{layerId}/star\",\n path: {\n layerId: data.layerId,\n },\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @param data.limit\n * @param data.role\n * @param data.nextCursor\n * @returns GetLayerConnectionsResponseDto\n * @throws ApiError\n */\n public static getLayerConnections(\n data: GetLayerConnectionsData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/layers/{layerId}/connections\",\n path: {\n layerId: data.layerId,\n },\n query: {\n role: data.role,\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * This one fetches connections to knowledge bases the user has at least owner access to\n * @param data The data for the request.\n * @param data.layerId\n * @param data.limit\n * @param data.role\n * @param data.nextCursor\n * @returns GetLayerUserConnectionsResponseDto\n * @throws ApiError\n */\n public static getLayerUserConnections(\n data: GetLayerUserConnectionsData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/layers/{layerId}/user-connections\",\n path: {\n layerId: data.layerId,\n },\n query: {\n role: data.role,\n limit: data.limit,\n nextCursor: data.nextCursor,\n },\n });\n }\n\n /**\n * @returns GetLayersForUserResponseDto\n * @throws ApiError\n */\n public static getLayersForUser(): CancelablePromise {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v1/layers\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns KnowledgeBaseLayerEntity\n * @throws ApiError\n */\n public static createLayer(\n data: CreateLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/layers\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.layerId\n * @param data.requestBody\n * @returns KnowledgeBaseLayerEntity\n * @throws ApiError\n */\n public static editLayerOverview(\n data: EditLayerOverviewData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"PUT\",\n url: \"/v1/layers/{layerId}/overview\",\n path: {\n layerId: data.layerId,\n },\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns KnowledgeBaseLayerConnectionEntity\n * @throws ApiError\n */\n public static subscribeToLayer(\n data: SubscribeToLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/layers/subscribe\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns unknown\n * @throws ApiError\n */\n public static unsubscribeToLayer(\n data: UnsubscribeToLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"DELETE\",\n url: \"/v1/layers/unsubscribe\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns KnowledgeBaseLayerConnectionEntity\n * @throws ApiError\n */\n public static publishToLayer(\n data: PublishToLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"POST\",\n url: \"/v1/layers/publish\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n\n /**\n * @param data The data for the request.\n * @param data.requestBody\n * @returns unknown\n * @throws ApiError\n */\n public static unpublishToLayer(\n data: UnpublishToLayerData,\n ): CancelablePromise {\n return __request(OpenAPI, {\n method: \"DELETE\",\n url: \"/v1/layers/unpublish\",\n body: data.requestBody,\n mediaType: \"application/json\",\n });\n }\n}\n","'use client';\n\nimport 'vanilla-cookieconsent/dist/cookieconsent.css';\n\nimport React, { useEffect } from 'react';\nimport * as VanillaCookieConsent from 'vanilla-cookieconsent';\n\nexport interface ICookieConsentProps {\n onConsent?: (param: { cookie: VanillaCookieConsent.CookieValue }) => void;\n}\n\nexport const CookieConsent = React.memo((props: ICookieConsentProps) => {\n useEffect(() => {\n VanillaCookieConsent.run({\n categories: {\n necessary: {\n enabled: true, // this category is enabled by default\n readOnly: true, // this category cannot be disabled\n },\n analytics: {},\n },\n\n onConsent: props.onConsent,\n\n language: {\n default: 'en',\n translations: {\n en: {\n consentModal: {\n title: 'This Website Uses Cookies',\n description:\n 'This site uses cookies to enhance your browsing experience and help us improve performance.',\n acceptAllBtn: 'Accept all',\n acceptNecessaryBtn: 'Reject all',\n showPreferencesBtn: 'Manage Individual preferences',\n },\n preferencesModal: {\n title: 'Manage cookie preferences',\n acceptAllBtn: 'Accept all',\n acceptNecessaryBtn: 'Reject all',\n savePreferencesBtn: 'Accept current selection',\n closeIconLabel: 'Close modal',\n sections: [\n {\n description:\n 'We use cookies to optimize our site functionality and understand visitor behavior. Manage your cookie settings to tailor your experience.',\n },\n {\n title: 'Strictly Necessary cookies',\n description: `These cookies are essential for the basic functionality of our website. Without them, core features like security, page navigation, and access to certain areas of the site wouldn't work properly. They cannot be turned off, as they are necessary for ensuring the website operates correctly.`,\n\n // this field will generate a toggle linked to the 'necessary' category\n linkedCategory: 'necessary',\n },\n {\n title: 'Performance and Analytics',\n description: `These cookies help us improve the site by gathering data on how it's used. The information is anonymized and helps us enhance performance and user experience.`,\n linkedCategory: 'analytics',\n },\n ],\n },\n },\n },\n },\n });\n });\n\n return
;\n});\n\nCookieConsent.displayName = 'CookieConsent';\n","'use client';\n\nimport 'vanilla-cookieconsent/dist/cookieconsent.css';\n\nimport { GoogleAnalytics } from '@next/third-parties/google';\nimport React, { useState } from 'react';\n\nimport { CookieConsent } from './cookie-consent';\n\nconst GOOGLE_ANALYTICS_TAG = process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS_TAG;\n\nexport const CookieConsentManager = React.memo(() => {\n const [analyticsConsent, setAnalyticsConsent] = useState(false);\n\n return (\n
\n {\n cookie.categories.forEach((acceptedCategory) => {\n if (acceptedCategory === 'analytics') {\n setAnalyticsConsent(true);\n }\n });\n }}\n />\n {GOOGLE_ANALYTICS_TAG && analyticsConsent && (\n \n )}\n
\n );\n});\n\nCookieConsentManager.displayName = 'CookieConsentManager';\n","'use client';\n\nimport { ThemeProvider as NextThemesProvider } from 'next-themes';\nimport { type ThemeProviderProps } from 'next-themes/dist/types';\nimport * as React from 'react';\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return {children};\n}\n","'use client';\n\nimport { PropsWithChildren, createContext, useContext, useEffect, useState } from 'react';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\nimport { Popover, PopoverTrigger, PopoverContent } from './popover';\nimport { TooltipContentProps, TooltipProps, TooltipTriggerProps } from '@radix-ui/react-tooltip';\nimport { PopoverContentProps, PopoverProps, PopoverTriggerProps } from '@radix-ui/react-popover';\n\nconst TouchContext = createContext(undefined);\nconst useTouch = () => useContext(TouchContext);\n\nexport const TouchProvider = (props: PropsWithChildren) => {\n const [isTouch, setTouch] = useState();\n\n useEffect(() => {\n setTouch(window.matchMedia('(pointer: coarse)').matches);\n }, []);\n\n return ;\n};\n\nexport const HybridTooltip = (props: TooltipProps & PopoverProps) => {\n const isTouch = useTouch();\n\n return isTouch ? : ;\n};\n\nexport const HybridTooltipTrigger = (props: TooltipTriggerProps & PopoverTriggerProps) => {\n const isTouch = useTouch();\n\n return isTouch ? : ;\n};\n\nexport const HybridTooltipContent = (props: TooltipContentProps & PopoverContentProps) => {\n const isTouch = useTouch();\n\n return isTouch ? : ;\n};","'use client';\n\nimport { useTheme } from 'next-themes';\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n return (\n \n );\n};\n\nexport { Toaster };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client';\n\nimport { enUS, frFR } from '@clerk/localizations';\nimport { ClerkProvider } from '@clerk/nextjs';\nimport type { PropsWithChildren } from 'react';\n\nimport { ROUTES } from '@/hooks/use-routes';\n\ntype IProps = PropsWithChildren & { params: { locale: string } };\n\nexport const ClerkClientProvider = ({ children, params }: IProps) => {\n let clerkLocale = enUS;\n let explorerUrl = ROUTES.AUTH_HOME;\n\n if (params.locale === 'fr') {\n clerkLocale = frFR;\n }\n\n if (params.locale !== 'en') {\n explorerUrl = `/${params.locale}${explorerUrl}`;\n }\n\n // const theme = useTheme();\n\n return (\n \n {children}\n \n );\n};\n","/* eslint-disable max-classes-per-file */\n/* eslint-disable no-await-in-loop */\n\n'use client';\n\nimport { Trash2, Upload } from 'lucide-react';\nimport { type PropsWithChildren } from 'react';\nimport type { FileWithPath } from 'react-dropzone';\n\nimport type { ExternalFileWithPath } from '@/api/types';\nimport type { KnowledgeBaseFolderId, KnowledgeBaseId } from '@/data/commons';\nimport {\n type CreateKnowledgeBaseFileUploadResponse,\n type KnowledgeBaseFileEntity,\n type KnowledgeBaseFolderEntity,\n} from '@/generated/clients/ludus-service-client/requests';\n\nexport type IFileManagerProviderProps = PropsWithChildren;\n\nexport type FileManagerTaskType =\n | 'UPLOAD_FILE'\n | 'DELETE_FILE'\n | 'DELETE_FOLDER';\n\nexport type FileManagerTaskStatus =\n | 'STARTED'\n | 'IN_PROGRESS'\n | 'FAILED'\n | 'SUCCESS';\n\nexport abstract class IFileManagerTask {\n public readonly id: string;\n public readonly progress: number;\n public readonly status: FileManagerTaskStatus;\n public readonly startDate: Date;\n public readonly type: FileManagerTaskType;\n public readonly err?: string;\n\n constructor(init: {\n id: string;\n progress: number;\n status: FileManagerTaskStatus;\n startDate: Date;\n type: FileManagerTaskType;\n err?: string;\n }) {\n this.id = init.id;\n this.progress = init.progress;\n this.status = init.status;\n this.startDate = init.startDate;\n this.type = init.type;\n this.err = init.err;\n }\n\n abstract getTaskText(): string | React.ReactNode;\n}\n\nexport class UploadFileTask extends IFileManagerTask {\n public readonly fileName: string;\n public readonly fileSize: number;\n public readonly folders: string[];\n\n constructor(init: {\n id: string;\n progress: number;\n status: FileManagerTaskStatus;\n startDate: Date;\n fileName: string;\n fileSize: number;\n folders: string[];\n err?: string;\n }) {\n super({\n id: init.id,\n progress: init.progress,\n status: init.status,\n startDate: init.startDate,\n type: 'UPLOAD_FILE',\n err: init.err,\n });\n\n this.fileName = init.fileName;\n this.fileSize = init.fileSize;\n this.folders = init.folders;\n }\n\n getTaskText(): string | React.ReactNode {\n return (\n
\n \n {this.fileName}\n
\n );\n\n // if (this.status === 'STARTED') {\n // return `Begin uploading ${this.fileName}`;\n // }\n // if (this.status === 'IN_PROGRESS') {\n // return `Uploading ${this.fileName}`;\n // }\n // if (this.status === 'SUCCESS') {\n // return `Successfully uploaded ${this.fileName}`;\n // }\n // if (this.status === 'FAILED') {\n // return `Failed to upload ${this.fileName}`;\n // }\n\n // return `Uploading ${this.fileName}`;\n }\n}\n\nexport class DeleteFileTask extends IFileManagerTask {\n public readonly fileId: string;\n public readonly fileName: string;\n\n constructor(init: {\n id: string;\n progress: number;\n status: FileManagerTaskStatus;\n startDate: Date;\n fileId: string;\n fileName: string;\n err?: string;\n }) {\n super({\n id: init.id,\n progress: init.progress,\n status: init.status,\n startDate: init.startDate,\n type: 'DELETE_FILE',\n err: init.err,\n });\n\n this.fileId = init.fileId;\n this.fileName = init.fileName;\n }\n\n getTaskText(): string | React.ReactNode {\n return (\n
\n \n {this.fileName}\n
\n );\n // if (this.status === 'STARTED') {\n // return `Begin deleting ${this.fileName}`;\n // }\n // if (this.status === 'IN_PROGRESS') {\n // return `Deleting ${this.fileName}`;\n // }\n // if (this.status === 'SUCCESS') {\n // return `Successfully deleted ${this.fileName}`;\n // }\n // if (this.status === 'FAILED') {\n // return `Failed to delete ${this.fileName}`;\n // }\n\n // return `Deleting ${this.fileName}`;\n }\n}\n\nexport class DeleteFolderTask extends IFileManagerTask {\n public readonly folderId: string;\n public readonly folderName: string;\n\n constructor(init: {\n id: string;\n progress: number;\n status: FileManagerTaskStatus;\n startDate: Date;\n folderId: string;\n folderName: string;\n err?: string;\n }) {\n super({\n id: init.id,\n progress: init.progress,\n status: init.status,\n startDate: init.startDate,\n type: 'DELETE_FOLDER',\n err: init.err,\n });\n\n this.folderId = init.folderId;\n this.folderName = init.folderName;\n }\n\n getTaskText(): string | React.ReactNode {\n return (\n
\n \n {this.folderName}\n
\n );\n // if (this.status === 'STARTED') {\n // return `Begin deleting ${this.folderName}`;\n // }\n // if (this.status === 'IN_PROGRESS') {\n // return `Deleting ${this.folderName}`;\n // }\n // if (this.status === 'SUCCESS') {\n // return `Successfully deleted ${this.folderName}`;\n // }\n // if (this.status === 'FAILED') {\n // return `Failed to delete ${this.folderName}`;\n // }\n\n // return `Deleting ${this.folderName}`;\n }\n}\n\nexport type IHandleFileUploaderFactoryProps = {\n onUploadBegin?: (\n kbId: KnowledgeBaseId,\n folderId: KnowledgeBaseFolderId,\n file: File,\n ) => void;\n onUploadError?: (\n kbId: KnowledgeBaseId,\n folderId: KnowledgeBaseFolderId,\n file: File,\n err?: any,\n ) => void;\n onUploadSuccess?: (\n kbId: KnowledgeBaseId,\n folderId: KnowledgeBaseFolderId,\n file: File,\n kbFile: KnowledgeBaseFileEntity,\n ) => void;\n onUploadProgress?: (\n kbId: KnowledgeBaseId,\n folderId: KnowledgeBaseFolderId,\n file: File,\n kbFile: KnowledgeBaseFileEntity,\n percentage: number,\n ) => void;\n onUploadComplete?: () => void;\n};\n\nexport type IHandleFileUploadFactoryType = (\n factoryProps: IHandleFileUploaderFactoryProps,\n) => (\n kbId: KnowledgeBaseId,\n folderId: KnowledgeBaseFolderId,\n files: ExternalFileWithPath[],\n) => Promise;\n\nexport type FileOrFolder = KnowledgeBaseFileEntity | KnowledgeBaseFolderEntity;\n\nexport type IHandleFileAndFolderDeleteFactoryProps = {\n onDeleteSubmission?: () => void;\n onDeleteBegin?: (kbId: KnowledgeBaseId, fileOrFolder: FileOrFolder) => void;\n onDeleteError?: (\n kbId: KnowledgeBaseId,\n fileOrFolder: FileOrFolder,\n err?: any,\n ) => void;\n onDeleteSuccess?: (kbId: KnowledgeBaseId, fileOrFolder: FileOrFolder) => void;\n onDeleteProgress?: (\n kbId: KnowledgeBaseId,\n fileOrFolder: FileOrFolder,\n percentage: number,\n ) => void;\n onDeleteComplete?: () => void;\n};\n\nexport type IHandleFileAndFolderDeleteFactoryType = (\n factoryProps: IHandleFileAndFolderDeleteFactoryProps,\n) => (\n files: KnowledgeBaseFileEntity[],\n folders: KnowledgeBaseFolderEntity[],\n) => Promise;\n\nexport interface IFileManagerContext {\n handleFileUploadFactory: IHandleFileUploadFactoryType;\n handleFileAndFolderDeleteFactory: IHandleFileAndFolderDeleteFactoryType;\n deleteTask: (taskId: string) => void;\n clearTasks: () => void;\n addTask: (taskId: string, task: IFileManagerTask) => void;\n tasks: IFileManagerTask[];\n}\n\nexport interface FileUploadObject {\n file: FileWithPath;\n uploadResponse: CreateKnowledgeBaseFileUploadResponse;\n}\n","export type OpaqueCursor = string;\n\nexport interface IPaginatedResponse {\n data: T[];\n pageInfo: {\n hasNextPage: boolean;\n nextCursor?: OpaqueCursor;\n };\n}\n\n// eslint-disable-next-line func-names\nexport const pageThrough = async function* (\n limit: number,\n fetch: (\n limit: number,\n nextCursor?: OpaqueCursor,\n ) => Promise>,\n) {\n let cursor: OpaqueCursor | undefined;\n do {\n // eslint-disable-next-line no-await-in-loop\n const response = await fetch(limit, cursor);\n\n if (response.pageInfo.hasNextPage) {\n cursor = response.pageInfo.nextCursor;\n }\n\n yield* response.data;\n } while (cursor);\n};\n","import { useQuery } from '@tanstack/react-query';\n\nimport type {\n KnowledgeBaseFileLocation,\n KnowledgeBaseFolderId,\n KnowledgeBaseFolderLocation,\n KnowledgeBaseId,\n} from '@/data/commons';\nimport {\n type KnowledgeBaseFileEntity,\n type KnowledgeBaseFolderEntity,\n KnowledgeBaseService,\n} from '@/generated/clients/ludus-service-client/requests';\nimport { pageThrough } from '@/utils/pagination.utils';\n\nexport type IUseListKnowledgeBaseFolderProps = {\n kbId: KnowledgeBaseId;\n folderId: KnowledgeBaseFolderId;\n enabled?: boolean;\n limit?: number;\n fileLocation?: KnowledgeBaseFileLocation;\n folderLocation?: KnowledgeBaseFolderLocation;\n};\n\nconst filesAsyncGenerator = (\n kbId: string,\n parentFolderId: string,\n limit: number,\n location?: KnowledgeBaseFileLocation,\n) =>\n pageThrough(limit, async (filesLimit, nextCursor) => {\n const filesResponse = await KnowledgeBaseService.findKnowledgeBaseFiles({\n kbId,\n parentFolderId,\n includeUploader: true,\n location,\n limit: filesLimit,\n nextCursor,\n });\n\n return filesResponse;\n });\n\nconst foldersAsyncGenerator = (\n kbId: string,\n parentFolderId: string,\n limit: number,\n location?: KnowledgeBaseFileLocation,\n) =>\n pageThrough(limit, async (foldersLimit, nextCursor) => {\n const foldersResponse = await KnowledgeBaseService.findKnowledgeBaseFolders(\n {\n kbId,\n parentFolderId,\n includeUploader: true,\n location,\n limit: foldersLimit,\n nextCursor,\n },\n );\n\n return foldersResponse;\n });\n\ninterface IFilesAndFolders {\n files: KnowledgeBaseFileEntity[];\n folders: KnowledgeBaseFolderEntity[];\n}\n\nexport const getAllFilesAndFolders = async (\n kbId: string,\n parentFolderId: string,\n batchSize: number,\n fileLocation?: KnowledgeBaseFileLocation,\n folderLocation?: KnowledgeBaseFolderLocation,\n): Promise => {\n const asyncFolders = foldersAsyncGenerator(\n kbId,\n parentFolderId,\n batchSize,\n folderLocation,\n );\n\n const asyncFiles = filesAsyncGenerator(\n kbId,\n parentFolderId,\n batchSize,\n fileLocation,\n );\n\n let files: KnowledgeBaseFileEntity[] = [];\n let folders: KnowledgeBaseFolderEntity[] = [];\n\n const getFilesAndFoldersPromises: (() => Promise)[] = [];\n\n for await (const folder of asyncFolders) {\n getFilesAndFoldersPromises.push(() => {\n return getAllFilesAndFolders(\n kbId,\n folder.id,\n batchSize,\n fileLocation,\n folderLocation,\n );\n });\n\n folders.push(folder);\n }\n\n for await (const file of asyncFiles) {\n files.push(file);\n }\n\n const allFilesAndFolders = await Promise.all(\n getFilesAndFoldersPromises.map((fn) => fn()),\n );\n\n allFilesAndFolders.forEach((filesAndFolders) => {\n files = [...files, ...filesAndFolders.files];\n folders = [...folders, ...filesAndFolders.folders];\n });\n\n return { files, folders };\n};\n\nexport function useListKnowledgeBaseFolder({\n kbId,\n folderId,\n enabled,\n limit: batchSize,\n fileLocation,\n folderLocation,\n}: IUseListKnowledgeBaseFolderProps) {\n const query = useQuery({\n enabled,\n queryKey: [\n 'useListKnowledgeBaseFolder',\n kbId,\n folderId,\n fileLocation,\n folderLocation,\n batchSize,\n ],\n queryFn: async () => {\n const filesAndFolders = await getAllFilesAndFolders(\n kbId,\n folderId,\n batchSize ?? 1000,\n fileLocation,\n folderLocation,\n );\n\n return filesAndFolders;\n },\n });\n\n const { data } = query;\n\n return { ...query, filesAndFolders: data };\n}\n","import _ from 'lodash';\n\nexport const extractMessageFromException = (err: any) => {\n const error = err.body?.message ?? err.message ?? 'An error occurred';\n return _.capitalize(error);\n};\n","/* eslint-disable no-await-in-loop */\n\n'use client';\n\nimport axios from 'axios';\nimport { Map } from 'immutable';\nimport path from 'path';\nimport { createContext, useCallback, useMemo, useState } from 'react';\n\nimport type { ExternalFileWithPath } from '@/api/types';\nimport {\n type KnowledgeBaseFileEntity,\n type KnowledgeBaseFolderEntity,\n KnowledgeBaseService,\n} from '@/generated/clients/ludus-service-client/requests';\nimport { getAllFilesAndFolders } from '@/hooks/use-list-knowledge-base-folder';\nimport { batchPromiseAll } from '@/utils/async.utils';\nimport { extractMessageFromException } from '@/utils/exception.utils';\n\nimport type {\n FileUploadObject,\n IFileManagerContext,\n IFileManagerProviderProps,\n IFileManagerTask,\n IHandleFileAndFolderDeleteFactoryType,\n IHandleFileUploadFactoryType,\n} from './file-manager.provider.interface';\nimport {\n DeleteFileTask,\n DeleteFolderTask,\n UploadFileTask,\n} from './file-manager.provider.interface';\n\nexport const FileManagerContext = createContext<\n IFileManagerContext | undefined\n>(undefined);\n\nexport const getFileNameFromPath = (filePath: string) => {\n return path.basename(filePath);\n};\n\nexport const getFoldersFromPath = (filePath: string): string[] => {\n const hasFolders = filePath.split('/').length > 1;\n\n if (hasFolders) {\n const dir = path.dirname(filePath);\n const folders = dir\n .split('/')\n .map((name) => name.trim())\n .filter((name) => name !== undefined && name.length > 0);\n\n return folders;\n }\n return [];\n};\n\nexport const FileManagerProvider = ({\n children,\n}: IFileManagerProviderProps) => {\n const [taskMap, setTaskMap] = useState>(Map());\n\n const mergeTaskMap = useCallback((newMap: Map) => {\n setTaskMap((prev) => {\n return prev.merge(newMap);\n });\n }, []);\n\n const deleteTask = useCallback((taskId: string) => {\n setTaskMap((prev) => {\n return prev.delete(taskId);\n });\n }, []);\n\n const clearTasks = useCallback(() => {\n setTaskMap(Map());\n }, []);\n\n const addTask = useCallback((taskId: string, task: IFileManagerTask) => {\n setTaskMap((prev) => {\n return prev.set(taskId, task);\n });\n }, []);\n\n const handleFileUploadFactory: IHandleFileUploadFactoryType = useCallback(\n ({\n onUploadBegin,\n onUploadError,\n onUploadSuccess,\n onUploadProgress,\n onUploadComplete,\n }) =>\n async (kbId, folderId, files) => {\n let taskMapBuffer: Map = Map();\n\n const upsertTask = (task: IFileManagerTask) => {\n taskMapBuffer = taskMapBuffer.set(task.id, task);\n };\n\n const interval = setInterval(() => {\n mergeTaskMap(taskMapBuffer);\n }, 2000);\n\n try {\n if (files && files.length > 0) {\n const now = new Date();\n\n for (const file of files) {\n const filePath =\n file.path || file.webkitRelativePath || file.name;\n\n const taskId = `upload_${kbId}_${folderId}_${filePath}`;\n\n const fileName = getFileNameFromPath(filePath);\n const folders = getFoldersFromPath(filePath);\n\n upsertTask(\n new UploadFileTask({\n id: taskId,\n progress: 0,\n status: 'STARTED',\n fileName,\n fileSize: file.size,\n folders,\n startDate: now,\n }),\n );\n }\n\n mergeTaskMap(taskMapBuffer);\n\n const fileUploadObjects = (\n await batchPromiseAll<\n ExternalFileWithPath,\n FileUploadObject | undefined\n >({\n items: files,\n batchSize: 5,\n task: async (file) => {\n const filePath =\n file.path || file.webkitRelativePath || file.name;\n\n const taskId = `upload_${kbId}_${folderId}_${filePath}`;\n\n const fileName = getFileNameFromPath(filePath);\n const folders = getFoldersFromPath(filePath);\n\n try {\n onUploadBegin?.(kbId, folderId, file);\n\n const uploadResponse =\n await KnowledgeBaseService.createKnowledgeBaseFileUpload({\n kbId,\n requestBody: {\n fileName,\n folders,\n mimeType: file.type as any,\n fileSizeInBytes: file.size,\n parentFolderId: folderId,\n externalUpload:\n file.externalFileId && file.externalApplication\n ? {\n externalFileId: file.externalFileId,\n application: file.externalApplication,\n }\n : undefined,\n },\n });\n\n return {\n file,\n uploadResponse,\n };\n } catch (err: any) {\n console.log('upload', JSON.stringify(err));\n upsertTask(\n new UploadFileTask({\n id: taskId,\n progress: 0,\n status: 'FAILED',\n fileName,\n fileSize: file.size,\n folders,\n startDate: now,\n err: extractMessageFromException(err),\n }),\n );\n\n onUploadError?.(kbId, folderId, file, err);\n return undefined;\n }\n },\n })\n ).filter((v) => v) as FileUploadObject[];\n\n await batchPromiseAll({\n items: fileUploadObjects,\n batchSize: 25,\n task: async (uploadObject) => {\n const { file, uploadResponse } = uploadObject;\n const { uploadDetails } = uploadResponse;\n const { presignedFields, presignedUrl } = uploadDetails;\n\n const filePath =\n file.path || file.webkitRelativePath || file.name;\n\n const taskId = `upload_${kbId}_${folderId}_${filePath}`;\n\n const fileName = getFileNameFromPath(filePath);\n const folders = getFoldersFromPath(filePath);\n\n try {\n const form = new FormData();\n Object.entries(presignedFields).forEach(\n ([field, value]) => {\n form.append(field, value);\n },\n );\n\n form.append('file', file);\n\n // eslint-disable-next-line no-await-in-loop\n await axios.post(presignedUrl, form, {\n onUploadProgress: (progressEvent) => {\n const { loaded, total } = progressEvent;\n\n if (total) {\n const numerator = loaded;\n const denominator = total;\n\n const percentage = Math.floor(\n (numerator / denominator) * 100,\n );\n\n console.log(percentage);\n\n upsertTask(\n new UploadFileTask({\n id: taskId,\n progress: percentage,\n status: 'IN_PROGRESS',\n fileName,\n fileSize: file.size,\n folders,\n startDate: now,\n }),\n );\n\n onUploadProgress?.(\n kbId,\n folderId,\n file,\n uploadResponse.file,\n percentage,\n );\n }\n },\n });\n\n upsertTask(\n new UploadFileTask({\n id: taskId,\n progress: 100,\n status: 'SUCCESS',\n fileName,\n fileSize: file.size,\n folders,\n startDate: now,\n }),\n );\n\n onUploadSuccess?.(\n kbId,\n folderId,\n uploadObject.file,\n uploadObject.uploadResponse.file,\n );\n } catch (err: any) {\n upsertTask(\n new UploadFileTask({\n id: taskId,\n progress: 0,\n status: 'FAILED',\n fileName,\n fileSize: file.size,\n folders,\n startDate: now,\n err: extractMessageFromException(err),\n }),\n );\n onUploadError?.(kbId, folderId, uploadObject.file, err);\n }\n },\n });\n }\n } catch (err: any) {\n console.log('Error while attempting to upload', err);\n } finally {\n mergeTaskMap(taskMapBuffer);\n clearInterval(interval);\n onUploadComplete?.();\n }\n },\n [mergeTaskMap],\n );\n\n const handleFileAndFolderDeleteFactory: IHandleFileAndFolderDeleteFactoryType =\n useCallback(\n ({\n onDeleteSubmission,\n onDeleteBegin,\n onDeleteError,\n onDeleteSuccess,\n onDeleteProgress,\n onDeleteComplete,\n }) =>\n async (files, folders) => {\n let taskMapBuffer: Map = Map();\n\n const upsertTask = (task: IFileManagerTask) => {\n taskMapBuffer = taskMapBuffer.set(task.id, task);\n };\n\n const interval = setInterval(() => {\n mergeTaskMap(taskMapBuffer);\n }, 2000);\n\n try {\n const now = new Date();\n\n const nestedFilesAndFolders = await batchPromiseAll<\n KnowledgeBaseFolderEntity,\n {\n nestedFiles: KnowledgeBaseFileEntity[];\n nestedFolders: KnowledgeBaseFolderEntity[];\n }\n >({\n items: folders,\n batchSize: 5,\n task: async (folder) => {\n const filesAndFolders = await getAllFilesAndFolders(\n folder.knowledgeBaseId,\n folder.id,\n 1000,\n );\n\n return {\n nestedFiles: filesAndFolders.files,\n nestedFolders: filesAndFolders.folders,\n };\n },\n });\n\n const nestedFiles = nestedFilesAndFolders.flatMap(\n (n) => n.nestedFiles,\n );\n const nestedFolders = nestedFilesAndFolders.flatMap(\n (n) => n.nestedFolders,\n );\n\n const allFiles = [...files, ...nestedFiles];\n\n // folders we need to delete one by one since folders need to be empty before it can be deleted\n // so we deleted the most nest one first then move out\n\n // reverse list to delete most nested folders first\n const allFolders = [...folders, ...nestedFolders].reverse();\n\n console.log('Files to be deleted', allFiles.length);\n\n allFiles.forEach((file) => {\n const taskId = `delete_${file.id}`;\n\n upsertTask(\n new DeleteFileTask({\n id: taskId,\n fileId: file.id,\n status: 'STARTED',\n progress: 0,\n fileName: file.name,\n startDate: now,\n }),\n );\n });\n\n allFolders.forEach((folder) => {\n const taskId = `delete_${folder.id}`;\n\n upsertTask(\n new DeleteFolderTask({\n id: taskId,\n folderId: folder.id,\n status: 'STARTED',\n progress: 0,\n folderName: folder.name,\n startDate: now,\n }),\n );\n });\n\n onDeleteSubmission?.();\n mergeTaskMap(taskMapBuffer);\n\n await batchPromiseAll({\n items: allFiles,\n batchSize: 5,\n task: async (file) => {\n const taskId = `delete_${file.id}`;\n\n try {\n onDeleteBegin?.(file.knowledgeBaseId, file);\n\n upsertTask(\n new DeleteFileTask({\n id: taskId,\n fileId: file.id,\n status: 'IN_PROGRESS',\n progress: 0,\n fileName: file.name,\n startDate: now,\n }),\n );\n\n const deletedFile =\n await KnowledgeBaseService.deleteKnowledgeBaseFile({\n kbId: file.knowledgeBaseId,\n fileId: file.id,\n });\n\n upsertTask(\n new DeleteFileTask({\n id: taskId,\n fileId: file.id,\n status: 'SUCCESS',\n progress: 100,\n fileName: file.name,\n startDate: now,\n }),\n );\n\n onDeleteProgress?.(\n deletedFile.knowledgeBaseId,\n deletedFile,\n 100,\n );\n onDeleteSuccess?.(deletedFile.knowledgeBaseId, deletedFile);\n } catch (err: any) {\n upsertTask(\n new DeleteFileTask({\n id: taskId,\n fileId: file.id,\n status: 'FAILED',\n progress: 0,\n fileName: file.name,\n startDate: now,\n err: extractMessageFromException(err),\n }),\n );\n\n onDeleteError?.(file.knowledgeBaseId, file, err);\n }\n },\n });\n\n console.log('Done deleting files');\n\n console.log('Folders to be deleted', allFolders.length);\n for (const folder of allFolders) {\n const taskId = `delete_${folder.id}`;\n\n try {\n onDeleteBegin?.(folder.knowledgeBaseId, folder);\n\n upsertTask(\n new DeleteFolderTask({\n id: taskId,\n folderId: folder.id,\n status: 'IN_PROGRESS',\n progress: 0,\n folderName: folder.name,\n startDate: now,\n }),\n );\n\n const deletedFolder =\n await KnowledgeBaseService.deleteKnowledgeBaseFolder({\n kbId: folder.knowledgeBaseId,\n folderId: folder.id,\n });\n\n upsertTask(\n new DeleteFolderTask({\n id: taskId,\n folderId: folder.id,\n status: 'SUCCESS',\n progress: 100,\n folderName: folder.name,\n startDate: now,\n }),\n );\n\n onDeleteProgress?.(\n deletedFolder.knowledgeBaseId,\n deletedFolder,\n 100,\n );\n onDeleteSuccess?.(deletedFolder.knowledgeBaseId, deletedFolder);\n } catch (err: any) {\n upsertTask(\n new DeleteFolderTask({\n id: taskId,\n folderId: folder.id,\n status: 'FAILED',\n progress: 0,\n folderName: folder.name,\n startDate: now,\n err: extractMessageFromException(err),\n }),\n );\n onDeleteError?.(folder.knowledgeBaseId, folder, err);\n }\n }\n\n console.log('Done deleting folders');\n } catch (err: any) {\n console.log(`Error while attemping delete`, err);\n } finally {\n clearInterval(interval);\n mergeTaskMap(taskMapBuffer);\n onDeleteComplete?.();\n }\n },\n [mergeTaskMap],\n );\n\n return (\n {\n return {\n handleFileUploadFactory,\n handleFileAndFolderDeleteFactory,\n deleteTask,\n clearTasks,\n addTask,\n tasks: taskMap.toIndexedSeq().toArray(),\n };\n }, [\n handleFileUploadFactory,\n handleFileAndFolderDeleteFactory,\n deleteTask,\n clearTasks,\n addTask,\n taskMap,\n ])}\n >\n {children}\n \n );\n};\n","'use client';\n\nimport { AxiosHeaders, type AxiosRequestConfig } from 'axios';\n\nimport { OpenAPI as OpenAPIConfig } from '@/generated/clients/ludus-service-client/requests';\nimport { Interceptors } from '@/generated/clients/ludus-service-client/requests/core/OpenAPI';\nimport { wait } from '@/utils/async.utils';\n\nlet initialized = false;\n\nexport const configureOpenAPI = () => {\n if (initialized) {\n return;\n }\n\n const requestInterceptor = new Interceptors();\n\n requestInterceptor.use(async (config) => {\n let clerk = (window as any)?.Clerk?.session;\n\n let retryCount = 0;\n\n while (!clerk && retryCount <= 5) {\n retryCount += 1;\n // eslint-disable-next-line no-await-in-loop\n await wait(500);\n\n if ((window as any).Clerk) {\n clerk = (window as any).Clerk.session;\n }\n }\n\n const token = await clerk.getToken();\n\n if (token && config && config.headers) {\n if (config.headers instanceof AxiosHeaders) {\n config.headers.set('Authorization', `Bearer ${token}`);\n } else {\n // eslint-disable-next-line no-param-reassign\n config.headers.Authorization = `Bearer ${token}`;\n }\n }\n\n return config;\n });\n\n OpenAPIConfig.interceptors.request = requestInterceptor;\n\n initialized = true;\n};\n","'use client';\n\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { type PropsWithChildren, useState } from 'react';\n\nimport { configureOpenAPI } from '@/clients/openapi.config';\n\nconfigureOpenAPI();\n\nexport const ReactQueryClientProvider = ({ children }: PropsWithChildren) => {\n const [client] = useState(\n new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n }),\n );\n\n return {children};\n};\n","import _ from 'lodash';\n\nexport const wait = async (ms: number) => {\n // eslint-disable-next-line no-promise-executor-return\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\ninterface IBatchPromiseAllArgs {\n items: TItem[];\n batchSize: number;\n task: (item: TItem) => Promise;\n}\n\nexport const batchPromiseAll = async ({\n items,\n batchSize,\n task,\n}: IBatchPromiseAllArgs) => {\n let results: SOutput[] = [];\n\n const itemBatches = _.chunk(items, batchSize);\n\n for (const itemBatch of itemBatches) {\n // eslint-disable-next-line no-await-in-loop\n const batchResults = await Promise.all(itemBatch.map((item) => task(item)));\n\n results = [...results, ...batchResults];\n }\n\n return results;\n};\n","// extracted by mini-css-extract-plugin"],"names":["Promise","resolve","then","__webpack_require__","bind","t","CancelError","Error","isCancelled","constructor","message","name","CancelablePromise","Symbol","toStringTag","onFulfilled","onRejected","promise","catch","finally","onFinally","cancel","_isResolved","_isRejected","_isCancelled","cancelHandlers","length","cancelHandler","error","console","warn","_reject","executor","reject","_resolve","onCancel","push","Object","defineProperty","get","value","reason","Interceptors","eject","fn","index","_fns","indexOf","slice","use","OpenAPI","BASE","CREDENTIALS","ENCODE_PATH","undefined","HEADERS","PASSWORD","TOKEN","USERNAME","VERSION","WITH_CREDENTIALS","interceptors","request","response","ApiError","url","status","statusText","body","isString","isStringWithValue","isBlob","Blob","isFormData","FormData","isSuccess","base64","btoa","str","err","Buffer","from","toString","getQueryString","qs","append","key","encodeURIComponent","concat","String","encodePair","Date","toISOString","Array","isArray","forEach","v","entries","k","param","params","join","getUrl","config","options","encoder","encodeURI","path","replace","substring","group","hasOwnProperty","query","getFormData","formData","process","JSON","stringify","filter","resolver","getHeaders","token","username","password","additionalHeaders","all","headers","Accept","reduce","credentials","mediaType","type","getRequestBody","sendRequest","axiosClient","controller","AbortController","requestConfig","data","method","signal","withCredentials","abort","axiosError","getResponseHeader","responseHeader","content","getResponseBody","catchErrorCodes","result","errors","ok","errorStatus","errorStatusText","errorBody","e","axios","responseBody","transformedBody","responseTransformer","KnowledgeBaseService","createKnowledgeBaseFileUpload","__request","kbId","requestBody","getKnowledgeBasesForUser","permission","limit","nextCursor","createKnowledgeBase","getKnowledgeBase","includeLayerConnections","userUpdateKnowledgeBase","findKnowledgeBaseFiles","parentFolderId","location","includeUploader","includeMetadata","getKnowledgeBaseFile","fileId","includeThumbnail","userUpdateKnowledgeBaseFile","deleteKnowledgeBaseFile","getKnowledgeBaseFileUrl","inline","source","getKnowledgeBaseFileAudioTranscriptUrl","moveKnowledgeBaseFiles","findKnowledgeBaseFolders","includeNestedParentFolders","createKnowledgeBaseFolder","getKnowledgeBaseFolder","folderId","userUpdateKnowledgeBaseFolder","deleteKnowledgeBaseFolder","moveKnowledgeBaseFolders","getKnowledgeBaseFileSolverTasksForUser","getKnowledgeBaseLayerConnections","layerId","includeLayer","role","ChatService","createChatSession","askKnowledgeBaseChatStream","chatSessionId","UserService","getCurrentUser","SubscriptionService","createCheckoutSession","getSubscriptionUsageForUser","SolverTaskService","createSolverTask","getSolverTask","solverTaskId","includeOutput","ConnectorService","getApplicationAuth","application","handleGoogleAuthCallback","KnowledgeBaseLayerService","searchLayers","searchQuery","sortBy","isFeatured","getLayer","includeOverview","editLayer","getUserLayerStar","addUserLayerStar","removeUserLayerStar","getLayerConnections","getLayerUserConnections","getLayersForUser","createLayer","editLayerOverview","subscribeToLayer","unsubscribeToLayer","publishToLayer","unpublishToLayer","CookieConsent","React","useEffect","VanillaCookieConsent","categories","necessary","enabled","readOnly","analytics","onConsent","props","language","default","translations","en","consentModal","title","description","acceptAllBtn","acceptNecessaryBtn","showPreferencesBtn","preferencesModal","savePreferencesBtn","closeIconLabel","sections","linkedCategory","jsx_runtime","jsx","div","className","displayName","GOOGLE_ANALYTICS_TAG","CookieConsentManager","analyticsConsent","setAnalyticsConsent","useState","jsxs","cookie","acceptedCategory","GoogleAnalytics","gaId","ThemeProvider","children","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","NextThemesProvider","TouchContext","createContext","useTouch","useContext","TouchProvider","isTouch","setTouch","window","matchMedia","matches","Provider","HybridTooltip","Popover","Tooltip","HybridTooltipTrigger","PopoverTrigger","TooltipTrigger","HybridTooltipContent","PopoverContent","TooltipContent","Toaster","theme","useTheme","Sonner","toastOptions","classNames","toast","actionButton","cancelButton","TooltipProvider","TooltipPrimitive","ref","sideOffset","cn","ClerkClientProvider","clerkLocale","enUS","explorerUrl","ROUTES","AUTH_HOME","locale","frFR","ClerkProvider","localization","signInFallbackRedirectUrl","signUpFallbackRedirectUrl","appearance","baseTheme","IFileManagerTask","init","id","progress","startDate","UploadFileTask","getTaskText","Upload","fileName","fileSize","folders","DeleteFileTask","Trash2","DeleteFolderTask","folderName","pageThrough","fetch","cursor","pageInfo","hasNextPage","filesAsyncGenerator","filesLimit","foldersAsyncGenerator","foldersLimit","getAllFilesAndFolders","batchSize","fileLocation","folderLocation","asyncFolders","asyncFiles","files","getFilesAndFoldersPromises","folder","file","allFilesAndFolders","map","filesAndFolders","extractMessageFromException","_","FileManagerContext","getFileNameFromPath","filePath","getFoldersFromPath","split","dir","trim","FileManagerProvider","taskMap","setTaskMap","Map","mergeTaskMap","useCallback","prev","merge","newMap","deleteTask","delete","taskId","clearTasks","addTask","task","set","handleFileUploadFactory","onUploadBegin","onUploadError","onUploadSuccess","onUploadProgress","onUploadComplete","taskMapBuffer","upsertTask","interval","setInterval","now","webkitRelativePath","size","fileUploadObjects","batchPromiseAll","items","uploadResponse","mimeType","fileSizeInBytes","externalUpload","externalFileId","externalApplication","log","uploadObject","uploadDetails","presignedFields","presignedUrl","form","field","post","loaded","total","progressEvent","percentage","Math","floor","numerator","clearInterval","handleFileAndFolderDeleteFactory","onDeleteSubmission","onDeleteBegin","onDeleteError","onDeleteSuccess","onDeleteProgress","onDeleteComplete","nestedFilesAndFolders","knowledgeBaseId","nestedFiles","nestedFolders","flatMap","n","allFiles","allFolders","reverse","deletedFile","deletedFolder","useMemo","tasks","toIndexedSeq","toArray","initialized","configureOpenAPI","requestInterceptor","_window_Clerk","clerk","_window","Clerk","session","retryCount","wait","getToken","AxiosHeaders","Authorization","OpenAPIConfig","ReactQueryClientProvider","client","QueryClient","defaultOptions","queries","refetchOnWindowFocus","QueryClientProvider","ms","setTimeout","results","itemBatch","item"],"sourceRoot":""}