@pseolint/core 0.1.0 → 0.2.1

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.
Files changed (116) hide show
  1. package/dist/ai/adapters/index.d.ts +53 -0
  2. package/dist/ai/adapters/index.d.ts.map +1 -0
  3. package/dist/ai/adapters/index.js +158 -0
  4. package/dist/ai/adapters/index.js.map +1 -0
  5. package/dist/ai/cache.d.ts +11 -0
  6. package/dist/ai/cache.d.ts.map +1 -0
  7. package/dist/ai/cache.js +40 -0
  8. package/dist/ai/cache.js.map +1 -0
  9. package/dist/ai/cost.d.ts +3 -0
  10. package/dist/ai/cost.d.ts.map +1 -0
  11. package/dist/ai/cost.js +22 -0
  12. package/dist/ai/cost.js.map +1 -0
  13. package/dist/ai/feedback-prompt.d.ts +22 -0
  14. package/dist/ai/feedback-prompt.d.ts.map +1 -0
  15. package/dist/ai/feedback-prompt.js +39 -0
  16. package/dist/ai/feedback-prompt.js.map +1 -0
  17. package/dist/ai/prompt.d.ts +10 -0
  18. package/dist/ai/prompt.d.ts.map +1 -0
  19. package/dist/ai/prompt.js +51 -0
  20. package/dist/ai/prompt.js.map +1 -0
  21. package/dist/ai/triage.d.ts +28 -0
  22. package/dist/ai/triage.d.ts.map +1 -0
  23. package/dist/ai/triage.js +136 -0
  24. package/dist/ai/triage.js.map +1 -0
  25. package/dist/ai/types.d.ts +27 -0
  26. package/dist/ai/types.d.ts.map +1 -0
  27. package/dist/ai/types.js +2 -0
  28. package/dist/ai/types.js.map +1 -0
  29. package/dist/auditor.d.ts.map +1 -1
  30. package/dist/auditor.js +399 -83
  31. package/dist/auditor.js.map +1 -1
  32. package/dist/cache.d.ts +44 -0
  33. package/dist/cache.d.ts.map +1 -0
  34. package/dist/cache.js +182 -0
  35. package/dist/cache.js.map +1 -0
  36. package/dist/data-source-loader.d.ts +14 -0
  37. package/dist/data-source-loader.d.ts.map +1 -0
  38. package/dist/data-source-loader.js +76 -0
  39. package/dist/data-source-loader.js.map +1 -0
  40. package/dist/enrich-findings.d.ts.map +1 -1
  41. package/dist/enrich-findings.js +4 -0
  42. package/dist/enrich-findings.js.map +1 -1
  43. package/dist/formatters/console.d.ts.map +1 -1
  44. package/dist/formatters/console.js +30 -0
  45. package/dist/formatters/console.js.map +1 -1
  46. package/dist/formatters/html.d.ts.map +1 -1
  47. package/dist/formatters/html.js +92 -70
  48. package/dist/formatters/html.js.map +1 -1
  49. package/dist/formatters/markdown.d.ts.map +1 -1
  50. package/dist/formatters/markdown.js +29 -0
  51. package/dist/formatters/markdown.js.map +1 -1
  52. package/dist/index.d.ts +20 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +11 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/rule-references.d.ts.map +1 -1
  57. package/dist/rule-references.js +3 -0
  58. package/dist/rule-references.js.map +1 -1
  59. package/dist/rules/data/data-binding.d.ts +4 -0
  60. package/dist/rules/data/data-binding.d.ts.map +1 -0
  61. package/dist/rules/data/data-binding.js +107 -0
  62. package/dist/rules/data/data-binding.js.map +1 -0
  63. package/dist/rules/tech/robots-sitemap-presence.d.ts +2 -1
  64. package/dist/rules/tech/robots-sitemap-presence.d.ts.map +1 -1
  65. package/dist/rules/tech/robots-sitemap-presence.js +101 -0
  66. package/dist/rules/tech/robots-sitemap-presence.js.map +1 -1
  67. package/dist/rules/tech/sitemap-completeness.d.ts.map +1 -1
  68. package/dist/rules/tech/sitemap-completeness.js +15 -0
  69. package/dist/rules/tech/sitemap-completeness.js.map +1 -1
  70. package/dist/state.d.ts +35 -0
  71. package/dist/state.d.ts.map +1 -0
  72. package/dist/state.js +64 -0
  73. package/dist/state.js.map +1 -0
  74. package/dist/stratified-sample.d.ts +3 -0
  75. package/dist/stratified-sample.d.ts.map +1 -0
  76. package/dist/stratified-sample.js +88 -0
  77. package/dist/stratified-sample.js.map +1 -0
  78. package/dist/telemetry/aggregator.d.ts +47 -0
  79. package/dist/telemetry/aggregator.d.ts.map +1 -0
  80. package/dist/telemetry/aggregator.js +77 -0
  81. package/dist/telemetry/aggregator.js.map +1 -0
  82. package/dist/telemetry/index.d.ts +5 -0
  83. package/dist/telemetry/index.d.ts.map +1 -0
  84. package/dist/telemetry/index.js +5 -0
  85. package/dist/telemetry/index.js.map +1 -0
  86. package/dist/telemetry/reader.d.ts +12 -0
  87. package/dist/telemetry/reader.d.ts.map +1 -0
  88. package/dist/telemetry/reader.js +35 -0
  89. package/dist/telemetry/reader.js.map +1 -0
  90. package/dist/telemetry/types.d.ts +126 -0
  91. package/dist/telemetry/types.d.ts.map +1 -0
  92. package/dist/telemetry/types.js +75 -0
  93. package/dist/telemetry/types.js.map +1 -0
  94. package/dist/telemetry/writer.d.ts +12 -0
  95. package/dist/telemetry/writer.d.ts.map +1 -0
  96. package/dist/telemetry/writer.js +38 -0
  97. package/dist/telemetry/writer.js.map +1 -0
  98. package/dist/types.d.ts +96 -0
  99. package/dist/types.d.ts.map +1 -1
  100. package/package.json +26 -6
  101. package/dist/algorithms/entity-mask.test.d.ts +0 -2
  102. package/dist/algorithms/entity-mask.test.d.ts.map +0 -1
  103. package/dist/algorithms/entity-mask.test.js +0 -23
  104. package/dist/algorithms/entity-mask.test.js.map +0 -1
  105. package/dist/algorithms/simhash.test.d.ts +0 -2
  106. package/dist/algorithms/simhash.test.d.ts.map +0 -1
  107. package/dist/algorithms/simhash.test.js +0 -23
  108. package/dist/algorithms/simhash.test.js.map +0 -1
  109. package/dist/auditor.test.d.ts +0 -2
  110. package/dist/auditor.test.d.ts.map +0 -1
  111. package/dist/auditor.test.js +0 -134
  112. package/dist/auditor.test.js.map +0 -1
  113. package/dist/parser.test.d.ts +0 -2
  114. package/dist/parser.test.d.ts.map +0 -1
  115. package/dist/parser.test.js +0 -37
  116. package/dist/parser.test.js.map +0 -1
@@ -67,6 +67,30 @@ function shortenUrl(url) {
67
67
  return url;
68
68
  }
69
69
  }
70
+ function renderTriageSection(triage) {
71
+ if (!triage)
72
+ return "";
73
+ const lines = [];
74
+ const cacheLabel = triage.cacheHit ? "cached" : "cache miss";
75
+ lines.push(`\n\u2500\u2500\u2500 AI Triage (${triage.modelUsed}, ${cacheLabel}) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500`);
76
+ lines.push(`Top ${triage.rootCauses.length} root causes:`);
77
+ const sorted = triage.rootCauses.slice().sort((a, b) => a.fixOrder - b.fixOrder);
78
+ for (const cause of sorted) {
79
+ lines.push(` ${cause.fixOrder}. ${cause.label} [${cause.severity}, ${cause.findingsCount} findings]`);
80
+ for (const sentence of cause.rationale.split(/(?<=\.)\s+/)) {
81
+ lines.push(` ${sentence}`);
82
+ }
83
+ }
84
+ if (triage.narrative) {
85
+ lines.push("");
86
+ lines.push(`Narrative: ${triage.narrative}`);
87
+ }
88
+ const cost = triage.estimatedCostUsd !== undefined ? ` \u2022 est $${triage.estimatedCostUsd.toFixed(2)}` : "";
89
+ lines.push("");
90
+ lines.push(`${triage.tokenUsage.input.toLocaleString("en-US")} input / ${triage.tokenUsage.output.toLocaleString("en-US")} output tokens${cost} \u2022 ${cacheLabel}`);
91
+ lines.push("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
92
+ return lines.join("\n");
93
+ }
70
94
  export function formatConsole(summary, options) {
71
95
  const strip = options?.noColor ?? false;
72
96
  const lines = [];
@@ -99,6 +123,12 @@ export function formatConsole(summary, options) {
99
123
  }
100
124
  lines.push("");
101
125
  }
126
+ // AI Triage section (between summary and findings)
127
+ const triageSection = renderTriageSection(summary.triage);
128
+ if (triageSection) {
129
+ lines.push(triageSection);
130
+ lines.push("");
131
+ }
102
132
  const ruleAgg = new Map();
103
133
  for (const f of summary.findings) {
104
134
  const existing = ruleAgg.get(f.ruleId);
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/formatters/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/formatters/console.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,aAAa,CAAC;AA6CjF,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA+HxD"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,aAAa,CAAC;AAmEjF,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAiIxD"}
@@ -43,6 +43,26 @@ function shortenUrl(url) {
43
43
  return url;
44
44
  }
45
45
  }
46
+ function renderTriageHtml(triage) {
47
+ const sorted = triage.rootCauses.slice().sort((a, b) => a.fixOrder - b.fixOrder);
48
+ const cost = triage.estimatedCostUsd !== undefined ? `, est $${triage.estimatedCostUsd.toFixed(2)}` : "";
49
+ const cacheLabel = triage.cacheHit ? "cached" : "cache miss";
50
+ const causes = sorted.map((c) => `
51
+ <li>
52
+ <h3>${c.fixOrder}. ${escapeHtml(c.label)}</h3>
53
+ <p class="meta">${escapeHtml(c.severity)} &middot; ${c.findingsCount} findings &middot; ${c.affectedRuleIds.map(escapeHtml).join(", ")}</p>
54
+ <p>${escapeHtml(c.rationale)}</p>
55
+ </li>`).join("\n");
56
+ return `
57
+ <section class="ai-triage">
58
+ <header>
59
+ <h2>AI Triage</h2>
60
+ <p class="meta">${escapeHtml(triage.modelUsed)} (${cacheLabel}) &mdash; ${triage.tokenUsage.input.toLocaleString()} in / ${triage.tokenUsage.output.toLocaleString()} out${cost}</p>
61
+ </header>
62
+ ${triage.narrative ? `<p class="narrative">${escapeHtml(triage.narrative)}</p>` : ""}
63
+ <ol>${causes}</ol>
64
+ </section>`;
65
+ }
46
66
  export function formatHtml(summary) {
47
67
  const grouped = new Map();
48
68
  for (const sev of SEVERITY_ORDER) {
@@ -55,12 +75,12 @@ export function formatHtml(summary) {
55
75
  .map(([name, value]) => {
56
76
  const label = name.charAt(0).toUpperCase() + name.slice(1);
57
77
  const pct = value;
58
- return `<tr>
59
- <td>${escapeHtml(label)}</td>
60
- <td>
61
- <div class="bar-bg"><div class="bar-fill" style="width:${pct}%;background:${scoreColor(pct)}"></div></div>
62
- </td>
63
- <td>${pct}</td>
78
+ return `<tr>
79
+ <td>${escapeHtml(label)}</td>
80
+ <td>
81
+ <div class="bar-bg"><div class="bar-fill" style="width:${pct}%;background:${scoreColor(pct)}"></div></div>
82
+ </td>
83
+ <td>${pct}</td>
64
84
  </tr>`;
65
85
  })
66
86
  .join("\n");
@@ -84,15 +104,15 @@ export function formatHtml(summary) {
84
104
  const membersHtml = ctx.members
85
105
  .map(m => `<li>${escapeHtml(shortenUrl(m))}</li>`)
86
106
  .join("\n");
87
- li += `
88
- <details>
89
- <summary>${ctx.clusterSize} pages in cluster (${(minSim * 100).toFixed(0)}&ndash;${(maxSim * 100).toFixed(0)}% similar)</summary>
90
- <div class="cluster-details">
91
- <strong>Worst pairs:</strong>
92
- <ul>${worstPairsHtml}</ul>
93
- <strong>All members:</strong>
94
- <ul class="member-list">${membersHtml}</ul>
95
- </div>
107
+ li += `
108
+ <details>
109
+ <summary>${ctx.clusterSize} pages in cluster (${(minSim * 100).toFixed(0)}&ndash;${(maxSim * 100).toFixed(0)}% similar)</summary>
110
+ <div class="cluster-details">
111
+ <strong>Worst pairs:</strong>
112
+ <ul>${worstPairsHtml}</ul>
113
+ <strong>All members:</strong>
114
+ <ul class="member-list">${membersHtml}</ul>
115
+ </div>
96
116
  </details>`;
97
117
  }
98
118
  if (item.fix) {
@@ -105,66 +125,68 @@ export function formatHtml(summary) {
105
125
  return li;
106
126
  })
107
127
  .join("\n");
108
- return `<h3 style="color:${severityColor(sev)}">${sev.charAt(0).toUpperCase() + sev.slice(1)} (${items.length})</h3>
128
+ return `<h3 style="color:${severityColor(sev)}">${sev.charAt(0).toUpperCase() + sev.slice(1)} (${items.length})</h3>
109
129
  <ul>${itemsHtml}</ul>`;
110
130
  }).join("\n");
111
- return `<!DOCTYPE html>
112
- <html lang="en">
113
- <head>
114
- <meta charset="utf-8">
115
- <meta name="viewport" content="width=device-width,initial-scale=1">
116
- <title>pSEOlint Audit Report</title>
117
- <style>
118
- *{margin:0;padding:0;box-sizing:border-box}
119
- body{font-family:system-ui,-apple-system,sans-serif;max-width:800px;margin:0 auto;padding:2rem;color:#1e293b;background:#f8fafc}
120
- h1{margin-bottom:.5rem}
121
- h2{margin-top:1.5rem;margin-bottom:.5rem;border-bottom:1px solid #e2e8f0;padding-bottom:.25rem}
122
- h3{margin-top:1rem;margin-bottom:.25rem}
123
- table{width:100%;border-collapse:collapse;margin:.5rem 0}
124
- th,td{text-align:left;padding:.35rem .5rem;border-bottom:1px solid #e2e8f0}
125
- th{font-weight:600}
126
- td:last-child{text-align:right;width:3rem}
127
- .score{font-size:2rem;font-weight:700}
128
- .meta{color:#64748b;margin-bottom:1rem}
129
- .bar-bg{background:#e2e8f0;border-radius:4px;height:14px;width:100%}
130
- .bar-fill{height:100%;border-radius:4px;transition:width .3s}
131
- ul{list-style:disc;padding-left:1.5rem;margin-bottom:.5rem}
132
- li{margin:.2rem 0}
133
- .fix{color:#64748b;font-size:.9em;margin-top:.2rem}
134
- .ref{color:#2563eb;font-size:.85em}
135
- .effort-pill{display:inline-block;padding:.1rem .4rem;border-radius:9999px;color:white;font-size:.75em;font-weight:600;vertical-align:middle}
136
- .template-banner{background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;padding:.5rem 1rem;margin:.5rem 0;color:#92400e;font-size:.9em}
137
- details{margin:.25rem 0}
138
- summary{cursor:pointer;color:#2563eb;font-size:.9em}
139
- .cluster-details{padding:.5rem;background:#f1f5f9;border-radius:4px;margin:.25rem 0;font-size:.85em}
140
- .cluster-details ul{margin:.25rem 0}
141
- .member-list{max-height:200px;overflow-y:auto}
142
- </style>
143
- </head>
144
- <body>
145
- <h1>pSEOlint Audit Report</h1>
146
- <p class="meta">Pages analysed: ${summary.pageCount}</p>
147
- <p class="score" style="color:${scoreColor(summary.score)}">SpamBrain Risk Score: ${summary.score}/100</p>
148
- ${summary.templateDetected ? `<p class="template-banner">Template-generated content detected. Fix suggestions are tailored for template authors.</p>` : ""}
149
- <h2>Category Scores</h2>
150
- <table>
151
- <thead><tr><th>Category</th><th>Bar</th><th>Score</th></tr></thead>
152
- <tbody>${categoryRows}</tbody>
153
- </table>
154
-
155
- ${summary.groupScores && summary.groupPageCounts ? `
156
- <h2>Group Scores</h2>
157
- <table>
158
- <thead><tr><th>Group</th><th>Score</th><th>Pages</th></tr></thead>
131
+ return `<!DOCTYPE html>
132
+ <html lang="en">
133
+ <head>
134
+ <meta charset="utf-8">
135
+ <meta name="viewport" content="width=device-width,initial-scale=1">
136
+ <title>pSEOlint Audit Report</title>
137
+ <style>
138
+ *{margin:0;padding:0;box-sizing:border-box}
139
+ body{font-family:system-ui,-apple-system,sans-serif;max-width:800px;margin:0 auto;padding:2rem;color:#1e293b;background:#f8fafc}
140
+ h1{margin-bottom:.5rem}
141
+ h2{margin-top:1.5rem;margin-bottom:.5rem;border-bottom:1px solid #e2e8f0;padding-bottom:.25rem}
142
+ h3{margin-top:1rem;margin-bottom:.25rem}
143
+ table{width:100%;border-collapse:collapse;margin:.5rem 0}
144
+ th,td{text-align:left;padding:.35rem .5rem;border-bottom:1px solid #e2e8f0}
145
+ th{font-weight:600}
146
+ td:last-child{text-align:right;width:3rem}
147
+ .score{font-size:2rem;font-weight:700}
148
+ .meta{color:#64748b;margin-bottom:1rem}
149
+ .bar-bg{background:#e2e8f0;border-radius:4px;height:14px;width:100%}
150
+ .bar-fill{height:100%;border-radius:4px;transition:width .3s}
151
+ ul{list-style:disc;padding-left:1.5rem;margin-bottom:.5rem}
152
+ li{margin:.2rem 0}
153
+ .fix{color:#64748b;font-size:.9em;margin-top:.2rem}
154
+ .ref{color:#2563eb;font-size:.85em}
155
+ .effort-pill{display:inline-block;padding:.1rem .4rem;border-radius:9999px;color:white;font-size:.75em;font-weight:600;vertical-align:middle}
156
+ .template-banner{background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;padding:.5rem 1rem;margin:.5rem 0;color:#92400e;font-size:.9em}
157
+ details{margin:.25rem 0}
158
+ summary{cursor:pointer;color:#2563eb;font-size:.9em}
159
+ .cluster-details{padding:.5rem;background:#f1f5f9;border-radius:4px;margin:.25rem 0;font-size:.85em}
160
+ .cluster-details ul{margin:.25rem 0}
161
+ .member-list{max-height:200px;overflow-y:auto}
162
+ </style>
163
+ </head>
164
+ <body>
165
+ <h1>pSEOlint Audit Report</h1>
166
+ <p class="meta">Pages analysed: ${summary.pageCount}</p>
167
+ <p class="score" style="color:${scoreColor(summary.score)}">SpamBrain Risk Score: ${summary.score}/100</p>
168
+ ${summary.templateDetected ? `<p class="template-banner">Template-generated content detected. Fix suggestions are tailored for template authors.</p>` : ""}
169
+ <h2>Category Scores</h2>
170
+ <table>
171
+ <thead><tr><th>Category</th><th>Bar</th><th>Score</th></tr></thead>
172
+ <tbody>${categoryRows}</tbody>
173
+ </table>
174
+
175
+ ${summary.groupScores && summary.groupPageCounts ? `
176
+ <h2>Group Scores</h2>
177
+ <table>
178
+ <thead><tr><th>Group</th><th>Score</th><th>Pages</th></tr></thead>
159
179
  <tbody>${Object.entries(summary.groupScores).map(([name, value]) => {
160
180
  const count = summary.groupPageCounts[name] ?? 0;
161
181
  return `<tr><td>${escapeHtml(name)}</td><td style="text-align:right">${value}</td><td style="text-align:right">${count}</td></tr>`;
162
- }).join("\n")}</tbody>
163
- </table>` : ""}
164
-
165
- <h2>Findings</h2>
166
- ${findingsSections}
167
- </body>
182
+ }).join("\n")}</tbody>
183
+ </table>` : ""}
184
+
185
+ ${summary.triage ? renderTriageHtml(summary.triage) : ""}
186
+
187
+ <h2>Findings</h2>
188
+ ${findingsSections}
189
+ </body>
168
190
  </html>`;
169
191
  }
170
192
  //# sourceMappingURL=html.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAe,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAE5E,SAAS,aAAa,CAAC,QAAkB;IACvC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC/B,KAAK,UAAU,CAAC,CAAC,OAAO,SAAS,CAAC;QAClC,KAAK,YAAY,CAAC,CAAC,OAAO,SAAS,CAAC;QACpC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,KAAe,CAAC;QAC5B,OAAO;cACC,UAAU,CAAC,KAAK,CAAC;;mEAEoC,GAAG,gBAAgB,UAAU,CAAC,GAAG,CAAC;;cAEvF,GAAG;YACL,CAAC;IACT,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK;aACpB,GAAG,CACF,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,EAAE,GAAG,eAAe,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,EAAE,IAAI,gDAAgD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACtH,CAAC;YACD,EAAE,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;gBACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC;gBAC7C,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU;qBAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;qBACvI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO;qBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;qBACjD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,EAAE,IAAI;;aAEL,GAAG,CAAC,WAAW,sBAAsB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;;;UAGpG,cAAc;;8BAEM,WAAW;;WAE9B,CAAC;YACF,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,EAAE,IAAI,yBAAyB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,EAAE,IAAI,aAAa,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC;YACjF,CAAC;YACD,EAAE,IAAI,OAAO,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC,CACF;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,oBAAoB,aAAa,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM;UACvG,SAAS,OAAO,CAAC;IACzB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAmCyB,OAAO,CAAC,SAAS;gCACnB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,KAAK;EAC/F,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,EAAE;;;;WAI/I,YAAY;;;EAGrB,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;;;;WAIxC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,eAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,WAAW,UAAU,CAAC,IAAI,CAAC,qCAAqC,KAAK,qCAAqC,KAAK,YAAY,CAAC;IACrI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACN,CAAC,CAAC,CAAC,EAAE;;;EAGZ,gBAAgB;;QAEV,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,aAAa,CAAC;AA0BjF,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAwE5D"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,aAAa,CAAC;AAsDjF,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA6E5D"}
@@ -24,6 +24,31 @@ function shortenUrl(url) {
24
24
  return url;
25
25
  }
26
26
  }
27
+ function renderTriageMarkdown(triage) {
28
+ const lines = ["", "## AI Triage", ""];
29
+ const cost = triage.estimatedCostUsd !== undefined ? `, est $${triage.estimatedCostUsd.toFixed(2)}` : "";
30
+ const cacheLabel = triage.cacheHit ? "cached" : "cache miss";
31
+ lines.push(`> _Model: ${triage.modelUsed} (${cacheLabel}). ${triage.tokenUsage.input.toLocaleString()} in / ${triage.tokenUsage.output.toLocaleString()} out${cost}._`);
32
+ if (triage.narrative) {
33
+ lines.push("");
34
+ lines.push(triage.narrative);
35
+ }
36
+ if (triage.rootCauses.length > 0) {
37
+ lines.push("");
38
+ lines.push("| # | Root cause | Severity | Findings | Affected rules |");
39
+ lines.push("|---|---|---|---|---|");
40
+ const sorted = triage.rootCauses.slice().sort((a, b) => a.fixOrder - b.fixOrder);
41
+ for (const c of sorted) {
42
+ lines.push(`| ${c.fixOrder} | ${c.label} | ${c.severity} | ${c.findingsCount} | ${c.affectedRuleIds.join(", ")} |`);
43
+ }
44
+ lines.push("");
45
+ for (const c of sorted) {
46
+ lines.push(`**${c.fixOrder}. ${c.label}.** ${c.rationale}`);
47
+ lines.push("");
48
+ }
49
+ }
50
+ return lines.join("\n");
51
+ }
27
52
  export function formatMarkdown(summary) {
28
53
  const lines = [];
29
54
  lines.push(`# pSEOlint Audit Report`);
@@ -57,6 +82,10 @@ export function formatMarkdown(summary) {
57
82
  }
58
83
  lines.push("");
59
84
  }
85
+ // AI Triage (if present)
86
+ if (summary.triage) {
87
+ lines.push(renderTriageMarkdown(summary.triage));
88
+ }
60
89
  // Findings
61
90
  lines.push(`## Findings`);
62
91
  lines.push("");
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAe,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAE5E,SAAS,aAAa,CAAC,QAAkB;IACvC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAe;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,OAAO,MAAM,SAAS,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAqB;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IAC1G,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,wBAAwB;IACxB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,eAAe;IACf,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,WAAW;IACX,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,KAAK,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3E,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChH,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/formatters/markdown.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -42,4 +42,24 @@ export * from "./page-classifier.js";
42
42
  export * from "./formatters/index.js";
43
43
  export * from "./renderer.js";
44
44
  export * from "./enrich-findings.js";
45
+ export * from "./data-source-loader.js";
46
+ export * from "./rules/data/data-binding.js";
47
+ export { cachedFetch, cacheKeyFor } from "./cache.js";
48
+ export type { CacheConfig, CachedFetchOptions, CachedFetchResult, CacheEntry } from "./cache.js";
49
+ export type { CacheOptions, CacheStats, SamplingStrategy, StateOptions } from "./types.js";
50
+ export { stratifiedSample, inferUrlTemplate } from "./stratified-sample.js";
51
+ export { readState, writeState, computeContentHash, normalizeHtmlForHash, STATE_SCHEMA_VERSION } from "./state.js";
52
+ export type { RunState, UrlStateEntry, RenderMode } from "./state.js";
53
+ export type { AiOptions, } from "./types.js";
54
+ export type { TokenUsage, RootCause, TriageResult, } from "./ai/types.js";
55
+ export { triageFindings } from "./ai/triage.js";
56
+ export type { TriageOptions, TriageOutcome } from "./ai/triage.js";
57
+ export { createLanguageModel, detectProvider } from "./ai/adapters/index.js";
58
+ export type { ProviderId, ResolvedModel } from "./ai/adapters/index.js";
59
+ export { PROMPT_VERSION, assignFindingId } from "./ai/prompt.js";
60
+ export { estimateCostUsd } from "./ai/cost.js";
61
+ export * from "./telemetry/index.js";
62
+ export type { TelemetryOptions } from "./types.js";
63
+ export { promptTriageFeedback } from "./ai/feedback-prompt.js";
64
+ export type { FeedbackRating, PromptOptions } from "./ai/feedback-prompt.js";
45
65
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -42,4 +42,15 @@ export * from "./page-classifier.js";
42
42
  export * from "./formatters/index.js";
43
43
  export * from "./renderer.js";
44
44
  export * from "./enrich-findings.js";
45
+ export * from "./data-source-loader.js";
46
+ export * from "./rules/data/data-binding.js";
47
+ export { cachedFetch, cacheKeyFor } from "./cache.js";
48
+ export { stratifiedSample, inferUrlTemplate } from "./stratified-sample.js";
49
+ export { readState, writeState, computeContentHash, normalizeHtmlForHash, STATE_SCHEMA_VERSION } from "./state.js";
50
+ export { triageFindings } from "./ai/triage.js";
51
+ export { createLanguageModel, detectProvider } from "./ai/adapters/index.js";
52
+ export { PROMPT_VERSION, assignFindingId } from "./ai/prompt.js";
53
+ export { estimateCostUsd } from "./ai/cost.js";
54
+ export * from "./telemetry/index.js";
55
+ export { promptTriageFeedback } from "./ai/feedback-prompt.js";
45
56
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAYnH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rule-references.d.ts","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiClD,CAAC"}
1
+ {"version":3,"file":"rule-references.d.ts","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoClD,CAAC"}
@@ -17,6 +17,7 @@ export const RULE_REFERENCES = {
17
17
  "links/cluster-connectivity": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
18
18
  "links/hub-pages": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
19
19
  "links/link-depth": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
20
+ "tech/robots-compliance": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
20
21
  "tech/canonical-consistency": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
21
22
  "tech/canonical-noindex-conflict": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
22
23
  "tech/robots-noindex-conflict": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
@@ -31,5 +32,7 @@ export const RULE_REFERENCES = {
31
32
  "cannibal/title-overlap": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
32
33
  "cannibal/keyword-collision": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
33
34
  "cannibal/url-pattern": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
35
+ "data/missing-binding": "https://developers.google.com/search/docs/essentials/spam-policies#thin-content",
36
+ "data/identical-across-pages": "https://developers.google.com/search/docs/essentials/spam-policies#scraped-content",
34
37
  };
35
38
  //# sourceMappingURL=rule-references.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rule-references.js","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,qBAAqB,EAAE,oFAAoF;IAC3G,kBAAkB,EAAE,kFAAkF;IACtG,mBAAmB,EAAE,iFAAiF;IACtG,wBAAwB,EAAE,iFAAiF;IAC3G,yBAAyB,EAAE,kFAAkF;IAC7G,2BAA2B,EAAE,kGAAkG;IAC/H,sBAAsB,EAAE,kFAAkF;IAC1G,wBAAwB,EAAE,kFAAkF;IAC5G,sBAAsB,EAAE,iFAAiF;IACzG,yBAAyB,EAAE,gFAAgF;IAC3G,4BAA4B,EAAE,uEAAuE;IACrG,wBAAwB,EAAE,sFAAsF;IAChH,sBAAsB,EAAE,sFAAsF;IAC9G,oBAAoB,EAAE,6EAA6E;IACnG,iBAAiB,EAAE,6EAA6E;IAChG,4BAA4B,EAAE,6EAA6E;IAC3G,iBAAiB,EAAE,6EAA6E;IAChG,kBAAkB,EAAE,6EAA6E;IACjG,4BAA4B,EAAE,wFAAwF;IACtH,iCAAiC,EAAE,wFAAwF;IAC3H,8BAA8B,EAAE,4EAA4E;IAC5G,2BAA2B,EAAE,+EAA+E;IAC5G,qBAAqB,EAAE,2EAA2E;IAClG,eAAe,EAAE,6EAA6E;IAC9F,sBAAsB,EAAE,8DAA8D;IACtF,2BAA2B,EAAE,iGAAiG;IAC9H,sBAAsB,EAAE,4FAA4F;IACpH,wBAAwB,EAAE,4FAA4F;IACtH,oBAAoB,EAAE,4FAA4F;IAClH,wBAAwB,EAAE,wFAAwF;IAClH,4BAA4B,EAAE,wFAAwF;IACtH,sBAAsB,EAAE,wFAAwF;CACjH,CAAC"}
1
+ {"version":3,"file":"rule-references.js","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,qBAAqB,EAAE,oFAAoF;IAC3G,kBAAkB,EAAE,kFAAkF;IACtG,mBAAmB,EAAE,iFAAiF;IACtG,wBAAwB,EAAE,iFAAiF;IAC3G,yBAAyB,EAAE,kFAAkF;IAC7G,2BAA2B,EAAE,kGAAkG;IAC/H,sBAAsB,EAAE,kFAAkF;IAC1G,wBAAwB,EAAE,kFAAkF;IAC5G,sBAAsB,EAAE,iFAAiF;IACzG,yBAAyB,EAAE,gFAAgF;IAC3G,4BAA4B,EAAE,uEAAuE;IACrG,wBAAwB,EAAE,sFAAsF;IAChH,sBAAsB,EAAE,sFAAsF;IAC9G,oBAAoB,EAAE,6EAA6E;IACnG,iBAAiB,EAAE,6EAA6E;IAChG,4BAA4B,EAAE,6EAA6E;IAC3G,iBAAiB,EAAE,6EAA6E;IAChG,kBAAkB,EAAE,6EAA6E;IACjG,wBAAwB,EAAE,0EAA0E;IACpG,4BAA4B,EAAE,wFAAwF;IACtH,iCAAiC,EAAE,wFAAwF;IAC3H,8BAA8B,EAAE,4EAA4E;IAC5G,2BAA2B,EAAE,+EAA+E;IAC5G,qBAAqB,EAAE,2EAA2E;IAClG,eAAe,EAAE,6EAA6E;IAC9F,sBAAsB,EAAE,8DAA8D;IACtF,2BAA2B,EAAE,iGAAiG;IAC9H,sBAAsB,EAAE,4FAA4F;IACpH,wBAAwB,EAAE,4FAA4F;IACtH,oBAAoB,EAAE,4FAA4F;IAClH,wBAAwB,EAAE,wFAAwF;IAClH,4BAA4B,EAAE,wFAAwF;IACtH,sBAAsB,EAAE,wFAAwF;IAChH,sBAAsB,EAAE,iFAAiF;IACzG,6BAA6B,EAAE,oFAAoF;CACpH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ParsedPage, RuleResult, PageDataRecord } from "../../types.js";
2
+ export declare function dataBindingRule(pages: ParsedPage[], records: PageDataRecord[]): RuleResult[];
3
+ export declare function dataIdenticalRule(pages: ParsedPage[], records: PageDataRecord[]): RuleResult[];
4
+ //# sourceMappingURL=data-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-binding.d.ts","sourceRoot":"","sources":["../../../src/rules/data/data-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG7E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,cAAc,EAAE,GACxB,UAAU,EAAE,CA2Ed;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,cAAc,EAAE,GACxB,UAAU,EAAE,CAwCd"}
@@ -0,0 +1,107 @@
1
+ import { matchPageToData } from "../../data-source-loader.js";
2
+ export function dataBindingRule(pages, records) {
3
+ const findings = [];
4
+ for (const page of pages) {
5
+ const record = matchPageToData(page.url, records);
6
+ if (!record)
7
+ continue;
8
+ const missingFields = [];
9
+ for (const [key, value] of Object.entries(record.data)) {
10
+ if (value === null || value === undefined)
11
+ continue;
12
+ if (typeof value === "string") {
13
+ // Check if the string value appears in page content (case-insensitive)
14
+ if (value.length > 3 && !page.contentText.toLowerCase().includes(value.toLowerCase())) {
15
+ // Also check HTML (value might be in meta tags, alt text, etc.)
16
+ if (!page.html.toLowerCase().includes(value.toLowerCase())) {
17
+ missingFields.push(key);
18
+ }
19
+ }
20
+ }
21
+ else if (Array.isArray(value)) {
22
+ // For arrays (e.g., faqs, regulations), check if at least some items appear
23
+ const items = value.filter((item) => item !== null && typeof item === "object");
24
+ if (items.length === 0)
25
+ continue;
26
+ // Extract text values from array items
27
+ const textValues = items.flatMap((item) => Object.values(item).filter((v) => typeof v === "string" && v.length > 10));
28
+ const found = textValues.filter((v) => page.contentText.toLowerCase().includes(v.toLowerCase()) ||
29
+ page.html.toLowerCase().includes(v.toLowerCase()));
30
+ if (textValues.length > 0 && found.length === 0) {
31
+ missingFields.push(key);
32
+ }
33
+ else if (textValues.length > 2 && found.length < textValues.length * 0.3) {
34
+ // Less than 30% of array items found — partial binding
35
+ missingFields.push(`${key} (${found.length}/${textValues.length} items rendered)`);
36
+ }
37
+ }
38
+ // Skip non-string non-array values (numbers, booleans) — too generic to match
39
+ }
40
+ if (missingFields.length > 0) {
41
+ findings.push({
42
+ ruleId: "data/missing-binding",
43
+ severity: missingFields.length > 3 ? "error" : "warning",
44
+ message: `${page.url} is missing ${missingFields.length} data field${missingFields.length !== 1 ? "s" : ""}: ${missingFields.join(", ")}.`,
45
+ pageUrl: page.url,
46
+ fix: `Verify these data fields are rendered on the page: ${missingFields.join(", ")}. Check for broken template bindings or conditional rendering that hides content.`,
47
+ });
48
+ }
49
+ }
50
+ // Also check: pages in data source that have no matching audited page
51
+ const matchedUrls = new Set();
52
+ for (const page of pages) {
53
+ const record = matchPageToData(page.url, records);
54
+ if (record)
55
+ matchedUrls.add(record.url);
56
+ }
57
+ const unmatchedRecords = records.filter((r) => !matchedUrls.has(r.url));
58
+ if (unmatchedRecords.length > 0) {
59
+ findings.push({
60
+ ruleId: "data/missing-binding",
61
+ severity: "warning",
62
+ message: `${unmatchedRecords.length} data source record${unmatchedRecords.length !== 1 ? "s have" : " has"} no matching page. These pages may not be published.`,
63
+ fix: `Check that these URLs exist: ${unmatchedRecords.slice(0, 5).map((r) => r.url).join(", ")}${unmatchedRecords.length > 5 ? ` and ${unmatchedRecords.length - 5} more` : ""}.`,
64
+ });
65
+ }
66
+ return findings;
67
+ }
68
+ export function dataIdenticalRule(pages, records) {
69
+ const findings = [];
70
+ // Collect field values across all matched pages
71
+ const fieldValues = new Map(); // field -> value -> urls[]
72
+ for (const page of pages) {
73
+ const record = matchPageToData(page.url, records);
74
+ if (!record)
75
+ continue;
76
+ for (const [key, value] of Object.entries(record.data)) {
77
+ if (typeof value !== "string" || value.length < 10)
78
+ continue;
79
+ if (!fieldValues.has(key))
80
+ fieldValues.set(key, new Map());
81
+ const valMap = fieldValues.get(key);
82
+ if (!valMap.has(value))
83
+ valMap.set(value, []);
84
+ valMap.get(value).push(page.url);
85
+ }
86
+ }
87
+ // Find fields where the same value appears on many pages
88
+ for (const [field, valMap] of fieldValues) {
89
+ for (const [value, urls] of valMap) {
90
+ if (urls.length > 3) {
91
+ // Skip common fields that are expected to be identical (e.g., site name)
92
+ // Only flag if it looks like page-specific content
93
+ const truncated = value.length > 60 ? value.slice(0, 60) + "..." : value;
94
+ findings.push({
95
+ ruleId: "data/identical-across-pages",
96
+ severity: "warning",
97
+ message: `Data field "${field}" has identical value across ${urls.length} pages: "${truncated}".`,
98
+ pageUrl: urls[0],
99
+ relatedUrls: urls.slice(1),
100
+ fix: `The "${field}" field should vary per page. If this is intentional (site-wide content), ignore this. Otherwise, check your data generation for missing per-page differentiation.`,
101
+ });
102
+ }
103
+ }
104
+ }
105
+ return findings;
106
+ }
107
+ //# sourceMappingURL=data-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-binding.js","sourceRoot":"","sources":["../../../src/rules/data/data-binding.ts"],"names":[],"mappings":"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"}