@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.
- package/README.md +82 -84
- package/assets/buddy_cli_builder.mp4 +0 -0
- package/assets/buddy_reroll_action.mp4 +0 -0
- package/assets/buddy_tools_action.mp4 +0 -0
- package/assets/hero.svg +161 -0
- package/dist/config/pet-config.d.ts.map +1 -1
- package/dist/config/pet-config.js +1 -6
- package/dist/config/pet-config.js.map +1 -1
- package/dist/finder/worker.js +0 -1
- package/dist/finder/worker.js.map +1 -1
- package/dist/mcp/index.js +47 -37
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/persistence.d.ts.map +1 -1
- package/dist/mcp/persistence.js +7 -17
- package/dist/mcp/persistence.js.map +1 -1
- package/dist/mcp/state.d.ts.map +1 -1
- package/dist/mcp/state.js +0 -1
- package/dist/mcp/state.js.map +1 -1
- package/dist/mcp/tools/auto.d.ts.map +1 -1
- package/dist/mcp/tools/auto.js +1 -2
- package/dist/mcp/tools/auto.js.map +1 -1
- package/dist/mcp/tools/core.js +26 -30
- package/dist/mcp/tools/core.js.map +1 -1
- package/dist/mcp/tools/export.js +41 -16
- package/dist/mcp/tools/export.js.map +1 -1
- package/dist/mcp/tools/interact.js +3 -4
- package/dist/mcp/tools/interact.js.map +1 -1
- package/dist/mcp/tools/relay.d.ts.map +1 -1
- package/dist/mcp/tools/relay.js +1 -3
- package/dist/mcp/tools/relay.js.map +1 -1
- package/dist/mcp/tools/stats.d.ts.map +1 -1
- package/dist/mcp/tools/stats.js +3 -13
- package/dist/mcp/tools/stats.js.map +1 -1
- package/dist/mcp/watcher.js +19 -14
- package/dist/mcp/watcher.js.map +1 -1
- package/dist/patcher/binary-finder.d.ts.map +1 -1
- package/dist/patcher/binary-finder.js +3 -9
- package/dist/patcher/binary-finder.js.map +1 -1
- package/dist/patcher/patch.d.ts.map +1 -1
- package/dist/patcher/patch.js +5 -14
- package/dist/patcher/patch.js.map +1 -1
- package/dist/patcher/preflight.d.ts.map +1 -1
- package/dist/patcher/preflight.js +2 -9
- package/dist/patcher/preflight.js.map +1 -1
- package/dist/personalities.d.ts.map +1 -1
- package/dist/personalities.js +0 -7
- package/dist/personalities.js.map +1 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +0 -17
- package/dist/presets.js.map +1 -1
- package/dist/tui/animator.d.ts +0 -6
- package/dist/tui/animator.d.ts.map +1 -1
- package/dist/tui/animator.js +0 -6
- package/dist/tui/animator.js.map +1 -1
- package/dist/tui/apply/index.d.ts.map +1 -1
- package/dist/tui/apply/index.js +15 -40
- package/dist/tui/apply/index.js.map +1 -1
- package/dist/tui/builder/index.d.ts.map +1 -1
- package/dist/tui/builder/index.js +5 -23
- package/dist/tui/builder/index.js.map +1 -1
- package/dist/tui/builder/keyboard.d.ts.map +1 -1
- package/dist/tui/builder/keyboard.js +0 -1
- package/dist/tui/builder/keyboard.js.map +1 -1
- package/dist/tui/builder/preview-panel.d.ts.map +1 -1
- package/dist/tui/builder/preview-panel.js +3 -18
- package/dist/tui/builder/preview-panel.js.map +1 -1
- package/dist/tui/builder/selection-panel.d.ts.map +1 -1
- package/dist/tui/builder/selection-panel.js +0 -21
- package/dist/tui/builder/selection-panel.js.map +1 -1
- package/dist/tui/commands/buddies.d.ts.map +1 -1
- package/dist/tui/commands/buddies.js +5 -12
- package/dist/tui/commands/buddies.js.map +1 -1
- package/dist/tui/commands/current.js +1 -1
- package/dist/tui/commands/current.js.map +1 -1
- package/dist/tui/commands/interactive.d.ts.map +1 -1
- package/dist/tui/commands/interactive.js +12 -25
- package/dist/tui/commands/interactive.js.map +1 -1
- package/dist/tui/commands/preview.d.ts.map +1 -1
- package/dist/tui/commands/preview.js +1 -5
- package/dist/tui/commands/preview.js.map +1 -1
- package/dist/tui/commands/restore.d.ts.map +1 -1
- package/dist/tui/commands/restore.js +0 -1
- package/dist/tui/commands/restore.js.map +1 -1
- package/dist/tui/commands/share.d.ts.map +1 -1
- package/dist/tui/commands/share.js +1 -4
- package/dist/tui/commands/share.js.map +1 -1
- package/dist/tui/commands/start-screen.d.ts.map +1 -1
- package/dist/tui/commands/start-screen.js +3 -5
- package/dist/tui/commands/start-screen.js.map +1 -1
- package/dist/tui/display.js +1 -1
- package/dist/tui/gallery/index.d.ts.map +1 -1
- package/dist/tui/gallery/index.js +2 -10
- package/dist/tui/gallery/index.js.map +1 -1
- package/dist/tui/gallery/profile-list-panel.d.ts.map +1 -1
- package/dist/tui/gallery/profile-list-panel.js +0 -1
- package/dist/tui/gallery/profile-list-panel.js.map +1 -1
- package/dist/tui/gallery/profile-preview-panel.d.ts.map +1 -1
- package/dist/tui/gallery/profile-preview-panel.js +2 -15
- package/dist/tui/gallery/profile-preview-panel.js.map +1 -1
- package/dist/tui/presets/index.d.ts.map +1 -1
- package/dist/tui/presets/index.js +2 -4
- package/dist/tui/presets/index.js.map +1 -1
- package/dist/tui/prompts.d.ts.map +1 -1
- package/dist/tui/prompts.js +0 -1
- package/dist/tui/prompts.js.map +1 -1
- package/dist/tui/start/index.d.ts.map +1 -1
- package/dist/tui/start/index.js +12 -11
- package/dist/tui/start/index.js.map +1 -1
- package/package.json +26 -8
package/dist/mcp/index.js
CHANGED
|
@@ -18,11 +18,10 @@ import './tools/core.js'; // side-effect: registers all 9 core tools into dynami
|
|
|
18
18
|
import './tools/export.js'; // side-effect: registers export_buddy_card + export_buddy_sprite
|
|
19
19
|
import './tools/interact.js'; // side-effect: registers activate_buddy_interact + deactivate_buddy_interact
|
|
20
20
|
import { STAT_TOOL_NAMES } from './tools/stats.js'; // side-effect: registers 20 stat tools
|
|
21
|
-
// Returns the cached set of visible stat tool names
|
|
21
|
+
// Returns the cached set of visible stat tool names: locked per roll, set by pickVisibleStatTools().
|
|
22
22
|
function visibleStatTools() {
|
|
23
23
|
return new Set(gachaState.visibleStatTools);
|
|
24
24
|
}
|
|
25
|
-
// --- Server handlers ---
|
|
26
25
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
27
26
|
const visible = visibleStatTools();
|
|
28
27
|
return {
|
|
@@ -33,6 +32,36 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
33
32
|
};
|
|
34
33
|
});
|
|
35
34
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
35
|
+
// Refresh S.currentBuddy from disk before each tool call (in case CLI created a new buddy)
|
|
36
|
+
try {
|
|
37
|
+
const petConfig = loadPetConfigV2();
|
|
38
|
+
const activeSalt = petConfig?.activeProfile;
|
|
39
|
+
const activeProfile = activeSalt ? petConfig?.profiles[activeSalt] : undefined;
|
|
40
|
+
if (activeProfile) {
|
|
41
|
+
S.currentBuddy = { ...activeProfile };
|
|
42
|
+
}
|
|
43
|
+
else if (activeSalt) {
|
|
44
|
+
// Profile not found in dict, but salt is set: derive from roll() as fallback
|
|
45
|
+
const userId = getClaudeUserId();
|
|
46
|
+
const rolled = roll(userId, activeSalt);
|
|
47
|
+
const companionName = getCompanionName();
|
|
48
|
+
S.currentBuddy = {
|
|
49
|
+
salt: activeSalt,
|
|
50
|
+
species: rolled.bones.species,
|
|
51
|
+
rarity: rolled.bones.rarity,
|
|
52
|
+
eye: rolled.bones.eye,
|
|
53
|
+
hat: rolled.bones.hat,
|
|
54
|
+
shiny: rolled.bones.shiny,
|
|
55
|
+
stats: rolled.bones.stats,
|
|
56
|
+
name: companionName,
|
|
57
|
+
personality: DEFAULT_PERSONALITIES[rolled.bones.species],
|
|
58
|
+
createdAt: new Date().toISOString(),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// If refresh fails, continue with stale S.currentBuddy
|
|
64
|
+
}
|
|
36
65
|
const toolEntry = dynamicTools.get(request.params.name);
|
|
37
66
|
if (!toolEntry)
|
|
38
67
|
throw new Error(`Tool not found: ${request.params.name}`);
|
|
@@ -47,13 +76,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
47
76
|
};
|
|
48
77
|
}
|
|
49
78
|
});
|
|
50
|
-
// --- CLI: apply pending patch or re-apply saved salt after update ---
|
|
51
79
|
// Runs when invoked as: buddy-mcp apply or buddy-mcp apply --silent
|
|
52
80
|
// Handles two cases:
|
|
53
81
|
// 1. Pending patch waiting from reroll (reads ~/.buddy_mcp_pending.json)
|
|
54
82
|
// 2. Hook-triggered re-apply after binary update (reads saved salt from pet config)
|
|
55
83
|
function applyPendingPatch({ silent = false } = {}) {
|
|
56
|
-
// First, try pending patch file (from reroll)
|
|
57
84
|
if (existsSync(PENDING_PATCH_FILE)) {
|
|
58
85
|
let pending;
|
|
59
86
|
try {
|
|
@@ -80,6 +107,7 @@ function applyPendingPatch({ silent = false } = {}) {
|
|
|
80
107
|
}
|
|
81
108
|
saveProfile(pending.profile, { activate: true });
|
|
82
109
|
// Update gacha state file directly (no server in memory)
|
|
110
|
+
let gachaUpdateSucceeded = true;
|
|
83
111
|
if (existsSync(GACHA_STATE_FILE)) {
|
|
84
112
|
try {
|
|
85
113
|
const raw = JSON.parse(readFileSync(GACHA_STATE_FILE, 'utf-8'));
|
|
@@ -97,34 +125,33 @@ function applyPendingPatch({ silent = false } = {}) {
|
|
|
97
125
|
try {
|
|
98
126
|
unlinkSync(tmp);
|
|
99
127
|
}
|
|
100
|
-
catch {
|
|
101
|
-
/* ignore */
|
|
102
|
-
}
|
|
128
|
+
catch { }
|
|
103
129
|
throw writeErr;
|
|
104
130
|
}
|
|
105
131
|
}
|
|
106
132
|
catch {
|
|
107
|
-
// Non-fatal
|
|
133
|
+
// Non-fatal: gacha state will self-heal on next server start
|
|
134
|
+
gachaUpdateSucceeded = false;
|
|
108
135
|
}
|
|
109
136
|
}
|
|
110
|
-
|
|
137
|
+
// Only delete pending patch file if the entire operation (patch + gacha update) succeeded
|
|
138
|
+
if (gachaUpdateSucceeded) {
|
|
139
|
+
unlinkSync(PENDING_PATCH_FILE);
|
|
140
|
+
}
|
|
111
141
|
if (!silent) {
|
|
112
142
|
console.log(`✅ ${rarity} ${species}${shinyTag} is now active!`);
|
|
113
143
|
console.log('Restart Claude Code to see your new companion.');
|
|
114
144
|
}
|
|
115
|
-
// Install hook on successful apply (unless already installed)
|
|
116
145
|
if (!isHookInstalled()) {
|
|
117
146
|
try {
|
|
118
147
|
installHook(process.argv[1]);
|
|
119
148
|
}
|
|
120
149
|
catch {
|
|
121
|
-
// Non-fatal
|
|
150
|
+
// Non-fatal: hook install failure shouldn't crash the apply
|
|
122
151
|
}
|
|
123
152
|
}
|
|
124
153
|
return;
|
|
125
154
|
}
|
|
126
|
-
// No pending file — try hook-triggered re-apply after update
|
|
127
|
-
// Load saved salt from pet config
|
|
128
155
|
const petConfig = loadPetConfigV2();
|
|
129
156
|
if (!petConfig?.salt) {
|
|
130
157
|
if (!silent)
|
|
@@ -140,7 +167,6 @@ function applyPendingPatch({ silent = false } = {}) {
|
|
|
140
167
|
console.error(err.message);
|
|
141
168
|
process.exit(0);
|
|
142
169
|
}
|
|
143
|
-
// Fast path: check if our salt is already applied
|
|
144
170
|
const checkOurs = verifySalt(binaryPath, petConfig.salt);
|
|
145
171
|
if (checkOurs.found >= 3) {
|
|
146
172
|
if (!silent)
|
|
@@ -152,24 +178,19 @@ function applyPendingPatch({ silent = false } = {}) {
|
|
|
152
178
|
if (checkOrig.found >= 3) {
|
|
153
179
|
try {
|
|
154
180
|
patchBinary(binaryPath, ORIGINAL_SALT, petConfig.salt);
|
|
155
|
-
// Restore companion identity from saved profile
|
|
156
181
|
const activeSalt = petConfig.activeProfile;
|
|
157
182
|
const profile = activeSalt ? petConfig.profiles[activeSalt] : undefined;
|
|
158
183
|
if (profile?.name) {
|
|
159
184
|
try {
|
|
160
185
|
renameCompanion(profile.name);
|
|
161
186
|
}
|
|
162
|
-
catch {
|
|
163
|
-
/* non-fatal */
|
|
164
|
-
}
|
|
187
|
+
catch { }
|
|
165
188
|
}
|
|
166
189
|
if (profile?.personality) {
|
|
167
190
|
try {
|
|
168
191
|
setCompanionPersonality(profile.personality);
|
|
169
192
|
}
|
|
170
|
-
catch {
|
|
171
|
-
/* non-fatal */
|
|
172
|
-
}
|
|
193
|
+
catch { }
|
|
173
194
|
}
|
|
174
195
|
if (!silent)
|
|
175
196
|
console.log('✅ Pet re-patched after update.');
|
|
@@ -193,17 +214,13 @@ function applyPendingPatch({ silent = false } = {}) {
|
|
|
193
214
|
try {
|
|
194
215
|
renameCompanion(profile.name);
|
|
195
216
|
}
|
|
196
|
-
catch {
|
|
197
|
-
/* non-fatal */
|
|
198
|
-
}
|
|
217
|
+
catch { }
|
|
199
218
|
}
|
|
200
219
|
if (profile?.personality) {
|
|
201
220
|
try {
|
|
202
221
|
setCompanionPersonality(profile.personality);
|
|
203
222
|
}
|
|
204
|
-
catch {
|
|
205
|
-
/* non-fatal */
|
|
206
|
-
}
|
|
223
|
+
catch { }
|
|
207
224
|
}
|
|
208
225
|
if (!silent)
|
|
209
226
|
console.log('✅ Pet restored from backup and re-patched after update.');
|
|
@@ -215,7 +232,6 @@ function applyPendingPatch({ silent = false } = {}) {
|
|
|
215
232
|
process.exit(silent ? 0 : 1);
|
|
216
233
|
}
|
|
217
234
|
}
|
|
218
|
-
// Fallback: couldn't find a known salt or backup
|
|
219
235
|
if (!silent) {
|
|
220
236
|
console.error('⚠️ Could not find a known salt in binary or any valid backup.');
|
|
221
237
|
console.error('Run buddy-mcp-build restore, or reinstall Claude Code.');
|
|
@@ -227,11 +243,8 @@ if (process.argv[2] === 'apply') {
|
|
|
227
243
|
applyPendingPatch({ silent });
|
|
228
244
|
process.exit(0);
|
|
229
245
|
}
|
|
230
|
-
// --- Startup ---
|
|
231
246
|
async function main() {
|
|
232
|
-
// 1. Load gacha extras (dex, shiny count, manifested tools)
|
|
233
247
|
loadGachaState();
|
|
234
|
-
// 2. Load active buddy profile
|
|
235
248
|
try {
|
|
236
249
|
const petConfig = loadPetConfigV2();
|
|
237
250
|
const activeSalt = petConfig?.activeProfile;
|
|
@@ -240,7 +253,7 @@ async function main() {
|
|
|
240
253
|
S.currentBuddy = { ...activeProfile };
|
|
241
254
|
}
|
|
242
255
|
else {
|
|
243
|
-
// No profile yet
|
|
256
|
+
// No profile yet: derive buddy from current salt using roll()
|
|
244
257
|
const userId = getClaudeUserId();
|
|
245
258
|
const salt = petConfig?.salt ?? ORIGINAL_SALT;
|
|
246
259
|
const rolled = roll(userId, salt);
|
|
@@ -263,7 +276,6 @@ async function main() {
|
|
|
263
276
|
catch (err) {
|
|
264
277
|
console.error('Buddy load failed (non-fatal):', err);
|
|
265
278
|
}
|
|
266
|
-
// 3. Check if binary changed since last patch (Claude auto-update detection)
|
|
267
279
|
try {
|
|
268
280
|
const binaryPath = findClaudeBinary();
|
|
269
281
|
const currentMtime = statSync(binaryPath).mtimeMs;
|
|
@@ -272,17 +284,15 @@ async function main() {
|
|
|
272
284
|
}
|
|
273
285
|
}
|
|
274
286
|
catch {
|
|
275
|
-
// Binary not found
|
|
287
|
+
// Binary not found: non-fatal, reroll will surface it
|
|
276
288
|
}
|
|
277
|
-
// 4. Dex sync — ensure current buddy is recorded
|
|
278
289
|
if (S.currentBuddy && !gachaState.discoveredSpecies.includes(S.currentBuddy.species)) {
|
|
279
290
|
gachaState.discoveredSpecies.push(S.currentBuddy.species);
|
|
280
291
|
saveGachaState();
|
|
281
292
|
}
|
|
282
|
-
// 5. Auto-manifest personality tools
|
|
283
293
|
if (S.currentBuddy)
|
|
284
294
|
autoManifestTools(S.currentBuddy);
|
|
285
|
-
//
|
|
295
|
+
// Lock stat tools if not already set (first launch or missing state file)
|
|
286
296
|
if (S.currentBuddy && gachaState.visibleStatTools.length === 0) {
|
|
287
297
|
pickVisibleStatTools();
|
|
288
298
|
saveGachaState();
|
package/dist/mcp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/mcp/persistence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/mcp/persistence.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,eAAe,aA6B1B,CAAC;AAEH,wBAAgB,cAAc,IAAI,IAAI,CAkBrC;AAED,wBAAgB,cAAc,IAAI,IAAI,CA6BrC;AAGD,wBAAgB,oBAAoB,IAAI,IAAI,CAc3C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,GAAG,OAAO,EACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,IAAI,CA6CN"}
|
package/dist/mcp/persistence.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, renameSync, unlinkSync, existsSync } from 'fs';
|
|
2
2
|
import { S, gachaState, dynamicTools, GACHA_STATE_FILE } from './state.js';
|
|
3
3
|
import { STAT_TOOLS_MAP } from './tools/stats.js';
|
|
4
|
-
// --- Persistence ---
|
|
5
4
|
// Guards saveGachaState() from overwriting a file that failed to load (corrupted).
|
|
6
5
|
// Set to true on successful load or on first run (no file yet). Stays false only
|
|
7
|
-
// when the file exists but could not be parsed
|
|
6
|
+
// when the file exists but could not be parsed: in that case we refuse to save
|
|
8
7
|
// over what might be a recoverable file.
|
|
9
8
|
let loadSucceeded = false;
|
|
10
9
|
export const CORE_TOOL_NAMES = new Set([
|
|
@@ -16,27 +15,22 @@ export const CORE_TOOL_NAMES = new Set([
|
|
|
16
15
|
'export_buddy_sprite',
|
|
17
16
|
'activate_buddy_interact',
|
|
18
17
|
'deactivate_buddy_interact',
|
|
19
|
-
// DEBUGGING tools
|
|
20
18
|
'deep_trace',
|
|
21
19
|
'trace_nightmare',
|
|
22
20
|
'null_hunt',
|
|
23
21
|
'stack_dive',
|
|
24
|
-
// PATIENCE tools
|
|
25
22
|
'patience_check',
|
|
26
23
|
'wait_wisdom',
|
|
27
24
|
'vibe_check',
|
|
28
25
|
'still_point',
|
|
29
|
-
// CHAOS tools
|
|
30
26
|
'chaos_audit',
|
|
31
27
|
'chaos_roulette',
|
|
32
28
|
'chaos_spark',
|
|
33
29
|
'entropy_roll',
|
|
34
|
-
// WISDOM tools
|
|
35
30
|
'zen_consult',
|
|
36
31
|
'zen_mirror',
|
|
37
32
|
'oracle_seek',
|
|
38
33
|
'deep_thought',
|
|
39
|
-
// SNARK tools
|
|
40
34
|
'snark_roast',
|
|
41
35
|
'snark_savage',
|
|
42
36
|
'side_eye',
|
|
@@ -44,7 +38,7 @@ export const CORE_TOOL_NAMES = new Set([
|
|
|
44
38
|
]);
|
|
45
39
|
export function saveGachaState() {
|
|
46
40
|
if (!loadSucceeded) {
|
|
47
|
-
console.error('Skipping gacha state save
|
|
41
|
+
console.error('Skipping gacha state save: previous load failed (file may be corrupted).');
|
|
48
42
|
return;
|
|
49
43
|
}
|
|
50
44
|
const toolsToSave = Array.from(dynamicTools.values())
|
|
@@ -59,15 +53,13 @@ export function saveGachaState() {
|
|
|
59
53
|
try {
|
|
60
54
|
unlinkSync(tmp);
|
|
61
55
|
}
|
|
62
|
-
catch {
|
|
63
|
-
/* ignore — tmp may not exist */
|
|
64
|
-
}
|
|
56
|
+
catch { }
|
|
65
57
|
console.error('Failed to save gacha state:', err);
|
|
66
58
|
}
|
|
67
59
|
}
|
|
68
60
|
export function loadGachaState() {
|
|
69
61
|
if (!existsSync(GACHA_STATE_FILE)) {
|
|
70
|
-
// First run
|
|
62
|
+
// First run: no file yet, valid empty state
|
|
71
63
|
loadSucceeded = true;
|
|
72
64
|
return;
|
|
73
65
|
}
|
|
@@ -78,7 +70,6 @@ export function loadGachaState() {
|
|
|
78
70
|
gachaState.binaryMtime = raw.binaryMtime ?? undefined;
|
|
79
71
|
gachaState.interactMode = raw.interactMode ?? false;
|
|
80
72
|
gachaState.visibleStatTools = raw.visibleStatTools ?? [];
|
|
81
|
-
// Restore manifested tools from previous session
|
|
82
73
|
for (const def of raw.manifestedTools ?? []) {
|
|
83
74
|
if (!CORE_TOOL_NAMES.has(def.toolName)) {
|
|
84
75
|
registerManifestedTool(def.toolName, def.description, def.logic, def.scope, def.inputSchema);
|
|
@@ -87,11 +78,11 @@ export function loadGachaState() {
|
|
|
87
78
|
loadSucceeded = true;
|
|
88
79
|
}
|
|
89
80
|
catch (err) {
|
|
90
|
-
console.error('Failed to load gacha state (file may be corrupted
|
|
91
|
-
// loadSucceeded stays false
|
|
81
|
+
console.error('Failed to load gacha state (file may be corrupted: will not overwrite):', err);
|
|
82
|
+
// loadSucceeded stays false: saveGachaState() will refuse to run
|
|
92
83
|
}
|
|
93
84
|
}
|
|
94
|
-
// Picks and locks 1 stat tool from each of the top 2 stats. Call once per reroll
|
|
85
|
+
// Picks and locks 1 stat tool from each of the top 2 stats. Call once per reroll, stable until next roll.
|
|
95
86
|
export function pickVisibleStatTools() {
|
|
96
87
|
if (!S.currentBuddy) {
|
|
97
88
|
gachaState.visibleStatTools = [];
|
|
@@ -106,7 +97,6 @@ export function pickVisibleStatTools() {
|
|
|
106
97
|
}
|
|
107
98
|
gachaState.visibleStatTools = picked;
|
|
108
99
|
}
|
|
109
|
-
// --- Dynamic tool system ---
|
|
110
100
|
export function registerManifestedTool(name, description, logic, scope, inputSchema) {
|
|
111
101
|
if (CORE_TOOL_NAMES.has(name)) {
|
|
112
102
|
console.error(`Attempted to overwrite core tool: ${name}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/mcp/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGrF,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/mcp/persistence.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/mcp/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/mcp/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,wBAAwB,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,CAAC;kBACU,QAAQ,GAAG,IAAI;;;;CAItC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAQxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,GAAG,CAC5B,MAAM,EACN;IACE,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,EAAE,wBAAwB,CAAC;CAChC,CACU,CAAC;AAEd,eAAO,MAAM,gBAAgB,QAA2C,CAAC;AACzE,eAAO,MAAM,kBAAkB,QAA6C,CAAC;AAE7E,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlB,CAAC"}
|
package/dist/mcp/state.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { homedir } from 'os';
|
|
4
|
-
// --- Shared mutable state ---
|
|
5
4
|
export const S = {
|
|
6
5
|
currentBuddy: null,
|
|
7
6
|
petBuddyStreak: 0, // Track consecutive pet_buddy calls for easter egg
|
package/dist/mcp/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/mcp/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/mcp/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAmC7B,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,YAAY,EAAE,IAAuB;IACrC,cAAc,EAAE,CAAC,EAAE,mDAAmD;IACtE,cAAc,EAAE,EAAE,EAAE,2DAA2D;IAC/E,eAAe,EAAE,KAAK,EAAE,wDAAwD;CACjF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,EAAE;IACnB,YAAY,EAAE,IAAI,EAAE,kEAAkE;IACtF,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,CAAC;IACzB,2BAA2B,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAOrB,IAAI,GAAG,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,yBAAyB,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAC9B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EACvC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/auto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/auto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,eAAO,MAAM,eAAe,aAM1B,CAAC;AAKH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAG"}
|
package/dist/mcp/tools/auto.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// --- Personality-based auto-tools ---
|
|
2
1
|
// All 5 names below are now baked-in CORE_TOOL_NAMES managed by stats.ts.
|
|
3
2
|
// AUTO_TOOL_NAMES is kept for reference and test assertions.
|
|
4
3
|
export const AUTO_TOOL_NAMES = new Set([
|
|
@@ -9,7 +8,7 @@ export const AUTO_TOOL_NAMES = new Set([
|
|
|
9
8
|
'patience_check',
|
|
10
9
|
]);
|
|
11
10
|
// Retained for call-site compatibility. All AUTO_TOOL_NAMES are CORE_TOOL_NAMES
|
|
12
|
-
// registered at startup via stats.ts
|
|
11
|
+
// registered at startup via stats.ts; this function is now a no-op.
|
|
13
12
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
13
|
export function autoManifestTools(_buddy) { }
|
|
15
14
|
//# sourceMappingURL=auto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../src/mcp/tools/auto.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../src/mcp/tools/auto.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,6DAA6D;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,aAAa;IACb,aAAa;IACb,aAAa;IACb,YAAY;IACZ,gBAAgB;CACjB,CAAC,CAAC;AAEH,gFAAgF;AAChF,oEAAoE;AACpE,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,MAAmB,IAAS,CAAC"}
|
package/dist/mcp/tools/core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeFileSync, existsSync, statSync } from 'fs';
|
|
1
|
+
import { writeFileSync, existsSync, statSync, renameSync, unlinkSync } from 'fs';
|
|
2
2
|
import { join, dirname } from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { spawn } from 'child_process';
|
|
@@ -15,7 +15,6 @@ import { S, gachaState, dynamicTools, PENDING_PATCH_FILE } from '../state.js';
|
|
|
15
15
|
import { saveGachaState, pickVisibleStatTools } from '../persistence.js';
|
|
16
16
|
import { autoManifestTools } from './auto.js';
|
|
17
17
|
import { wrapBuddyDisplay } from './relay.js';
|
|
18
|
-
// --- Core tool handlers ---
|
|
19
18
|
const buddyTalkTool = {
|
|
20
19
|
tool: {
|
|
21
20
|
name: 'buddy_talk',
|
|
@@ -32,7 +31,7 @@ const buddyTalkTool = {
|
|
|
32
31
|
},
|
|
33
32
|
handler: async (args) => {
|
|
34
33
|
try {
|
|
35
|
-
S.petBuddyStreak = 0;
|
|
34
|
+
S.petBuddyStreak = 0;
|
|
36
35
|
S.lastToolCalled = 'buddy_talk';
|
|
37
36
|
if (!S.currentBuddy)
|
|
38
37
|
return 'Initialize a buddy first.';
|
|
@@ -65,7 +64,6 @@ const petBuddyTool = {
|
|
|
65
64
|
S.petBuddyStreak = 1;
|
|
66
65
|
}
|
|
67
66
|
S.lastToolCalled = 'pet_buddy';
|
|
68
|
-
// Session affection mini-game: accumulate 1-15% toward a token
|
|
69
67
|
const gain = Math.floor(Math.random() * 15) + 1;
|
|
70
68
|
gachaState.sessionAffectionAccumulator += gain;
|
|
71
69
|
let earnedToken = false;
|
|
@@ -109,7 +107,6 @@ const petBuddyTool = {
|
|
|
109
107
|
reaction = `${name} makes a sound like a dial-up modem. You're pretty sure they just rewrote your history file.`;
|
|
110
108
|
else
|
|
111
109
|
reaction = `${name} lets out a soft, digital chirp. *happy ${b.species} noises*`;
|
|
112
|
-
// Build affection message
|
|
113
110
|
const affectionMsg = earnedToken
|
|
114
111
|
? `🤚 Petted! Token progress: +${gain}% → 🌟 **EARNED TOKEN!** 🌟 (have ${gachaState.sessionAffectionTokens})`
|
|
115
112
|
: `🤚 Petted! Token progress: +${gain}% → ${gachaState.sessionAffectionAccumulator}/100`;
|
|
@@ -123,13 +120,11 @@ const rerollBuddyTool = {
|
|
|
123
120
|
inputSchema: { type: 'object', properties: {} },
|
|
124
121
|
},
|
|
125
122
|
handler: async () => {
|
|
126
|
-
S.petBuddyStreak = 0;
|
|
123
|
+
S.petBuddyStreak = 0;
|
|
127
124
|
S.lastToolCalled = 'reroll_buddy';
|
|
128
|
-
// 1. Get userId
|
|
129
125
|
const userId = getClaudeUserId();
|
|
130
126
|
if (userId === 'anon')
|
|
131
127
|
return '❌ No userId found. Open Claude Code at least once first.';
|
|
132
|
-
// 3. Find binary
|
|
133
128
|
let binaryPath;
|
|
134
129
|
try {
|
|
135
130
|
binaryPath = findClaudeBinary();
|
|
@@ -137,13 +132,11 @@ const rerollBuddyTool = {
|
|
|
137
132
|
catch (err) {
|
|
138
133
|
return `❌ Claude Code binary not found: ${err.message}`;
|
|
139
134
|
}
|
|
140
|
-
// 3.5. Check for affection tokens
|
|
141
135
|
let tokenUsed = false;
|
|
142
136
|
if (gachaState.sessionAffectionTokens > 0) {
|
|
143
137
|
gachaState.sessionAffectionTokens--;
|
|
144
138
|
tokenUsed = true;
|
|
145
139
|
}
|
|
146
|
-
// 4. Roll desired traits (boosted if token used)
|
|
147
140
|
let desired;
|
|
148
141
|
if (tokenUsed) {
|
|
149
142
|
// Token gives guaranteed rare or better + boosted accessories
|
|
@@ -204,7 +197,7 @@ const rerollBuddyTool = {
|
|
|
204
197
|
catch (err) {
|
|
205
198
|
const msg = err.message ?? '';
|
|
206
199
|
if (msg.includes('Could not find salt')) {
|
|
207
|
-
// Try ORIGINAL_SALT
|
|
200
|
+
// Try ORIGINAL_SALT: Claude may have auto-updated and restored it
|
|
208
201
|
if (currentSalt !== ORIGINAL_SALT) {
|
|
209
202
|
try {
|
|
210
203
|
patchBinary(binaryPath, ORIGINAL_SALT, finderResult.salt);
|
|
@@ -245,11 +238,10 @@ const rerollBuddyTool = {
|
|
|
245
238
|
].join('\n');
|
|
246
239
|
}
|
|
247
240
|
}
|
|
248
|
-
// Any other error (EPERM, EBUSY)
|
|
241
|
+
// Any other error (EPERM, EBUSY): binary locked, fall through to pending patch flow
|
|
249
242
|
}
|
|
250
|
-
//
|
|
251
|
-
//
|
|
252
|
-
// native hash (Bun.hash in the wyhash subprocess), so we never need to re-hash here.
|
|
243
|
+
// Use bones directly from finder: the worker computed them with the native hash
|
|
244
|
+
// (Bun.hash in the wyhash subprocess), re-hashing here would produce different results.
|
|
253
245
|
const bones = finderResult.bones;
|
|
254
246
|
const profile = {
|
|
255
247
|
salt: finderResult.salt,
|
|
@@ -263,11 +255,8 @@ const rerollBuddyTool = {
|
|
|
263
255
|
personality: DEFAULT_PERSONALITIES[bones.species],
|
|
264
256
|
createdAt: new Date().toISOString(),
|
|
265
257
|
};
|
|
266
|
-
const elapsed = (finderResult.elapsed / 1000).toFixed(1);
|
|
267
|
-
const attempts = finderResult.totalAttempts?.toLocaleString() ?? finderResult.attempts.toLocaleString();
|
|
268
258
|
const shinyTag = profile.shiny ? ' ✨ SHINY! ✨' : '';
|
|
269
259
|
if (!patched) {
|
|
270
|
-
// Save pending patch then spawn a detached watcher that auto-applies when Claude closes
|
|
271
260
|
const pending = {
|
|
272
261
|
salt: finderResult.salt,
|
|
273
262
|
currentSalt,
|
|
@@ -276,26 +265,36 @@ const rerollBuddyTool = {
|
|
|
276
265
|
rolledAt: new Date().toISOString(),
|
|
277
266
|
};
|
|
278
267
|
try {
|
|
279
|
-
|
|
268
|
+
const tmp = PENDING_PATCH_FILE + '.tmp';
|
|
269
|
+
try {
|
|
270
|
+
writeFileSync(tmp, JSON.stringify(pending, null, 2));
|
|
271
|
+
renameSync(tmp, PENDING_PATCH_FILE);
|
|
272
|
+
}
|
|
273
|
+
catch (writeErr) {
|
|
274
|
+
try {
|
|
275
|
+
unlinkSync(tmp);
|
|
276
|
+
}
|
|
277
|
+
catch { }
|
|
278
|
+
throw writeErr;
|
|
279
|
+
}
|
|
280
280
|
gachaState.sessionAffectionAccumulator = 0;
|
|
281
|
-
// Lock stat tools
|
|
281
|
+
// Lock stat tools now; stable until next reroll
|
|
282
282
|
S.currentBuddy = { ...profile };
|
|
283
283
|
pickVisibleStatTools();
|
|
284
284
|
saveGachaState();
|
|
285
|
-
// Auto-install hook if not already present
|
|
286
285
|
if (!isHookInstalled()) {
|
|
287
286
|
try {
|
|
288
287
|
installHook(process.argv[1]);
|
|
289
288
|
}
|
|
290
289
|
catch {
|
|
291
|
-
// Non-fatal
|
|
290
|
+
// Non-fatal: hook install failure shouldn't break the reroll
|
|
292
291
|
}
|
|
293
292
|
}
|
|
294
293
|
}
|
|
295
294
|
catch (err) {
|
|
296
295
|
return `❌ Could not save pending patch: ${err.message}`;
|
|
297
296
|
}
|
|
298
|
-
// Spawn watcher as fully detached
|
|
297
|
+
// Spawn watcher as fully detached: survives after MCP server exits
|
|
299
298
|
const watcherPath = join(dirname(fileURLToPath(import.meta.url)), '../watcher.js');
|
|
300
299
|
const watcherSpawned = existsSync(watcherPath);
|
|
301
300
|
if (watcherSpawned) {
|
|
@@ -310,14 +309,13 @@ const rerollBuddyTool = {
|
|
|
310
309
|
`**Close Claude Code, then run:** \`npm run apply\` in the buddy-mcp directory, then reopen.`,
|
|
311
310
|
];
|
|
312
311
|
return [
|
|
313
|
-
`🎲
|
|
312
|
+
`🎲 You got a **${profile.rarity} ${profile.species}**${shinyTag}!`,
|
|
314
313
|
``,
|
|
315
314
|
`⚠️ Binary is locked - Claude Code is still running.`,
|
|
316
315
|
``,
|
|
317
316
|
...applyInstructions,
|
|
318
317
|
].join('\n');
|
|
319
318
|
}
|
|
320
|
-
// 8. Patch succeeded — save profile and update MCP state
|
|
321
319
|
saveProfile(profile, { activate: true });
|
|
322
320
|
S.currentBuddy = { ...profile };
|
|
323
321
|
if (!gachaState.discoveredSpecies.includes(profile.species)) {
|
|
@@ -329,18 +327,17 @@ const rerollBuddyTool = {
|
|
|
329
327
|
gachaState.sessionAffectionAccumulator = 0;
|
|
330
328
|
pickVisibleStatTools();
|
|
331
329
|
saveGachaState();
|
|
332
|
-
// Auto-install hook if not already present
|
|
333
330
|
if (!isHookInstalled()) {
|
|
334
331
|
try {
|
|
335
332
|
installHook(process.argv[1]);
|
|
336
333
|
}
|
|
337
334
|
catch {
|
|
338
|
-
// Non-fatal
|
|
335
|
+
// Non-fatal: hook install failure shouldn't break the reroll
|
|
339
336
|
}
|
|
340
337
|
}
|
|
341
338
|
autoManifestTools(S.currentBuddy);
|
|
342
339
|
return [
|
|
343
|
-
`🎲
|
|
340
|
+
`🎲 You got a **${profile.rarity} ${profile.species}**${shinyTag}!`,
|
|
344
341
|
``,
|
|
345
342
|
`✅ Binary patched! Restart Claude Code to see your new companion.`,
|
|
346
343
|
].join('\n');
|
|
@@ -353,7 +350,7 @@ const viewBuddyDexTool = {
|
|
|
353
350
|
inputSchema: { type: 'object', properties: {} },
|
|
354
351
|
},
|
|
355
352
|
handler: async () => {
|
|
356
|
-
S.petBuddyStreak = 0;
|
|
353
|
+
S.petBuddyStreak = 0;
|
|
357
354
|
S.lastToolCalled = 'view_buddy_dex';
|
|
358
355
|
let output = '--- BUDDY DEX ---\n\n';
|
|
359
356
|
for (let i = 0; i < SPECIES.length; i += 3) {
|
|
@@ -367,7 +364,6 @@ const viewBuddyDexTool = {
|
|
|
367
364
|
return wrapBuddyDisplay(output);
|
|
368
365
|
},
|
|
369
366
|
};
|
|
370
|
-
// --- Register core tools ---
|
|
371
367
|
dynamicTools.set('pet_buddy', {
|
|
372
368
|
...petBuddyTool,
|
|
373
369
|
_def: { toolName: 'pet_buddy', description: 'Core: Pet', logic: 'N/A', scope: 'global' },
|