@retrivora-ai/rag-engine 2.2.1 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -681,7 +681,7 @@ async function dispatchEmbedding(req, apiKeyOverride) {
681
681
  }
682
682
  }
683
683
  const geminiKey = process.env.GEMINI_API_KEY || effectiveKey;
684
- const isGeminiKeyValid = Boolean(geminiKey && (geminiKey.startsWith("AIza") || !geminiKey.startsWith("AQ.")));
684
+ const isGeminiKeyValid = Boolean(geminiKey && !geminiKey.startsWith("eyJ"));
685
685
  if (isGeminiKeyValid) {
686
686
  try {
687
687
  return await handleGeminiEmbedding(req, effectiveKey);
@@ -816,11 +816,14 @@ var init_ConfigFetcher = __esm({
816
816
  if (res.ok) {
817
817
  const data = await res.json();
818
818
  if ((data == null ? void 0 : data.success) && ((_a2 = data == null ? void 0 : data.vectorDb) == null ? void 0 : _a2.apiKey)) {
819
+ const fetchedProjectId = data.projectId || projectId;
819
820
  const config = {
821
+ projectId: fetchedProjectId,
820
822
  vectorDb: {
821
823
  apiKey: data.vectorDb.apiKey,
822
824
  indexName: data.vectorDb.indexName || "retrivora-free",
823
- provider: data.vectorDb.provider || "pinecone"
825
+ provider: data.vectorDb.provider || "pinecone",
826
+ projectId: fetchedProjectId
824
827
  },
825
828
  embedding: {
826
829
  provider: ((_b = data.embedding) == null ? void 0 : _b.provider) || "universal_rest",
@@ -938,8 +941,20 @@ var init_PineconeProvider = __esm({
938
941
  if (this.client) return;
939
942
  let key = this.apiKey || process.env.PINECONE_API_KEY || "";
940
943
  if (!key) {
941
- const projectId = process.env.RAG_PROJECT_ID || process.env.NEXT_PUBLIC_RAG_PROJECT_ID || "my-rag-app";
942
944
  const licenseKey = process.env.RETRIVORA_LICENSE_KEY || process.env.NEXT_PUBLIC_RETRIVORA_LICENSE_KEY;
945
+ const jwtProjectId = (() => {
946
+ if (!licenseKey) return void 0;
947
+ try {
948
+ const parts = licenseKey.split(".");
949
+ if (parts.length >= 2) {
950
+ const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
951
+ return payload == null ? void 0 : payload.projectId;
952
+ }
953
+ } catch (e) {
954
+ }
955
+ return void 0;
956
+ })();
957
+ const projectId = process.env.RAG_PROJECT_ID || process.env.NEXT_PUBLIC_RAG_PROJECT_ID || jwtProjectId || this.projectId || "default";
943
958
  const remoteConfig = await ConfigFetcher.fetchRemoteVectorConfig(projectId, licenseKey);
944
959
  if (remoteConfig == null ? void 0 : remoteConfig.apiKey) {
945
960
  key = remoteConfig.apiKey;
@@ -947,6 +962,9 @@ var init_PineconeProvider = __esm({
947
962
  if (remoteConfig.indexName) {
948
963
  this.indexName = remoteConfig.indexName;
949
964
  }
965
+ if (remoteConfig.projectId) {
966
+ this.projectId = remoteConfig.projectId;
967
+ }
950
968
  }
951
969
  }
952
970
  if (!key) {
@@ -2929,7 +2947,8 @@ var LicenseVerifier = class {
2929
2947
  };
2930
2948
  }
2931
2949
  try {
2932
- const parts = licenseKey.split(".");
2950
+ const rawToken = licenseKey.replace(/^rtv_/i, "").trim();
2951
+ const parts = rawToken.split(".");
2933
2952
  if (parts.length !== 3) {
2934
2953
  throw new Error("Malformed token structure (expected 3 parts).");
2935
2954
  }
@@ -2953,7 +2972,8 @@ var LicenseVerifier = class {
2953
2972
  if (!payload.projectId) {
2954
2973
  throw new Error('License payload is missing "projectId".');
2955
2974
  }
2956
- if (payload.projectId !== currentProjectId) {
2975
+ const isProjectMatch = payload.projectId === currentProjectId || payload.projectId === `retrivora-${currentProjectId}` || `retrivora-${payload.projectId}` === currentProjectId;
2976
+ if (!isProjectMatch) {
2957
2977
  throw new Error(
2958
2978
  `Project ID mismatch. License is bound to project namespace "${payload.projectId}" but configuration has "${currentProjectId}".`
2959
2979
  );
@@ -3161,46 +3181,58 @@ function readEnum(env, name, fallback, allowed) {
3161
3181
  throw new Error(`[getRagConfig] ${name} must be one of: ${allowed.join(", ")}`);
3162
3182
  }
3163
3183
  function getEnvConfig(env = process.env, base) {
3164
- var _a2, _b, _c, _d, _e, _f, _g2, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja, _ka, _la, _ma, _na, _oa, _pa, _qa, _ra, _sa, _ta, _ua, _va, _wa, _xa, _ya, _za, _Aa, _Ba, _Ca, _Da, _Ea, _Fa, _Ga, _Ha, _Ia, _Ja, _Ka, _La, _Ma, _Na, _Oa, _Pa, _Qa, _Ra, _Sa, _Ta, _Ua, _Va, _Wa, _Xa, _Ya, _Za, __a, _$a, _ab, _bb, _cb, _db, _eb, _fb, _gb, _hb, _ib, _jb, _kb, _lb, _mb, _nb, _ob, _pb, _qb, _rb, _sb, _tb, _ub, _vb, _wb, _xb, _yb, _zb, _Ab, _Bb, _Cb, _Db, _Eb, _Fb, _Gb, _Hb, _Ib;
3165
- const projectId = (_c = (_b = (_a2 = readString(env, "RAG_PROJECT_ID")) != null ? _a2 : readString(env, "NEXT_PUBLIC_PROJECT_ID")) != null ? _b : base == null ? void 0 : base.projectId) != null ? _c : "__default__";
3166
- const licenseKey = (_g2 = (_f = (_e = (_d = readString(env, "RAG_LICENSE_KEY")) != null ? _d : readString(env, "RETRIVORA_LICENSE_KEY")) != null ? _e : readString(env, "NEXT_PUBLIC_RETRIVORA_LICENSE_KEY")) != null ? _f : readString(env, "LICENSE_KEY")) != null ? _g2 : base == null ? void 0 : base.licenseKey;
3167
- const telemetryEnabled = readString(env, "TELEMETRY_ENABLED") === "true" || readString(env, "NEXT_PUBLIC_TELEMETRY_ENABLED") === "true" || ((_h = base == null ? void 0 : base.telemetry) == null ? void 0 : _h.enabled) || Boolean(licenseKey);
3184
+ var _a2, _b, _c, _d, _e, _f, _g2, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja, _ka, _la, _ma, _na, _oa, _pa, _qa, _ra, _sa, _ta, _ua, _va, _wa, _xa, _ya, _za, _Aa, _Ba, _Ca, _Da, _Ea, _Fa, _Ga, _Ha, _Ia, _Ja, _Ka, _La, _Ma, _Na, _Oa, _Pa, _Qa, _Ra, _Sa, _Ta, _Ua, _Va, _Wa, _Xa, _Ya, _Za, __a, _$a, _ab, _bb, _cb, _db, _eb, _fb, _gb, _hb, _ib, _jb, _kb, _lb, _mb, _nb, _ob, _pb, _qb, _rb, _sb, _tb, _ub, _vb, _wb, _xb, _yb, _zb, _Ab, _Bb, _Cb, _Db, _Eb, _Fb, _Gb, _Hb, _Ib, _Jb, _Kb;
3185
+ const licenseKey = (_d = (_c = (_b = (_a2 = readString(env, "RAG_LICENSE_KEY")) != null ? _a2 : readString(env, "RETRIVORA_LICENSE_KEY")) != null ? _b : readString(env, "NEXT_PUBLIC_RETRIVORA_LICENSE_KEY")) != null ? _c : readString(env, "LICENSE_KEY")) != null ? _d : base == null ? void 0 : base.licenseKey;
3186
+ const jwtProjectId = (() => {
3187
+ if (!licenseKey) return void 0;
3188
+ try {
3189
+ const parts = licenseKey.split(".");
3190
+ if (parts.length >= 2) {
3191
+ const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
3192
+ return payload == null ? void 0 : payload.projectId;
3193
+ }
3194
+ } catch (e) {
3195
+ }
3196
+ return void 0;
3197
+ })();
3198
+ const projectId = (_i = (_h = (_g2 = (_f = (_e = readString(env, "RAG_PROJECT_ID")) != null ? _e : readString(env, "NEXT_PUBLIC_RAG_PROJECT_ID")) != null ? _f : readString(env, "NEXT_PUBLIC_PROJECT_ID")) != null ? _g2 : base == null ? void 0 : base.projectId) != null ? _h : jwtProjectId) != null ? _i : "default";
3199
+ const telemetryEnabled = readString(env, "TELEMETRY_ENABLED") === "true" || readString(env, "NEXT_PUBLIC_TELEMETRY_ENABLED") === "true" || ((_j = base == null ? void 0 : base.telemetry) == null ? void 0 : _j.enabled) || Boolean(licenseKey);
3168
3200
  const vectorProvider = readEnum(env, "VECTOR_DB_PROVIDER", "pinecone", VECTOR_DB_PROVIDERS);
3169
3201
  const embeddingDimensions = readNumber(env, "EMBEDDING_DIMENSIONS", 768);
3170
3202
  const vectorDbOptions = {};
3171
3203
  if (vectorProvider === "pinecone") {
3172
- vectorDbOptions.apiKey = (_m = (_l = (_k = readString(env, "PINECONE_API_KEY")) != null ? _k : (_j = (_i = base == null ? void 0 : base.vectorDb) == null ? void 0 : _i.options) == null ? void 0 : _j.apiKey) != null ? _l : process.env.PINECONE_API_KEY) != null ? _m : "";
3173
- vectorDbOptions.indexName = (_t = (_s = (_r = (_o = readString(env, "PINECONE_INDEX")) != null ? _o : (_n = base == null ? void 0 : base.vectorDb) == null ? void 0 : _n.indexName) != null ? _r : (_q = (_p = base == null ? void 0 : base.vectorDb) == null ? void 0 : _p.options) == null ? void 0 : _q.indexName) != null ? _s : process.env.PINECONE_INDEX) != null ? _t : "retrivora-free";
3204
+ vectorDbOptions.apiKey = (_o = (_n = (_m = readString(env, "PINECONE_API_KEY")) != null ? _m : (_l = (_k = base == null ? void 0 : base.vectorDb) == null ? void 0 : _k.options) == null ? void 0 : _l.apiKey) != null ? _n : process.env.PINECONE_API_KEY) != null ? _o : "";
3205
+ vectorDbOptions.indexName = (_v = (_u = (_t = (_q = readString(env, "PINECONE_INDEX")) != null ? _q : (_p = base == null ? void 0 : base.vectorDb) == null ? void 0 : _p.indexName) != null ? _t : (_s = (_r = base == null ? void 0 : base.vectorDb) == null ? void 0 : _r.options) == null ? void 0 : _s.indexName) != null ? _u : process.env.PINECONE_INDEX) != null ? _v : "retrivora-free";
3174
3206
  } else if (vectorProvider === "pgvector" || vectorProvider === "postgresql") {
3175
- vectorDbOptions.connectionString = (_y = (_x = (_u = readString(env, "PGVECTOR_CONNECTION_STRING")) != null ? _u : readString(env, "POSTGRES_URL")) != null ? _x : (_w = (_v = base == null ? void 0 : base.vectorDb) == null ? void 0 : _v.options) == null ? void 0 : _w.connectionString) != null ? _y : "";
3176
- vectorDbOptions.tables = (_D = (_A = (_z = readString(env, "VECTOR_DB_TABLES")) != null ? _z : readString(env, "POSTGRES_TABLES")) == null ? void 0 : _A.split(",").map((t) => t.trim())) != null ? _D : (_C = (_B = base == null ? void 0 : base.vectorDb) == null ? void 0 : _B.options) == null ? void 0 : _C.tables;
3177
- vectorDbOptions.searchFields = (_H = (_E = readString(env, "POSTGRES_SEARCH_FIELDS")) == null ? void 0 : _E.split(",").map((f) => f.trim())) != null ? _H : (_G = (_F = base == null ? void 0 : base.vectorDb) == null ? void 0 : _F.options) == null ? void 0 : _G.searchFields;
3207
+ vectorDbOptions.connectionString = (_A = (_z = (_w = readString(env, "PGVECTOR_CONNECTION_STRING")) != null ? _w : readString(env, "POSTGRES_URL")) != null ? _z : (_y = (_x = base == null ? void 0 : base.vectorDb) == null ? void 0 : _x.options) == null ? void 0 : _y.connectionString) != null ? _A : "";
3208
+ vectorDbOptions.tables = (_F = (_C = (_B = readString(env, "VECTOR_DB_TABLES")) != null ? _B : readString(env, "POSTGRES_TABLES")) == null ? void 0 : _C.split(",").map((t) => t.trim())) != null ? _F : (_E = (_D = base == null ? void 0 : base.vectorDb) == null ? void 0 : _D.options) == null ? void 0 : _E.tables;
3209
+ vectorDbOptions.searchFields = (_J = (_G = readString(env, "POSTGRES_SEARCH_FIELDS")) == null ? void 0 : _G.split(",").map((f) => f.trim())) != null ? _J : (_I = (_H = base == null ? void 0 : base.vectorDb) == null ? void 0 : _H.options) == null ? void 0 : _I.searchFields;
3178
3210
  vectorDbOptions.dimensions = embeddingDimensions;
3179
3211
  } else if (vectorProvider === "mongodb") {
3180
- vectorDbOptions.uri = (_L = (_K = readString(env, "MONGODB_URI")) != null ? _K : (_J = (_I = base == null ? void 0 : base.vectorDb) == null ? void 0 : _I.options) == null ? void 0 : _J.uri) != null ? _L : "";
3181
- vectorDbOptions.database = (_P = (_O = readString(env, "MONGODB_DB")) != null ? _O : (_N = (_M = base == null ? void 0 : base.vectorDb) == null ? void 0 : _M.options) == null ? void 0 : _N.database) != null ? _P : "";
3182
- vectorDbOptions.collection = (_T = (_S = readString(env, "MONGODB_COLLECTION")) != null ? _S : (_R = (_Q = base == null ? void 0 : base.vectorDb) == null ? void 0 : _Q.options) == null ? void 0 : _R.collection) != null ? _T : "";
3183
- vectorDbOptions.indexName = (_Z = (_Y = (_V = readString(env, "MONGODB_INDEX_NAME")) != null ? _V : (_U = base == null ? void 0 : base.vectorDb) == null ? void 0 : _U.indexName) != null ? _Y : (_X = (_W = base == null ? void 0 : base.vectorDb) == null ? void 0 : _W.options) == null ? void 0 : _X.indexName) != null ? _Z : "vector_index";
3212
+ vectorDbOptions.uri = (_N = (_M = readString(env, "MONGODB_URI")) != null ? _M : (_L = (_K = base == null ? void 0 : base.vectorDb) == null ? void 0 : _K.options) == null ? void 0 : _L.uri) != null ? _N : "";
3213
+ vectorDbOptions.database = (_R = (_Q = readString(env, "MONGODB_DB")) != null ? _Q : (_P = (_O = base == null ? void 0 : base.vectorDb) == null ? void 0 : _O.options) == null ? void 0 : _P.database) != null ? _R : "";
3214
+ vectorDbOptions.collection = (_V = (_U = readString(env, "MONGODB_COLLECTION")) != null ? _U : (_T = (_S = base == null ? void 0 : base.vectorDb) == null ? void 0 : _S.options) == null ? void 0 : _T.collection) != null ? _V : "";
3215
+ vectorDbOptions.indexName = (_$ = (__ = (_X = readString(env, "MONGODB_INDEX_NAME")) != null ? _X : (_W = base == null ? void 0 : base.vectorDb) == null ? void 0 : _W.indexName) != null ? __ : (_Z = (_Y = base == null ? void 0 : base.vectorDb) == null ? void 0 : _Y.options) == null ? void 0 : _Z.indexName) != null ? _$ : "vector_index";
3184
3216
  } else if (vectorProvider === "qdrant") {
3185
- vectorDbOptions.baseUrl = (_ba = (_aa = readString(env, "QDRANT_URL")) != null ? _aa : (_$ = (__ = base == null ? void 0 : base.vectorDb) == null ? void 0 : __.options) == null ? void 0 : _$.baseUrl) != null ? _ba : "http://localhost:6333";
3186
- vectorDbOptions.apiKey = (_ea = readString(env, "QDRANT_API_KEY")) != null ? _ea : (_da = (_ca = base == null ? void 0 : base.vectorDb) == null ? void 0 : _ca.options) == null ? void 0 : _da.apiKey;
3217
+ vectorDbOptions.baseUrl = (_da = (_ca = readString(env, "QDRANT_URL")) != null ? _ca : (_ba = (_aa = base == null ? void 0 : base.vectorDb) == null ? void 0 : _aa.options) == null ? void 0 : _ba.baseUrl) != null ? _da : "http://localhost:6333";
3218
+ vectorDbOptions.apiKey = (_ga = readString(env, "QDRANT_API_KEY")) != null ? _ga : (_fa = (_ea = base == null ? void 0 : base.vectorDb) == null ? void 0 : _ea.options) == null ? void 0 : _fa.apiKey;
3187
3219
  vectorDbOptions.dimensions = embeddingDimensions;
3188
3220
  } else if (vectorProvider === "milvus") {
3189
- vectorDbOptions.baseUrl = (_fa = readString(env, "MILVUS_URL")) != null ? _fa : "http://localhost:19530";
3221
+ vectorDbOptions.baseUrl = (_ha = readString(env, "MILVUS_URL")) != null ? _ha : "http://localhost:19530";
3190
3222
  vectorDbOptions.apiKey = readString(env, "MILVUS_API_KEY");
3191
3223
  } else if (vectorProvider === "chromadb") {
3192
- vectorDbOptions.baseUrl = (_ga = readString(env, "CHROMADB_URL")) != null ? _ga : "http://localhost:8000";
3224
+ vectorDbOptions.baseUrl = (_ia = readString(env, "CHROMADB_URL")) != null ? _ia : "http://localhost:8000";
3193
3225
  } else if (vectorProvider === "weaviate") {
3194
- vectorDbOptions.baseUrl = (_ha = readString(env, "WEAVIATE_URL")) != null ? _ha : "http://localhost:8080";
3226
+ vectorDbOptions.baseUrl = (_ja = readString(env, "WEAVIATE_URL")) != null ? _ja : "http://localhost:8080";
3195
3227
  vectorDbOptions.apiKey = readString(env, "WEAVIATE_API_KEY");
3196
3228
  } else if (vectorProvider === "redis") {
3197
- vectorDbOptions.baseUrl = (_ia = readString(env, "REDIS_URL")) != null ? _ia : "";
3229
+ vectorDbOptions.baseUrl = (_ka = readString(env, "REDIS_URL")) != null ? _ka : "";
3198
3230
  vectorDbOptions.apiKey = readString(env, "REDIS_API_KEY");
3199
3231
  } else if (vectorProvider === "rest") {
3200
- vectorDbOptions.baseUrl = (_ja = readString(env, "VECTOR_DB_REST_URL")) != null ? _ja : "";
3232
+ vectorDbOptions.baseUrl = (_la = readString(env, "VECTOR_DB_REST_URL")) != null ? _la : "";
3201
3233
  vectorDbOptions.headers = readString(env, "VECTOR_DB_REST_API_KEY") ? { "api-key": readString(env, "VECTOR_DB_REST_API_KEY") } : {};
3202
3234
  } else if (vectorProvider === "universal_rest") {
3203
- vectorDbOptions.baseUrl = (_la = (_ka = readString(env, "VECTOR_BASE_URL")) != null ? _ka : readString(env, "VECTOR_DB_REST_URL")) != null ? _la : "";
3235
+ vectorDbOptions.baseUrl = (_na = (_ma = readString(env, "VECTOR_BASE_URL")) != null ? _ma : readString(env, "VECTOR_DB_REST_URL")) != null ? _na : "";
3204
3236
  vectorDbOptions.profile = readString(env, "VECTOR_UNIVERSAL_PROFILE");
3205
3237
  vectorDbOptions.headers = readString(env, "VECTOR_DB_REST_API_KEY") ? { Authorization: `Bearer ${readString(env, "VECTOR_DB_REST_API_KEY")}` } : {};
3206
3238
  }
@@ -3219,8 +3251,8 @@ function getEnvConfig(env = process.env, base) {
3219
3251
  // Anthropic needs a separate embedding provider; key kept for completeness
3220
3252
  gemini: readString(env, "GEMINI_API_KEY"),
3221
3253
  ollama: void 0,
3222
- universal_rest: (_ma = readString(env, "EMBEDDING_API_KEY")) != null ? _ma : readString(env, "OPENAI_API_KEY"),
3223
- custom: (_na = readString(env, "EMBEDDING_API_KEY")) != null ? _na : readString(env, "OPENAI_API_KEY")
3254
+ universal_rest: (_oa = readString(env, "EMBEDDING_API_KEY")) != null ? _oa : readString(env, "OPENAI_API_KEY"),
3255
+ custom: (_pa = readString(env, "EMBEDDING_API_KEY")) != null ? _pa : readString(env, "OPENAI_API_KEY")
3224
3256
  };
3225
3257
  const DEFAULT_MODEL_BY_PROVIDER = {
3226
3258
  openai: "gpt-4o",
@@ -3241,25 +3273,25 @@ function getEnvConfig(env = process.env, base) {
3241
3273
  return true;
3242
3274
  }
3243
3275
  })();
3244
- const defaultGatewayUrl = (_pa = (_oa = readString(env, "LITELLM_BASE_URL")) != null ? _oa : readString(env, "LLM_BASE_URL")) != null ? _pa : "https://www.retrivora.com/api/v1";
3276
+ const defaultGatewayUrl = (_ra = (_qa = readString(env, "LITELLM_BASE_URL")) != null ? _qa : readString(env, "LLM_BASE_URL")) != null ? _ra : "https://www.retrivora.com/api/v1";
3245
3277
  const defaultLlmProvider = isFreeTier ? "universal_rest" : "universal_rest";
3246
- const llmProvider = (_sa = (_ra = readEnum(env, "LLM_PROVIDER", defaultLlmProvider, LLM_PROVIDERS)) != null ? _ra : (_qa = base == null ? void 0 : base.llm) == null ? void 0 : _qa.provider) != null ? _sa : defaultLlmProvider;
3247
- const llmBaseUrl = (_wa = (_va = (_ta = readString(env, "LITELLM_BASE_URL")) != null ? _ta : readString(env, "LLM_BASE_URL")) != null ? _va : (_ua = base == null ? void 0 : base.llm) == null ? void 0 : _ua.baseUrl) != null ? _wa : defaultGatewayUrl;
3248
- const llmModel = (_Aa = (_ya = readString(env, "LLM_MODEL")) != null ? _ya : (_xa = base == null ? void 0 : base.llm) == null ? void 0 : _xa.model) != null ? _Aa : isFreeTier ? "llama-3.1-8b-instant" : (_za = DEFAULT_MODEL_BY_PROVIDER[llmProvider]) != null ? _za : "gpt-4o";
3249
- const llmApiKey = (_Ga = (_Fa = (_Da = (_Ca = (_Ba = llmApiKeyByProvider[llmProvider]) != null ? _Ba : readString(env, "LLM_API_KEY")) != null ? _Ca : readString(env, "LITELLM_MASTER_KEY")) != null ? _Da : readString(env, "LITELLM_API_KEY")) != null ? _Fa : (_Ea = base == null ? void 0 : base.llm) == null ? void 0 : _Ea.apiKey) != null ? _Ga : licenseKey;
3250
- const llmProfile = (_Ka = (_Ja = readString(env, "LLM_UNIVERSAL_PROFILE")) != null ? _Ja : (_Ia = (_Ha = base == null ? void 0 : base.llm) == null ? void 0 : _Ha.options) == null ? void 0 : _Ia.profile) != null ? _Ka : "litellm";
3278
+ const llmProvider = (_ua = (_ta = readEnum(env, "LLM_PROVIDER", defaultLlmProvider, LLM_PROVIDERS)) != null ? _ta : (_sa = base == null ? void 0 : base.llm) == null ? void 0 : _sa.provider) != null ? _ua : defaultLlmProvider;
3279
+ const llmBaseUrl = (_ya = (_xa = (_va = readString(env, "LITELLM_BASE_URL")) != null ? _va : readString(env, "LLM_BASE_URL")) != null ? _xa : (_wa = base == null ? void 0 : base.llm) == null ? void 0 : _wa.baseUrl) != null ? _ya : defaultGatewayUrl;
3280
+ const llmModel = (_Ca = (_Aa = readString(env, "LLM_MODEL")) != null ? _Aa : (_za = base == null ? void 0 : base.llm) == null ? void 0 : _za.model) != null ? _Ca : isFreeTier ? "llama-3.1-8b-instant" : (_Ba = DEFAULT_MODEL_BY_PROVIDER[llmProvider]) != null ? _Ba : "gpt-4o";
3281
+ const llmApiKey = (_Ia = (_Ha = (_Fa = (_Ea = (_Da = llmApiKeyByProvider[llmProvider]) != null ? _Da : readString(env, "LLM_API_KEY")) != null ? _Ea : readString(env, "LITELLM_MASTER_KEY")) != null ? _Fa : readString(env, "LITELLM_API_KEY")) != null ? _Ha : (_Ga = base == null ? void 0 : base.llm) == null ? void 0 : _Ga.apiKey) != null ? _Ia : licenseKey;
3282
+ const llmProfile = (_Ma = (_La = readString(env, "LLM_UNIVERSAL_PROFILE")) != null ? _La : (_Ka = (_Ja = base == null ? void 0 : base.llm) == null ? void 0 : _Ja.options) == null ? void 0 : _Ka.profile) != null ? _Ma : "litellm";
3251
3283
  const defaultEmbeddingProvider = isFreeTier ? "universal_rest" : "universal_rest";
3252
- const embeddingProvider = (_Na = (_Ma = readEnum(env, "EMBEDDING_PROVIDER", defaultEmbeddingProvider, EMBEDDING_PROVIDERS)) != null ? _Ma : (_La = base == null ? void 0 : base.embedding) == null ? void 0 : _La.provider) != null ? _Na : defaultEmbeddingProvider;
3253
- const embeddingBaseUrl = (_Sa = (_Ra = (_Pa = (_Oa = readString(env, "LITELLM_BASE_URL")) != null ? _Oa : readString(env, "EMBEDDING_BASE_URL")) != null ? _Pa : readString(env, "LLM_BASE_URL")) != null ? _Ra : (_Qa = base == null ? void 0 : base.embedding) == null ? void 0 : _Qa.baseUrl) != null ? _Sa : defaultGatewayUrl;
3254
- const embeddingModel = (_Va = (_Ua = readString(env, "EMBEDDING_MODEL")) != null ? _Ua : (_Ta = base == null ? void 0 : base.embedding) == null ? void 0 : _Ta.model) != null ? _Va : "text-embedding-004";
3255
- const embeddingApiKey = (_ab = (_$a = (_Za = (_Ya = (_Xa = (_Wa = embeddingApiKeyByProvider[embeddingProvider]) != null ? _Wa : readString(env, "EMBEDDING_API_KEY")) != null ? _Xa : readString(env, "LLM_API_KEY")) != null ? _Ya : readString(env, "LITELLM_MASTER_KEY")) != null ? _Za : readString(env, "LITELLM_API_KEY")) != null ? _$a : (__a = base == null ? void 0 : base.embedding) == null ? void 0 : __a.apiKey) != null ? _ab : licenseKey;
3256
- const embeddingProfile = (_eb = (_db = readString(env, "EMBEDDING_UNIVERSAL_PROFILE")) != null ? _db : (_cb = (_bb = base == null ? void 0 : base.embedding) == null ? void 0 : _bb.options) == null ? void 0 : _cb.profile) != null ? _eb : "litellm";
3284
+ const embeddingProvider = (_Pa = (_Oa = readEnum(env, "EMBEDDING_PROVIDER", defaultEmbeddingProvider, EMBEDDING_PROVIDERS)) != null ? _Oa : (_Na = base == null ? void 0 : base.embedding) == null ? void 0 : _Na.provider) != null ? _Pa : defaultEmbeddingProvider;
3285
+ const embeddingBaseUrl = (_Ua = (_Ta = (_Ra = (_Qa = readString(env, "LITELLM_BASE_URL")) != null ? _Qa : readString(env, "EMBEDDING_BASE_URL")) != null ? _Ra : readString(env, "LLM_BASE_URL")) != null ? _Ta : (_Sa = base == null ? void 0 : base.embedding) == null ? void 0 : _Sa.baseUrl) != null ? _Ua : defaultGatewayUrl;
3286
+ const embeddingModel = (_Xa = (_Wa = readString(env, "EMBEDDING_MODEL")) != null ? _Wa : (_Va = base == null ? void 0 : base.embedding) == null ? void 0 : _Va.model) != null ? _Xa : "text-embedding-004";
3287
+ const embeddingApiKey = (_cb = (_bb = (_$a = (__a = (_Za = (_Ya = embeddingApiKeyByProvider[embeddingProvider]) != null ? _Ya : readString(env, "EMBEDDING_API_KEY")) != null ? _Za : readString(env, "LLM_API_KEY")) != null ? __a : readString(env, "LITELLM_MASTER_KEY")) != null ? _$a : readString(env, "LITELLM_API_KEY")) != null ? _bb : (_ab = base == null ? void 0 : base.embedding) == null ? void 0 : _ab.apiKey) != null ? _cb : licenseKey;
3288
+ const embeddingProfile = (_gb = (_fb = readString(env, "EMBEDDING_UNIVERSAL_PROFILE")) != null ? _fb : (_eb = (_db = base == null ? void 0 : base.embedding) == null ? void 0 : _db.options) == null ? void 0 : _eb.profile) != null ? _gb : "litellm";
3257
3289
  return __spreadProps(__spreadValues({
3258
3290
  projectId,
3259
3291
  licenseKey,
3260
3292
  vectorDb: {
3261
3293
  provider: vectorProvider,
3262
- indexName: (_gb = (_fb = readString(env, "VECTOR_DB_INDEX")) != null ? _fb : vectorDbOptions.indexName) != null ? _gb : "rag-index",
3294
+ indexName: (_ib = (_hb = readString(env, "VECTOR_DB_INDEX")) != null ? _hb : vectorDbOptions.indexName) != null ? _ib : "rag-index",
3263
3295
  options: vectorDbOptions
3264
3296
  },
3265
3297
  llm: {
@@ -3289,30 +3321,30 @@ function getEnvConfig(env = process.env, base) {
3289
3321
  }
3290
3322
  },
3291
3323
  ui: {
3292
- title: (_ib = (_hb = readString(env, "NEXT_PUBLIC_UI_TITLE")) != null ? _hb : readString(env, "UI_TITLE")) != null ? _ib : "AI Assistant",
3293
- subtitle: (_kb = (_jb = readString(env, "NEXT_PUBLIC_UI_SUBTITLE")) != null ? _jb : readString(env, "UI_SUBTITLE")) != null ? _kb : "Powered by RAG",
3294
- primaryColor: (_mb = (_lb = readString(env, "NEXT_PUBLIC_PRIMARY_COLOR")) != null ? _lb : readString(env, "UI_PRIMARY_COLOR")) != null ? _mb : "#10b981",
3295
- accentColor: (_ob = (_nb = readString(env, "NEXT_PUBLIC_ACCENT_COLOR")) != null ? _nb : readString(env, "UI_ACCENT_COLOR")) != null ? _ob : "#3b82f6",
3296
- logoUrl: (_pb = readString(env, "NEXT_PUBLIC_LOGO_URL")) != null ? _pb : readString(env, "UI_LOGO_URL"),
3297
- placeholder: (_rb = (_qb = readString(env, "NEXT_PUBLIC_PLACEHOLDER")) != null ? _qb : readString(env, "UI_PLACEHOLDER")) != null ? _rb : "Ask me anything\u2026",
3298
- showSources: ((_tb = (_sb = readString(env, "NEXT_PUBLIC_SHOW_SOURCES")) != null ? _sb : readString(env, "UI_SHOW_SOURCES")) != null ? _tb : "true") !== "false",
3299
- welcomeMessage: (_vb = (_ub = readString(env, "NEXT_PUBLIC_WELCOME_MESSAGE")) != null ? _ub : readString(env, "UI_WELCOME_MESSAGE")) != null ? _vb : "Hello! I'm your AI assistant. Ask me anything about your documents.",
3300
- visualStyle: (_xb = (_wb = readString(env, "NEXT_PUBLIC_UI_VISUAL_STYLE")) != null ? _wb : readString(env, "UI_VISUAL_STYLE")) != null ? _xb : "glass",
3301
- borderRadius: (_zb = (_yb = readString(env, "NEXT_PUBLIC_UI_BORDER_RADIUS")) != null ? _yb : readString(env, "UI_BORDER_RADIUS")) != null ? _zb : "xl",
3302
- allowUpload: ((_Bb = (_Ab = readString(env, "NEXT_PUBLIC_ALLOW_UPLOAD")) != null ? _Ab : readString(env, "UI_ALLOW_UPLOAD")) != null ? _Bb : "false") === "true"
3324
+ title: (_kb = (_jb = readString(env, "NEXT_PUBLIC_UI_TITLE")) != null ? _jb : readString(env, "UI_TITLE")) != null ? _kb : "AI Assistant",
3325
+ subtitle: (_mb = (_lb = readString(env, "NEXT_PUBLIC_UI_SUBTITLE")) != null ? _lb : readString(env, "UI_SUBTITLE")) != null ? _mb : "Powered by RAG",
3326
+ primaryColor: (_ob = (_nb = readString(env, "NEXT_PUBLIC_PRIMARY_COLOR")) != null ? _nb : readString(env, "UI_PRIMARY_COLOR")) != null ? _ob : "#10b981",
3327
+ accentColor: (_qb = (_pb = readString(env, "NEXT_PUBLIC_ACCENT_COLOR")) != null ? _pb : readString(env, "UI_ACCENT_COLOR")) != null ? _qb : "#3b82f6",
3328
+ logoUrl: (_rb = readString(env, "NEXT_PUBLIC_LOGO_URL")) != null ? _rb : readString(env, "UI_LOGO_URL"),
3329
+ placeholder: (_tb = (_sb = readString(env, "NEXT_PUBLIC_PLACEHOLDER")) != null ? _sb : readString(env, "UI_PLACEHOLDER")) != null ? _tb : "Ask me anything\u2026",
3330
+ showSources: ((_vb = (_ub = readString(env, "NEXT_PUBLIC_SHOW_SOURCES")) != null ? _ub : readString(env, "UI_SHOW_SOURCES")) != null ? _vb : "true") !== "false",
3331
+ welcomeMessage: (_xb = (_wb = readString(env, "NEXT_PUBLIC_WELCOME_MESSAGE")) != null ? _wb : readString(env, "UI_WELCOME_MESSAGE")) != null ? _xb : "Hello! I'm your AI assistant. Ask me anything about your documents.",
3332
+ visualStyle: (_zb = (_yb = readString(env, "NEXT_PUBLIC_UI_VISUAL_STYLE")) != null ? _yb : readString(env, "UI_VISUAL_STYLE")) != null ? _zb : "glass",
3333
+ borderRadius: (_Bb = (_Ab = readString(env, "NEXT_PUBLIC_UI_BORDER_RADIUS")) != null ? _Ab : readString(env, "UI_BORDER_RADIUS")) != null ? _Bb : "xl",
3334
+ allowUpload: ((_Db = (_Cb = readString(env, "NEXT_PUBLIC_ALLOW_UPLOAD")) != null ? _Cb : readString(env, "UI_ALLOW_UPLOAD")) != null ? _Db : "false") === "true"
3303
3335
  },
3304
3336
  rag: {
3305
3337
  topK: readNumber(env, "RAG_TOP_K", 5),
3306
3338
  scoreThreshold: readNumber(env, "RAG_SCORE_THRESHOLD", 0),
3307
3339
  chunkSize: readNumber(env, "RAG_CHUNK_SIZE", 1e3),
3308
3340
  chunkOverlap: readNumber(env, "RAG_CHUNK_OVERLAP", 200),
3309
- filterableFields: (_Cb = readString(env, "RAG_FILTERABLE_FIELDS")) == null ? void 0 : _Cb.split(",").map((f) => f.trim()),
3341
+ filterableFields: (_Eb = readString(env, "RAG_FILTERABLE_FIELDS")) == null ? void 0 : _Eb.split(",").map((f) => f.trim()),
3310
3342
  // Query pipeline toggles — read from .env.local
3311
3343
  useQueryTransformation: readString(env, "RAG_USE_QUERY_TRANSFORMATION") === "true",
3312
3344
  useReranking: readString(env, "RAG_USE_RERANKING") === "true",
3313
3345
  useGraphRetrieval: readString(env, "RAG_USE_GRAPH_RETRIEVAL") === "true",
3314
- architecture: (_Db = readString(env, "RAG_ARCHITECTURE")) != null ? _Db : "simple",
3315
- chunkingStrategy: (_Eb = readString(env, "RAG_CHUNKING_STRATEGY")) != null ? _Eb : "recursive",
3346
+ architecture: (_Fb = readString(env, "RAG_ARCHITECTURE")) != null ? _Fb : "simple",
3347
+ chunkingStrategy: (_Gb = readString(env, "RAG_CHUNKING_STRATEGY")) != null ? _Gb : "recursive",
3316
3348
  uiMapping: (() => {
3317
3349
  const raw = readString(env, "RAG_UI_MAPPING");
3318
3350
  if (!raw) return void 0;
@@ -3325,7 +3357,7 @@ function getEnvConfig(env = process.env, base) {
3325
3357
  },
3326
3358
  telemetry: {
3327
3359
  enabled: telemetryEnabled,
3328
- url: (_Ib = (_Hb = (_Fb = readString(env, "TELEMETRY_URL")) != null ? _Fb : readString(env, "NEXT_PUBLIC_TELEMETRY_URL")) != null ? _Hb : (_Gb = base == null ? void 0 : base.telemetry) == null ? void 0 : _Gb.url) != null ? _Ib : process.env.NODE_ENV === "development" ? "http://localhost:3001/api/telemetry" : "https://retrivora.com/api/telemetry"
3360
+ url: (_Kb = (_Jb = (_Hb = readString(env, "TELEMETRY_URL")) != null ? _Hb : readString(env, "NEXT_PUBLIC_TELEMETRY_URL")) != null ? _Jb : (_Ib = base == null ? void 0 : base.telemetry) == null ? void 0 : _Ib.url) != null ? _Kb : process.env.NODE_ENV === "development" ? "http://localhost:3001/api/telemetry" : "https://retrivora.com/api/telemetry"
3329
3361
  }
3330
3362
  }, readString(env, "GRAPH_DB_PROVIDER") ? {
3331
3363
  graphDb: {
@@ -5328,7 +5360,7 @@ var ConfigValidator = class {
5328
5360
  // package.json
5329
5361
  var package_default = {
5330
5362
  name: "@retrivora-ai/rag-engine",
5331
- version: "2.2.1",
5363
+ version: "2.2.3",
5332
5364
  description: "Retrivora AI is a plug-and-play AI engine for RAG chat experiences \u2014 generic vector DB + LLM provider, embeddable or standalone.",
5333
5365
  author: "Abhinav Alkuchi",
5334
5366
  license: "UNLICENSED",
@@ -8974,11 +9006,10 @@ SchemaMapper.TARGET_PROPERTIES = {
8974
9006
 
8975
9007
  // src/core/Pipeline.ts
8976
9008
  function formatNamespace(raw) {
8977
- if (!raw || !raw.trim()) return "retrivora-default";
9009
+ if (!raw || !raw.trim()) return "default";
8978
9010
  const trimmed = raw.trim();
8979
- if (trimmed.startsWith("retrivora-")) return trimmed;
8980
- const sanitized = trimmed.toLowerCase().replace(/[^a-z0-9_-]/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
8981
- return `retrivora-${sanitized}`;
9011
+ const sanitized = trimmed.replace(/[^a-zA-Z0-9_-]/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
9012
+ return sanitized || "default";
8982
9013
  }
8983
9014
  var LRUEmbeddingCache = class {
8984
9015
  constructor(maxSize = 500) {
@@ -10874,7 +10905,7 @@ function reportTelemetry(req, plugin, action, status, details, trace) {
10874
10905
  const licenseKey = config.licenseKey || process.env.RAG_LICENSE_KEY || process.env.RETRIVORA_LICENSE_KEY || process.env.NEXT_PUBLIC_RETRIVORA_LICENSE_KEY;
10875
10906
  const telemetryConfig = config.telemetry;
10876
10907
  const enabled = (_a2 = telemetryConfig == null ? void 0 : telemetryConfig.enabled) != null ? _a2 : Boolean(licenseKey);
10877
- const defaultUrl = process.env.NODE_ENV === "development" && !process.env.TELEMETRY_URL && !process.env.NEXT_PUBLIC_TELEMETRY_URL ? "http://localhost:3001/api/telemetry" : "https://retrivora.com/api/telemetry";
10908
+ const defaultUrl = process.env.NODE_ENV === "development" && !process.env.TELEMETRY_URL && !process.env.NEXT_PUBLIC_TELEMETRY_URL ? "http://localhost:3001/api/telemetry" : "https://www.retrivora.com/api/telemetry";
10878
10909
  const telemetryUrl = (telemetryConfig == null ? void 0 : telemetryConfig.url) || process.env.TELEMETRY_URL || process.env.NEXT_PUBLIC_TELEMETRY_URL || defaultUrl;
10879
10910
  const host = req.headers.get("host") || "localhost";
10880
10911
  const userAgent = req.headers.get("user-agent") || `Retrivora-SDK/${SDK_VERSION}`;
package/dist/index.css CHANGED
@@ -112,6 +112,7 @@
112
112
  --color-white: #fff;
113
113
  --spacing: 0.25rem;
114
114
  --container-xs: 20rem;
115
+ --container-sm: 24rem;
115
116
  --container-md: 28rem;
116
117
  --container-2xl: 42rem;
117
118
  --container-4xl: 56rem;
@@ -123,11 +124,14 @@
123
124
  --text-base--line-height: calc(1.5 / 1);
124
125
  --text-lg: 1.125rem;
125
126
  --text-lg--line-height: calc(1.75 / 1.125);
127
+ --text-xl: 1.25rem;
128
+ --text-xl--line-height: calc(1.75 / 1.25);
126
129
  --text-3xl: 1.875rem;
127
130
  --text-3xl--line-height: calc(2.25 / 1.875);
128
131
  --font-weight-medium: 500;
129
132
  --font-weight-semibold: 600;
130
133
  --font-weight-bold: 700;
134
+ --font-weight-extrabold: 800;
131
135
  --tracking-tight: -0.025em;
132
136
  --tracking-wider: 0.05em;
133
137
  --tracking-widest: 0.1em;
@@ -759,6 +763,9 @@
759
763
  .max-w-none {
760
764
  max-width: none;
761
765
  }
766
+ .max-w-sm {
767
+ max-width: var(--container-sm);
768
+ }
762
769
  .max-w-xs {
763
770
  max-width: var(--container-xs);
764
771
  }
@@ -777,6 +784,9 @@
777
784
  .flex-shrink-0 {
778
785
  flex-shrink: 0;
779
786
  }
787
+ .shrink-0 {
788
+ flex-shrink: 0;
789
+ }
780
790
  .flex-grow {
781
791
  flex-grow: 1;
782
792
  }
@@ -930,6 +940,9 @@
930
940
  .gap-2 {
931
941
  gap: calc(var(--spacing) * 2);
932
942
  }
943
+ .gap-2\.5 {
944
+ gap: calc(var(--spacing) * 2.5);
945
+ }
933
946
  .gap-3 {
934
947
  gap: calc(var(--spacing) * 3);
935
948
  }
@@ -1111,6 +1124,12 @@
1111
1124
  .border-emerald-100 {
1112
1125
  border-color: var(--color-emerald-100);
1113
1126
  }
1127
+ .border-emerald-100\/50 {
1128
+ border-color: color-mix(in srgb, oklch(95% 0.052 163.051) 50%, transparent);
1129
+ @supports (color: color-mix(in lab, red, red)) {
1130
+ border-color: color-mix(in oklab, var(--color-emerald-100) 50%, transparent);
1131
+ }
1132
+ }
1114
1133
  .border-emerald-200 {
1115
1134
  border-color: var(--color-emerald-200);
1116
1135
  }
@@ -1363,6 +1382,12 @@
1363
1382
  .bg-slate-950 {
1364
1383
  background-color: var(--color-slate-950);
1365
1384
  }
1385
+ .bg-slate-950\/70 {
1386
+ background-color: color-mix(in srgb, oklch(12.9% 0.042 264.695) 70%, transparent);
1387
+ @supports (color: color-mix(in lab, red, red)) {
1388
+ background-color: color-mix(in oklab, var(--color-slate-950) 70%, transparent);
1389
+ }
1390
+ }
1366
1391
  .bg-transparent {
1367
1392
  background-color: transparent;
1368
1393
  }
@@ -1520,6 +1545,10 @@
1520
1545
  font-size: var(--text-sm);
1521
1546
  line-height: var(--tw-leading, var(--text-sm--line-height));
1522
1547
  }
1548
+ .text-xl {
1549
+ font-size: var(--text-xl);
1550
+ line-height: var(--tw-leading, var(--text-xl--line-height));
1551
+ }
1523
1552
  .text-xs {
1524
1553
  font-size: var(--text-xs);
1525
1554
  line-height: var(--tw-leading, var(--text-xs--line-height));
@@ -1551,6 +1580,10 @@
1551
1580
  --tw-font-weight: var(--font-weight-bold);
1552
1581
  font-weight: var(--font-weight-bold);
1553
1582
  }
1583
+ .font-extrabold {
1584
+ --tw-font-weight: var(--font-weight-extrabold);
1585
+ font-weight: var(--font-weight-extrabold);
1586
+ }
1554
1587
  .font-medium {
1555
1588
  --tw-font-weight: var(--font-weight-medium);
1556
1589
  font-weight: var(--font-weight-medium);
@@ -1649,6 +1682,9 @@
1649
1682
  .text-emerald-800 {
1650
1683
  color: var(--color-emerald-800);
1651
1684
  }
1685
+ .text-emerald-900 {
1686
+ color: var(--color-emerald-900);
1687
+ }
1652
1688
  .text-emerald-950 {
1653
1689
  color: var(--color-emerald-950);
1654
1690
  }
@@ -2363,6 +2399,14 @@
2363
2399
  }
2364
2400
  }
2365
2401
  }
2402
+ .dark\:border-emerald-500\/10 {
2403
+ @media (prefers-color-scheme: dark) {
2404
+ border-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 10%, transparent);
2405
+ @supports (color: color-mix(in lab, red, red)) {
2406
+ border-color: color-mix(in oklab, var(--color-emerald-500) 10%, transparent);
2407
+ }
2408
+ }
2409
+ }
2366
2410
  .dark\:border-emerald-500\/20 {
2367
2411
  @media (prefers-color-scheme: dark) {
2368
2412
  border-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 20%, transparent);