@absolutejs/absolute 0.19.0-beta.552 → 0.19.0-beta.554

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.
package/dist/ai/index.js CHANGED
@@ -2551,6 +2551,7 @@ var resolveRAGHybridSearchOptions = (retrieval) => {
2551
2551
  fusionConstant: DEFAULT_FUSION_CONSTANT,
2552
2552
  lexicalTopK: undefined,
2553
2553
  lexicalWeight: 2,
2554
+ sourceBalanceStrategy: "cap",
2554
2555
  mode: "vector",
2555
2556
  vectorWeight: 1
2556
2557
  };
@@ -2561,6 +2562,7 @@ var resolveRAGHybridSearchOptions = (retrieval) => {
2561
2562
  fusionConstant: DEFAULT_FUSION_CONSTANT,
2562
2563
  lexicalTopK: undefined,
2563
2564
  lexicalWeight: 2,
2565
+ sourceBalanceStrategy: "cap",
2564
2566
  mode: retrieval,
2565
2567
  vectorWeight: 1
2566
2568
  };
@@ -2572,6 +2574,7 @@ var resolveRAGHybridSearchOptions = (retrieval) => {
2572
2574
  maxResultsPerSource: typeof retrieval.maxResultsPerSource === "number" ? Math.max(1, Math.floor(retrieval.maxResultsPerSource)) : undefined,
2573
2575
  lexicalWeight: Math.max(0, retrieval.lexicalWeight ?? 2),
2574
2576
  mode: retrieval.mode ?? "vector",
2577
+ sourceBalanceStrategy: retrieval.sourceBalanceStrategy === "round_robin" ? "round_robin" : "cap",
2575
2578
  vectorWeight: Math.max(0, retrieval.vectorWeight ?? 1)
2576
2579
  };
2577
2580
  };
@@ -4319,10 +4322,47 @@ var getRAGSourceDiversityKey = (result) => {
4319
4322
  const documentId = typeof result.metadata?.documentId === "string" ? result.metadata.documentId : undefined;
4320
4323
  return result.source ?? documentId ?? result.title ?? result.chunkId;
4321
4324
  };
4322
- var applyRAGSourceDiversity = (results, maxResultsPerSource) => {
4325
+ var applyRAGSourceDiversity = (results, maxResultsPerSource, strategy = "cap") => {
4323
4326
  if (typeof maxResultsPerSource !== "number") {
4324
4327
  return results;
4325
4328
  }
4329
+ if (strategy === "round_robin") {
4330
+ const grouped = new Map;
4331
+ const order = [];
4332
+ for (const result of results) {
4333
+ const key = getRAGSourceDiversityKey(result);
4334
+ const entries = grouped.get(key);
4335
+ if (entries) {
4336
+ entries.push(result);
4337
+ continue;
4338
+ }
4339
+ grouped.set(key, [result]);
4340
+ order.push(key);
4341
+ }
4342
+ const counts2 = new Map;
4343
+ const balanced = [];
4344
+ let remaining = true;
4345
+ while (remaining) {
4346
+ remaining = false;
4347
+ for (const key of order) {
4348
+ const entries = grouped.get(key);
4349
+ if (!entries || entries.length === 0) {
4350
+ continue;
4351
+ }
4352
+ if ((counts2.get(key) ?? 0) >= maxResultsPerSource) {
4353
+ continue;
4354
+ }
4355
+ const next = entries.shift();
4356
+ if (!next) {
4357
+ continue;
4358
+ }
4359
+ counts2.set(key, (counts2.get(key) ?? 0) + 1);
4360
+ balanced.push(next);
4361
+ remaining = true;
4362
+ }
4363
+ }
4364
+ return balanced;
4365
+ }
4326
4366
  const limited = [];
4327
4367
  const counts = new Map;
4328
4368
  for (const result of results) {
@@ -4395,6 +4435,7 @@ var createRAGCollection = (options) => {
4395
4435
  mode: retrieval.mode,
4396
4436
  runLexical,
4397
4437
  runVector,
4438
+ sourceBalanceStrategy: retrieval.sourceBalanceStrategy,
4398
4439
  topK
4399
4440
  },
4400
4441
  stage: "input"
@@ -4509,13 +4550,14 @@ var createRAGCollection = (options) => {
4509
4550
  },
4510
4551
  stage: "rerank"
4511
4552
  });
4512
- const diversified = applyRAGSourceDiversity(reranked, retrieval.maxResultsPerSource);
4553
+ const diversified = applyRAGSourceDiversity(reranked, retrieval.maxResultsPerSource, retrieval.sourceBalanceStrategy);
4513
4554
  if (typeof retrieval.maxResultsPerSource === "number") {
4514
4555
  steps.push({
4515
4556
  count: diversified.length,
4516
4557
  label: "Balanced candidates across sources",
4517
4558
  metadata: {
4518
- maxResultsPerSource: retrieval.maxResultsPerSource
4559
+ maxResultsPerSource: retrieval.maxResultsPerSource,
4560
+ strategy: retrieval.sourceBalanceStrategy
4519
4561
  },
4520
4562
  stage: "source_balance"
4521
4563
  });
@@ -4547,6 +4589,7 @@ var createRAGCollection = (options) => {
4547
4589
  },
4548
4590
  runLexical,
4549
4591
  runVector,
4592
+ sourceBalanceStrategy: retrieval.sourceBalanceStrategy,
4550
4593
  steps,
4551
4594
  topK,
4552
4595
  transformedQuery: transformed.query,
@@ -4590,6 +4633,7 @@ var createRAGCollection = (options) => {
4590
4633
  runLexical,
4591
4634
  runVector,
4592
4635
  scoreThreshold,
4636
+ sourceBalanceStrategy: retrieval.sourceBalanceStrategy,
4593
4637
  steps,
4594
4638
  topK,
4595
4639
  transformedQuery: transformed.query,
@@ -5765,8 +5809,11 @@ var summarizeRetrievalTraces = (traces) => {
5765
5809
  }
5766
5810
  const totalCases = traces.length;
5767
5811
  const modeSet = new Set;
5812
+ const sourceBalanceStrategySet = new Set;
5768
5813
  let vectorCases = 0;
5769
5814
  let lexicalCases = 0;
5815
+ let balancedCases = 0;
5816
+ let roundRobinCases = 0;
5770
5817
  let transformedCases = 0;
5771
5818
  let variantCases = 0;
5772
5819
  let finalCountSum = 0;
@@ -5776,12 +5823,19 @@ var summarizeRetrievalTraces = (traces) => {
5776
5823
  let lexicalTopKSum = 0;
5777
5824
  for (const trace of traces) {
5778
5825
  modeSet.add(trace.mode);
5826
+ sourceBalanceStrategySet.add(trace.sourceBalanceStrategy ?? "cap");
5779
5827
  if (trace.runVector) {
5780
5828
  vectorCases += 1;
5781
5829
  }
5782
5830
  if (trace.runLexical) {
5783
5831
  lexicalCases += 1;
5784
5832
  }
5833
+ if (typeof trace.maxResultsPerSource === "number") {
5834
+ balancedCases += 1;
5835
+ if (trace.sourceBalanceStrategy === "round_robin") {
5836
+ roundRobinCases += 1;
5837
+ }
5838
+ }
5785
5839
  if (trace.transformedQuery !== trace.query) {
5786
5840
  transformedCases += 1;
5787
5841
  }
@@ -5799,9 +5853,12 @@ var summarizeRetrievalTraces = (traces) => {
5799
5853
  averageFinalCount: roundTraceAverage(finalCountSum, totalCases),
5800
5854
  averageLexicalCount: roundTraceAverage(lexicalCountSum, totalCases),
5801
5855
  averageLexicalTopK: roundTraceAverage(lexicalTopKSum, totalCases),
5856
+ balancedCases,
5802
5857
  averageVectorCount: roundTraceAverage(vectorCountSum, totalCases),
5803
5858
  lexicalCases,
5804
5859
  modes: Array.from(modeSet),
5860
+ roundRobinCases,
5861
+ sourceBalanceStrategies: Array.from(sourceBalanceStrategySet),
5805
5862
  stageCounts: buildTraceStageCounts(traces),
5806
5863
  totalCases,
5807
5864
  transformedCases,
@@ -6137,7 +6194,7 @@ var buildEvaluationCaseTraceSnapshot = ({
6137
6194
  }) => {
6138
6195
  const stageCounts = currentTrace ? buildTraceStageCounts([currentTrace]) : {};
6139
6196
  const previousStageCounts = previousTrace?.stageCounts ?? {};
6140
- const traceChange = !previousTrace ? currentTrace ? "new" : "unchanged" : previousTrace.traceMode !== currentTrace?.mode || previousTrace.transformedQuery !== (currentTrace?.transformedQuery || undefined) || previousTrace.variantQueries.join("|") !== (currentTrace?.variantQueries ?? []).join("|") || previousTrace.finalCount !== (currentTrace?.resultCounts.final ?? 0) || previousTrace.vectorCount !== (currentTrace?.resultCounts.vector ?? 0) || previousTrace.lexicalCount !== (currentTrace?.resultCounts.lexical ?? 0) || previousTrace.candidateTopK !== (currentTrace?.candidateTopK ?? 0) || previousTrace.lexicalTopK !== (currentTrace?.lexicalTopK ?? 0) || !areStageCountsEqual(previousStageCounts, stageCounts) ? "changed" : "unchanged";
6197
+ const traceChange = !previousTrace ? currentTrace ? "new" : "unchanged" : previousTrace.traceMode !== currentTrace?.mode || previousTrace.sourceBalanceStrategy !== currentTrace?.sourceBalanceStrategy || previousTrace.transformedQuery !== (currentTrace?.transformedQuery || undefined) || previousTrace.variantQueries.join("|") !== (currentTrace?.variantQueries ?? []).join("|") || previousTrace.finalCount !== (currentTrace?.resultCounts.final ?? 0) || previousTrace.vectorCount !== (currentTrace?.resultCounts.vector ?? 0) || previousTrace.lexicalCount !== (currentTrace?.resultCounts.lexical ?? 0) || previousTrace.candidateTopK !== (currentTrace?.candidateTopK ?? 0) || previousTrace.lexicalTopK !== (currentTrace?.lexicalTopK ?? 0) || !areStageCountsEqual(previousStageCounts, stageCounts) ? "changed" : "unchanged";
6141
6198
  return {
6142
6199
  candidateTopK: currentTrace?.candidateTopK ?? 0,
6143
6200
  caseId: caseResult.caseId,
@@ -6149,6 +6206,7 @@ var buildEvaluationCaseTraceSnapshot = ({
6149
6206
  previousFinalCount: previousTrace?.finalCount,
6150
6207
  previousLexicalCount: previousTrace?.lexicalCount,
6151
6208
  previousLexicalTopK: previousTrace?.lexicalTopK,
6209
+ previousSourceBalanceStrategy: previousTrace?.sourceBalanceStrategy,
6152
6210
  previousStageCounts,
6153
6211
  previousTraceMode: previousTrace?.traceMode,
6154
6212
  previousTransformedQuery: previousTrace?.transformedQuery,
@@ -6157,6 +6215,7 @@ var buildEvaluationCaseTraceSnapshot = ({
6157
6215
  query: caseResult.query,
6158
6216
  stageCounts,
6159
6217
  status: caseResult.status,
6218
+ sourceBalanceStrategy: currentTrace?.sourceBalanceStrategy,
6160
6219
  traceChange,
6161
6220
  traceMode: currentTrace?.mode,
6162
6221
  transformedQuery: currentTrace?.transformedQuery || undefined,
@@ -6201,6 +6260,7 @@ var buildEvaluationCaseTraceSnapshots = ({
6201
6260
  },
6202
6261
  runLexical: currentSnapshot.lexicalCount > 0,
6203
6262
  runVector: currentSnapshot.vectorCount > 0,
6263
+ sourceBalanceStrategy: currentSnapshot.sourceBalanceStrategy ?? "cap",
6204
6264
  steps: [],
6205
6265
  topK: caseResult.topK,
6206
6266
  transformedQuery: currentSnapshot.transformedQuery ?? caseResult.query,
@@ -6231,6 +6291,7 @@ var formatRetrievalComparisonHeadline = (entry) => [
6231
6291
  `latency ${entry.response.summary.averageLatencyMs.toFixed(1)}ms`
6232
6292
  ].join(" \xB7 ");
6233
6293
  var formatTraceModes = (modes) => modes.length > 0 ? modes.join(" / ") : "n/a";
6294
+ var formatSourceBalanceStrategies = (strategies) => strategies.length > 0 ? strategies.join(" / ") : "n/a";
6234
6295
  var formatTraceStageSummary = (stageCounts) => {
6235
6296
  const topStages = Object.entries(stageCounts).sort((left, right) => right[1] - left[1]).slice(0, 3);
6236
6297
  return topStages.length > 0 ? topStages.map(([stage, count]) => `${stage} ${count}`).join(" \xB7 ") : "n/a";
@@ -6266,9 +6327,21 @@ var buildRAGComparisonTraceSummaryRows = (entry) => {
6266
6327
  }
6267
6328
  return [
6268
6329
  { label: "Modes", value: formatTraceModes(trace.modes) },
6330
+ {
6331
+ label: "Balance",
6332
+ value: formatSourceBalanceStrategies(trace.sourceBalanceStrategies)
6333
+ },
6269
6334
  { label: "Avg final", value: trace.averageFinalCount.toFixed(1) },
6270
6335
  { label: "Avg vector", value: trace.averageVectorCount.toFixed(1) },
6271
6336
  { label: "Avg lexical", value: trace.averageLexicalCount.toFixed(1) },
6337
+ {
6338
+ label: "Balanced",
6339
+ value: formatTraceRatio(trace.balancedCases, trace.totalCases)
6340
+ },
6341
+ {
6342
+ label: "Round robin",
6343
+ value: formatTraceRatio(trace.roundRobinCases, trace.totalCases)
6344
+ },
6272
6345
  {
6273
6346
  label: "Transforms",
6274
6347
  value: formatTraceRatio(trace.transformedCases, trace.totalCases)
@@ -6316,6 +6389,12 @@ var buildRAGComparisonTraceDiffRows = (entry, leader) => {
6316
6389
  value: `${formatTraceModes(trace.modes)} vs ${formatTraceModes(leaderTrace.modes)}`
6317
6390
  });
6318
6391
  }
6392
+ if (formatSourceBalanceStrategies(trace.sourceBalanceStrategies) !== formatSourceBalanceStrategies(leaderTrace.sourceBalanceStrategies)) {
6393
+ rows.push({
6394
+ label: "Balance vs leader",
6395
+ value: `${formatSourceBalanceStrategies(trace.sourceBalanceStrategies)} vs ${formatSourceBalanceStrategies(leaderTrace.sourceBalanceStrategies)}`
6396
+ });
6397
+ }
6319
6398
  rows.push({
6320
6399
  label: "Final delta",
6321
6400
  value: formatSignedDelta(trace.averageFinalCount - leaderTrace.averageFinalCount, 1)
@@ -6328,6 +6407,12 @@ var buildRAGComparisonTraceDiffRows = (entry, leader) => {
6328
6407
  }, {
6329
6408
  label: "Transform delta",
6330
6409
  value: formatTraceCountDelta(trace.transformedCases - leaderTrace.transformedCases)
6410
+ }, {
6411
+ label: "Balanced delta",
6412
+ value: formatTraceCountDelta(trace.balancedCases - leaderTrace.balancedCases)
6413
+ }, {
6414
+ label: "Round robin delta",
6415
+ value: formatTraceCountDelta(trace.roundRobinCases - leaderTrace.roundRobinCases)
6331
6416
  });
6332
6417
  if (stageDelta) {
6333
6418
  rows.push({ label: "Stage delta", value: stageDelta });
@@ -6491,7 +6576,7 @@ var buildRAGEvaluationHistoryRows = (history) => {
6491
6576
  if (history.latestRun.traceSummary) {
6492
6577
  rows.push({
6493
6578
  label: "Latest trace",
6494
- value: `${formatTraceModes(history.latestRun.traceSummary.modes)} \xB7 final ${history.latestRun.traceSummary.averageFinalCount.toFixed(1)} \xB7 vector ${history.latestRun.traceSummary.averageVectorCount.toFixed(1)} \xB7 lexical ${history.latestRun.traceSummary.averageLexicalCount.toFixed(1)}`
6579
+ value: `${formatTraceModes(history.latestRun.traceSummary.modes)} \xB7 balance ${formatSourceBalanceStrategies(history.latestRun.traceSummary.sourceBalanceStrategies)} \xB7 final ${history.latestRun.traceSummary.averageFinalCount.toFixed(1)} \xB7 vector ${history.latestRun.traceSummary.averageVectorCount.toFixed(1)} \xB7 lexical ${history.latestRun.traceSummary.averageLexicalCount.toFixed(1)}`
6495
6580
  });
6496
6581
  }
6497
6582
  if (history.previousRun) {
@@ -6527,6 +6612,9 @@ var buildRAGEvaluationHistoryRows = (history) => {
6527
6612
  rows.push({
6528
6613
  label: "Trace mode shift",
6529
6614
  value: history.diff.traceSummaryDelta.modesChanged ? "changed" : "stable"
6615
+ }, {
6616
+ label: "Trace balance shift",
6617
+ value: history.diff.traceSummaryDelta.sourceBalanceStrategiesChanged ? "changed" : "stable"
6530
6618
  }, {
6531
6619
  label: "Trace final delta",
6532
6620
  value: formatSignedDelta(history.diff.traceSummaryDelta.averageFinalCount, 1)
@@ -6536,6 +6624,12 @@ var buildRAGEvaluationHistoryRows = (history) => {
6536
6624
  }, {
6537
6625
  label: "Trace lexical delta",
6538
6626
  value: formatSignedDelta(history.diff.traceSummaryDelta.averageLexicalCount, 1)
6627
+ }, {
6628
+ label: "Trace balanced delta",
6629
+ value: formatTraceCountDelta(history.diff.traceSummaryDelta.balancedCases)
6630
+ }, {
6631
+ label: "Trace round robin delta",
6632
+ value: formatTraceCountDelta(history.diff.traceSummaryDelta.roundRobinCases)
6539
6633
  }, {
6540
6634
  label: "Trace transform delta",
6541
6635
  value: formatTraceCountDelta(history.diff.traceSummaryDelta.transformedCases)
@@ -6565,6 +6659,8 @@ var buildRAGEvaluationCaseTracePresentations = (history) => {
6565
6659
  const label = entry.label ?? entry.caseId;
6566
6660
  const currentMode = entry.traceMode ?? "no-trace";
6567
6661
  const previousMode = entry.previousTraceMode ?? "n/a";
6662
+ const currentBalance = entry.sourceBalanceStrategy ?? "cap";
6663
+ const previousBalance = entry.previousSourceBalanceStrategy ?? "n/a";
6568
6664
  const currentVariants = entry.variantQueries.length > 0 ? entry.variantQueries.join(", ") : "none";
6569
6665
  const previousVariants = entry.previousVariantQueries.length > 0 ? entry.previousVariantQueries.join(", ") : "none";
6570
6666
  const currentStages = Object.keys(entry.stageCounts).length > 0 ? Object.entries(entry.stageCounts).map(([stage, count]) => `${stage} ${count}`).join(", ") : "none";
@@ -6572,12 +6668,16 @@ var buildRAGEvaluationCaseTracePresentations = (history) => {
6572
6668
  return {
6573
6669
  caseId: entry.caseId,
6574
6670
  label,
6575
- summary: `${entry.traceChange} \xB7 ${previousMode}\u2192${currentMode} \xB7 final ${entry.previousFinalCount ?? 0}\u2192${entry.finalCount}`,
6671
+ summary: `${entry.traceChange} \xB7 ${previousMode}\u2192${currentMode} \xB7 ${previousBalance}\u2192${currentBalance} \xB7 final ${entry.previousFinalCount ?? 0}\u2192${entry.finalCount}`,
6576
6672
  traceChange: entry.traceChange,
6577
6673
  rows: [
6578
6674
  { label: "Query", value: entry.query },
6579
6675
  { label: "Trace change", value: entry.traceChange },
6580
6676
  { label: "Mode", value: `${previousMode}\u2192${currentMode}` },
6677
+ {
6678
+ label: "Balance",
6679
+ value: `${previousBalance}\u2192${currentBalance}`
6680
+ },
6581
6681
  {
6582
6682
  label: "Transformed query",
6583
6683
  value: `${entry.previousTransformedQuery?.trim() || "n/a"}\u2192${entry.transformedQuery?.trim() || "n/a"}`
@@ -6649,12 +6749,15 @@ var buildRAGEvaluationRunDiff = ({
6649
6749
  averageLexicalCount: (current.traceSummary?.averageLexicalCount ?? 0) - (previous?.traceSummary?.averageLexicalCount ?? 0),
6650
6750
  averageLexicalTopK: (current.traceSummary?.averageLexicalTopK ?? 0) - (previous?.traceSummary?.averageLexicalTopK ?? 0),
6651
6751
  averageVectorCount: (current.traceSummary?.averageVectorCount ?? 0) - (previous?.traceSummary?.averageVectorCount ?? 0),
6752
+ balancedCases: (current.traceSummary?.balancedCases ?? 0) - (previous?.traceSummary?.balancedCases ?? 0),
6652
6753
  lexicalCases: (current.traceSummary?.lexicalCases ?? 0) - (previous?.traceSummary?.lexicalCases ?? 0),
6653
6754
  modesChanged: (current.traceSummary?.modes ?? []).join("|") !== (previous?.traceSummary?.modes ?? []).join("|"),
6755
+ roundRobinCases: (current.traceSummary?.roundRobinCases ?? 0) - (previous?.traceSummary?.roundRobinCases ?? 0),
6654
6756
  stageCounts: diffTraceStageCounts({
6655
6757
  current: current.traceSummary?.stageCounts ?? {},
6656
6758
  previous: previous?.traceSummary?.stageCounts ?? {}
6657
6759
  }),
6760
+ sourceBalanceStrategiesChanged: (current.traceSummary?.sourceBalanceStrategies ?? []).join("|") !== (previous?.traceSummary?.sourceBalanceStrategies ?? []).join("|"),
6658
6761
  transformedCases: (current.traceSummary?.transformedCases ?? 0) - (previous?.traceSummary?.transformedCases ?? 0),
6659
6762
  variantCases: (current.traceSummary?.variantCases ?? 0) - (previous?.traceSummary?.variantCases ?? 0),
6660
6763
  vectorCases: (current.traceSummary?.vectorCases ?? 0) - (previous?.traceSummary?.vectorCases ?? 0)
@@ -12541,5 +12644,5 @@ export {
12541
12644
  aiChat
12542
12645
  };
12543
12646
 
12544
- //# debugId=FD250EE2F99EB57964756E2164756E21
12647
+ //# debugId=952E4DA5A5D3C13F64756E2164756E21
12545
12648
  //# sourceMappingURL=index.js.map