@myhpmp/cli 1.5.0 → 1.7.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.
- package/README.ko.md +13 -12
- package/README.md +13 -12
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/uninstall.d.ts +1 -0
- package/dist/commands/uninstall.js +109 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/core/exp-calculator.d.ts +1 -1
- package/dist/core/exp-calculator.js +1 -1
- package/dist/core/exp-calculator.js.map +1 -1
- package/dist/data/local-store.d.ts +2 -0
- package/dist/data/local-store.js +2 -0
- package/dist/data/local-store.js.map +1 -1
- package/dist/data/providers/supabase.js +2 -0
- package/dist/data/providers/supabase.js.map +1 -1
- package/dist/hooks/claude/session-end.js +8 -1
- package/dist/hooks/claude/session-end.js.map +1 -1
- package/dist/hooks/codex/session-end.js +8 -1
- package/dist/hooks/codex/session-end.js.map +1 -1
- package/package.json +2 -2
package/README.ko.md
CHANGED
|
@@ -25,7 +25,7 @@ Claude Code에서 모든 기능을 사용할 수 있습니다. Codex CLI는 EXP
|
|
|
25
25
|
Claude Code 하단에 항상 표시:
|
|
26
26
|
|
|
27
27
|
```
|
|
28
|
-
⚔️
|
|
28
|
+
⚔️ 토큰 익스플로러 Lv.9 ★★★ | ❤️ 43% ⏱️2h30m | 💙 76% | 🧠 25% | 🔥7일 | 📂 ~/…/code/my-project
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## 상세 보기
|
|
@@ -33,7 +33,7 @@ Claude Code 하단에 항상 표시:
|
|
|
33
33
|
`myhpmp usage`로 전체 대시보드 확인:
|
|
34
34
|
|
|
35
35
|
```
|
|
36
|
-
🎮 ⚔️
|
|
36
|
+
🎮 ⚔️ 토큰 익스플로러 Lv.9 ★★★ 🔥 연속: 7일
|
|
37
37
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
38
38
|
❤️ HP ████░░░░░░ 43% ⏱️ 2h30m
|
|
39
39
|
💙 MP ████████░░ 76%
|
|
@@ -57,14 +57,14 @@ Claude Code 하단에 항상 표시:
|
|
|
57
57
|
|
|
58
58
|
| 레벨 | 칭호 | 레벨당 EXP | 누적 EXP |
|
|
59
59
|
|------|------|-----------|----------|
|
|
60
|
-
| 1-5 | 🌱
|
|
61
|
-
| 6-10 | ⚔️
|
|
62
|
-
| 11-15 |
|
|
63
|
-
| 16-20 |
|
|
64
|
-
| 21-30 | 🔮
|
|
65
|
-
| 31-40 | 👑
|
|
66
|
-
| 41-50 | 🐉
|
|
67
|
-
| 50+ | ⚡
|
|
60
|
+
| 1-5 | 🌱 프롬프트 뉴비 | 100 | 500 |
|
|
61
|
+
| 6-10 | ⚔️ 토큰 익스플로러 | 300 | 2,000 |
|
|
62
|
+
| 11-15 | 🛠️ 프롬프트 엔지니어 | 600 | 5,000 |
|
|
63
|
+
| 16-20 | 🏗️ 컨텍스트 아키텍트 | 1,200 | 11,000 |
|
|
64
|
+
| 21-30 | 🔮 프롬프트 소서러 | 3,500 | 46,000 |
|
|
65
|
+
| 31-40 | 👑 모델 마스터 | 8,000 | 126,000 |
|
|
66
|
+
| 41-50 | 🐉 컨텍스트 오버로드 | 15,000 | 276,000 |
|
|
67
|
+
| 50+ | ⚡ 신서틱 마인드 | 25,000 | ∞ |
|
|
68
68
|
|
|
69
69
|
초반 레벨은 빠르게 올라갑니다. 후반 티어는 꾸준한 사용이 필요합니다 — ⚡ 초월자까지 약 8개월 소요.
|
|
70
70
|
|
|
@@ -108,6 +108,7 @@ myhpmp locale
|
|
|
108
108
|
| `myhpmp statusline off` | 상태 바 끄기 |
|
|
109
109
|
| `myhpmp locale` | 표시 언어 변경 (한국어/English) |
|
|
110
110
|
| `myhpmp init` | 인증 설정 (크로스 디바이스 동기화) |
|
|
111
|
+
| `myhpmp uninstall` | 모든 Hook, 상태 바 제거 및 로컬 데이터 삭제 (선택) |
|
|
111
112
|
|
|
112
113
|
## 크로스 디바이스 동기화
|
|
113
114
|
|
|
@@ -148,8 +149,8 @@ myhpmp init
|
|
|
148
149
|
한국어와 영어를 지원합니다. `myhpmp locale`로 언어를 설정하거나, 시스템 로캘에서 자동 감지합니다.
|
|
149
150
|
|
|
150
151
|
```
|
|
151
|
-
KO: ⚔️
|
|
152
|
-
EN: ⚔️
|
|
152
|
+
KO: ⚔️ 토큰 익스플로러 Lv.9 ★★★ | ❤️ 43% ⏱️2h30m | 💙 76% | 🧠 25% | 🔥7일 | 📂 ~/…/code/my-project
|
|
153
|
+
EN: ⚔️ Token Explorer Lv.9 ★★★ | ❤️ 43% ⏱️2h30m | 💙 76% | 🧠 25% | 🔥7d | 📂 ~/…/code/my-project
|
|
153
154
|
```
|
|
154
155
|
|
|
155
156
|
## 작동 방식
|
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ Claude Code provides the full experience. Codex CLI supports EXP tracking and le
|
|
|
25
25
|
Always visible at the bottom of Claude Code:
|
|
26
26
|
|
|
27
27
|
```
|
|
28
|
-
⚔️
|
|
28
|
+
⚔️ Token Explorer Lv.9 ★★★ | ❤️ 43% ⏱️2h30m | 💙 76% | 🧠 25% | 🔥7d | 📂 ~/…/code/my-project
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## Detail View
|
|
@@ -33,7 +33,7 @@ Always visible at the bottom of Claude Code:
|
|
|
33
33
|
Run `myhpmp usage` for the full dashboard:
|
|
34
34
|
|
|
35
35
|
```
|
|
36
|
-
🎮 ⚔️
|
|
36
|
+
🎮 ⚔️ Token Explorer Lv.9 ★★★ 🔥 Streak: 7d
|
|
37
37
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
38
38
|
❤️ HP ████░░░░░░ 43% ⏱️ 2h30m
|
|
39
39
|
💙 MP ████████░░ 76%
|
|
@@ -57,14 +57,14 @@ Run `myhpmp usage` for the full dashboard:
|
|
|
57
57
|
|
|
58
58
|
| Level | Title | EXP/Level | Cumulative |
|
|
59
59
|
|-------|-------|-----------|------------|
|
|
60
|
-
| 1-5 | 🌱
|
|
61
|
-
| 6-10 | ⚔️
|
|
62
|
-
| 11-15 |
|
|
63
|
-
| 16-20 |
|
|
64
|
-
| 21-30 | 🔮
|
|
65
|
-
| 31-40 | 👑
|
|
66
|
-
| 41-50 | 🐉
|
|
67
|
-
| 50+ | ⚡
|
|
60
|
+
| 1-5 | 🌱 Prompt Newbie | 100 | 500 |
|
|
61
|
+
| 6-10 | ⚔️ Token Explorer | 300 | 2,000 |
|
|
62
|
+
| 11-15 | 🛠️ Prompt Engineer | 600 | 5,000 |
|
|
63
|
+
| 16-20 | 🏗️ Context Architect | 1,200 | 11,000 |
|
|
64
|
+
| 21-30 | 🔮 Prompt Sorcerer | 3,500 | 46,000 |
|
|
65
|
+
| 31-40 | 👑 Model Master | 8,000 | 126,000 |
|
|
66
|
+
| 41-50 | 🐉 Context Overlord | 15,000 | 276,000 |
|
|
67
|
+
| 50+ | ⚡ Synthetic Mind | 25,000 | ∞ |
|
|
68
68
|
|
|
69
69
|
Early levels fly by. Late tiers require serious dedication — expect ~8 months of daily use to reach ⚡ Transcendent.
|
|
70
70
|
|
|
@@ -108,6 +108,7 @@ That's it! EXP tracking starts via hooks. Status line is available for Claude Co
|
|
|
108
108
|
| `myhpmp statusline off` | Disable status line |
|
|
109
109
|
| `myhpmp locale` | Change display language (한국어/English) |
|
|
110
110
|
| `myhpmp init` | Set up authentication (cross-device sync) |
|
|
111
|
+
| `myhpmp uninstall` | Remove all hooks, status line, and optionally local data |
|
|
111
112
|
|
|
112
113
|
## Cross-Device Sync
|
|
113
114
|
|
|
@@ -148,8 +149,8 @@ Data is stored locally at `~/.myhpmp/data.json` and works offline. Cloud sync is
|
|
|
148
149
|
Supports Korean and English. Set your language with `myhpmp locale`, or it auto-detects from your system locale.
|
|
149
150
|
|
|
150
151
|
```
|
|
151
|
-
KO: ⚔️
|
|
152
|
-
EN: ⚔️
|
|
152
|
+
KO: ⚔️ 토큰 익스플로러 Lv.9 ★★★ | ❤️ 43% ⏱️2h30m | 💙 76% | 🧠 25% | 🔥7일 | 📂 ~/…/code/my-project
|
|
153
|
+
EN: ⚔️ Token Explorer Lv.9 ★★★ | ❤️ 43% ⏱️2h30m | 💙 76% | 🧠 25% | 🔥7d | 📂 ~/…/code/my-project
|
|
153
154
|
```
|
|
154
155
|
|
|
155
156
|
## How It Works
|
package/dist/cli.js
CHANGED
|
@@ -25,6 +25,9 @@ async function main() {
|
|
|
25
25
|
case 'statusline':
|
|
26
26
|
await import('./commands/statusline-toggle.js');
|
|
27
27
|
break;
|
|
28
|
+
case 'uninstall':
|
|
29
|
+
await import('./commands/uninstall.js');
|
|
30
|
+
break;
|
|
28
31
|
default:
|
|
29
32
|
console.log('🎮 My HP/MP - Gamified Usage Dashboard\n');
|
|
30
33
|
console.log('Supported: Claude Code, Codex CLI\n');
|
|
@@ -35,6 +38,7 @@ async function main() {
|
|
|
35
38
|
console.log(' sync — Manually sync stats to cloud');
|
|
36
39
|
console.log(' statusline — Toggle status line on/off (Claude Code only)');
|
|
37
40
|
console.log(' locale — Change display language (한국어/English)');
|
|
41
|
+
console.log(' uninstall — Remove all hooks and settings');
|
|
38
42
|
console.log('\nQuick start:');
|
|
39
43
|
console.log(' myhpmp setup # Auto-configure everything');
|
|
40
44
|
console.log(' myhpmp locale # Set language');
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA,kEAAkE;AAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,YAAY;YACf,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAChD,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA,kEAAkE;AAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,YAAY;YACf,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,WAAW;YACd,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACxC,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove all myhpmp hooks, status line config, and optionally local data.
|
|
3
|
+
* Run: myhpmp uninstall
|
|
4
|
+
*/
|
|
5
|
+
import fs from 'node:fs/promises';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import os from 'node:os';
|
|
8
|
+
import readline from 'node:readline';
|
|
9
|
+
import { listProviders, getProvider } from '../adapter/index.js';
|
|
10
|
+
const RUNTIME_DIR = path.join(os.homedir(), '.myhpmp');
|
|
11
|
+
function ask(rl, question) {
|
|
12
|
+
return new Promise((resolve) => rl.question(question, resolve));
|
|
13
|
+
}
|
|
14
|
+
async function loadJsonFile(filePath) {
|
|
15
|
+
try {
|
|
16
|
+
const raw = await fs.readFile(filePath, 'utf-8');
|
|
17
|
+
return JSON.parse(raw);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function saveJsonFile(filePath, data) {
|
|
24
|
+
await fs.writeFile(filePath, JSON.stringify(data, null, 2), 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
function removeMyhpmpHooks(hooks) {
|
|
27
|
+
const cleaned = {};
|
|
28
|
+
for (const [event, entries] of Object.entries(hooks)) {
|
|
29
|
+
const filtered = entries.filter((entry) => !JSON.stringify(entry).includes('myhpmp'));
|
|
30
|
+
if (filtered.length > 0) {
|
|
31
|
+
cleaned[event] = filtered;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return cleaned;
|
|
35
|
+
}
|
|
36
|
+
async function removeProviderConfig(providerName) {
|
|
37
|
+
const provider = getProvider(providerName);
|
|
38
|
+
const config = provider.generateHookConfig('');
|
|
39
|
+
const settingsPath = config.settingsPath;
|
|
40
|
+
try {
|
|
41
|
+
await fs.access(settingsPath);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const settings = await loadJsonFile(settingsPath);
|
|
47
|
+
let changed = false;
|
|
48
|
+
// Remove hooks
|
|
49
|
+
if (settings.hooks) {
|
|
50
|
+
const before = JSON.stringify(settings.hooks);
|
|
51
|
+
settings.hooks = removeMyhpmpHooks(settings.hooks);
|
|
52
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
53
|
+
delete settings.hooks;
|
|
54
|
+
}
|
|
55
|
+
if (JSON.stringify(settings.hooks) !== before)
|
|
56
|
+
changed = true;
|
|
57
|
+
}
|
|
58
|
+
// Remove statusLine
|
|
59
|
+
if (settings.statusLine && JSON.stringify(settings.statusLine).includes('myhpmp')) {
|
|
60
|
+
delete settings.statusLine;
|
|
61
|
+
changed = true;
|
|
62
|
+
}
|
|
63
|
+
if (changed) {
|
|
64
|
+
await saveJsonFile(settingsPath, settings);
|
|
65
|
+
}
|
|
66
|
+
return changed;
|
|
67
|
+
}
|
|
68
|
+
async function main() {
|
|
69
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
70
|
+
console.log('🗑️ My HP/MP Uninstall');
|
|
71
|
+
console.log('━'.repeat(30));
|
|
72
|
+
// Remove hooks from all providers
|
|
73
|
+
for (const providerName of listProviders()) {
|
|
74
|
+
const removed = await removeProviderConfig(providerName);
|
|
75
|
+
if (removed) {
|
|
76
|
+
const provider = getProvider(providerName);
|
|
77
|
+
const hookNames = Object.keys(provider.generateHookConfig('').hooks).join(', ');
|
|
78
|
+
console.log(`\n⚙️ Removing ${providerName} hooks...`);
|
|
79
|
+
console.log(` ✅ Hooks removed (${hookNames})`);
|
|
80
|
+
if (provider.supportsStatusLine) {
|
|
81
|
+
console.log(' ✅ Status line removed');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Ask about local data
|
|
86
|
+
try {
|
|
87
|
+
await fs.access(RUNTIME_DIR);
|
|
88
|
+
console.log('');
|
|
89
|
+
const answer = await ask(rl, 'Delete local data (~/.myhpmp)? This will remove all EXP/level data. (y/N) > ');
|
|
90
|
+
if (answer.trim().toLowerCase() === 'y') {
|
|
91
|
+
await fs.rm(RUNTIME_DIR, { recursive: true, force: true });
|
|
92
|
+
console.log(' ✅ Local data deleted');
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(' ⏭️ Local data preserved');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// ~/.myhpmp doesn't exist
|
|
100
|
+
}
|
|
101
|
+
rl.close();
|
|
102
|
+
console.log('\n🎉 Uninstall complete!');
|
|
103
|
+
console.log(' Run "npm uninstall -g @myhpmp/cli" to remove the package.\n');
|
|
104
|
+
}
|
|
105
|
+
main().catch((err) => {
|
|
106
|
+
console.error('❌ Uninstall failed:', err.message);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { calcTokenExp, calcSessionExp, calcStreakBonus, calcWeeklyBonus } from '@myhpmp/core';
|
|
1
|
+
export { calcTokenExp, calcSessionExp, calcStreakBonus, calcWeeklyBonus, DAILY_SESSION_CAP } from '@myhpmp/core';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Re-export from @myhpmp/core (single source of truth)
|
|
2
|
-
export { calcTokenExp, calcSessionExp, calcStreakBonus, calcWeeklyBonus } from '@myhpmp/core';
|
|
2
|
+
export { calcTokenExp, calcSessionExp, calcStreakBonus, calcWeeklyBonus, DAILY_SESSION_CAP } from '@myhpmp/core';
|
|
3
3
|
//# sourceMappingURL=exp-calculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exp-calculator.js","sourceRoot":"","sources":["../../src/core/exp-calculator.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"exp-calculator.js","sourceRoot":"","sources":["../../src/core/exp-calculator.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/data/local-store.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/data/local-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/data/local-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,MAAM,aAAa,GAAc;IAC/B,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,IAAI;IACpB,qBAAqB,EAAE,KAAK;IAC5B,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,IAAI;IACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACpC,CAAC;AAEF,MAAM,OAAO,UAAU;IACb,QAAQ,CAAS;IAEzB,YAAY,GAAW;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAgB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;CACF"}
|
|
@@ -46,6 +46,8 @@ export class SupabaseProvider {
|
|
|
46
46
|
streakDays,
|
|
47
47
|
lastActiveDate: data.last_active_date ? String(data.last_active_date) : null,
|
|
48
48
|
weeklyExpBonusClaimed: Boolean(data.weekly_exp_bonus_claimed),
|
|
49
|
+
dailySessionCount: 0,
|
|
50
|
+
dailySessionDate: null,
|
|
49
51
|
updatedAt: data.updated_at ? String(data.updated_at) : new Date().toISOString(),
|
|
50
52
|
};
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../../src/data/providers/supabase.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../../src/data/providers/supabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,14 @@ const DATA_DIR = path.join(os.homedir(), '.myhpmp');
|
|
|
9
9
|
async function main() {
|
|
10
10
|
const store = new LocalStore(DATA_DIR);
|
|
11
11
|
const stats = await store.load();
|
|
12
|
-
|
|
12
|
+
// Reset daily session count if date changed
|
|
13
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
14
|
+
if (stats.dailySessionDate !== today) {
|
|
15
|
+
stats.dailySessionCount = 0;
|
|
16
|
+
stats.dailySessionDate = today;
|
|
17
|
+
}
|
|
18
|
+
const sessionExp = calcSessionExp(stats.dailySessionCount);
|
|
19
|
+
stats.dailySessionCount += 1;
|
|
13
20
|
stats.totalSessions += 1;
|
|
14
21
|
stats.totalExp += sessionExp;
|
|
15
22
|
stats.level = getLevelInfo(stats.totalExp).level;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/hooks/claude/session-end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEjC,MAAM,UAAU,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/hooks/claude/session-end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACrC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3D,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAC7B,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC;IAC7B,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IACjD,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAExB,MAAM,MAAM,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAErE,qCAAqC;IACrC,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -14,8 +14,15 @@ const DATA_DIR = path.join(os.homedir(), '.myhpmp');
|
|
|
14
14
|
async function main() {
|
|
15
15
|
const store = new LocalStore(DATA_DIR);
|
|
16
16
|
const stats = await store.load();
|
|
17
|
+
// Reset daily session count if date changed
|
|
18
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
19
|
+
if (stats.dailySessionDate !== today) {
|
|
20
|
+
stats.dailySessionCount = 0;
|
|
21
|
+
stats.dailySessionDate = today;
|
|
22
|
+
}
|
|
17
23
|
// Session EXP
|
|
18
|
-
const sessionExp = calcSessionExp();
|
|
24
|
+
const sessionExp = calcSessionExp(stats.dailySessionCount);
|
|
25
|
+
stats.dailySessionCount += 1;
|
|
19
26
|
stats.totalSessions += 1;
|
|
20
27
|
stats.totalExp += sessionExp;
|
|
21
28
|
// Token EXP (parse Codex session JSONL)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/hooks/codex/session-end.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEjC,cAAc;IACd,MAAM,UAAU,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/hooks/codex/session-end.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACrC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,cAAc;IACd,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3D,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAC7B,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC;IAE7B,wCAAwC;IACxC,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAE3D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IACjD,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAExB,qBAAqB;IACrB,MAAM,MAAM,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myhpmp/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "RPG-style gamified usage dashboard for AI coding tools (Claude Code full support, Codex CLI EXP/level only)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"node": ">=18.0.0"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@myhpmp/core": "^1.0
|
|
46
|
+
"@myhpmp/core": "^1.1.0",
|
|
47
47
|
"@supabase/supabase-js": "^2.49.0",
|
|
48
48
|
"open": "^10.1.0"
|
|
49
49
|
},
|