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
@@ -0,0 +1,148 @@
1
+ """Compose banners from existing profile mascot PNGs only — no extra characters."""
2
+ import json
3
+ from pathlib import Path
4
+
5
+ from PIL import Image, ImageDraw
6
+
7
+ ROOT = Path(__file__).resolve().parents[1]
8
+ CONFIG = Path(__file__).resolve().parent / "profiles.json"
9
+ BG = (10, 10, 15, 255)
10
+
11
+
12
+ def load_profiles() -> list[dict]:
13
+ config = json.loads(CONFIG.read_text(encoding="utf-8"))
14
+ return [p for board in config["boards"] for p in board["profiles"]]
15
+
16
+
17
+ def mascot_path(profile: dict) -> Path:
18
+ return ROOT / "characters" / profile["folder"] / f"{profile['name']}-mascot.png"
19
+
20
+
21
+ def scale_to_height(im: Image.Image, height: int) -> Image.Image:
22
+ ratio = height / im.height
23
+ width = max(1, int(im.width * ratio))
24
+ return im.resize((width, height), Image.LANCZOS)
25
+
26
+
27
+ def draw_circuit_bg(canvas: Image.Image, accent: tuple[int, int, int] = (35, 214, 165)) -> None:
28
+ draw = ImageDraw.Draw(canvas)
29
+ w, h = canvas.size
30
+ for y in range(0, h, 48):
31
+ draw.line([(0, y), (w, y)], fill=(20, 28, 40), width=1)
32
+ for x in range(0, w, 64):
33
+ draw.line([(x, 0), (x, h)], fill=(16, 22, 32), width=1)
34
+ draw.line([(24, h - 24), (w - 24, h - 24)], fill=accent + (40,), width=2)
35
+ draw.line([(24, 24), (w * 0.35, 24)], fill=(92, 141, 255, 40), width=2)
36
+
37
+
38
+ def paste_row(
39
+ canvas: Image.Image,
40
+ slices: list[Image.Image],
41
+ *,
42
+ pad_x: int = 16,
43
+ pad_y: int = 0,
44
+ gap: int = 8,
45
+ align: str = "center",
46
+ ) -> None:
47
+ w, h = canvas.size
48
+ pad_y = pad_y or max(8, (h - slices[0].height) // 2)
49
+ total_w = sum(s.width for s in slices) + gap * (len(slices) - 1)
50
+ if align == "left":
51
+ x = pad_x
52
+ else:
53
+ x = max(pad_x, (w - total_w) // 2)
54
+ for im in slices:
55
+ canvas.paste(im, (x, pad_y), im)
56
+ x += im.width + gap
57
+
58
+
59
+ def compose_home_hero(profiles: list[dict], out: Path) -> None:
60
+ """Home: first 3 profiles on the left, empty hero space on the right."""
61
+ w, h = 1200, 400
62
+ canvas = Image.new("RGBA", (w, h), BG)
63
+ draw_circuit_bg(canvas)
64
+
65
+ picks = profiles[:3]
66
+ imgs = [scale_to_height(Image.open(mascot_path(p)).convert("RGBA"), h - 32) for p in picks]
67
+ paste_row(canvas, imgs, pad_x=28, pad_y=16, gap=12, align="left")
68
+
69
+ out.parent.mkdir(parents=True, exist_ok=True)
70
+ canvas.convert("RGB").save(out, optimize=True)
71
+ print(f"wrote {out} ({w}x{h})")
72
+
73
+
74
+ def compose_share_strip(profiles: list[dict], out: Path) -> None:
75
+ """Share: all 8 profiles, equal slots, full width."""
76
+ w, h = 1200, 400
77
+ canvas = Image.new("RGBA", (w, h), BG)
78
+ draw_circuit_bg(canvas, accent=(255, 195, 77))
79
+
80
+ slot_w = (w - 32 - 7 * 6) // 8
81
+ imgs = []
82
+ for p in profiles:
83
+ im = Image.open(mascot_path(p)).convert("RGBA")
84
+ imgs.append(scale_to_height(im, h - 24))
85
+
86
+ # Re-scale to fit equal slot widths
87
+ fitted = []
88
+ for im in imgs:
89
+ if im.width > slot_w:
90
+ ratio = slot_w / im.width
91
+ fitted.append(im.resize((slot_w, max(1, int(im.height * ratio))), Image.LANCZOS))
92
+ else:
93
+ fitted.append(im)
94
+
95
+ x = 16
96
+ for im in fitted:
97
+ y = (h - im.height) // 2
98
+ canvas.paste(im, (x, y), im)
99
+ x += slot_w + 6
100
+
101
+ canvas.convert("RGB").save(out, optimize=True)
102
+ print(f"wrote {out} ({w}x{h})")
103
+
104
+
105
+ def compose_result_header(profiles: list[dict], out: Path) -> None:
106
+ """Result: all 8 profiles in shallow header."""
107
+ w, h = 1200, 280
108
+ canvas = Image.new("RGBA", (w, h), BG)
109
+ draw_circuit_bg(canvas, accent=(92, 141, 255))
110
+
111
+ target_h = h - 20
112
+ imgs = [scale_to_height(Image.open(mascot_path(p)).convert("RGBA"), target_h) for p in profiles]
113
+ slot_w = (w - 24 - 7 * 4) // 8
114
+ fitted = []
115
+ for im in imgs:
116
+ if im.width > slot_w:
117
+ ratio = slot_w / im.width
118
+ fitted.append(im.resize((slot_w, max(1, int(im.height * ratio))), Image.LANCZOS))
119
+ else:
120
+ fitted.append(im)
121
+
122
+ x = 12
123
+ for im in fitted:
124
+ y = (h - im.height) // 2
125
+ canvas.paste(im, (x, y), im)
126
+ x += slot_w + 4
127
+
128
+ canvas.convert("RGB").save(out, optimize=True)
129
+ print(f"wrote {out} ({w}x{h})")
130
+
131
+
132
+ def main() -> None:
133
+ profiles = load_profiles()
134
+ if len(profiles) != 8:
135
+ raise SystemExit(f"expected 8 profiles, got {len(profiles)}")
136
+
137
+ for p in profiles:
138
+ path = mascot_path(p)
139
+ if not path.exists():
140
+ raise SystemExit(f"missing mascot: {path}")
141
+
142
+ compose_home_hero(profiles, ROOT / "banners" / "home-hero.png")
143
+ compose_share_strip(profiles, ROOT / "banners" / "share-strip.png")
144
+ compose_result_header(profiles, ROOT / "banners" / "result-header.png")
145
+
146
+
147
+ if __name__ == "__main__":
148
+ main()
@@ -0,0 +1,2 @@
1
+ /** Auto-refreshed embed for static live-report fallback */
2
+ export const EMBED = {"LIVE":{"scores":{"orchestration":0.3,"promptCraft":17.8,"build":11.8,"debug":0.4,"context":15.8,"ship":4.3},"total":50.4,"tier":{"id":"NPC","min":35,"color":"#8b8680","emoji":"😐","blurb":"Background cast · needs plot","blurbZh":"路人甲 · 缺主线"},"archetype":{"id":"05-prompt-priest","folder":"05-prompt-priest","name":"prompt-priest","title":"Prompt Priest","code":"SPELL","accent":"#f0c14a","hook":"Rules scroll","hookZh":"规则卷轴"},"figure":"characters/05-prompt-priest/prompt-priest-figure.png","badge":"badges/05-prompt-priest/prompt-priest-badge.svg","dimensions":[{"key":"orchestration","label":"Agent orchestration","labelZh":"Agent 编排","hint":"Skills · MCP · multi-agent workflow","max":20,"value":0.3,"score":0.02},{"key":"promptCraft","label":"Prompt craft","labelZh":"提示词手艺","hint":"Useful intent vs paste dumps","max":18,"value":17.8,"score":0.99},{"key":"build","label":"Build throughput","labelZh":"构建吞吐","hint":"Implementation & packaging density","max":18,"value":11.8,"score":0.66},{"key":"debug","label":"Debug resilience","labelZh":"调试韧性","hint":"Breakpoint stamina & root-cause chase","max":14,"value":0.4,"score":0.03},{"key":"context","label":"Context discipline","labelZh":"上下文纪律","hint":"Window hygiene · no log farming","max":16,"value":15.8,"score":0.99},{"key":"ship","label":"Ship courage","labelZh":"上线勇气","hint":"Merge energy vs review paralysis","max":14,"value":4.3,"score":0.31}],"signals":[{"label":"Total tokens","labelZh":"总 Tokens","value":"631.7M"},{"label":"Active days","labelZh":"活跃天数","value":"112"},{"label":"Top provider","labelZh":"主平台","value":"CURSOR"}],"roast":"🔥 Your system prompt has chapters, footnotes, and a dress code. Prompt craft 17.8/18 is near-perfect; ship 4.3/14 is monastic abstinence. You can make an agent recite your coding religion, then spend three days polishing the amen until it scans in iambic pentameter.\n\nRules files grow like scripture. Few-shots become canon. The scroll is holy, the liturgy is airtight, and the binary still waits outside the temple for a baptism that somehow never makes the sprint board.\n\nBless the prompt. Then deploy something that users can sin against in production — preferably before the next rewrite of section 4.2.","roastZh":"🔥 你的 system prompt 分章节、有脚注,还有着装规范。提示词 17.8/18 接近满分,上线 4.3/14 像修道院禁欲。你能让 Agent 背诵编码教义,再花三天把「阿门」打磨成抑扬格五音步。\n\n规则文件像经文疯长。Few-shot 升级成正典。卷轴是圣物,礼仪滴水不漏,二进制还在庙门外等受洗——而这场洗礼永远挤不进 sprint 看板。\n\n请祝福提示词。然后部署一点用户能在生产环境里犯罪的东西——最好赶在下一轮重写第 4.2 节之前。","tldr":"Prompt Priest: liturgy excellence, deployment fasting.","tldrZh":"Prompt Priest:礼仪满分,部署斋戒。"},"META":{"generated_at":"2026-07-20T18:55:17.556Z","prompt_count":337,"source_count":3,"sources":{"codex":0,"claude":0,"cursor":337}},"WORDS":[{"term":"model","count":56},{"term":"代码","count":56},{"term":"讲解","count":52},{"term":"什么","count":50},{"term":"内容","count":47},{"term":"result","count":45},{"term":"实现","count":45},{"term":"详细","count":41},{"term":"pdf","count":38},{"term":"grad","count":36},{"term":"user","count":36},{"term":"ax","count":32},{"term":"roast","count":32},{"term":"html","count":30},{"term":"修改","count":29},{"term":"label","count":28},{"term":"完整","count":28},{"term":"是什","count":28},{"term":"imgs","count":27},{"term":"mbti","count":27},{"term":"现在","count":27},{"term":"character","count":26},{"term":"page","count":26},{"term":"style","count":26},{"term":"要求","count":26},{"term":"commit","count":25},{"term":"figure","count":24},{"term":"data","count":23},{"term":"怎么","count":23},{"term":"解释","count":23}],"ACTIVITY":{"source":"token-tracker","metric":"tokens","daily_rows":[{"day":"2025-10-22","total_tokens":29635820,"billable_total_tokens":29635820,"input_tokens":1973484,"cached_input_tokens":27484864,"cache_creation_input_tokens":0,"output_tokens":177472,"reasoning_output_tokens":0,"conversation_count":32,"models":{"cursor/auto":29635820},"sources":{"cursor":29635820},"value":29635820,"level_value":29635820},{"day":"2025-10-25","total_tokens":1210452,"billable_total_tokens":1210452,"input_tokens":0,"cached_input_tokens":1035520,"cache_creation_input_tokens":155399,"output_tokens":19533,"reasoning_output_tokens":0,"conversation_count":7,"models":{"cursor/auto":1210452},"sources":{"cursor":1210452},"value":1210452,"level_value":1210452},{"day":"2025-10-26","total_tokens":8056685,"billable_total_tokens":8056685,"input_tokens":0,"cached_input_tokens":7644928,"cache_creation_input_tokens":356011,"output_tokens":55746,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":8056685},"sources":{"cursor":8056685},"value":8056685,"level_value":8056685},{"day":"2025-10-27","total_tokens":4037006,"billable_total_tokens":4037006,"input_tokens":0,"cached_input_tokens":3717120,"cache_creation_input_tokens":296510,"output_tokens":23376,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":4037006},"sources":{"cursor":4037006},"value":4037006,"level_value":4037006},{"day":"2025-10-29","total_tokens":96850,"billable_total_tokens":96850,"input_tokens":0,"cached_input_tokens":76800,"cache_creation_input_tokens":18612,"output_tokens":1438,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":96850},"sources":{"cursor":96850},"value":96850,"level_value":96850},{"day":"2025-11-04","total_tokens":3173694,"billable_total_tokens":3173694,"input_tokens":289121,"cached_input_tokens":2860032,"cache_creation_input_tokens":0,"output_tokens":24541,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":3173694},"sources":{"cursor":3173694},"value":3173694,"level_value":3173694},{"day":"2025-11-05","total_tokens":21895322,"billable_total_tokens":21895322,"input_tokens":2202049,"cached_input_tokens":19509728,"cache_creation_input_tokens":0,"output_tokens":183545,"reasoning_output_tokens":0,"conversation_count":39,"models":{"cursor/auto":21895322},"sources":{"cursor":21895322},"value":21895322,"level_value":21895322},{"day":"2025-11-06","total_tokens":12074482,"billable_total_tokens":12074482,"input_tokens":507270,"cached_input_tokens":10172256,"cache_creation_input_tokens":1291440,"output_tokens":103516,"reasoning_output_tokens":0,"conversation_count":19,"models":{"cursor/auto":12074482},"sources":{"cursor":12074482},"value":12074482,"level_value":12074482},{"day":"2025-11-08","total_tokens":162984,"billable_total_tokens":162984,"input_tokens":0,"cached_input_tokens":139008,"cache_creation_input_tokens":19665,"output_tokens":4311,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":162984},"sources":{"cursor":162984},"value":162984,"level_value":162984},{"day":"2025-11-11","total_tokens":199800,"billable_total_tokens":199800,"input_tokens":0,"cached_input_tokens":170240,"cache_creation_input_tokens":25517,"output_tokens":4043,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":199800},"sources":{"cursor":199800},"value":199800,"level_value":199800},{"day":"2025-11-16","total_tokens":909916,"billable_total_tokens":909916,"input_tokens":0,"cached_input_tokens":828160,"cache_creation_input_tokens":71078,"output_tokens":10678,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":909916},"sources":{"cursor":909916},"value":909916,"level_value":909916},{"day":"2025-11-18","total_tokens":23575522,"billable_total_tokens":23575522,"input_tokens":1535736,"cached_input_tokens":21464576,"cache_creation_input_tokens":491469,"output_tokens":83741,"reasoning_output_tokens":0,"conversation_count":33,"models":{"cursor/auto":23575522},"sources":{"cursor":23575522},"value":23575522,"level_value":23575522},{"day":"2025-11-19","total_tokens":27633085,"billable_total_tokens":27633085,"input_tokens":3512179,"cached_input_tokens":24020736,"cache_creation_input_tokens":0,"output_tokens":100170,"reasoning_output_tokens":0,"conversation_count":19,"models":{"cursor/auto":27633085},"sources":{"cursor":27633085},"value":27633085,"level_value":27633085},{"day":"2025-11-23","total_tokens":3356192,"billable_total_tokens":3356192,"input_tokens":0,"cached_input_tokens":3235296,"cache_creation_input_tokens":113943,"output_tokens":6953,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":3356192},"sources":{"cursor":3356192},"value":3356192,"level_value":3356192},{"day":"2025-11-24","total_tokens":15315914,"billable_total_tokens":15315914,"input_tokens":251259,"cached_input_tokens":14696192,"cache_creation_input_tokens":288307,"output_tokens":80156,"reasoning_output_tokens":0,"conversation_count":8,"models":{"cursor/auto":15315914},"sources":{"cursor":15315914},"value":15315914,"level_value":15315914},{"day":"2025-11-25","total_tokens":610489,"billable_total_tokens":610489,"input_tokens":0,"cached_input_tokens":526080,"cache_creation_input_tokens":77613,"output_tokens":6796,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":610489},"sources":{"cursor":610489},"value":610489,"level_value":610489},{"day":"2025-11-27","total_tokens":7766838,"billable_total_tokens":7766838,"input_tokens":369706,"cached_input_tokens":7161216,"cache_creation_input_tokens":203153,"output_tokens":32763,"reasoning_output_tokens":0,"conversation_count":11,"models":{"cursor/auto":7766838},"sources":{"cursor":7766838},"value":7766838,"level_value":7766838},{"day":"2025-11-29","total_tokens":2862380,"billable_total_tokens":2862380,"input_tokens":0,"cached_input_tokens":2557952,"cache_creation_input_tokens":275433,"output_tokens":28995,"reasoning_output_tokens":0,"conversation_count":4,"models":{"cursor/auto":2862380},"sources":{"cursor":2862380},"value":2862380,"level_value":2862380},{"day":"2025-11-30","total_tokens":9485723,"billable_total_tokens":9485723,"input_tokens":1978,"cached_input_tokens":8929536,"cache_creation_input_tokens":473249,"output_tokens":80960,"reasoning_output_tokens":0,"conversation_count":20,"models":{"cursor/auto":9485723},"sources":{"cursor":9485723},"value":9485723,"level_value":9485723},{"day":"2025-12-01","total_tokens":10363707,"billable_total_tokens":10363707,"input_tokens":1723,"cached_input_tokens":9745408,"cache_creation_input_tokens":551335,"output_tokens":65241,"reasoning_output_tokens":0,"conversation_count":21,"models":{"cursor/auto":10363707},"sources":{"cursor":10363707},"value":10363707,"level_value":10363707},{"day":"2025-12-02","total_tokens":19023403,"billable_total_tokens":19023403,"input_tokens":1094,"cached_input_tokens":17513984,"cache_creation_input_tokens":1361559,"output_tokens":146766,"reasoning_output_tokens":0,"conversation_count":27,"models":{"cursor/auto":19023403},"sources":{"cursor":19023403},"value":19023403,"level_value":19023403},{"day":"2025-12-03","total_tokens":121962,"billable_total_tokens":121962,"input_tokens":0,"cached_input_tokens":92928,"cache_creation_input_tokens":20857,"output_tokens":8177,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":121962},"sources":{"cursor":121962},"value":121962,"level_value":121962},{"day":"2025-12-04","total_tokens":291693,"billable_total_tokens":291693,"input_tokens":0,"cached_input_tokens":241664,"cache_creation_input_tokens":40928,"output_tokens":9101,"reasoning_output_tokens":0,"conversation_count":4,"models":{"cursor/auto":291693},"sources":{"cursor":291693},"value":291693,"level_value":291693},{"day":"2025-12-05","total_tokens":1942012,"billable_total_tokens":1942012,"input_tokens":0,"cached_input_tokens":1782784,"cache_creation_input_tokens":123927,"output_tokens":35301,"reasoning_output_tokens":0,"conversation_count":7,"models":{"cursor/auto":1942012},"sources":{"cursor":1942012},"value":1942012,"level_value":1942012},{"day":"2025-12-06","total_tokens":5009599,"billable_total_tokens":5009599,"input_tokens":0,"cached_input_tokens":4658432,"cache_creation_input_tokens":295525,"output_tokens":55642,"reasoning_output_tokens":0,"conversation_count":8,"models":{"cursor/auto":5009599},"sources":{"cursor":5009599},"value":5009599,"level_value":5009599},{"day":"2025-12-09","total_tokens":80546,"billable_total_tokens":80546,"input_tokens":0,"cached_input_tokens":62720,"cache_creation_input_tokens":12299,"output_tokens":5527,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":80546},"sources":{"cursor":80546},"value":80546,"level_value":80546},{"day":"2025-12-11","total_tokens":5740365,"billable_total_tokens":5740365,"input_tokens":1690,"cached_input_tokens":5081888,"cache_creation_input_tokens":591638,"output_tokens":65149,"reasoning_output_tokens":0,"conversation_count":13,"models":{"cursor/auto":5740365},"sources":{"cursor":5740365},"value":5740365,"level_value":5740365},{"day":"2025-12-16","total_tokens":14311106,"billable_total_tokens":14311106,"input_tokens":0,"cached_input_tokens":13272832,"cache_creation_input_tokens":908512,"output_tokens":129762,"reasoning_output_tokens":0,"conversation_count":27,"models":{"cursor/auto":14311106},"sources":{"cursor":14311106},"value":14311106,"level_value":14311106},{"day":"2025-12-17","total_tokens":1198993,"billable_total_tokens":1198993,"input_tokens":0,"cached_input_tokens":1059584,"cache_creation_input_tokens":126686,"output_tokens":12723,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":1198993},"sources":{"cursor":1198993},"value":1198993,"level_value":1198993},{"day":"2025-12-30","total_tokens":497337,"billable_total_tokens":497337,"input_tokens":0,"cached_input_tokens":423168,"cache_creation_input_tokens":46420,"output_tokens":27749,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":497337},"sources":{"cursor":497337},"value":497337,"level_value":497337},{"day":"2026-01-01","total_tokens":1421786,"billable_total_tokens":1421786,"input_tokens":0,"cached_input_tokens":1207808,"cache_creation_input_tokens":170561,"output_tokens":43417,"reasoning_output_tokens":0,"conversation_count":10,"models":{"cursor/auto":1421786},"sources":{"cursor":1421786},"value":1421786,"level_value":1421786},{"day":"2026-01-02","total_tokens":1650688,"billable_total_tokens":1650688,"input_tokens":0,"cached_input_tokens":1530624,"cache_creation_input_tokens":98580,"output_tokens":21484,"reasoning_output_tokens":0,"conversation_count":7,"models":{"cursor/auto":1650688},"sources":{"cursor":1650688},"value":1650688,"level_value":1650688},{"day":"2026-01-11","total_tokens":7353979,"billable_total_tokens":7353979,"input_tokens":210162,"cached_input_tokens":6720512,"cache_creation_input_tokens":357299,"output_tokens":66006,"reasoning_output_tokens":0,"conversation_count":14,"models":{"cursor/auto":7353979},"sources":{"cursor":7353979},"value":7353979,"level_value":7353979},{"day":"2026-01-12","total_tokens":6883749,"billable_total_tokens":6883749,"input_tokens":233565,"cached_input_tokens":6339328,"cache_creation_input_tokens":253102,"output_tokens":57754,"reasoning_output_tokens":0,"conversation_count":12,"models":{"cursor/auto":6883749},"sources":{"cursor":6883749},"value":6883749,"level_value":6883749},{"day":"2026-01-29","total_tokens":10236512,"billable_total_tokens":10236512,"input_tokens":435401,"cached_input_tokens":8912032,"cache_creation_input_tokens":817983,"output_tokens":71096,"reasoning_output_tokens":0,"conversation_count":24,"models":{"cursor/auto":10236512},"sources":{"cursor":10236512},"value":10236512,"level_value":10236512},{"day":"2026-01-30","total_tokens":3851941,"billable_total_tokens":3851941,"input_tokens":0,"cached_input_tokens":3559336,"cache_creation_input_tokens":252872,"output_tokens":39733,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":3851941},"sources":{"cursor":3851941},"value":3851941,"level_value":3851941},{"day":"2026-02-02","total_tokens":1783699,"billable_total_tokens":1783699,"input_tokens":193442,"cached_input_tokens":1422304,"cache_creation_input_tokens":148946,"output_tokens":19007,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":1783699},"sources":{"cursor":1783699},"value":1783699,"level_value":1783699},{"day":"2026-02-04","total_tokens":10331218,"billable_total_tokens":10331218,"input_tokens":266340,"cached_input_tokens":9882656,"cache_creation_input_tokens":131471,"output_tokens":50751,"reasoning_output_tokens":0,"conversation_count":7,"models":{"cursor/auto":10331218},"sources":{"cursor":10331218},"value":10331218,"level_value":10331218},{"day":"2026-02-05","total_tokens":239047,"billable_total_tokens":239047,"input_tokens":0,"cached_input_tokens":158240,"cache_creation_input_tokens":76025,"output_tokens":4782,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":239047},"sources":{"cursor":239047},"value":239047,"level_value":239047},{"day":"2026-02-08","total_tokens":1877200,"billable_total_tokens":1877200,"input_tokens":6358,"cached_input_tokens":1772416,"cache_creation_input_tokens":84421,"output_tokens":14005,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":1877200},"sources":{"cursor":1877200},"value":1877200,"level_value":1877200},{"day":"2026-02-10","total_tokens":11131422,"billable_total_tokens":11131422,"input_tokens":111772,"cached_input_tokens":10448256,"cache_creation_input_tokens":503286,"output_tokens":68108,"reasoning_output_tokens":0,"conversation_count":15,"models":{"cursor/auto":11131422},"sources":{"cursor":11131422},"value":11131422,"level_value":11131422},{"day":"2026-03-23","total_tokens":1427271,"billable_total_tokens":1427271,"input_tokens":170967,"cached_input_tokens":1229056,"cache_creation_input_tokens":0,"output_tokens":27248,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":1427271},"sources":{"cursor":1427271},"value":1427271,"level_value":1427271},{"day":"2026-03-26","total_tokens":3722505,"billable_total_tokens":3722505,"input_tokens":894681,"cached_input_tokens":2796544,"cache_creation_input_tokens":0,"output_tokens":31280,"reasoning_output_tokens":0,"conversation_count":9,"models":{"cursor/auto":3722505},"sources":{"cursor":3722505},"value":3722505,"level_value":3722505},{"day":"2026-03-28","total_tokens":15411254,"billable_total_tokens":15411254,"input_tokens":15313273,"cached_input_tokens":0,"cache_creation_input_tokens":0,"output_tokens":97981,"reasoning_output_tokens":0,"conversation_count":23,"models":{"cursor/auto":15411254},"sources":{"cursor":15411254},"value":15411254,"level_value":15411254},{"day":"2026-03-29","total_tokens":9903057,"billable_total_tokens":9903057,"input_tokens":7130489,"cached_input_tokens":2715136,"cache_creation_input_tokens":0,"output_tokens":57432,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":9903057},"sources":{"cursor":9903057},"value":9903057,"level_value":9903057},{"day":"2026-03-30","total_tokens":563098,"billable_total_tokens":563098,"input_tokens":254214,"cached_input_tokens":306944,"cache_creation_input_tokens":0,"output_tokens":1940,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":563098},"sources":{"cursor":563098},"value":563098,"level_value":563098},{"day":"2026-03-31","total_tokens":2017061,"billable_total_tokens":2017061,"input_tokens":660336,"cached_input_tokens":1354240,"cache_creation_input_tokens":0,"output_tokens":2485,"reasoning_output_tokens":0,"conversation_count":4,"models":{"cursor/auto":2017061},"sources":{"cursor":2017061},"value":2017061,"level_value":2017061},{"day":"2026-04-01","total_tokens":357919,"billable_total_tokens":357919,"input_tokens":36888,"cached_input_tokens":315392,"cache_creation_input_tokens":0,"output_tokens":5639,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":357919},"sources":{"cursor":357919},"value":357919,"level_value":357919},{"day":"2026-04-02","total_tokens":3844015,"billable_total_tokens":3844015,"input_tokens":3799331,"cached_input_tokens":13440,"cache_creation_input_tokens":0,"output_tokens":31244,"reasoning_output_tokens":0,"conversation_count":7,"models":{"cursor/auto":3844015},"sources":{"cursor":3844015},"value":3844015,"level_value":3844015},{"day":"2026-04-06","total_tokens":1690060,"billable_total_tokens":1690060,"input_tokens":1676538,"cached_input_tokens":0,"cache_creation_input_tokens":0,"output_tokens":13522,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":1690060},"sources":{"cursor":1690060},"value":1690060,"level_value":1690060},{"day":"2026-04-09","total_tokens":3147407,"billable_total_tokens":3147407,"input_tokens":127805,"cached_input_tokens":3000576,"cache_creation_input_tokens":0,"output_tokens":19026,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":3147407},"sources":{"cursor":3147407},"value":3147407,"level_value":3147407},{"day":"2026-04-10","total_tokens":1336044,"billable_total_tokens":1336044,"input_tokens":173993,"cached_input_tokens":1157408,"cache_creation_input_tokens":0,"output_tokens":4643,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":1336044},"sources":{"cursor":1336044},"value":1336044,"level_value":1336044},{"day":"2026-04-12","total_tokens":1790637,"billable_total_tokens":1790637,"input_tokens":179026,"cached_input_tokens":1597440,"cache_creation_input_tokens":0,"output_tokens":14171,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":1790637},"sources":{"cursor":1790637},"value":1790637,"level_value":1790637},{"day":"2026-04-15","total_tokens":9150152,"billable_total_tokens":9150152,"input_tokens":407225,"cached_input_tokens":8710528,"cache_creation_input_tokens":0,"output_tokens":32399,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":9150152},"sources":{"cursor":9150152},"value":9150152,"level_value":9150152},{"day":"2026-04-16","total_tokens":772265,"billable_total_tokens":772265,"input_tokens":104660,"cached_input_tokens":659328,"cache_creation_input_tokens":0,"output_tokens":8277,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":772265},"sources":{"cursor":772265},"value":772265,"level_value":772265},{"day":"2026-04-17","total_tokens":1070085,"billable_total_tokens":1070085,"input_tokens":77225,"cached_input_tokens":984448,"cache_creation_input_tokens":0,"output_tokens":8412,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":1070085},"sources":{"cursor":1070085},"value":1070085,"level_value":1070085},{"day":"2026-04-18","total_tokens":6821438,"billable_total_tokens":6821438,"input_tokens":397410,"cached_input_tokens":6339584,"cache_creation_input_tokens":0,"output_tokens":84444,"reasoning_output_tokens":0,"conversation_count":34,"models":{"cursor/auto":6821438},"sources":{"cursor":6821438},"value":6821438,"level_value":6821438},{"day":"2026-04-19","total_tokens":4351615,"billable_total_tokens":4351615,"input_tokens":317044,"cached_input_tokens":4005888,"cache_creation_input_tokens":0,"output_tokens":28683,"reasoning_output_tokens":0,"conversation_count":10,"models":{"cursor/auto":4351615},"sources":{"cursor":4351615},"value":4351615,"level_value":4351615},{"day":"2026-04-21","total_tokens":2107507,"billable_total_tokens":2107507,"input_tokens":516387,"cached_input_tokens":1572896,"cache_creation_input_tokens":0,"output_tokens":18224,"reasoning_output_tokens":0,"conversation_count":8,"models":{"cursor/auto":2107507},"sources":{"cursor":2107507},"value":2107507,"level_value":2107507},{"day":"2026-04-23","total_tokens":8815590,"billable_total_tokens":8815590,"input_tokens":716143,"cached_input_tokens":8061056,"cache_creation_input_tokens":0,"output_tokens":38391,"reasoning_output_tokens":0,"conversation_count":39,"models":{"cursor/auto":8815590},"sources":{"cursor":8815590},"value":8815590,"level_value":8815590},{"day":"2026-04-24","total_tokens":4423608,"billable_total_tokens":4423608,"input_tokens":703042,"cached_input_tokens":3710336,"cache_creation_input_tokens":0,"output_tokens":10230,"reasoning_output_tokens":0,"conversation_count":17,"models":{"cursor/auto":4423608},"sources":{"cursor":4423608},"value":4423608,"level_value":4423608},{"day":"2026-04-27","total_tokens":4417284,"billable_total_tokens":4417284,"input_tokens":236141,"cached_input_tokens":4151552,"cache_creation_input_tokens":0,"output_tokens":29591,"reasoning_output_tokens":0,"conversation_count":11,"models":{"cursor/auto":4417284},"sources":{"cursor":4417284},"value":4417284,"level_value":4417284},{"day":"2026-04-28","total_tokens":19112123,"billable_total_tokens":19112123,"input_tokens":534550,"cached_input_tokens":18495488,"cache_creation_input_tokens":0,"output_tokens":82085,"reasoning_output_tokens":0,"conversation_count":23,"models":{"cursor/auto":19112123},"sources":{"cursor":19112123},"value":19112123,"level_value":19112123},{"day":"2026-04-29","total_tokens":17776431,"billable_total_tokens":17776431,"input_tokens":2342022,"cached_input_tokens":15398912,"cache_creation_input_tokens":0,"output_tokens":35497,"reasoning_output_tokens":0,"conversation_count":22,"models":{"cursor/auto":17776431},"sources":{"cursor":17776431},"value":17776431,"level_value":17776431},{"day":"2026-05-06","total_tokens":5567807,"billable_total_tokens":5567807,"input_tokens":357214,"cached_input_tokens":5134976,"cache_creation_input_tokens":0,"output_tokens":75617,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":5567807},"sources":{"cursor":5567807},"value":5567807,"level_value":5567807},{"day":"2026-05-07","total_tokens":16460965,"billable_total_tokens":16460965,"input_tokens":926137,"cached_input_tokens":15385152,"cache_creation_input_tokens":0,"output_tokens":149676,"reasoning_output_tokens":0,"conversation_count":30,"models":{"cursor/auto":16460965},"sources":{"cursor":16460965},"value":16460965,"level_value":16460965},{"day":"2026-05-09","total_tokens":96071,"billable_total_tokens":96071,"input_tokens":90254,"cached_input_tokens":5536,"cache_creation_input_tokens":0,"output_tokens":281,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":96071},"sources":{"cursor":96071},"value":96071,"level_value":96071},{"day":"2026-05-10","total_tokens":3260906,"billable_total_tokens":3260906,"input_tokens":147731,"cached_input_tokens":3092896,"cache_creation_input_tokens":0,"output_tokens":20279,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":3260906},"sources":{"cursor":3260906},"value":3260906,"level_value":3260906},{"day":"2026-05-15","total_tokens":907384,"billable_total_tokens":907384,"input_tokens":44776,"cached_input_tokens":851456,"cache_creation_input_tokens":0,"output_tokens":11152,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":907384},"sources":{"cursor":907384},"value":907384,"level_value":907384},{"day":"2026-05-16","total_tokens":3963662,"billable_total_tokens":3963662,"input_tokens":280441,"cached_input_tokens":3606272,"cache_creation_input_tokens":0,"output_tokens":76949,"reasoning_output_tokens":0,"conversation_count":21,"models":{"cursor/auto":3963662},"sources":{"cursor":3963662},"value":3963662,"level_value":3963662},{"day":"2026-05-17","total_tokens":254227,"billable_total_tokens":254227,"input_tokens":62876,"cached_input_tokens":184576,"cache_creation_input_tokens":0,"output_tokens":6775,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":254227},"sources":{"cursor":254227},"value":254227,"level_value":254227},{"day":"2026-05-18","total_tokens":10028812,"billable_total_tokens":10028812,"input_tokens":1753626,"cached_input_tokens":8198656,"cache_creation_input_tokens":0,"output_tokens":76530,"reasoning_output_tokens":0,"conversation_count":21,"models":{"cursor/auto":10028812},"sources":{"cursor":10028812},"value":10028812,"level_value":10028812},{"day":"2026-05-19","total_tokens":1122744,"billable_total_tokens":1122744,"input_tokens":459468,"cached_input_tokens":654848,"cache_creation_input_tokens":0,"output_tokens":8428,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":1122744},"sources":{"cursor":1122744},"value":1122744,"level_value":1122744},{"day":"2026-05-20","total_tokens":7521649,"billable_total_tokens":7521649,"input_tokens":1110776,"cached_input_tokens":6351072,"cache_creation_input_tokens":0,"output_tokens":59801,"reasoning_output_tokens":0,"conversation_count":19,"models":{"cursor/auto":4873964,"cursor/composer-2.5-fast":2647685},"sources":{"cursor":7521649},"value":7521649,"level_value":7521649},{"day":"2026-05-21","total_tokens":2776042,"billable_total_tokens":2776042,"input_tokens":1182138,"cached_input_tokens":1558016,"cache_creation_input_tokens":0,"output_tokens":35888,"reasoning_output_tokens":0,"conversation_count":13,"models":{"cursor/auto":2776042},"sources":{"cursor":2776042},"value":2776042,"level_value":2776042},{"day":"2026-05-22","total_tokens":24514,"billable_total_tokens":24514,"input_tokens":6908,"cached_input_tokens":16640,"cache_creation_input_tokens":0,"output_tokens":966,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":24514},"sources":{"cursor":24514},"value":24514,"level_value":24514},{"day":"2026-05-27","total_tokens":391637,"billable_total_tokens":391637,"input_tokens":78855,"cached_input_tokens":300840,"cache_creation_input_tokens":0,"output_tokens":11942,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":391637},"sources":{"cursor":391637},"value":391637,"level_value":391637},{"day":"2026-05-28","total_tokens":244564,"billable_total_tokens":244564,"input_tokens":22022,"cached_input_tokens":216231,"cache_creation_input_tokens":0,"output_tokens":6311,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":244564},"sources":{"cursor":244564},"value":244564,"level_value":244564},{"day":"2026-05-29","total_tokens":12345059,"billable_total_tokens":12345059,"input_tokens":1544090,"cached_input_tokens":10701910,"cache_creation_input_tokens":0,"output_tokens":99059,"reasoning_output_tokens":0,"conversation_count":28,"models":{"cursor/auto":12345059},"sources":{"cursor":12345059},"value":12345059,"level_value":12345059},{"day":"2026-05-30","total_tokens":286807,"billable_total_tokens":286807,"input_tokens":35699,"cached_input_tokens":246336,"cache_creation_input_tokens":0,"output_tokens":4772,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":286807},"sources":{"cursor":286807},"value":286807,"level_value":286807},{"day":"2026-06-01","total_tokens":677597,"billable_total_tokens":677597,"input_tokens":209040,"cached_input_tokens":461472,"cache_creation_input_tokens":0,"output_tokens":7085,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":677597},"sources":{"cursor":677597},"value":677597,"level_value":677597},{"day":"2026-06-05","total_tokens":1777153,"billable_total_tokens":1777153,"input_tokens":202073,"cached_input_tokens":1567648,"cache_creation_input_tokens":0,"output_tokens":7432,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":1777153},"sources":{"cursor":1777153},"value":1777153,"level_value":1777153},{"day":"2026-06-06","total_tokens":10714999,"billable_total_tokens":10714999,"input_tokens":556406,"cached_input_tokens":10076320,"cache_creation_input_tokens":0,"output_tokens":82273,"reasoning_output_tokens":0,"conversation_count":17,"models":{"cursor/auto":10714999},"sources":{"cursor":10714999},"value":10714999,"level_value":10714999},{"day":"2026-06-07","total_tokens":857662,"billable_total_tokens":857662,"input_tokens":126339,"cached_input_tokens":711968,"cache_creation_input_tokens":0,"output_tokens":19355,"reasoning_output_tokens":0,"conversation_count":13,"models":{"cursor/auto":857662},"sources":{"cursor":857662},"value":857662,"level_value":857662},{"day":"2026-06-08","total_tokens":921163,"billable_total_tokens":921163,"input_tokens":191637,"cached_input_tokens":721856,"cache_creation_input_tokens":0,"output_tokens":7670,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":921163},"sources":{"cursor":921163},"value":921163,"level_value":921163},{"day":"2026-06-10","total_tokens":594946,"billable_total_tokens":594946,"input_tokens":115570,"cached_input_tokens":476800,"cache_creation_input_tokens":0,"output_tokens":2576,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":594946},"sources":{"cursor":594946},"value":594946,"level_value":594946},{"day":"2026-06-11","total_tokens":5338439,"billable_total_tokens":5338439,"input_tokens":1613023,"cached_input_tokens":3611776,"cache_creation_input_tokens":0,"output_tokens":113640,"reasoning_output_tokens":0,"conversation_count":33,"models":{"cursor/auto":5338439},"sources":{"cursor":5338439},"value":5338439,"level_value":5338439},{"day":"2026-06-13","total_tokens":1274682,"billable_total_tokens":1274682,"input_tokens":239262,"cached_input_tokens":1008552,"cache_creation_input_tokens":0,"output_tokens":26868,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":1274682},"sources":{"cursor":1274682},"value":1274682,"level_value":1274682},{"day":"2026-06-14","total_tokens":797624,"billable_total_tokens":797624,"input_tokens":233396,"cached_input_tokens":542752,"cache_creation_input_tokens":0,"output_tokens":21476,"reasoning_output_tokens":0,"conversation_count":5,"models":{"cursor/auto":797624},"sources":{"cursor":797624},"value":797624,"level_value":797624},{"day":"2026-06-15","total_tokens":7866942,"billable_total_tokens":7866942,"input_tokens":1954806,"cached_input_tokens":5827647,"cache_creation_input_tokens":0,"output_tokens":84489,"reasoning_output_tokens":0,"conversation_count":20,"models":{"cursor/auto":7866942},"sources":{"cursor":7866942},"value":7866942,"level_value":7866942},{"day":"2026-06-16","total_tokens":4188295,"billable_total_tokens":4188295,"input_tokens":985976,"cached_input_tokens":3132963,"cache_creation_input_tokens":0,"output_tokens":69356,"reasoning_output_tokens":0,"conversation_count":33,"models":{"cursor/auto":4188295},"sources":{"cursor":4188295},"value":4188295,"level_value":4188295},{"day":"2026-06-17","total_tokens":31962666,"billable_total_tokens":31962666,"input_tokens":5144852,"cached_input_tokens":25042385,"cache_creation_input_tokens":1484003,"output_tokens":259810,"reasoning_output_tokens":31616,"conversation_count":296,"models":{"cursor/auto":9582543,"workbuddy/auto":22380123},"sources":{"cursor":9582543,"workbuddy":22380123},"value":31962666,"level_value":31962666},{"day":"2026-06-18","total_tokens":12896005,"billable_total_tokens":12896005,"input_tokens":1827124,"cached_input_tokens":10831256,"cache_creation_input_tokens":38257,"output_tokens":168913,"reasoning_output_tokens":30455,"conversation_count":203,"models":{"cursor/auto":2846141,"workbuddy/auto":10049864},"sources":{"cursor":2846141,"workbuddy":10049864},"value":12896005,"level_value":12896005},{"day":"2026-06-19","total_tokens":2684250,"billable_total_tokens":2684250,"input_tokens":304262,"cached_input_tokens":2329024,"cache_creation_input_tokens":0,"output_tokens":31540,"reasoning_output_tokens":19424,"conversation_count":24,"models":{"cursor/auto":1110018,"workbuddy/auto":1574232},"sources":{"cursor":1110018,"workbuddy":1574232},"value":2684250,"level_value":2684250},{"day":"2026-06-20","total_tokens":9353063,"billable_total_tokens":9353063,"input_tokens":734003,"cached_input_tokens":7016413,"cache_creation_input_tokens":1476603,"output_tokens":117576,"reasoning_output_tokens":8468,"conversation_count":162,"models":{"workbuddy/auto":9353063},"sources":{"workbuddy":9353063},"value":9353063,"level_value":9353063},{"day":"2026-06-21","total_tokens":439949,"billable_total_tokens":439949,"input_tokens":222572,"cached_input_tokens":194949,"cache_creation_input_tokens":0,"output_tokens":22428,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":439949},"sources":{"cursor":439949},"value":439949,"level_value":439949},{"day":"2026-06-22","total_tokens":927978,"billable_total_tokens":927978,"input_tokens":124756,"cached_input_tokens":631372,"cache_creation_input_tokens":165465,"output_tokens":5944,"reasoning_output_tokens":441,"conversation_count":9,"models":{"cursor/auto":364792,"workbuddy/auto":563186},"sources":{"cursor":364792,"workbuddy":563186},"value":927978,"level_value":927978},{"day":"2026-06-23","total_tokens":2054721,"billable_total_tokens":2054721,"input_tokens":238238,"cached_input_tokens":1803755,"cache_creation_input_tokens":0,"output_tokens":12728,"reasoning_output_tokens":0,"conversation_count":3,"models":{"cursor/auto":2054721},"sources":{"cursor":2054721},"value":2054721,"level_value":2054721},{"day":"2026-06-24","total_tokens":1228608,"billable_total_tokens":1228608,"input_tokens":437917,"cached_input_tokens":774024,"cache_creation_input_tokens":0,"output_tokens":16667,"reasoning_output_tokens":0,"conversation_count":6,"models":{"cursor/auto":1228608},"sources":{"cursor":1228608},"value":1228608,"level_value":1228608},{"day":"2026-06-25","total_tokens":4925631,"billable_total_tokens":4925631,"input_tokens":1082700,"cached_input_tokens":3792927,"cache_creation_input_tokens":0,"output_tokens":50004,"reasoning_output_tokens":0,"conversation_count":19,"models":{"cursor/auto":4707354,"workbuddy/auto":218277},"sources":{"cursor":4707354,"workbuddy":218277},"value":4925631,"level_value":4925631},{"day":"2026-06-26","total_tokens":101502,"billable_total_tokens":101502,"input_tokens":91527,"cached_input_tokens":8023,"cache_creation_input_tokens":0,"output_tokens":1952,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":101502},"sources":{"cursor":101502},"value":101502,"level_value":101502},{"day":"2026-06-27","total_tokens":7889778,"billable_total_tokens":7889778,"input_tokens":877560,"cached_input_tokens":6758713,"cache_creation_input_tokens":149886,"output_tokens":89855,"reasoning_output_tokens":13764,"conversation_count":108,"models":{"workbuddy/auto":7889778},"sources":{"workbuddy":7889778},"value":7889778,"level_value":7889778},{"day":"2026-06-28","total_tokens":6554177,"billable_total_tokens":6554177,"input_tokens":139028,"cached_input_tokens":5863453,"cache_creation_input_tokens":497582,"output_tokens":44744,"reasoning_output_tokens":9370,"conversation_count":83,"models":{"workbuddy/auto":6554177},"sources":{"workbuddy":6554177},"value":6554177,"level_value":6554177},{"day":"2026-06-29","total_tokens":1294596,"billable_total_tokens":1294596,"input_tokens":202283,"cached_input_tokens":1085012,"cache_creation_input_tokens":0,"output_tokens":7301,"reasoning_output_tokens":0,"conversation_count":1,"models":{"cursor/auto":1294596},"sources":{"cursor":1294596},"value":1294596,"level_value":1294596},{"day":"2026-07-01","total_tokens":30110,"billable_total_tokens":30110,"input_tokens":29942,"cached_input_tokens":0,"cache_creation_input_tokens":0,"output_tokens":130,"reasoning_output_tokens":38,"conversation_count":1,"models":{"workbuddy/auto":30110},"sources":{"workbuddy":30110},"value":30110,"level_value":30110},{"day":"2026-07-02","total_tokens":71122,"billable_total_tokens":71122,"input_tokens":19714,"cached_input_tokens":50432,"cache_creation_input_tokens":0,"output_tokens":477,"reasoning_output_tokens":499,"conversation_count":2,"models":{"workbuddy/auto":71122},"sources":{"workbuddy":71122},"value":71122,"level_value":71122},{"day":"2026-07-03","total_tokens":41272,"billable_total_tokens":41272,"input_tokens":26487,"cached_input_tokens":13760,"cache_creation_input_tokens":0,"output_tokens":496,"reasoning_output_tokens":529,"conversation_count":1,"models":{"workbuddy/auto":41272},"sources":{"workbuddy":41272},"value":41272,"level_value":41272},{"day":"2026-07-08","total_tokens":1062794,"billable_total_tokens":1062794,"input_tokens":234972,"cached_input_tokens":811936,"cache_creation_input_tokens":0,"output_tokens":15886,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":1062794},"sources":{"cursor":1062794},"value":1062794,"level_value":1062794},{"day":"2026-07-15","total_tokens":96728,"billable_total_tokens":96728,"input_tokens":31979,"cached_input_tokens":62528,"cache_creation_input_tokens":0,"output_tokens":1337,"reasoning_output_tokens":884,"conversation_count":3,"models":{"workbuddy/hy3":96728},"sources":{"workbuddy":96728},"value":96728,"level_value":96728},{"day":"2026-07-16","total_tokens":111856,"billable_total_tokens":111856,"input_tokens":24275,"cached_input_tokens":85136,"cache_creation_input_tokens":0,"output_tokens":2445,"reasoning_output_tokens":0,"conversation_count":2,"models":{"cursor/auto":111856},"sources":{"cursor":111856},"value":111856,"level_value":111856},{"day":"2026-07-19","total_tokens":28358651,"billable_total_tokens":28358651,"input_tokens":2554646,"cached_input_tokens":25356832,"cache_creation_input_tokens":0,"output_tokens":447173,"reasoning_output_tokens":0,"conversation_count":90,"models":{"cursor/auto":25369704,"cursor/cursor-grok-4.5-high-fast":2979565,"cursor/composer-2.5-fast":9382},"sources":{"cursor":28358651},"value":28358651,"level_value":28358651},{"day":"2026-07-20","total_tokens":7947569,"billable_total_tokens":7947569,"input_tokens":486484,"cached_input_tokens":7409408,"cache_creation_input_tokens":0,"output_tokens":51677,"reasoning_output_tokens":0,"conversation_count":27,"models":{"cursor/auto":7947569},"sources":{"cursor":7947569},"value":7947569,"level_value":7947569}],"total_tokens":631724922,"active_day_count":112,"bucket_count":479,"daily_row_count":112,"root":"/Users/zhuyanhao/.tokentracker/tracker/queue.jsonl","estimated_cost_usd":null,"longest_streak":17,"peak_day":{"day":"2026-06-17","value":31962666},"top_provider":"cursor","active_rate":"41.2"},"CATEGORIES":{"planning":{"count":11,"examples":[]},"debugging":{"count":10,"examples":[]},"implementation":{"count":216,"examples":[]},"refactor":{"count":3,"examples":[]},"testing":{"count":29,"examples":[]},"packaging":{"count":2,"examples":[]},"explanation":{"count":36,"examples":[]},"research":{"count":7,"examples":[]},"ui_design":{"count":12,"examples":[]},"workflow":{"count":7,"examples":[]},"reference":{"count":4,"examples":[]}}};
@@ -0,0 +1,104 @@
1
+ {
2
+ "style": "mbti-flat-vector-editorial",
3
+ "display": "freestanding-figure-no-card-frame",
4
+ "boards": [
5
+ {
6
+ "note": "Legacy SBTI boards archived; primary art is *-figure.png",
7
+ "cols": 4,
8
+ "profiles": [
9
+ {
10
+ "folder": "01-builder",
11
+ "name": "builder",
12
+ "code": "SHIP",
13
+ "label": "Builder SHIP — deploy first",
14
+ "figure": "builder-figure.png"
15
+ },
16
+ {
17
+ "folder": "02-debugger",
18
+ "name": "debugger",
19
+ "code": "HUNT",
20
+ "label": "Debugger HUNT — duck at midnight",
21
+ "figure": "debugger-figure.png"
22
+ },
23
+ {
24
+ "folder": "03-architect",
25
+ "name": "architect",
26
+ "code": "DRAW",
27
+ "label": "Architect DRAW — boxes before bytes",
28
+ "figure": "architect-figure.png"
29
+ },
30
+ {
31
+ "folder": "04-codex-believer",
32
+ "name": "codex-believer",
33
+ "code": "FAITH",
34
+ "label": "Codex Believer FAITH — agent disciple",
35
+ "figure": "codex-believer-figure.png"
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "cols": 4,
41
+ "profiles": [
42
+ {
43
+ "folder": "05-prompt-priest",
44
+ "name": "prompt-priest",
45
+ "code": "SPELL",
46
+ "label": "Prompt Priest SPELL — scroll of rules",
47
+ "figure": "prompt-priest-figure.png"
48
+ },
49
+ {
50
+ "folder": "06-tab-hoarder",
51
+ "name": "tab-hoarder",
52
+ "code": "TABS",
53
+ "label": "Tab Hoarder TABS — forty-seven localhost tabs",
54
+ "figure": "tab-hoarder-figure.png"
55
+ },
56
+ {
57
+ "folder": "07-context-maxxer",
58
+ "name": "context-maxxer",
59
+ "code": "METER",
60
+ "label": "Context Maxxer METER — gauge at ninety-nine",
61
+ "figure": "context-maxxer-figure.png"
62
+ },
63
+ {
64
+ "folder": "08-yolo-shipper",
65
+ "name": "yolo-shipper",
66
+ "code": "YOLO",
67
+ "label": "YOLO Shipper YOLO — skip review hit merge",
68
+ "figure": "yolo-shipper-figure.png"
69
+ }
70
+ ]
71
+ }
72
+ ],
73
+ "badgeBoard": {
74
+ "file": "source/references/vibe-badges-v6-board.png",
75
+ "cols": 8,
76
+ "note": "Symbolic icons per archetype — not mascot face crops"
77
+ },
78
+ "banners": [
79
+ {
80
+ "file": "banners/home-hero.png",
81
+ "out": "banners/home-hero.svg",
82
+ "width": 1200,
83
+ "height": 400,
84
+ "label": "Vibe Profile home hero banner",
85
+ "status": "legacy-sbti-compose"
86
+ },
87
+ {
88
+ "file": "banners/share-strip.png",
89
+ "out": "banners/share-strip.svg",
90
+ "width": 1200,
91
+ "height": 400,
92
+ "label": "Vibe Profile share strip banner",
93
+ "status": "legacy-sbti-compose"
94
+ },
95
+ {
96
+ "file": "banners/result-header.png",
97
+ "out": "banners/result-header.svg",
98
+ "width": 1200,
99
+ "height": 280,
100
+ "label": "Vibe Profile result header banner",
101
+ "status": "legacy-sbti-compose"
102
+ }
103
+ ]
104
+ }
@@ -0,0 +1,72 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { fileURLToPath } from "url";
4
+
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
6
+ const root = path.join(__dirname, "..");
7
+ const config = JSON.parse(
8
+ fs.readFileSync(path.join(__dirname, "profiles.json"), "utf8")
9
+ );
10
+
11
+ const profiles = config.boards.flatMap((b) => b.profiles);
12
+ let ok = true;
13
+
14
+ for (const profile of profiles) {
15
+ const char = path.join(
16
+ root,
17
+ "characters",
18
+ profile.folder,
19
+ `${profile.name}-character.svg`
20
+ );
21
+ const card = path.join(
22
+ root,
23
+ "characters",
24
+ profile.folder,
25
+ `${profile.name}-card.svg`
26
+ );
27
+ const badge = path.join(
28
+ root,
29
+ "badges",
30
+ profile.folder,
31
+ `${profile.name}-badge.svg`
32
+ );
33
+
34
+ for (const [label, file] of [
35
+ ["character", char],
36
+ ["card", card],
37
+ ["badge", badge],
38
+ ]) {
39
+ const name = path.basename(file);
40
+ if (!fs.existsSync(file)) {
41
+ console.error(`FAIL missing ${file}`);
42
+ ok = false;
43
+ continue;
44
+ }
45
+ const svg = fs.readFileSync(file, "utf8");
46
+ if (!svg.includes("data:image/png;base64,")) {
47
+ console.error(`FAIL ${name}: expected embedded PNG`);
48
+ ok = false;
49
+ } else {
50
+ console.log(`PASS ${name}`);
51
+ }
52
+ }
53
+ }
54
+
55
+ for (const banner of config.banners) {
56
+ const file = path.join(root, banner.out);
57
+ const name = path.basename(file);
58
+ if (!fs.existsSync(file)) {
59
+ console.error(`FAIL missing ${file}`);
60
+ ok = false;
61
+ continue;
62
+ }
63
+ const svg = fs.readFileSync(file, "utf8");
64
+ if (!svg.includes("data:image/png;base64,")) {
65
+ console.error(`FAIL ${name}: expected embedded PNG`);
66
+ ok = false;
67
+ } else {
68
+ console.log(`PASS ${name}`);
69
+ }
70
+ }
71
+
72
+ process.exit(ok ? 0 : 1);