@absolutejs/rag 0.24.0 → 0.24.2

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.
@@ -34,9 +34,18 @@ export type ResearchReviewCheckpoint = {
34
34
  pass: number;
35
35
  stage?: "extract" | "review";
36
36
  nextField: number;
37
+ /** Reduced after a settled failed batch; never increases the configured maximum. */
38
+ nextBatchSize?: number;
37
39
  pending: boolean;
38
40
  finished?: boolean;
39
41
  draft: unknown;
42
+ searched?: string[];
43
+ read?: string[];
44
+ links?: Array<{
45
+ url: string;
46
+ label: string;
47
+ discoveredOn: string;
48
+ }>;
40
49
  result: ResearchResult;
41
50
  };
42
51
  export type ResearchResult<T = unknown> = {
@@ -123563,8 +123563,10 @@ var createResearch = (config) => {
123563
123563
  reviewBatchSize
123564
123564
  });
123565
123565
  const resumed = input.resumeReview;
123566
- if (resumed && (resumed.version !== 1 || resumed.fingerprint !== fingerprint || resumed.pending || !Number.isSafeInteger(resumed.nextField) || resumed.nextField < 0 || !Number.isSafeInteger(resumed.pass) || resumed.pass < 0 || resumed.pass > evidenceRepairs))
123566
+ if (resumed && (resumed.version !== 1 || resumed.fingerprint !== fingerprint || resumed.pending || resumed.nextBatchSize !== undefined && (!Number.isSafeInteger(resumed.nextBatchSize) || resumed.nextBatchSize < 1 || resumed.nextBatchSize > reviewBatchSize) || !Number.isSafeInteger(resumed.nextField) || resumed.nextField < 0 || !Number.isSafeInteger(resumed.pass) || resumed.pass < 0 || resumed.pass > evidenceRepairs))
123567
123567
  throw new Error("Review checkpoint requires reconciliation or does not match this task");
123568
+ const legacyFailedReview = resumed && !resumed.pending && resumed.result.operations.at(-1)?.kind === "review" && resumed.result.operations.at(-1)?.status === "unknown";
123569
+ let nextBatchSize = resumed?.nextBatchSize ?? (legacyFailedReview ? Math.max(1, Math.floor(reviewBatchSize / 2)) : reviewBatchSize);
123568
123570
  const result = resumed ? structuredClone(resumed.result) : {
123569
123571
  id: crypto.randomUUID(),
123570
123572
  status: "unavailable",
@@ -123599,10 +123601,14 @@ var createResearch = (config) => {
123599
123601
  pass,
123600
123602
  stage,
123601
123603
  nextField,
123604
+ nextBatchSize,
123602
123605
  pending,
123603
123606
  finished,
123604
123607
  draft: structuredClone(draft),
123605
- result: structuredClone(snapshot)
123608
+ result: structuredClone(snapshot),
123609
+ searched: [...queries],
123610
+ read: [...urls],
123611
+ links: [...discoveredLinks.values()]
123606
123612
  };
123607
123613
  try {
123608
123614
  await input.onReviewCheckpoint?.(checkpoint);
@@ -123715,8 +123721,12 @@ Correct the previous schema-invalid response using the validation diagnostics. T
123715
123721
  document2.url,
123716
123722
  document2.text
123717
123723
  ]));
123718
- for (const prior of result.searches)
123719
- queries.add(prior.query);
123724
+ for (const prior of resumed?.searched ?? result.searches.map((search) => search.query))
123725
+ queries.add(prior);
123726
+ for (const prior of resumed?.read ?? [])
123727
+ urls.add(prior);
123728
+ for (const link of resumed?.links ?? [])
123729
+ discoveredLinks.set(link.url, link);
123720
123730
  for (const prior of result.sources)
123721
123731
  if (prior.contentFetchedAt)
123722
123732
  urls.add(prior.url);
@@ -123967,17 +123977,18 @@ Correct the previous schema-invalid response using the validation diagnostics. T
123967
123977
  if (!leaves.length) {
123968
123978
  result.data = data;
123969
123979
  result.status = result.limitations.length ? "partial" : "empty";
123980
+ await persistReview(pass, 0, false, data, true);
123970
123981
  return result;
123971
123982
  }
123972
123983
  const reviewSources = researchPassages(result.sources);
123973
123984
  const reviewStart = continuing ? resumed.nextField : 0;
123974
- for (let offset = reviewStart;offset < leaves.length; offset += Math.min(reviewBatchSize, limits.fields - (offset - reviewStart))) {
123985
+ for (let offset = reviewStart;offset < leaves.length; offset += Math.min(nextBatchSize, limits.fields - (offset - reviewStart))) {
123975
123986
  if (offset - reviewStart >= limits.fields) {
123976
123987
  result.status = "partial";
123977
123988
  result.limitations.push("Review field allowance reached; remaining fields are saved for explicit continuation");
123978
123989
  return result;
123979
123990
  }
123980
- const batch = leaves.slice(offset, offset + Math.min(reviewBatchSize, limits.fields - (offset - reviewStart)));
123991
+ const batch = leaves.slice(offset, offset + Math.min(nextBatchSize, limits.fields - (offset - reviewStart)));
123981
123992
  await persistReview(pass, offset, true, data);
123982
123993
  let reviewed;
123983
123994
  try {
@@ -123994,6 +124005,8 @@ Correct the previous schema-invalid response using the validation diagnostics. T
123994
124005
  });
123995
124006
  } catch (error) {
123996
124007
  const known = error instanceof Error && error.message === "Research budget denied" || !admit && await config.isReviewFailureSettled?.(error) === true;
124008
+ if (known && !(error instanceof Error && error.message === "Research budget denied"))
124009
+ nextBatchSize = Math.max(1, Math.floor(batch.length / 2));
123997
124010
  await persistReview(pass, offset, !known, data);
123998
124011
  throw error;
123999
124012
  }
@@ -124190,5 +124203,5 @@ export {
124190
124203
  webIndexPostgresSchemaSql
124191
124204
  };
124192
124205
 
124193
- //# debugId=6A98E00B3B9B720D64756E2164756E21
124206
+ //# debugId=A5E570BDB36F03C864756E2164756E21
124194
124207
  //# sourceMappingURL=index.js.map