vibe-roast 0.98.3 → 0.98.4
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 +19 -5
- package/assests/readme/vibe-roast-16-types-banner.webp +0 -0
- package/assests/readme/vibe-roast-promo-landscape.gif +0 -0
- package/assests/screenshots/roast-result-hero.jpg +0 -0
- package/package.json +5 -2
- package/src/lib/ai-roast.js +23 -14
- package/src/lib/roast-evidence.js +178 -3
- package/src/lib/roast-snapshot.js +3 -1
- package/src/sources/codex.js +30 -1
- package/assests/badges/.gitkeep +0 -0
- package/assests/badges/01-builder/builder-badge.png +0 -0
- package/assests/badges/01-builder/builder-badge.svg +0 -4
- package/assests/badges/02-debugger/debugger-badge.png +0 -0
- package/assests/badges/02-debugger/debugger-badge.svg +0 -4
- package/assests/badges/03-architect/architect-badge.png +0 -0
- package/assests/badges/03-architect/architect-badge.svg +0 -4
- package/assests/badges/04-codex-believer/codex-believer-badge.png +0 -0
- package/assests/badges/04-codex-believer/codex-believer-badge.svg +0 -4
- package/assests/badges/05-prompt-priest/prompt-priest-badge.png +0 -0
- package/assests/badges/05-prompt-priest/prompt-priest-badge.svg +0 -4
- package/assests/badges/06-tab-hoarder/tab-hoarder-badge.png +0 -0
- package/assests/badges/06-tab-hoarder/tab-hoarder-badge.svg +0 -4
- package/assests/badges/07-context-maxxer/context-maxxer-badge.png +0 -0
- package/assests/badges/07-context-maxxer/context-maxxer-badge.svg +0 -4
- package/assests/badges/08-yolo-shipper/yolo-shipper-badge.png +0 -0
- package/assests/badges/08-yolo-shipper/yolo-shipper-badge.svg +0 -4
- package/assests/banners/.gitkeep +0 -0
- package/assests/banners/home-hero.png +0 -0
- package/assests/banners/home-hero.svg +0 -3
- package/assests/banners/result-header.png +0 -0
- package/assests/banners/result-header.svg +0 -3
- package/assests/banners/share-strip.png +0 -0
- package/assests/banners/share-strip.svg +0 -3
- package/assests/scripts/compose-banners.py +0 -148
- package/assests/scripts/profiles.json +0 -104
- package/assests/scripts/qa-faces.mjs +0 -72
- package/assests/scripts/score-engine.js +0 -62
- package/assests/scripts/split-badges.py +0 -49
- package/assests/scripts/split-reference.py +0 -38
- package/assests/scripts/sync-banners.mjs +0 -45
- package/assests/scripts/sync-cards.mjs +0 -50
- package/assests/scripts/sync-raster.mjs +0 -118
- package/assests/scripts/vibe-types.json +0 -22
- package/assests/source/design-system.md +0 -50
- package/assests/source/prompts/01-builder.md +0 -19
- package/assests/source/prompts/02-debugger.md +0 -17
- package/assests/source/prompts/03-architect.md +0 -16
- package/assests/source/prompts/04-codex-believer.md +0 -13
- package/assests/source/prompts/05-prompt-priest.md +0 -13
- package/assests/source/prompts/06-tab-hoarder.md +0 -13
- package/assests/source/prompts/07-context-maxxer.md +0 -13
- package/assests/source/prompts/08-yolo-shipper.md +0 -13
- package/assests/source/references/sbti-style-reference-board.png +0 -0
- package/assests/source/references/vibe-badges-v6-board.png +0 -0
- package/assests/source/references/vibe-mascots-v4-reference.png +0 -0
- package/assests/source/references/vibe-profiles-v5-board-a.png +0 -0
- package/assests/source/references/vibe-profiles-v5-board-b.png +0 -0
- package/assests/source/vibe-types-visual-brief.md +0 -38
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
<img
|
|
5
|
-
src="./assests/
|
|
6
|
-
width="
|
|
7
|
-
alt="Vibe Roaster
|
|
5
|
+
src="./assests/readme/vibe-roast-16-types-banner.webp"
|
|
6
|
+
width="1100"
|
|
7
|
+
alt="All sixteen Vibe Roaster coding personalities gathered around the Vibe Roast title"
|
|
8
8
|
/>
|
|
9
9
|
|
|
10
10
|
<h1>Vibe Roaster</h1>
|
|
@@ -53,11 +53,25 @@ Vibe Roaster reads supported local coding-agent histories, separates real user i
|
|
|
53
53
|
|
|
54
54
|
The personality calculation is deterministic and local. AI writing is optional.
|
|
55
55
|
|
|
56
|
+
<p align="center">
|
|
57
|
+
<a href="./media/promo/masters/landscape.mp4">
|
|
58
|
+
<img
|
|
59
|
+
src="./assests/readme/vibe-roast-promo-landscape.gif"
|
|
60
|
+
width="1100"
|
|
61
|
+
alt="Vibe Roaster turns prompt fragments into a four-axis personality verdict, one of sixteen characters, and a shareable roast"
|
|
62
|
+
/>
|
|
63
|
+
</a>
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
<p align="center">
|
|
67
|
+
<sub>Watch the 15-second launch film · click for the 1080p version</sub>
|
|
68
|
+
</p>
|
|
69
|
+
|
|
56
70
|
<p align="center">
|
|
57
71
|
<img
|
|
58
72
|
src="./assests/screenshots/roast-result-hero.jpg"
|
|
59
73
|
width="1100"
|
|
60
|
-
alt="Vibe Roaster result showing the
|
|
74
|
+
alt="Vibe Roaster result showing the Builder personality, topic-aware hashtags, token statistics, behavioral radar, and type axes"
|
|
61
75
|
/>
|
|
62
76
|
</p>
|
|
63
77
|
|
|
@@ -239,7 +253,7 @@ The writer cannot change the deterministic type. In one model call it produces:
|
|
|
239
253
|
|
|
240
254
|
- three-beat English and Chinese roasts;
|
|
241
255
|
- bilingual TL;DR punchlines;
|
|
242
|
-
-
|
|
256
|
+
- five paired Hashtags with `en`, `zh`, semantic `kind`, and a short shared `meaning`.
|
|
243
257
|
|
|
244
258
|
Hashtags are interpretations rather than frequency labels. Chinese is localized from the intended joke instead of translated word for word. Proper names, framework names, and meaningful acronyms may remain unchanged when translation would lose their identity.
|
|
245
259
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibe-roast",
|
|
3
|
-
"version": "0.98.
|
|
3
|
+
"version": "0.98.4",
|
|
4
4
|
"description": "Local-first AI coding personality profiler, usage dashboard, and evidence-grounded roast.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
|
@@ -32,7 +32,10 @@
|
|
|
32
32
|
"worker/wrangler.jsonc",
|
|
33
33
|
"worker/src/",
|
|
34
34
|
"dashboard/dist/",
|
|
35
|
-
"assests/",
|
|
35
|
+
"assests/characters/",
|
|
36
|
+
"assests/characters-vibe-types/",
|
|
37
|
+
"assests/readme/",
|
|
38
|
+
"assests/screenshots/",
|
|
36
39
|
"README.md"
|
|
37
40
|
],
|
|
38
41
|
"scripts": {
|
package/src/lib/ai-roast.js
CHANGED
|
@@ -57,7 +57,8 @@ COMEDY ENGINE
|
|
|
57
57
|
- Use a three-beat escalation: (1) a sharp cold open that casts the personality as a character, (2) a receipts paragraph with 2-4 evidence-backed details, and (3) an absurd-but-grounded escalation ending on the strongest punchline.
|
|
58
58
|
- Sustain one concrete metaphor world—courtroom, kitchen, airport, laboratory, reality show, religion, heist, sports commentary, etc.—chosen to fit the evidence. Do not mix five unrelated metaphors.
|
|
59
59
|
- Prefer specific nouns, active verbs, varied sentence rhythm, callbacks, contrast, and comic misdirection. One sentence may be dry; the next should twist the knife.
|
|
60
|
-
-
|
|
60
|
+
- When recurring_domain_clusters is non-empty, choose the most semantically distinctive recognizable cluster as the preferred theme evidence. Do not mechanically choose the first or highest-salience row: salience measures repetition, not comic or semantic quality. Ignore identifier fragments, generic UI words, status prose, and operational boilerplate.
|
|
61
|
+
- Otherwise mention at least one distinctive recurring domain concept when recurring_domain_concepts is non-empty. Treat it as a prompt mention, not proof of a project.
|
|
61
62
|
- Use exact numbers selectively as "receipts"; never turn every sentence into a dashboard caption.
|
|
62
63
|
- The final sentence must be a quotable punchline, not advice, diagnosis, or a generic summary.
|
|
63
64
|
- English and Chinese should be locally funny adaptations using the same evidence beats, not stiff line-by-line translations.
|
|
@@ -66,14 +67,20 @@ COMEDY ENGINE
|
|
|
66
67
|
|
|
67
68
|
HASHTAG ENGINE
|
|
68
69
|
- Hashtags are interpretations, not a frequency table. Never copy a recurring concept merely because it ranks highly.
|
|
69
|
-
- Read coherent concept clusters and infer the recognizable domain, community, scene, or
|
|
70
|
-
-
|
|
71
|
-
-
|
|
70
|
+
- Read coherent concept clusters and infer the recognizable domain, community, scene, or playful fictional role behind them. For example, preflop + folds + raises + river can become "HoldemPlayer"; 前庭 + HIT + nystagmus can become "VestibularLab" or "前庭实验室"; Delta Force + bullet + price + market can become "AmmoBroker"/"弹药盘商" or the sharper "ArmsDealer"/"武器贩子". Examples demonstrate reasoning only; never copy an example unless the supplied evidence supports that exact scene.
|
|
71
|
+
- Treat hashtags as stage names from a comedy writer's room, not cautious analytics labels. Bold exaggeration, slang, puns, subculture references, mock job titles, and slightly unhinged fictional roles are welcome.
|
|
72
|
+
- A distinctive standalone recurring concept may inspire a fictional role even when it does not form a large cluster. Prefer a funny, recognizable interpretation over a technically exhaustive label.
|
|
73
|
+
- Produce a varied set: usually include a domain/scene alter ego, a coding-behavior joke, the immutable personality title, and one or two wildcards tied to the roast metaphor or a memorable prop. Change the mix when the evidence offers a better joke.
|
|
72
74
|
- Do not emit isolated raw keywords such as "preflop", "browser", "implementation", "debugging", or "UI" as tags. A proper name or acronym may remain literal only when it is already a meaningful identity label.
|
|
73
|
-
- Generate every tag as one bilingual pair with a shared semantic gloss. The Chinese tag must localize the intended joke, not translate the English surface form word by word.
|
|
75
|
+
- Generate every tag as one bilingual pair with a shared semantic gloss. The Chinese tag must localize the intended joke, not translate the English surface form word by word.
|
|
74
76
|
- When kind is "personality_character", reuse immutable_profile.personality and immutable_profile.personality_zh instead of inventing a new translation.
|
|
75
77
|
- Use kind "proper_noun" only for names or acronyms that should remain unchanged in both languages, such as GitHub, HIT, or ONNX.
|
|
76
|
-
-
|
|
78
|
+
- A hashtag may cast a cluster or distinctive recurring concept as an obviously fictional scene role, but it must not assert the user's real occupation, credential, project ownership, or offline conduct. "ArmsDealer" is a comic handle; "the user sells weapons" is a forbidden factual claim.
|
|
79
|
+
- Never fuse unrelated concepts. Combine concepts only when recurring_domain_clusters explicitly shows that they repeatedly co-occurred.
|
|
80
|
+
- Every tag needs a different job. Generic stems such as Prompt, Code, Context, Build, Architect, Guru, Master, Minimalist, Ninja, or Wizard are allowed when they complete a specific punchline (for example "CodeCult"); reject them only as bland filler such as "CodeMaster".
|
|
81
|
+
- The best domain tag should be difficult to write without the supplied topic evidence. The behavior tag should turn a measured contradiction into a concrete prop, scene role, or consequence—not a workflow label.
|
|
82
|
+
- Only the immutable personality tag may be a plain title. The other tags must contain a concrete scene, prop, social role, tension, or punchline.
|
|
83
|
+
- Before returning, silently run a writer's-room test: if a tag could describe almost any developer, if two tags are synonyms, or if nobody would want to screenshot it, replace it with a stranger and more evidence-specific joke.
|
|
77
84
|
|
|
78
85
|
ANTI-BLANDNESS
|
|
79
86
|
- Avoid report voice and filler such as "You're a builder", "all about", "minor signal", "faint echo", "verification pending", "context is optional", "X master", or "the data suggests".
|
|
@@ -91,7 +98,8 @@ EVIDENCE RULES
|
|
|
91
98
|
- A low testing/debugging signal means verification is under-observed in these prompts. It does not prove the code is wrong, untested elsewhere, or delegated to other people.
|
|
92
99
|
- Treat category counts as observed prompt behavior, not objective engineering quality or completed work.
|
|
93
100
|
- Concept occurrence_count means text mentions, never completed commits, pushes, tests, features, or other real-world actions. Call it a mention when citing it.
|
|
94
|
-
-
|
|
101
|
+
- recurring_domain_clusters are aggregate same-prompt co-occurrence evidence, so their concepts may be interpreted together as a comic prompt-world.
|
|
102
|
+
- Standalone aggregated concepts do not prove they belong to the same project. Never combine separate concepts unless recurring_domain_clusters links them; never turn either form into an invented app, bot, product, stack, real occupation, or ownership claim. Say the prompts "orbit", "mention", or "cluster around" those concepts.
|
|
95
103
|
- Category ratios do not reveal execution order. Never say code shipped before verification, entered production, broke, contained bugs, or failed to run.
|
|
96
104
|
- Do not turn implementation/testing/debugging prompt categories into completed implementation, shipping, testing, or debugging actions. Say "implementation-classified prompts", "testing signal", or "debugging mentions".
|
|
97
105
|
- Do not quote or reconstruct raw prompts.
|
|
@@ -119,8 +127,9 @@ Before writing, silently select:
|
|
|
119
127
|
2. the metaphor world;
|
|
120
128
|
3. three evidence receipts;
|
|
121
129
|
4. the closing callback.
|
|
130
|
+
Then silently verify that every non-personality hashtag is specific, distinct, and entertaining.
|
|
122
131
|
|
|
123
|
-
Return
|
|
132
|
+
Return exactly 5 hashtagPairs. Do not force a rigid order. Lead with the most shareable tag. When recurring_domain_clusters is non-empty, at least one tag should transform its most distinctive semantically credible cluster into a recognizable scene character or clearly fictional role rather than repeat one of its terms. When only recurring_domain_concepts are available, a distinctive recurring concept may still inspire a playful alter ego.
|
|
124
133
|
Each pair must express the same meaning in both languages. Tags must be compact semantic labels, not copied high-frequency words. English tags must be English except proper names/acronyms. Chinese tags must be a culturally natural localization of the meaning, not a dictionary translation of the English word shape.`;
|
|
125
134
|
|
|
126
135
|
function endpoint(baseUrl) {
|
|
@@ -274,8 +283,8 @@ function cleanHashtagPairs(value) {
|
|
|
274
283
|
const seenEn = new Set();
|
|
275
284
|
const seenZh = new Set();
|
|
276
285
|
for (const raw of value) {
|
|
277
|
-
const en = cleanTags([raw?.en],
|
|
278
|
-
const zh = cleanTags([raw?.zh],
|
|
286
|
+
const en = cleanTags([raw?.en], 32)[0];
|
|
287
|
+
const zh = cleanTags([raw?.zh], 16)[0];
|
|
279
288
|
if (!en || !zh) continue;
|
|
280
289
|
const enKey = en.toLowerCase();
|
|
281
290
|
const zhKey = zh.toLowerCase();
|
|
@@ -291,7 +300,7 @@ function cleanHashtagPairs(value) {
|
|
|
291
300
|
kind,
|
|
292
301
|
meaning: cleanText(raw?.meaning, 80, { short: true }),
|
|
293
302
|
});
|
|
294
|
-
if (pairs.length >=
|
|
303
|
+
if (pairs.length >= 6) break;
|
|
295
304
|
}
|
|
296
305
|
return pairs;
|
|
297
306
|
}
|
|
@@ -349,8 +358,8 @@ function validateRoastPayload(raw) {
|
|
|
349
358
|
const paired = hashtagPairs.length >= 3;
|
|
350
359
|
const result = {
|
|
351
360
|
...(paired ? { hashtagPairs } : {}),
|
|
352
|
-
hashtags: paired ? hashtagPairs.map((pair) => pair.en) : cleanTags(parsed?.hashtags,
|
|
353
|
-
hashtagsZh: paired ? hashtagPairs.map((pair) => pair.zh) : cleanTags(parsed?.hashtagsZh,
|
|
361
|
+
hashtags: paired ? hashtagPairs.map((pair) => pair.en) : cleanTags(parsed?.hashtags, 32),
|
|
362
|
+
hashtagsZh: paired ? hashtagPairs.map((pair) => pair.zh) : cleanTags(parsed?.hashtagsZh, 16),
|
|
354
363
|
roast: paragraphize(cleanText(parsed?.roast, 1100)),
|
|
355
364
|
roastZh: paragraphize(cleanText(parsed?.roastZh, 700)),
|
|
356
365
|
tldr: cleanText(parsed?.tldr, 150, { short: true }),
|
|
@@ -392,7 +401,7 @@ async function generateAiRoast(evidence, {
|
|
|
392
401
|
const request = requestForProvider(config, {
|
|
393
402
|
apiKey,
|
|
394
403
|
messages,
|
|
395
|
-
temperature:
|
|
404
|
+
temperature: 1.05,
|
|
396
405
|
maxTokens: 1800,
|
|
397
406
|
});
|
|
398
407
|
const response = await fetchImpl(request.url, {
|
|
@@ -5,6 +5,31 @@ function finiteNumber(value, fallback = 0) {
|
|
|
5
5
|
return Number.isFinite(number) ? number : fallback;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
const CLUSTER_NOISE_TERMS = new Set([
|
|
9
|
+
"again", "already", "ambient", "app", "attached", "automatically", "been",
|
|
10
|
+
"block", "browser", "cannot", "created", "current", "default", "dev", "doc",
|
|
11
|
+
"don", "evidence", "explicitly", "failed", "in-app", "master", "may", "new",
|
|
12
|
+
"opened", "proceed", "related", "reproduced", "saved", "sessions", "task",
|
|
13
|
+
]);
|
|
14
|
+
|
|
15
|
+
function dominantVariant(variants = new Map(), fallback = "") {
|
|
16
|
+
return [...variants.entries()]
|
|
17
|
+
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))[0]?.[0] || fallback;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function isClusterNoiseTerm(value) {
|
|
21
|
+
const term = String(value || "").trim();
|
|
22
|
+
const normalized = term.toLowerCase();
|
|
23
|
+
return (
|
|
24
|
+
!term
|
|
25
|
+
|| CLUSTER_NOISE_TERMS.has(normalized)
|
|
26
|
+
|| /^[a-f0-9]{8,}$/i.test(term)
|
|
27
|
+
|| /^\d+(?:ms|s|m|h|d)$/i.test(term)
|
|
28
|
+
|| /^\d{4}[-_/]\d{1,2}(?:[-_/]\d{1,2})?/.test(term)
|
|
29
|
+
|| /^\d[\w-]{10,}$/.test(term)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
8
33
|
function categoryRows(categories = {}) {
|
|
9
34
|
return Object.entries(categories)
|
|
10
35
|
.map(([key, row]) => ({
|
|
@@ -55,7 +80,7 @@ function domainConceptRows(records = [], limit = 12) {
|
|
|
55
80
|
}
|
|
56
81
|
|
|
57
82
|
return [...concepts.values()]
|
|
58
|
-
.filter((row) => row.prompt_coverage >=
|
|
83
|
+
.filter((row) => row.prompt_coverage >= 2)
|
|
59
84
|
.map((row) => {
|
|
60
85
|
const term = [...row.variants.entries()]
|
|
61
86
|
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))[0]?.[0] || row.key;
|
|
@@ -70,6 +95,7 @@ function domainConceptRows(records = [], limit = 12) {
|
|
|
70
95
|
) / 1000,
|
|
71
96
|
};
|
|
72
97
|
})
|
|
98
|
+
.filter((row) => !isClusterNoiseTerm(row.term))
|
|
73
99
|
.sort((a, b) => (
|
|
74
100
|
b.salience - a.salience
|
|
75
101
|
|| b.prompt_coverage - a.prompt_coverage
|
|
@@ -79,6 +105,149 @@ function domainConceptRows(records = [], limit = 12) {
|
|
|
79
105
|
.slice(0, limit);
|
|
80
106
|
}
|
|
81
107
|
|
|
108
|
+
function domainClusterRows(records = [], limit = 6) {
|
|
109
|
+
const concepts = new Map();
|
|
110
|
+
const pairs = new Map();
|
|
111
|
+
|
|
112
|
+
for (const record of records || []) {
|
|
113
|
+
const local = new Map();
|
|
114
|
+
for (const item of record?.concepts || []) {
|
|
115
|
+
if (!item?.key || item.kind === "category" || item.vibe) continue;
|
|
116
|
+
const key = String(item.key);
|
|
117
|
+
const localRow = local.get(key) || { key, score: 0, variants: new Map() };
|
|
118
|
+
for (const [term, rawCount] of Object.entries(item.variants || {})) {
|
|
119
|
+
const count = Math.max(0, finiteNumber(rawCount));
|
|
120
|
+
if (!term || count <= 0) continue;
|
|
121
|
+
localRow.score += count;
|
|
122
|
+
localRow.variants.set(term, (localRow.variants.get(term) || 0) + count);
|
|
123
|
+
}
|
|
124
|
+
local.set(key, localRow);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Bound pair expansion for unusually dense prompts while retaining their
|
|
128
|
+
// strongest domain concepts. No raw prompt text enters this structure.
|
|
129
|
+
const rows = [...local.values()]
|
|
130
|
+
.filter((row) => row.variants.size)
|
|
131
|
+
.filter((row) => !isClusterNoiseTerm(dominantVariant(row.variants, row.key)))
|
|
132
|
+
.sort((a, b) => b.score - a.score || a.key.localeCompare(b.key))
|
|
133
|
+
.slice(0, 10);
|
|
134
|
+
|
|
135
|
+
for (const row of rows) {
|
|
136
|
+
const concept = concepts.get(row.key) || {
|
|
137
|
+
key: row.key,
|
|
138
|
+
prompt_coverage: 0,
|
|
139
|
+
variants: new Map(),
|
|
140
|
+
};
|
|
141
|
+
concept.prompt_coverage += 1;
|
|
142
|
+
for (const [term, count] of row.variants) {
|
|
143
|
+
concept.variants.set(term, (concept.variants.get(term) || 0) + count);
|
|
144
|
+
}
|
|
145
|
+
concepts.set(row.key, concept);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const keys = rows.map((row) => row.key).sort();
|
|
149
|
+
for (let left = 0; left < keys.length; left += 1) {
|
|
150
|
+
for (let right = left + 1; right < keys.length; right += 1) {
|
|
151
|
+
const pairKey = `${keys[left]}\u0000${keys[right]}`;
|
|
152
|
+
const pair = pairs.get(pairKey) || { left: keys[left], right: keys[right], prompt_coverage: 0 };
|
|
153
|
+
pair.prompt_coverage += 1;
|
|
154
|
+
pairs.set(pairKey, pair);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const strongPairs = [...pairs.values()]
|
|
160
|
+
.map((pair) => ({
|
|
161
|
+
...pair,
|
|
162
|
+
cohesion: pair.prompt_coverage / Math.max(
|
|
163
|
+
1,
|
|
164
|
+
Math.min(
|
|
165
|
+
concepts.get(pair.left)?.prompt_coverage || 0,
|
|
166
|
+
concepts.get(pair.right)?.prompt_coverage || 0,
|
|
167
|
+
),
|
|
168
|
+
),
|
|
169
|
+
}))
|
|
170
|
+
.filter((pair) => pair.prompt_coverage >= 2 && pair.cohesion >= 0.45)
|
|
171
|
+
.sort((a, b) => (
|
|
172
|
+
(b.prompt_coverage * b.cohesion) - (a.prompt_coverage * a.cohesion)
|
|
173
|
+
|| a.left.localeCompare(b.left)
|
|
174
|
+
|| a.right.localeCompare(b.right)
|
|
175
|
+
));
|
|
176
|
+
|
|
177
|
+
const pairByKeys = new Map(strongPairs.map((pair) => [
|
|
178
|
+
`${pair.left}\u0000${pair.right}`,
|
|
179
|
+
pair,
|
|
180
|
+
]));
|
|
181
|
+
const candidates = new Set(strongPairs.flatMap((pair) => [pair.left, pair.right]));
|
|
182
|
+
const clusters = new Map();
|
|
183
|
+
|
|
184
|
+
function pairFor(left, right) {
|
|
185
|
+
const [first, second] = [left, right].sort();
|
|
186
|
+
return pairByKeys.get(`${first}\u0000${second}`);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
for (const seed of strongPairs) {
|
|
190
|
+
const keys = [seed.left, seed.right];
|
|
191
|
+
while (keys.length < 6) {
|
|
192
|
+
const next = [...candidates]
|
|
193
|
+
.filter((key) => !keys.includes(key))
|
|
194
|
+
.map((key) => ({
|
|
195
|
+
key,
|
|
196
|
+
links: keys.map((member) => pairFor(key, member)),
|
|
197
|
+
}))
|
|
198
|
+
.filter((candidate) => candidate.links.every(Boolean))
|
|
199
|
+
.sort((a, b) => (
|
|
200
|
+
b.links.reduce((total, pair) => total + pair.prompt_coverage, 0)
|
|
201
|
+
- a.links.reduce((total, pair) => total + pair.prompt_coverage, 0)
|
|
202
|
+
|| a.key.localeCompare(b.key)
|
|
203
|
+
))[0];
|
|
204
|
+
if (!next) break;
|
|
205
|
+
keys.push(next.key);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const signature = [...keys].sort().join("\u0000");
|
|
209
|
+
if (clusters.has(signature)) continue;
|
|
210
|
+
const links = [];
|
|
211
|
+
for (let left = 0; left < keys.length; left += 1) {
|
|
212
|
+
for (let right = left + 1; right < keys.length; right += 1) {
|
|
213
|
+
links.push(pairFor(keys[left], keys[right]));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const promptCoverage = Math.min(...links.map((pair) => pair.prompt_coverage));
|
|
217
|
+
const cohesion = Math.min(...links.map((pair) => pair.cohesion));
|
|
218
|
+
const terms = keys.map((key) => {
|
|
219
|
+
const variants = concepts.get(key)?.variants || new Map();
|
|
220
|
+
return dominantVariant(variants, key);
|
|
221
|
+
}).map((term) => String(term).slice(0, 48));
|
|
222
|
+
clusters.set(signature, {
|
|
223
|
+
terms,
|
|
224
|
+
prompt_coverage: promptCoverage,
|
|
225
|
+
cohesion: Math.round(cohesion * 1000) / 1000,
|
|
226
|
+
salience: Math.round(
|
|
227
|
+
Math.log2(1 + promptCoverage) * cohesion * Math.min(4, terms.length) * 1000,
|
|
228
|
+
) / 1000,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const ranked = [...clusters.values()]
|
|
233
|
+
.sort((a, b) => (
|
|
234
|
+
b.salience - a.salience
|
|
235
|
+
|| b.prompt_coverage - a.prompt_coverage
|
|
236
|
+
|| a.terms.join("\u0000").localeCompare(b.terms.join("\u0000"))
|
|
237
|
+
));
|
|
238
|
+
const selected = [];
|
|
239
|
+
for (const cluster of ranked) {
|
|
240
|
+
const terms = new Set(cluster.terms);
|
|
241
|
+
const duplicatesExisting = selected.some((existing) => {
|
|
242
|
+
const overlap = existing.terms.filter((term) => terms.has(term)).length;
|
|
243
|
+
return overlap / Math.min(existing.terms.length, cluster.terms.length) >= 0.8;
|
|
244
|
+
});
|
|
245
|
+
if (!duplicatesExisting) selected.push(cluster);
|
|
246
|
+
if (selected.length >= limit) break;
|
|
247
|
+
}
|
|
248
|
+
return selected;
|
|
249
|
+
}
|
|
250
|
+
|
|
82
251
|
function dimensionRows(dimensions = []) {
|
|
83
252
|
return (dimensions || []).map((dimension) => ({
|
|
84
253
|
key: dimension.key,
|
|
@@ -145,7 +314,7 @@ function buildRoastEvidence(report = {}) {
|
|
|
145
314
|
const summary = report.summary || {};
|
|
146
315
|
|
|
147
316
|
return {
|
|
148
|
-
schema_version:
|
|
317
|
+
schema_version: 2,
|
|
149
318
|
immutable_profile: {
|
|
150
319
|
type_code: vibe.type_code,
|
|
151
320
|
personality: vibe.personality?.title,
|
|
@@ -160,6 +329,7 @@ function buildRoastEvidence(report = {}) {
|
|
|
160
329
|
categories: categoryRows(categories),
|
|
161
330
|
recurring_behavior_terms: conceptRows(report.word_frequencies, 12),
|
|
162
331
|
recurring_domain_concepts: domainConceptRows(report.word_cloud_records),
|
|
332
|
+
recurring_domain_clusters: domainClusterRows(report.word_cloud_records, 12),
|
|
163
333
|
},
|
|
164
334
|
activity: {
|
|
165
335
|
metric: activity.metric,
|
|
@@ -183,4 +353,9 @@ function buildRoastEvidence(report = {}) {
|
|
|
183
353
|
};
|
|
184
354
|
}
|
|
185
355
|
|
|
186
|
-
module.exports = {
|
|
356
|
+
module.exports = {
|
|
357
|
+
buildRoastEvidence,
|
|
358
|
+
buildContradictions,
|
|
359
|
+
domainConceptRows,
|
|
360
|
+
domainClusterRows,
|
|
361
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const SNAPSHOT_VERSION = 1;
|
|
2
|
-
const WRITER_PROMPT_VERSION =
|
|
2
|
+
const WRITER_PROMPT_VERSION = 6;
|
|
3
3
|
|
|
4
4
|
function finite(value) {
|
|
5
5
|
const number = Number(value);
|
|
@@ -15,6 +15,8 @@ function buildRoastSnapshot(evidence = {}) {
|
|
|
15
15
|
const categories = evidence.prompt_behavior?.categories || [];
|
|
16
16
|
const categoryTotal = categories.reduce((total, row) => total + Math.max(0, finite(row?.count)), 0);
|
|
17
17
|
const concepts = [
|
|
18
|
+
...(evidence.prompt_behavior?.recurring_domain_clusters || [])
|
|
19
|
+
.flatMap((cluster) => (cluster?.terms || []).map((term) => ({ term }))),
|
|
18
20
|
...(evidence.prompt_behavior?.recurring_domain_concepts || []),
|
|
19
21
|
...(evidence.prompt_behavior?.recurring_behavior_terms || []),
|
|
20
22
|
];
|
package/src/sources/codex.js
CHANGED
|
@@ -79,12 +79,40 @@ function extractCodexPrompt(obj) {
|
|
|
79
79
|
nested?.content,
|
|
80
80
|
];
|
|
81
81
|
for (const candidate of candidates) {
|
|
82
|
-
const text = normalizeWhitespace(textFromContent(candidate));
|
|
82
|
+
const text = normalizeWhitespace(stripCodexInjectedContext(textFromContent(candidate)));
|
|
83
83
|
if (text) return text;
|
|
84
84
|
}
|
|
85
85
|
return "";
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
function stripCodexInjectedContext(value) {
|
|
89
|
+
let text = String(value || "");
|
|
90
|
+
|
|
91
|
+
// Desktop attachment/browser envelopes place the authored request after
|
|
92
|
+
// this marker. Prefer that explicit boundary so filenames, screenshots, and
|
|
93
|
+
// ambient browser state never become personality evidence.
|
|
94
|
+
const requestMarker = /^## My request for Codex:\s*$/gim;
|
|
95
|
+
const markers = [...text.matchAll(requestMarker)];
|
|
96
|
+
if (markers.length > 0) {
|
|
97
|
+
const marker = markers[markers.length - 1];
|
|
98
|
+
return text.slice((marker.index || 0) + marker[0].length).trim();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Some client versions inject the same context blocks without the request
|
|
102
|
+
// marker. Strip only known machine-owned envelopes; preserve ordinary XML,
|
|
103
|
+
// Markdown, and user-authored instructions.
|
|
104
|
+
const injectedTags = [
|
|
105
|
+
"in-app-browser-context",
|
|
106
|
+
"recommended_plugins",
|
|
107
|
+
"environment_context",
|
|
108
|
+
];
|
|
109
|
+
for (const tag of injectedTags) {
|
|
110
|
+
const block = new RegExp(`<${tag}\\b[^>]*>[\\s\\S]*?<\\/${tag}>`, "gi");
|
|
111
|
+
text = text.replace(block, " ");
|
|
112
|
+
}
|
|
113
|
+
return text.trim();
|
|
114
|
+
}
|
|
115
|
+
|
|
88
116
|
function extractCodexTokens(obj) {
|
|
89
117
|
const payload = obj?.payload || {};
|
|
90
118
|
const info =
|
|
@@ -215,6 +243,7 @@ function number(value) {
|
|
|
215
243
|
module.exports = {
|
|
216
244
|
inspectCodex,
|
|
217
245
|
extractCodexPrompt,
|
|
246
|
+
stripCodexInjectedContext,
|
|
218
247
|
extractCodexTokens,
|
|
219
248
|
extractCodexTool,
|
|
220
249
|
extractCodexUsageEvent,
|
package/assests/badges/.gitkeep
DELETED
|
File without changes
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 64 64" fill="none" aria-label="Builder SHIP — deploy first symbolic badge">
|
|
2
|
-
<rect width="64" height="64" rx="14" fill="#111821" stroke="rgba(255,255,255,0.08)" stroke-width="1"/>
|
|
3
|
-
<image x="4" y="4" width="56" height="56" preserveAspectRatio="xMidYMid meet" href="data:image/png;base64,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"/>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 64 64" fill="none" aria-label="Debugger HUNT — duck at midnight symbolic badge">
|
|
2
|
-
<rect width="64" height="64" rx="14" fill="#111821" stroke="rgba(255,255,255,0.08)" stroke-width="1"/>
|
|
3
|
-
<image x="4" y="4" width="56" height="56" preserveAspectRatio="xMidYMid meet" href="data:image/png;base64,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"/>
|
|
4
|
-
</svg>
|
|
Binary file
|