afterburn-cli 1.0.0

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 (188) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/dist/ai/gemini-client.d.ts +21 -0
  4. package/dist/ai/gemini-client.js +105 -0
  5. package/dist/ai/gemini-client.js.map +1 -0
  6. package/dist/ai/index.d.ts +1 -0
  7. package/dist/ai/index.js +3 -0
  8. package/dist/ai/index.js.map +1 -0
  9. package/dist/analysis/diagnosis-schema.d.ts +106 -0
  10. package/dist/analysis/diagnosis-schema.js +54 -0
  11. package/dist/analysis/diagnosis-schema.js.map +1 -0
  12. package/dist/analysis/error-analyzer.d.ts +9 -0
  13. package/dist/analysis/error-analyzer.js +573 -0
  14. package/dist/analysis/error-analyzer.js.map +1 -0
  15. package/dist/analysis/index.d.ts +4 -0
  16. package/dist/analysis/index.js +6 -0
  17. package/dist/analysis/index.js.map +1 -0
  18. package/dist/analysis/source-mapper.d.ts +19 -0
  19. package/dist/analysis/source-mapper.js +329 -0
  20. package/dist/analysis/source-mapper.js.map +1 -0
  21. package/dist/analysis/ui-auditor.d.ts +9 -0
  22. package/dist/analysis/ui-auditor.js +104 -0
  23. package/dist/analysis/ui-auditor.js.map +1 -0
  24. package/dist/artifacts/artifact-storage.d.ts +44 -0
  25. package/dist/artifacts/artifact-storage.js +99 -0
  26. package/dist/artifacts/artifact-storage.js.map +1 -0
  27. package/dist/artifacts/index.d.ts +1 -0
  28. package/dist/artifacts/index.js +3 -0
  29. package/dist/artifacts/index.js.map +1 -0
  30. package/dist/browser/browser-manager.d.ts +45 -0
  31. package/dist/browser/browser-manager.js +88 -0
  32. package/dist/browser/browser-manager.js.map +1 -0
  33. package/dist/browser/challenge-detector.d.ts +10 -0
  34. package/dist/browser/challenge-detector.js +58 -0
  35. package/dist/browser/challenge-detector.js.map +1 -0
  36. package/dist/browser/cookie-dismisser.d.ts +18 -0
  37. package/dist/browser/cookie-dismisser.js +76 -0
  38. package/dist/browser/cookie-dismisser.js.map +1 -0
  39. package/dist/browser/index.d.ts +4 -0
  40. package/dist/browser/index.js +6 -0
  41. package/dist/browser/index.js.map +1 -0
  42. package/dist/browser/stealth-browser.d.ts +13 -0
  43. package/dist/browser/stealth-browser.js +59 -0
  44. package/dist/browser/stealth-browser.js.map +1 -0
  45. package/dist/cli/commander-cli.d.ts +2 -0
  46. package/dist/cli/commander-cli.js +150 -0
  47. package/dist/cli/commander-cli.js.map +1 -0
  48. package/dist/cli/doctor.d.ts +34 -0
  49. package/dist/cli/doctor.js +124 -0
  50. package/dist/cli/doctor.js.map +1 -0
  51. package/dist/cli/first-run.d.ts +6 -0
  52. package/dist/cli/first-run.js +58 -0
  53. package/dist/cli/first-run.js.map +1 -0
  54. package/dist/cli/index.d.ts +3 -0
  55. package/dist/cli/index.js +5 -0
  56. package/dist/cli/index.js.map +1 -0
  57. package/dist/cli/progress.d.ts +11 -0
  58. package/dist/cli/progress.js +30 -0
  59. package/dist/cli/progress.js.map +1 -0
  60. package/dist/core/engine.d.ts +33 -0
  61. package/dist/core/engine.js +269 -0
  62. package/dist/core/engine.js.map +1 -0
  63. package/dist/core/index.d.ts +3 -0
  64. package/dist/core/index.js +4 -0
  65. package/dist/core/index.js.map +1 -0
  66. package/dist/core/validation.d.ts +52 -0
  67. package/dist/core/validation.js +228 -0
  68. package/dist/core/validation.js.map +1 -0
  69. package/dist/discovery/crawler.d.ts +58 -0
  70. package/dist/discovery/crawler.js +240 -0
  71. package/dist/discovery/crawler.js.map +1 -0
  72. package/dist/discovery/discovery-pipeline.d.ts +22 -0
  73. package/dist/discovery/discovery-pipeline.js +256 -0
  74. package/dist/discovery/discovery-pipeline.js.map +1 -0
  75. package/dist/discovery/element-mapper.d.ts +21 -0
  76. package/dist/discovery/element-mapper.js +422 -0
  77. package/dist/discovery/element-mapper.js.map +1 -0
  78. package/dist/discovery/index.d.ts +8 -0
  79. package/dist/discovery/index.js +8 -0
  80. package/dist/discovery/index.js.map +1 -0
  81. package/dist/discovery/link-validator.d.ts +15 -0
  82. package/dist/discovery/link-validator.js +137 -0
  83. package/dist/discovery/link-validator.js.map +1 -0
  84. package/dist/discovery/sitemap-builder.d.ts +19 -0
  85. package/dist/discovery/sitemap-builder.js +166 -0
  86. package/dist/discovery/sitemap-builder.js.map +1 -0
  87. package/dist/discovery/spa-detector.d.ts +12 -0
  88. package/dist/discovery/spa-detector.js +271 -0
  89. package/dist/discovery/spa-detector.js.map +1 -0
  90. package/dist/execution/error-detector.d.ts +10 -0
  91. package/dist/execution/error-detector.js +87 -0
  92. package/dist/execution/error-detector.js.map +1 -0
  93. package/dist/execution/evidence-capture.d.ts +8 -0
  94. package/dist/execution/evidence-capture.js +37 -0
  95. package/dist/execution/evidence-capture.js.map +1 -0
  96. package/dist/execution/index.d.ts +5 -0
  97. package/dist/execution/index.js +7 -0
  98. package/dist/execution/index.js.map +1 -0
  99. package/dist/execution/step-handlers.d.ts +48 -0
  100. package/dist/execution/step-handlers.js +349 -0
  101. package/dist/execution/step-handlers.js.map +1 -0
  102. package/dist/execution/test-data.d.ts +50 -0
  103. package/dist/execution/test-data.js +160 -0
  104. package/dist/execution/test-data.js.map +1 -0
  105. package/dist/execution/workflow-executor.d.ts +56 -0
  106. package/dist/execution/workflow-executor.js +331 -0
  107. package/dist/execution/workflow-executor.js.map +1 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.js +5 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/mcp/entry.d.ts +2 -0
  112. package/dist/mcp/entry.js +5 -0
  113. package/dist/mcp/entry.js.map +1 -0
  114. package/dist/mcp/index.d.ts +2 -0
  115. package/dist/mcp/index.js +4 -0
  116. package/dist/mcp/index.js.map +1 -0
  117. package/dist/mcp/server.d.ts +3 -0
  118. package/dist/mcp/server.js +19 -0
  119. package/dist/mcp/server.js.map +1 -0
  120. package/dist/mcp/tools.d.ts +2 -0
  121. package/dist/mcp/tools.js +162 -0
  122. package/dist/mcp/tools.js.map +1 -0
  123. package/dist/planning/heuristic-planner.d.ts +7 -0
  124. package/dist/planning/heuristic-planner.js +238 -0
  125. package/dist/planning/heuristic-planner.js.map +1 -0
  126. package/dist/planning/index.d.ts +3 -0
  127. package/dist/planning/index.js +5 -0
  128. package/dist/planning/index.js.map +1 -0
  129. package/dist/planning/plan-schema.d.ts +74 -0
  130. package/dist/planning/plan-schema.js +39 -0
  131. package/dist/planning/plan-schema.js.map +1 -0
  132. package/dist/planning/workflow-planner.d.ts +39 -0
  133. package/dist/planning/workflow-planner.js +211 -0
  134. package/dist/planning/workflow-planner.js.map +1 -0
  135. package/dist/reports/health-scorer.d.ts +14 -0
  136. package/dist/reports/health-scorer.js +88 -0
  137. package/dist/reports/health-scorer.js.map +1 -0
  138. package/dist/reports/html-generator.d.ts +10 -0
  139. package/dist/reports/html-generator.js +155 -0
  140. package/dist/reports/html-generator.js.map +1 -0
  141. package/dist/reports/index.d.ts +4 -0
  142. package/dist/reports/index.js +6 -0
  143. package/dist/reports/index.js.map +1 -0
  144. package/dist/reports/markdown-generator.d.ts +10 -0
  145. package/dist/reports/markdown-generator.js +334 -0
  146. package/dist/reports/markdown-generator.js.map +1 -0
  147. package/dist/reports/priority-ranker.d.ts +22 -0
  148. package/dist/reports/priority-ranker.js +608 -0
  149. package/dist/reports/priority-ranker.js.map +1 -0
  150. package/dist/screenshots/dual-format.d.ts +14 -0
  151. package/dist/screenshots/dual-format.js +59 -0
  152. package/dist/screenshots/dual-format.js.map +1 -0
  153. package/dist/screenshots/index.d.ts +2 -0
  154. package/dist/screenshots/index.js +4 -0
  155. package/dist/screenshots/index.js.map +1 -0
  156. package/dist/screenshots/screenshot-manager.d.ts +33 -0
  157. package/dist/screenshots/screenshot-manager.js +86 -0
  158. package/dist/screenshots/screenshot-manager.js.map +1 -0
  159. package/dist/testing/accessibility-auditor.d.ts +23 -0
  160. package/dist/testing/accessibility-auditor.js +44 -0
  161. package/dist/testing/accessibility-auditor.js.map +1 -0
  162. package/dist/testing/index.d.ts +4 -0
  163. package/dist/testing/index.js +5 -0
  164. package/dist/testing/index.js.map +1 -0
  165. package/dist/testing/meta-auditor.d.ts +16 -0
  166. package/dist/testing/meta-auditor.js +268 -0
  167. package/dist/testing/meta-auditor.js.map +1 -0
  168. package/dist/testing/performance-monitor.d.ts +15 -0
  169. package/dist/testing/performance-monitor.js +64 -0
  170. package/dist/testing/performance-monitor.js.map +1 -0
  171. package/dist/types/artifacts.d.ts +58 -0
  172. package/dist/types/artifacts.js +3 -0
  173. package/dist/types/artifacts.js.map +1 -0
  174. package/dist/types/discovery.d.ts +124 -0
  175. package/dist/types/discovery.js +3 -0
  176. package/dist/types/discovery.js.map +1 -0
  177. package/dist/types/execution.d.ts +154 -0
  178. package/dist/types/execution.js +3 -0
  179. package/dist/types/execution.js.map +1 -0
  180. package/dist/types/index.d.ts +2 -0
  181. package/dist/types/index.js +4 -0
  182. package/dist/types/index.js.map +1 -0
  183. package/dist/utils/sanitizer.d.ts +25 -0
  184. package/dist/utils/sanitizer.js +98 -0
  185. package/dist/utils/sanitizer.js.map +1 -0
  186. package/package.json +86 -0
  187. package/templates/report.hbs +202 -0
  188. package/templates/styles/report.css +607 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-planner.js","sourceRoot":"","sources":["../../src/planning/workflow-planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ExecutionArtifact } from '../types/execution.js';
2
+ export interface HealthScore {
3
+ overall: number;
4
+ label: 'good' | 'needs-work' | 'poor';
5
+ breakdown: {
6
+ workflows: number;
7
+ errors: number;
8
+ accessibility: number;
9
+ performance: number;
10
+ };
11
+ checksPassed: number;
12
+ checksTotal: number;
13
+ }
14
+ export declare function calculateHealthScore(executionArtifact: ExecutionArtifact): HealthScore;
@@ -0,0 +1,88 @@
1
+ // Calculate 0-100 health score from workflow results, errors, accessibility, and performance
2
+ export function calculateHealthScore(executionArtifact) {
3
+ // WORKFLOW SCORE (40% weight)
4
+ const totalWorkflows = executionArtifact.workflowResults.length;
5
+ const passedWorkflows = executionArtifact.workflowResults.filter(w => w.overallStatus === 'passed').length;
6
+ const workflowScore = totalWorkflows > 0 ? (passedWorkflows / totalWorkflows) * 100 : 100;
7
+ // ERROR SCORE (30% weight)
8
+ // totalIssues is computed upstream and already includes broken links
9
+ const totalIssues = executionArtifact.totalIssues;
10
+ const errorScore = Math.max(0, 100 - (totalIssues * 2));
11
+ // ACCESSIBILITY SCORE (20% weight)
12
+ let criticalViolations = 0;
13
+ let seriousViolations = 0;
14
+ for (const audit of executionArtifact.pageAudits) {
15
+ if (audit.accessibility) {
16
+ for (const violation of audit.accessibility.violations) {
17
+ if (violation.impact === 'critical') {
18
+ criticalViolations++;
19
+ }
20
+ else if (violation.impact === 'serious') {
21
+ seriousViolations++;
22
+ }
23
+ }
24
+ }
25
+ }
26
+ const accessibilityScore = Math.max(0, 100 - (criticalViolations * 10) - (seriousViolations * 5));
27
+ // PERFORMANCE SCORE (10% weight)
28
+ const perfAudits = executionArtifact.pageAudits.filter(a => a.performance);
29
+ let performanceScore = 100; // Default if no perf data
30
+ if (perfAudits.length > 0) {
31
+ const avgLcp = perfAudits.reduce((sum, a) => sum + (a.performance?.lcp || 0), 0) / perfAudits.length;
32
+ if (avgLcp < 2500) {
33
+ performanceScore = 100;
34
+ }
35
+ else if (avgLcp <= 4000) {
36
+ performanceScore = 75;
37
+ }
38
+ else {
39
+ performanceScore = 50;
40
+ }
41
+ }
42
+ // WEIGHTED OVERALL SCORE
43
+ let overall = (workflowScore * 0.4) +
44
+ (errorScore * 0.3) +
45
+ (accessibilityScore * 0.2) +
46
+ (performanceScore * 0.1);
47
+ // VETO LOGIC: Cap at 50 if ANY workflow failed
48
+ const hasFailedWorkflow = executionArtifact.workflowResults.some(w => w.overallStatus === 'failed');
49
+ if (hasFailedWorkflow) {
50
+ overall = Math.min(overall, 50);
51
+ }
52
+ // LABEL MAPPING
53
+ let label;
54
+ if (overall >= 80) {
55
+ label = 'good';
56
+ }
57
+ else if (overall >= 50) {
58
+ label = 'needs-work';
59
+ }
60
+ else {
61
+ label = 'poor';
62
+ }
63
+ // CHECKS CALCULATION
64
+ // checksTotal = total steps across all workflows + pageAudits.length
65
+ // checksPassed = passed steps + audits with no critical violations
66
+ const totalSteps = executionArtifact.workflowResults.reduce((sum, w) => sum + w.totalSteps, 0);
67
+ const passedSteps = executionArtifact.workflowResults.reduce((sum, w) => sum + w.passedSteps, 0);
68
+ const auditsWithoutCritical = executionArtifact.pageAudits.filter(a => {
69
+ if (!a.accessibility)
70
+ return true;
71
+ return !a.accessibility.violations.some(v => v.impact === 'critical');
72
+ }).length;
73
+ const checksTotal = totalSteps + executionArtifact.pageAudits.length;
74
+ const checksPassed = passedSteps + auditsWithoutCritical;
75
+ return {
76
+ overall: Math.round(overall),
77
+ label,
78
+ breakdown: {
79
+ workflows: Math.round(workflowScore),
80
+ errors: Math.round(errorScore),
81
+ accessibility: Math.round(accessibilityScore),
82
+ performance: Math.round(performanceScore),
83
+ },
84
+ checksPassed,
85
+ checksTotal,
86
+ };
87
+ }
88
+ //# sourceMappingURL=health-scorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-scorer.js","sourceRoot":"","sources":["../../src/reports/health-scorer.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAiB7F,MAAM,UAAU,oBAAoB,CAAC,iBAAoC;IACvE,8BAA8B;IAC9B,MAAM,cAAc,GAAG,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC;IAChE,MAAM,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC3G,MAAM,aAAa,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAE1F,2BAA2B;IAC3B,qEAAqE;IACrE,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;IAExD,mCAAmC;IACnC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;gBACvD,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACpC,kBAAkB,EAAE,CAAC;gBACvB,CAAC;qBAAM,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC1C,iBAAiB,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC;IAElG,iCAAiC;IACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3E,IAAI,gBAAgB,GAAG,GAAG,CAAC,CAAC,0BAA0B;IACtD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;QACrG,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;YAClB,gBAAgB,GAAG,GAAG,CAAC;QACzB,CAAC;aAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,gBAAgB,GAAG,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,GACT,CAAC,aAAa,GAAG,GAAG,CAAC;QACrB,CAAC,UAAU,GAAG,GAAG,CAAC;QAClB,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAC1B,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC;IAE3B,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC;IACpG,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB;IAChB,IAAI,KAAqC,CAAC;IAC1C,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClB,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;SAAM,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QACzB,KAAK,GAAG,YAAY,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IAED,qBAAqB;IACrB,qEAAqE;IACrE,mEAAmE;IACnE,MAAM,UAAU,GAAG,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACjG,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpE,IAAI,CAAC,CAAC,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEV,MAAM,WAAW,GAAG,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC;IACrE,MAAM,YAAY,GAAG,WAAW,GAAG,qBAAqB,CAAC;IAEzD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5B,KAAK;QACL,SAAS,EAAE;YACT,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAC9B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YAC7C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;SAC1C;QACD,YAAY;QACZ,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ExecutionArtifact } from '../types/execution.js';
2
+ import type { AnalysisArtifact } from '../analysis/diagnosis-schema.js';
3
+ /**
4
+ * Generate self-contained HTML report with inline CSS and base64 screenshots
5
+ */
6
+ export declare function generateHtmlReport(executionArtifact: ExecutionArtifact, analysisArtifact: AnalysisArtifact): Promise<string>;
7
+ /**
8
+ * Write HTML report to file
9
+ */
10
+ export declare function writeHtmlReport(html: string, outputPath: string): Promise<void>;
@@ -0,0 +1,155 @@
1
+ // Generate self-contained HTML report with Handlebars templates, inline CSS, and base64 screenshots
2
+ import Handlebars from 'handlebars';
3
+ import fs from 'fs-extra';
4
+ import sharp from 'sharp';
5
+ import { join, dirname } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { calculateHealthScore } from './health-scorer.js';
8
+ import { prioritizeIssues, deduplicateIssues } from './priority-ranker.js';
9
+ import { redactSensitiveUrl, redactSensitiveData } from '../utils/sanitizer.js';
10
+ /**
11
+ * Redact sensitive data from text before inserting into HTML reports.
12
+ * Strips query params with sensitive keys, truncates stack traces, replaces file paths with basename.
13
+ */
14
+ function redactSensitive(text) {
15
+ if (!text)
16
+ return text;
17
+ let result = text;
18
+ // Strip sensitive query params from URLs
19
+ result = result.replace(/\b(https?:\/\/[^\s]+\?[^\s]*)/g, (url) => {
20
+ try {
21
+ const parsed = new URL(url);
22
+ const sensitiveKeys = ['key', 'token', 'secret', 'password', 'auth', 'api', 'apikey', 'api_key', 'access_token', 'auth_token', 'session', 'jwt'];
23
+ for (const key of sensitiveKeys) {
24
+ if (parsed.searchParams.has(key)) {
25
+ parsed.searchParams.set(key, '[REDACTED]');
26
+ }
27
+ }
28
+ return parsed.toString();
29
+ }
30
+ catch {
31
+ return url;
32
+ }
33
+ });
34
+ // Truncate stack traces to first 3 lines
35
+ const lines = result.split('\n');
36
+ if (lines.length > 3 && lines.some(line => line.match(/^\s*at\s+/))) {
37
+ const stackStart = lines.findIndex(line => line.match(/^\s*at\s+/));
38
+ if (stackStart >= 0 && lines.length > stackStart + 3) {
39
+ result = lines.slice(0, stackStart + 3).join('\n') + '\n... (stack trace truncated)';
40
+ }
41
+ }
42
+ // Replace full file paths with basename only (remove directory info)
43
+ result = result.replace(/([A-Z]:[\/\\]|\/[^\/\s]+\/)[^\s:]+([\/\\][^\s:]+)/g, (match) => {
44
+ const lastSep = Math.max(match.lastIndexOf('/'), match.lastIndexOf('\\'));
45
+ return lastSep >= 0 ? match.substring(lastSep + 1) : match;
46
+ });
47
+ // Apply general sensitive data redaction
48
+ result = redactSensitiveData(result);
49
+ return result;
50
+ }
51
+ /**
52
+ * Resolve template path with fallback for both compiled (dist/) and dev (src/) environments
53
+ */
54
+ function resolveTemplatePath(relativePath) {
55
+ const __filename = fileURLToPath(import.meta.url);
56
+ const __dirname = dirname(__filename);
57
+ // From dist/reports/ -> ../../templates/ (compiled)
58
+ const distPath = join(__dirname, '../../templates', relativePath);
59
+ if (fs.existsSync(distPath))
60
+ return distPath;
61
+ // From src/reports/ -> ../../templates/ (tsx/dev - should also be ../../ from src/)
62
+ const srcPath = join(__dirname, '../../templates', relativePath);
63
+ if (fs.existsSync(srcPath))
64
+ return srcPath;
65
+ throw new Error(`Template not found: ${relativePath} (tried ${distPath} and ${srcPath})`);
66
+ }
67
+ /**
68
+ * Load screenshot and convert to base64 data URI with size optimization
69
+ */
70
+ async function loadScreenshotAsBase64(screenshotRef) {
71
+ if (!screenshotRef)
72
+ return undefined;
73
+ try {
74
+ // Check if file exists
75
+ if (!fs.existsSync(screenshotRef)) {
76
+ return undefined;
77
+ }
78
+ // Read and resize image to max 768px width (prevents base64 bloat)
79
+ let buffer = await sharp(screenshotRef)
80
+ .resize(768, undefined, { withoutEnlargement: true })
81
+ .webp({ quality: 80, effort: 4, smartSubsample: true })
82
+ .toBuffer();
83
+ // If still > 100KB, reduce quality to 60
84
+ if (buffer.length > 100 * 1024) {
85
+ buffer = await sharp(screenshotRef)
86
+ .resize(768, undefined, { withoutEnlargement: true })
87
+ .webp({ quality: 60, effort: 4, smartSubsample: true })
88
+ .toBuffer();
89
+ }
90
+ return `data:image/webp;base64,${buffer.toString('base64')}`;
91
+ }
92
+ catch (error) {
93
+ // Graceful degradation on error
94
+ console.warn(`Failed to load screenshot ${screenshotRef}:`, error);
95
+ return undefined;
96
+ }
97
+ }
98
+ /**
99
+ * Generate self-contained HTML report with inline CSS and base64 screenshots
100
+ */
101
+ export async function generateHtmlReport(executionArtifact, analysisArtifact) {
102
+ // Calculate health score
103
+ const healthScore = calculateHealthScore(executionArtifact);
104
+ // Prioritize and deduplicate issues
105
+ const prioritizedIssues = deduplicateIssues(prioritizeIssues(analysisArtifact.diagnosedErrors, analysisArtifact.uiAudits, executionArtifact));
106
+ // Load screenshots for each prioritized issue that has a screenshotRef, and redact sensitive data
107
+ const issuesWithScreenshots = await Promise.all(prioritizedIssues.map(async (issue) => ({
108
+ ...issue,
109
+ summary: redactSensitive(issue.summary),
110
+ impact: redactSensitive(issue.impact || ''),
111
+ fixSuggestion: redactSensitive(issue.fixSuggestion || ''),
112
+ location: redactSensitive(issue.location),
113
+ screenshotDataUri: await loadScreenshotAsBase64(issue.screenshotRef),
114
+ })));
115
+ // Load CSS from templates/styles/report.css
116
+ const cssPath = resolveTemplatePath('styles/report.css');
117
+ const cssContent = await fs.readFile(cssPath, 'utf-8');
118
+ // Load template from templates/report.hbs
119
+ const templatePath = resolveTemplatePath('report.hbs');
120
+ const templateSource = await fs.readFile(templatePath, 'utf-8');
121
+ // Register Handlebars helpers
122
+ Handlebars.registerHelper('eq', function (a, b) {
123
+ return a === b;
124
+ });
125
+ Handlebars.registerHelper('lt', function (a, b) {
126
+ return a < b;
127
+ });
128
+ // Compile template
129
+ const template = Handlebars.compile(templateSource);
130
+ // Render with data (use ISO format for timestamp)
131
+ const html = template({
132
+ targetUrl: redactSensitiveUrl(executionArtifact.targetUrl),
133
+ scanDate: new Date(executionArtifact.timestamp).toISOString(),
134
+ healthScore,
135
+ prioritizedIssues: issuesWithScreenshots,
136
+ workflowResults: executionArtifact.workflowResults,
137
+ pageAudits: executionArtifact.pageAudits,
138
+ totalIssues: executionArtifact.totalIssues,
139
+ aiPowered: analysisArtifact.aiPowered,
140
+ sourceAnalysisAvailable: analysisArtifact.sourceAnalysisAvailable,
141
+ inlineCSS: cssContent,
142
+ });
143
+ return html;
144
+ }
145
+ /**
146
+ * Write HTML report to file
147
+ */
148
+ export async function writeHtmlReport(html, outputPath) {
149
+ // Ensure parent directory exists
150
+ await fs.ensureDir(dirname(outputPath));
151
+ // Write HTML string to file
152
+ await fs.writeFile(outputPath, html, 'utf-8');
153
+ console.log('HTML report saved: ' + outputPath);
154
+ }
155
+ //# sourceMappingURL=html-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-generator.js","sourceRoot":"","sources":["../../src/reports/html-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './health-scorer.js';
2
+ export * from './priority-ranker.js';
3
+ export * from './html-generator.js';
4
+ export * from './markdown-generator.js';
@@ -0,0 +1,6 @@
1
+ // Phase 5 Reporting & Output exports
2
+ export * from './health-scorer.js';
3
+ export * from './priority-ranker.js';
4
+ export * from './html-generator.js';
5
+ export * from './markdown-generator.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reports/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ExecutionArtifact } from '../types/execution.js';
2
+ import type { AnalysisArtifact } from '../analysis/diagnosis-schema.js';
3
+ /**
4
+ * Generate complete Markdown report with YAML frontmatter
5
+ */
6
+ export declare function generateMarkdownReport(executionArtifact: ExecutionArtifact, analysisArtifact: AnalysisArtifact): string;
7
+ /**
8
+ * Write Markdown report to file
9
+ */
10
+ export declare function writeMarkdownReport(markdown: string, outputPath: string): Promise<void>;