vibecheck-score 0.1.0 → 0.3.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/dist/index.js +113 -26
- package/dist/index.js.map +1 -1
- package/dist/output/narrative.d.ts +5 -1
- package/dist/output/narrative.d.ts.map +1 -1
- package/dist/output/narrative.js +45 -1
- package/dist/output/narrative.js.map +1 -1
- package/dist/output/terminal.d.ts +1 -1
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +153 -46
- package/dist/output/terminal.js.map +1 -1
- package/dist/scanners/agents.d.ts.map +1 -1
- package/dist/scanners/agents.js +54 -3
- package/dist/scanners/agents.js.map +1 -1
- package/dist/scanners/git-history.d.ts +7 -0
- package/dist/scanners/git-history.d.ts.map +1 -0
- package/dist/scanners/git-history.js +304 -0
- package/dist/scanners/git-history.js.map +1 -0
- package/dist/scanners/orchestration.d.ts.map +1 -1
- package/dist/scanners/orchestration.js +12 -3
- package/dist/scanners/orchestration.js.map +1 -1
- package/dist/scanners/universal-file.d.ts +2 -1
- package/dist/scanners/universal-file.d.ts.map +1 -1
- package/dist/scanners/universal-file.js +63 -6
- package/dist/scanners/universal-file.js.map +1 -1
- package/dist/taxonomy/registry.json +28 -1
- package/package.json +2 -2
- package/src/taxonomy/registry.json +28 -1
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { platform, homedir } from "node:os";
|
|
|
4
4
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
|
-
import { randomUUID } from "node:crypto";
|
|
7
|
+
import { randomUUID, randomBytes } from "node:crypto";
|
|
8
8
|
import { computeScore } from "./scoring/engine.js";
|
|
9
9
|
import { runAllScanners } from "./scanners/index.js";
|
|
10
10
|
import { EnvironmentScanner } from "./scanners/environment.js";
|
|
@@ -16,7 +16,9 @@ import { MemoryScanner } from "./scanners/memory.js";
|
|
|
16
16
|
import { SecurityScanner } from "./scanners/security.js";
|
|
17
17
|
import { DeployScanner } from "./scanners/deploy.js";
|
|
18
18
|
import { SocialScanner } from "./scanners/social.js";
|
|
19
|
-
import {
|
|
19
|
+
import { GitHistoryScanner } from "./scanners/git-history.js";
|
|
20
|
+
import { UniversalFileScanner, getSupersededMap } from "./scanners/universal-file.js";
|
|
21
|
+
import chalk from "chalk";
|
|
20
22
|
import { renderResults, createSpinner } from "./output/terminal.js";
|
|
21
23
|
function getVersion() {
|
|
22
24
|
try {
|
|
@@ -38,14 +40,16 @@ function printHelp() {
|
|
|
38
40
|
vibecheck [options]
|
|
39
41
|
|
|
40
42
|
Options:
|
|
41
|
-
--help
|
|
42
|
-
--json
|
|
43
|
-
--merge <file>
|
|
44
|
-
--deep
|
|
45
|
-
--submit
|
|
46
|
-
--handle <id>
|
|
47
|
-
--
|
|
48
|
-
--
|
|
43
|
+
--help Show this help message
|
|
44
|
+
--json Output raw ProbeResult as JSON
|
|
45
|
+
--merge <file> Merge detections from another scan (JSON file)
|
|
46
|
+
--deep Scan home directory for global AI config (crontab, launchd)
|
|
47
|
+
--submit Submit results to vibecheck-brklyngg.vercel.app
|
|
48
|
+
--handle <id> Your handle (auto-generated if omitted)
|
|
49
|
+
--compare create Create a new comparison
|
|
50
|
+
--compare <code> Join an existing comparison
|
|
51
|
+
--url <url> Override submit URL (default: https://vibecheck-brklyngg.vercel.app)
|
|
52
|
+
--yes Skip submit confirmation prompt
|
|
49
53
|
`);
|
|
50
54
|
}
|
|
51
55
|
async function main() {
|
|
@@ -57,6 +61,7 @@ async function main() {
|
|
|
57
61
|
merge: { type: "string" },
|
|
58
62
|
submit: { type: "boolean", default: false },
|
|
59
63
|
handle: { type: "string" },
|
|
64
|
+
compare: { type: "string" },
|
|
60
65
|
url: { type: "string" },
|
|
61
66
|
yes: { type: "boolean", default: false },
|
|
62
67
|
},
|
|
@@ -78,24 +83,26 @@ async function main() {
|
|
|
78
83
|
new SecurityScanner(),
|
|
79
84
|
new DeployScanner(),
|
|
80
85
|
new SocialScanner(),
|
|
86
|
+
new GitHistoryScanner(),
|
|
81
87
|
new UniversalFileScanner(isDeep), // must be last — supersedes v2 for shared artifacts
|
|
82
88
|
];
|
|
83
89
|
const spinner = isJson ? null : createSpinner("Scanning your AI setup...");
|
|
84
90
|
spinner?.start();
|
|
91
|
+
const scanStart = performance.now();
|
|
85
92
|
const scanResults = await runAllScanners(scanners);
|
|
93
|
+
const scanDurationMs = performance.now() - scanStart;
|
|
86
94
|
spinner?.stop();
|
|
87
95
|
// Flatten and deduplicate detections by id
|
|
88
96
|
// UFS runs last — collect its detections to know which v2 IDs to suppress
|
|
89
|
-
const
|
|
97
|
+
const supersededMap = getSupersededMap(); // v2Id → [ufs IDs that replace it]
|
|
90
98
|
const ufsResult = scanResults.find((r) => r.scanner === "universal-file");
|
|
91
99
|
const ufsDetectionIds = new Set(ufsResult?.detections.map((d) => d.id) ?? []);
|
|
92
|
-
//
|
|
100
|
+
// Only suppress a v2 ID when at least one of its replacement UFS IDs was actually emitted
|
|
93
101
|
const suppressedV2Ids = new Set();
|
|
94
|
-
for (const v2Id of
|
|
95
|
-
|
|
96
|
-
const hasUfsReplacement = ufsResult?.detections.some((d) => d.id.startsWith("ufs:"));
|
|
97
|
-
if (hasUfsReplacement)
|
|
102
|
+
for (const [v2Id, ufsIds] of supersededMap) {
|
|
103
|
+
if (ufsIds.some((id) => ufsDetectionIds.has(id))) {
|
|
98
104
|
suppressedV2Ids.add(v2Id);
|
|
105
|
+
}
|
|
99
106
|
}
|
|
100
107
|
const seen = new Set();
|
|
101
108
|
const detections = [];
|
|
@@ -111,6 +118,7 @@ async function main() {
|
|
|
111
118
|
}
|
|
112
119
|
}
|
|
113
120
|
// --merge: fold in detections from an external scan
|
|
121
|
+
let mergeCount = 0;
|
|
114
122
|
if (values.merge) {
|
|
115
123
|
try {
|
|
116
124
|
const external = JSON.parse(readFileSync(values.merge, "utf-8"));
|
|
@@ -118,6 +126,7 @@ async function main() {
|
|
|
118
126
|
if (!seen.has(d.id)) {
|
|
119
127
|
seen.add(d.id);
|
|
120
128
|
detections.push(d);
|
|
129
|
+
mergeCount++;
|
|
121
130
|
}
|
|
122
131
|
}
|
|
123
132
|
}
|
|
@@ -140,19 +149,45 @@ async function main() {
|
|
|
140
149
|
console.log(JSON.stringify(result, null, 2));
|
|
141
150
|
}
|
|
142
151
|
else {
|
|
143
|
-
|
|
144
|
-
|
|
152
|
+
// Print merge count before results
|
|
153
|
+
if (values.merge && mergeCount > 0) {
|
|
154
|
+
console.log(` ${chalk.green("✓")} Merged ${mergeCount} signals from ${values.merge}`);
|
|
155
|
+
}
|
|
156
|
+
renderResults(score, detections, scanDurationMs);
|
|
157
|
+
// Hint about --merge when autonomy is low and no merge was used
|
|
145
158
|
const autonomyScore = score.categories.find((c) => c.category === "autonomy");
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
159
|
+
const hasRemoteKeywords = detections.some((d) => d.id.includes("orchestrator") || d.source.includes("remote") || d.source.includes("tailscale"));
|
|
160
|
+
if (!values.merge && ((autonomyScore?.score ?? 0) < 30 || hasRemoteKeywords)) {
|
|
161
|
+
const sep = "─".repeat(49);
|
|
162
|
+
console.log(` ${chalk.gray(sep)}`);
|
|
163
|
+
console.log();
|
|
164
|
+
console.log(` ${chalk.bold.white("SCAN YOUR AGENT'S MACHINE")}`);
|
|
165
|
+
console.log(` ${chalk.gray("If your AI agent runs on a separate machine:")}`);
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(` ${chalk.gray("On the agent machine:")}`);
|
|
168
|
+
console.log(` ${chalk.cyan("npx vibecheck-score --deep --json > agent-scan.json")}`);
|
|
169
|
+
console.log();
|
|
170
|
+
console.log(` ${chalk.gray("Then merge here:")}`);
|
|
171
|
+
console.log(` ${chalk.cyan("npx vibecheck-score --deep --merge agent-scan.json --submit")}`);
|
|
172
|
+
console.log();
|
|
173
|
+
console.log(` ${chalk.gray('Or tell your AI assistant:')}`);
|
|
174
|
+
console.log(` ${chalk.gray('"Run npx vibecheck-score --deep --json in my workspace')}`);
|
|
175
|
+
console.log(` ${chalk.gray(' and save the output to agent-scan.json"')}`);
|
|
176
|
+
console.log();
|
|
149
177
|
}
|
|
150
178
|
}
|
|
179
|
+
// --compare requires --submit
|
|
180
|
+
if (values.compare && !values.submit) {
|
|
181
|
+
console.error("\x1b[31m --compare requires --submit\x1b[0m");
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
151
184
|
// --submit flow
|
|
152
185
|
if (values.submit) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
186
|
+
// Auto-generate handle if omitted
|
|
187
|
+
const handle = values.handle ?? randomBytes(4).toString("hex");
|
|
188
|
+
// Only validate if explicitly provided
|
|
189
|
+
if (values.handle && !HANDLE_RE.test(values.handle)) {
|
|
190
|
+
console.error("\x1b[31m --handle must be 3-39 chars, lowercase alphanumeric/hyphens/underscores\x1b[0m");
|
|
156
191
|
process.exit(1);
|
|
157
192
|
}
|
|
158
193
|
// Token management: ~/.vibecheck/token
|
|
@@ -170,14 +205,14 @@ async function main() {
|
|
|
170
205
|
// Confirmation unless --yes
|
|
171
206
|
if (!values.yes && !isJson) {
|
|
172
207
|
const rl = await import("node:readline/promises").then((m) => m.createInterface({ input: process.stdin, output: process.stdout }));
|
|
173
|
-
const answer = await rl.question(`\n Submit results as \x1b[1m${handle}\x1b[0m to vibecheck.
|
|
208
|
+
const answer = await rl.question(`\n Submit results as \x1b[1m${handle}\x1b[0m to vibecheck-brklyngg.vercel.app? [Y/n] `);
|
|
174
209
|
rl.close();
|
|
175
210
|
if (answer.trim().toLowerCase() === "n") {
|
|
176
211
|
console.log(" Submission skipped.");
|
|
177
212
|
return;
|
|
178
213
|
}
|
|
179
214
|
}
|
|
180
|
-
const submitUrl = values.url ?? "https://vibecheck.
|
|
215
|
+
const submitUrl = values.url ?? "https://vibecheck-brklyngg.vercel.app";
|
|
181
216
|
try {
|
|
182
217
|
const res = await fetch(`${submitUrl}/api/submit`, {
|
|
183
218
|
method: "POST",
|
|
@@ -195,6 +230,58 @@ async function main() {
|
|
|
195
230
|
console.log(` \x1b[32m│\x1b[0m ${inner.padEnd(width - 2)} \x1b[32m│\x1b[0m`);
|
|
196
231
|
console.log(` \x1b[32m│\x1b[0m ${urlLine.padEnd(width - 2)} \x1b[32m│\x1b[0m`);
|
|
197
232
|
console.log(` \x1b[32m└${border}┘\x1b[0m\n`);
|
|
233
|
+
// --compare flow
|
|
234
|
+
if (values.compare) {
|
|
235
|
+
const compareAction = values.compare === "create" ? "create" : "join";
|
|
236
|
+
const comparePayload = { action: compareAction, handle };
|
|
237
|
+
if (compareAction === "join") {
|
|
238
|
+
const code = values.compare;
|
|
239
|
+
if (!/^[a-z0-9]{6}$/.test(code)) {
|
|
240
|
+
console.error(chalk.red(" --compare code must be 6 lowercase hex characters"));
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
comparePayload.code = code;
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
const cmpRes = await fetch(`${submitUrl}/api/compare`, {
|
|
247
|
+
method: "POST",
|
|
248
|
+
headers: { "Content-Type": "application/json" },
|
|
249
|
+
body: JSON.stringify(comparePayload),
|
|
250
|
+
});
|
|
251
|
+
if (cmpRes.ok) {
|
|
252
|
+
const cmpBody = (await cmpRes.json());
|
|
253
|
+
const sep = "─".repeat(42);
|
|
254
|
+
if (compareAction === "create" && cmpBody.code) {
|
|
255
|
+
console.log(` ${chalk.bold.white("COMPARE MODE")}`);
|
|
256
|
+
console.log(` ${chalk.gray(sep)}`);
|
|
257
|
+
console.log(` Share this code: ${chalk.bold.white(cmpBody.code)}`);
|
|
258
|
+
console.log();
|
|
259
|
+
console.log(` They run:`);
|
|
260
|
+
console.log(` ${chalk.cyan(`npx vibecheck-score --deep --submit --compare ${cmpBody.code}`)}`);
|
|
261
|
+
console.log();
|
|
262
|
+
const compareUrl = cmpBody.url ?? `${submitUrl}/compare/${cmpBody.code}`;
|
|
263
|
+
console.log(` Then both visit:`);
|
|
264
|
+
console.log(` ${chalk.cyan(compareUrl)}`);
|
|
265
|
+
console.log(` ${chalk.gray(sep)}`);
|
|
266
|
+
console.log();
|
|
267
|
+
}
|
|
268
|
+
else if (compareAction === "join" && cmpBody.url) {
|
|
269
|
+
console.log(` ${chalk.green("✓")} Joined comparison ${chalk.bold(values.compare)}`);
|
|
270
|
+
console.log();
|
|
271
|
+
console.log(` View the comparison:`);
|
|
272
|
+
console.log(` ${chalk.cyan(cmpBody.url)}`);
|
|
273
|
+
console.log();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
const cmpErr = (await cmpRes.json().catch(() => ({})));
|
|
278
|
+
console.error(chalk.red(` Compare failed: ${cmpErr.error ?? cmpRes.statusText}`));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
console.error(chalk.yellow(` Could not reach ${submitUrl} for comparison.`));
|
|
283
|
+
}
|
|
284
|
+
}
|
|
198
285
|
}
|
|
199
286
|
else if (res.status === 403) {
|
|
200
287
|
console.error("\n \x1b[31m✗ This handle is owned by a different machine.\x1b[0m");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import type { ScoreResult, Detection } from "../types.js";
|
|
1
|
+
import type { ScoreResult, Detection, TaxonomyCategory } from "../types.js";
|
|
2
|
+
export declare const ARCHETYPE_NAMES: Record<string, string>;
|
|
3
|
+
export declare const ARCHETYPE_DESCRIPTIONS: Record<string, string>;
|
|
4
|
+
export declare const LETTER_MEANINGS: Record<string, [string, string]>;
|
|
5
|
+
export declare function commentaryForScore(cat: TaxonomyCategory, score: number): string;
|
|
2
6
|
export declare function generateNarrative(score: ScoreResult, detections: Detection[]): string;
|
|
3
7
|
//# sourceMappingURL=narrative.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/output/narrative.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/output/narrative.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAiD5E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBzD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAK5D,CAAC;AAUF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,SAAS,EAAE,GACtB,MAAM,CA8CR"}
|
package/dist/output/narrative.js
CHANGED
|
@@ -44,6 +44,50 @@ const DIMENSION_COMMENTARY = {
|
|
|
44
44
|
high: "Full social integration. Published tools, multi-channel AI presence, community builder.",
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
|
+
export const ARCHETYPE_NAMES = {
|
|
48
|
+
MARD: "The Orchestrator",
|
|
49
|
+
MARC: "The Methodist",
|
|
50
|
+
MARL: "The Strategist",
|
|
51
|
+
MACD: "The Planner",
|
|
52
|
+
MACL: "The Analyst",
|
|
53
|
+
MGRD: "The Engineer",
|
|
54
|
+
MGRL: "The Pragmatist",
|
|
55
|
+
MGCD: "The Sentinel",
|
|
56
|
+
MGCL: "The Scholar",
|
|
57
|
+
VARD: "The Powerhouse",
|
|
58
|
+
VARL: "The Maverick",
|
|
59
|
+
VACD: "The Experimenter",
|
|
60
|
+
VACL: "The Freelancer",
|
|
61
|
+
VGRD: "The Blitz Builder",
|
|
62
|
+
VGRL: "The Scrapper",
|
|
63
|
+
VGCD: "The Tinkerer",
|
|
64
|
+
VGCL: "The Explorer",
|
|
65
|
+
};
|
|
66
|
+
export const ARCHETYPE_DESCRIPTIONS = {
|
|
67
|
+
MARD: "Deep model expertise, autonomous agents, rigorous shipping, and a deep tool ecosystem.",
|
|
68
|
+
MARC: "Strategic model selection with autonomous agents, but shipping is measured and deliberate.",
|
|
69
|
+
MARL: "Smart model strategy with autonomous agents and rapid shipping, but a lighter tool footprint.",
|
|
70
|
+
MACD: "Master strategist with autonomous agents and deep tooling, but cautious on shipping.",
|
|
71
|
+
MACL: "Strategic thinker with autonomous agents in a lean setup. Quality over quantity.",
|
|
72
|
+
MGRD: "Model expertise paired with guided agents and rigorous process. You steer the ship.",
|
|
73
|
+
MGRL: "Smart model use, guided agents, and rapid shipping with a lean stack.",
|
|
74
|
+
MGCD: "Deep model knowledge, guided agents, cautious shipping, deep tools. The fortress.",
|
|
75
|
+
MGCL: "Thoughtful model strategy in a guided, lean setup. Methodical and measured.",
|
|
76
|
+
VARD: "Velocity-first with autonomous agents, rapid shipping, and deep tooling.",
|
|
77
|
+
VARL: "Speed plus autonomy plus rapid shipping. Light on tools but heavy on output.",
|
|
78
|
+
VACD: "Velocity seeker with autonomous agents, cautious shipping, and deep tools.",
|
|
79
|
+
VACL: "Fast, autonomous, cautious, light. Moves fast but picks battles carefully.",
|
|
80
|
+
VGRD: "Velocity is the vibe. Ships fast, integrates everything, but keeps the AI on a leash.",
|
|
81
|
+
VGRL: "Fast, guided, rapid, light. Does more with less and ships it yesterday.",
|
|
82
|
+
VGCD: "Velocity seeker who tinkers with deep tools under guided supervision.",
|
|
83
|
+
VGCL: "Fast-moving, guided, cautious, and light. Just getting started, but moving quick.",
|
|
84
|
+
};
|
|
85
|
+
export const LETTER_MEANINGS = {
|
|
86
|
+
intelligence: ["M = Master strategist", "V = Velocity seeker"],
|
|
87
|
+
autonomy: ["A = Autonomous agents", "G = Guided agents"],
|
|
88
|
+
ship: ["R = Rapid shipper", "C = Cautious shipper"],
|
|
89
|
+
depth: ["D = Deep tooling", "L = Light tooling"],
|
|
90
|
+
};
|
|
47
91
|
const IMPROVEMENT_HINTS = {
|
|
48
92
|
ship: "Add a GitHub Actions workflow or deploy config to level up.",
|
|
49
93
|
tooling: "Try connecting an MCP server — filesystem or GitHub are great starters.",
|
|
@@ -51,7 +95,7 @@ const IMPROVEMENT_HINTS = {
|
|
|
51
95
|
security: "Make sure .env is in your .gitignore and review agent permissions.",
|
|
52
96
|
ops: "Add build/dev/lint scripts to package.json for a quick ops boost.",
|
|
53
97
|
};
|
|
54
|
-
function commentaryForScore(cat, score) {
|
|
98
|
+
export function commentaryForScore(cat, score) {
|
|
55
99
|
const c = DIMENSION_COMMENTARY[cat];
|
|
56
100
|
if (score >= 60)
|
|
57
101
|
return c.high;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/output/narrative.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,kEAAkE;AAClE,6DAA6D;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,oBAAoB,GAGtB;IACF,YAAY,EAAE;QACZ,GAAG,EAAE,6EAA6E;QAClF,GAAG,EAAE,qFAAqF;QAC1F,IAAI,EAAE,4FAA4F;KACnG;IACD,OAAO,EAAE;QACP,GAAG,EAAE,6FAA6F;QAClG,GAAG,EAAE,0EAA0E;QAC/E,IAAI,EAAE,2GAA2G;KAClH;IACD,UAAU,EAAE;QACV,GAAG,EAAE,8EAA8E;QACnF,GAAG,EAAE,gFAAgF;QACrF,IAAI,EAAE,sHAAsH;KAC7H;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,uDAAuD;QAC5D,GAAG,EAAE,gFAAgF;QACrF,IAAI,EAAE,kGAAkG;KACzG;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,iEAAiE;QACtE,GAAG,EAAE,qEAAqE;QAC1E,IAAI,EAAE,6FAA6F;KACpG;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,iFAAiF;QACtF,GAAG,EAAE,mFAAmF;QACxF,IAAI,EAAE,+FAA+F;KACtG;IACD,GAAG,EAAE;QACH,GAAG,EAAE,wFAAwF;QAC7F,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,oFAAoF;KAC3F;IACD,MAAM,EAAE;QACN,GAAG,EAAE,iEAAiE;QACtE,GAAG,EAAE,sEAAsE;QAC3E,IAAI,EAAE,yFAAyF;KAChG;CACF,CAAC;AAEF,MAAM,iBAAiB,GAA8C;IACnE,IAAI,EAAE,6DAA6D;IACnE,OAAO,EAAE,yEAAyE;IAClF,UAAU,EAAE,4EAA4E;IACxF,QAAQ,EAAE,oEAAoE;IAC9E,GAAG,EAAE,mEAAmE;CACzE,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/output/narrative.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ScoreResult, Detection } from "../types.js";
|
|
2
2
|
export declare function createSpinner(text: string): import("ora").Ora;
|
|
3
|
-
export declare function renderResults(score: ScoreResult, detections: Detection[]): void;
|
|
3
|
+
export declare function renderResults(score: ScoreResult, detections: Detection[], durationMs?: number): void;
|
|
4
4
|
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/output/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/output/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAEV,MAAM,aAAa,CAAC;AAgJrB,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,qBAEzC;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,SAAS,EAAE,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CA0GN"}
|
package/dist/output/terminal.js
CHANGED
|
@@ -3,6 +3,10 @@ import ora from "ora";
|
|
|
3
3
|
import { CATEGORY_EMOJI, CATEGORY_LABELS, TAXONOMY_CATEGORIES } from "../types.js";
|
|
4
4
|
import { getNextTier } from "../scoring/tiers.js";
|
|
5
5
|
import { generateNarrative } from "./narrative.js";
|
|
6
|
+
import { ARCHETYPE_NAMES, ARCHETYPE_DESCRIPTIONS, LETTER_MEANINGS, commentaryForScore, } from "./narrative.js";
|
|
7
|
+
const HEAVY_SEP = "━".repeat(53);
|
|
8
|
+
const LIGHT_SEP = "─".repeat(52);
|
|
9
|
+
const INDENT = " ";
|
|
6
10
|
function scoreColor(score) {
|
|
7
11
|
if (score >= 50)
|
|
8
12
|
return chalk.green;
|
|
@@ -19,77 +23,180 @@ function tierBadge(tier) {
|
|
|
19
23
|
};
|
|
20
24
|
return badges[tier] ?? chalk.gray(`[${tier}]`);
|
|
21
25
|
}
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
// Strip ANSI escape codes for width measurement
|
|
27
|
+
function stripAnsi(s) {
|
|
28
|
+
// eslint-disable-next-line no-control-regex
|
|
29
|
+
return s.replace(/\x1b\[[0-9;]*m/g, "");
|
|
24
30
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
31
|
+
function renderArchetypeBox(typeCode) {
|
|
32
|
+
const name = ARCHETYPE_NAMES[typeCode] ?? "Unknown";
|
|
33
|
+
const desc = ARCHETYPE_DESCRIPTIONS[typeCode] ?? "";
|
|
34
|
+
const keys = Object.keys(LETTER_MEANINGS);
|
|
35
|
+
const line1 = `${typeCode} — ${name}`;
|
|
36
|
+
const meanings1 = `${LETTER_MEANINGS[keys[0]][typeCode[0] === "M" ? 0 : 1]} · ${LETTER_MEANINGS[keys[1]][typeCode[1] === "A" ? 0 : 1]}`;
|
|
37
|
+
const meanings2 = `${LETTER_MEANINGS[keys[2]][typeCode[2] === "R" ? 0 : 1]} · ${LETTER_MEANINGS[keys[3]][typeCode[3] === "D" ? 0 : 1]}`;
|
|
38
|
+
// Truncate description to fit in box (max 49 chars inner width)
|
|
39
|
+
const maxDesc = 49;
|
|
40
|
+
const truncDesc = desc.length > maxDesc ? desc.slice(0, maxDesc - 1) + "…" : desc;
|
|
41
|
+
const boxW = 53;
|
|
42
|
+
const innerW = boxW - 4; // "│ " + " │"
|
|
43
|
+
const pad = (s) => {
|
|
44
|
+
const plain = stripAnsi(s);
|
|
45
|
+
return s + " ".repeat(Math.max(0, innerW - plain.length));
|
|
46
|
+
};
|
|
47
|
+
const lines = [
|
|
48
|
+
`${INDENT}┌${"─".repeat(boxW - 2)}┐`,
|
|
49
|
+
`${INDENT}│ ${pad(chalk.bold.white(line1))} │`,
|
|
50
|
+
`${INDENT}│ ${pad(chalk.gray(meanings1))} │`,
|
|
51
|
+
`${INDENT}│ ${pad(chalk.gray(meanings2))} │`,
|
|
52
|
+
`${INDENT}│ ${pad(chalk.gray(truncDesc))} │`,
|
|
53
|
+
`${INDENT}└${"─".repeat(boxW - 2)}┘`,
|
|
54
|
+
];
|
|
55
|
+
return lines.join("\n");
|
|
56
|
+
}
|
|
57
|
+
function renderTaxonomyTable(detections, durationMs) {
|
|
58
|
+
const lines = [];
|
|
59
|
+
const catW = 14;
|
|
60
|
+
const nameW = 40;
|
|
61
|
+
// Group detections by category in taxonomy order
|
|
62
|
+
const grouped = new Map();
|
|
63
|
+
for (const d of detections) {
|
|
64
|
+
const list = grouped.get(d.category) ?? [];
|
|
65
|
+
list.push(d);
|
|
66
|
+
grouped.set(d.category, list);
|
|
48
67
|
}
|
|
49
|
-
|
|
50
|
-
// Detection list grouped by category
|
|
51
|
-
console.log(chalk.bold(" Detections"));
|
|
52
|
-
console.log(chalk.dim(" " + "-".repeat(52)));
|
|
68
|
+
let categoryCount = 0;
|
|
53
69
|
for (const cat of TAXONOMY_CATEGORIES) {
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
70
|
+
const items = grouped.get(cat);
|
|
71
|
+
if (!items || items.length === 0)
|
|
56
72
|
continue;
|
|
57
|
-
|
|
58
|
-
for (
|
|
73
|
+
categoryCount++;
|
|
74
|
+
for (let i = 0; i < items.length; i++) {
|
|
75
|
+
const d = items[i];
|
|
76
|
+
const catLabel = i === 0 ? CATEGORY_LABELS[cat] : "";
|
|
77
|
+
const truncName = d.name.length > nameW ? d.name.slice(0, nameW - 1) + "…" : d.name;
|
|
59
78
|
const badge = tierBadge(d.tier);
|
|
60
|
-
|
|
61
|
-
const conf = d.confidence === "low" ? chalk.dim(" (low)") : "";
|
|
62
|
-
console.log(` ${badge} ${d.name}${innovation}${conf}`);
|
|
63
|
-
console.log(` ${chalk.dim(d.source)}`);
|
|
79
|
+
lines.push(`${INDENT} ${catLabel.padEnd(catW)} ${truncName.padEnd(nameW)} ${badge}`);
|
|
64
80
|
}
|
|
65
81
|
}
|
|
82
|
+
// Footer
|
|
83
|
+
const scanTime = durationMs ? ` · scanned in ${(durationMs / 1000).toFixed(1)}s` : "";
|
|
84
|
+
lines.push(chalk.gray(`${INDENT} ${detections.length} signals · ${categoryCount} categories${scanTime}`));
|
|
85
|
+
return lines.join("\n");
|
|
86
|
+
}
|
|
87
|
+
function renderKeyMechanisms(detections) {
|
|
88
|
+
const lines = [];
|
|
89
|
+
// Named mechanisms: detections with details.names
|
|
90
|
+
const named = detections.filter((d) => d.details?.names && Array.isArray(d.details.names) && d.details.names.length > 0);
|
|
91
|
+
// Pattern bonuses: id starts with "pattern:"
|
|
92
|
+
const patterns = detections.filter((d) => d.id.startsWith("pattern:"));
|
|
93
|
+
if (named.length === 0 && patterns.length === 0)
|
|
94
|
+
return "";
|
|
95
|
+
lines.push(`${INDENT}${chalk.bold.white("KEY MECHANISMS")}`);
|
|
96
|
+
lines.push(`${INDENT}${chalk.gray(LIGHT_SEP)}`);
|
|
97
|
+
lines.push("");
|
|
98
|
+
for (const d of named) {
|
|
99
|
+
const names = d.details.names;
|
|
100
|
+
const maxShow = 6;
|
|
101
|
+
const shown = names.slice(0, maxShow).join(", ");
|
|
102
|
+
const more = names.length > maxShow ? ` +${names.length - maxShow} more` : "";
|
|
103
|
+
lines.push(`${INDENT} ${chalk.white(d.name)}: ${chalk.gray(shown + more)}`);
|
|
104
|
+
}
|
|
105
|
+
// Deduplicate patterns — only show the primary emission (not :ops, :continuity suffixes)
|
|
106
|
+
const seenPatterns = new Set();
|
|
107
|
+
for (const d of patterns) {
|
|
108
|
+
const base = d.id.includes(":") ? d.id.split(":").slice(0, 2).join(":") : d.id;
|
|
109
|
+
if (seenPatterns.has(base))
|
|
110
|
+
continue;
|
|
111
|
+
seenPatterns.add(base);
|
|
112
|
+
lines.push(`${INDENT} ${chalk.yellow("★")} ${chalk.white(d.name)}`);
|
|
113
|
+
}
|
|
114
|
+
lines.push("");
|
|
115
|
+
return lines.join("\n");
|
|
116
|
+
}
|
|
117
|
+
export function createSpinner(text) {
|
|
118
|
+
return ora({ text, spinner: "dots" });
|
|
119
|
+
}
|
|
120
|
+
export function renderResults(score, detections, durationMs) {
|
|
121
|
+
console.log();
|
|
122
|
+
// 1. Top separator
|
|
123
|
+
console.log(`${INDENT}${chalk.gray(HEAVY_SEP)}`);
|
|
124
|
+
console.log();
|
|
125
|
+
// 2. VIBE CODER SCORE header
|
|
126
|
+
console.log(`${INDENT}${chalk.bold.white("VIBE CODER SCORE")}`);
|
|
127
|
+
console.log();
|
|
128
|
+
// 3. Level · TierTitle [CODE] + tagline
|
|
129
|
+
const levelStr = `Level ${score.level}`;
|
|
130
|
+
const tierStr = score.tier.title;
|
|
131
|
+
const typeStr = `[${score.typeCode.code}]`;
|
|
132
|
+
console.log(`${INDENT}${chalk.bold.white(`${levelStr} · ${tierStr}`)} ${chalk.gray(typeStr)}`);
|
|
133
|
+
console.log(`${INDENT}${chalk.gray(`"${score.tier.tagline}"`)}`);
|
|
134
|
+
console.log();
|
|
135
|
+
// 4. Archetype box
|
|
136
|
+
console.log(renderArchetypeBox(score.typeCode.code));
|
|
66
137
|
console.log();
|
|
67
|
-
// Pioneer badge
|
|
138
|
+
// 5. Pioneer badge (if earned)
|
|
68
139
|
if (score.pioneer.isPioneer) {
|
|
69
|
-
console.log(chalk.yellow.bold("
|
|
70
|
-
console.log(chalk.yellow(`
|
|
140
|
+
console.log(`${INDENT}${chalk.yellow.bold("★ Pioneer Badge")}`);
|
|
141
|
+
console.log(`${INDENT}${chalk.yellow(` ${score.pioneer.innovations.length} innovation(s) detected`)}`);
|
|
71
142
|
for (const inn of score.pioneer.innovations) {
|
|
72
|
-
console.log(chalk.yellow(`
|
|
143
|
+
console.log(`${INDENT}${chalk.yellow(` → ${inn.name}`)}`);
|
|
73
144
|
}
|
|
74
145
|
console.log();
|
|
75
146
|
}
|
|
76
|
-
//
|
|
147
|
+
// 6. YOUR SETUP header + bar chart + narrative
|
|
148
|
+
console.log(`${INDENT}${chalk.bold.white("YOUR SETUP")}`);
|
|
149
|
+
console.log(`${INDENT}${chalk.gray(LIGHT_SEP)}`);
|
|
150
|
+
console.log();
|
|
151
|
+
const catMap = new Map(score.categories.map((c) => [c.category, c.score]));
|
|
152
|
+
for (const cat of TAXONOMY_CATEGORIES) {
|
|
153
|
+
const s = catMap.get(cat) ?? 0;
|
|
154
|
+
const label = CATEGORY_LABELS[cat].padEnd(12);
|
|
155
|
+
const filled = Math.round(s / 10);
|
|
156
|
+
const empty = 10 - filled;
|
|
157
|
+
const bar = scoreColor(s)("█".repeat(filled)) + chalk.gray("░".repeat(empty));
|
|
158
|
+
const scoreStr = chalk.bold.white(String(s).padStart(3));
|
|
159
|
+
console.log(`${INDENT} ${label} ${bar} ${scoreStr}`);
|
|
160
|
+
}
|
|
161
|
+
console.log();
|
|
162
|
+
const narrative = generateNarrative(score, detections);
|
|
163
|
+
console.log(`${INDENT}${chalk.white(narrative)}`);
|
|
164
|
+
console.log();
|
|
165
|
+
// 7. WHAT WE FOUND header + taxonomy table
|
|
166
|
+
console.log(`${INDENT}${chalk.bold.white("WHAT WE FOUND")}`);
|
|
167
|
+
console.log(`${INDENT}${chalk.gray(LIGHT_SEP)}`);
|
|
168
|
+
console.log();
|
|
169
|
+
console.log(renderTaxonomyTable(detections, durationMs));
|
|
170
|
+
console.log();
|
|
171
|
+
// 7b. Key mechanisms (named agents/skills/commands + pattern bonuses)
|
|
172
|
+
const keyMech = renderKeyMechanisms(detections);
|
|
173
|
+
if (keyMech) {
|
|
174
|
+
console.log(keyMech);
|
|
175
|
+
}
|
|
176
|
+
// 8. GROWTH AREAS — up to 3 weakest categories with commentary
|
|
77
177
|
const weakest = [...score.categories]
|
|
78
178
|
.filter((c) => c.score < 50)
|
|
79
179
|
.sort((a, b) => a.score - b.score)
|
|
80
180
|
.slice(0, 3);
|
|
81
181
|
if (weakest.length > 0) {
|
|
82
|
-
console.log(chalk.bold("
|
|
182
|
+
console.log(`${INDENT}${chalk.bold.white("GROWTH AREAS")}`);
|
|
183
|
+
console.log(`${INDENT}${chalk.gray(LIGHT_SEP)}`);
|
|
184
|
+
console.log();
|
|
83
185
|
for (const w of weakest) {
|
|
84
|
-
|
|
186
|
+
const emoji = CATEGORY_EMOJI[w.category];
|
|
187
|
+
console.log(`${INDENT} ${emoji} ${chalk.white(CATEGORY_LABELS[w.category])} ${chalk.gray(`(${w.score}/100)`)}`);
|
|
188
|
+
console.log(`${INDENT} ${chalk.gray(commentaryForScore(w.category, w.score))}`);
|
|
85
189
|
}
|
|
86
190
|
console.log();
|
|
87
191
|
}
|
|
88
|
-
// Next tier hint
|
|
192
|
+
// 9. Next tier hint
|
|
89
193
|
const next = getNextTier(score.tier.title);
|
|
90
194
|
if (next) {
|
|
91
|
-
console.log(chalk.
|
|
195
|
+
console.log(`${INDENT}${chalk.gray(`Next tier: ${next.title} (level ${next.minLevel}+)`)}`);
|
|
92
196
|
console.log();
|
|
93
197
|
}
|
|
198
|
+
// 10. Bottom separator
|
|
199
|
+
console.log(`${INDENT}${chalk.gray(HEAVY_SEP)}`);
|
|
200
|
+
console.log();
|
|
94
201
|
}
|
|
95
202
|
//# sourceMappingURL=terminal.js.map
|