grok-cli-hurry-mode 1.0.1 → 1.0.3

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.
@@ -0,0 +1,124 @@
1
+ import { ToolResult } from "../../types/index.js";
2
+ import { ImportInfo, ExportInfo } from "./ast-parser.js";
3
+ export interface DependencyNode {
4
+ filePath: string;
5
+ absolutePath: string;
6
+ imports: ImportInfo[];
7
+ exports: ExportInfo[];
8
+ dependencies: string[];
9
+ dependents: string[];
10
+ isEntryPoint: boolean;
11
+ isLeaf: boolean;
12
+ circularDependencies: string[][];
13
+ }
14
+ export interface DependencyGraph {
15
+ nodes: Map<string, DependencyNode>;
16
+ entryPoints: string[];
17
+ leafNodes: string[];
18
+ circularDependencies: CircularDependency[];
19
+ unreachableFiles: string[];
20
+ statistics: DependencyStatistics;
21
+ }
22
+ export interface CircularDependency {
23
+ cycle: string[];
24
+ severity: 'warning' | 'error';
25
+ type: 'direct' | 'indirect';
26
+ }
27
+ export interface DependencyStatistics {
28
+ totalFiles: number;
29
+ totalDependencies: number;
30
+ averageDependencies: number;
31
+ maxDependencyDepth: number;
32
+ circularDependencyCount: number;
33
+ unreachableFileCount: number;
34
+ }
35
+ export interface ModuleAnalysis {
36
+ filePath: string;
37
+ externalDependencies: string[];
38
+ internalDependencies: string[];
39
+ circularImports: string[];
40
+ unusedImports: string[];
41
+ missingDependencies: string[];
42
+ duplicateImports: string[];
43
+ }
44
+ export declare class DependencyAnalyzerTool {
45
+ name: string;
46
+ description: string;
47
+ private astParser;
48
+ constructor();
49
+ execute(args: any): Promise<ToolResult>;
50
+ private findSourceFiles;
51
+ private buildDependencyGraph;
52
+ private resolveImportPaths;
53
+ private resolveRelativeImport;
54
+ private resolveAbsoluteImport;
55
+ private detectCircularDependencies;
56
+ private findUnreachableFiles;
57
+ private inferEntryPoints;
58
+ private calculateStatistics;
59
+ private calculateNodeDepth;
60
+ private serializeDependencyGraph;
61
+ private generateEdges;
62
+ analyzeModule(filePath: string): Promise<ModuleAnalysis>;
63
+ getSchema(): {
64
+ type: string;
65
+ properties: {
66
+ rootPath: {
67
+ type: string;
68
+ description: string;
69
+ default: string;
70
+ };
71
+ filePatterns: {
72
+ type: string;
73
+ items: {
74
+ type: string;
75
+ };
76
+ description: string;
77
+ default: string[];
78
+ };
79
+ excludePatterns: {
80
+ type: string;
81
+ items: {
82
+ type: string;
83
+ };
84
+ description: string;
85
+ default: string[];
86
+ };
87
+ includeExternals: {
88
+ type: string;
89
+ description: string;
90
+ default: boolean;
91
+ };
92
+ detectCircular: {
93
+ type: string;
94
+ description: string;
95
+ default: boolean;
96
+ };
97
+ findUnreachable: {
98
+ type: string;
99
+ description: string;
100
+ default: boolean;
101
+ };
102
+ generateGraph: {
103
+ type: string;
104
+ description: string;
105
+ default: boolean;
106
+ };
107
+ entryPoints: {
108
+ type: string;
109
+ items: {
110
+ type: string;
111
+ };
112
+ description: string;
113
+ default: never[];
114
+ };
115
+ maxDepth: {
116
+ type: string;
117
+ description: string;
118
+ default: number;
119
+ minimum: number;
120
+ maximum: number;
121
+ };
122
+ };
123
+ };
124
+ }
@@ -0,0 +1,469 @@
1
+ import { ASTParserTool } from "./ast-parser.js";
2
+ import fs from "fs-extra";
3
+ import path from "path";
4
+ import { glob } from "glob";
5
+ export class DependencyAnalyzerTool {
6
+ constructor() {
7
+ this.name = "dependency_analyzer";
8
+ this.description = "Analyze import/export dependencies, detect circular dependencies, and generate dependency graphs";
9
+ this.astParser = new ASTParserTool();
10
+ }
11
+ async execute(args) {
12
+ try {
13
+ const { rootPath = process.cwd(), filePatterns = ['**/*.{ts,tsx,js,jsx}'], excludePatterns = ['**/node_modules/**', '**/dist/**', '**/.git/**'], includeExternals = false, detectCircular = true, findUnreachable = true, generateGraph = false, entryPoints = [], maxDepth = 50 } = args;
14
+ if (!await fs.pathExists(rootPath)) {
15
+ throw new Error(`Root path does not exist: ${rootPath}`);
16
+ }
17
+ // Find all source files
18
+ const sourceFiles = await this.findSourceFiles(rootPath, filePatterns, excludePatterns);
19
+ // Build dependency graph
20
+ const dependencyGraph = await this.buildDependencyGraph(sourceFiles, rootPath, includeExternals, maxDepth);
21
+ // Detect circular dependencies
22
+ if (detectCircular) {
23
+ dependencyGraph.circularDependencies = this.detectCircularDependencies(dependencyGraph);
24
+ }
25
+ // Find unreachable files
26
+ if (findUnreachable) {
27
+ dependencyGraph.unreachableFiles = this.findUnreachableFiles(dependencyGraph, entryPoints.length > 0 ? entryPoints : this.inferEntryPoints(dependencyGraph));
28
+ }
29
+ // Calculate statistics
30
+ dependencyGraph.statistics = this.calculateStatistics(dependencyGraph);
31
+ // Format response
32
+ const result = {
33
+ rootPath,
34
+ totalFiles: sourceFiles.length,
35
+ entryPoints: dependencyGraph.entryPoints,
36
+ leafNodes: dependencyGraph.leafNodes,
37
+ statistics: dependencyGraph.statistics
38
+ };
39
+ if (detectCircular) {
40
+ result.circularDependencies = dependencyGraph.circularDependencies;
41
+ }
42
+ if (findUnreachable) {
43
+ result.unreachableFiles = dependencyGraph.unreachableFiles;
44
+ }
45
+ if (generateGraph) {
46
+ result.dependencyGraph = this.serializeDependencyGraph(dependencyGraph);
47
+ }
48
+ return {
49
+ success: true,
50
+ output: JSON.stringify(result, null, 2)
51
+ };
52
+ }
53
+ catch (error) {
54
+ return {
55
+ success: false,
56
+ error: error instanceof Error ? error.message : String(error)
57
+ };
58
+ }
59
+ }
60
+ async findSourceFiles(rootPath, filePatterns, excludePatterns) {
61
+ const allFiles = [];
62
+ for (const pattern of filePatterns) {
63
+ const files = await glob(pattern, {
64
+ cwd: rootPath,
65
+ absolute: true,
66
+ ignore: excludePatterns
67
+ });
68
+ allFiles.push(...files);
69
+ }
70
+ return [...new Set(allFiles)]; // Remove duplicates
71
+ }
72
+ async buildDependencyGraph(sourceFiles, rootPath, includeExternals, maxDepth) {
73
+ const graph = {
74
+ nodes: new Map(),
75
+ entryPoints: [],
76
+ leafNodes: [],
77
+ circularDependencies: [],
78
+ unreachableFiles: [],
79
+ statistics: {
80
+ totalFiles: 0,
81
+ totalDependencies: 0,
82
+ averageDependencies: 0,
83
+ maxDependencyDepth: 0,
84
+ circularDependencyCount: 0,
85
+ unreachableFileCount: 0
86
+ }
87
+ };
88
+ // Parse each file and extract imports/exports
89
+ for (const filePath of sourceFiles) {
90
+ try {
91
+ const parseResult = await this.astParser.execute({
92
+ filePath,
93
+ includeSymbols: false,
94
+ includeImports: true,
95
+ includeTree: false
96
+ });
97
+ if (!parseResult.success || !parseResult.output)
98
+ continue;
99
+ const parsed = JSON.parse(parseResult.output);
100
+ if (parsed.success && parsed.result) {
101
+ const imports = parsed.result.imports || [];
102
+ const exports = parsed.result.exports || [];
103
+ // Resolve import paths
104
+ const dependencies = await this.resolveImportPaths(imports, filePath, rootPath, includeExternals);
105
+ const node = {
106
+ filePath: path.relative(rootPath, filePath),
107
+ absolutePath: filePath,
108
+ imports,
109
+ exports,
110
+ dependencies,
111
+ dependents: [],
112
+ isEntryPoint: false,
113
+ isLeaf: dependencies.length === 0,
114
+ circularDependencies: []
115
+ };
116
+ graph.nodes.set(filePath, node);
117
+ }
118
+ }
119
+ catch (error) {
120
+ console.warn(`Failed to parse ${filePath}: ${error}`);
121
+ }
122
+ }
123
+ // Build reverse dependencies (dependents)
124
+ for (const [filePath, node] of graph.nodes) {
125
+ for (const dependency of node.dependencies) {
126
+ const depNode = graph.nodes.get(dependency);
127
+ if (depNode) {
128
+ depNode.dependents.push(filePath);
129
+ }
130
+ }
131
+ }
132
+ // Identify entry points and leaf nodes
133
+ for (const [filePath, node] of graph.nodes) {
134
+ node.isEntryPoint = node.dependents.length === 0;
135
+ node.isLeaf = node.dependencies.length === 0;
136
+ if (node.isEntryPoint) {
137
+ graph.entryPoints.push(filePath);
138
+ }
139
+ if (node.isLeaf) {
140
+ graph.leafNodes.push(filePath);
141
+ }
142
+ }
143
+ return graph;
144
+ }
145
+ async resolveImportPaths(imports, currentFile, rootPath, includeExternals) {
146
+ const dependencies = [];
147
+ const currentDir = path.dirname(currentFile);
148
+ for (const importInfo of imports) {
149
+ let resolvedPath = null;
150
+ if (importInfo.source.startsWith('.')) {
151
+ // Relative import
152
+ resolvedPath = await this.resolveRelativeImport(importInfo.source, currentDir);
153
+ }
154
+ else if (importInfo.source.startsWith('/')) {
155
+ // Absolute import from root
156
+ resolvedPath = await this.resolveAbsoluteImport(importInfo.source, rootPath);
157
+ }
158
+ else if (includeExternals) {
159
+ // External module
160
+ dependencies.push(importInfo.source);
161
+ continue;
162
+ }
163
+ else {
164
+ // Skip external modules if not including them
165
+ continue;
166
+ }
167
+ if (resolvedPath && await fs.pathExists(resolvedPath)) {
168
+ dependencies.push(resolvedPath);
169
+ }
170
+ }
171
+ return dependencies;
172
+ }
173
+ async resolveRelativeImport(importPath, currentDir) {
174
+ const basePath = path.resolve(currentDir, importPath);
175
+ // Try different extensions
176
+ const extensions = ['.ts', '.tsx', '.js', '.jsx', '.json'];
177
+ for (const ext of extensions) {
178
+ const fullPath = basePath + ext;
179
+ if (await fs.pathExists(fullPath)) {
180
+ return fullPath;
181
+ }
182
+ }
183
+ // Try index files
184
+ for (const ext of extensions) {
185
+ const indexPath = path.join(basePath, `index${ext}`);
186
+ if (await fs.pathExists(indexPath)) {
187
+ return indexPath;
188
+ }
189
+ }
190
+ return null;
191
+ }
192
+ async resolveAbsoluteImport(importPath, rootPath) {
193
+ const fullPath = path.join(rootPath, importPath.slice(1)); // Remove leading slash
194
+ return await this.resolveRelativeImport('.', path.dirname(fullPath));
195
+ }
196
+ detectCircularDependencies(graph) {
197
+ const circularDeps = [];
198
+ const visited = new Set();
199
+ const visiting = new Set();
200
+ const dfs = (filePath, path) => {
201
+ if (visiting.has(filePath)) {
202
+ // Found a cycle
203
+ const cycleStart = path.indexOf(filePath);
204
+ const cycle = path.slice(cycleStart).concat([filePath]);
205
+ circularDeps.push({
206
+ cycle: cycle.map(fp => graph.nodes.get(fp)?.filePath || fp),
207
+ severity: cycle.length <= 2 ? 'error' : 'warning',
208
+ type: cycle.length <= 2 ? 'direct' : 'indirect'
209
+ });
210
+ return;
211
+ }
212
+ if (visited.has(filePath)) {
213
+ return;
214
+ }
215
+ visiting.add(filePath);
216
+ const node = graph.nodes.get(filePath);
217
+ if (node) {
218
+ for (const dependency of node.dependencies) {
219
+ if (graph.nodes.has(dependency)) {
220
+ dfs(dependency, [...path, filePath]);
221
+ }
222
+ }
223
+ }
224
+ visiting.delete(filePath);
225
+ visited.add(filePath);
226
+ };
227
+ for (const filePath of graph.nodes.keys()) {
228
+ if (!visited.has(filePath)) {
229
+ dfs(filePath, []);
230
+ }
231
+ }
232
+ return circularDeps;
233
+ }
234
+ findUnreachableFiles(graph, entryPoints) {
235
+ const reachable = new Set();
236
+ const dfs = (filePath) => {
237
+ if (reachable.has(filePath)) {
238
+ return;
239
+ }
240
+ reachable.add(filePath);
241
+ const node = graph.nodes.get(filePath);
242
+ if (node) {
243
+ for (const dependency of node.dependencies) {
244
+ if (graph.nodes.has(dependency)) {
245
+ dfs(dependency);
246
+ }
247
+ }
248
+ }
249
+ };
250
+ // Start DFS from entry points
251
+ for (const entryPoint of entryPoints) {
252
+ if (graph.nodes.has(entryPoint)) {
253
+ dfs(entryPoint);
254
+ }
255
+ }
256
+ // Find unreachable files
257
+ const unreachable = [];
258
+ for (const filePath of graph.nodes.keys()) {
259
+ if (!reachable.has(filePath)) {
260
+ const node = graph.nodes.get(filePath);
261
+ unreachable.push(node?.filePath || filePath);
262
+ }
263
+ }
264
+ return unreachable;
265
+ }
266
+ inferEntryPoints(graph) {
267
+ // If no explicit entry points, use files with no dependents
268
+ if (graph.entryPoints.length > 0) {
269
+ return graph.entryPoints;
270
+ }
271
+ // Look for common entry point patterns
272
+ const commonEntryPatterns = [
273
+ /index\.(ts|js|tsx|jsx)$/,
274
+ /main\.(ts|js|tsx|jsx)$/,
275
+ /app\.(ts|js|tsx|jsx)$/,
276
+ /server\.(ts|js|tsx|jsx)$/
277
+ ];
278
+ const entryPoints = [];
279
+ for (const [filePath, node] of graph.nodes) {
280
+ const fileName = path.basename(filePath);
281
+ if (node.dependents.length === 0 ||
282
+ commonEntryPatterns.some(pattern => pattern.test(fileName))) {
283
+ entryPoints.push(filePath);
284
+ }
285
+ }
286
+ return entryPoints;
287
+ }
288
+ calculateStatistics(graph) {
289
+ const totalFiles = graph.nodes.size;
290
+ let totalDependencies = 0;
291
+ let maxDepth = 0;
292
+ for (const node of graph.nodes.values()) {
293
+ totalDependencies += node.dependencies.length;
294
+ // Calculate depth from entry points
295
+ const depth = this.calculateNodeDepth(node.absolutePath, graph);
296
+ maxDepth = Math.max(maxDepth, depth);
297
+ }
298
+ return {
299
+ totalFiles,
300
+ totalDependencies,
301
+ averageDependencies: totalFiles > 0 ? totalDependencies / totalFiles : 0,
302
+ maxDependencyDepth: maxDepth,
303
+ circularDependencyCount: graph.circularDependencies.length,
304
+ unreachableFileCount: graph.unreachableFiles.length
305
+ };
306
+ }
307
+ calculateNodeDepth(filePath, graph) {
308
+ const visited = new Set();
309
+ const dfs = (currentPath, depth) => {
310
+ if (visited.has(currentPath)) {
311
+ return depth;
312
+ }
313
+ visited.add(currentPath);
314
+ const node = graph.nodes.get(currentPath);
315
+ if (!node || node.dependencies.length === 0) {
316
+ return depth;
317
+ }
318
+ let maxChildDepth = depth;
319
+ for (const dependency of node.dependencies) {
320
+ if (graph.nodes.has(dependency)) {
321
+ const childDepth = dfs(dependency, depth + 1);
322
+ maxChildDepth = Math.max(maxChildDepth, childDepth);
323
+ }
324
+ }
325
+ return maxChildDepth;
326
+ };
327
+ return dfs(filePath, 0);
328
+ }
329
+ serializeDependencyGraph(graph) {
330
+ const nodes = [];
331
+ for (const [filePath, node] of graph.nodes) {
332
+ nodes.push({
333
+ id: filePath,
334
+ filePath: node.filePath,
335
+ dependencies: node.dependencies,
336
+ dependents: node.dependents,
337
+ isEntryPoint: node.isEntryPoint,
338
+ isLeaf: node.isLeaf,
339
+ importCount: node.imports.length,
340
+ exportCount: node.exports.length
341
+ });
342
+ }
343
+ return {
344
+ nodes,
345
+ edges: this.generateEdges(graph)
346
+ };
347
+ }
348
+ generateEdges(graph) {
349
+ const edges = [];
350
+ for (const [filePath, node] of graph.nodes) {
351
+ for (const dependency of node.dependencies) {
352
+ if (graph.nodes.has(dependency)) {
353
+ edges.push({
354
+ from: filePath,
355
+ to: dependency,
356
+ type: 'dependency'
357
+ });
358
+ }
359
+ }
360
+ }
361
+ return edges;
362
+ }
363
+ // Additional utility methods
364
+ async analyzeModule(filePath) {
365
+ const parseResult = await this.astParser.execute({
366
+ filePath,
367
+ includeSymbols: false,
368
+ includeImports: true,
369
+ includeTree: false
370
+ });
371
+ if (!parseResult.success || !parseResult.output) {
372
+ throw new Error(`Failed to parse module: ${filePath}`);
373
+ }
374
+ const parsed = JSON.parse(parseResult.output);
375
+ if (!parsed.success) {
376
+ throw new Error(`Failed to parse module: ${filePath}`);
377
+ }
378
+ const imports = parsed.result.imports || [];
379
+ const rootPath = process.cwd();
380
+ const externalDependencies = [];
381
+ const internalDependencies = [];
382
+ const duplicateImports = [];
383
+ const seenSources = new Set();
384
+ for (const importInfo of imports) {
385
+ if (seenSources.has(importInfo.source)) {
386
+ duplicateImports.push(importInfo.source);
387
+ }
388
+ else {
389
+ seenSources.add(importInfo.source);
390
+ }
391
+ if (importInfo.source.startsWith('.') || importInfo.source.startsWith('/')) {
392
+ const resolved = await this.resolveRelativeImport(importInfo.source, path.dirname(filePath));
393
+ if (resolved) {
394
+ internalDependencies.push(resolved);
395
+ }
396
+ }
397
+ else {
398
+ externalDependencies.push(importInfo.source);
399
+ }
400
+ }
401
+ return {
402
+ filePath: path.relative(rootPath, filePath),
403
+ externalDependencies,
404
+ internalDependencies,
405
+ circularImports: [], // TODO: Implement
406
+ unusedImports: [], // TODO: Implement with symbol usage analysis
407
+ missingDependencies: [], // TODO: Implement with file existence checks
408
+ duplicateImports
409
+ };
410
+ }
411
+ getSchema() {
412
+ return {
413
+ type: "object",
414
+ properties: {
415
+ rootPath: {
416
+ type: "string",
417
+ description: "Root path to analyze dependencies from",
418
+ default: "current working directory"
419
+ },
420
+ filePatterns: {
421
+ type: "array",
422
+ items: { type: "string" },
423
+ description: "Glob patterns for files to include",
424
+ default: ["**/*.{ts,tsx,js,jsx}"]
425
+ },
426
+ excludePatterns: {
427
+ type: "array",
428
+ items: { type: "string" },
429
+ description: "Glob patterns for files to exclude",
430
+ default: ["**/node_modules/**", "**/dist/**", "**/.git/**"]
431
+ },
432
+ includeExternals: {
433
+ type: "boolean",
434
+ description: "Include external module dependencies",
435
+ default: false
436
+ },
437
+ detectCircular: {
438
+ type: "boolean",
439
+ description: "Detect circular dependencies",
440
+ default: true
441
+ },
442
+ findUnreachable: {
443
+ type: "boolean",
444
+ description: "Find unreachable files from entry points",
445
+ default: true
446
+ },
447
+ generateGraph: {
448
+ type: "boolean",
449
+ description: "Generate serialized dependency graph",
450
+ default: false
451
+ },
452
+ entryPoints: {
453
+ type: "array",
454
+ items: { type: "string" },
455
+ description: "Explicit entry point files (if not provided, will be inferred)",
456
+ default: []
457
+ },
458
+ maxDepth: {
459
+ type: "integer",
460
+ description: "Maximum dependency depth to analyze",
461
+ default: 50,
462
+ minimum: 1,
463
+ maximum: 1000
464
+ }
465
+ }
466
+ };
467
+ }
468
+ }
469
+ //# sourceMappingURL=dependency-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-analyzer.js","sourceRoot":"","sources":["../../../src/tools/intelligence/dependency-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { ASTParserTool } from "./ast-parser.js";
2
+ export { SymbolSearchTool } from "./symbol-search.js";
3
+ export { DependencyAnalyzerTool } from "./dependency-analyzer.js";
4
+ export { CodeContextTool } from "./code-context.js";
5
+ export { RefactoringAssistantTool } from "./refactoring-assistant.js";
6
+ export type { ASTNode, ParseResult, SymbolInfo, ParameterInfo, ImportInfo, ExportInfo, ParseError } from "./ast-parser.js";
7
+ export type { SymbolReference, SymbolUsage, SearchResult, CrossReference } from "./symbol-search.js";
8
+ export type { DependencyNode, DependencyGraph, CircularDependency, DependencyStatistics, ModuleAnalysis } from "./dependency-analyzer.js";
9
+ export type { CodeContext, ContextualSymbol, ContextualDependency, CodeRelationship, SemanticContext, DesignPattern, UsagePattern, CodeMetrics, ComplexityMetrics, QualityMetrics, ProjectContext, ArchitectureInfo } from "./code-context.js";
10
+ export type { RefactoringOperation, RefactoringFileChange, TextChange, SafetyAnalysis, RenameRequest, ExtractFunctionRequest, ExtractedParameter, MoveRequest, InlineRequest } from "./refactoring-assistant.js";
@@ -0,0 +1,6 @@
1
+ export { ASTParserTool } from "./ast-parser.js";
2
+ export { SymbolSearchTool } from "./symbol-search.js";
3
+ export { DependencyAnalyzerTool } from "./dependency-analyzer.js";
4
+ export { CodeContextTool } from "./code-context.js";
5
+ export { RefactoringAssistantTool } from "./refactoring-assistant.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/intelligence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}