botvisibility 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.
- package/.claude-flow/data/pending-insights.jsonl +2 -0
- package/.next/trace +1 -0
- package/.next/trace-build +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +362 -0
- package/dist/index.js.map +1 -0
- package/dist/repo-scanner.d.ts +21 -0
- package/dist/repo-scanner.d.ts.map +1 -0
- package/dist/repo-scanner.js +690 -0
- package/dist/repo-scanner.js.map +1 -0
- package/dist/scanner.d.ts +48 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +868 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scoring.d.ts +32 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +100 -0
- package/dist/scoring.js.map +1 -0
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +39 -0
- package/src/index.ts +402 -0
- package/src/repo-scanner.ts +718 -0
- package/src/scanner.ts +918 -0
- package/src/scoring.ts +105 -0
- package/src/types.ts +61 -0
- package/tsconfig.json +19 -0
package/.next/trace
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"name":"generate-buildid","duration":71,"timestamp":199541658392,"id":4,"parentId":1,"tags":{},"startTime":1773816019614,"traceId":"260b839151d64215"},{"name":"load-custom-routes","duration":107,"timestamp":199541658494,"id":5,"parentId":1,"tags":{},"startTime":1773816019614,"traceId":"260b839151d64215"},{"name":"create-dist-dir","duration":132,"timestamp":199541658609,"id":6,"parentId":1,"tags":{},"startTime":1773816019614,"traceId":"260b839151d64215"},{"name":"clean","duration":82,"timestamp":199541658966,"id":7,"parentId":1,"tags":{},"startTime":1773816019614,"traceId":"260b839151d64215"},{"name":"next-build","duration":314254,"timestamp":199541346562,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack"},"startTime":1773816019302,"traceId":"260b839151d64215"}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"name":"next-build","duration":314254,"timestamp":199541346562,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack"},"startTime":1773816019302,"traceId":"260b839151d64215"}]
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const scanner_js_1 = require("./scanner.js");
|
|
38
|
+
const repo_scanner_js_1 = require("./repo-scanner.js");
|
|
39
|
+
const scoring_js_1 = require("./scoring.js");
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const readline = __importStar(require("readline"));
|
|
42
|
+
// ANSI colors
|
|
43
|
+
const colors = {
|
|
44
|
+
reset: '\x1b[0m',
|
|
45
|
+
bold: '\x1b[1m',
|
|
46
|
+
dim: '\x1b[2m',
|
|
47
|
+
red: '\x1b[31m',
|
|
48
|
+
green: '\x1b[32m',
|
|
49
|
+
yellow: '\x1b[33m',
|
|
50
|
+
blue: '\x1b[34m',
|
|
51
|
+
magenta: '\x1b[35m',
|
|
52
|
+
cyan: '\x1b[36m',
|
|
53
|
+
white: '\x1b[37m',
|
|
54
|
+
};
|
|
55
|
+
function getLevelColor(levelNumber) {
|
|
56
|
+
switch (levelNumber) {
|
|
57
|
+
case 1: return colors.red;
|
|
58
|
+
case 2: return colors.yellow;
|
|
59
|
+
case 3: return colors.green;
|
|
60
|
+
case 4: return colors.blue;
|
|
61
|
+
default: return colors.white;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function printHelp() {
|
|
65
|
+
console.log(`
|
|
66
|
+
${colors.bold}BotVisibility CLI${colors.reset}
|
|
67
|
+
The Speedtest.net for AI agents. Scan any URL to check bot visibility.
|
|
68
|
+
|
|
69
|
+
${colors.bold}USAGE${colors.reset}
|
|
70
|
+
npx botvisibility <url> [options]
|
|
71
|
+
|
|
72
|
+
${colors.bold}OPTIONS${colors.reset}
|
|
73
|
+
--json Output results as JSON (for CI/CD integration)
|
|
74
|
+
--repo <path> Include local repo analysis for deeper checks (unlocks Level 4)
|
|
75
|
+
--help, -h Show this help message
|
|
76
|
+
|
|
77
|
+
${colors.bold}EXAMPLES${colors.reset}
|
|
78
|
+
${colors.dim}# Basic URL scan${colors.reset}
|
|
79
|
+
npx botvisibility https://example.com
|
|
80
|
+
|
|
81
|
+
${colors.dim}# JSON output for CI/CD${colors.reset}
|
|
82
|
+
npx botvisibility stripe.com --json
|
|
83
|
+
|
|
84
|
+
${colors.dim}# Full scan with repo analysis (unlocks Level 4)${colors.reset}
|
|
85
|
+
npx botvisibility https://myapp.com --repo ./
|
|
86
|
+
|
|
87
|
+
${colors.dim}# Combined scan with JSON output${colors.reset}
|
|
88
|
+
npx botvisibility clone.fyi --repo ../my-backend --json
|
|
89
|
+
|
|
90
|
+
${colors.bold}LEVELS${colors.reset}
|
|
91
|
+
${colors.red}Level 1: Discoverable${colors.reset} Bots can find you via machine-readable metadata (6 checks)
|
|
92
|
+
${colors.yellow}Level 2: Usable${colors.reset} Your API works for agents (9 checks, most require OpenAPI)
|
|
93
|
+
${colors.green}Level 3: Optimized${colors.reset} Your API minimizes token cost and handles scale (6 checks)
|
|
94
|
+
${colors.blue}Level 4: Agent-Native${colors.reset} Your platform treats AI agents as first-class users (7 checks, --repo required)
|
|
95
|
+
|
|
96
|
+
${colors.bold}LEARN MORE${colors.reset}
|
|
97
|
+
https://botvisibility.com
|
|
98
|
+
https://github.com/jjanisheck/botvisibility
|
|
99
|
+
`);
|
|
100
|
+
}
|
|
101
|
+
function statusIcon(status) {
|
|
102
|
+
switch (status) {
|
|
103
|
+
case 'pass': return `${colors.green}+${colors.reset}`;
|
|
104
|
+
case 'fail': return `${colors.red}x${colors.reset}`;
|
|
105
|
+
case 'partial': return `${colors.yellow}~${colors.reset}`;
|
|
106
|
+
case 'na': return `${colors.dim}-${colors.reset}`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function printLevelSection(levelNumber, levelName, checks, hasRepo) {
|
|
110
|
+
const levelColor = getLevelColor(levelNumber);
|
|
111
|
+
const applicable = checks.filter(c => c.status !== 'na');
|
|
112
|
+
const passed = checks.filter(c => c.status === 'pass').length;
|
|
113
|
+
const naCount = checks.filter(c => c.status === 'na').length;
|
|
114
|
+
// Level 4 header when no --repo
|
|
115
|
+
if (levelNumber === 4 && !hasRepo) {
|
|
116
|
+
console.log('');
|
|
117
|
+
console.log(`${levelColor}${colors.bold}LEVEL ${levelNumber}: ${levelName.toUpperCase()}${colors.reset} ${colors.dim}(--repo required)${colors.reset}`);
|
|
118
|
+
console.log(`${colors.dim}${'─'.repeat(55)}${colors.reset}`);
|
|
119
|
+
console.log(` ${colors.dim}Run with --repo <path> to unlock Level 4 checks${colors.reset}`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log(`${levelColor}${colors.bold}LEVEL ${levelNumber}: ${levelName.toUpperCase()}${colors.reset}${' '.repeat(Math.max(0, 40 - levelName.length - 10))}${colors.bold}${passed}/${applicable.length}${colors.reset}`);
|
|
124
|
+
console.log(`${colors.dim}${'─'.repeat(55)}${colors.reset}`);
|
|
125
|
+
// Print non-NA checks
|
|
126
|
+
for (const check of checks) {
|
|
127
|
+
if (check.status === 'na')
|
|
128
|
+
continue;
|
|
129
|
+
const icon = statusIcon(check.status);
|
|
130
|
+
console.log(` ${icon} ${colors.bold}${check.name}${colors.reset}`);
|
|
131
|
+
console.log(` ${colors.dim}${check.message}${colors.reset}`);
|
|
132
|
+
if (check.details) {
|
|
133
|
+
console.log(` ${colors.dim}${check.details}${colors.reset}`);
|
|
134
|
+
}
|
|
135
|
+
if (check.recommendation && check.status !== 'pass') {
|
|
136
|
+
console.log(` ${colors.yellow}-> ${check.recommendation}${colors.reset}`);
|
|
137
|
+
}
|
|
138
|
+
if ('filePath' in check && check.filePath) {
|
|
139
|
+
console.log(` ${colors.dim}File: ${check.filePath}${colors.reset}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Collapsed NA count
|
|
143
|
+
if (naCount > 0) {
|
|
144
|
+
console.log(` ${colors.dim}- ${naCount} check${naCount === 1 ? '' : 's'} require${naCount === 1 ? 's' : ''} an OpenAPI spec to evaluate${colors.reset}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function printResults(result, repoChecks) {
|
|
148
|
+
const allChecks = [...result.checks, ...(repoChecks || [])];
|
|
149
|
+
const levelProgress = (0, scoring_js_1.calculateLevelProgress)(allChecks);
|
|
150
|
+
const currentLevel = (0, scoring_js_1.getCurrentLevel)(levelProgress);
|
|
151
|
+
const totalPassed = allChecks.filter(c => c.status === 'pass').length;
|
|
152
|
+
const totalApplicable = allChecks.filter(c => c.status !== 'na').length;
|
|
153
|
+
// Find the "current working level" — first incomplete
|
|
154
|
+
const workingLevel = levelProgress.find(lp => !lp.complete) || levelProgress[levelProgress.length - 1];
|
|
155
|
+
const workingLevelColor = getLevelColor(workingLevel.level.number);
|
|
156
|
+
console.log('');
|
|
157
|
+
console.log(`${colors.bold}+-------------------------------------------------------+${colors.reset}`);
|
|
158
|
+
console.log(`${colors.bold}| BOTVISIBILITY SCAN RESULTS |${colors.reset}`);
|
|
159
|
+
console.log(`${colors.bold}+-------------------------------------------------------+${colors.reset}`);
|
|
160
|
+
console.log('');
|
|
161
|
+
console.log(` ${colors.dim}URL:${colors.reset} ${result.url}`);
|
|
162
|
+
console.log(` ${colors.dim}Scanned:${colors.reset} ${new Date(result.timestamp).toLocaleString()}`);
|
|
163
|
+
console.log('');
|
|
164
|
+
// Score box
|
|
165
|
+
console.log(` ${colors.bold}+-------------------------------------+${colors.reset}`);
|
|
166
|
+
console.log(` ${colors.bold}|${colors.reset} ${workingLevelColor}${colors.bold}Level ${workingLevel.level.number}: ${workingLevel.level.name}${colors.reset}${' '.repeat(Math.max(0, 24 - workingLevel.level.name.length))}${colors.bold}|${colors.reset}`);
|
|
167
|
+
console.log(` ${colors.bold}|${colors.reset} ${colors.bold}${totalPassed}${colors.reset}${colors.dim}/${totalApplicable}${colors.reset} checks passed${' '.repeat(14)}${colors.bold}|${colors.reset}`);
|
|
168
|
+
console.log(` ${colors.bold}+-------------------------------------+${colors.reset}`);
|
|
169
|
+
console.log('');
|
|
170
|
+
if (currentLevel === 0) {
|
|
171
|
+
console.log(` ${colors.dim}Start by making your site discoverable to AI agents.${colors.reset}`);
|
|
172
|
+
}
|
|
173
|
+
else if (currentLevel < 4) {
|
|
174
|
+
const nextLevel = scoring_js_1.LEVELS[currentLevel]; // 0-indexed: currentLevel is the next one
|
|
175
|
+
console.log(` ${colors.dim}Level ${currentLevel} complete! Work on Level ${nextLevel.number}: ${nextLevel.name}.${colors.reset}`);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
console.log(` ${colors.green}All levels complete! Maximum agent visibility achieved.${colors.reset}`);
|
|
179
|
+
}
|
|
180
|
+
// Group checks by level
|
|
181
|
+
const hasRepo = !!repoChecks && repoChecks.length > 0;
|
|
182
|
+
for (const level of scoring_js_1.LEVELS) {
|
|
183
|
+
const levelChecks = allChecks.filter(c => c.level === level.number);
|
|
184
|
+
if (level.number === 4 && !hasRepo) {
|
|
185
|
+
printLevelSection(level.number, level.name, [], false);
|
|
186
|
+
}
|
|
187
|
+
else if (levelChecks.length > 0) {
|
|
188
|
+
printLevelSection(level.number, level.name, levelChecks, hasRepo);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Summary
|
|
192
|
+
console.log('');
|
|
193
|
+
console.log(`${colors.bold}${'='.repeat(55)}${colors.reset}`);
|
|
194
|
+
const totalPartial = allChecks.filter(c => c.status === 'partial').length;
|
|
195
|
+
const totalFailed = allChecks.filter(c => c.status === 'fail').length;
|
|
196
|
+
const totalNa = allChecks.filter(c => c.status === 'na').length;
|
|
197
|
+
console.log(` ${colors.green}+ ${totalPassed} passed${colors.reset} ${colors.yellow}~ ${totalPartial} partial${colors.reset} ${colors.red}x ${totalFailed} failed${colors.reset} ${colors.dim}- ${totalNa} n/a${colors.reset}`);
|
|
198
|
+
console.log('');
|
|
199
|
+
console.log(` ${colors.dim}Full checklist: https://botvisibility.com${colors.reset}`);
|
|
200
|
+
console.log('');
|
|
201
|
+
}
|
|
202
|
+
// Ask user a yes/no question
|
|
203
|
+
function askQuestion(question) {
|
|
204
|
+
return new Promise((resolve) => {
|
|
205
|
+
const rl = readline.createInterface({
|
|
206
|
+
input: process.stdin,
|
|
207
|
+
output: process.stdout
|
|
208
|
+
});
|
|
209
|
+
rl.question(question, (answer) => {
|
|
210
|
+
rl.close();
|
|
211
|
+
const normalized = answer.toLowerCase().trim();
|
|
212
|
+
resolve(normalized === 'y' || normalized === 'yes');
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
function generatePublishPayload(result, repoChecks) {
|
|
217
|
+
const url = new URL(result.url);
|
|
218
|
+
const domain = url.hostname.replace(/^www\./, '');
|
|
219
|
+
return {
|
|
220
|
+
domain,
|
|
221
|
+
scannedAt: result.timestamp,
|
|
222
|
+
currentLevel: result.currentLevel,
|
|
223
|
+
checks: result.checks.map(c => ({
|
|
224
|
+
id: c.id,
|
|
225
|
+
name: c.name,
|
|
226
|
+
passed: c.passed,
|
|
227
|
+
status: c.status,
|
|
228
|
+
level: c.level
|
|
229
|
+
})),
|
|
230
|
+
repoChecks: repoChecks?.map(c => ({
|
|
231
|
+
id: c.id,
|
|
232
|
+
name: c.name,
|
|
233
|
+
passed: c.passed,
|
|
234
|
+
status: c.status,
|
|
235
|
+
level: c.level
|
|
236
|
+
}))
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
async function promptPublish(result, repoChecks) {
|
|
240
|
+
console.log('');
|
|
241
|
+
console.log(`${colors.bold}Share Your Score${colors.reset}`);
|
|
242
|
+
console.log(`${colors.dim}${'─'.repeat(55)}${colors.reset}`);
|
|
243
|
+
console.log('');
|
|
244
|
+
const shouldPublish = await askQuestion(` Would you like to publish this score to ${colors.cyan}botvisibility.com${colors.reset}? (y/n) `);
|
|
245
|
+
if (shouldPublish) {
|
|
246
|
+
const payload = generatePublishPayload(result, repoChecks);
|
|
247
|
+
const domain = payload.domain;
|
|
248
|
+
const profileUrl = `https://botvisibility.com/site/${domain}`;
|
|
249
|
+
console.log('');
|
|
250
|
+
console.log(` ${colors.green}+${colors.reset} Score ready to publish!`);
|
|
251
|
+
console.log('');
|
|
252
|
+
console.log(` ${colors.bold}Your public profile will be available at:${colors.reset}`);
|
|
253
|
+
console.log(` ${colors.cyan}${profileUrl}${colors.reset}`);
|
|
254
|
+
console.log('');
|
|
255
|
+
console.log(` ${colors.dim}This page will show:${colors.reset}`);
|
|
256
|
+
console.log(` - Level ${payload.currentLevel} badge`);
|
|
257
|
+
console.log(` - Check results and recommendations`);
|
|
258
|
+
console.log(` - Score history over time`);
|
|
259
|
+
console.log('');
|
|
260
|
+
console.log(` ${colors.dim}Payload preview:${colors.reset}`);
|
|
261
|
+
console.log(` ${colors.dim}${JSON.stringify({
|
|
262
|
+
domain: payload.domain,
|
|
263
|
+
currentLevel: payload.currentLevel,
|
|
264
|
+
checks: `${payload.checks.length} URL checks` + (payload.repoChecks ? ` + ${payload.repoChecks.length} repo checks` : '')
|
|
265
|
+
})}${colors.reset}`);
|
|
266
|
+
console.log('');
|
|
267
|
+
// TODO: When API is ready, uncomment this:
|
|
268
|
+
// try {
|
|
269
|
+
// const response = await fetch('https://botvisibility.com/api/publish', {
|
|
270
|
+
// method: 'POST',
|
|
271
|
+
// headers: { 'Content-Type': 'application/json' },
|
|
272
|
+
// body: JSON.stringify(payload)
|
|
273
|
+
// });
|
|
274
|
+
// if (response.ok) {
|
|
275
|
+
// const data = await response.json();
|
|
276
|
+
// console.log(` ${colors.green}+${colors.reset} Published! View at: ${data.profileUrl}`);
|
|
277
|
+
// }
|
|
278
|
+
// } catch (e) {
|
|
279
|
+
// console.log(` ${colors.yellow}!${colors.reset} Could not publish. Try again later.`);
|
|
280
|
+
// }
|
|
281
|
+
console.log(` ${colors.yellow}!${colors.reset} Publishing API coming soon! For now, share your results manually.`);
|
|
282
|
+
console.log('');
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
console.log('');
|
|
286
|
+
console.log(` ${colors.dim}No problem! Run with --json to export results.${colors.reset}`);
|
|
287
|
+
console.log('');
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function main() {
|
|
291
|
+
const args = process.argv.slice(2);
|
|
292
|
+
// Parse flags
|
|
293
|
+
const jsonOutput = args.includes('--json');
|
|
294
|
+
const helpFlag = args.includes('--help') || args.includes('-h');
|
|
295
|
+
const repoIndex = args.indexOf('--repo');
|
|
296
|
+
const repoPath = repoIndex !== -1 ? args[repoIndex + 1] : null;
|
|
297
|
+
// Filter out flags to get URL
|
|
298
|
+
const urlArgs = args.filter((arg, i) => !arg.startsWith('--') &&
|
|
299
|
+
!arg.startsWith('-') &&
|
|
300
|
+
(repoIndex === -1 || i !== repoIndex + 1));
|
|
301
|
+
if (helpFlag || urlArgs.length === 0) {
|
|
302
|
+
printHelp();
|
|
303
|
+
process.exit(0);
|
|
304
|
+
}
|
|
305
|
+
const urlInput = urlArgs[0];
|
|
306
|
+
// Normalize URL
|
|
307
|
+
let baseUrl;
|
|
308
|
+
try {
|
|
309
|
+
baseUrl = (0, scanner_js_1.normalizeUrl)(urlInput);
|
|
310
|
+
}
|
|
311
|
+
catch (e) {
|
|
312
|
+
console.error(`${colors.red}Error: Invalid URL "${urlInput}"${colors.reset}`);
|
|
313
|
+
process.exit(1);
|
|
314
|
+
}
|
|
315
|
+
if (!jsonOutput) {
|
|
316
|
+
console.log('');
|
|
317
|
+
console.log(`${colors.cyan}Scanning ${baseUrl}...${colors.reset}`);
|
|
318
|
+
}
|
|
319
|
+
// Run URL checks
|
|
320
|
+
const checks = await (0, scanner_js_1.runAllChecks)(baseUrl);
|
|
321
|
+
// Run repo checks if specified
|
|
322
|
+
let repoChecks;
|
|
323
|
+
if (repoPath) {
|
|
324
|
+
const absolutePath = path.resolve(repoPath);
|
|
325
|
+
if (!jsonOutput) {
|
|
326
|
+
console.log(`${colors.cyan}Scanning repo at ${absolutePath}...${colors.reset}`);
|
|
327
|
+
}
|
|
328
|
+
repoChecks = (0, repo_scanner_js_1.runRepoChecks)(absolutePath);
|
|
329
|
+
}
|
|
330
|
+
// Calculate level progress
|
|
331
|
+
const allChecks = [...checks, ...(repoChecks || [])];
|
|
332
|
+
const levelProgress = (0, scoring_js_1.calculateLevelProgress)(allChecks);
|
|
333
|
+
const currentLevel = (0, scoring_js_1.getCurrentLevel)(levelProgress);
|
|
334
|
+
const result = {
|
|
335
|
+
url: baseUrl,
|
|
336
|
+
timestamp: new Date().toISOString(),
|
|
337
|
+
currentLevel,
|
|
338
|
+
levels: levelProgress,
|
|
339
|
+
checks,
|
|
340
|
+
cliChecks: scoring_js_1.CLI_CHECKS,
|
|
341
|
+
};
|
|
342
|
+
// Output
|
|
343
|
+
if (jsonOutput) {
|
|
344
|
+
const output = {
|
|
345
|
+
...result,
|
|
346
|
+
repoChecks: repoChecks || []
|
|
347
|
+
};
|
|
348
|
+
console.log(JSON.stringify(output, null, 2));
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
printResults(result, repoChecks);
|
|
352
|
+
// Prompt to publish (only in interactive mode)
|
|
353
|
+
if (process.stdin.isTTY) {
|
|
354
|
+
await promptPublish(result, repoChecks);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
main().catch(err => {
|
|
359
|
+
console.error(`${colors.red}Error: ${err.message}${colors.reset}`);
|
|
360
|
+
process.exit(1);
|
|
361
|
+
});
|
|
362
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { RepoCheckResult } from './types.js';
|
|
2
|
+
export declare function checkOpenApiFiles(repoPath: string): RepoCheckResult;
|
|
3
|
+
export declare function checkRateLimitMiddleware(repoPath: string): RepoCheckResult;
|
|
4
|
+
export declare function checkErrorPatterns(repoPath: string): RepoCheckResult;
|
|
5
|
+
export declare function checkIdempotencyKeys(repoPath: string): RepoCheckResult;
|
|
6
|
+
export declare function checkStreamingEndpoints(repoPath: string): RepoCheckResult;
|
|
7
|
+
export declare function checkIntentEndpoints(repoPath: string): RepoCheckResult;
|
|
8
|
+
export declare function checkAgentSessions(repoPath: string): RepoCheckResult;
|
|
9
|
+
export declare function checkScopedAgentTokens(repoPath: string): RepoCheckResult;
|
|
10
|
+
export declare function checkAgentAuditLogs(repoPath: string): RepoCheckResult;
|
|
11
|
+
export declare function checkSandboxEnvironment(repoPath: string): RepoCheckResult;
|
|
12
|
+
export declare function checkConsequenceLabels(repoPath: string): RepoCheckResult;
|
|
13
|
+
export declare function checkNativeToolSchemas(repoPath: string): RepoCheckResult;
|
|
14
|
+
export declare function checkSparseFieldsCode(repoPath: string): RepoCheckResult;
|
|
15
|
+
export declare function checkCursorPaginationCode(repoPath: string): RepoCheckResult;
|
|
16
|
+
export declare function checkSearchFilteringCode(repoPath: string): RepoCheckResult;
|
|
17
|
+
export declare function checkBulkOpsCode(repoPath: string): RepoCheckResult;
|
|
18
|
+
export declare function checkCachingHeadersCode(repoPath: string): RepoCheckResult;
|
|
19
|
+
export declare function checkMcpToolQualityCode(repoPath: string): RepoCheckResult;
|
|
20
|
+
export declare function runRepoChecks(repoPath: string): RepoCheckResult[];
|
|
21
|
+
//# sourceMappingURL=repo-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-scanner.d.ts","sourceRoot":"","sources":["../src/repo-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyD7C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAiBnE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAqB1E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA2BpE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAqBtE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAqBzE;AAID,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAkCtE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAgCpE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAgCxE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA8BrE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAkCzE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA+BxE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA2CxE;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAuCvE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAsC3E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAqC1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAkClE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAuCzE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAyDzE;AAID,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CA+BjE"}
|