@tasszz2k/agentlens 0.3.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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +402 -0
  3. package/dist/ai.d.ts +5 -0
  4. package/dist/ai.d.ts.map +1 -0
  5. package/dist/ai.js +56 -0
  6. package/dist/ai.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +313 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config.d.ts +29 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +193 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/cost.d.ts +5 -0
  16. package/dist/cost.d.ts.map +1 -0
  17. package/dist/cost.js +362 -0
  18. package/dist/cost.js.map +1 -0
  19. package/dist/parse.d.ts +26 -0
  20. package/dist/parse.d.ts.map +1 -0
  21. package/dist/parse.js +391 -0
  22. package/dist/parse.js.map +1 -0
  23. package/dist/render.d.ts +8 -0
  24. package/dist/render.d.ts.map +1 -0
  25. package/dist/render.js +346 -0
  26. package/dist/render.js.map +1 -0
  27. package/dist/scan.d.ts +23 -0
  28. package/dist/scan.d.ts.map +1 -0
  29. package/dist/scan.js +457 -0
  30. package/dist/scan.js.map +1 -0
  31. package/dist/symlink.d.ts +5 -0
  32. package/dist/symlink.d.ts.map +1 -0
  33. package/dist/symlink.js +56 -0
  34. package/dist/symlink.js.map +1 -0
  35. package/dist/troubleshoot.d.ts +4 -0
  36. package/dist/troubleshoot.d.ts.map +1 -0
  37. package/dist/troubleshoot.js +193 -0
  38. package/dist/troubleshoot.js.map +1 -0
  39. package/dist/types.d.ts +103 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/ui/App.d.ts +16 -0
  44. package/dist/ui/App.d.ts.map +1 -0
  45. package/dist/ui/App.js +452 -0
  46. package/dist/ui/App.js.map +1 -0
  47. package/dist/ui/CommandBar.d.ts +8 -0
  48. package/dist/ui/CommandBar.d.ts.map +1 -0
  49. package/dist/ui/CommandBar.js +77 -0
  50. package/dist/ui/CommandBar.js.map +1 -0
  51. package/dist/ui/CostView.d.ts +14 -0
  52. package/dist/ui/CostView.d.ts.map +1 -0
  53. package/dist/ui/CostView.js +200 -0
  54. package/dist/ui/CostView.js.map +1 -0
  55. package/dist/ui/DetailPanel.d.ts +12 -0
  56. package/dist/ui/DetailPanel.d.ts.map +1 -0
  57. package/dist/ui/DetailPanel.js +224 -0
  58. package/dist/ui/DetailPanel.js.map +1 -0
  59. package/dist/ui/HelpBar.d.ts +7 -0
  60. package/dist/ui/HelpBar.d.ts.map +1 -0
  61. package/dist/ui/HelpBar.js +51 -0
  62. package/dist/ui/HelpBar.js.map +1 -0
  63. package/dist/ui/SearchBar.d.ts +9 -0
  64. package/dist/ui/SearchBar.d.ts.map +1 -0
  65. package/dist/ui/SearchBar.js +46 -0
  66. package/dist/ui/SearchBar.js.map +1 -0
  67. package/dist/ui/SettingsView.d.ts +16 -0
  68. package/dist/ui/SettingsView.d.ts.map +1 -0
  69. package/dist/ui/SettingsView.js +155 -0
  70. package/dist/ui/SettingsView.js.map +1 -0
  71. package/dist/ui/TreeView.d.ts +26 -0
  72. package/dist/ui/TreeView.d.ts.map +1 -0
  73. package/dist/ui/TreeView.js +240 -0
  74. package/dist/ui/TreeView.js.map +1 -0
  75. package/dist/ui/theme.d.ts +30 -0
  76. package/dist/ui/theme.d.ts.map +1 -0
  77. package/dist/ui/theme.js +31 -0
  78. package/dist/ui/theme.js.map +1 -0
  79. package/package.json +55 -0
package/dist/cost.js ADDED
@@ -0,0 +1,362 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ import { execFile } from 'node:child_process';
5
+ import { promisify } from 'node:util';
6
+ import { loadConfig } from './config.js';
7
+ const execFileAsync = promisify(execFile);
8
+ function localDateStr(d) {
9
+ const y = d.getFullYear();
10
+ const m = String(d.getMonth() + 1).padStart(2, '0');
11
+ const day = String(d.getDate()).padStart(2, '0');
12
+ return `${y}-${m}-${day}`;
13
+ }
14
+ const PRICING = {
15
+ opus: { input: 5, output: 25, cacheWrite: 6.25, cacheRead: 0.5 },
16
+ sonnet: { input: 3, output: 15, cacheWrite: 3.75, cacheRead: 0.3 },
17
+ haiku: { input: 1, output: 5, cacheWrite: 1.25, cacheRead: 0.1 },
18
+ };
19
+ function normalizeModelName(raw) {
20
+ const lower = raw.toLowerCase();
21
+ if (lower.includes('opus'))
22
+ return 'opus';
23
+ if (lower.includes('sonnet'))
24
+ return 'sonnet';
25
+ if (lower.includes('haiku'))
26
+ return 'haiku';
27
+ return 'sonnet';
28
+ }
29
+ async function collectJsonlPaths(dir) {
30
+ const result = [];
31
+ async function walk(d) {
32
+ let entries;
33
+ try {
34
+ entries = await fs.readdir(d, { withFileTypes: true });
35
+ }
36
+ catch {
37
+ return;
38
+ }
39
+ for (const e of entries) {
40
+ const full = path.join(d, e.name);
41
+ if (e.isDirectory()) {
42
+ await walk(full);
43
+ }
44
+ else if (e.name.endsWith('.jsonl')) {
45
+ result.push(full);
46
+ }
47
+ }
48
+ }
49
+ await walk(dir);
50
+ return result;
51
+ }
52
+ export async function fetchClaudeCodeCosts() {
53
+ const period = formatPeriod();
54
+ try {
55
+ const home = os.homedir();
56
+ const dirs = [
57
+ path.join(home, '.claude', 'projects'),
58
+ path.join(home, '.config', 'claude', 'projects'),
59
+ ];
60
+ const allPaths = [];
61
+ for (const d of dirs) {
62
+ try {
63
+ await fs.access(d);
64
+ allPaths.push(...(await collectJsonlPaths(d)));
65
+ }
66
+ catch {
67
+ // dir missing, skip
68
+ }
69
+ }
70
+ const now = new Date();
71
+ const monthStart = localDateStr(new Date(now.getFullYear(), now.getMonth(), 1));
72
+ const byModel = {};
73
+ for (const fp of allPaths) {
74
+ let content;
75
+ try {
76
+ content = await fs.readFile(fp, 'utf-8');
77
+ }
78
+ catch {
79
+ continue;
80
+ }
81
+ for (const line of content.split(/\n/)) {
82
+ const trimmed = line.trim();
83
+ if (!trimmed)
84
+ continue;
85
+ let row;
86
+ try {
87
+ row = JSON.parse(trimmed);
88
+ }
89
+ catch {
90
+ continue;
91
+ }
92
+ if (row.type !== 'assistant')
93
+ continue;
94
+ const ts = row.timestamp;
95
+ if (typeof ts !== 'string' || ts < monthStart)
96
+ continue;
97
+ const msg = row.message;
98
+ if (!msg || typeof msg !== 'object')
99
+ continue;
100
+ const usage = msg.usage;
101
+ if (!usage || typeof usage !== 'object')
102
+ continue;
103
+ const inputTokens = usage.input_tokens ?? 0;
104
+ const outputTokens = usage.output_tokens ?? 0;
105
+ const cacheWrite = usage.cache_creation_input_tokens ?? 0;
106
+ const cacheRead = usage.cache_read_input_tokens ?? 0;
107
+ const rawModel = msg.model ?? '';
108
+ const modelKey = normalizeModelName(rawModel);
109
+ if (!byModel[modelKey]) {
110
+ byModel[modelKey] = { input: 0, output: 0, cacheWrite: 0, cacheRead: 0 };
111
+ }
112
+ byModel[modelKey].input += inputTokens;
113
+ byModel[modelKey].output += outputTokens;
114
+ byModel[modelKey].cacheWrite += cacheWrite;
115
+ byModel[modelKey].cacheRead += cacheRead;
116
+ }
117
+ }
118
+ const models = [];
119
+ let totalCostUsd = 0;
120
+ let totalInput = 0;
121
+ let totalOutput = 0;
122
+ for (const [modelKey, tok] of Object.entries(byModel)) {
123
+ const p = PRICING[modelKey] ?? PRICING.sonnet;
124
+ const costUsd = (tok.input / 1_000_000) * p.input +
125
+ (tok.output / 1_000_000) * p.output +
126
+ (tok.cacheWrite / 1_000_000) * p.cacheWrite +
127
+ (tok.cacheRead / 1_000_000) * p.cacheRead;
128
+ totalCostUsd += costUsd;
129
+ totalInput += tok.input;
130
+ totalOutput += tok.output;
131
+ models.push({
132
+ model: `claude-${modelKey}`,
133
+ inputTokens: tok.input,
134
+ outputTokens: tok.output,
135
+ cacheWriteTokens: tok.cacheWrite,
136
+ cacheReadTokens: tok.cacheRead,
137
+ costUsd,
138
+ });
139
+ }
140
+ models.sort((a, b) => b.costUsd - a.costUsd);
141
+ return {
142
+ tool: 'Claude Code',
143
+ totalCostUsd,
144
+ totalInputTokens: totalInput,
145
+ totalOutputTokens: totalOutput,
146
+ models,
147
+ period,
148
+ };
149
+ }
150
+ catch (err) {
151
+ return {
152
+ tool: 'Claude Code',
153
+ totalCostUsd: 0,
154
+ totalInputTokens: 0,
155
+ totalOutputTokens: 0,
156
+ models: [],
157
+ period,
158
+ error: err instanceof Error ? err.message : String(err),
159
+ };
160
+ }
161
+ }
162
+ function formatPeriod() {
163
+ const now = new Date();
164
+ const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
165
+ const month = monthNames[now.getMonth()];
166
+ const day = now.getDate();
167
+ const year = now.getFullYear();
168
+ return `${month} 1 - ${month} ${day}, ${year}`;
169
+ }
170
+ const CURSOR_TIER_NAMES = {
171
+ 'gpt-4': 'premium',
172
+ 'gpt-3.5-turbo': 'standard',
173
+ 'gpt-4o': 'premium',
174
+ 'gpt-4o-mini': 'standard',
175
+ 'o1-mini': 'standard',
176
+ };
177
+ function normalizeCursorTierName(key) {
178
+ return CURSOR_TIER_NAMES[key] ?? key;
179
+ }
180
+ const CURSOR_DB_PATH = path.join(os.homedir(), 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'state.vscdb');
181
+ async function getCursorSessionToken() {
182
+ try {
183
+ const config = await loadConfig();
184
+ if (config.cursorSessionToken)
185
+ return config.cursorSessionToken;
186
+ }
187
+ catch {
188
+ // config read failed, continue to fallback
189
+ }
190
+ try {
191
+ await fs.access(CURSOR_DB_PATH);
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ try {
197
+ const { stdout } = await execFileAsync('sqlite3', [CURSOR_DB_PATH, "SELECT value FROM ItemTable WHERE key = 'cursorAuth/accessToken';"], { timeout: 5000 });
198
+ const token = stdout.trim();
199
+ if (token)
200
+ return token;
201
+ const { stdout: fallback } = await execFileAsync('sqlite3', [CURSOR_DB_PATH, "SELECT value FROM ItemTable WHERE key = 'WorkosCursorSessionToken';"], { timeout: 5000 });
202
+ return fallback.trim() || null;
203
+ }
204
+ catch {
205
+ return null;
206
+ }
207
+ }
208
+ export async function fetchCursorCosts() {
209
+ const period = formatPeriod();
210
+ try {
211
+ const token = await getCursorSessionToken();
212
+ if (!token) {
213
+ return {
214
+ tool: 'Cursor',
215
+ totalCostUsd: 0,
216
+ totalInputTokens: 0,
217
+ totalOutputTokens: 0,
218
+ models: [],
219
+ period,
220
+ error: 'No session token. Run: agentlens config --set-cursor-token <token>\n'
221
+ + ' To get your token: cursor.com > DevTools (F12) > Application > Cookies > WorkosCursorSessionToken',
222
+ };
223
+ }
224
+ const usageRes = await fetch('https://cursor.com/api/usage', {
225
+ headers: { Cookie: `WorkosCursorSessionToken=${token}` },
226
+ });
227
+ if (!usageRes.ok) {
228
+ const body = await usageRes.text().catch(() => '');
229
+ const parsed = (() => { try {
230
+ return JSON.parse(body);
231
+ }
232
+ catch {
233
+ return null;
234
+ } })();
235
+ const detail = parsed?.error ?? `HTTP ${usageRes.status}`;
236
+ const hint = detail.includes('origin') || detail.includes('authenticated')
237
+ ? '\n Try updating your token: agentlens config --set-cursor-token <token>\n'
238
+ + ' Get it from: cursor.com > DevTools (F12) > Application > Cookies > WorkosCursorSessionToken'
239
+ : '';
240
+ return {
241
+ tool: 'Cursor',
242
+ totalCostUsd: 0,
243
+ totalInputTokens: 0,
244
+ totalOutputTokens: 0,
245
+ models: [],
246
+ period,
247
+ error: `API error: ${detail}${hint}`,
248
+ };
249
+ }
250
+ const usageData = (await usageRes.json());
251
+ const models = [];
252
+ let totalTokens = 0;
253
+ let totalRequests = 0;
254
+ let maxRequests;
255
+ for (const [key, val] of Object.entries(usageData)) {
256
+ if (key === 'startOfMonth' || typeof val !== 'object' || !val)
257
+ continue;
258
+ const entry = val;
259
+ const numTokens = typeof entry.numTokens === 'number' ? entry.numTokens : 0;
260
+ const reqs = typeof entry.numRequests === 'number' ? entry.numRequests : 0;
261
+ const maxReq = typeof entry.maxRequestUsage === 'number' ? entry.maxRequestUsage : undefined;
262
+ totalTokens += numTokens;
263
+ totalRequests += reqs;
264
+ if (maxReq != null)
265
+ maxRequests = (maxRequests ?? 0) + maxReq;
266
+ models.push({
267
+ model: normalizeCursorTierName(key),
268
+ inputTokens: numTokens,
269
+ outputTokens: 0,
270
+ cacheWriteTokens: 0,
271
+ cacheReadTokens: 0,
272
+ costUsd: 0,
273
+ numRequests: reqs,
274
+ });
275
+ }
276
+ models.sort((a, b) => b.inputTokens - a.inputTokens);
277
+ let planType;
278
+ try {
279
+ const stripeRes = await fetch('https://cursor.com/api/auth/stripe', {
280
+ headers: { Cookie: `WorkosCursorSessionToken=${token}` },
281
+ });
282
+ if (stripeRes.ok) {
283
+ const stripe = (await stripeRes.json());
284
+ const mt = stripe.membershipType;
285
+ if (typeof mt === 'string' && mt !== 'free')
286
+ planType = mt;
287
+ }
288
+ }
289
+ catch {
290
+ // non-critical
291
+ }
292
+ return {
293
+ tool: 'Cursor',
294
+ totalCostUsd: 0,
295
+ totalInputTokens: totalTokens,
296
+ totalOutputTokens: 0,
297
+ totalRequests,
298
+ maxRequests,
299
+ planType,
300
+ models,
301
+ period,
302
+ };
303
+ }
304
+ catch (err) {
305
+ return {
306
+ tool: 'Cursor',
307
+ totalCostUsd: 0,
308
+ totalInputTokens: 0,
309
+ totalOutputTokens: 0,
310
+ models: [],
311
+ period,
312
+ error: err instanceof Error ? err.message : String(err),
313
+ };
314
+ }
315
+ }
316
+ export async function fetchAllCosts() {
317
+ const now = new Date();
318
+ const monthStart = localDateStr(new Date(now.getFullYear(), now.getMonth(), 1));
319
+ const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
320
+ const month = monthNames[now.getMonth()];
321
+ const monthLabel = `${month} ${now.getFullYear()}`;
322
+ const [claudeResult, cursorResult] = await Promise.allSettled([
323
+ fetchClaudeCodeCosts(),
324
+ fetchCursorCosts(),
325
+ ]);
326
+ const tools = [];
327
+ if (claudeResult.status === 'fulfilled') {
328
+ tools.push(claudeResult.value);
329
+ }
330
+ else {
331
+ tools.push({
332
+ tool: 'Claude Code',
333
+ totalCostUsd: 0,
334
+ totalInputTokens: 0,
335
+ totalOutputTokens: 0,
336
+ models: [],
337
+ period: formatPeriod(),
338
+ error: claudeResult.reason?.message ?? String(claudeResult.reason),
339
+ });
340
+ }
341
+ if (cursorResult.status === 'fulfilled') {
342
+ tools.push(cursorResult.value);
343
+ }
344
+ else {
345
+ tools.push({
346
+ tool: 'Cursor',
347
+ totalCostUsd: 0,
348
+ totalInputTokens: 0,
349
+ totalOutputTokens: 0,
350
+ models: [],
351
+ period: formatPeriod(),
352
+ error: cursorResult.reason?.message ?? String(cursorResult.reason),
353
+ });
354
+ }
355
+ return {
356
+ tools,
357
+ month: monthLabel,
358
+ monthStart,
359
+ fetchedAt: now.toISOString(),
360
+ };
361
+ }
362
+ //# sourceMappingURL=cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ConfigEntry, McpServerEntry } from './types.js';
2
+ export interface ParsedFile {
3
+ path: string;
4
+ frontmatter: Record<string, unknown>;
5
+ description?: string;
6
+ name?: string;
7
+ body: string;
8
+ lineCount: number;
9
+ }
10
+ export interface FileInfo {
11
+ path: string;
12
+ exists: boolean;
13
+ size: number;
14
+ mtime: Date;
15
+ lineCount: number;
16
+ }
17
+ export declare function parseFrontmatter(filePath: string): Promise<ParsedFile>;
18
+ export declare function parseSkillFile(filePath: string): Promise<ParsedFile>;
19
+ export declare function parseMdcFile(filePath: string): Promise<ParsedFile>;
20
+ export declare function parseCommandFile(filePath: string): Promise<ParsedFile>;
21
+ export declare function getFileInfo(filePath: string): Promise<FileInfo>;
22
+ export declare function parseMcpJson(filePath: string): Promise<McpServerEntry[]>;
23
+ export declare function parseMcpToml(filePath: string): Promise<McpServerEntry[]>;
24
+ export declare function parseHooksFromSettings(filePath: string): Promise<ConfigEntry[]>;
25
+ export declare function parseCursorUserRules(dbPath: string): Promise<ConfigEntry[]>;
26
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI9D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAgDD,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAY5E;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgB1E;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA6BxE;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgB5E;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoBrE;AA4DD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAiD9E;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAuB9E;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CAwFxB;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA4BjF"}