webmcp-cli 1.2.2 → 1.2.3
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/analysis/form-to-tool-mapper.d.ts +61 -0
- package/dist/analysis/form-to-tool-mapper.js +360 -0
- package/dist/analysis/form-to-tool-mapper.js.map +1 -0
- package/dist/analysis/index.d.ts +84 -0
- package/dist/analysis/index.js +81 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/missing-tool-analyzer.d.ts +35 -0
- package/dist/analysis/missing-tool-analyzer.js +617 -0
- package/dist/analysis/missing-tool-analyzer.js.map +1 -0
- package/dist/audit/run-multi-page-audit.d.ts +34 -0
- package/dist/audit/run-multi-page-audit.js +233 -0
- package/dist/audit/run-multi-page-audit.js.map +1 -0
- package/dist/cli/commands/potential.d.ts +8 -0
- package/dist/cli/commands/potential.js +323 -0
- package/dist/cli/commands/potential.js.map +1 -0
- package/dist/cli/commands/report.d.ts +12 -0
- package/dist/cli/commands/report.js +89 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/index.js +35 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/defaults.d.ts +36 -0
- package/dist/config/defaults.js +33 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +22 -0
- package/dist/config/loader.js +91 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +280 -0
- package/dist/config/schema.js +42 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/types/audit.d.ts +1 -1
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.js +1 -0
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/recon.d.ts +265 -0
- package/dist/core/types/recon.js +5 -0
- package/dist/core/types/recon.js.map +1 -0
- package/dist/core/types/rule.d.ts +1 -1
- package/dist/core/types/rule.js +7 -5
- package/dist/core/types/rule.js.map +1 -1
- package/dist/crawler/depth-crawler.d.ts +29 -0
- package/dist/crawler/depth-crawler.js +212 -0
- package/dist/crawler/depth-crawler.js.map +1 -0
- package/dist/crawler/index.d.ts +2 -0
- package/dist/crawler/index.js +3 -0
- package/dist/crawler/index.js.map +1 -0
- package/dist/crawler/link-extractor.d.ts +1 -0
- package/dist/crawler/link-extractor.js +49 -0
- package/dist/crawler/link-extractor.js.map +1 -0
- package/dist/generators/index.d.ts +10 -0
- package/dist/generators/index.js +8 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/report-html.d.ts +12 -0
- package/dist/generators/report-html.js +470 -0
- package/dist/generators/report-html.js.map +1 -0
- package/dist/generators/report-json.d.ts +95 -0
- package/dist/generators/report-json.js +144 -0
- package/dist/generators/report-json.js.map +1 -0
- package/dist/generators/report-manager.d.ts +31 -0
- package/dist/generators/report-manager.js +208 -0
- package/dist/generators/report-manager.js.map +1 -0
- package/dist/generators/tool-code-generator.d.ts +31 -0
- package/dist/generators/tool-code-generator.js +201 -0
- package/dist/generators/tool-code-generator.js.map +1 -0
- package/dist/potential/ai-recommender.d.ts +33 -0
- package/dist/potential/ai-recommender.js +414 -0
- package/dist/potential/ai-recommender.js.map +1 -0
- package/dist/potential/analyzer.d.ts +32 -0
- package/dist/potential/analyzer.js +383 -0
- package/dist/potential/analyzer.js.map +1 -0
- package/dist/potential/index.d.ts +3 -0
- package/dist/potential/index.js +4 -0
- package/dist/potential/index.js.map +1 -0
- package/dist/potential/prompts.d.ts +20 -0
- package/dist/potential/prompts.js +42 -0
- package/dist/potential/prompts.js.map +1 -0
- package/dist/potential/types.d.ts +40 -0
- package/dist/potential/types.js +2 -0
- package/dist/potential/types.js.map +1 -0
- package/dist/recon/index.d.ts +20 -0
- package/dist/recon/index.js +143 -0
- package/dist/recon/index.js.map +1 -0
- package/dist/recon/manifest.d.ts +16 -0
- package/dist/recon/manifest.js +108 -0
- package/dist/recon/manifest.js.map +1 -0
- package/dist/recon/meta-extractor.d.ts +11 -0
- package/dist/recon/meta-extractor.js +276 -0
- package/dist/recon/meta-extractor.js.map +1 -0
- package/dist/recon/robots.d.ts +16 -0
- package/dist/recon/robots.js +158 -0
- package/dist/recon/robots.js.map +1 -0
- package/dist/recon/route-discovery.d.ts +25 -0
- package/dist/recon/route-discovery.js +303 -0
- package/dist/recon/route-discovery.js.map +1 -0
- package/dist/recon/sitemap.d.ts +12 -0
- package/dist/recon/sitemap.js +177 -0
- package/dist/recon/sitemap.js.map +1 -0
- package/dist/rules/accessibility/AXE-001.d.ts +9 -0
- package/dist/rules/accessibility/AXE-001.js +109 -0
- package/dist/rules/accessibility/AXE-001.js.map +1 -0
- package/dist/rules/accessibility/AXE-002.d.ts +8 -0
- package/dist/rules/accessibility/AXE-002.js +85 -0
- package/dist/rules/accessibility/AXE-002.js.map +1 -0
- package/dist/rules/accessibility/AXE-003.d.ts +8 -0
- package/dist/rules/accessibility/AXE-003.js +94 -0
- package/dist/rules/accessibility/AXE-003.js.map +1 -0
- package/dist/rules/accessibility/AXE-004.d.ts +8 -0
- package/dist/rules/accessibility/AXE-004.js +101 -0
- package/dist/rules/accessibility/AXE-004.js.map +1 -0
- package/dist/rules/accessibility/AXE-005.d.ts +9 -0
- package/dist/rules/accessibility/AXE-005.js +89 -0
- package/dist/rules/accessibility/AXE-005.js.map +1 -0
- package/dist/rules/best-practices/BP-004.d.ts +9 -0
- package/dist/rules/best-practices/BP-004.js +96 -0
- package/dist/rules/best-practices/BP-004.js.map +1 -0
- package/dist/rules/best-practices/BP-005.d.ts +8 -0
- package/dist/rules/best-practices/BP-005.js +94 -0
- package/dist/rules/best-practices/BP-005.js.map +1 -0
- package/dist/rules/best-practices/BP-006.d.ts +8 -0
- package/dist/rules/best-practices/BP-006.js +80 -0
- package/dist/rules/best-practices/BP-006.js.map +1 -0
- package/dist/rules/best-practices/BP-007.d.ts +8 -0
- package/dist/rules/best-practices/BP-007.js +92 -0
- package/dist/rules/best-practices/BP-007.js.map +1 -0
- package/dist/rules/best-practices/BP-008.d.ts +12 -0
- package/dist/rules/best-practices/BP-008.js +86 -0
- package/dist/rules/best-practices/BP-008.js.map +1 -0
- package/dist/rules/best-practices/BP-009.d.ts +9 -0
- package/dist/rules/best-practices/BP-009.js +77 -0
- package/dist/rules/best-practices/BP-009.js.map +1 -0
- package/dist/rules/best-practices/BP-010.d.ts +8 -0
- package/dist/rules/best-practices/BP-010.js +85 -0
- package/dist/rules/best-practices/BP-010.js.map +1 -0
- package/dist/rules/coverage/COV-002.d.ts +8 -0
- package/dist/rules/coverage/COV-002.js +68 -0
- package/dist/rules/coverage/COV-002.js.map +1 -0
- package/dist/rules/coverage/COV-003.d.ts +8 -0
- package/dist/rules/coverage/COV-003.js +68 -0
- package/dist/rules/coverage/COV-003.js.map +1 -0
- package/dist/rules/coverage/COV-004.d.ts +8 -0
- package/dist/rules/coverage/COV-004.js +89 -0
- package/dist/rules/coverage/COV-004.js.map +1 -0
- package/dist/rules/coverage/COV-005.d.ts +8 -0
- package/dist/rules/coverage/COV-005.js +67 -0
- package/dist/rules/coverage/COV-005.js.map +1 -0
- package/dist/rules/coverage/COV-006.d.ts +9 -0
- package/dist/rules/coverage/COV-006.js +76 -0
- package/dist/rules/coverage/COV-006.js.map +1 -0
- package/dist/rules/coverage/COV-007.d.ts +8 -0
- package/dist/rules/coverage/COV-007.js +67 -0
- package/dist/rules/coverage/COV-007.js.map +1 -0
- package/dist/rules/coverage/COV-008.d.ts +9 -0
- package/dist/rules/coverage/COV-008.js +87 -0
- package/dist/rules/coverage/COV-008.js.map +1 -0
- package/dist/rules/coverage/COV-009.d.ts +8 -0
- package/dist/rules/coverage/COV-009.js +73 -0
- package/dist/rules/coverage/COV-009.js.map +1 -0
- package/dist/rules/coverage/COV-010.d.ts +9 -0
- package/dist/rules/coverage/COV-010.js +82 -0
- package/dist/rules/coverage/COV-010.js.map +1 -0
- package/dist/rules/description/DESC-001.d.ts +9 -0
- package/dist/rules/description/DESC-001.js +88 -0
- package/dist/rules/description/DESC-001.js.map +1 -0
- package/dist/rules/description/DESC-002.d.ts +10 -0
- package/dist/rules/description/DESC-002.js +99 -0
- package/dist/rules/description/DESC-002.js.map +1 -0
- package/dist/rules/description/DESC-006.d.ts +9 -0
- package/dist/rules/description/DESC-006.js +78 -0
- package/dist/rules/description/DESC-006.js.map +1 -0
- package/dist/rules/description/DESC-007.d.ts +9 -0
- package/dist/rules/description/DESC-007.js +70 -0
- package/dist/rules/description/DESC-007.js.map +1 -0
- package/dist/rules/description/DESC-008.d.ts +9 -0
- package/dist/rules/description/DESC-008.js +70 -0
- package/dist/rules/description/DESC-008.js.map +1 -0
- package/dist/rules/description/DESC-009.d.ts +8 -0
- package/dist/rules/description/DESC-009.js +55 -0
- package/dist/rules/description/DESC-009.js.map +1 -0
- package/dist/rules/description/DESC-010.d.ts +9 -0
- package/dist/rules/description/DESC-010.js +92 -0
- package/dist/rules/description/DESC-010.js.map +1 -0
- package/dist/rules/description/DESC-011.d.ts +9 -0
- package/dist/rules/description/DESC-011.js +81 -0
- package/dist/rules/description/DESC-011.js.map +1 -0
- package/dist/rules/description/DESC-012.d.ts +9 -0
- package/dist/rules/description/DESC-012.js +98 -0
- package/dist/rules/description/DESC-012.js.map +1 -0
- package/dist/rules/implementation/IMP-002.d.ts +9 -0
- package/dist/rules/implementation/IMP-002.js +59 -0
- package/dist/rules/implementation/IMP-002.js.map +1 -0
- package/dist/rules/implementation/IMP-006.d.ts +9 -0
- package/dist/rules/implementation/IMP-006.js +48 -0
- package/dist/rules/implementation/IMP-006.js.map +1 -0
- package/dist/rules/implementation/IMP-008.d.ts +9 -0
- package/dist/rules/implementation/IMP-008.js +46 -0
- package/dist/rules/implementation/IMP-008.js.map +1 -0
- package/dist/rules/implementation/IMP-009.d.ts +9 -0
- package/dist/rules/implementation/IMP-009.js +48 -0
- package/dist/rules/implementation/IMP-009.js.map +1 -0
- package/dist/rules/implementation/IMP-010.d.ts +9 -0
- package/dist/rules/implementation/IMP-010.js +66 -0
- package/dist/rules/implementation/IMP-010.js.map +1 -0
- package/dist/rules/implementation/IMP-011.d.ts +9 -0
- package/dist/rules/implementation/IMP-011.js +82 -0
- package/dist/rules/implementation/IMP-011.js.map +1 -0
- package/dist/rules/implementation/IMP-012.d.ts +9 -0
- package/dist/rules/implementation/IMP-012.js +88 -0
- package/dist/rules/implementation/IMP-012.js.map +1 -0
- package/dist/rules/implementation/IMP-014.d.ts +9 -0
- package/dist/rules/implementation/IMP-014.js +58 -0
- package/dist/rules/implementation/IMP-014.js.map +1 -0
- package/dist/rules/implementation/IMP-015.d.ts +9 -0
- package/dist/rules/implementation/IMP-015.js +64 -0
- package/dist/rules/implementation/IMP-015.js.map +1 -0
- package/dist/rules/implementation/IMP-016.d.ts +9 -0
- package/dist/rules/implementation/IMP-016.js +52 -0
- package/dist/rules/implementation/IMP-016.js.map +1 -0
- package/dist/rules/implementation/IMP-017.d.ts +8 -0
- package/dist/rules/implementation/IMP-017.js +51 -0
- package/dist/rules/implementation/IMP-017.js.map +1 -0
- package/dist/rules/implementation/IMP-018.d.ts +8 -0
- package/dist/rules/implementation/IMP-018.js +52 -0
- package/dist/rules/implementation/IMP-018.js.map +1 -0
- package/dist/rules/implementation/IMP-019.d.ts +8 -0
- package/dist/rules/implementation/IMP-019.js +53 -0
- package/dist/rules/implementation/IMP-019.js.map +1 -0
- package/dist/rules/implementation/IMP-020.d.ts +9 -0
- package/dist/rules/implementation/IMP-020.js +62 -0
- package/dist/rules/implementation/IMP-020.js.map +1 -0
- package/dist/rules/implementation/IMP-021.d.ts +8 -0
- package/dist/rules/implementation/IMP-021.js +64 -0
- package/dist/rules/implementation/IMP-021.js.map +1 -0
- package/dist/rules/implementation/IMP-022.d.ts +8 -0
- package/dist/rules/implementation/IMP-022.js +70 -0
- package/dist/rules/implementation/IMP-022.js.map +1 -0
- package/dist/rules/index.d.ts +73 -6
- package/dist/rules/index.js +141 -6
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/schema/SCHEMA-004.d.ts +9 -0
- package/dist/rules/schema/SCHEMA-004.js +57 -0
- package/dist/rules/schema/SCHEMA-004.js.map +1 -0
- package/dist/rules/schema/SCHEMA-005.d.ts +9 -0
- package/dist/rules/schema/SCHEMA-005.js +61 -0
- package/dist/rules/schema/SCHEMA-005.js.map +1 -0
- package/dist/rules/schema/SCHEMA-006.d.ts +10 -0
- package/dist/rules/schema/SCHEMA-006.js +85 -0
- package/dist/rules/schema/SCHEMA-006.js.map +1 -0
- package/dist/rules/schema/SCHEMA-007.d.ts +9 -0
- package/dist/rules/schema/SCHEMA-007.js +73 -0
- package/dist/rules/schema/SCHEMA-007.js.map +1 -0
- package/dist/rules/schema/SCHEMA-008.d.ts +9 -0
- package/dist/rules/schema/SCHEMA-008.js +70 -0
- package/dist/rules/schema/SCHEMA-008.js.map +1 -0
- package/dist/rules/schema/SCHEMA-009.d.ts +10 -0
- package/dist/rules/schema/SCHEMA-009.js +80 -0
- package/dist/rules/schema/SCHEMA-009.js.map +1 -0
- package/dist/rules/schema/SCHEMA-010.d.ts +9 -0
- package/dist/rules/schema/SCHEMA-010.js +96 -0
- package/dist/rules/schema/SCHEMA-010.js.map +1 -0
- package/dist/rules/schema/SCHEMA-012.d.ts +9 -0
- package/dist/rules/schema/SCHEMA-012.js +65 -0
- package/dist/rules/schema/SCHEMA-012.js.map +1 -0
- package/dist/rules/security/SEC-002.d.ts +8 -0
- package/dist/rules/security/SEC-002.js +81 -0
- package/dist/rules/security/SEC-002.js.map +1 -0
- package/dist/rules/security/SEC-003.d.ts +8 -0
- package/dist/rules/security/SEC-003.js +85 -0
- package/dist/rules/security/SEC-003.js.map +1 -0
- package/dist/rules/security/SEC-004.d.ts +9 -0
- package/dist/rules/security/SEC-004.js +87 -0
- package/dist/rules/security/SEC-004.js.map +1 -0
- package/dist/rules/security/SEC-005.d.ts +8 -0
- package/dist/rules/security/SEC-005.js +87 -0
- package/dist/rules/security/SEC-005.js.map +1 -0
- package/dist/rules/security/SEC-006.d.ts +10 -0
- package/dist/rules/security/SEC-006.js +108 -0
- package/dist/rules/security/SEC-006.js.map +1 -0
- package/dist/rules/security/SEC-007.d.ts +9 -0
- package/dist/rules/security/SEC-007.js +108 -0
- package/dist/rules/security/SEC-007.js.map +1 -0
- package/dist/rules/security/SEC-008.d.ts +8 -0
- package/dist/rules/security/SEC-008.js +109 -0
- package/dist/rules/security/SEC-008.js.map +1 -0
- package/dist/rules/security/SEC-009.d.ts +9 -0
- package/dist/rules/security/SEC-009.js +93 -0
- package/dist/rules/security/SEC-009.js.map +1 -0
- package/dist/rules/security/SEC-010.d.ts +8 -0
- package/dist/rules/security/SEC-010.js +78 -0
- package/dist/rules/security/SEC-010.js.map +1 -0
- package/dist/rules/security/SEC-011.d.ts +8 -0
- package/dist/rules/security/SEC-011.js +93 -0
- package/dist/rules/security/SEC-011.js.map +1 -0
- package/dist/rules/security/SEC-012.d.ts +8 -0
- package/dist/rules/security/SEC-012.js +79 -0
- package/dist/rules/security/SEC-012.js.map +1 -0
- package/dist/rules/security/SEC-013.d.ts +9 -0
- package/dist/rules/security/SEC-013.js +107 -0
- package/dist/rules/security/SEC-013.js.map +1 -0
- package/dist/scoring/calculator.js +1 -0
- package/dist/scoring/calculator.js.map +1 -1
- package/dist/ui/ink/components/AIRecommendationCard.d.ts +11 -0
- package/dist/ui/ink/components/AIRecommendationCard.js +23 -0
- package/dist/ui/ink/components/AIRecommendationCard.js.map +1 -0
- package/dist/ui/ink/components/OpportunityList.d.ts +10 -0
- package/dist/ui/ink/components/OpportunityList.js +48 -0
- package/dist/ui/ink/components/OpportunityList.js.map +1 -0
- package/dist/ui/ink/components/PotentialPageCard.d.ts +13 -0
- package/dist/ui/ink/components/PotentialPageCard.js +43 -0
- package/dist/ui/ink/components/PotentialPageCard.js.map +1 -0
- package/dist/ui/ink/components/PotentialProgress.d.ts +16 -0
- package/dist/ui/ink/components/PotentialProgress.js +44 -0
- package/dist/ui/ink/components/PotentialProgress.js.map +1 -0
- package/dist/ui/ink/components/PotentialSummary.d.ts +10 -0
- package/dist/ui/ink/components/PotentialSummary.js +86 -0
- package/dist/ui/ink/components/PotentialSummary.js.map +1 -0
- package/dist/ui/ink/components/SuggestionCard.d.ts +34 -0
- package/dist/ui/ink/components/SuggestionCard.js +36 -0
- package/dist/ui/ink/components/SuggestionCard.js.map +1 -0
- package/dist/ui/ink/components/views/MultiPageCrawlView.d.ts +21 -0
- package/dist/ui/ink/components/views/MultiPageCrawlView.js +55 -0
- package/dist/ui/ink/components/views/MultiPageCrawlView.js.map +1 -0
- package/dist/ui/ink/components/views/PotentialView.d.ts +18 -0
- package/dist/ui/ink/components/views/PotentialView.js +74 -0
- package/dist/ui/ink/components/views/PotentialView.js.map +1 -0
- package/dist/ui/ink/components/views/ReconView.d.ts +22 -0
- package/dist/ui/ink/components/views/ReconView.js +30 -0
- package/dist/ui/ink/components/views/ReconView.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Command
|
|
3
|
+
*
|
|
4
|
+
* Open or manage generated audit reports.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { existsSync, readdirSync, statSync } from 'fs';
|
|
8
|
+
import { join, resolve } from 'path';
|
|
9
|
+
import { exec } from 'child_process';
|
|
10
|
+
/**
|
|
11
|
+
* Find the most recent HTML report in the output directory.
|
|
12
|
+
*/
|
|
13
|
+
function findLatestReport(dir) {
|
|
14
|
+
const absDir = resolve(dir);
|
|
15
|
+
if (!existsSync(absDir))
|
|
16
|
+
return null;
|
|
17
|
+
const htmlFile = join(absDir, 'audit-report.html');
|
|
18
|
+
if (existsSync(htmlFile))
|
|
19
|
+
return htmlFile;
|
|
20
|
+
// Check subdirectories for the latest report
|
|
21
|
+
try {
|
|
22
|
+
const entries = readdirSync(absDir, { withFileTypes: true })
|
|
23
|
+
.filter((e) => e.isDirectory())
|
|
24
|
+
.map((e) => ({
|
|
25
|
+
name: e.name,
|
|
26
|
+
path: join(absDir, e.name),
|
|
27
|
+
mtime: statSync(join(absDir, e.name)).mtime.getTime(),
|
|
28
|
+
}))
|
|
29
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
30
|
+
for (const entry of entries) {
|
|
31
|
+
const candidate = join(entry.path, 'audit-report.html');
|
|
32
|
+
if (existsSync(candidate))
|
|
33
|
+
return candidate;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Ignore filesystem errors
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Open a file in the default system application.
|
|
43
|
+
*/
|
|
44
|
+
function openInBrowser(filePath) {
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
const platform = process.platform;
|
|
47
|
+
let cmd;
|
|
48
|
+
if (platform === 'darwin') {
|
|
49
|
+
cmd = `open "${filePath}"`;
|
|
50
|
+
}
|
|
51
|
+
else if (platform === 'win32') {
|
|
52
|
+
cmd = `start "" "${filePath}"`;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
cmd = `xdg-open "${filePath}"`;
|
|
56
|
+
}
|
|
57
|
+
exec(cmd, (err) => {
|
|
58
|
+
if (err)
|
|
59
|
+
reject(err);
|
|
60
|
+
else
|
|
61
|
+
resolve();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Open the latest HTML report in the default browser.
|
|
67
|
+
*/
|
|
68
|
+
export async function runReportOpen(options) {
|
|
69
|
+
const dir = options.dir ?? './agentready-report';
|
|
70
|
+
const reportPath = findLatestReport(dir);
|
|
71
|
+
if (!reportPath) {
|
|
72
|
+
console.error(chalk.red('No report found.') +
|
|
73
|
+
chalk.dim(` Looked in: ${resolve(dir)}`));
|
|
74
|
+
console.log(chalk.dim(' Run ') +
|
|
75
|
+
chalk.cyan('webmcp audit <url>') +
|
|
76
|
+
chalk.dim(' first to generate a report.'));
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
console.log(chalk.cyan('Opening report: ') + chalk.white(reportPath));
|
|
80
|
+
try {
|
|
81
|
+
await openInBrowser(reportPath);
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.error(chalk.red(`Failed to open report: ${e instanceof Error ? e.message : e}`));
|
|
86
|
+
return 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -71,6 +71,41 @@ export function createProgram() {
|
|
|
71
71
|
const { runInteractive } = await import('./commands/interactive.js');
|
|
72
72
|
await runInteractive(url, options);
|
|
73
73
|
});
|
|
74
|
+
// ═══════════════════════════════════════════════════════
|
|
75
|
+
// COMMAND: report
|
|
76
|
+
// ═══════════════════════════════════════════════════════
|
|
77
|
+
const reportCmd = program
|
|
78
|
+
.command('report')
|
|
79
|
+
.description('Manage generated audit reports');
|
|
80
|
+
reportCmd
|
|
81
|
+
.command('open')
|
|
82
|
+
.description('Open the latest HTML report in your browser')
|
|
83
|
+
.option('-d, --dir <path>', 'Report output directory', './agentready-report')
|
|
84
|
+
.action(async (options) => {
|
|
85
|
+
const { runReportOpen } = await import('./commands/report.js');
|
|
86
|
+
const exitCode = await runReportOpen(options);
|
|
87
|
+
if (exitCode !== 0) {
|
|
88
|
+
process.exitCode = exitCode;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
// ═══════════════════════════════════════════════════════
|
|
92
|
+
// COMMAND: potential
|
|
93
|
+
// ═══════════════════════════════════════════════════════
|
|
94
|
+
program
|
|
95
|
+
.command('potential')
|
|
96
|
+
.description('Find WebMCP integration opportunities on a website')
|
|
97
|
+
.argument('<url>', 'The URL to analyze')
|
|
98
|
+
.option('--max-pages <n>', 'Max pages to crawl', '30')
|
|
99
|
+
.option('-t, --timeout <ms>', 'Per-page timeout', '15000')
|
|
100
|
+
.option('--no-ai', 'Skip AI recommendations')
|
|
101
|
+
.option('--output <path>', 'Save report to JSON file')
|
|
102
|
+
.option('--json', 'Output raw JSON instead of TUI')
|
|
103
|
+
.action(async (url, options) => {
|
|
104
|
+
const { runPotential } = await import('./commands/potential.js');
|
|
105
|
+
const exitCode = await runPotential(url, options);
|
|
106
|
+
if (exitCode !== 0)
|
|
107
|
+
process.exitCode = exitCode;
|
|
108
|
+
});
|
|
74
109
|
return program;
|
|
75
110
|
}
|
|
76
111
|
/**
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Configuration Values
|
|
3
|
+
*
|
|
4
|
+
* Sensible defaults for all configuration options.
|
|
5
|
+
* These match the specification in extra-context.md.
|
|
6
|
+
*/
|
|
7
|
+
export declare const defaultConfig: {
|
|
8
|
+
readonly crawl: {
|
|
9
|
+
readonly maxPages: 20;
|
|
10
|
+
readonly maxDepth: 4;
|
|
11
|
+
readonly timeout: 30000;
|
|
12
|
+
readonly respectRobotsTxt: true;
|
|
13
|
+
};
|
|
14
|
+
readonly rules: {
|
|
15
|
+
readonly disabled: string[];
|
|
16
|
+
readonly overrides: Record<string, {
|
|
17
|
+
severity?: string;
|
|
18
|
+
maxScore?: number;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
21
|
+
readonly scoring: {
|
|
22
|
+
readonly weights: {
|
|
23
|
+
readonly implementation: 0.25;
|
|
24
|
+
readonly coverage: 0.2;
|
|
25
|
+
readonly security: 0.2;
|
|
26
|
+
readonly bestPractices: 0.15;
|
|
27
|
+
readonly promptHandling: 0.2;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
readonly output: {
|
|
31
|
+
readonly directory: "./agentready-report";
|
|
32
|
+
readonly formats: string[];
|
|
33
|
+
readonly includeScreenshots: true;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export type DefaultConfig = typeof defaultConfig;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Configuration Values
|
|
3
|
+
*
|
|
4
|
+
* Sensible defaults for all configuration options.
|
|
5
|
+
* These match the specification in extra-context.md.
|
|
6
|
+
*/
|
|
7
|
+
export const defaultConfig = {
|
|
8
|
+
crawl: {
|
|
9
|
+
maxPages: 20,
|
|
10
|
+
maxDepth: 4,
|
|
11
|
+
timeout: 30000,
|
|
12
|
+
respectRobotsTxt: true,
|
|
13
|
+
},
|
|
14
|
+
rules: {
|
|
15
|
+
disabled: [],
|
|
16
|
+
overrides: {},
|
|
17
|
+
},
|
|
18
|
+
scoring: {
|
|
19
|
+
weights: {
|
|
20
|
+
implementation: 0.25,
|
|
21
|
+
coverage: 0.20,
|
|
22
|
+
security: 0.20,
|
|
23
|
+
bestPractices: 0.15,
|
|
24
|
+
promptHandling: 0.20,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
output: {
|
|
28
|
+
directory: './agentready-report',
|
|
29
|
+
formats: ['html', 'json'],
|
|
30
|
+
includeScreenshots: true,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,KAAK;QACd,gBAAgB,EAAE,IAAI;KACvB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,EAAc;QACxB,SAAS,EAAE,EAA8D;KAC1E;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB;KACF;IACD,MAAM,EAAE;QACN,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAa;QACrC,kBAAkB,EAAE,IAAI;KACzB;CACO,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Module
|
|
3
|
+
*/
|
|
4
|
+
export { loadConfig, loadConfigFromFile } from './loader.js';
|
|
5
|
+
export { configSchema } from './schema.js';
|
|
6
|
+
export type { Config, CrawlConfig, RulesConfig, ScoringConfig, OutputConfig } from './schema.js';
|
|
7
|
+
export { defaultConfig } from './defaults.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Uses cosmiconfig to discover and load configuration from:
|
|
5
|
+
* - .agentreadyrc.json
|
|
6
|
+
* - .agentreadyrc.yml
|
|
7
|
+
* - agentready.config.js
|
|
8
|
+
* - package.json "agentready" field
|
|
9
|
+
*/
|
|
10
|
+
import type { Config } from './schema.js';
|
|
11
|
+
/**
|
|
12
|
+
* Load configuration from the filesystem and merge with overrides.
|
|
13
|
+
*
|
|
14
|
+
* @param overrides - Partial config to merge on top of loaded config
|
|
15
|
+
* @param searchFrom - Directory to start searching from (defaults to cwd)
|
|
16
|
+
* @returns Validated and merged configuration
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadConfig(overrides?: Partial<Config>, searchFrom?: string): Promise<Config>;
|
|
19
|
+
/**
|
|
20
|
+
* Load configuration from a specific file path.
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadConfigFromFile(filePath: string): Promise<Config>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Uses cosmiconfig to discover and load configuration from:
|
|
5
|
+
* - .agentreadyrc.json
|
|
6
|
+
* - .agentreadyrc.yml
|
|
7
|
+
* - agentready.config.js
|
|
8
|
+
* - package.json "agentready" field
|
|
9
|
+
*/
|
|
10
|
+
import { cosmiconfig } from 'cosmiconfig';
|
|
11
|
+
import { configSchema } from './schema.js';
|
|
12
|
+
const MODULE_NAME = 'agentready';
|
|
13
|
+
const explorer = cosmiconfig(MODULE_NAME, {
|
|
14
|
+
searchPlaces: [
|
|
15
|
+
`.${MODULE_NAME}rc.json`,
|
|
16
|
+
`.${MODULE_NAME}rc.yml`,
|
|
17
|
+
`.${MODULE_NAME}rc.yaml`,
|
|
18
|
+
`${MODULE_NAME}.config.js`,
|
|
19
|
+
`${MODULE_NAME}.config.mjs`,
|
|
20
|
+
`package.json`,
|
|
21
|
+
],
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Load configuration from the filesystem and merge with overrides.
|
|
25
|
+
*
|
|
26
|
+
* @param overrides - Partial config to merge on top of loaded config
|
|
27
|
+
* @param searchFrom - Directory to start searching from (defaults to cwd)
|
|
28
|
+
* @returns Validated and merged configuration
|
|
29
|
+
*/
|
|
30
|
+
export async function loadConfig(overrides, searchFrom) {
|
|
31
|
+
let fileConfig = {};
|
|
32
|
+
try {
|
|
33
|
+
const result = await explorer.search(searchFrom);
|
|
34
|
+
if (result && !result.isEmpty) {
|
|
35
|
+
fileConfig = result.config;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// If config file is invalid or missing, use defaults
|
|
40
|
+
}
|
|
41
|
+
// Merge file config with overrides (overrides take precedence)
|
|
42
|
+
const merged = deepMerge(fileConfig, overrides ?? {});
|
|
43
|
+
// Validate and apply defaults via Zod
|
|
44
|
+
const parsed = configSchema.safeParse(merged);
|
|
45
|
+
if (!parsed.success) {
|
|
46
|
+
const errors = parsed.error.issues
|
|
47
|
+
.map((issue) => ` ${issue.path.join('.')}: ${issue.message}`)
|
|
48
|
+
.join('\n');
|
|
49
|
+
throw new Error(`Invalid configuration:\n${errors}`);
|
|
50
|
+
}
|
|
51
|
+
return parsed.data;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Load configuration from a specific file path.
|
|
55
|
+
*/
|
|
56
|
+
export async function loadConfigFromFile(filePath) {
|
|
57
|
+
const result = await explorer.load(filePath);
|
|
58
|
+
if (!result || result.isEmpty) {
|
|
59
|
+
return configSchema.parse({});
|
|
60
|
+
}
|
|
61
|
+
const parsed = configSchema.safeParse(result.config);
|
|
62
|
+
if (!parsed.success) {
|
|
63
|
+
const errors = parsed.error.issues
|
|
64
|
+
.map((issue) => ` ${issue.path.join('.')}: ${issue.message}`)
|
|
65
|
+
.join('\n');
|
|
66
|
+
throw new Error(`Invalid configuration in ${filePath}:\n${errors}`);
|
|
67
|
+
}
|
|
68
|
+
return parsed.data;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Deep merge two objects. Source values override target values.
|
|
72
|
+
*/
|
|
73
|
+
function deepMerge(target, source) {
|
|
74
|
+
const result = { ...target };
|
|
75
|
+
for (const key of Object.keys(source)) {
|
|
76
|
+
const sourceVal = source[key];
|
|
77
|
+
const targetVal = result[key];
|
|
78
|
+
if (isPlainObject(sourceVal) &&
|
|
79
|
+
isPlainObject(targetVal)) {
|
|
80
|
+
result[key] = deepMerge(targetVal, sourceVal);
|
|
81
|
+
}
|
|
82
|
+
else if (sourceVal !== undefined) {
|
|
83
|
+
result[key] = sourceVal;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
function isPlainObject(value) {
|
|
89
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Schema
|
|
3
|
+
*
|
|
4
|
+
* Zod schema for validating configuration files.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export declare const crawlSchema: z.ZodObject<{
|
|
8
|
+
maxPages: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
maxDepth: z.ZodDefault<z.ZodNumber>;
|
|
10
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
respectRobotsTxt: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
+
}, "strict", z.ZodTypeAny, {
|
|
13
|
+
timeout: number;
|
|
14
|
+
maxPages: number;
|
|
15
|
+
maxDepth: number;
|
|
16
|
+
respectRobotsTxt: boolean;
|
|
17
|
+
}, {
|
|
18
|
+
timeout?: number | undefined;
|
|
19
|
+
maxPages?: number | undefined;
|
|
20
|
+
maxDepth?: number | undefined;
|
|
21
|
+
respectRobotsTxt?: boolean | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const ruleOverrideSchema: z.ZodObject<{
|
|
24
|
+
severity: z.ZodOptional<z.ZodEnum<["critical", "warning", "info"]>>;
|
|
25
|
+
maxScore: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
28
|
+
maxScore?: number | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
31
|
+
maxScore?: number | undefined;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const rulesSchema: z.ZodObject<{
|
|
34
|
+
disabled: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
35
|
+
overrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
36
|
+
severity: z.ZodOptional<z.ZodEnum<["critical", "warning", "info"]>>;
|
|
37
|
+
maxScore: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
40
|
+
maxScore?: number | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
43
|
+
maxScore?: number | undefined;
|
|
44
|
+
}>>>;
|
|
45
|
+
}, "strict", z.ZodTypeAny, {
|
|
46
|
+
disabled: string[];
|
|
47
|
+
overrides: Record<string, {
|
|
48
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
49
|
+
maxScore?: number | undefined;
|
|
50
|
+
}>;
|
|
51
|
+
}, {
|
|
52
|
+
disabled?: string[] | undefined;
|
|
53
|
+
overrides?: Record<string, {
|
|
54
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
55
|
+
maxScore?: number | undefined;
|
|
56
|
+
}> | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
export declare const scoringWeightsSchema: z.ZodObject<{
|
|
59
|
+
implementation: z.ZodDefault<z.ZodNumber>;
|
|
60
|
+
coverage: z.ZodDefault<z.ZodNumber>;
|
|
61
|
+
security: z.ZodDefault<z.ZodNumber>;
|
|
62
|
+
bestPractices: z.ZodDefault<z.ZodNumber>;
|
|
63
|
+
promptHandling: z.ZodDefault<z.ZodNumber>;
|
|
64
|
+
}, "strict", z.ZodTypeAny, {
|
|
65
|
+
implementation: number;
|
|
66
|
+
security: number;
|
|
67
|
+
coverage: number;
|
|
68
|
+
bestPractices: number;
|
|
69
|
+
promptHandling: number;
|
|
70
|
+
}, {
|
|
71
|
+
implementation?: number | undefined;
|
|
72
|
+
security?: number | undefined;
|
|
73
|
+
coverage?: number | undefined;
|
|
74
|
+
bestPractices?: number | undefined;
|
|
75
|
+
promptHandling?: number | undefined;
|
|
76
|
+
}>;
|
|
77
|
+
export declare const scoringSchema: z.ZodObject<{
|
|
78
|
+
weights: z.ZodDefault<z.ZodObject<{
|
|
79
|
+
implementation: z.ZodDefault<z.ZodNumber>;
|
|
80
|
+
coverage: z.ZodDefault<z.ZodNumber>;
|
|
81
|
+
security: z.ZodDefault<z.ZodNumber>;
|
|
82
|
+
bestPractices: z.ZodDefault<z.ZodNumber>;
|
|
83
|
+
promptHandling: z.ZodDefault<z.ZodNumber>;
|
|
84
|
+
}, "strict", z.ZodTypeAny, {
|
|
85
|
+
implementation: number;
|
|
86
|
+
security: number;
|
|
87
|
+
coverage: number;
|
|
88
|
+
bestPractices: number;
|
|
89
|
+
promptHandling: number;
|
|
90
|
+
}, {
|
|
91
|
+
implementation?: number | undefined;
|
|
92
|
+
security?: number | undefined;
|
|
93
|
+
coverage?: number | undefined;
|
|
94
|
+
bestPractices?: number | undefined;
|
|
95
|
+
promptHandling?: number | undefined;
|
|
96
|
+
}>>;
|
|
97
|
+
}, "strict", z.ZodTypeAny, {
|
|
98
|
+
weights: {
|
|
99
|
+
implementation: number;
|
|
100
|
+
security: number;
|
|
101
|
+
coverage: number;
|
|
102
|
+
bestPractices: number;
|
|
103
|
+
promptHandling: number;
|
|
104
|
+
};
|
|
105
|
+
}, {
|
|
106
|
+
weights?: {
|
|
107
|
+
implementation?: number | undefined;
|
|
108
|
+
security?: number | undefined;
|
|
109
|
+
coverage?: number | undefined;
|
|
110
|
+
bestPractices?: number | undefined;
|
|
111
|
+
promptHandling?: number | undefined;
|
|
112
|
+
} | undefined;
|
|
113
|
+
}>;
|
|
114
|
+
export declare const outputSchema: z.ZodObject<{
|
|
115
|
+
directory: z.ZodDefault<z.ZodString>;
|
|
116
|
+
formats: z.ZodDefault<z.ZodArray<z.ZodEnum<["html", "json", "markdown"]>, "many">>;
|
|
117
|
+
includeScreenshots: z.ZodDefault<z.ZodBoolean>;
|
|
118
|
+
}, "strict", z.ZodTypeAny, {
|
|
119
|
+
directory: string;
|
|
120
|
+
formats: ("html" | "json" | "markdown")[];
|
|
121
|
+
includeScreenshots: boolean;
|
|
122
|
+
}, {
|
|
123
|
+
directory?: string | undefined;
|
|
124
|
+
formats?: ("html" | "json" | "markdown")[] | undefined;
|
|
125
|
+
includeScreenshots?: boolean | undefined;
|
|
126
|
+
}>;
|
|
127
|
+
export declare const configSchema: z.ZodObject<{
|
|
128
|
+
crawl: z.ZodDefault<z.ZodObject<{
|
|
129
|
+
maxPages: z.ZodDefault<z.ZodNumber>;
|
|
130
|
+
maxDepth: z.ZodDefault<z.ZodNumber>;
|
|
131
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
132
|
+
respectRobotsTxt: z.ZodDefault<z.ZodBoolean>;
|
|
133
|
+
}, "strict", z.ZodTypeAny, {
|
|
134
|
+
timeout: number;
|
|
135
|
+
maxPages: number;
|
|
136
|
+
maxDepth: number;
|
|
137
|
+
respectRobotsTxt: boolean;
|
|
138
|
+
}, {
|
|
139
|
+
timeout?: number | undefined;
|
|
140
|
+
maxPages?: number | undefined;
|
|
141
|
+
maxDepth?: number | undefined;
|
|
142
|
+
respectRobotsTxt?: boolean | undefined;
|
|
143
|
+
}>>;
|
|
144
|
+
rules: z.ZodDefault<z.ZodObject<{
|
|
145
|
+
disabled: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
146
|
+
overrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
147
|
+
severity: z.ZodOptional<z.ZodEnum<["critical", "warning", "info"]>>;
|
|
148
|
+
maxScore: z.ZodOptional<z.ZodNumber>;
|
|
149
|
+
}, "strip", z.ZodTypeAny, {
|
|
150
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
151
|
+
maxScore?: number | undefined;
|
|
152
|
+
}, {
|
|
153
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
154
|
+
maxScore?: number | undefined;
|
|
155
|
+
}>>>;
|
|
156
|
+
}, "strict", z.ZodTypeAny, {
|
|
157
|
+
disabled: string[];
|
|
158
|
+
overrides: Record<string, {
|
|
159
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
160
|
+
maxScore?: number | undefined;
|
|
161
|
+
}>;
|
|
162
|
+
}, {
|
|
163
|
+
disabled?: string[] | undefined;
|
|
164
|
+
overrides?: Record<string, {
|
|
165
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
166
|
+
maxScore?: number | undefined;
|
|
167
|
+
}> | undefined;
|
|
168
|
+
}>>;
|
|
169
|
+
scoring: z.ZodDefault<z.ZodObject<{
|
|
170
|
+
weights: z.ZodDefault<z.ZodObject<{
|
|
171
|
+
implementation: z.ZodDefault<z.ZodNumber>;
|
|
172
|
+
coverage: z.ZodDefault<z.ZodNumber>;
|
|
173
|
+
security: z.ZodDefault<z.ZodNumber>;
|
|
174
|
+
bestPractices: z.ZodDefault<z.ZodNumber>;
|
|
175
|
+
promptHandling: z.ZodDefault<z.ZodNumber>;
|
|
176
|
+
}, "strict", z.ZodTypeAny, {
|
|
177
|
+
implementation: number;
|
|
178
|
+
security: number;
|
|
179
|
+
coverage: number;
|
|
180
|
+
bestPractices: number;
|
|
181
|
+
promptHandling: number;
|
|
182
|
+
}, {
|
|
183
|
+
implementation?: number | undefined;
|
|
184
|
+
security?: number | undefined;
|
|
185
|
+
coverage?: number | undefined;
|
|
186
|
+
bestPractices?: number | undefined;
|
|
187
|
+
promptHandling?: number | undefined;
|
|
188
|
+
}>>;
|
|
189
|
+
}, "strict", z.ZodTypeAny, {
|
|
190
|
+
weights: {
|
|
191
|
+
implementation: number;
|
|
192
|
+
security: number;
|
|
193
|
+
coverage: number;
|
|
194
|
+
bestPractices: number;
|
|
195
|
+
promptHandling: number;
|
|
196
|
+
};
|
|
197
|
+
}, {
|
|
198
|
+
weights?: {
|
|
199
|
+
implementation?: number | undefined;
|
|
200
|
+
security?: number | undefined;
|
|
201
|
+
coverage?: number | undefined;
|
|
202
|
+
bestPractices?: number | undefined;
|
|
203
|
+
promptHandling?: number | undefined;
|
|
204
|
+
} | undefined;
|
|
205
|
+
}>>;
|
|
206
|
+
output: z.ZodDefault<z.ZodObject<{
|
|
207
|
+
directory: z.ZodDefault<z.ZodString>;
|
|
208
|
+
formats: z.ZodDefault<z.ZodArray<z.ZodEnum<["html", "json", "markdown"]>, "many">>;
|
|
209
|
+
includeScreenshots: z.ZodDefault<z.ZodBoolean>;
|
|
210
|
+
}, "strict", z.ZodTypeAny, {
|
|
211
|
+
directory: string;
|
|
212
|
+
formats: ("html" | "json" | "markdown")[];
|
|
213
|
+
includeScreenshots: boolean;
|
|
214
|
+
}, {
|
|
215
|
+
directory?: string | undefined;
|
|
216
|
+
formats?: ("html" | "json" | "markdown")[] | undefined;
|
|
217
|
+
includeScreenshots?: boolean | undefined;
|
|
218
|
+
}>>;
|
|
219
|
+
}, "strict", z.ZodTypeAny, {
|
|
220
|
+
scoring: {
|
|
221
|
+
weights: {
|
|
222
|
+
implementation: number;
|
|
223
|
+
security: number;
|
|
224
|
+
coverage: number;
|
|
225
|
+
bestPractices: number;
|
|
226
|
+
promptHandling: number;
|
|
227
|
+
};
|
|
228
|
+
};
|
|
229
|
+
output: {
|
|
230
|
+
directory: string;
|
|
231
|
+
formats: ("html" | "json" | "markdown")[];
|
|
232
|
+
includeScreenshots: boolean;
|
|
233
|
+
};
|
|
234
|
+
crawl: {
|
|
235
|
+
timeout: number;
|
|
236
|
+
maxPages: number;
|
|
237
|
+
maxDepth: number;
|
|
238
|
+
respectRobotsTxt: boolean;
|
|
239
|
+
};
|
|
240
|
+
rules: {
|
|
241
|
+
disabled: string[];
|
|
242
|
+
overrides: Record<string, {
|
|
243
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
244
|
+
maxScore?: number | undefined;
|
|
245
|
+
}>;
|
|
246
|
+
};
|
|
247
|
+
}, {
|
|
248
|
+
scoring?: {
|
|
249
|
+
weights?: {
|
|
250
|
+
implementation?: number | undefined;
|
|
251
|
+
security?: number | undefined;
|
|
252
|
+
coverage?: number | undefined;
|
|
253
|
+
bestPractices?: number | undefined;
|
|
254
|
+
promptHandling?: number | undefined;
|
|
255
|
+
} | undefined;
|
|
256
|
+
} | undefined;
|
|
257
|
+
output?: {
|
|
258
|
+
directory?: string | undefined;
|
|
259
|
+
formats?: ("html" | "json" | "markdown")[] | undefined;
|
|
260
|
+
includeScreenshots?: boolean | undefined;
|
|
261
|
+
} | undefined;
|
|
262
|
+
crawl?: {
|
|
263
|
+
timeout?: number | undefined;
|
|
264
|
+
maxPages?: number | undefined;
|
|
265
|
+
maxDepth?: number | undefined;
|
|
266
|
+
respectRobotsTxt?: boolean | undefined;
|
|
267
|
+
} | undefined;
|
|
268
|
+
rules?: {
|
|
269
|
+
disabled?: string[] | undefined;
|
|
270
|
+
overrides?: Record<string, {
|
|
271
|
+
severity?: "critical" | "warning" | "info" | undefined;
|
|
272
|
+
maxScore?: number | undefined;
|
|
273
|
+
}> | undefined;
|
|
274
|
+
} | undefined;
|
|
275
|
+
}>;
|
|
276
|
+
export type Config = z.infer<typeof configSchema>;
|
|
277
|
+
export type CrawlConfig = z.infer<typeof crawlSchema>;
|
|
278
|
+
export type RulesConfig = z.infer<typeof rulesSchema>;
|
|
279
|
+
export type ScoringConfig = z.infer<typeof scoringSchema>;
|
|
280
|
+
export type OutputConfig = z.infer<typeof outputSchema>;
|