@lyellr88/buddy-mcp 1.4.0 → 1.4.3

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 (109) hide show
  1. package/README.md +82 -84
  2. package/assets/buddy_cli_builder.mp4 +0 -0
  3. package/assets/buddy_reroll_action.mp4 +0 -0
  4. package/assets/buddy_tools_action.mp4 +0 -0
  5. package/assets/hero.svg +161 -0
  6. package/dist/config/pet-config.d.ts.map +1 -1
  7. package/dist/config/pet-config.js +1 -6
  8. package/dist/config/pet-config.js.map +1 -1
  9. package/dist/finder/worker.js +0 -1
  10. package/dist/finder/worker.js.map +1 -1
  11. package/dist/mcp/index.js +47 -37
  12. package/dist/mcp/index.js.map +1 -1
  13. package/dist/mcp/persistence.d.ts.map +1 -1
  14. package/dist/mcp/persistence.js +7 -17
  15. package/dist/mcp/persistence.js.map +1 -1
  16. package/dist/mcp/state.d.ts.map +1 -1
  17. package/dist/mcp/state.js +0 -1
  18. package/dist/mcp/state.js.map +1 -1
  19. package/dist/mcp/tools/auto.d.ts.map +1 -1
  20. package/dist/mcp/tools/auto.js +1 -2
  21. package/dist/mcp/tools/auto.js.map +1 -1
  22. package/dist/mcp/tools/core.js +26 -30
  23. package/dist/mcp/tools/core.js.map +1 -1
  24. package/dist/mcp/tools/export.js +41 -16
  25. package/dist/mcp/tools/export.js.map +1 -1
  26. package/dist/mcp/tools/interact.js +3 -4
  27. package/dist/mcp/tools/interact.js.map +1 -1
  28. package/dist/mcp/tools/relay.d.ts.map +1 -1
  29. package/dist/mcp/tools/relay.js +1 -3
  30. package/dist/mcp/tools/relay.js.map +1 -1
  31. package/dist/mcp/tools/stats.d.ts.map +1 -1
  32. package/dist/mcp/tools/stats.js +3 -13
  33. package/dist/mcp/tools/stats.js.map +1 -1
  34. package/dist/mcp/watcher.js +19 -14
  35. package/dist/mcp/watcher.js.map +1 -1
  36. package/dist/patcher/binary-finder.d.ts.map +1 -1
  37. package/dist/patcher/binary-finder.js +3 -9
  38. package/dist/patcher/binary-finder.js.map +1 -1
  39. package/dist/patcher/patch.d.ts.map +1 -1
  40. package/dist/patcher/patch.js +5 -14
  41. package/dist/patcher/patch.js.map +1 -1
  42. package/dist/patcher/preflight.d.ts.map +1 -1
  43. package/dist/patcher/preflight.js +2 -9
  44. package/dist/patcher/preflight.js.map +1 -1
  45. package/dist/personalities.d.ts.map +1 -1
  46. package/dist/personalities.js +0 -7
  47. package/dist/personalities.js.map +1 -1
  48. package/dist/presets.d.ts.map +1 -1
  49. package/dist/presets.js +0 -17
  50. package/dist/presets.js.map +1 -1
  51. package/dist/tui/animator.d.ts +0 -6
  52. package/dist/tui/animator.d.ts.map +1 -1
  53. package/dist/tui/animator.js +0 -6
  54. package/dist/tui/animator.js.map +1 -1
  55. package/dist/tui/apply/index.d.ts.map +1 -1
  56. package/dist/tui/apply/index.js +15 -40
  57. package/dist/tui/apply/index.js.map +1 -1
  58. package/dist/tui/builder/index.d.ts.map +1 -1
  59. package/dist/tui/builder/index.js +5 -23
  60. package/dist/tui/builder/index.js.map +1 -1
  61. package/dist/tui/builder/keyboard.d.ts.map +1 -1
  62. package/dist/tui/builder/keyboard.js +0 -1
  63. package/dist/tui/builder/keyboard.js.map +1 -1
  64. package/dist/tui/builder/preview-panel.d.ts.map +1 -1
  65. package/dist/tui/builder/preview-panel.js +3 -18
  66. package/dist/tui/builder/preview-panel.js.map +1 -1
  67. package/dist/tui/builder/selection-panel.d.ts.map +1 -1
  68. package/dist/tui/builder/selection-panel.js +0 -21
  69. package/dist/tui/builder/selection-panel.js.map +1 -1
  70. package/dist/tui/commands/buddies.d.ts.map +1 -1
  71. package/dist/tui/commands/buddies.js +5 -12
  72. package/dist/tui/commands/buddies.js.map +1 -1
  73. package/dist/tui/commands/current.js +1 -1
  74. package/dist/tui/commands/current.js.map +1 -1
  75. package/dist/tui/commands/interactive.d.ts.map +1 -1
  76. package/dist/tui/commands/interactive.js +12 -25
  77. package/dist/tui/commands/interactive.js.map +1 -1
  78. package/dist/tui/commands/preview.d.ts.map +1 -1
  79. package/dist/tui/commands/preview.js +1 -5
  80. package/dist/tui/commands/preview.js.map +1 -1
  81. package/dist/tui/commands/restore.d.ts.map +1 -1
  82. package/dist/tui/commands/restore.js +0 -1
  83. package/dist/tui/commands/restore.js.map +1 -1
  84. package/dist/tui/commands/share.d.ts.map +1 -1
  85. package/dist/tui/commands/share.js +1 -4
  86. package/dist/tui/commands/share.js.map +1 -1
  87. package/dist/tui/commands/start-screen.d.ts.map +1 -1
  88. package/dist/tui/commands/start-screen.js +3 -5
  89. package/dist/tui/commands/start-screen.js.map +1 -1
  90. package/dist/tui/display.js +1 -1
  91. package/dist/tui/gallery/index.d.ts.map +1 -1
  92. package/dist/tui/gallery/index.js +2 -10
  93. package/dist/tui/gallery/index.js.map +1 -1
  94. package/dist/tui/gallery/profile-list-panel.d.ts.map +1 -1
  95. package/dist/tui/gallery/profile-list-panel.js +0 -1
  96. package/dist/tui/gallery/profile-list-panel.js.map +1 -1
  97. package/dist/tui/gallery/profile-preview-panel.d.ts.map +1 -1
  98. package/dist/tui/gallery/profile-preview-panel.js +2 -15
  99. package/dist/tui/gallery/profile-preview-panel.js.map +1 -1
  100. package/dist/tui/presets/index.d.ts.map +1 -1
  101. package/dist/tui/presets/index.js +2 -4
  102. package/dist/tui/presets/index.js.map +1 -1
  103. package/dist/tui/prompts.d.ts.map +1 -1
  104. package/dist/tui/prompts.js +0 -1
  105. package/dist/tui/prompts.js.map +1 -1
  106. package/dist/tui/start/index.d.ts.map +1 -1
  107. package/dist/tui/start/index.js +12 -11
  108. package/dist/tui/start/index.js.map +1 -1
  109. package/package.json +26 -8
package/README.md CHANGED
@@ -1,14 +1,52 @@
1
- # buddy-mcp
1
+ ![buddy-mcp hero](assets/hero.svg)
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@lyellr88/buddy-mcp)](https://www.npmjs.com/package/@lyellr88/buddy-mcp)
4
3
  [![CI](https://github.com/Lyellr88/buddy-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Lyellr88/buddy-mcp/actions/workflows/ci.yml)
4
+ [![npm downloads](https://img.shields.io/npm/dt/@lyellr88/buddy-mcp?color=blue&style=flat-square)](https://www.npmjs.com/package/@lyellr88/buddy-mcp)
5
+ [![npm version](https://img.shields.io/npm/v/@lyellr88/buddy-mcp?color=blue)](https://www.npmjs.com/package/@lyellr88/buddy-mcp)
6
+ [![Node >=20](https://img.shields.io/badge/node-%3E%3D20-blue)](https://nodejs.org/)
5
7
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
- [![Node >=20](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org/)
7
8
 
8
9
  A break from long code sessions. Stuck on a bug? Reroll a buddy, talk with them, or pet them to build affection and improve your odds at higher-tier buddies on the next roll. If enough people want it, I'll build out Battle-Buddies where you can pit your buddy against others and unlock exclusive species that sync back into your local pool.
9
10
 
10
11
  > A gacha companion system for Claude Code. Roll for a rare buddy, patch it directly into the binary, collect 'em all. Buddy-mcp is an MCP server that replaces Claude Code's built-in companion with one you actually rolled for. Reroll, get lucky, close Claude, reopen. Your new buddy is waiting. Legendary drop rates apply.
11
12
 
13
+ ---
14
+
15
+ ## Quick Demo
16
+
17
+ <table>
18
+ <tr>
19
+ <td width="33%">
20
+
21
+ **Interactive Builder**
22
+
23
+ Build your perfect buddy with full control.
24
+
25
+ [![Watch Video](https://img.shields.io/badge/▶%20Click%20to%20Watch-blue?style=for-the-badge)](https://github.com/user-attachments/assets/840de2d0-617b-40fd-b653-c091af9abbfc)
26
+
27
+ </td>
28
+ <td width="33%">
29
+
30
+ **Reroll in Action**
31
+
32
+ Roll, close Claude, reopen and enjoy your new buddy.
33
+
34
+ [![Watch Video](https://img.shields.io/badge/▶%20Click%20to%20Watch-blue?style=for-the-badge)](https://github.com/user-attachments/assets/83adc99e-2c49-4255-bf48-eca41d10580b)
35
+
36
+ </td>
37
+ <td width="33%">
38
+
39
+ **Interact with Tools**
40
+
41
+ Talk, pet, and explore your buddy's dex.
42
+
43
+ [![Watch Video](https://img.shields.io/badge/▶%20Click%20to%20Watch-blue?style=for-the-badge)](https://github.com/user-attachments/assets/485c608f-55ed-40ed-a592-936814ea9601)
44
+
45
+ </td>
46
+ </tr>
47
+ </table>
48
+
49
+
12
50
  ---
13
51
 
14
52
  ## How It Works
@@ -23,20 +61,11 @@ Claude Code's companion is generated from a salt string baked into the binary. b
23
61
 
24
62
  No companion server. No cloud. Just you, your binary, and the gacha gods.
25
63
 
26
- ---
64
+ Token footprint is kept intentionally small of 29 registered tools, Claude only ever sees ~9 at a time. The other 20 stay hidden until you reroll. See [TECHNICAL.md](TECHNICAL.md) for the full breakdown.
27
65
 
28
- ## Developer Insight
29
-
30
- buddy-mcp isn’t just a UI mod. It’s a deterministic companion system layered on top of Claude Code’s binary, with:
31
-
32
- - Rerollable personalities and stat-bound behaviors
33
- - Persistent state and BuddyDex tracking
34
- - Locked tool sets per roll (no session drift)
35
- - A self-healing patch pipeline that detects, restores, and reapplies across updates
36
-
37
- Lightweight by design with minimal token usage and data footprint. Most features operate inline through message augmentation rather than separate invocation flows.
66
+ ---
38
67
 
39
- Built to be fast, local-first, and resilient to change.
68
+ > 🛠️ **Looking for the technical deep-dive?** See [TECHNICAL.md](TECHNICAL.md) for the patch flow diagrams, binary patching logic, and state file reference.
40
69
 
41
70
  ---
42
71
 
@@ -93,9 +122,24 @@ Claude will auto-detect the installed binary and connect it.
93
122
 
94
123
  ### 4. Verify
95
124
 
96
- Open Claude Code and ask: **"show me my buddy card"**
125
+ Open Claude Code. Your buddy is live—use Claude Code's native `/buddy` command to see your card, or ask Claude: **"show me my buddy"**
126
+
127
+ You should see your companion's species, rarity, stats, and personality. You're in.
97
128
 
98
- You should see a card with your current companion's species, rarity, and stats. You're in.
129
+ ### 4b. Natural Language Activation
130
+
131
+ All buddy tools work through natural language. Claude's NLP detects intent automatically:
132
+
133
+ | Natural Language | Activates |
134
+ |------------------|-----------|
135
+ | "reroll buddy" / "let's roll again" | `reroll_buddy` |
136
+ | "talk to my buddy" / "what does buddy think" | `buddy_talk` |
137
+ | "pet buddy" / "pet them" | `pet_buddy` |
138
+ | "my buddy dex" / "show me my collection" | `view_buddy_dex` |
139
+ | "export buddy card" / "save my buddy" | `export_buddy_card` |
140
+ | "export sprite" / "save the sprite" | `export_buddy_sprite` |
141
+
142
+ No tool names required — just chat naturally.
99
143
 
100
144
  ### 5. Launch the TUI Builder (optional)
101
145
 
@@ -141,91 +185,45 @@ Each buddy has 5 stats: **Debugging, Patience, Chaos, Wisdom, Snark**. A peak st
141
185
 
142
186
  **20 baked-in tools.** Only **2 are visible** at a time: 1 randomly picked from each of your buddy's **top 2 stats by raw value**. The other 18 stay hidden. The visible pair is **locked per roll**. It doesn't change until you reroll. Every buddy shows a different pair.
143
187
 
144
- | Tool | Stat | What it does |
145
- |------|------|-------------|
146
- | `deep_trace` | Debugging | Focused bug hunting. Abrupt, clinical, slightly haunted. |
147
- | `trace_nightmare` | Debugging | When the trace stops making sense. Surreal debugging perspective |
148
- | `null_hunt` | Debugging | Hunt for null refs. Clinical. Relentless |
149
- | `stack_dive` | Debugging | Dive into the callstack. The bug is always deeper than you think |
150
- | `patience_check` | Patience | Check if your buddy is still willing to help |
151
- | `wait_wisdom` | Patience | Slow down. Receive patience-encoded insight |
152
- | `vibe_check` | Patience | The mystery action. Your buddy reads the vibe. 5% cosmic event |
153
- | `still_point` | Patience | Stop. Be still. Let the answer come to you |
154
- | `chaos_audit` | Chaos | Unpredictable. Might help. Might not. Science |
155
- | `chaos_roulette` | Chaos | Spin the chaos wheel. Receive a wildly lateral suggestion |
156
- | `chaos_spark` | Chaos | Ignite a lateral idea. May or may not be relevant |
157
- | `entropy_roll` | Chaos | Roll against entropy. The universe responds |
158
- | `zen_consult` | Wisdom | Philosophical insight into your architecture |
159
- | `zen_mirror` | Wisdom | Turn the question inward. A reflection, not an answer |
160
- | `oracle_seek` | Wisdom | Seek the oracle. The answer is already inside you |
161
- | `deep_thought` | Wisdom | Think slower. The answer requires depth |
162
- | `snark_roast` | Snark | Light sarcastic critique of your current work |
163
- | `snark_savage` | Snark | No mercy. Full roast. For when you need the unfiltered truth |
164
- | `side_eye` | Snark | Your buddy looks at your code. Then at you. Then back at the code |
165
- | `snark_verdict` | Snark | Final ruling from the bench. The buddy has reviewed and judged |
166
-
167
188
  ---
168
189
 
169
- ## Patch Flow
170
190
 
171
- buddy-mcp patches the Claude binary directly. Here's what happens when you hit `reroll_buddy`:
172
191
 
173
- ```
174
- reroll_buddy
175
-
176
- ├─ Roll random traits (species, rarity, eye, hat, shiny chance)
177
-
178
- ├─ Multi-worker salt search (up to 8 parallel Bun workers)
179
- │ └─ Each worker brute-forces salts using wyhash until traits match
180
-
181
- ├─ Try to patch binary immediately
182
- │ ├─ Success → "Close Claude and reopen"
183
- │ └─ EPERM (Claude is running) → Save pending patch + start background watcher
184
- │ └─ Watcher polls every 2s, applies patch the moment Claude closes
185
-
186
- └─ Profile saved: species, rarity, stats, name, personality
187
-
188
- On next session start (hook fires):
189
-
190
- ├─ Salt still valid → no-op (fast path)
191
-
192
- ├─ Pending patch found → apply it
193
-
194
- └─ Salt mismatch (Claude auto-updated)
195
- ├─ Try .buddy-mcp-bak (only if it contains original salt)
196
- ├─ Try .anybuddy-bak (fallback for prior patcher users)
197
- └─ Restore + re-patch automatically, no reinstall required
198
- ```
192
+ ## Troubleshooting
199
193
 
194
+ ### Buddy doesn't change after reroll
200
195
 
201
- ---
202
-
203
- ## State Files
196
+ **Normal flow (Windows):** When you reroll and Claude is running:
204
197
 
205
- buddy-mcp stores everything in your home directory:
198
+ 1. Reroll triggers a background watcher — no action needed from you
199
+ 2. Close Claude Code whenever — watcher detects it and applies the patch automatically
200
+ 3. Reopen Claude Code — your new buddy is live
206
201
 
207
- | File | Purpose |
208
- |------|---------|
209
- | `~/.buddy-mcp.json` | Your buddy profiles (species, rarity, stats, name, salt) |
210
- | `~/.buddy_mcp_gacha.json` | Gacha extras: shiny count, BuddyDex, manifested tools |
211
- | `~/.buddy_mcp_pending.json` | Queued patch waiting for Claude to close |
202
+ If it doesn't appear after reopening:
212
203
 
213
- ---
204
+ 1. **Verify Claude is fully closed** (check Task Manager on Windows)
205
+ - Even minimized or backgrounded windows count — they keep the binary locked
206
+ - Wait a few seconds after closing
207
+ 2. **Reopen Claude Code**
208
+ - The startup hook auto-applies any pending patches
209
+ - You should see your new companion immediately
214
210
 
215
- ## Manual Apply (Fallback)
211
+ ### Prefer immediate patching?
216
212
 
217
- If the background watcher didn't fire for some reason, you can apply a pending patch manually:
213
+ If you want to guarantee a patch applies without waiting for the watcher, close Claude *before* rerolling:
218
214
 
219
215
  ```bash
220
- npm run apply
216
+ # Option 1: Use the interactive TUI builder (simplest)
217
+ buddy-mcp-build
218
+
219
+ # Option 2: Close Claude, then use the reroll_buddy tool
220
+ # (patch applies immediately without needing the watcher)
221
221
  ```
222
222
 
223
- Then restart Claude Code.
223
+ This is the only time you need manual steps — the watcher handles all other cases.
224
224
 
225
225
  ---
226
226
 
227
227
  ## Credits
228
228
 
229
229
  Forked and extended from [any-buddy](https://github.com/cpaczek/any-buddy) by cpaczek.
230
-
231
- Licensed under [WTFPL](http://www.wtfpl.net/).
Binary file
Binary file
Binary file
@@ -0,0 +1,161 @@
1
+ <svg viewBox="0 0 1200 700" xmlns="http://www.w3.org/2000/svg">
2
+
3
+ <!-- Glowing accent lines in rarity colors -->
4
+ <line x1="0" y1="4" x2="0" y2="220" stroke="#FF55FF" stroke-width="3" opacity="0.4"/>
5
+ <line x1="600" y1="4" x2="600" y2="220" stroke="#FFD700" stroke-width="3" opacity="0.4"/>
6
+ <line x1="1200" y1="4" x2="1200" y2="220" stroke="#5599FF" stroke-width="3" opacity="0.4"/>
7
+
8
+ <!-- Top Info Section - cleaner modern style -->
9
+ <rect x="0" y="0" width="1200" height="220" rx="0" fill="#0d1117" stroke="none"/>
10
+
11
+ <!-- Rarity color accent bar at top -->
12
+ <rect x="0" y="0" width="1200" height="4" rx="0" fill="url(#rarity-gradient)"/>
13
+
14
+ <defs>
15
+ <linearGradient id="rarity-gradient" x1="0%" y1="0%" x2="100%" y2="0%">
16
+ <stop offset="0%" style="stop-color:#FF55FF;stop-opacity:1" />
17
+ <stop offset="25%" style="stop-color:#FFD700;stop-opacity:1" />
18
+ <stop offset="35%" style="stop-color:#55FF55;stop-opacity:1" />
19
+ <stop offset="100%" style="stop-color:#5599FF;stop-opacity:1" />
20
+ </linearGradient>
21
+ </defs>
22
+
23
+ <!-- Icon badges (minimal, clean) -->
24
+ <!-- Roll badge -->
25
+ <circle cx="60" cy="60" r="12" fill="none" stroke="#FF55FF" stroke-width="2" opacity="0.6"/>
26
+ <text x="60" y="64" font-family="Arial, Helvetica, sans-serif" font-size="16" fill="#FF55FF" text-anchor="middle">🎲</text>
27
+
28
+ <!-- Build badge -->
29
+ <circle cx="100" cy="60" r="12" fill="none" stroke="#FFD700" stroke-width="2" opacity="0.6"/>
30
+ <text x="100" y="64" font-family="Arial, Helvetica, sans-serif" font-size="16" fill="#FFD700" text-anchor="middle">✨</text>
31
+
32
+ <!-- Collect badge -->
33
+ <circle cx="140" cy="60" r="12" fill="none" stroke="#5599FF" stroke-width="2" opacity="0.6"/>
34
+ <text x="140" y="64" font-family="Arial, Helvetica, sans-serif" font-size="16" fill="#5599FF" text-anchor="middle">📖</text>
35
+
36
+ <!-- Heading -->
37
+ <text x="40" y="130" font-family="Monaco, 'Courier New', monospace" font-size="48" font-weight="bold" fill="#79c0ff">buddy-mcp</text>
38
+
39
+ <!-- Slogan right corner -->
40
+ <text x="1150" y="70" font-family="Arial, Helvetica, sans-serif" font-size="22" font-weight="bold" fill="#8b949e" text-anchor="end">Roll your buddy.</text>
41
+ <text x="1150" y="105" font-family="Arial, Helvetica, sans-serif" font-size="22" font-weight="bold" fill="#8b949e" text-anchor="end">Build unique.</text>
42
+ <text x="1150" y="140" font-family="Arial, Helvetica, sans-serif" font-size="22" font-weight="bold" fill="#8b949e" text-anchor="end">Collect them all.</text>
43
+
44
+ <!-- Divider under info section -->
45
+ <line x1="0" y1="220" x2="1200" y2="220" stroke="#30363d" stroke-width="1"/>
46
+
47
+ <!-- Main Content Section (3 Columns) -->
48
+
49
+ <!-- Left Column: Roll/Gacha Concept -->
50
+ <rect x="0" y="220" width="400" height="480" fill="#161b22" stroke="none"/>
51
+
52
+ <!-- Roll title -->
53
+ <text x="200" y="275" font-family="Arial, Helvetica, sans-serif" font-size="28" font-weight="bold" fill="#79c0ff" text-anchor="middle">ROLL</text>
54
+
55
+ <!-- Dice illustration scaled up -->
56
+ <g transform="translate(200, 385) scale(1.2)">
57
+ <!-- Dice 1 -->
58
+ <rect x="-55" y="-30" width="45" height="45" fill="none" stroke="#FF55FF" stroke-width="2.5" rx="2"/>
59
+ <circle cx="-32" cy="-10" r="4" fill="#FF55FF"/>
60
+
61
+ <!-- Dice 2 -->
62
+ <rect x="10" y="-20" width="45" height="45" fill="none" stroke="#5599FF" stroke-width="2.5" rx="2"/>
63
+ <circle cx="27" cy="-5" r="4" fill="#5599FF"/>
64
+ <circle cx="37" cy="8" r="4" fill="#5599FF"/>
65
+
66
+ <!-- Dice 3 -->
67
+ <rect x="-28" y="35" width="45" height="45" fill="none" stroke="#55FF55" stroke-width="2.5" rx="2"/>
68
+ <circle cx="8" cy="42" r="4" fill="#55FF55"/>
69
+ <circle cx="-5" cy="58" r="4" fill="#55FF55"/>
70
+ <circle cx="-22" cy="74" r="4" fill="#55FF55"/>
71
+ </g>
72
+
73
+ <!-- Roll description enlarged and centered -->
74
+ <text x="200" y="540" font-family="Arial, Helvetica, sans-serif" font-size="16" fill="#c9d1d9" text-anchor="middle" font-style="italic">
75
+ <tspan x="200" dy="0">Roll for rare buddies</tspan>
76
+ <tspan x="200" dy="22">with affection tokens</tspan>
77
+ <tspan x="200" dy="22">and stat-based traits.</tspan>
78
+ </text>
79
+
80
+ <!-- Roll specs enlarged -->
81
+ <text x="200" y="625" font-family="Arial, Helvetica, sans-serif" font-size="14" fill="#6e7681" text-anchor="middle">
82
+ <tspan x="200" dy="0">18 species • 5 rarities</tspan>
83
+ <tspan x="200" dy="18">100+ stat combinations</tspan>
84
+ </text>
85
+
86
+ <!-- Vertical divider between left and center -->
87
+ <line x1="400" y1="220" x2="400" y2="700" stroke="#30363d" stroke-width="1"/>
88
+
89
+ <!-- Center Column: Featured Buddy -->
90
+ <rect x="400" y="220" width="400" height="480" fill="#161b22" stroke="none"/>
91
+
92
+ <!-- Featured buddy title -->
93
+ <text x="600" y="275" font-family="Arial, Helvetica, sans-serif" font-size="28" font-weight="bold" fill="#79c0ff" text-anchor="middle">BUILD</text>
94
+
95
+ <!-- Dragon sprite embedded from buddy-flumox-sprite-new.svg -->
96
+ <svg x="470" y="300" width="260" height="200" viewBox="0 0 150 132" xmlns="http://www.w3.org/2000/svg">
97
+ <text font-family="'Cascadia Code','Fira Code','Courier New',monospace" font-size="16" fill="#FF55FF" xml:space="preserve">
98
+ <tspan x="24" y="36" fill="#FF55FF"> \^^^/ </tspan>
99
+ <tspan x="24" y="56" fill="#FF55FF"> /^\ /^\ </tspan>
100
+ <tspan x="24" y="76" fill="#FF55FF"> &lt; ◉ ◉ &gt; </tspan>
101
+ <tspan x="24" y="96" fill="#FF55FF"> ( ~~ ) </tspan>
102
+ <tspan x="24" y="116" fill="#FF55FF"> `-vvvv-´ </tspan>
103
+ </text>
104
+ </svg>
105
+
106
+ <!-- Buddy stats display enlarged -->
107
+ <text x="600" y="540" font-family="Arial, Helvetica, sans-serif" font-size="16" fill="#c9d1d9" text-anchor="middle">
108
+ <tspan x="600" dy="0">Epic Dragon • Flumox</tspan>
109
+ <tspan x="600" dy="28" font-weight="bold">CHAOS 100 | DEBUG 69</tspan>
110
+ </text>
111
+
112
+ <!-- Vertical divider between center and right -->
113
+ <line x1="800" y1="220" x2="800" y2="700" stroke="#30363d" stroke-width="1"/>
114
+
115
+ <!-- Right Column: Collect/Dex Concept -->
116
+ <rect x="800" y="220" width="400" height="480" fill="#161b22" stroke="none"/>
117
+
118
+ <!-- Collect title -->
119
+ <text x="1000" y="268" font-family="Arial, Helvetica, sans-serif" font-size="28" font-weight="bold" fill="#79c0ff" text-anchor="middle">COLLECT</text>
120
+
121
+ <!-- Dex border box resized -->
122
+ <rect x="820" y="315" width="360" height="240" fill="none" stroke="#30363d" stroke-width="2" rx="4"/>
123
+
124
+ <!-- Dex header line -->
125
+ <line x1="835" y1="330" x2="1165" y2="330" stroke="#79c0ff" stroke-width="1" opacity="0.5"/>
126
+
127
+ <!-- BuddyDex Grid perfectly centered (no x on tspans) -->
128
+ <text x="1000" y="355" font-family="Monaco, 'Courier New', monospace" font-size="14" fill="#c9d1d9" text-anchor="middle">
129
+ <tspan fill="#55FF55">[X] duck</tspan><tspan fill="#c9d1d9"> [ ] ??? </tspan><tspan fill="#5599FF">[X] cat</tspan>
130
+ </text>
131
+ <text x="1000" y="380" font-family="Monaco, 'Courier New', monospace" font-size="14" fill="#c9d1d9" text-anchor="middle">
132
+ <tspan>[ ] ??? </tspan><tspan fill="#FF55FF">[X] dragon</tspan><tspan> [ ] ???</tspan>
133
+ </text>
134
+ <text x="1000" y="405" font-family="Monaco, 'Courier New', monospace" font-size="14" fill="#c9d1d9" text-anchor="middle">
135
+ <tspan fill="#FFD700">[X] turtle</tspan><tspan> [ ] ??? </tspan><tspan fill="#55FF55">[X] octopus</tspan>
136
+ </text>
137
+ <text x="1000" y="430" font-family="Monaco, 'Courier New', monospace" font-size="14" fill="#6e7681" text-anchor="middle">
138
+ [ ] ??? [ ] ??? [ ] ???
139
+ </text>
140
+ <text x="1000" y="455" font-family="Monaco, 'Courier New', monospace" font-size="14" fill="#6e7681" text-anchor="middle">
141
+ [ ] ??? [ ] ??? [ ] ???
142
+ </text>
143
+ <text x="1000" y="480" font-family="Monaco, 'Courier New', monospace" font-size="14" fill="#6e7681" text-anchor="middle">
144
+ [ ] ??? [ ] ??? [ ] ???
145
+ </text>
146
+
147
+ <!-- Progress bar visual -->
148
+ <rect x="850" y="505" width="300" height="10" fill="#1f2632" stroke="#30363d" stroke-width="1" rx="2"/>
149
+ <rect x="850" y="505" width="83" height="10" fill="#79c0ff" rx="2"/>
150
+
151
+ <!-- Progress text -->
152
+ <text x="1000" y="535" font-family="Monaco, 'Courier New', monospace" font-size="13" fill="#8b949e" text-anchor="middle">
153
+ 5/18 Discovered • ✨ 0 Shinies
154
+ </text>
155
+
156
+ <!-- Collection description updated to monospace, no italics -->
157
+ <text x="1000" y="595" font-family="Monaco, 'Courier New', monospace" font-size="15" fill="#79c0ff" text-anchor="middle">
158
+ PERSISTENT DISCOVERY TRACKER
159
+ </text>
160
+
161
+ </svg>
@@ -1 +1 @@
1
- {"version":3,"file":"pet-config.d.ts","sourceRoot":"","sources":["../../src/config/pet-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,IAAI,CAOhD;AAqED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAiBpD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAEvD;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,EAAE,QAAgB,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,IAAI,CAmBN;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAGzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAazD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAWhD"}
1
+ {"version":3,"file":"pet-config.d.ts","sourceRoot":"","sources":["../../src/config/pet-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,IAAI,CAOhD;AAgED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAiBpD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAEvD;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,EAAE,QAAgB,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,IAAI,CAmBN;AAED,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAGzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAazD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAWhD"}
@@ -4,7 +4,6 @@ import { homedir } from 'os';
4
4
  import { ORIGINAL_SALT } from '../constants.js';
5
5
  import { getCompanionName, getCompanionPersonality } from "./claude-config.js";
6
6
  const OUR_CONFIG = join(homedir(), '.buddy-mcp.json');
7
- // --- v1 compat (used by apply --silent fast path) ---
8
7
  export function savePetConfig(data) {
9
8
  writeFileSync(OUR_CONFIG, JSON.stringify(data, null, 2) + '\n');
10
9
  }
@@ -18,7 +17,6 @@ export function loadPetConfig() {
18
17
  return null;
19
18
  }
20
19
  }
21
- // --- v2 with profiles (keyed by salt) ---
22
20
  function migrateV1(v1) {
23
21
  const migrated = {
24
22
  version: 2,
@@ -56,22 +54,19 @@ function migrateNameKeyedProfiles(config) {
56
54
  const entries = Object.entries(config.profiles);
57
55
  if (entries.length === 0)
58
56
  return false;
59
- // If all keys already look like salts, no migration needed
60
57
  if (entries.every(([key]) => saltPattern.test(key)))
61
58
  return false;
62
59
  const newProfiles = {};
63
60
  for (const [key, profile] of entries) {
64
61
  if (saltPattern.test(key)) {
65
- // Already salt-keyed
66
62
  newProfiles[key] = profile;
67
63
  }
68
64
  else {
69
- // Old name-keyed entry re-key by salt, store old key as display name
65
+ // Old name-keyed entry: re-key by salt, store old key as display name
70
66
  newProfiles[profile.salt] = {
71
67
  ...profile,
72
68
  name: profile.name ?? key,
73
69
  };
74
- // Fix activeProfile if it pointed to the old name
75
70
  if (config.activeProfile === key) {
76
71
  config.activeProfile = profile.salt;
77
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pet-config.js","sourceRoot":"","sources":["../../src/config/pet-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAEtD,uDAAuD;AAEvD,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAc,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,2CAA2C;AAE3C,SAAS,SAAS,CAAC,EAAa;IAC9B,MAAM,QAAQ,GAAgB;QAC5B,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,SAAS,EAAE,EAAE,CAAC,SAAS;KACxB,CAAC;IAEF,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACzD,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;YAC3B,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,MAAM;YAC7B,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,QAAQ;YAC7B,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG;YAClB,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM;YACrB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,gBAAgB,EAAE;YACxB,WAAW,EAAE,uBAAuB,EAAE;YACtC,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpD,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAmB;IACnD,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,2DAA2D;IAC3D,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAElE,MAAM,WAAW,GAAgC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,qBAAqB;YACrB,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBAC1B,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG;aAC1B,CAAC;YACF,kDAAkD;YAClD,IAAI,MAAM,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;gBACjC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,GAAkB,CAAC;YAClC,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAgB,CAAC,CAAC;QAC7C,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAAoB,EACpB,EAAE,QAAQ,GAAG,KAAK,KAA6B,EAAE;IAEjD,MAAM,MAAM,GAAG,eAAe,EAAE,IAAI;QAClC,OAAO,EAAE,CAAU;QACnB,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAExC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,OAAO,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACzC,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IACpC,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,6BAA6B,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAChE,CAAC;IACF,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"pet-config.js","sourceRoot":"","sources":["../../src/config/pet-config.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,6 @@ function randomSalt() {
34
34
  }
35
35
  return s;
36
36
  }
37
- // Filter out --fnv1a from args
38
37
  const args = process.argv.slice(2).filter((a) => a !== '--fnv1a');
39
38
  const [userId, wantSpecies, wantRarity, wantEye, wantHat, wantShiny, wantPeak, wantDump] = args;
40
39
  if (!userId || !wantSpecies || !wantRarity || !wantEye || !wantHat) {
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/finder/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/finder/worker.ts"],"names":[],"mappings":"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"}