@claritylabs/cl-sdk 1.3.6 → 1.3.7

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/index.mjs CHANGED
@@ -6883,6 +6883,20 @@ function sourcePrecedence(sectionRef) {
6883
6883
  if (normalized.includes("coverage form") || normalized.includes("policy form")) return 1;
6884
6884
  return 0;
6885
6885
  }
6886
+ function looksDeductibleOnlyCoverageRow(coverage) {
6887
+ const name = typeof coverage.name === "string" ? coverage.name : "";
6888
+ const originalContent = typeof coverage.originalContent === "string" ? coverage.originalContent : "";
6889
+ const evidenceText = originalContent || name;
6890
+ const normalizedEvidence = evidenceText.toLowerCase();
6891
+ const normalizedName = name.toLowerCase();
6892
+ if (!/\b(deductible|retention|self[-\s]?insured retention|sir)\b/.test(`${normalizedName} ${normalizedEvidence}`)) return false;
6893
+ if (coverage.deductible || coverage.deductibleAmount !== void 0) return false;
6894
+ if (!coverage.limit && coverage.limitAmount === void 0) return false;
6895
+ if (originalContent && /\b(deductible|retention|self[-\s]?insured retention|sir)\b/.test(normalizedEvidence) && !/\b(?:sub[-\s]?limit|limit|coverage)\b/.test(normalizedEvidence)) {
6896
+ return true;
6897
+ }
6898
+ return /[-–—]\s*(?:enhanced\s+|standard\s+)?(?:deductible|retention|sir)\b/.test(normalizedName);
6899
+ }
6886
6900
  function buildExtractionReviewReport(params) {
6887
6901
  const { memory, reviewRounds } = params;
6888
6902
  const deterministicIssues = [];
@@ -6988,6 +7002,17 @@ function buildExtractionReviewReport(params) {
6988
7002
  itemName: coverage.name
6989
7003
  });
6990
7004
  }
7005
+ if (looksDeductibleOnlyCoverageRow(coverage)) {
7006
+ deterministicIssues.push({
7007
+ code: "deductible_row_as_coverage_limit",
7008
+ severity: "blocking",
7009
+ message: `Coverage "${String(coverage.name ?? "unknown")}" appears to store a deductible or retention value as a coverage limit.`,
7010
+ extractorName: "coverage_limits",
7011
+ formNumber,
7012
+ pageNumber: typeof coverage.pageNumber === "number" ? coverage.pageNumber : void 0,
7013
+ itemName: typeof coverage.name === "string" ? coverage.name : void 0
7014
+ });
7015
+ }
6991
7016
  if (typeof coverage.pageNumber !== "number") {
6992
7017
  deterministicIssues.push({
6993
7018
  code: "coverage_missing_page_number",