codebuddy-stats 1.0.0 → 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.
@@ -2,8 +2,9 @@ import fs from 'node:fs/promises';
2
2
  import fsSync from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { createInterface } from 'node:readline';
5
- import { getProjectsDir, getSettingsPath } from './paths.js';
5
+ import { getIdeDataDir, getProjectsDir, getSettingsPath } from './paths.js';
6
6
  import { DEFAULT_MODEL_ID, getPricingForModel, tokensToCost } from './pricing.js';
7
+ import { loadWorkspaceMappings } from './workspace-resolver.js';
7
8
  export const BASE_DIR = getProjectsDir();
8
9
  async function loadModelFromSettings() {
9
10
  try {
@@ -72,29 +73,96 @@ function computeUsageCost(usage, modelId) {
72
73
  inputCost += tokensToCost(stats.promptTokens, pricing.prompt);
73
74
  }
74
75
  const outputCost = tokensToCost(stats.completionTokens, pricing.completion);
75
- return { cost: inputCost + outputCost, stats, modelId: modelId || DEFAULT_MODEL_ID };
76
+ return { cost: inputCost + outputCost, stats };
77
+ }
78
+ function computeMinDate(days) {
79
+ if (!days)
80
+ return null;
81
+ const d = new Date();
82
+ d.setDate(d.getDate() - days + 1);
83
+ d.setHours(0, 0, 0, 0);
84
+ return d.toISOString().split('T')[0] ?? null;
85
+ }
86
+ function toISODateString(value) {
87
+ if (typeof value !== 'string')
88
+ return null;
89
+ const d = new Date(value);
90
+ if (Number.isNaN(d.getTime()))
91
+ return null;
92
+ return d.toISOString().split('T')[0] ?? null;
93
+ }
94
+ async function pathExists(p) {
95
+ try {
96
+ await fs.access(p);
97
+ return true;
98
+ }
99
+ catch {
100
+ return false;
101
+ }
102
+ }
103
+ function ensureDailyModelStats(dailyData, date, project, modelId) {
104
+ dailyData[date] ??= {};
105
+ dailyData[date][project] ??= {};
106
+ dailyData[date][project][modelId] ??= {
107
+ cost: 0,
108
+ promptTokens: 0,
109
+ completionTokens: 0,
110
+ totalTokens: 0,
111
+ cacheHitTokens: 0,
112
+ cacheMissTokens: 0,
113
+ cacheWriteTokens: 0,
114
+ requests: 0,
115
+ };
116
+ return dailyData[date][project][modelId];
117
+ }
118
+ function finalizeAnalysis(defaultModelId, dailyData, modelTotals, projectTotals, grandTotal, workspaceMappings) {
119
+ const dailySummary = {};
120
+ for (const date of Object.keys(dailyData)) {
121
+ dailySummary[date] = { cost: 0, tokens: 0, requests: 0 };
122
+ for (const project of Object.values(dailyData[date] ?? {})) {
123
+ for (const model of Object.values(project ?? {})) {
124
+ dailySummary[date].cost += model.cost;
125
+ dailySummary[date].tokens += model.totalTokens;
126
+ dailySummary[date].requests += model.requests;
127
+ }
128
+ }
129
+ }
130
+ const topModelEntry = Object.entries(modelTotals).sort((a, b) => b[1].cost - a[1].cost)[0];
131
+ const topProjectEntry = Object.entries(projectTotals).sort((a, b) => b[1].cost - a[1].cost)[0];
132
+ const cacheHitRate = grandTotal.cacheHitTokens + grandTotal.cacheMissTokens > 0
133
+ ? grandTotal.cacheHitTokens / (grandTotal.cacheHitTokens + grandTotal.cacheMissTokens)
134
+ : 0;
135
+ return {
136
+ defaultModelId,
137
+ dailyData,
138
+ dailySummary,
139
+ modelTotals,
140
+ projectTotals,
141
+ grandTotal,
142
+ topModel: topModelEntry ? { id: topModelEntry[0], ...topModelEntry[1] } : null,
143
+ topProject: topProjectEntry ? { name: topProjectEntry[0], ...topProjectEntry[1] } : null,
144
+ cacheHitRate,
145
+ activeDays: Object.keys(dailyData).length,
146
+ workspaceMappings,
147
+ };
76
148
  }
77
149
  /**
78
150
  * 加载所有用量数据
79
151
  */
80
152
  export async function loadUsageData(options = {}) {
153
+ const source = options.source ?? 'code';
154
+ if (source === 'ide') {
155
+ return loadIdeUsageData(options);
156
+ }
157
+ return loadCodeUsageData(options);
158
+ }
159
+ async function loadCodeUsageData(options = {}) {
81
160
  const defaultModelId = await loadModelFromSettings();
82
161
  const jsonlFiles = await findJsonlFiles(BASE_DIR);
83
- // 计算日期过滤范围
84
- let minDate = null;
85
- if (options.days) {
86
- const d = new Date();
87
- d.setDate(d.getDate() - options.days + 1);
88
- d.setHours(0, 0, 0, 0);
89
- minDate = d.toISOString().split('T')[0] ?? null;
90
- }
91
- // 按日期 -> 项目 -> 模型 组织的数据
162
+ const minDate = computeMinDate(options.days);
92
163
  const dailyData = {};
93
- // 按模型汇总
94
164
  const modelTotals = {};
95
- // 按项目汇总
96
165
  const projectTotals = {};
97
- // 总计
98
166
  const grandTotal = {
99
167
  cost: 0,
100
168
  tokens: 0,
@@ -125,25 +193,13 @@ export async function loadUsageData(options = {}) {
125
193
  const date = dateObj.toISOString().split('T')[0];
126
194
  if (!date)
127
195
  continue;
128
- // 日期过滤
129
196
  if (minDate && date < minDate)
130
197
  continue;
131
198
  const recordModelId = record?.providerData?.model;
132
- const modelId = typeof recordModelId === 'string' ? recordModelId : null;
133
- const { cost, stats: usageStats, modelId: usedModelId } = computeUsageCost(usage, modelId);
134
- dailyData[date] ??= {};
135
- dailyData[date][projectName] ??= {};
136
- dailyData[date][projectName][usedModelId] ??= {
137
- cost: 0,
138
- promptTokens: 0,
139
- completionTokens: 0,
140
- totalTokens: 0,
141
- cacheHitTokens: 0,
142
- cacheMissTokens: 0,
143
- cacheWriteTokens: 0,
144
- requests: 0,
145
- };
146
- const dayStats = dailyData[date][projectName][usedModelId];
199
+ const modelFromRecord = typeof recordModelId === 'string' ? recordModelId : null;
200
+ const usedModelId = modelFromRecord || defaultModelId;
201
+ const { cost, stats: usageStats } = computeUsageCost(usage, usedModelId);
202
+ const dayStats = ensureDailyModelStats(dailyData, date, projectName, usedModelId);
147
203
  dayStats.cost += cost;
148
204
  dayStats.promptTokens += usageStats.promptTokens;
149
205
  dayStats.completionTokens += usageStats.completionTokens;
@@ -171,35 +227,212 @@ export async function loadUsageData(options = {}) {
171
227
  }
172
228
  }
173
229
  }
174
- // 计算每日汇总
175
- const dailySummary = {};
176
- for (const date of Object.keys(dailyData)) {
177
- dailySummary[date] = { cost: 0, tokens: 0, requests: 0 };
178
- for (const project of Object.values(dailyData[date] ?? {})) {
179
- for (const model of Object.values(project ?? {})) {
180
- dailySummary[date].cost += model.cost;
181
- dailySummary[date].tokens += model.totalTokens;
182
- dailySummary[date].requests += model.requests;
230
+ return finalizeAnalysis(defaultModelId, dailyData, modelTotals, projectTotals, grandTotal);
231
+ }
232
+ async function findIdeHistoryDirs() {
233
+ const root = getIdeDataDir();
234
+ const out = new Set();
235
+ let level1 = [];
236
+ try {
237
+ level1 = await fs.readdir(root, { withFileTypes: true });
238
+ }
239
+ catch {
240
+ return [];
241
+ }
242
+ for (const dirent of level1) {
243
+ if (!dirent.isDirectory())
244
+ continue;
245
+ const codeBuddyIdeDir = path.join(root, dirent.name, 'CodeBuddyIDE');
246
+ if (!(await pathExists(codeBuddyIdeDir)))
247
+ continue;
248
+ const directHistory = path.join(codeBuddyIdeDir, 'history');
249
+ if (await pathExists(directHistory)) {
250
+ out.add(directHistory);
251
+ continue;
252
+ }
253
+ let nested = [];
254
+ try {
255
+ nested = await fs.readdir(codeBuddyIdeDir, { withFileTypes: true });
256
+ }
257
+ catch {
258
+ continue;
259
+ }
260
+ for (const child of nested) {
261
+ if (!child.isDirectory())
262
+ continue;
263
+ const nestedHistory = path.join(codeBuddyIdeDir, child.name, 'history');
264
+ if (await pathExists(nestedHistory)) {
265
+ out.add(nestedHistory);
183
266
  }
184
267
  }
185
268
  }
186
- const topModelEntry = Object.entries(modelTotals).sort((a, b) => b[1].cost - a[1].cost)[0];
187
- const topProjectEntry = Object.entries(projectTotals).sort((a, b) => b[1].cost - a[1].cost)[0];
188
- // 计算缓存命中率
189
- const cacheHitRate = grandTotal.cacheHitTokens + grandTotal.cacheMissTokens > 0
190
- ? grandTotal.cacheHitTokens / (grandTotal.cacheHitTokens + grandTotal.cacheMissTokens)
191
- : 0;
192
- return {
193
- defaultModelId,
194
- dailyData,
195
- dailySummary,
196
- modelTotals,
197
- projectTotals,
198
- grandTotal,
199
- topModel: topModelEntry ? { id: topModelEntry[0], ...topModelEntry[1] } : null,
200
- topProject: topProjectEntry ? { name: topProjectEntry[0], ...topProjectEntry[1] } : null,
201
- cacheHitRate,
202
- activeDays: Object.keys(dailyData).length,
269
+ return [...out];
270
+ }
271
+ async function readJsonFile(filePath) {
272
+ const raw = await fs.readFile(filePath, 'utf8');
273
+ return JSON.parse(raw);
274
+ }
275
+ async function readFileHeadUtf8(filePath, bytes = 64 * 1024) {
276
+ const fh = await fs.open(filePath, 'r');
277
+ try {
278
+ const buf = Buffer.alloc(bytes);
279
+ const { bytesRead } = await fh.read(buf, 0, buf.length, 0);
280
+ return buf.toString('utf8', 0, bytesRead);
281
+ }
282
+ finally {
283
+ await fh.close();
284
+ }
285
+ }
286
+ function extractModelIdFromMessageHead(head) {
287
+ // extra 是一个转义的 JSON 字符串,形如: "extra": "{\"modelId\":\"gpt-5.1\",...}"
288
+ // 正则需要匹配包含转义字符的完整字符串
289
+ const extraMatch = head.match(/"extra"\s*:\s*"((?:[^"\\]|\\.)*)"/s);
290
+ if (!extraMatch?.[1])
291
+ return null;
292
+ try {
293
+ // extraMatch[1] 是转义后的内容,需要先解析为字符串
294
+ const extraStr = JSON.parse(`"${extraMatch[1]}"`);
295
+ const extra = JSON.parse(extraStr);
296
+ if (typeof extra.modelId === 'string' && extra.modelId)
297
+ return extra.modelId;
298
+ if (typeof extra.modelName === 'string' && extra.modelName)
299
+ return extra.modelName;
300
+ return null;
301
+ }
302
+ catch {
303
+ return null;
304
+ }
305
+ }
306
+ async function inferIdeModelIdForRequest(conversationDir, request, messageModelCache) {
307
+ const messages = Array.isArray(request.messages) ? request.messages : [];
308
+ for (let i = 0; i < Math.min(messages.length, 3); i++) {
309
+ const messageId = messages[i];
310
+ if (typeof messageId !== 'string' || !messageId)
311
+ continue;
312
+ const cached = messageModelCache.get(messageId);
313
+ if (cached)
314
+ return cached;
315
+ const msgPath = path.join(conversationDir, 'messages', `${messageId}.json`);
316
+ try {
317
+ const head = await readFileHeadUtf8(msgPath);
318
+ const modelId = extractModelIdFromMessageHead(head);
319
+ if (modelId) {
320
+ messageModelCache.set(messageId, modelId);
321
+ return modelId;
322
+ }
323
+ }
324
+ catch {
325
+ // ignore
326
+ }
327
+ }
328
+ return null;
329
+ }
330
+ async function loadIdeUsageData(options = {}) {
331
+ const defaultModelId = await loadModelFromSettings();
332
+ const minDate = computeMinDate(options.days);
333
+ // 加载工作区映射
334
+ const workspaceMappings = await loadWorkspaceMappings();
335
+ const dailyData = {};
336
+ const modelTotals = {};
337
+ const projectTotals = {};
338
+ const grandTotal = {
339
+ cost: 0,
340
+ tokens: 0,
341
+ requests: 0,
342
+ cacheHitTokens: 0,
343
+ cacheMissTokens: 0,
203
344
  };
345
+ const historyDirs = await findIdeHistoryDirs();
346
+ const messageModelCache = new Map();
347
+ for (const historyDir of historyDirs) {
348
+ let workspaces = [];
349
+ try {
350
+ workspaces = await fs.readdir(historyDir, { withFileTypes: true });
351
+ }
352
+ catch {
353
+ continue;
354
+ }
355
+ for (const ws of workspaces) {
356
+ if (!ws.isDirectory())
357
+ continue;
358
+ const workspaceHash = ws.name;
359
+ const workspaceDir = path.join(historyDir, workspaceHash);
360
+ const workspaceIndexPath = path.join(workspaceDir, 'index.json');
361
+ let convList = [];
362
+ try {
363
+ const parsed = (await readJsonFile(workspaceIndexPath));
364
+ if (Array.isArray(parsed)) {
365
+ convList = parsed;
366
+ }
367
+ else if (parsed && typeof parsed === 'object') {
368
+ const maybe = parsed.conversations ?? parsed.items ?? parsed.list;
369
+ if (Array.isArray(maybe))
370
+ convList = maybe;
371
+ }
372
+ }
373
+ catch {
374
+ continue;
375
+ }
376
+ for (const conv of convList) {
377
+ const conversationId = typeof conv.id === 'string' ? conv.id : null;
378
+ if (!conversationId)
379
+ continue;
380
+ const date = toISODateString(conv.lastMessageAt) ?? toISODateString(conv.createdAt);
381
+ if (!date)
382
+ continue;
383
+ if (minDate && date < minDate)
384
+ continue;
385
+ const conversationDir = path.join(workspaceDir, conversationId);
386
+ const convIndexPath = path.join(conversationDir, 'index.json');
387
+ let convIndex = null;
388
+ try {
389
+ convIndex = (await readJsonFile(convIndexPath));
390
+ }
391
+ catch {
392
+ continue;
393
+ }
394
+ const requests = Array.isArray(convIndex?.requests) ? convIndex.requests : [];
395
+ for (const req of requests) {
396
+ const usage = req?.usage;
397
+ const inputTokens = typeof usage?.inputTokens === 'number' ? usage.inputTokens : Number(usage?.inputTokens ?? 0);
398
+ const outputTokens = typeof usage?.outputTokens === 'number' ? usage.outputTokens : Number(usage?.outputTokens ?? 0);
399
+ const totalTokens = typeof usage?.totalTokens === 'number'
400
+ ? usage.totalTokens
401
+ : Number.isFinite(Number(usage?.totalTokens))
402
+ ? Number(usage?.totalTokens)
403
+ : inputTokens + outputTokens;
404
+ if (!Number.isFinite(inputTokens) || !Number.isFinite(outputTokens) || !Number.isFinite(totalTokens))
405
+ continue;
406
+ const inferredModelId = await inferIdeModelIdForRequest(conversationDir, req, messageModelCache);
407
+ const usedModelId = inferredModelId || defaultModelId;
408
+ const rawUsage = {
409
+ prompt_tokens: Math.max(0, inputTokens),
410
+ completion_tokens: Math.max(0, outputTokens),
411
+ total_tokens: Math.max(0, totalTokens),
412
+ };
413
+ const { cost, stats } = computeUsageCost(rawUsage, usedModelId);
414
+ const projectName = workspaceHash;
415
+ const dayStats = ensureDailyModelStats(dailyData, date, projectName, usedModelId);
416
+ dayStats.cost += cost;
417
+ dayStats.promptTokens += stats.promptTokens;
418
+ dayStats.completionTokens += stats.completionTokens;
419
+ dayStats.totalTokens += stats.totalTokens;
420
+ dayStats.requests += 1;
421
+ modelTotals[usedModelId] ??= { cost: 0, tokens: 0, requests: 0 };
422
+ modelTotals[usedModelId].cost += cost;
423
+ modelTotals[usedModelId].tokens += stats.totalTokens;
424
+ modelTotals[usedModelId].requests += 1;
425
+ projectTotals[projectName] ??= { cost: 0, tokens: 0, requests: 0 };
426
+ projectTotals[projectName].cost += cost;
427
+ projectTotals[projectName].tokens += stats.totalTokens;
428
+ projectTotals[projectName].requests += 1;
429
+ grandTotal.cost += cost;
430
+ grandTotal.tokens += stats.totalTokens;
431
+ grandTotal.requests += 1;
432
+ }
433
+ }
434
+ }
435
+ }
436
+ return finalizeAnalysis(defaultModelId, dailyData, modelTotals, projectTotals, grandTotal, workspaceMappings);
204
437
  }
205
438
  //# sourceMappingURL=data-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-loader.js","sourceRoot":"","sources":["../../src/lib/data-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-loader.js","sourceRoot":"","sources":["../../src/lib/data-loader.ts"],"names":[],"mappings":"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"}
package/dist/lib/paths.js CHANGED
@@ -20,6 +20,37 @@ export function getConfigDir() {
20
20
  // macOS 和 Linux 默认
21
21
  return path.join(os.homedir(), '.codebuddy');
22
22
  }
23
+ /**
24
+ * 获取 CodeBuddy IDE (CodeBuddyExtension) 数据目录
25
+ * - macOS: ~/Library/Application Support/CodeBuddyExtension/Data
26
+ * - Windows: %APPDATA%/CodeBuddyExtension/Data
27
+ * - Linux: $XDG_CONFIG_HOME/CodeBuddyExtension/Data 或 ~/.config/CodeBuddyExtension/Data
28
+ */
29
+ export function getIdeDataDir() {
30
+ if (process.platform === 'darwin') {
31
+ return path.join(os.homedir(), 'Library', 'Application Support', 'CodeBuddyExtension', 'Data');
32
+ }
33
+ if (process.platform === 'win32') {
34
+ const appData = process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming');
35
+ return path.join(appData, 'CodeBuddyExtension', 'Data');
36
+ }
37
+ const xdgConfigHome = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');
38
+ return path.join(xdgConfigHome, 'CodeBuddyExtension', 'Data');
39
+ }
40
+ /**
41
+ * 获取 CodeBuddy IDE 的 workspaceStorage 目录
42
+ */
43
+ export function getWorkspaceStorageDir() {
44
+ if (process.platform === 'darwin') {
45
+ return path.join(os.homedir(), 'Library', 'Application Support', 'CodeBuddy CN', 'User', 'workspaceStorage');
46
+ }
47
+ if (process.platform === 'win32') {
48
+ const appData = process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming');
49
+ return path.join(appData, 'CodeBuddy CN', 'User', 'workspaceStorage');
50
+ }
51
+ const configHome = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');
52
+ return path.join(configHome, 'CodeBuddy CN', 'User', 'workspaceStorage');
53
+ }
23
54
  /**
24
55
  * 获取项目数据目录
25
56
  */
@@ -32,11 +63,4 @@ export function getProjectsDir() {
32
63
  export function getSettingsPath() {
33
64
  return path.join(getConfigDir(), 'settings.json');
34
65
  }
35
- /**
36
- * 简化项目路径显示
37
- * 保持原始名称不变
38
- */
39
- export function shortenProjectName(name) {
40
- return name;
41
- }
42
66
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QACpF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;QACjD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,mBAAmB;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAA;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,CAAA;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"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"}