@myhpmp/cli 1.1.5 → 1.2.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/dist/commands/setup.js
CHANGED
|
@@ -6,29 +6,15 @@ import fs from 'node:fs/promises';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import os from 'node:os';
|
|
8
8
|
import readline from 'node:readline';
|
|
9
|
-
import { execSync } from 'node:child_process';
|
|
10
9
|
import { getProvider, listProviders } from '../adapter/index.js';
|
|
11
|
-
|
|
10
|
+
// Point hooks directly to the global npm package, so `npm i -g` auto-updates
|
|
11
|
+
const PKG_DIST_DIR = path.resolve(import.meta.dirname, '..');
|
|
12
|
+
const RUNTIME_DIR = path.join(os.homedir(), '.myhpmp');
|
|
12
13
|
function ask(rl, question) {
|
|
13
14
|
return new Promise((resolve) => rl.question(question, resolve));
|
|
14
15
|
}
|
|
15
|
-
async function
|
|
16
|
-
|
|
17
|
-
await fs.mkdir(DIST_DIR, { recursive: true });
|
|
18
|
-
async function copyRecursive(src, dest) {
|
|
19
|
-
const stat = await fs.stat(src);
|
|
20
|
-
if (stat.isDirectory()) {
|
|
21
|
-
await fs.mkdir(dest, { recursive: true });
|
|
22
|
-
const entries = await fs.readdir(src);
|
|
23
|
-
for (const entry of entries) {
|
|
24
|
-
await copyRecursive(path.join(src, entry), path.join(dest, entry));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
await fs.copyFile(src, dest);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
await copyRecursive(srcDist, DIST_DIR);
|
|
16
|
+
async function ensureRuntimeDir() {
|
|
17
|
+
await fs.mkdir(RUNTIME_DIR, { recursive: true });
|
|
32
18
|
}
|
|
33
19
|
async function loadJsonFile(filePath) {
|
|
34
20
|
try {
|
|
@@ -46,7 +32,7 @@ async function saveJsonFile(filePath, data) {
|
|
|
46
32
|
}
|
|
47
33
|
async function setupProvider(providerName) {
|
|
48
34
|
const provider = getProvider(providerName);
|
|
49
|
-
const config = provider.generateHookConfig(
|
|
35
|
+
const config = provider.generateHookConfig(PKG_DIST_DIR);
|
|
50
36
|
console.log(`\n⚙️ Configuring ${provider.name} hooks...`);
|
|
51
37
|
const settings = await loadJsonFile(config.settingsPath);
|
|
52
38
|
// Add hooks
|
|
@@ -100,23 +86,9 @@ async function main() {
|
|
|
100
86
|
process.exit(1);
|
|
101
87
|
return;
|
|
102
88
|
}
|
|
103
|
-
// Step 1:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
console.log(' ✅ Done');
|
|
107
|
-
// Step 2: Install runtime dependencies
|
|
108
|
-
console.log('\n📦 Installing dependencies...');
|
|
109
|
-
const pkgJson = { name: 'myhpmp-runtime', private: true, type: 'module', dependencies: { '@myhpmp/core': '^1.0.0', '@supabase/supabase-js': '^2' } };
|
|
110
|
-
const runtimeDir = path.join(os.homedir(), '.myhpmp');
|
|
111
|
-
await fs.writeFile(path.join(runtimeDir, 'package.json'), JSON.stringify(pkgJson, null, 2), 'utf-8');
|
|
112
|
-
try {
|
|
113
|
-
execSync('npm install --production --silent', { cwd: runtimeDir, stdio: 'pipe' });
|
|
114
|
-
console.log(' ✅ Done');
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
console.log(' ⚠️ Failed (sync features may not work)');
|
|
118
|
-
}
|
|
119
|
-
// Step 3: Configure each selected provider
|
|
89
|
+
// Step 1: Ensure runtime directory exists
|
|
90
|
+
await ensureRuntimeDir();
|
|
91
|
+
// Step 2: Configure each selected provider (hooks point to global npm package)
|
|
120
92
|
for (const providerName of selectedProviders) {
|
|
121
93
|
await setupProvider(providerName);
|
|
122
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,17 +9,21 @@ import path from 'node:path';
|
|
|
9
9
|
const DATA_DIR = path.join(os.homedir(), '.myhpmp');
|
|
10
10
|
const MAX_INPUT_SIZE = 1_000_000; // 1MB
|
|
11
11
|
const LAST_TOKENS_PATH = path.join(DATA_DIR, 'last-tokens.json');
|
|
12
|
-
async function
|
|
12
|
+
async function getTokenState() {
|
|
13
13
|
try {
|
|
14
14
|
const raw = await fs.readFile(LAST_TOKENS_PATH, 'utf-8');
|
|
15
|
-
|
|
15
|
+
const data = JSON.parse(raw);
|
|
16
|
+
return {
|
|
17
|
+
tokens: Number(data.tokens) || 0,
|
|
18
|
+
pendingTokens: Number(data.pendingTokens) || 0,
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
21
|
catch {
|
|
18
|
-
return 0;
|
|
22
|
+
return { tokens: 0, pendingTokens: 0 };
|
|
19
23
|
}
|
|
20
24
|
}
|
|
21
|
-
async function
|
|
22
|
-
await fs.writeFile(LAST_TOKENS_PATH, JSON.stringify(
|
|
25
|
+
async function saveTokenState(state) {
|
|
26
|
+
await fs.writeFile(LAST_TOKENS_PATH, JSON.stringify(state), 'utf-8');
|
|
23
27
|
}
|
|
24
28
|
async function main() {
|
|
25
29
|
let input = '';
|
|
@@ -57,24 +61,34 @@ async function main() {
|
|
|
57
61
|
}
|
|
58
62
|
if (currentTotal <= 0)
|
|
59
63
|
return;
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
// First call in session —
|
|
63
|
-
if (previousTotal === 0)
|
|
64
|
+
const state = await getTokenState();
|
|
65
|
+
const previousTotal = state.tokens;
|
|
66
|
+
// First call in session — set baseline only
|
|
67
|
+
if (previousTotal === 0) {
|
|
68
|
+
await saveTokenState({ tokens: currentTotal, pendingTokens: 0 });
|
|
64
69
|
return;
|
|
70
|
+
}
|
|
65
71
|
const deltaTokens = currentTotal - previousTotal;
|
|
66
|
-
if (deltaTokens <= 0)
|
|
72
|
+
if (deltaTokens <= 0) {
|
|
73
|
+
await saveTokenState({ tokens: currentTotal, pendingTokens: state.pendingTokens });
|
|
67
74
|
return;
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
}
|
|
76
|
+
// Accumulate small deltas until they reach the EXP threshold
|
|
77
|
+
const accumulated = state.pendingTokens + deltaTokens;
|
|
78
|
+
const exp = Math.min(calcTokenExp(accumulated), 1000);
|
|
79
|
+
if (exp <= 0) {
|
|
80
|
+
await saveTokenState({ tokens: currentTotal, pendingTokens: accumulated });
|
|
70
81
|
return;
|
|
82
|
+
}
|
|
83
|
+
// Flush: log EXP and reset pending
|
|
84
|
+
await saveTokenState({ tokens: currentTotal, pendingTokens: 0 });
|
|
71
85
|
const store = new LocalStore(DATA_DIR);
|
|
72
86
|
const stats = await store.load();
|
|
73
87
|
stats.totalExp += exp;
|
|
74
88
|
stats.level = getLevelInfo(stats.totalExp).level;
|
|
75
89
|
stats.updatedAt = new Date().toISOString();
|
|
76
90
|
await store.save(stats);
|
|
77
|
-
await logExp(exp, 'token_usage', { tokens:
|
|
91
|
+
await logExp(exp, 'token_usage', { tokens: accumulated, provider: 'claude' });
|
|
78
92
|
// Sync every 5 minutes
|
|
79
93
|
await autoSyncIfDue();
|
|
80
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/hooks/claude/post-tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,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;AACpD,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,MAAM;AACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/hooks/claude/post-tool-use.ts"],"names":[],"mappings":"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"}
|