@myhpmp/cli 1.1.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/LICENSE +21 -0
- package/README.ko.md +156 -0
- package/README.md +156 -0
- package/dist/adapter/claude-adapter.d.ts +9 -0
- package/dist/adapter/claude-adapter.js +36 -0
- package/dist/adapter/claude-adapter.js.map +1 -0
- package/dist/adapter/codex-adapter.d.ts +14 -0
- package/dist/adapter/codex-adapter.js +84 -0
- package/dist/adapter/codex-adapter.js.map +1 -0
- package/dist/adapter/index.d.ts +6 -0
- package/dist/adapter/index.js +18 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/adapter/provider.d.ts +23 -0
- package/dist/adapter/provider.js +6 -0
- package/dist/adapter/provider.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +15 -0
- package/dist/auth/auth-manager.js +34 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/oauth.d.ts +6 -0
- package/dist/auth/oauth.js +113 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +46 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.js +116 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/locale.d.ts +1 -0
- package/dist/commands/locale.js +40 -0
- package/dist/commands/locale.js.map +1 -0
- package/dist/commands/setup.d.ts +1 -0
- package/dist/commands/setup.js +137 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/statusline-toggle.d.ts +1 -0
- package/dist/commands/statusline-toggle.js +61 -0
- package/dist/commands/statusline-toggle.js.map +1 -0
- package/dist/commands/sync.d.ts +1 -0
- package/dist/commands/sync.js +29 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/usage.d.ts +1 -0
- package/dist/commands/usage.js +56 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +35 -0
- package/dist/config.js.map +1 -0
- package/dist/core/exp-calculator.d.ts +1 -0
- package/dist/core/exp-calculator.js +3 -0
- package/dist/core/exp-calculator.js.map +1 -0
- package/dist/core/level-system.d.ts +2 -0
- package/dist/core/level-system.js +3 -0
- package/dist/core/level-system.js.map +1 -0
- package/dist/core/stats-aggregator.d.ts +5 -0
- package/dist/core/stats-aggregator.js +35 -0
- package/dist/core/stats-aggregator.js.map +1 -0
- package/dist/data/auto-sync.d.ts +8 -0
- package/dist/data/auto-sync.js +75 -0
- package/dist/data/auto-sync.js.map +1 -0
- package/dist/data/claude-usage.d.ts +13 -0
- package/dist/data/claude-usage.js +82 -0
- package/dist/data/claude-usage.js.map +1 -0
- package/dist/data/exp-logger.d.ts +1 -0
- package/dist/data/exp-logger.js +43 -0
- package/dist/data/exp-logger.js.map +1 -0
- package/dist/data/local-store.d.ts +16 -0
- package/dist/data/local-store.js +41 -0
- package/dist/data/local-store.js.map +1 -0
- package/dist/data/pending-exp.d.ts +8 -0
- package/dist/data/pending-exp.js +42 -0
- package/dist/data/pending-exp.js.map +1 -0
- package/dist/data/providers/db-interface.d.ts +11 -0
- package/dist/data/providers/db-interface.js +2 -0
- package/dist/data/providers/db-interface.js.map +1 -0
- package/dist/data/providers/supabase.d.ts +16 -0
- package/dist/data/providers/supabase.js +84 -0
- package/dist/data/providers/supabase.js.map +1 -0
- package/dist/data/sync-engine.d.ts +15 -0
- package/dist/data/sync-engine.js +67 -0
- package/dist/data/sync-engine.js.map +1 -0
- package/dist/display/detail-view.d.ts +23 -0
- package/dist/display/detail-view.js +36 -0
- package/dist/display/detail-view.js.map +1 -0
- package/dist/display/status-line.d.ts +12 -0
- package/dist/display/status-line.js +17 -0
- package/dist/display/status-line.js.map +1 -0
- package/dist/hooks/claude/post-tool-use.d.ts +1 -0
- package/dist/hooks/claude/post-tool-use.js +82 -0
- package/dist/hooks/claude/post-tool-use.js.map +1 -0
- package/dist/hooks/claude/session-end.d.ts +1 -0
- package/dist/hooks/claude/session-end.js +23 -0
- package/dist/hooks/claude/session-end.js.map +1 -0
- package/dist/hooks/claude/status-line-updater.d.ts +1 -0
- package/dist/hooks/claude/status-line-updater.js +48 -0
- package/dist/hooks/claude/status-line-updater.js.map +1 -0
- package/dist/hooks/codex/session-end.d.ts +1 -0
- package/dist/hooks/codex/session-end.js +40 -0
- package/dist/hooks/codex/session-end.js.map +1 -0
- package/dist/hooks/common/session-start.d.ts +1 -0
- package/dist/hooks/common/session-start.js +34 -0
- package/dist/hooks/common/session-start.js.map +1 -0
- package/dist/i18n/en.d.ts +26 -0
- package/dist/i18n/en.js +26 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +7 -0
- package/dist/i18n/index.js +30 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/ko.d.ts +26 -0
- package/dist/i18n/ko.js +26 -0
- package/dist/i18n/ko.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/statusline.d.ts +2 -0
- package/dist/statusline.js +103 -0
- package/dist/statusline.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import ko from './ko.js';
|
|
2
|
+
import en from './en.js';
|
|
3
|
+
const locales = { ko, en };
|
|
4
|
+
function getNestedValue(obj, path) {
|
|
5
|
+
const keys = path.split('.');
|
|
6
|
+
let current = obj;
|
|
7
|
+
for (const key of keys) {
|
|
8
|
+
if (current === null || typeof current !== 'object')
|
|
9
|
+
return path;
|
|
10
|
+
current = current[key];
|
|
11
|
+
}
|
|
12
|
+
return typeof current === 'string' ? current : path;
|
|
13
|
+
}
|
|
14
|
+
export function detectLocale() {
|
|
15
|
+
const env = process.env.LANG || process.env.LC_ALL || '';
|
|
16
|
+
if (env.startsWith('ko'))
|
|
17
|
+
return 'ko';
|
|
18
|
+
return 'en';
|
|
19
|
+
}
|
|
20
|
+
export function createI18n(locale) {
|
|
21
|
+
const resolved = locale === 'ko' ? 'ko' : 'en';
|
|
22
|
+
const messages = locales[resolved];
|
|
23
|
+
return {
|
|
24
|
+
locale: resolved,
|
|
25
|
+
t(key) {
|
|
26
|
+
return getNestedValue(messages, key);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AASzB,MAAM,OAAO,GAA6B,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAErD,SAAS,cAAc,CAAC,GAA4B,EAAE,IAAY;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACjE,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IACzD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,MAAM,QAAQ,GAAW,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,CAAC,CAAC,GAAW;YACX,OAAO,cAAc,CAAC,QAA8C,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
readonly status: {
|
|
3
|
+
readonly streak: "연속";
|
|
4
|
+
readonly totalExp: "총 누적 EXP";
|
|
5
|
+
readonly totalSessions: "총 세션";
|
|
6
|
+
readonly resetIn: "후 초기화";
|
|
7
|
+
readonly hp: "HP";
|
|
8
|
+
readonly mp: "MP";
|
|
9
|
+
readonly ctx: "CTX";
|
|
10
|
+
readonly exp: "EXP";
|
|
11
|
+
};
|
|
12
|
+
readonly unit: {
|
|
13
|
+
readonly days: "일";
|
|
14
|
+
readonly hours: "시간";
|
|
15
|
+
readonly minutes: "분";
|
|
16
|
+
readonly tokens: "토큰";
|
|
17
|
+
readonly sessions: "회";
|
|
18
|
+
};
|
|
19
|
+
readonly exp: {
|
|
20
|
+
readonly tokenUsage: "토큰 사용";
|
|
21
|
+
readonly sessionComplete: "세션 완료";
|
|
22
|
+
readonly streakBonus: "연속 사용 보너스";
|
|
23
|
+
readonly weeklyGoal: "주간 목표 달성";
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export default _default;
|
package/dist/i18n/ko.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
status: {
|
|
3
|
+
streak: '연속',
|
|
4
|
+
totalExp: '총 누적 EXP',
|
|
5
|
+
totalSessions: '총 세션',
|
|
6
|
+
resetIn: '후 초기화',
|
|
7
|
+
hp: 'HP',
|
|
8
|
+
mp: 'MP',
|
|
9
|
+
ctx: 'CTX',
|
|
10
|
+
exp: 'EXP',
|
|
11
|
+
},
|
|
12
|
+
unit: {
|
|
13
|
+
days: '일',
|
|
14
|
+
hours: '시간',
|
|
15
|
+
minutes: '분',
|
|
16
|
+
tokens: '토큰',
|
|
17
|
+
sessions: '회',
|
|
18
|
+
},
|
|
19
|
+
exp: {
|
|
20
|
+
tokenUsage: '토큰 사용',
|
|
21
|
+
sessionComplete: '세션 완료',
|
|
22
|
+
streakBonus: '연속 사용 보너스',
|
|
23
|
+
weeklyGoal: '주간 목표 달성',
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=ko.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ko.js","sourceRoot":"","sources":["../../src/i18n/ko.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,MAAM;QACrB,OAAO,EAAE,OAAO;QAChB,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI;QACR,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,KAAK;KACX;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,GAAG;KACd;IACD,GAAG,EAAE;QACH,UAAU,EAAE,OAAO;QACnB,eAAe,EAAE,OAAO;QACxB,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,UAAU;KACvB;CACO,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code Status Line Script
|
|
4
|
+
*
|
|
5
|
+
* Reads JSON from stdin (provided by Claude Code),
|
|
6
|
+
* combines with local EXP/level data,
|
|
7
|
+
* outputs a single-line RPG status bar.
|
|
8
|
+
*
|
|
9
|
+
* Usage in ~/.claude/settings.json:
|
|
10
|
+
* {
|
|
11
|
+
* "statusLine": {
|
|
12
|
+
* "type": "command",
|
|
13
|
+
* "command": "node ~/.myhpmp/dist/statusline.js"
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
import { LocalStore } from './data/local-store.js';
|
|
18
|
+
import { getLevelInfo, getTierForLevel, getStars, getTierEmoji, getTierTitle } from './core/level-system.js';
|
|
19
|
+
import { renderStatusLine } from './display/status-line.js';
|
|
20
|
+
import { detectLocale } from './i18n/index.js';
|
|
21
|
+
import { AuthManager } from './auth/auth-manager.js';
|
|
22
|
+
import { fetchClaudeUsage, utilizationToPercent, resetsAtToMinutes } from './data/claude-usage.js';
|
|
23
|
+
import os from 'node:os';
|
|
24
|
+
import path from 'node:path';
|
|
25
|
+
const DATA_DIR = path.join(os.homedir(), '.myhpmp');
|
|
26
|
+
const MAX_INPUT_SIZE = 1_000_000; // 1MB
|
|
27
|
+
async function main() {
|
|
28
|
+
// Read JSON from stdin (Claude Code pipes this)
|
|
29
|
+
let input = '';
|
|
30
|
+
for await (const chunk of process.stdin) {
|
|
31
|
+
input += chunk;
|
|
32
|
+
if (input.length > MAX_INPUT_SIZE)
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
let statusInput = {};
|
|
36
|
+
try {
|
|
37
|
+
statusInput = JSON.parse(input);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// If no valid JSON, use defaults
|
|
41
|
+
}
|
|
42
|
+
// Extract real-time data from Claude Code
|
|
43
|
+
const ctxPercent = Math.round(statusInput.context_window?.used_percentage ?? 0);
|
|
44
|
+
// If stdin has rate_limits, use them; otherwise fallback to API
|
|
45
|
+
let hpPercent;
|
|
46
|
+
let mpPercent;
|
|
47
|
+
let resetMinutes = 0;
|
|
48
|
+
if (statusInput.rate_limits?.five_hour) {
|
|
49
|
+
hpPercent = Math.max(0, Math.round(100 - (statusInput.rate_limits.five_hour.used_percentage ?? 0)));
|
|
50
|
+
mpPercent = Math.max(0, Math.round(100 - (statusInput.rate_limits?.seven_day?.used_percentage ?? 0)));
|
|
51
|
+
// resets_at comes as epoch seconds from stdin
|
|
52
|
+
const resetsAtEpoch = statusInput.rate_limits.five_hour.resets_at;
|
|
53
|
+
if (resetsAtEpoch) {
|
|
54
|
+
const diff = resetsAtEpoch * 1000 - Date.now();
|
|
55
|
+
resetMinutes = Math.max(0, Math.round(diff / 60_000));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const usage = await fetchClaudeUsage();
|
|
60
|
+
if (usage) {
|
|
61
|
+
hpPercent = utilizationToPercent(usage.fiveHour.utilization);
|
|
62
|
+
mpPercent = utilizationToPercent(usage.sevenDay.utilization);
|
|
63
|
+
resetMinutes = resetsAtToMinutes(usage.fiveHour.resetsAt);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
hpPercent = 100;
|
|
67
|
+
mpPercent = 100;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Load EXP/level data from local store
|
|
71
|
+
const authManager = new AuthManager(DATA_DIR);
|
|
72
|
+
const store = new LocalStore(DATA_DIR);
|
|
73
|
+
const stats = await store.load();
|
|
74
|
+
let locale;
|
|
75
|
+
try {
|
|
76
|
+
const config = await authManager.loadConfig();
|
|
77
|
+
locale = config.locale ?? detectLocale();
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
locale = detectLocale();
|
|
81
|
+
}
|
|
82
|
+
const levelInfo = getLevelInfo(stats.totalExp);
|
|
83
|
+
const tier = getTierForLevel(levelInfo.level);
|
|
84
|
+
const titleEmoji = getTierEmoji(tier.tierIndex);
|
|
85
|
+
const titleName = getTierTitle(tier.tierIndex, locale);
|
|
86
|
+
const line = renderStatusLine({
|
|
87
|
+
titleEmoji,
|
|
88
|
+
titleName,
|
|
89
|
+
level: levelInfo.level,
|
|
90
|
+
stars: getStars(levelInfo.level),
|
|
91
|
+
hpPercent,
|
|
92
|
+
resetMinutes,
|
|
93
|
+
mpPercent,
|
|
94
|
+
ctxPercent,
|
|
95
|
+
streakDays: stats.streakDays,
|
|
96
|
+
}, locale);
|
|
97
|
+
process.stdout.write(line);
|
|
98
|
+
}
|
|
99
|
+
main().catch(() => {
|
|
100
|
+
// Silent fail — don't break Claude Code status line
|
|
101
|
+
process.stdout.write('🎮 ...');
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=statusline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@myhpmp/cli",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "RPG-style gamified usage dashboard for AI coding tools — track your level, HP, MP, streaks, and more",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"myhpmp": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"build:publish": "tsc && node scripts/inject-config.js",
|
|
18
|
+
"prepublishOnly": "npm run build:publish",
|
|
19
|
+
"test": "vitest run",
|
|
20
|
+
"test:watch": "vitest"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"claude",
|
|
24
|
+
"claude-code",
|
|
25
|
+
"codex",
|
|
26
|
+
"openai",
|
|
27
|
+
"gamification",
|
|
28
|
+
"rpg",
|
|
29
|
+
"usage",
|
|
30
|
+
"dashboard",
|
|
31
|
+
"status-line",
|
|
32
|
+
"level",
|
|
33
|
+
"exp"
|
|
34
|
+
],
|
|
35
|
+
"author": "imironjin",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "https://github.com/myhpmp/cli.git"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://github.com/myhpmp/cli",
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18.0.0"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@myhpmp/core": "^1.0.1",
|
|
47
|
+
"@supabase/supabase-js": "^2.49.0",
|
|
48
|
+
"open": "^10.1.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^22.0.0",
|
|
52
|
+
"typescript": "^5.7.0",
|
|
53
|
+
"vitest": "^3.1.0"
|
|
54
|
+
}
|
|
55
|
+
}
|