claude-minipet 0.8.1 → 0.8.2
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/dist/core/overlay.d.ts +18 -0
- package/dist/core/overlay.js +27 -0
- package/dist/core/overlay.js.map +1 -0
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.js.map +1 -1
- package/dist/hooks/handler.js +22 -1
- package/dist/hooks/handler.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Desktop pet overlay bridge — pushes structured events to minipet-overlay.
|
|
3
|
+
*
|
|
4
|
+
* Design: only structured data is sent (type, petState, level, mood).
|
|
5
|
+
* Display text and persona are decided by the overlay, not here.
|
|
6
|
+
*/
|
|
7
|
+
export type OverlayPetState = 'sleeping' | 'sitting' | 'eating' | 'moving' | 'happy' | 'cute' | 'talking' | 'waving';
|
|
8
|
+
export interface OverlayEvent {
|
|
9
|
+
type: string;
|
|
10
|
+
petState?: OverlayPetState;
|
|
11
|
+
level?: number;
|
|
12
|
+
mood?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Push a structured event to the desktop overlay pet.
|
|
16
|
+
* Fire-and-forget: never throws, logs errors to stderr in debug mode.
|
|
17
|
+
*/
|
|
18
|
+
export declare function pushToOverlay(desktopPetUrl: string | undefined, event: OverlayEvent): void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Desktop pet overlay bridge — pushes structured events to minipet-overlay.
|
|
3
|
+
*
|
|
4
|
+
* Design: only structured data is sent (type, petState, level, mood).
|
|
5
|
+
* Display text and persona are decided by the overlay, not here.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Push a structured event to the desktop overlay pet.
|
|
9
|
+
* Fire-and-forget: never throws, logs errors to stderr in debug mode.
|
|
10
|
+
*/
|
|
11
|
+
export function pushToOverlay(desktopPetUrl, event) {
|
|
12
|
+
if (!desktopPetUrl)
|
|
13
|
+
return;
|
|
14
|
+
const url = `${desktopPetUrl}/event`;
|
|
15
|
+
const data = JSON.stringify(event);
|
|
16
|
+
fetch(url, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: { 'Content-Type': 'application/json' },
|
|
19
|
+
body: data,
|
|
20
|
+
signal: AbortSignal.timeout(3000),
|
|
21
|
+
}).catch((err) => {
|
|
22
|
+
if (process.env.DEBUG) {
|
|
23
|
+
process.stderr.write(`[overlay] push failed: ${err?.message ?? err}\n`);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/core/overlay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,aAAiC,EACjC,KAAmB;IAEnB,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,MAAM,GAAG,GAAG,GAAG,aAAa,QAAQ,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEnC,KAAK,CAAC,GAAG,EAAE;QACT,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -76,6 +76,7 @@ export interface PetConfig {
|
|
|
76
76
|
language: 'zh' | 'en';
|
|
77
77
|
animationsEnabled: boolean;
|
|
78
78
|
statusLineRows: number;
|
|
79
|
+
desktopPetUrl?: string;
|
|
79
80
|
}
|
|
80
81
|
/** Hook event types from Claude Code */
|
|
81
82
|
export type HookEvent = 'SessionStart' | 'UserPromptSubmit' | 'PostToolUse' | 'Stop' | 'PostToolUseFailure';
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAkHA,uBAAuB;AACvB,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,yCAAyC;AACzC,MAAM,CAAC,MAAM,eAAe,GAA+E;IACzG,MAAM,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;IAChF,WAAW,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;IACtF,SAAS,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE;IAC5F,MAAM,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE;IACpF,MAAM,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;IAC9E,QAAQ,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE;CACpF,CAAC"}
|
package/dist/hooks/handler.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { loadState, saveState, processHookEvent } from '../core/pet.js';
|
|
1
|
+
import { loadState, saveState, processHookEvent, loadConfig } from '../core/pet.js';
|
|
2
2
|
import { checkEvolution, applyEvolution, getEvolutionInfo } from '../core/evolution.js';
|
|
3
3
|
import { RARITY_INFO } from '../core/rarity.js';
|
|
4
4
|
import { evolutionAnimation, levelUpNotification, stageUpNotification, greetingMessage } from '../render/animation.js';
|
|
@@ -7,6 +7,7 @@ import { syncPetToServer, loadAuth } from '../core/sync.js';
|
|
|
7
7
|
import { writeSyncEvent, loadSyncStatus } from '../core/sync-status.js';
|
|
8
8
|
import { generateCodeComment, reactToCodeQuality, checkEasterEgg } from '../core/comments.js';
|
|
9
9
|
import { saveBubble, setBubbleCoding, setBubbleDone } from '../render/bubble.js';
|
|
10
|
+
import { pushToOverlay } from '../core/overlay.js';
|
|
10
11
|
import { createRequire } from 'node:module';
|
|
11
12
|
const require = createRequire(import.meta.url);
|
|
12
13
|
const PKG_VERSION = (() => {
|
|
@@ -25,6 +26,10 @@ export async function handleHook() {
|
|
|
25
26
|
const state = loadState();
|
|
26
27
|
if (!state)
|
|
27
28
|
process.exit(0);
|
|
29
|
+
// Read config once for the entire handler
|
|
30
|
+
const config = loadConfig();
|
|
31
|
+
const overlayUrl = config.desktopPetUrl;
|
|
32
|
+
const push = (event) => pushToOverlay(overlayUrl, event);
|
|
28
33
|
// Read stdin
|
|
29
34
|
const chunks = [];
|
|
30
35
|
for await (const chunk of process.stdin) {
|
|
@@ -41,9 +46,13 @@ export async function handleHook() {
|
|
|
41
46
|
// Set bubble mode based on Claude's work state
|
|
42
47
|
if (input.hook_event_name === 'UserPromptSubmit' || input.hook_event_name === 'PostToolUse') {
|
|
43
48
|
setBubbleCoding();
|
|
49
|
+
if (input.hook_event_name === 'UserPromptSubmit') {
|
|
50
|
+
push({ type: 'coding_start', petState: 'moving' });
|
|
51
|
+
}
|
|
44
52
|
}
|
|
45
53
|
else if (input.hook_event_name === 'Stop') {
|
|
46
54
|
setBubbleDone();
|
|
55
|
+
push({ type: 'coding_done', petState: 'happy' });
|
|
47
56
|
}
|
|
48
57
|
// Process the event
|
|
49
58
|
const messages = processHookEvent(state, input);
|
|
@@ -52,6 +61,12 @@ export async function handleHook() {
|
|
|
52
61
|
if (moodReaction.moodDelta !== 0) {
|
|
53
62
|
state.mood = Math.max(0, Math.min(100, state.mood + moodReaction.moodDelta));
|
|
54
63
|
saveState(state);
|
|
64
|
+
if (moodReaction.moodDelta > 0) {
|
|
65
|
+
push({ type: 'mood_up', mood: state.mood, petState: 'happy' });
|
|
66
|
+
}
|
|
67
|
+
else if (state.mood < 30) {
|
|
68
|
+
push({ type: 'mood_low', mood: state.mood, petState: 'cute' });
|
|
69
|
+
}
|
|
55
70
|
}
|
|
56
71
|
if (moodReaction.anim) {
|
|
57
72
|
triggerAnim(moodReaction.anim);
|
|
@@ -72,6 +87,7 @@ export async function handleHook() {
|
|
|
72
87
|
}
|
|
73
88
|
else if (input.hook_event_name === 'SessionStart') {
|
|
74
89
|
triggerAnim('pat'); // greeting animation
|
|
90
|
+
push({ type: 'session_start', petState: 'waving' });
|
|
75
91
|
}
|
|
76
92
|
// Build output
|
|
77
93
|
const output = [];
|
|
@@ -93,6 +109,7 @@ export async function handleHook() {
|
|
|
93
109
|
systemMessages.push(levelUpNotification(state.name, level, color));
|
|
94
110
|
saveBubble(`🎉 升级了!Lv.${level}!`);
|
|
95
111
|
triggerAnim('levelup');
|
|
112
|
+
push({ type: 'level_up', level, petState: 'happy' });
|
|
96
113
|
}
|
|
97
114
|
else if (msg.startsWith('stage_up:')) {
|
|
98
115
|
const stage = msg.split(':')[1];
|
|
@@ -100,6 +117,7 @@ export async function handleHook() {
|
|
|
100
117
|
systemMessages.push(stageUpNotification(state.name, stage, color));
|
|
101
118
|
saveBubble(`✨ 进化了!进入${stage === 'growth' ? '成长期' : '最终形态'}!`);
|
|
102
119
|
triggerAnim('levelup');
|
|
120
|
+
push({ type: 'stage_up', petState: 'happy' });
|
|
103
121
|
}
|
|
104
122
|
else if (msg.startsWith('evolution:')) {
|
|
105
123
|
const evoName = msg.split(':')[1];
|
|
@@ -109,6 +127,7 @@ export async function handleHook() {
|
|
|
109
127
|
const fromName = state.species;
|
|
110
128
|
systemMessages.push(evolutionAnimation(state.name, fromName, evo.name, evo.nameZh, color));
|
|
111
129
|
saveBubble(`🧬 进化为 ${evo.nameZh}!`);
|
|
130
|
+
push({ type: 'evolution', petState: 'happy' });
|
|
112
131
|
// Clear pending evolution after showing
|
|
113
132
|
state.pendingEvolution = null;
|
|
114
133
|
saveState(state);
|
|
@@ -120,6 +139,7 @@ export async function handleHook() {
|
|
|
120
139
|
if (egg) {
|
|
121
140
|
systemMessages.push(egg);
|
|
122
141
|
saveBubble(egg);
|
|
142
|
+
push({ type: 'easter_egg', petState: 'happy' });
|
|
123
143
|
saveState(state);
|
|
124
144
|
}
|
|
125
145
|
// 1. Code comments (stats-based, 5min cooldown, skip if egg triggered)
|
|
@@ -128,6 +148,7 @@ export async function handleHook() {
|
|
|
128
148
|
if (comment) {
|
|
129
149
|
systemMessages.push(comment);
|
|
130
150
|
saveBubble(comment);
|
|
151
|
+
push({ type: 'comment', petState: 'talking' });
|
|
131
152
|
saveState(state);
|
|
132
153
|
}
|
|
133
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/hooks/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/hooks/handler.ts"],"names":[],"mappings":"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"}
|