vibe-roast 0.98.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.
Files changed (164) hide show
  1. package/README.md +418 -0
  2. package/assests/README.md +43 -0
  3. package/assests/badges/.gitkeep +0 -0
  4. package/assests/badges/01-builder/builder-badge.png +0 -0
  5. package/assests/badges/01-builder/builder-badge.svg +4 -0
  6. package/assests/badges/02-debugger/debugger-badge.png +0 -0
  7. package/assests/badges/02-debugger/debugger-badge.svg +4 -0
  8. package/assests/badges/03-architect/architect-badge.png +0 -0
  9. package/assests/badges/03-architect/architect-badge.svg +4 -0
  10. package/assests/badges/04-codex-believer/codex-believer-badge.png +0 -0
  11. package/assests/badges/04-codex-believer/codex-believer-badge.svg +4 -0
  12. package/assests/badges/05-prompt-priest/prompt-priest-badge.png +0 -0
  13. package/assests/badges/05-prompt-priest/prompt-priest-badge.svg +4 -0
  14. package/assests/badges/06-tab-hoarder/tab-hoarder-badge.png +0 -0
  15. package/assests/badges/06-tab-hoarder/tab-hoarder-badge.svg +4 -0
  16. package/assests/badges/07-context-maxxer/context-maxxer-badge.png +0 -0
  17. package/assests/badges/07-context-maxxer/context-maxxer-badge.svg +4 -0
  18. package/assests/badges/08-yolo-shipper/yolo-shipper-badge.png +0 -0
  19. package/assests/badges/08-yolo-shipper/yolo-shipper-badge.svg +4 -0
  20. package/assests/banners/.gitkeep +0 -0
  21. package/assests/banners/home-hero.png +0 -0
  22. package/assests/banners/home-hero.svg +3 -0
  23. package/assests/banners/result-header.png +0 -0
  24. package/assests/banners/result-header.svg +3 -0
  25. package/assests/banners/share-strip.png +0 -0
  26. package/assests/banners/share-strip.svg +3 -0
  27. package/assests/characters/01-builder/builder-card.sbti-archive.svg +5 -0
  28. package/assests/characters/01-builder/builder-card.svg +3 -0
  29. package/assests/characters/01-builder/builder-character.sbti-archive.svg +3 -0
  30. package/assests/characters/01-builder/builder-character.svg +3 -0
  31. package/assests/characters/01-builder/builder-figure.png +0 -0
  32. package/assests/characters/01-builder/builder-mascot.png +0 -0
  33. package/assests/characters/02-debugger/debugger-card.sbti-archive.svg +5 -0
  34. package/assests/characters/02-debugger/debugger-card.svg +3 -0
  35. package/assests/characters/02-debugger/debugger-character.sbti-archive.svg +3 -0
  36. package/assests/characters/02-debugger/debugger-character.svg +3 -0
  37. package/assests/characters/02-debugger/debugger-figure.png +0 -0
  38. package/assests/characters/02-debugger/debugger-mascot.png +0 -0
  39. package/assests/characters/03-architect/architect-card.sbti-archive.svg +5 -0
  40. package/assests/characters/03-architect/architect-card.svg +3 -0
  41. package/assests/characters/03-architect/architect-character.sbti-archive.svg +3 -0
  42. package/assests/characters/03-architect/architect-character.svg +3 -0
  43. package/assests/characters/03-architect/architect-figure.png +0 -0
  44. package/assests/characters/03-architect/architect-mascot.png +0 -0
  45. package/assests/characters/04-codex-believer/codex-believer-card.sbti-archive.svg +5 -0
  46. package/assests/characters/04-codex-believer/codex-believer-card.svg +3 -0
  47. package/assests/characters/04-codex-believer/codex-believer-character.sbti-archive.svg +3 -0
  48. package/assests/characters/04-codex-believer/codex-believer-character.svg +3 -0
  49. package/assests/characters/04-codex-believer/codex-believer-figure.png +0 -0
  50. package/assests/characters/04-codex-believer/codex-believer-mascot.png +0 -0
  51. package/assests/characters/05-prompt-priest/prompt-priest-card.sbti-archive.svg +5 -0
  52. package/assests/characters/05-prompt-priest/prompt-priest-card.svg +3 -0
  53. package/assests/characters/05-prompt-priest/prompt-priest-character.sbti-archive.svg +3 -0
  54. package/assests/characters/05-prompt-priest/prompt-priest-character.svg +3 -0
  55. package/assests/characters/05-prompt-priest/prompt-priest-figure.png +0 -0
  56. package/assests/characters/05-prompt-priest/prompt-priest-mascot.png +0 -0
  57. package/assests/characters/06-tab-hoarder/tab-hoarder-card.sbti-archive.svg +5 -0
  58. package/assests/characters/06-tab-hoarder/tab-hoarder-card.svg +3 -0
  59. package/assests/characters/06-tab-hoarder/tab-hoarder-character.sbti-archive.svg +3 -0
  60. package/assests/characters/06-tab-hoarder/tab-hoarder-character.svg +3 -0
  61. package/assests/characters/06-tab-hoarder/tab-hoarder-figure.png +0 -0
  62. package/assests/characters/06-tab-hoarder/tab-hoarder-mascot.png +0 -0
  63. package/assests/characters/07-context-maxxer/context-maxxer-card.sbti-archive.svg +5 -0
  64. package/assests/characters/07-context-maxxer/context-maxxer-card.svg +3 -0
  65. package/assests/characters/07-context-maxxer/context-maxxer-character.sbti-archive.svg +3 -0
  66. package/assests/characters/07-context-maxxer/context-maxxer-character.svg +3 -0
  67. package/assests/characters/07-context-maxxer/context-maxxer-figure.png +0 -0
  68. package/assests/characters/07-context-maxxer/context-maxxer-mascot.png +0 -0
  69. package/assests/characters/08-yolo-shipper/yolo-shipper-card.sbti-archive.svg +5 -0
  70. package/assests/characters/08-yolo-shipper/yolo-shipper-card.svg +3 -0
  71. package/assests/characters/08-yolo-shipper/yolo-shipper-character.sbti-archive.svg +3 -0
  72. package/assests/characters/08-yolo-shipper/yolo-shipper-character.svg +3 -0
  73. package/assests/characters/08-yolo-shipper/yolo-shipper-figure.png +0 -0
  74. package/assests/characters/08-yolo-shipper/yolo-shipper-mascot.png +0 -0
  75. package/assests/characters-vibe-types/aosf-strategy-shipper/strategy-shipper-figure.png +0 -0
  76. package/assests/characters-vibe-types/aosx-agent-believer/agent-believer-figure.png +0 -0
  77. package/assests/characters-vibe-types/aovf-systems-architect/systems-architect-figure.png +0 -0
  78. package/assests/characters-vibe-types/aovx-context-cartographer/context-cartographer-figure.png +0 -0
  79. package/assests/characters-vibe-types/apsf-diagram-sprinter/diagram-sprinter-figure.png +0 -0
  80. package/assests/characters-vibe-types/apsx-infinite-planner/infinite-planner-figure.png +0 -0
  81. package/assests/characters-vibe-types/apvf-architect/architect-figure.png +0 -0
  82. package/assests/characters-vibe-types/apvx-prompt-priest/prompt-priest-figure.png +0 -0
  83. package/assests/characters-vibe-types/mosf-yolo-shipper/yolo-shipper-figure.png +0 -0
  84. package/assests/characters-vibe-types/mosx-agent-commander/agent-commander-figure.png +0 -0
  85. package/assests/characters-vibe-types/movf-agent-engineer/agent-engineer-figure.png +0 -0
  86. package/assests/characters-vibe-types/movx-systems-wrangler/systems-wrangler-figure.png +0 -0
  87. package/assests/characters-vibe-types/mpsf-builder/builder-figure.png +0 -0
  88. package/assests/characters-vibe-types/mpsx-tab-hoarder/tab-hoarder-figure.png +0 -0
  89. package/assests/characters-vibe-types/mpvf-debugger/debugger-figure.png +0 -0
  90. package/assests/characters-vibe-types/mpvx-context-maxxer/context-maxxer-figure.png +0 -0
  91. package/assests/live-report.html +1403 -0
  92. package/assests/notes/live-inspect-summary.json +3487 -0
  93. package/assests/scripts/compose-banners.py +148 -0
  94. package/assests/scripts/live-report-boot.js +2 -0
  95. package/assests/scripts/profiles.json +104 -0
  96. package/assests/scripts/qa-faces.mjs +72 -0
  97. package/assests/scripts/roast-extras.js +619 -0
  98. package/assests/scripts/score-engine.js +62 -0
  99. package/assests/scripts/split-badges.py +49 -0
  100. package/assests/scripts/split-reference.py +38 -0
  101. package/assests/scripts/sync-banners.mjs +45 -0
  102. package/assests/scripts/sync-cards.mjs +50 -0
  103. package/assests/scripts/sync-raster.mjs +118 -0
  104. package/assests/scripts/vibe-types.json +22 -0
  105. package/assests/source/design-system.md +50 -0
  106. package/assests/source/prompts/01-builder.md +19 -0
  107. package/assests/source/prompts/02-debugger.md +17 -0
  108. package/assests/source/prompts/03-architect.md +16 -0
  109. package/assests/source/prompts/04-codex-believer.md +13 -0
  110. package/assests/source/prompts/05-prompt-priest.md +13 -0
  111. package/assests/source/prompts/06-tab-hoarder.md +13 -0
  112. package/assests/source/prompts/07-context-maxxer.md +13 -0
  113. package/assests/source/prompts/08-yolo-shipper.md +13 -0
  114. package/assests/source/references/sbti-style-reference-board.png +0 -0
  115. package/assests/source/references/vibe-badges-v6-board.png +0 -0
  116. package/assests/source/references/vibe-mascots-v4-reference.png +0 -0
  117. package/assests/source/references/vibe-profiles-v5-board-a.png +0 -0
  118. package/assests/source/references/vibe-profiles-v5-board-b.png +0 -0
  119. package/assests/source/vibe-types-visual-brief.md +38 -0
  120. package/bin/hook.js +121 -0
  121. package/bin/vibe-roast.js +98 -0
  122. package/bin/vibe-wrapper.js +4 -0
  123. package/dashboard/dist/assets/index-DlBycTcO.css +1 -0
  124. package/dashboard/dist/assets/index-t8m64Hm9.js +168 -0
  125. package/dashboard/dist/index.html +32 -0
  126. package/package.json +58 -0
  127. package/src/extract/environment.js +160 -0
  128. package/src/extract/phrase-stats.js +684 -0
  129. package/src/extract/prompt-analysis.js +368 -0
  130. package/src/extract/text.js +30 -0
  131. package/src/hooks/install.js +184 -0
  132. package/src/inspect.js +261 -0
  133. package/src/lib/activity-metrics.js +238 -0
  134. package/src/lib/agent-score.js +187 -0
  135. package/src/lib/ai-roast.js +446 -0
  136. package/src/lib/dates.js +43 -0
  137. package/src/lib/hashtags.js +150 -0
  138. package/src/lib/jsonl.js +48 -0
  139. package/src/lib/load-env.js +59 -0
  140. package/src/lib/roast-evidence.js +186 -0
  141. package/src/lib/roast-snapshot.js +58 -0
  142. package/src/server.js +644 -0
  143. package/src/sources/aider.js +150 -0
  144. package/src/sources/amazonq.js +113 -0
  145. package/src/sources/antigravity.js +147 -0
  146. package/src/sources/claude.js +262 -0
  147. package/src/sources/cline.js +11 -0
  148. package/src/sources/codex.js +222 -0
  149. package/src/sources/common.js +133 -0
  150. package/src/sources/continue.js +67 -0
  151. package/src/sources/copilot.js +170 -0
  152. package/src/sources/cursor.js +238 -0
  153. package/src/sources/gemini.js +75 -0
  154. package/src/sources/index.js +61 -0
  155. package/src/sources/roo.js +11 -0
  156. package/src/sources/token-tracker.js +171 -0
  157. package/src/sources/vibe-tracker.js +79 -0
  158. package/src/sources/vscode-tasks.js +142 -0
  159. package/src/sources/windsurf.js +109 -0
  160. package/worker/README.md +96 -0
  161. package/worker/package-lock.json +1547 -0
  162. package/worker/package.json +20 -0
  163. package/worker/src/index.mjs +694 -0
  164. package/worker/wrangler.jsonc +40 -0
package/README.md ADDED
@@ -0,0 +1,418 @@
1
+ <a id="readme-top"></a>
2
+
3
+ <div align="center">
4
+ <img
5
+ src="./assests/characters-vibe-types/mpsf-builder/builder-figure.png"
6
+ width="190"
7
+ alt="Vibe Roaster Builder character"
8
+ />
9
+
10
+ <h1>Vibe Roaster</h1>
11
+
12
+ <p>
13
+ Turn your local AI coding history into a 16-type personality profile—and let it roast the evidence.
14
+ </p>
15
+
16
+ <p>
17
+ <a href="https://www.npmjs.com/package/vibe-roast">
18
+ <img src="https://img.shields.io/npm/v/vibe-roast?color=25b985&label=npm" alt="npm version" />
19
+ </a>
20
+ <a href="https://www.npmjs.com/package/vibe-roast">
21
+ <img src="https://img.shields.io/npm/dm/vibe-roast?color=557fd8" alt="npm downloads" />
22
+ </a>
23
+ <img src="https://img.shields.io/badge/Node.js-%E2%89%A520-171717" alt="Node.js 20 or newer" />
24
+ <img src="https://img.shields.io/badge/types-16-9a70cf" alt="16 coding personality types" />
25
+ <img src="https://img.shields.io/badge/raw_prompts-local_only-ef5b45" alt="Raw prompts stay local" />
26
+ </p>
27
+
28
+ <p>
29
+ <a href="#quick-start"><strong>Quick start</strong></a>
30
+ ·
31
+ <a href="#what-you-get">What you get</a>
32
+ ·
33
+ <a href="#how-the-profile-works">How it works</a>
34
+ ·
35
+ <a href="#privacy">Privacy</a>
36
+ ·
37
+ <a href="#development">Development</a>
38
+ </p>
39
+ </div>
40
+
41
+ ---
42
+
43
+ Vibe Roaster reads supported local coding-agent histories, separates real user intent from pasted code and tool noise, and turns the resulting behavior into:
44
+
45
+ - a four-letter coding type;
46
+ - one of 16 illustrated characters;
47
+ - an evidence-grounded roast;
48
+ - recurring project and domain themes;
49
+ - Agent, provider, model, token, and activity analytics;
50
+ - a 3:4 share card designed to travel beyond the dashboard.
51
+
52
+ The personality calculation is deterministic and local. AI writing is optional.
53
+
54
+ ## Quick start
55
+
56
+ ### Run from npm
57
+
58
+ Requires Node.js 20 or newer.
59
+
60
+ ```bash
61
+ npx vibe-roast
62
+ ```
63
+
64
+ Vibe Roaster scans the supported local stores it can find, starts the local dashboard server, and opens:
65
+
66
+ ```text
67
+ http://localhost:7681
68
+ ```
69
+
70
+ Missing agents are ignored safely. You do not need to configure every source, create an account, or provide an API key to see the local result.
71
+
72
+ ### Choose how the roast is written
73
+
74
+ On first launch, choose one of three paths:
75
+
76
+ | Mode | What happens | Account or key |
77
+ | --- | --- | --- |
78
+ | Local roast | Uses deterministic bilingual copy | None |
79
+ | Hosted roast | GitHub identifies the profile; Cloudflare Workers AI writes and caches the roast | GitHub sign-in |
80
+ | Your provider | Sends aggregate roast evidence to your selected model | DeepSeek, OpenAI, Anthropic, Gemini, Groq, or OpenRouter key |
81
+
82
+ GitHub login is identity only; it does not use GitHub Models or your GitHub model quota.
83
+
84
+ ## What you get
85
+
86
+ <table>
87
+ <tr>
88
+ <td width="50%">
89
+ <strong>16 coding personalities</strong><br />
90
+ Four inspectable behavior axes resolve into one illustrated character—Builder, Debugger, Prompt Priest, Agent Commander, and twelve more.
91
+ </td>
92
+ <td width="50%">
93
+ <strong>Evidence-grounded roast</strong><br />
94
+ The type stays deterministic. Optional AI writing turns aggregate signals and contradictions into bilingual comedy without receiving raw prompts.
95
+ </td>
96
+ </tr>
97
+ <tr>
98
+ <td width="50%">
99
+ <strong>Usage analytics</strong><br />
100
+ Explore activity heatmaps, trends, Agent share, provider/model usage, and available Codex or Claude context breakdowns.
101
+ </td>
102
+ <td width="50%">
103
+ <strong>Recurring themes</strong><br />
104
+ A time- and Agent-filtered cloud promotes repeated coding concepts and project-domain entities such as HIT, ONNX, or 前庭.
105
+ </td>
106
+ </tr>
107
+ <tr>
108
+ <td width="50%">
109
+ <strong>Semantic Hashtags</strong><br />
110
+ AI reads coherent concept clusters and creates shareable character labels—<code>preflop + folds + river</code> can become <code>#HoldemPlayer</code>, not <code>#preflop</code>.
111
+ </td>
112
+ <td width="50%">
113
+ <strong>Shareable by design</strong><br />
114
+ Export a 1080 × 1440 personality card with the character, roast, axes, complete Hashtag set, repository URL, and one-command install path.
115
+ </td>
116
+ </tr>
117
+ </table>
118
+
119
+ <p align="center">
120
+ <img src="./assests/characters-vibe-types/movf-agent-engineer/agent-engineer-figure.png" width="145" alt="Agent Engineer" />
121
+ <img src="./assests/characters-vibe-types/mpvf-debugger/debugger-figure.png" width="145" alt="Debugger" />
122
+ <img src="./assests/characters-vibe-types/apvx-prompt-priest/prompt-priest-figure.png" width="145" alt="Prompt Priest" />
123
+ <img src="./assests/characters-vibe-types/mosf-yolo-shipper/yolo-shipper-figure.png" width="145" alt="YOLO Shipper" />
124
+ </p>
125
+
126
+ ## How the profile works
127
+
128
+ ```mermaid
129
+ flowchart LR
130
+ A["Local agent histories"] --> B["Keep real user intent"]
131
+ B --> C["Classify prompt behavior"]
132
+ C --> D["Resolve four type axes"]
133
+ D --> E["Choose one of 16 characters"]
134
+ C --> F["Build aggregate roast evidence"]
135
+ E --> G["Roast Result"]
136
+ F --> G
137
+ G --> H["3:4 share card"]
138
+ ```
139
+
140
+ ### The four axes
141
+
142
+ This is MBTI-like presentation for observed coding-agent behavior—not psychology, ability, or code quality.
143
+
144
+ | Axis | Left | Right | Main evidence |
145
+ | --- | --- | --- | --- |
146
+ | M / A | **Maker** · asks for runnable artifacts | **Architect** · asks for plans and explanations | implementation and repair vs planning and research |
147
+ | O / P | **Orchestrator** · delegates through workflows | **Promptsmith** · directs one agent precisely | workflow language vs direct prompt craft |
148
+ | V / S | **Verifier** · proves and repairs | **Shipper** · builds and releases | debugging, testing, refactor vs implementation and packaging |
149
+ | F / X | **Focused** · keeps requests compact | **Max-context** · supplies broad context | useful/reference balance and long-prompt ratio |
150
+
151
+ Every axis exposes its evidence split. The winning letters are concatenated—`MPSF`, for example—and mapped to a character.
152
+
153
+ ### The 16 types
154
+
155
+ | Type | Character | Type | Character |
156
+ | --- | --- | --- | --- |
157
+ | MOVF | Agent Engineer | AOVF | Systems Architect |
158
+ | MOVX | Systems Wrangler | AOVX | Context Cartographer |
159
+ | MOSF | YOLO Shipper | AOSF | Strategy Shipper |
160
+ | MOSX | Agent Commander | AOSX | Agent Believer |
161
+ | MPVF | Debugger | APVF | Architect |
162
+ | MPVX | Context Maxxer | APVX | Prompt Priest |
163
+ | MPSF | Builder | APSF | Diagram Sprinter |
164
+ | MPSX | Tab Hoarder | APSX | Infinite Planner |
165
+
166
+ There is no primary/secondary persona and no quality rank. Fewer than 20 useful prompts produces a provisional type; confidence grows with sample size and clearer axis separation.
167
+
168
+ <details>
169
+ <summary><strong>Prompt categories and weighting</strong></summary>
170
+
171
+ Classification is multi-label. A request such as “fix this login bug and add a regression test” contributes half to Debugging and half to Testing, so one verbose prompt cannot count several times.
172
+
173
+ | Category | Typical evidence |
174
+ | --- | --- |
175
+ | Planning | plans, architecture, brainstorming |
176
+ | Debugging | failures, exceptions, root-cause work |
177
+ | Testing | tests, regression, assertions, coverage |
178
+ | Refactor | restructuring, extraction, cleanup |
179
+ | Packaging | build, release, publish, deployment |
180
+ | Explanation | explain, why, walkthrough |
181
+ | Research | search, documentation, investigation |
182
+ | UI design | pages, components, layout, CSS/UX |
183
+ | Workflow | agents, hooks, MCP, skills, automation |
184
+ | Implementation | useful requests without a more specific category |
185
+ | Reference | pasted code, logs, stack traces, system/tool noise |
186
+
187
+ Reference material is excluded from useful-intent counts.
188
+
189
+ </details>
190
+
191
+ <details>
192
+ <summary><strong>Word cloud and domain discovery</strong></summary>
193
+
194
+ The word cloud is not a raw token dump. It removes pasted code, paths, markup fragments, provider boilerplate, conversational filler, and stop words. English identifiers are split into readable terms; Chinese text uses `Intl.Segmenter` plus a compact developer vocabulary.
195
+
196
+ Ranking favors the number of distinct prompts containing a concept, with a smaller logarithmic repetition bonus. Common bilingual variants are merged, lexical/category duplicates are collapsed, and recurring acronyms preserve their observed casing.
197
+
198
+ Project-domain entities do not need to be hardcoded. A candidate can be promoted when it:
199
+
200
+ - recurs across independent prompts;
201
+ - behaves like a project noun;
202
+ - concentrates within a project period;
203
+ - carries a distinctive acronym or entity signal.
204
+
205
+ The same Day / Week / Month / Total / Custom and Agent filters apply to the cloud, token totals, usage trend, and model breakdown.
206
+
207
+ </details>
208
+
209
+ ### AI roast and bilingual Hashtags
210
+
211
+ Only a compact `roast_evidence` object is eligible to leave the machine. It contains aggregate type, axis, category, dimension, concept, and activity signals—never raw prompt text.
212
+
213
+ The writer cannot change the deterministic type. In one model call it produces:
214
+
215
+ - three-beat English and Chinese roasts;
216
+ - bilingual TL;DR punchlines;
217
+ - 4–5 paired Hashtags with `en`, `zh`, semantic `kind`, and a short shared `meaning`.
218
+
219
+ Hashtags are interpretations rather than frequency labels. Chinese is localized from the intended joke, not translated from the English surface form: `CodeCult` should become `代码教团` or `代码邪教`, never `代码文化`. Proper names and meaningful acronyms such as GitHub, HIT, and ONNX may remain unchanged.
220
+
221
+ ## Privacy
222
+
223
+ Vibe Roaster is local-first, but “local-first” does not mean every optional feature is offline.
224
+
225
+ | Data | Local profile | Optional AI roast | Hosted profile cache |
226
+ | --- | --- | --- | --- |
227
+ | Raw user prompts | Used locally | Never sent | Never stored |
228
+ | Local paths and configuration | Local only | Never sent | Never stored |
229
+ | Aggregate categories and scores | Computed locally | Sent when explicitly enabled | Stored as a compact snapshot |
230
+ | Generated roast and Hashtags | Local result | Returned by selected model | Stored for stable signed-in profiles |
231
+ | API key | Not required | Used for that request only | Never stored by the local app |
232
+
233
+ The UI opens through localhost, but the Node server is a local development service rather than a hardened public endpoint. Do not expose port `7681` to an untrusted network.
234
+
235
+ Hosted GitHub sessions are stored outside the project under `~/.vibe-wrapper/` with owner-only permissions. A cached roast is reused until the profile changes materially, avoiding repeated model calls and unstable results.
236
+
237
+ ## Supported sources
238
+
239
+ Vibe Roaster inspects the sources it can find and treats missing roots as empty.
240
+
241
+ | Source | ID | Default store |
242
+ | --- | --- | --- |
243
+ | Codex | `codex` | `~/.codex/sessions` |
244
+ | Claude Code | `claude` | `~/.claude/projects` |
245
+ | Cursor | `cursor` | platform `state.vscdb` |
246
+ | Cline | `cline` | VS Code/Cursor global storage |
247
+ | Roo Code | `roo` | VS Code/Cursor global storage |
248
+ | Continue | `continue` | `~/.continue/sessions` |
249
+ | Gemini CLI | `gemini` | `~/.gemini/tmp/*/chats` |
250
+ | Aider | `aider` | `.aider.chat.history.md` |
251
+ | Windsurf | `windsurf` | `~/.codeium/windsurf` plaintext exports |
252
+ | Copilot Chat | `copilot` | VS Code/Cursor global storage |
253
+ | Amazon Q | `amazonq` | `~/.aws/amazonq/history` |
254
+ | Antigravity | `antigravity` | `~/.gemini/antigravity(-ide)/conversations` |
255
+ | TokenTracker | activity only | `~/.tokentracker/tracker/queue.jsonl` |
256
+ | Vibe tracker | `vibe-tracker` | `~/.vibe-wrapper/sessions.jsonl` |
257
+
258
+ Cursor is best-effort and requires the local `sqlite3` command. Encrypted or binary histories are skipped rather than guessed.
259
+
260
+ <details>
261
+ <summary><strong>Known source limitations</strong></summary>
262
+
263
+ - Windsurf Cascade and Antigravity protobuf trajectories are not parsed without a plaintext export.
264
+ - ChatGPT desktop history is encrypted.
265
+ - Cursor cloud-only threads may not have readable local bubbles.
266
+ - Token availability differs by source; TokenTracker is preferred for complete activity totals.
267
+ - Agent context categories are aggregate estimates. Codex tool attribution is turn-based; Claude content-block attribution is approximate.
268
+
269
+ </details>
270
+
271
+ ## CLI
272
+
273
+ ### Inspect without the UI
274
+
275
+ ```bash
276
+ npx vibe-roast inspect \
277
+ --from 2026-06-01 \
278
+ --to 2026-06-08 \
279
+ --sources codex,claude,cursor
280
+ ```
281
+
282
+ The JSON report includes source summaries, activity, word frequencies, prompt analysis, the four-axis profile, aggregate roast evidence, and normalized prompt records.
283
+
284
+ ### Override local stores
285
+
286
+ ```bash
287
+ npx vibe-roast inspect \
288
+ --codex-root /path/to/codex/sessions \
289
+ --claude-root /path/to/claude/projects \
290
+ --cursor-db /path/to/state.vscdb
291
+ ```
292
+
293
+ Additional overrides:
294
+
295
+ ```text
296
+ --home
297
+ --cline-root
298
+ --roo-root
299
+ --continue-root
300
+ --gemini-root
301
+ --aider-root
302
+ --windsurf-root
303
+ --copilot-root
304
+ --amazonq-root
305
+ --antigravity-root
306
+ --token-tracker-queue
307
+ ```
308
+
309
+ ### Optional hooks
310
+
311
+ ```bash
312
+ npx vibe-roast install
313
+ npx vibe-roast uninstall
314
+ ```
315
+
316
+ Hooks are explicit; npm installation never silently changes Codex or Claude configuration.
317
+
318
+ ## Configuration
319
+
320
+ Most users need no environment variables.
321
+
322
+ | Variable | Purpose |
323
+ | --- | --- |
324
+ | `PORT` | Change the local server port from `7681` |
325
+ | `VIBE_WRAPPER_NO_OPEN=1` | Start without opening the browser |
326
+ | `VIBE_WRAPPER_AUTH_BROKER_URL` | Override the hosted OAuth/AI broker for development or self-hosting |
327
+ | `DEEPSEEK_BASE_URL` | Override the default DeepSeek-compatible endpoint |
328
+ | `DEEPSEEK_MODEL` | Override the default DeepSeek model |
329
+
330
+ For local development, place ignored values in `.env.local`. Explicit shell environment variables take precedence.
331
+
332
+ Never commit API keys, client secrets, session secrets, `.env.local`, or `worker/.dev.vars`.
333
+
334
+ ## Development
335
+
336
+ ### Install and build
337
+
338
+ ```bash
339
+ git clone https://github.com/PinkR1ver/vibe-roast.git
340
+ cd vibe-roast
341
+ npm install
342
+ npm run build
343
+ npm run serve
344
+ ```
345
+
346
+ ### Vite development mode
347
+
348
+ ```bash
349
+ # terminal 1: API and local assets
350
+ VIBE_WRAPPER_NO_OPEN=1 npm run serve
351
+
352
+ # terminal 2: Vite HMR
353
+ npm run dev
354
+ ```
355
+
356
+ Vite runs at `http://localhost:5173` and proxies `/api` plus `/assests` to the local Node server.
357
+
358
+ ### Tests
359
+
360
+ ```bash
361
+ npm test
362
+ npm run build
363
+ ```
364
+
365
+ Tests cover adapters, fixture parsing, prompt hygiene, activity aggregation, type scoring, word-cloud entities, AI schema validation, OAuth/broker behavior, caching, Hashtags, and frontend helpers.
366
+
367
+ ### Project map
368
+
369
+ ```text
370
+ bin/ CLI entrypoints
371
+ src/sources/ local Agent adapters
372
+ src/extract/ prompt and concept extraction
373
+ src/lib/ scoring, activity, roast, cache snapshots
374
+ dashboard/src/ React Roast Result UI
375
+ worker/ Cloudflare OAuth + hosted AI broker
376
+ assests/ published visual pack (spelling is intentional)
377
+ test/ Node fixtures and tests
378
+ .agents/ architecture, decisions, and feature specs
379
+ ```
380
+
381
+ For architecture details, see [the project architecture](https://github.com/PinkR1ver/vibe-roast/blob/main/.agents/docs/architecture.md). For the hosted OAuth and free-AI flow, see [the hosted-roast architecture](https://github.com/PinkR1ver/vibe-roast/blob/main/.agents/docs/hosted-roast-architecture.md).
382
+
383
+ ## Self-hosting the broker
384
+
385
+ The public npm package defaults to `https://auth.pinktalk.online`. End users do not need a GitHub Client Secret.
386
+
387
+ The included Cloudflare Worker uses:
388
+
389
+ - GitHub OAuth with state and PKCE;
390
+ - one-time broker tickets;
391
+ - a SQLite Durable Object for sessions, quota, and cached profiles;
392
+ - a fixed Workers AI model;
393
+ - a nine-call UTC-day limit per signed-in account.
394
+
395
+ Deployment and secret configuration live in [`worker/README.md`](worker/README.md).
396
+
397
+ ## Current limitations
398
+
399
+ - Prompt classification is keyword-based rather than full semantic task analysis.
400
+ - Scores describe prompt behavior, not task difficulty, code quality, or project outcomes.
401
+ - Long prompts are only a proxy for context appetite.
402
+ - Activity totals do not select the personality type.
403
+ - Domain discovery is heuristic and needs repeated independent mentions.
404
+ - The profile may change as new session evidence becomes materially different.
405
+
406
+ ## Contributing
407
+
408
+ Issues and pull requests are welcome:
409
+
410
+ 1. Fork the repository.
411
+ 2. Create a focused branch.
412
+ 3. Add or update fixture-backed tests.
413
+ 4. Run `npm test` and `npm run build`.
414
+ 5. Open a pull request describing the user-visible change.
415
+
416
+ Please keep adapters best-effort and never commit private session dumps, raw user histories, tokens, or credentials.
417
+
418
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
@@ -0,0 +1,43 @@
1
+ # Vibe Profile Visual Pack (v7 · 16 vibe types)
2
+
3
+ Figures, badges, and banners for the **Roast Result** product UI at the repo root — see [`README.md`](../README.md).
4
+
5
+ ## What's in v7
6
+
7
+ - **16 current vibe types** as freestanding low-poly flat vector figures under `characters-vibe-types/`
8
+ - **8 legacy archetypes** retained under `characters/` as compatibility fallbacks
9
+ - **No collectible card frame** on product pages — figures sit on a soft abstract stage
10
+ - **8 badges** — symbolic icons (64×64 SVG, not mascot crops)
11
+ - Old SBTI diamond rasters archived as `*.sbti-archive.svg`
12
+ - **`scripts/score-engine.js`** — four-axis type and six-dimension reference helpers (Node mirrors this in `src/lib/agent-score.js`)
13
+ - **`live-report.html`** — optional static export of a live inspect snapshot (not the primary UI)
14
+
15
+ ## Style
16
+
17
+ See `source/design-system.md` — no black outlines · 5.5–6 heads · muted 6–10 colors · simplified faces · symbolic props.
18
+
19
+ ## Structure
20
+
21
+ ```
22
+ assests/
23
+ ├── characters-vibe-types/ # 16 current type figures
24
+ │ └── <type>-<slug>/
25
+ │ └── *-figure.png # 1024×1536 production figure
26
+ ├── characters/01-builder … 08-yolo-shipper/
27
+ │ ├── *-figure.png # legacy runtime fallback
28
+ │ ├── *-character.svg # thin wrapper → figure
29
+ │ ├── *-card.svg # alias (compat, not framed)
30
+ │ └── *.sbti-archive.svg # old SBTI diamond cards
31
+ ├── badges/01-builder … 08-yolo-shipper/
32
+ ├── banners/ home-hero.* share-strip.* result-header.*
33
+ ├── live-report.html # optional static roast export
34
+ ├── notes/live-inspect-summary.json # redacted snapshot for live-report
35
+ ├── scripts/score-engine.js # type and behavior-dimension reference helpers
36
+ ├── scripts/vibe-types.json # 16-type figure manifest
37
+ ├── scripts/roast-extras.js # word cloud / heatmap / share poster helpers
38
+ ├── source/design-system.md
39
+ ├── source/vibe-types-visual-brief.md
40
+ └── source/references/ # legacy SBTI boards + badge board
41
+ ```
42
+
43
+ With `npm run serve`, current figures load from `http://localhost:7681/assests/characters-vibe-types/...`.
File without changes
@@ -0,0 +1,4 @@
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>
@@ -0,0 +1,4 @@
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>