gravito-eval 0.1.0 → 0.2.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/README.md +161 -65
- package/dist/cli/index.d.ts +8 -6
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +485 -83
- package/dist/cli/index.js.map +1 -1
- package/package.json +10 -10
package/README.md
CHANGED
|
@@ -1,136 +1,232 @@
|
|
|
1
1
|
# Gravito Eval
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Scan any website in seconds. See what's wrong, what's missing, and what a human reviewer would miss.
|
|
4
4
|
|
|
5
|
-
```bash
|
|
6
|
-
npx gravito-eval run ./examples/basic
|
|
7
5
|
```
|
|
8
|
-
|
|
6
|
+
npx gravito-eval scan https://stripe.com
|
|
9
7
|
```
|
|
10
|
-
Gravito Eval Results
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
Precision: 50%
|
|
14
|
-
F1: 60%
|
|
9
|
+
---
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
Novel Signal: 67% (validated)
|
|
11
|
+
## What You Get
|
|
18
12
|
|
|
19
|
-
Interpretation:
|
|
20
|
-
- Strong alignment with human judgment
|
|
21
|
-
- AI found significant issues humans missed
|
|
22
13
|
```
|
|
14
|
+
Gravito Eval Results
|
|
15
|
+
──────────────────────────────────────────────────
|
|
23
16
|
|
|
24
|
-
|
|
17
|
+
Score: 72/100 C Grade
|
|
18
|
+
Site: https://stripe.com
|
|
19
|
+
|
|
20
|
+
████████████████████░░░░░░░░░░ 72%
|
|
21
|
+
|
|
22
|
+
vs Fintech & Financial Services: top 34% (avg: 58)
|
|
23
|
+
|
|
24
|
+
Key Issues
|
|
25
|
+
──────────────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
HIGH Unsubstantiated Claim
|
|
28
|
+
→ "Trusted by millions of businesses" — no source, no verification
|
|
29
|
+
Fix: Add a verifiable source or rephrase as a qualified statement
|
|
30
|
+
|
|
31
|
+
MEDIUM Banned Vocabulary
|
|
32
|
+
→ "cutting edge" — vague superlative
|
|
33
|
+
Fix: Replace with specific, measurable language
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
MEDIUM Missing Disclaimers
|
|
36
|
+
→ No disclaimers detected for financial service claims
|
|
37
|
+
Fix: Review content for missing disclaimers
|
|
27
38
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
Additional Insights Gravito Found
|
|
40
|
+
──────────────────────────────────────────────────
|
|
41
|
+
◆ Overclaiming
|
|
42
|
+
◆ Missing Citations
|
|
43
|
+
◆ Unapproved Claims
|
|
31
44
|
|
|
32
|
-
|
|
45
|
+
──────────────────────────────────────────────────
|
|
46
|
+
Share: https://gravito.ai/try/report/a1b2c3d4
|
|
47
|
+
|
|
48
|
+
Analyzed in 8.2s · Gravito Engine · 10 issues found
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Every scan produces a shareable link.
|
|
33
52
|
|
|
34
53
|
---
|
|
35
54
|
|
|
36
|
-
##
|
|
55
|
+
## Try It
|
|
37
56
|
|
|
38
57
|
```bash
|
|
39
|
-
|
|
58
|
+
npx gravito-eval scan https://stripe.com
|
|
59
|
+
npx gravito-eval scan https://openai.com
|
|
60
|
+
npx gravito-eval scan https://your-site.com
|
|
40
61
|
```
|
|
41
62
|
|
|
42
|
-
|
|
63
|
+
No install. No API keys. No setup.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Demo Mode
|
|
68
|
+
|
|
69
|
+
See a walkthrough with explanations:
|
|
43
70
|
|
|
44
71
|
```bash
|
|
45
|
-
npx gravito-eval
|
|
72
|
+
npx gravito-eval demo
|
|
46
73
|
```
|
|
47
74
|
|
|
48
75
|
---
|
|
49
76
|
|
|
50
|
-
##
|
|
77
|
+
## What This Does
|
|
78
|
+
|
|
79
|
+
Gravito Eval analyzes a real website and shows:
|
|
80
|
+
|
|
81
|
+
- How closely it matches human-quality governance judgment
|
|
82
|
+
- Where the gaps are (unsubstantiated claims, missing disclaimers, banned vocabulary)
|
|
83
|
+
- What improvements a human reviewer would miss
|
|
84
|
+
|
|
85
|
+
It runs the same engine that powers [Gravito](https://gravito.ai) — a governance layer for AI outputs and digital surfaces.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Why This Is Different
|
|
90
|
+
|
|
91
|
+
Most tools tell you **what** is wrong.
|
|
92
|
+
|
|
93
|
+
Gravito Eval tells you:
|
|
94
|
+
|
|
95
|
+
- **How aligned** your content is with governance best practices
|
|
96
|
+
- **Where it disagrees** with what a human reviewer would flag
|
|
97
|
+
- **Whether those disagreements are valuable** — sometimes the AI catches things humans miss
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Use Cases
|
|
102
|
+
|
|
103
|
+
| Use Case | What You Get |
|
|
104
|
+
|---|---|
|
|
105
|
+
| **Scan your landing page** | Governance score, issues, fixes, industry benchmark |
|
|
106
|
+
| **Evaluate LLM outputs** | Alignment metrics, novel signal detection |
|
|
107
|
+
| **Compare prompts** | Run the same content through different prompts, compare scores |
|
|
108
|
+
| **QA AI features** | Check if your AI-generated content meets governance standards |
|
|
109
|
+
| **Audit competitor pages** | See how your site compares to competitors in your industry |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Local Evaluation Mode
|
|
114
|
+
|
|
115
|
+
Already have findings from your own AI system? Compare them against a human baseline:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx gravito-eval run ./my-findings.json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Input format:
|
|
51
122
|
|
|
52
123
|
```json
|
|
53
124
|
{
|
|
54
125
|
"aiFindings": [
|
|
55
|
-
{
|
|
126
|
+
{
|
|
127
|
+
"id": "ai-1",
|
|
128
|
+
"description": "Hero section uses unsubstantiated claim",
|
|
129
|
+
"category": "trust",
|
|
130
|
+
"severity": "high"
|
|
131
|
+
}
|
|
56
132
|
],
|
|
57
133
|
"humanFindings": [
|
|
58
|
-
{
|
|
134
|
+
{
|
|
135
|
+
"id": "human-1",
|
|
136
|
+
"description": "Misleading statistic in hero",
|
|
137
|
+
"category": "trust",
|
|
138
|
+
"severity": "high"
|
|
139
|
+
}
|
|
59
140
|
]
|
|
60
141
|
}
|
|
61
142
|
```
|
|
62
143
|
|
|
63
|
-
|
|
144
|
+
Output:
|
|
64
145
|
|
|
65
|
-
```bash
|
|
66
|
-
gravito-eval run ./my-directory
|
|
67
146
|
```
|
|
147
|
+
Recall: 75%
|
|
148
|
+
Precision: 50%
|
|
149
|
+
F1: 60%
|
|
150
|
+
Top-3 Agreement: 100%
|
|
151
|
+
Novel Signal: 67% (validated)
|
|
152
|
+
|
|
153
|
+
✓ Strong alignment with human judgment
|
|
154
|
+
◆ AI found significant issues humans missed
|
|
155
|
+
Verdict: PASS
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Add `--explain` for detailed match reasoning. Add `--json` for raw output.
|
|
68
159
|
|
|
69
160
|
---
|
|
70
161
|
|
|
71
|
-
##
|
|
162
|
+
## How It Works
|
|
72
163
|
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
164
|
+
```
|
|
165
|
+
URL → Fetch Content → Governance Analysis → Industry Benchmark → Score + Issues + Fixes
|
|
166
|
+
↓
|
|
167
|
+
5 analysis frameworks:
|
|
168
|
+
• Claim verification
|
|
169
|
+
• Vocabulary compliance
|
|
170
|
+
• Disclosure detection
|
|
171
|
+
• Pattern recognition
|
|
172
|
+
• Brand governance
|
|
77
173
|
```
|
|
78
174
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
## Programmatic API
|
|
175
|
+
The analysis runs server-side on the Gravito engine. No local LLM required.
|
|
82
176
|
|
|
83
|
-
|
|
84
|
-
import { evaluate } from "gravito-eval";
|
|
177
|
+
---
|
|
85
178
|
|
|
86
|
-
|
|
179
|
+
## CLI Reference
|
|
87
180
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
181
|
+
```
|
|
182
|
+
gravito-eval scan <url> Scan a live URL
|
|
183
|
+
gravito-eval scan <url> --json Output raw JSON
|
|
184
|
+
gravito-eval demo See a demo with explanations
|
|
185
|
+
gravito-eval run <path> Evaluate local findings
|
|
186
|
+
gravito-eval run <path> --explain Show detailed match reasoning
|
|
187
|
+
gravito-eval run <path> --json Output raw JSON
|
|
188
|
+
gravito-eval --help Show help
|
|
189
|
+
gravito-eval --version Show version
|
|
93
190
|
```
|
|
94
191
|
|
|
95
192
|
---
|
|
96
193
|
|
|
97
|
-
##
|
|
194
|
+
## Requirements
|
|
98
195
|
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
- Measuring whether your AI is useful, not just accurate
|
|
196
|
+
- Node.js 18+
|
|
197
|
+
- Internet connection (for `scan` command)
|
|
102
198
|
|
|
103
199
|
---
|
|
104
200
|
|
|
105
|
-
##
|
|
201
|
+
## Telemetry
|
|
106
202
|
|
|
107
|
-
|
|
108
|
-
|
|
203
|
+
Anonymous usage data (timestamp, version, command name) is collected to improve the tool. No findings, file paths, or PII.
|
|
204
|
+
|
|
205
|
+
Disable: `GRAVITO_TELEMETRY=0 gravito-eval run ./data` or set `DO_NOT_TRACK=1`.
|
|
109
206
|
|
|
110
207
|
---
|
|
111
208
|
|
|
112
|
-
##
|
|
209
|
+
## Programmatic API
|
|
113
210
|
|
|
114
|
-
|
|
115
|
-
|
|
211
|
+
```typescript
|
|
212
|
+
import { evaluate } from "gravito-eval";
|
|
116
213
|
|
|
117
|
-
|
|
214
|
+
const result = evaluate(aiFindings, humanFindings);
|
|
118
215
|
|
|
119
|
-
|
|
120
|
-
|
|
216
|
+
result.detection.recall // How much of what humans find does the AI catch?
|
|
217
|
+
result.detection.precision // How much of what the AI finds is actually relevant?
|
|
218
|
+
result.detection.f1 // Harmonic mean
|
|
219
|
+
result.novelSignal // What did the AI find that humans missed?
|
|
220
|
+
result.verdict // PASS | PARTIAL | FAIL | INSUFFICIENT_DATA
|
|
121
221
|
```
|
|
122
222
|
|
|
123
|
-
Respects `DO_NOT_TRACK=1`.
|
|
124
|
-
|
|
125
223
|
---
|
|
126
224
|
|
|
127
|
-
##
|
|
128
|
-
|
|
129
|
-
This is the open-source evaluation layer behind [Gravito](https://gravito.ai) — continuous AI governance that scans, calibrates, and self-corrects.
|
|
225
|
+
## Continuous Monitoring
|
|
130
226
|
|
|
131
|
-
|
|
227
|
+
Want this running continuously on your site?
|
|
132
228
|
|
|
133
|
-
[
|
|
229
|
+
[Gravito](https://gravito.ai) provides always-on governance monitoring, automated alerts, and team dashboards.
|
|
134
230
|
|
|
135
231
|
---
|
|
136
232
|
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* Gravito Eval CLI
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
|
-
* gravito-eval
|
|
7
|
-
* gravito-eval
|
|
8
|
-
* gravito-eval run <path>
|
|
9
|
-
* gravito-eval run <path> --
|
|
10
|
-
* gravito-eval --
|
|
11
|
-
* gravito-eval --
|
|
6
|
+
* gravito-eval scan <url> Scan a live URL
|
|
7
|
+
* gravito-eval demo Run a preloaded demo
|
|
8
|
+
* gravito-eval run <path> Evaluate local findings
|
|
9
|
+
* gravito-eval run <path> --explain Show detailed match reasoning
|
|
10
|
+
* gravito-eval run <path> --json Output raw JSON
|
|
11
|
+
* gravito-eval run <path> --no-telemetry Disable anonymous tracking
|
|
12
|
+
* gravito-eval --help Show help
|
|
13
|
+
* gravito-eval --version Show version
|
|
12
14
|
*/
|
|
13
15
|
export {};
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
* Gravito Eval CLI
|
|
5
5
|
*
|
|
6
6
|
* Usage:
|
|
7
|
-
* gravito-eval
|
|
8
|
-
* gravito-eval
|
|
9
|
-
* gravito-eval run <path>
|
|
10
|
-
* gravito-eval run <path> --
|
|
11
|
-
* gravito-eval --
|
|
12
|
-
* gravito-eval --
|
|
7
|
+
* gravito-eval scan <url> Scan a live URL
|
|
8
|
+
* gravito-eval demo Run a preloaded demo
|
|
9
|
+
* gravito-eval run <path> Evaluate local findings
|
|
10
|
+
* gravito-eval run <path> --explain Show detailed match reasoning
|
|
11
|
+
* gravito-eval run <path> --json Output raw JSON
|
|
12
|
+
* gravito-eval run <path> --no-telemetry Disable anonymous tracking
|
|
13
|
+
* gravito-eval --help Show help
|
|
14
|
+
* gravito-eval --version Show version
|
|
13
15
|
*/
|
|
14
16
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
17
|
if (k2 === undefined) k2 = k;
|
|
@@ -47,87 +49,456 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
47
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
50
|
const fs = __importStar(require("fs"));
|
|
49
51
|
const path = __importStar(require("path"));
|
|
52
|
+
const https = __importStar(require("https"));
|
|
53
|
+
const http = __importStar(require("http"));
|
|
50
54
|
const calibration_1 = require("../src/calibration");
|
|
51
55
|
const telemetry_1 = require("../src/telemetry");
|
|
52
|
-
// ───
|
|
56
|
+
// ─── Constants ───────────────────────────────────────────────────────────
|
|
57
|
+
const API_BASE = process.env.GRAVITO_API_URL || "https://empathiq-api-hbjrlavx.manus.space";
|
|
58
|
+
const SHARE_BASE = "https://gravito.ai/try/report";
|
|
59
|
+
// ─── Color Helpers ───────────────────────────────────────────────────────
|
|
60
|
+
const isColorSupported = process.stdout.isTTY && !process.env.NO_COLOR;
|
|
61
|
+
const c = {
|
|
62
|
+
bold: (s) => (isColorSupported ? `\x1b[1m${s}\x1b[0m` : s),
|
|
63
|
+
dim: (s) => (isColorSupported ? `\x1b[2m${s}\x1b[0m` : s),
|
|
64
|
+
green: (s) => (isColorSupported ? `\x1b[32m${s}\x1b[0m` : s),
|
|
65
|
+
red: (s) => (isColorSupported ? `\x1b[31m${s}\x1b[0m` : s),
|
|
66
|
+
yellow: (s) => (isColorSupported ? `\x1b[33m${s}\x1b[0m` : s),
|
|
67
|
+
cyan: (s) => (isColorSupported ? `\x1b[36m${s}\x1b[0m` : s),
|
|
68
|
+
magenta: (s) => (isColorSupported ? `\x1b[35m${s}\x1b[0m` : s),
|
|
69
|
+
gray: (s) => (isColorSupported ? `\x1b[90m${s}\x1b[0m` : s),
|
|
70
|
+
white: (s) => (isColorSupported ? `\x1b[37m${s}\x1b[0m` : s),
|
|
71
|
+
bgRed: (s) => (isColorSupported ? `\x1b[41m\x1b[37m${s}\x1b[0m` : s),
|
|
72
|
+
bgYellow: (s) => isColorSupported ? `\x1b[43m\x1b[30m${s}\x1b[0m` : s,
|
|
73
|
+
bgGreen: (s) => isColorSupported ? `\x1b[42m\x1b[30m${s}\x1b[0m` : s,
|
|
74
|
+
bgCyan: (s) => isColorSupported ? `\x1b[46m\x1b[30m${s}\x1b[0m` : s,
|
|
75
|
+
};
|
|
76
|
+
// ─── Spinner ─────────────────────────────────────────────────────────────
|
|
77
|
+
class Spinner {
|
|
78
|
+
interval = null;
|
|
79
|
+
start(message) {
|
|
80
|
+
process.stdout.write(` ${message}`);
|
|
81
|
+
this.interval = setInterval(() => {
|
|
82
|
+
process.stdout.write(`.`);
|
|
83
|
+
}, 2000);
|
|
84
|
+
}
|
|
85
|
+
stop(message) {
|
|
86
|
+
if (this.interval) {
|
|
87
|
+
clearInterval(this.interval);
|
|
88
|
+
this.interval = null;
|
|
89
|
+
}
|
|
90
|
+
console.log();
|
|
91
|
+
if (message) {
|
|
92
|
+
console.log(message);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────
|
|
53
97
|
function pct(n) {
|
|
54
98
|
return `${Math.round(n * 100)}%`;
|
|
55
99
|
}
|
|
56
|
-
|
|
100
|
+
function severityBadge(severity) {
|
|
101
|
+
switch (severity) {
|
|
102
|
+
case "critical":
|
|
103
|
+
return c.bgRed(" CRITICAL ");
|
|
104
|
+
case "high":
|
|
105
|
+
return c.red("HIGH");
|
|
106
|
+
case "medium":
|
|
107
|
+
return c.yellow("MEDIUM");
|
|
108
|
+
case "low":
|
|
109
|
+
return c.dim("LOW");
|
|
110
|
+
default:
|
|
111
|
+
return severity;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function scoreColor(score) {
|
|
115
|
+
if (score >= 80)
|
|
116
|
+
return c.green;
|
|
117
|
+
if (score >= 60)
|
|
118
|
+
return c.yellow;
|
|
119
|
+
if (score >= 40)
|
|
120
|
+
return c.yellow;
|
|
121
|
+
return c.red;
|
|
122
|
+
}
|
|
123
|
+
function gradeEmoji(grade) {
|
|
124
|
+
switch (grade) {
|
|
125
|
+
case "A":
|
|
126
|
+
return "🟢";
|
|
127
|
+
case "B":
|
|
128
|
+
return "🟡";
|
|
129
|
+
case "C":
|
|
130
|
+
return "🟠";
|
|
131
|
+
case "D":
|
|
132
|
+
return "🔴";
|
|
133
|
+
case "F":
|
|
134
|
+
return "🔴";
|
|
135
|
+
default:
|
|
136
|
+
return "⚪";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function bar(value, width = 20) {
|
|
140
|
+
const filled = Math.round((value / 100) * width);
|
|
141
|
+
const empty = width - filled;
|
|
142
|
+
const color = scoreColor(value);
|
|
143
|
+
return color("█".repeat(filled)) + c.dim("░".repeat(empty));
|
|
144
|
+
}
|
|
145
|
+
function httpPost(url, data) {
|
|
146
|
+
return new Promise((resolve, reject) => {
|
|
147
|
+
const payload = JSON.stringify(data);
|
|
148
|
+
const parsed = new URL(url);
|
|
149
|
+
const lib = parsed.protocol === "https:" ? https : http;
|
|
150
|
+
const req = lib.request({
|
|
151
|
+
hostname: parsed.hostname,
|
|
152
|
+
port: parsed.port || (parsed.protocol === "https:" ? 443 : 80),
|
|
153
|
+
path: parsed.pathname + parsed.search,
|
|
154
|
+
method: "POST",
|
|
155
|
+
headers: {
|
|
156
|
+
"Content-Type": "application/json",
|
|
157
|
+
"Content-Length": Buffer.byteLength(payload),
|
|
158
|
+
"User-Agent": "gravito-eval-cli",
|
|
159
|
+
},
|
|
160
|
+
timeout: 120000, // 2 min — scans take time
|
|
161
|
+
}, (res) => {
|
|
162
|
+
let body = "";
|
|
163
|
+
res.on("data", (chunk) => (body += chunk.toString()));
|
|
164
|
+
res.on("end", () => resolve({ status: res.statusCode || 0, body }));
|
|
165
|
+
});
|
|
166
|
+
req.on("error", reject);
|
|
167
|
+
req.on("timeout", () => {
|
|
168
|
+
req.destroy();
|
|
169
|
+
reject(new Error("Request timed out (120s)"));
|
|
170
|
+
});
|
|
171
|
+
req.write(payload);
|
|
172
|
+
req.end();
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function printScanResult(result) {
|
|
176
|
+
const sc = scoreColor(result.overallScore);
|
|
177
|
+
console.log();
|
|
178
|
+
console.log(c.bold(" Gravito Eval Results"));
|
|
179
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
180
|
+
console.log();
|
|
181
|
+
// Score + Grade
|
|
182
|
+
console.log(` ${c.dim("Score:")} ${sc(c.bold(String(result.overallScore)))}${c.dim("/100")} ${gradeEmoji(result.grade)} ${c.bold(result.grade)} Grade`);
|
|
183
|
+
console.log(` ${c.dim("Site:")} ${c.cyan(result.url)}`);
|
|
184
|
+
if (result.pageTitle) {
|
|
185
|
+
console.log(` ${c.dim("Title:")} ${result.pageTitle}`);
|
|
186
|
+
}
|
|
187
|
+
console.log();
|
|
188
|
+
// Score bar
|
|
189
|
+
console.log(` ${bar(result.overallScore, 30)} ${sc(String(result.overallScore) + "%")}`);
|
|
190
|
+
console.log();
|
|
191
|
+
// Benchmark
|
|
192
|
+
if (result.benchmark) {
|
|
193
|
+
const b = result.benchmark;
|
|
194
|
+
console.log(` ${c.dim("vs")} ${b.industryLabel}: ${c.bold("top " + (100 - b.percentileRank) + "%")} ${c.dim("(avg: " + b.industryAvg + ")")}`);
|
|
195
|
+
console.log();
|
|
196
|
+
}
|
|
197
|
+
// Key Issues
|
|
198
|
+
if (result.issues.length > 0) {
|
|
199
|
+
console.log(c.bold(" Key Issues"));
|
|
200
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
201
|
+
const topIssues = result.issues.slice(0, 6);
|
|
202
|
+
for (const issue of topIssues) {
|
|
203
|
+
console.log();
|
|
204
|
+
console.log(` ${severityBadge(issue.severity)} ${c.bold(issue.title)}`);
|
|
205
|
+
console.log(` ${c.dim("→")} ${issue.description}`);
|
|
206
|
+
console.log(` ${c.green("Fix:")} ${issue.fix}`);
|
|
207
|
+
}
|
|
208
|
+
if (result.issues.length > 6) {
|
|
209
|
+
console.log();
|
|
210
|
+
console.log(c.dim(` + ${result.issues.length - 6} more issues in full report`));
|
|
211
|
+
}
|
|
212
|
+
console.log();
|
|
213
|
+
}
|
|
214
|
+
// Novel Insights (patterns)
|
|
215
|
+
if (result.patternsDetected.length > 0) {
|
|
216
|
+
console.log(c.bold(" Additional Insights Gravito Found"));
|
|
217
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
218
|
+
for (const pattern of result.patternsDetected) {
|
|
219
|
+
console.log(` ${c.magenta("◆")} ${pattern.replace(/_/g, " ").replace(/\b\w/g, (ch) => ch.toUpperCase())}`);
|
|
220
|
+
}
|
|
221
|
+
console.log();
|
|
222
|
+
}
|
|
223
|
+
// Projection
|
|
224
|
+
if (result.projection) {
|
|
225
|
+
console.log(c.bold(" What This Means"));
|
|
226
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
227
|
+
console.log(` ${result.projection.summary}`);
|
|
228
|
+
console.log(` ${c.dim("Time to fix:")} ${result.projection.timeToFix}`);
|
|
229
|
+
console.log();
|
|
230
|
+
}
|
|
231
|
+
// Shareable link
|
|
232
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
233
|
+
console.log(` ${c.bold("Share:")} ${c.cyan(`${SHARE_BASE}/${result.reportId}`)}`);
|
|
234
|
+
console.log();
|
|
235
|
+
// Next step — subtle, not salesy
|
|
236
|
+
console.log(c.dim(" Try another site:"));
|
|
237
|
+
console.log(c.dim(" npx gravito-eval scan https://your-site.com"));
|
|
238
|
+
console.log();
|
|
239
|
+
// Analysis meta
|
|
240
|
+
console.log(c.dim(` Analyzed in ${(result.analysisTimeMs / 1000).toFixed(1)}s · ${result.engineUsed} · ${result.issues.length} issues found`));
|
|
241
|
+
console.log();
|
|
242
|
+
}
|
|
243
|
+
async function runScan(url, jsonOutput) {
|
|
244
|
+
// Normalize URL
|
|
245
|
+
let targetUrl = url.trim();
|
|
246
|
+
if (!targetUrl.startsWith("http")) {
|
|
247
|
+
targetUrl = `https://${targetUrl}`;
|
|
248
|
+
}
|
|
249
|
+
// Validate URL
|
|
250
|
+
try {
|
|
251
|
+
new URL(targetUrl);
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
console.error(`Invalid URL: ${url}`);
|
|
255
|
+
console.error(`Usage: gravito-eval scan https://example.com`);
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
const spinner = new Spinner();
|
|
259
|
+
spinner.start(`Scanning ${c.cyan(targetUrl)}`);
|
|
260
|
+
try {
|
|
261
|
+
const response = await httpPost(`${API_BASE}/api/trpc/try.analyzeUrl`, { json: { url: targetUrl } });
|
|
262
|
+
spinner.stop();
|
|
263
|
+
if (response.status !== 200) {
|
|
264
|
+
let errorMsg = "Analysis failed";
|
|
265
|
+
try {
|
|
266
|
+
const err = JSON.parse(response.body);
|
|
267
|
+
if (err?.error?.json?.message)
|
|
268
|
+
errorMsg = err.error.json.message;
|
|
269
|
+
else if (err?.error?.message)
|
|
270
|
+
errorMsg = err.error.message;
|
|
271
|
+
}
|
|
272
|
+
catch { }
|
|
273
|
+
console.error(`Error: ${errorMsg}`);
|
|
274
|
+
console.error();
|
|
275
|
+
console.error(`This can happen if:`);
|
|
276
|
+
console.error(` • The URL is not publicly accessible`);
|
|
277
|
+
console.error(` • The site blocks automated requests`);
|
|
278
|
+
console.error(` • The Gravito API is temporarily unavailable`);
|
|
279
|
+
console.error();
|
|
280
|
+
console.error(`Try: gravito-eval scan https://stripe.com`);
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
const parsed = JSON.parse(response.body);
|
|
284
|
+
const result = parsed.result?.data?.json || parsed.result?.data || parsed;
|
|
285
|
+
if (!result.overallScore && result.overallScore !== 0) {
|
|
286
|
+
console.error("Unexpected response format from Gravito API");
|
|
287
|
+
if (jsonOutput) {
|
|
288
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
289
|
+
}
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
if (jsonOutput) {
|
|
293
|
+
console.log(JSON.stringify(result, null, 2));
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
printScanResult(result);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
catch (err) {
|
|
300
|
+
spinner.stop();
|
|
301
|
+
console.error(`Error: ${err.message}`);
|
|
302
|
+
console.error();
|
|
303
|
+
console.error(`Check your internet connection and try again.`);
|
|
304
|
+
process.exit(1);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// ─── Demo Command ────────────────────────────────────────────────────────
|
|
308
|
+
function runDemo() {
|
|
309
|
+
console.log();
|
|
310
|
+
console.log(c.bold(" Gravito Eval — Demo"));
|
|
311
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
312
|
+
console.log();
|
|
313
|
+
console.log(` Gravito evaluates any website or AI output and tells you:`);
|
|
314
|
+
console.log(` ${c.cyan("1.")} How closely it matches human-quality judgment`);
|
|
315
|
+
console.log(` ${c.cyan("2.")} Where the gaps are`);
|
|
316
|
+
console.log(` ${c.cyan("3.")} What improvements a human reviewer would miss`);
|
|
317
|
+
console.log();
|
|
318
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
319
|
+
console.log();
|
|
320
|
+
console.log(c.bold(" Example: Scanning a SaaS landing page"));
|
|
321
|
+
console.log();
|
|
322
|
+
// Simulated output
|
|
323
|
+
const demoResult = {
|
|
324
|
+
url: "https://example-saas.com",
|
|
325
|
+
pageTitle: "Example SaaS — Project Management for Teams",
|
|
326
|
+
overallScore: 64,
|
|
327
|
+
grade: "D",
|
|
328
|
+
riskLevel: "medium",
|
|
329
|
+
summary: "This page has 4 high-priority issues that weaken trust and conversion. Fixing them would meaningfully improve both compliance posture and user confidence.",
|
|
330
|
+
issues: [
|
|
331
|
+
{
|
|
332
|
+
category: "unsubstantiated_claim",
|
|
333
|
+
severity: "high",
|
|
334
|
+
title: "Unsubstantiated Performance Claim",
|
|
335
|
+
description: '"Trusted by 10,000+ teams" — no source, no verification, no link to evidence',
|
|
336
|
+
fix: "Add a source link or replace with verifiable metric",
|
|
337
|
+
location: "Hero section",
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
category: "missing_disclosure",
|
|
341
|
+
severity: "high",
|
|
342
|
+
title: "Missing AI Disclosure",
|
|
343
|
+
description: 'Uses "AI-powered" in headline but no transparency about how AI is used or what data it processes',
|
|
344
|
+
fix: "Add an AI transparency section or link to AI usage policy",
|
|
345
|
+
location: "Above the fold",
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
category: "content_safety",
|
|
349
|
+
severity: "medium",
|
|
350
|
+
title: "Absolute Language Without Qualification",
|
|
351
|
+
description: '"The fastest project management tool" — superlative claim without comparative data',
|
|
352
|
+
fix: 'Qualify with "one of the fastest" or add benchmark data',
|
|
353
|
+
location: "Features section",
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
category: "trust_transparency",
|
|
357
|
+
severity: "medium",
|
|
358
|
+
title: "Cookie Consent Missing",
|
|
359
|
+
description: "No cookie consent banner detected. Required under GDPR/ePrivacy for EU visitors.",
|
|
360
|
+
fix: "Implement a cookie consent mechanism before tracking scripts load",
|
|
361
|
+
location: "Global",
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
category: "brand_governance",
|
|
365
|
+
severity: "low",
|
|
366
|
+
title: "Inconsistent Messaging Tone",
|
|
367
|
+
description: "Hero uses casual tone, pricing page uses formal/legal tone — creates cognitive dissonance",
|
|
368
|
+
fix: "Align tone across all pages to match brand voice guidelines",
|
|
369
|
+
location: "Multiple pages",
|
|
370
|
+
},
|
|
371
|
+
],
|
|
372
|
+
projection: {
|
|
373
|
+
riskLevel: "medium",
|
|
374
|
+
summary: "This page is functional but has 4 issues that weaken its effectiveness. Fixing them would meaningfully improve trust and conversion.",
|
|
375
|
+
potentialImpacts: [
|
|
376
|
+
"Customer trust erosion from unsubstantiated claims",
|
|
377
|
+
"Transparency gaps that erode user confidence",
|
|
378
|
+
],
|
|
379
|
+
timeToFix: "30–60 minutes",
|
|
380
|
+
},
|
|
381
|
+
rewrittenExcerpt: "",
|
|
382
|
+
claimsDetected: 6,
|
|
383
|
+
claimsVerified: 2,
|
|
384
|
+
patternsDetected: [
|
|
385
|
+
"overclaiming",
|
|
386
|
+
"missing_disclaimers",
|
|
387
|
+
"unsubstantiated_claims",
|
|
388
|
+
],
|
|
389
|
+
analysisTimeMs: 4200,
|
|
390
|
+
engineUsed: "Gravito Engine (Demo)",
|
|
391
|
+
reportId: "demo",
|
|
392
|
+
benchmark: {
|
|
393
|
+
percentileRank: 42,
|
|
394
|
+
industryCategory: "saas_marketing",
|
|
395
|
+
industryLabel: "SaaS Marketing Pages",
|
|
396
|
+
industryAvg: 62,
|
|
397
|
+
insight: "This page falls below the median for SaaS marketing pages. Competitors with better governance scores are building more trust with the same audience.",
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
printScanResult(demoResult);
|
|
401
|
+
console.log(c.dim(" " + "═".repeat(50)));
|
|
402
|
+
console.log();
|
|
403
|
+
console.log(c.bold(" How it works"));
|
|
404
|
+
console.log();
|
|
405
|
+
console.log(` ${c.cyan("→")} Gravito fetches the page and extracts content`);
|
|
406
|
+
console.log(` ${c.cyan("→")} Runs governance analysis across 5 frameworks`);
|
|
407
|
+
console.log(` ${c.cyan("→")} Compares against industry benchmarks`);
|
|
408
|
+
console.log(` ${c.cyan("→")} Identifies issues a human reviewer would flag`);
|
|
409
|
+
console.log(` ${c.cyan("→")} Finds additional issues humans typically miss`);
|
|
410
|
+
console.log();
|
|
411
|
+
console.log(c.dim(" " + "═".repeat(50)));
|
|
412
|
+
console.log();
|
|
413
|
+
console.log(c.bold(" Try it on a real site:"));
|
|
414
|
+
console.log();
|
|
415
|
+
console.log(` ${c.cyan("npx gravito-eval scan https://stripe.com")}`);
|
|
416
|
+
console.log(` ${c.cyan("npx gravito-eval scan https://openai.com")}`);
|
|
417
|
+
console.log(` ${c.cyan("npx gravito-eval scan https://your-site.com")}`);
|
|
418
|
+
console.log();
|
|
419
|
+
}
|
|
420
|
+
// ─── Run Command (existing) ──────────────────────────────────────────────
|
|
57
421
|
function printResult(result) {
|
|
58
422
|
const d = result.detection;
|
|
59
423
|
const r = result.ranking;
|
|
60
424
|
console.log();
|
|
61
|
-
console.log("Gravito Eval Results");
|
|
425
|
+
console.log(c.bold(" Gravito Eval Results"));
|
|
426
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
62
427
|
console.log();
|
|
63
|
-
console.log(`Recall:
|
|
64
|
-
console.log(`Precision:
|
|
65
|
-
console.log(`F1:
|
|
428
|
+
console.log(` ${c.dim("Recall:")} ${scoreColor(d.recall * 100)(pct(d.recall))}`);
|
|
429
|
+
console.log(` ${c.dim("Precision:")} ${scoreColor(d.precision * 100)(pct(d.precision))}`);
|
|
430
|
+
console.log(` ${c.dim("F1:")} ${scoreColor(d.f1 * 100)(pct(d.f1))}`);
|
|
66
431
|
console.log();
|
|
67
|
-
console.log(`Top-3 Agreement: ${pct(r.top3Overlap)}`);
|
|
432
|
+
console.log(` ${c.dim("Top-3 Agreement:")} ${scoreColor(r.top3Overlap * 100)(pct(r.top3Overlap))}`);
|
|
68
433
|
if (result.novelSignal) {
|
|
69
|
-
console.log(`Novel Signal:
|
|
434
|
+
console.log(` ${c.dim("Novel Signal:")} ${c.magenta(pct(result.novelSignal.validatedNovelRate))} ${c.dim("(validated)")}`);
|
|
70
435
|
}
|
|
71
436
|
console.log();
|
|
72
|
-
console.log("Interpretation
|
|
437
|
+
console.log(c.bold(" Interpretation"));
|
|
438
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
73
439
|
printInterpretation(result);
|
|
74
440
|
console.log();
|
|
75
|
-
|
|
76
|
-
console.log("
|
|
77
|
-
console.log();
|
|
78
|
-
console.log("
|
|
441
|
+
// Subtle next step
|
|
442
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
443
|
+
console.log(c.dim(" Try scanning a live site:"));
|
|
444
|
+
console.log(c.dim(" npx gravito-eval scan https://your-site.com"));
|
|
79
445
|
console.log();
|
|
80
446
|
}
|
|
81
447
|
function printInterpretation(result) {
|
|
82
448
|
const d = result.detection;
|
|
83
449
|
if (d.recall >= 0.7) {
|
|
84
|
-
console.log("
|
|
450
|
+
console.log(` ${c.green("✓")} Strong alignment with human judgment`);
|
|
85
451
|
}
|
|
86
452
|
else if (d.recall >= 0.5) {
|
|
87
|
-
console.log("
|
|
453
|
+
console.log(` ${c.yellow("~")} Moderate alignment — some human findings missed`);
|
|
88
454
|
}
|
|
89
455
|
else {
|
|
90
|
-
console.log("
|
|
456
|
+
console.log(` ${c.red("✗")} Low alignment — many human findings missed`);
|
|
91
457
|
}
|
|
92
458
|
if (result.novelSignal) {
|
|
93
459
|
const rate = result.novelSignal.validatedNovelRate;
|
|
94
460
|
if (rate >= 0.4) {
|
|
95
|
-
console.log("
|
|
461
|
+
console.log(` ${c.magenta("◆")} AI found significant issues humans missed`);
|
|
96
462
|
}
|
|
97
463
|
else if (rate >= 0.2) {
|
|
98
|
-
console.log("
|
|
464
|
+
console.log(` ${c.magenta("◆")} AI found some issues humans missed`);
|
|
99
465
|
}
|
|
100
466
|
}
|
|
467
|
+
// Verdict
|
|
468
|
+
const verdictMap = {
|
|
469
|
+
PASS: c.green("PASS"),
|
|
470
|
+
PARTIAL: c.yellow("PARTIAL"),
|
|
471
|
+
FAIL: c.red("FAIL"),
|
|
472
|
+
INSUFFICIENT_DATA: c.dim("INSUFFICIENT DATA"),
|
|
473
|
+
};
|
|
474
|
+
console.log(` ${c.dim("Verdict:")} ${verdictMap[result.verdict] || result.verdict}`);
|
|
101
475
|
}
|
|
102
|
-
// ─── Explain Mode
|
|
476
|
+
// ─── Explain Mode ────────────────────────────────────────────────────────
|
|
103
477
|
function printExplain(result) {
|
|
104
|
-
console.log("
|
|
478
|
+
console.log(c.bold(" Detailed Reasoning"));
|
|
479
|
+
console.log(c.dim(" " + "─".repeat(50)));
|
|
105
480
|
console.log();
|
|
106
|
-
// Matched pairs
|
|
107
481
|
if (result.matches.length > 0) {
|
|
108
|
-
console.log("Matched (AI ↔ Human):");
|
|
482
|
+
console.log(c.bold(" Matched (AI ↔ Human):"));
|
|
109
483
|
for (const m of result.matches) {
|
|
110
484
|
console.log();
|
|
111
|
-
console.log(` AI: "${m.aiIssue.description}"`);
|
|
112
|
-
console.log(` Human: "${m.humanIssue.description}"`);
|
|
113
|
-
console.log(` Why: ${m.matchType} match (${Math.round(m.similarity * 100)}% similar)`);
|
|
485
|
+
console.log(` ${c.cyan("AI:")} "${m.aiIssue.description}"`);
|
|
486
|
+
console.log(` ${c.green("Human:")} "${m.humanIssue.description}"`);
|
|
487
|
+
console.log(` ${c.dim("Why:")} ${m.matchType} match (${Math.round(m.similarity * 100)}% similar)`);
|
|
114
488
|
}
|
|
115
489
|
console.log();
|
|
116
490
|
}
|
|
117
|
-
// Novel findings
|
|
118
491
|
if (result.aiOnly.length > 0) {
|
|
119
|
-
console.log("Novel (AI found, humans didn't):");
|
|
492
|
+
console.log(c.bold(" Novel (AI found, humans didn't):"));
|
|
120
493
|
for (const f of result.aiOnly) {
|
|
121
|
-
console.log(` → "${f.description}"`);
|
|
122
|
-
console.log(` Why novel: No similar human finding found`);
|
|
494
|
+
console.log(` ${c.magenta("→")} "${f.description}"`);
|
|
123
495
|
}
|
|
124
496
|
console.log();
|
|
125
497
|
}
|
|
126
|
-
// Missed findings
|
|
127
498
|
if (result.humanOnly.length > 0) {
|
|
128
|
-
console.log("Missed (humans found, AI didn't):");
|
|
499
|
+
console.log(c.bold(" Missed (humans found, AI didn't):"));
|
|
129
500
|
for (const f of result.humanOnly) {
|
|
130
|
-
console.log(` ✗ "${f.description}"`);
|
|
501
|
+
console.log(` ${c.red("✗")} "${f.description}"`);
|
|
131
502
|
}
|
|
132
503
|
console.log();
|
|
133
504
|
}
|
|
@@ -197,27 +568,32 @@ function loadData(inputPath) {
|
|
|
197
568
|
const raw = JSON.parse(fs.readFileSync(resolved, "utf-8"));
|
|
198
569
|
return validateData(raw);
|
|
199
570
|
}
|
|
200
|
-
// ─── Main
|
|
571
|
+
// ─── Main ────────────────────────────────────────────────────────────────
|
|
201
572
|
function showHelp() {
|
|
202
573
|
console.log(`
|
|
203
|
-
Gravito Eval —
|
|
574
|
+
${c.bold("Gravito Eval")} — Evaluate any website or AI output in seconds
|
|
575
|
+
|
|
576
|
+
${c.bold("Usage:")}
|
|
577
|
+
gravito-eval scan <url> ${c.dim("Scan a live URL")}
|
|
578
|
+
gravito-eval demo ${c.dim("See a demo with explanations")}
|
|
579
|
+
gravito-eval run <path> ${c.dim("Evaluate local findings")}
|
|
204
580
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
gravito-eval run <path> --explain Show detailed match reasoning
|
|
208
|
-
gravito-eval run <path> --json Output raw JSON
|
|
209
|
-
gravito-eval run <path> --no-telemetry Disable anonymous tracking
|
|
581
|
+
${c.bold("Scan flags:")}
|
|
582
|
+
--json ${c.dim("Output raw JSON")}
|
|
210
583
|
|
|
211
|
-
|
|
212
|
-
|
|
584
|
+
${c.bold("Run flags:")}
|
|
585
|
+
--explain ${c.dim("Show detailed match reasoning")}
|
|
586
|
+
--json ${c.dim("Output raw JSON")}
|
|
587
|
+
--no-telemetry ${c.dim("Disable anonymous tracking")}
|
|
213
588
|
|
|
214
|
-
Examples:
|
|
215
|
-
gravito-eval
|
|
216
|
-
gravito-eval
|
|
217
|
-
gravito-eval
|
|
589
|
+
${c.bold("Examples:")}
|
|
590
|
+
${c.cyan("gravito-eval scan https://stripe.com")} ${c.dim("Scan Stripe's homepage")}
|
|
591
|
+
${c.cyan("gravito-eval scan https://your-site.com")} ${c.dim("Scan your own site")}
|
|
592
|
+
${c.cyan("gravito-eval demo")} ${c.dim("See what the output looks like")}
|
|
593
|
+
${c.cyan("gravito-eval run ./examples/basic")} ${c.dim("Evaluate local data")}
|
|
218
594
|
`);
|
|
219
595
|
}
|
|
220
|
-
function main() {
|
|
596
|
+
async function main() {
|
|
221
597
|
const args = process.argv.slice(2);
|
|
222
598
|
if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
|
|
223
599
|
showHelp();
|
|
@@ -235,42 +611,68 @@ function main() {
|
|
|
235
611
|
console.log(pkg.version);
|
|
236
612
|
process.exit(0);
|
|
237
613
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
614
|
+
const command = args[0];
|
|
615
|
+
// ── scan <url> ──
|
|
616
|
+
if (command === "scan") {
|
|
617
|
+
if (!args[1]) {
|
|
618
|
+
console.error(`Missing URL.`);
|
|
619
|
+
console.error(`Usage: gravito-eval scan https://example.com`);
|
|
620
|
+
process.exit(1);
|
|
621
|
+
}
|
|
622
|
+
(0, telemetry_1.trackRun)("scan");
|
|
623
|
+
const jsonOutput = args.includes("--json");
|
|
624
|
+
await runScan(args[1], jsonOutput);
|
|
625
|
+
setTimeout(() => process.exit(0), 100);
|
|
626
|
+
return;
|
|
242
627
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
628
|
+
// ── demo ──
|
|
629
|
+
if (command === "demo") {
|
|
630
|
+
(0, telemetry_1.trackRun)("demo");
|
|
631
|
+
runDemo();
|
|
632
|
+
setTimeout(() => process.exit(0), 100);
|
|
633
|
+
return;
|
|
247
634
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
const result = (0, calibration_1.evaluate)(data.aiFindings, data.humanFindings, {
|
|
255
|
-
adjudications: data.adjudications,
|
|
256
|
-
autoAdjudicate: !data.adjudications,
|
|
257
|
-
});
|
|
258
|
-
if (jsonOutput) {
|
|
259
|
-
console.log(JSON.stringify(result, null, 2));
|
|
635
|
+
// ── run <path> ──
|
|
636
|
+
if (command === "run") {
|
|
637
|
+
if (!args[1]) {
|
|
638
|
+
console.error(`Missing path.`);
|
|
639
|
+
console.error(`Usage: gravito-eval run <path>`);
|
|
640
|
+
process.exit(1);
|
|
260
641
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
642
|
+
const jsonOutput = args.includes("--json");
|
|
643
|
+
const explainMode = args.includes("--explain");
|
|
644
|
+
(0, telemetry_1.trackRun)("run");
|
|
645
|
+
try {
|
|
646
|
+
const data = loadData(args[1]);
|
|
647
|
+
const result = (0, calibration_1.evaluate)(data.aiFindings, data.humanFindings, {
|
|
648
|
+
adjudications: data.adjudications,
|
|
649
|
+
autoAdjudicate: !data.adjudications,
|
|
650
|
+
});
|
|
651
|
+
if (jsonOutput) {
|
|
652
|
+
console.log(JSON.stringify(result, null, 2));
|
|
653
|
+
}
|
|
654
|
+
else {
|
|
655
|
+
printResult(result);
|
|
656
|
+
if (explainMode) {
|
|
657
|
+
printExplain(result);
|
|
658
|
+
}
|
|
265
659
|
}
|
|
266
660
|
}
|
|
661
|
+
catch (err) {
|
|
662
|
+
console.error(`Error: ${err.message}`);
|
|
663
|
+
process.exit(1);
|
|
664
|
+
}
|
|
665
|
+
setTimeout(() => process.exit(0), 100);
|
|
666
|
+
return;
|
|
267
667
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
setTimeout(() => process.exit(0), 100);
|
|
668
|
+
// Unknown command
|
|
669
|
+
console.error(`Unknown command: ${command}`);
|
|
670
|
+
console.error();
|
|
671
|
+
console.error(`Run: gravito-eval --help`);
|
|
672
|
+
process.exit(1);
|
|
274
673
|
}
|
|
275
|
-
main()
|
|
674
|
+
main().catch((err) => {
|
|
675
|
+
console.error(`Fatal: ${err.message}`);
|
|
676
|
+
process.exit(1);
|
|
677
|
+
});
|
|
276
678
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gravito-eval",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Scan any website in seconds — see what's wrong, what's missing, and what humans would miss.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
"prepublishOnly": "npm run clean && npm run build"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
|
+
"website-scanner",
|
|
24
25
|
"ai-evaluation",
|
|
26
|
+
"governance",
|
|
25
27
|
"alignment",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"human-ai-comparison",
|
|
33
|
-
"evaluation-framework"
|
|
28
|
+
"content-audit",
|
|
29
|
+
"compliance",
|
|
30
|
+
"llm-evaluation",
|
|
31
|
+
"prompt-testing",
|
|
32
|
+
"ai-qa",
|
|
33
|
+
"website-analysis"
|
|
34
34
|
],
|
|
35
35
|
"author": "Gravito <hello@gravitoai.com>",
|
|
36
36
|
"license": "MIT",
|