@vibe-cafe/vibe-usage 0.1.0 → 0.1.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/package.json +1 -1
- package/src/hooks.js +1 -1
- package/src/init.js +2 -2
- package/src/sync.js +19 -9
package/package.json
CHANGED
package/src/hooks.js
CHANGED
|
@@ -2,7 +2,7 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
|
2
2
|
import { join, dirname } from 'node:path';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
|
|
5
|
-
const SYNC_CMD = 'npx vibe-usage sync 2>/dev/null &';
|
|
5
|
+
const SYNC_CMD = 'npx @vibe-cafe/vibe-usage sync 2>/dev/null &';
|
|
6
6
|
|
|
7
7
|
function hasVibeUsageHook(hooks) {
|
|
8
8
|
if (!Array.isArray(hooks)) return false;
|
package/src/init.js
CHANGED
|
@@ -86,7 +86,7 @@ export async function runInit() {
|
|
|
86
86
|
console.log(`Hooks installed for: ${hooked.join(', ')}`);
|
|
87
87
|
}
|
|
88
88
|
for (const name of manualOnly) {
|
|
89
|
-
console.log(`${name} detected — use \`npx vibe-usage sync\` to sync manually.`);
|
|
89
|
+
console.log(`${name} detected — use \`npx @vibe-cafe/vibe-usage sync\` to sync manually.`);
|
|
90
90
|
}
|
|
91
91
|
if (tools.length === 0) {
|
|
92
92
|
console.log('No AI coding tools detected. Install one and re-run init.');
|
|
@@ -95,5 +95,5 @@ export async function runInit() {
|
|
|
95
95
|
console.log('\nRunning initial sync...');
|
|
96
96
|
await runSync();
|
|
97
97
|
|
|
98
|
-
console.log(
|
|
98
|
+
console.log(`\nSetup complete! View your dashboard at: ${apiUrl}/usage`);
|
|
99
99
|
}
|
package/src/sync.js
CHANGED
|
@@ -2,10 +2,12 @@ import { loadConfig, saveConfig } from './config.js';
|
|
|
2
2
|
import { ingest } from './api.js';
|
|
3
3
|
import { parsers } from './parsers/index.js';
|
|
4
4
|
|
|
5
|
+
const BATCH_SIZE = 500;
|
|
6
|
+
|
|
5
7
|
export async function runSync() {
|
|
6
8
|
const config = loadConfig();
|
|
7
9
|
if (!config?.apiKey) {
|
|
8
|
-
console.error('Not configured. Run `npx vibe-usage init` first.');
|
|
10
|
+
console.error('Not configured. Run `npx @vibe-cafe/vibe-usage init` first.');
|
|
9
11
|
process.exit(1);
|
|
10
12
|
}
|
|
11
13
|
|
|
@@ -28,19 +30,27 @@ export async function runSync() {
|
|
|
28
30
|
return 0;
|
|
29
31
|
}
|
|
30
32
|
|
|
33
|
+
const apiUrl = config.apiUrl || 'https://vibecafe.ai';
|
|
34
|
+
let totalIngested = 0;
|
|
35
|
+
|
|
31
36
|
try {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
config.apiKey,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
for (let i = 0; i < allBuckets.length; i += BATCH_SIZE) {
|
|
38
|
+
const batch = allBuckets.slice(i, i + BATCH_SIZE);
|
|
39
|
+
const result = await ingest(apiUrl, config.apiKey, batch);
|
|
40
|
+
totalIngested += result.ingested ?? batch.length;
|
|
41
|
+
|
|
42
|
+
if (allBuckets.length > BATCH_SIZE) {
|
|
43
|
+
process.stdout.write(` ${Math.min(i + BATCH_SIZE, allBuckets.length)}/${allBuckets.length} buckets...\r`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
37
47
|
config.lastSync = new Date().toISOString();
|
|
38
48
|
saveConfig(config);
|
|
39
|
-
console.log(`Synced ${
|
|
40
|
-
return
|
|
49
|
+
console.log(`Synced ${totalIngested} buckets.`);
|
|
50
|
+
return totalIngested;
|
|
41
51
|
} catch (err) {
|
|
42
52
|
if (err.message === 'UNAUTHORIZED') {
|
|
43
|
-
console.error('Invalid API key. Run `npx vibe-usage init` to reconfigure.');
|
|
53
|
+
console.error('Invalid API key. Run `npx @vibe-cafe/vibe-usage init` to reconfigure.');
|
|
44
54
|
process.exit(1);
|
|
45
55
|
}
|
|
46
56
|
console.error(`Sync failed: ${err.message}`);
|