@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
@@ -0,0 +1,193 @@
1
+ import fs from 'node:fs/promises';
2
+ const STALE_DAYS = 180;
3
+ const STALE_MS = STALE_DAYS * 24 * 60 * 60 * 1000;
4
+ function collectAllEntries(result) {
5
+ const out = [];
6
+ for (const tc of [...result.global, ...result.project]) {
7
+ for (const entry of tc.entries) {
8
+ out.push({ entry, tc });
9
+ }
10
+ }
11
+ return out;
12
+ }
13
+ export async function runChecks(result) {
14
+ const diagnostics = [];
15
+ const all = collectAllEntries(result);
16
+ for (const { entry } of all) {
17
+ if (entry.symlink) {
18
+ try {
19
+ await fs.access(entry.symlink.resolved, fs.constants.R_OK);
20
+ }
21
+ catch {
22
+ diagnostics.push({
23
+ severity: 'error',
24
+ code: 'broken-symlink',
25
+ message: `Broken symlink: target does not exist`,
26
+ path: entry.path,
27
+ details: `Points to: ${entry.symlink.resolved}`,
28
+ });
29
+ }
30
+ }
31
+ }
32
+ const canonical = result.global.filter((tc) => tc.tool === 'Canonical' && tc.category === 'Skills');
33
+ const canonicalNames = new Set();
34
+ for (const tc of canonical) {
35
+ for (const e of tc.entries) {
36
+ canonicalNames.add(e.name);
37
+ }
38
+ }
39
+ const claudeSkills = result.global.filter((tc) => tc.tool === 'Claude Code' && tc.category === 'Skills');
40
+ const cursorSkills = result.global.filter((tc) => tc.tool === 'Cursor' && tc.category === 'Skills');
41
+ const claudeNames = new Set();
42
+ const cursorNames = new Set();
43
+ for (const tc of claudeSkills) {
44
+ for (const e of tc.entries)
45
+ claudeNames.add(e.name);
46
+ }
47
+ for (const tc of cursorSkills) {
48
+ for (const e of tc.entries)
49
+ cursorNames.add(e.name);
50
+ }
51
+ for (const name of canonicalNames) {
52
+ const inClaude = claudeNames.has(name);
53
+ const inCursor = cursorNames.has(name);
54
+ if (inClaude && !inCursor) {
55
+ diagnostics.push({
56
+ severity: 'warn',
57
+ code: 'skill-gap',
58
+ message: `Skill "${name}" is in Claude Code but missing from Cursor`,
59
+ details: `Installed: Claude Code. Missing: Cursor`,
60
+ });
61
+ }
62
+ else if (!inClaude && inCursor) {
63
+ diagnostics.push({
64
+ severity: 'warn',
65
+ code: 'skill-gap',
66
+ message: `Skill "${name}" is in Cursor but missing from Claude Code`,
67
+ details: `Installed: Cursor. Missing: Claude Code`,
68
+ });
69
+ }
70
+ }
71
+ for (const { entry } of all) {
72
+ if (!entry.exists)
73
+ continue;
74
+ try {
75
+ const stat = await fs.stat(entry.path);
76
+ const age = Date.now() - stat.mtimeMs;
77
+ if (age > STALE_MS) {
78
+ diagnostics.push({
79
+ severity: 'warn',
80
+ code: 'stale-config',
81
+ message: `Config file not modified in over ${STALE_DAYS} days`,
82
+ path: entry.path,
83
+ details: `Last modified: ${new Date(stat.mtimeMs).toISOString()}`,
84
+ });
85
+ }
86
+ }
87
+ catch {
88
+ }
89
+ }
90
+ const projectConfigs = result.project;
91
+ const hasCursorrules = projectConfigs.some((tc) => tc.entries.some((e) => e.path.endsWith('.cursorrules')));
92
+ const hasCursorRulesDir = projectConfigs.some((tc) => tc.category === 'Rules' && tc.entries.some((e) => e.path.endsWith('.mdc')));
93
+ if (hasCursorrules && hasCursorRulesDir) {
94
+ diagnostics.push({
95
+ severity: 'warn',
96
+ code: 'stale-config',
97
+ message: 'Deprecated .cursorrules exists alongside .cursor/rules/*.mdc',
98
+ path: result.projectPath,
99
+ details: 'Consider migrating to .cursor/rules/ format',
100
+ });
101
+ }
102
+ for (const { entry } of all) {
103
+ if (!entry.exists)
104
+ continue;
105
+ try {
106
+ await fs.access(entry.path, fs.constants.R_OK);
107
+ }
108
+ catch (err) {
109
+ const code = err && typeof err === 'object' && 'code' in err ? err.code : '';
110
+ if (code === 'EACCES') {
111
+ diagnostics.push({
112
+ severity: 'info',
113
+ code: 'permission-denied',
114
+ message: 'Cannot read file (permission denied)',
115
+ path: entry.path,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ const projectContextPaths = [];
121
+ const projectRulesPaths = [];
122
+ for (const tc of projectConfigs) {
123
+ if (tc.category === 'Context') {
124
+ for (const e of tc.entries)
125
+ projectContextPaths.push(e.path);
126
+ }
127
+ else if (tc.category === 'Rules') {
128
+ for (const e of tc.entries)
129
+ projectRulesPaths.push(e.path);
130
+ }
131
+ }
132
+ const hasClaudeMd = projectContextPaths.some((p) => p.endsWith('CLAUDE.md'));
133
+ const hasAgentsMd = projectContextPaths.some((p) => p.endsWith('AGENTS.md'));
134
+ if (hasClaudeMd && hasAgentsMd) {
135
+ diagnostics.push({
136
+ severity: 'info',
137
+ code: 'conflict',
138
+ message: 'Multiple context files: CLAUDE.md and AGENTS.md may conflict',
139
+ path: result.projectPath,
140
+ details: 'Claude CLI uses CLAUDE.md; multi-agent setups use AGENTS.md',
141
+ });
142
+ }
143
+ const hasCursorrulesFile = projectRulesPaths.some((p) => p.endsWith('.cursorrules'));
144
+ const hasMdcRules = projectRulesPaths.some((p) => p.endsWith('.mdc'));
145
+ if (hasCursorrulesFile && hasMdcRules) {
146
+ diagnostics.push({
147
+ severity: 'info',
148
+ code: 'conflict',
149
+ message: 'Multiple rules sources: .cursorrules and .cursor/rules/*.mdc',
150
+ path: result.projectPath,
151
+ details: 'Both may be applied; consider consolidating',
152
+ });
153
+ }
154
+ const mcpConfigs = [...result.global, ...result.project].filter(tc => tc.category === 'MCP Servers');
155
+ const mcpUrlMap = new Map();
156
+ for (const tc of mcpConfigs) {
157
+ for (const entry of tc.entries) {
158
+ const url = entry.frontmatter?.url;
159
+ if (typeof url === 'string') {
160
+ const scope = result.project.includes(tc) ? ' (project)' : ' (global)';
161
+ const tools = mcpUrlMap.get(url) ?? [];
162
+ tools.push(`${tc.tool}${scope}`);
163
+ mcpUrlMap.set(url, tools);
164
+ }
165
+ }
166
+ }
167
+ for (const [url, tools] of mcpUrlMap) {
168
+ if (tools.length > 1) {
169
+ diagnostics.push({
170
+ severity: 'info',
171
+ code: 'mcp-overlap',
172
+ message: 'MCP server URL configured in multiple tools',
173
+ path: url,
174
+ details: `Found in: ${tools.join(', ')}`,
175
+ });
176
+ }
177
+ }
178
+ return diagnostics;
179
+ }
180
+ export function formatDiagnosticsForAI(diagnostics) {
181
+ return diagnostics
182
+ .map((d) => {
183
+ const severity = d.severity.toUpperCase();
184
+ const lines = [`[${severity}] (${d.code}) ${d.message}`];
185
+ if (d.path)
186
+ lines.push(` Path: ${d.path}`);
187
+ if (d.details)
188
+ lines.push(` Details: ${d.details}`);
189
+ return lines.join('\n');
190
+ })
191
+ .join('\n\n');
192
+ }
193
+ //# sourceMappingURL=troubleshoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"troubleshoot.js","sourceRoot":"","sources":["../src/troubleshoot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ export interface AgentLensConfig {
2
+ roots: string[];
3
+ disabledTools?: string[];
4
+ disabledCategories?: string[];
5
+ cursorSessionToken?: string;
6
+ }
7
+ export interface ProjectScan {
8
+ path: string;
9
+ configs: ToolConfig[];
10
+ }
11
+ export interface ScanResult {
12
+ global: ToolConfig[];
13
+ project: ToolConfig[];
14
+ projectPath: string;
15
+ projects?: ProjectScan[];
16
+ }
17
+ export interface ToolConfig {
18
+ tool: string;
19
+ category: string;
20
+ label?: string;
21
+ basePath: string;
22
+ exists: boolean;
23
+ entries: ConfigEntry[];
24
+ }
25
+ export interface ConfigEntry {
26
+ name: string;
27
+ path: string;
28
+ exists: boolean;
29
+ symlink?: SymlinkInfo;
30
+ frontmatter?: Record<string, unknown>;
31
+ description?: string;
32
+ }
33
+ export interface SymlinkInfo {
34
+ raw: string;
35
+ resolved: string;
36
+ isRelative: boolean;
37
+ chain: string[];
38
+ }
39
+ export interface McpServerEntry {
40
+ name: string;
41
+ type: 'http' | 'stdio';
42
+ url?: string;
43
+ command?: string;
44
+ args?: string[];
45
+ hasAuth: boolean;
46
+ }
47
+ export interface Diagnostic {
48
+ severity: 'error' | 'warn' | 'info';
49
+ code: string;
50
+ message: string;
51
+ path?: string;
52
+ details?: string;
53
+ }
54
+ export interface LinkedEntry {
55
+ tool: string;
56
+ scope: string;
57
+ category: string;
58
+ path: string;
59
+ symlinkTarget?: string;
60
+ isSelf: boolean;
61
+ }
62
+ export interface TreeNode {
63
+ id: string;
64
+ label: string;
65
+ type: 'scope' | 'tool' | 'category' | 'entry' | 'symlink-target';
66
+ depth: number;
67
+ expanded: boolean;
68
+ hasChildren: boolean;
69
+ children: TreeNode[];
70
+ data?: ToolConfig | ConfigEntry;
71
+ pathLabel?: string;
72
+ symlinkTarget?: string;
73
+ description?: string;
74
+ diagnostic?: Diagnostic;
75
+ }
76
+ export interface CostReport {
77
+ tools: ToolCostSummary[];
78
+ month: string;
79
+ monthStart: string;
80
+ fetchedAt: string;
81
+ }
82
+ export interface ToolCostSummary {
83
+ tool: string;
84
+ totalCostUsd: number;
85
+ totalInputTokens: number;
86
+ totalOutputTokens: number;
87
+ totalRequests?: number;
88
+ maxRequests?: number;
89
+ planType?: string;
90
+ models: ModelCostBreakdown[];
91
+ period: string;
92
+ error?: string;
93
+ }
94
+ export interface ModelCostBreakdown {
95
+ model: string;
96
+ inputTokens: number;
97
+ outputTokens: number;
98
+ cacheWriteTokens: number;
99
+ cacheReadTokens: number;
100
+ costUsd: number;
101
+ numRequests?: number;
102
+ }
103
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { ScanResult, TreeNode, Diagnostic, LinkedEntry } from '../types.js';
2
+ export declare function buildTreeFromScan(result: ScanResult): TreeNode[];
3
+ export declare function buildCrossRefIndex(result: ScanResult): Map<string, LinkedEntry[]>;
4
+ interface AppProps {
5
+ scanResult: ScanResult;
6
+ diagnostics: Diagnostic[];
7
+ mode: 'scan' | 'where';
8
+ initialDisabledTools?: string[];
9
+ initialDisabledCategories?: string[];
10
+ initialPage?: 'scan' | 'cost';
11
+ configRoots?: string[];
12
+ hasCursorToken?: boolean;
13
+ }
14
+ export default function App({ scanResult, diagnostics, mode, initialDisabledTools, initialDisabledCategories, initialPage, configRoots, hasCursorToken, }: AppProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAA2B,UAAU,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AA0CtH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,EAAE,CA4MhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CA+BjF;AAgCD,UAAU,QAAQ;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC1B,UAAU,EACV,WAAW,EACX,IAAI,EACJ,oBAAoB,EACpB,yBAAyB,EACzB,WAAW,EACX,WAAW,EACX,cAAc,GACf,EAAE,QAAQ,2CAwSV"}