@retrivora-ai/rag-engine 2.1.3 → 2.1.4

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.
@@ -1,4 +1,5 @@
1
1
  import { BaseVectorProvider } from '../providers/vectordb/BaseVectorProvider';
2
+ import { SDK_VERSION } from '../version';
2
3
  import { BaseGraphProvider } from '../providers/graphdb/BaseGraphProvider';
3
4
  import { ILLMProvider } from '../llm/ILLMProvider';
4
5
  import { ChatMessage } from '../types';
@@ -933,6 +934,14 @@ You are a helpful assistant. Use the provided context to answer questions accura
933
934
  }
934
935
  }
935
936
 
937
+ const modelName = finalTrace?.model || this.config.llm?.model || 'llama-3.1-8b-instant';
938
+ const providerName = finalTrace?.provider || this.config.llm?.provider || 'groq';
939
+ const tokenCount = Number(finalTrace?.tokens?.totalTokens || 0);
940
+ const costEst = Number(finalTrace?.tokens?.estimatedCostUsd || 0);
941
+ const latencyDuration = Number(finalTrace?.latency?.totalMs || 0);
942
+
943
+ console.log(`[Retrivora Pipeline Telemetry] 📊 Dispatching RAG telemetry -> Project: "${ns}", Model: "${providerName}/${modelName}", Tokens: ${tokenCount}, Latency: ${latencyDuration}ms`);
944
+
936
945
  await fetch(absoluteUrl, {
937
946
  method: 'POST',
938
947
  headers: {
@@ -941,7 +950,20 @@ You are a helpful assistant. Use the provided context to answer questions accura
941
950
  body: JSON.stringify({
942
951
  trace: finalTrace,
943
952
  licenseKey: this.config.licenseKey,
944
- projectId: ns
953
+ projectId: ns,
954
+ organization: process.env.RETRIVORA_ORGANIZATION || 'default-org',
955
+ sdkVersion: SDK_VERSION,
956
+ model: modelName,
957
+ provider: providerName,
958
+ tokens: tokenCount,
959
+ cost: costEst,
960
+ costUsd: costEst,
961
+ latencyMs: latencyDuration,
962
+ status: 'success',
963
+ action: 'RAG_QUERY',
964
+ feature: 'RAG',
965
+ timestamp: new Date().toISOString(),
966
+ details: `Org: default-org | Model: ${providerName}/${modelName} | Tokens: ${tokenCount} | Latency: ${latencyDuration}ms | Cost: $${costEst} | SDK: v${SDK_VERSION} | Feature: RAG`
945
967
  })
946
968
  });
947
969
  } catch (err: any) {
@@ -147,6 +147,8 @@ function getOrCreatePlugin(configOrPlugin: Partial<RagConfig> | VectorPlugin | u
147
147
 
148
148
  // ─── Telemetry Reporter Helper ───────────────────────────────────────────────
149
149
 
150
+ import { SDK_VERSION } from '../version';
151
+
150
152
  /**
151
153
  * Asynchronously sends telemetry payload to telemetryUrl when telemetry is enabled
152
154
  * or when a licenseKey is set. Non-blocking.
@@ -157,7 +159,7 @@ function reportTelemetry(
157
159
  action: string,
158
160
  status: 'success' | 'error',
159
161
  details: string,
160
- trace?: unknown
162
+ trace?: any
161
163
  ) {
162
164
  try {
163
165
  const config = plugin.getConfig();
@@ -171,6 +173,7 @@ function reportTelemetry(
171
173
 
172
174
  const telemetryUrl = telemetryConfig?.url || process.env.TELEMETRY_URL || process.env.NEXT_PUBLIC_TELEMETRY_URL || defaultUrl;
173
175
  const host = req.headers.get('host') || 'localhost';
176
+ const userAgent = req.headers.get('user-agent') || `Retrivora-SDK/${SDK_VERSION}`;
174
177
 
175
178
  let absoluteUrl = telemetryUrl;
176
179
  if (!telemetryUrl.startsWith('http')) {
@@ -179,6 +182,33 @@ function reportTelemetry(
179
182
  }
180
183
 
181
184
  const projectId = config.projectId || 'default';
185
+ const model = trace?.model || config.llm?.model || config.embedding?.model || 'llama-3.1-8b-instant';
186
+ const provider = trace?.provider || config.llm?.provider || config.embedding?.provider || 'groq';
187
+ const tokens = Number(trace?.tokens?.totalTokens || trace?.totalTokens || 0);
188
+ const costUsd = Number(trace?.tokens?.estimatedCostUsd || trace?.costUsd || 0);
189
+ const latencyMs = Number(trace?.latency?.totalMs || trace?.latencyMs || 0);
190
+
191
+ const payload = {
192
+ trace,
193
+ licenseKey,
194
+ projectId,
195
+ organization: process.env.RETRIVORA_ORGANIZATION || 'default-org',
196
+ sdkVersion: SDK_VERSION,
197
+ model,
198
+ provider,
199
+ tokens,
200
+ cost: costUsd,
201
+ costUsd,
202
+ latencyMs,
203
+ status,
204
+ action,
205
+ feature: action,
206
+ userAgent,
207
+ timestamp: new Date().toISOString(),
208
+ details,
209
+ };
210
+
211
+ console.log(`[Retrivora SDK Telemetry] 📊 Dispatching telemetry -> Feature: "${action}", Status: "${status}", Project: "${projectId}", Model: "${provider}/${model}", Latency: ${latencyMs}ms`);
182
212
 
183
213
  fetch(absoluteUrl, {
184
214
  method: 'POST',
@@ -186,17 +216,11 @@ function reportTelemetry(
186
216
  'Content-Type': 'application/json',
187
217
  'x-forwarded-for': req.headers.get('x-forwarded-for') || '',
188
218
  'x-real-ip': req.headers.get('x-real-ip') || '',
219
+ 'user-agent': userAgent,
189
220
  },
190
- body: JSON.stringify({
191
- trace,
192
- licenseKey,
193
- projectId,
194
- action,
195
- status,
196
- details,
197
- }),
221
+ body: JSON.stringify(payload),
198
222
  }).catch(err => {
199
- console.warn('[Retrivora Telemetry] Async report warning:', err.message);
223
+ console.warn('[Retrivora SDK Telemetry] Async report warning:', err.message);
200
224
  });
201
225
  } catch {
202
226
  /* non-blocking */
package/src/index.css CHANGED
@@ -2259,6 +2259,11 @@
2259
2259
  cursor: not-allowed;
2260
2260
  }
2261
2261
  }
2262
+ .disabled\:text-slate-400 {
2263
+ &:disabled {
2264
+ color: var(--color-slate-400);
2265
+ }
2266
+ }
2262
2267
  .disabled\:opacity-30 {
2263
2268
  &:disabled {
2264
2269
  opacity: 30%;
@@ -2912,6 +2917,14 @@
2912
2917
  color: var(--color-amber-400);
2913
2918
  }
2914
2919
  }
2920
+ .dark\:text-amber-400\/90 {
2921
+ @media (prefers-color-scheme: dark) {
2922
+ color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 90%, transparent);
2923
+ @supports (color: color-mix(in lab, red, red)) {
2924
+ color: color-mix(in oklab, var(--color-amber-400) 90%, transparent);
2925
+ }
2926
+ }
2927
+ }
2915
2928
  .dark\:text-blue-100 {
2916
2929
  @media (prefers-color-scheme: dark) {
2917
2930
  color: var(--color-blue-100);
@@ -3371,6 +3384,16 @@
3371
3384
  }
3372
3385
  }
3373
3386
  }
3387
+ .dark\:disabled\:text-white\/30 {
3388
+ @media (prefers-color-scheme: dark) {
3389
+ &:disabled {
3390
+ color: color-mix(in srgb, #fff 30%, transparent);
3391
+ @supports (color: color-mix(in lab, red, red)) {
3392
+ color: color-mix(in oklab, var(--color-white) 30%, transparent);
3393
+ }
3394
+ }
3395
+ }
3396
+ }
3374
3397
  }
3375
3398
  @layer base {
3376
3399
  :root {
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ export { MessageBubble } from './components/MessageBubble';
15
15
  export { SourceCard } from './components/SourceCard';
16
16
  export { ObservabilityPanel } from './components/ObservabilityPanel';
17
17
  export { ConfigProvider, useConfig } from './components/ConfigProvider';
18
+ export { SDK_VERSION } from './version';
18
19
  export { CodeViewer } from './components/CodeViewer';
19
20
  export { ProductCard } from './components/ProductCard';
20
21
  export { ProductCarousel } from './components/ProductCarousel';
package/src/server.ts CHANGED
@@ -36,6 +36,7 @@ export { ConfigResolver } from './core/ConfigResolver';
36
36
  export { ProviderRegistry } from './core/ProviderRegistry';
37
37
  export { ConfigValidator } from './core/ConfigValidator';
38
38
  export { LicenseVerifier } from './core/LicenseVerifier';
39
+ export { SDK_VERSION } from './version';
39
40
  export { ProviderHealthCheck } from './core/ProviderHealthCheck';
40
41
  export { BatchProcessor } from './core/BatchProcessor';
41
42
 
@@ -40,6 +40,8 @@ export interface ObservabilityTrace {
40
40
  chunks: RetrievedChunk[];
41
41
  latency: LatencyBreakdown;
42
42
  tokens?: TokenUsage;
43
+ model?: string;
44
+ provider?: string;
43
45
  /** 0 = fully grounded, 1 = likely hallucinated. */
44
46
  hallucinationScore?: number;
45
47
  hallucinationReason?: string;
@@ -109,6 +109,10 @@ export interface ProductCarouselProps {
109
109
  export interface DocumentUploadProps {
110
110
  /** Optional namespace for the upload */
111
111
  namespace?: string;
112
+ /** Custom upload API endpoint URL (defaults to /api/retrivora/upload or /api/upload) */
113
+ uploadUrl?: string;
114
+ /** Base URL for Retrivora SDK endpoints (defaults to /api/retrivora) */
115
+ retrivoraApiBase?: string;
112
116
  /** Callback when upload completes */
113
117
  onUploadComplete?: (results: unknown) => void;
114
118
  /** Additional className */
package/src/version.ts ADDED
@@ -0,0 +1,6 @@
1
+ import pkg from '../package.json';
2
+
3
+ /**
4
+ * Dynamically resolved SDK Version from package.json
5
+ */
6
+ export const SDK_VERSION: string = pkg.version || '2.1.3';