@defai.digital/ax-cli 3.15.0 → 3.15.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.
Files changed (49) hide show
  1. package/README.md +18 -2
  2. package/dist/mcp/client-v2.js +4 -2
  3. package/dist/mcp/client-v2.js.map +1 -1
  4. package/dist/mcp/config.js +26 -2
  5. package/dist/mcp/config.js.map +1 -1
  6. package/dist/mcp/zai-templates.js +4 -0
  7. package/dist/mcp/zai-templates.js.map +1 -1
  8. package/dist/schemas/settings-schemas.js +4 -0
  9. package/dist/schemas/settings-schemas.js.map +1 -1
  10. package/package.json +1 -1
  11. package/.ax-cli/CUSTOM.md +0 -97
  12. package/.ax-cli/auto-accept-audit.json +0 -1302
  13. package/.ax-cli/index.json +0 -43
  14. package/.ax-cli/memory.json +0 -62
  15. package/.ax-cli/settings.json +0 -39
  16. package/ax.config.json +0 -304
  17. package/dist/analyzers/ast/tree-sitter-parser.d.ts +0 -134
  18. package/dist/analyzers/ast/tree-sitter-parser.js +0 -730
  19. package/dist/analyzers/ast/tree-sitter-parser.js.map +0 -1
  20. package/dist/mcp/config-detector-v2.d.ts +0 -83
  21. package/dist/mcp/config-detector-v2.js +0 -328
  22. package/dist/mcp/config-detector-v2.js.map +0 -1
  23. package/dist/mcp/config-migrator-v2.d.ts +0 -89
  24. package/dist/mcp/config-migrator-v2.js +0 -288
  25. package/dist/mcp/config-migrator-v2.js.map +0 -1
  26. package/dist/mcp/config-v2.d.ts +0 -111
  27. package/dist/mcp/config-v2.js +0 -443
  28. package/dist/mcp/config-v2.js.map +0 -1
  29. package/dist/mcp/transports-v2.d.ts +0 -152
  30. package/dist/mcp/transports-v2.js +0 -481
  31. package/dist/mcp/transports-v2.js.map +0 -1
  32. package/dist/utils/error-sanitizer.d.ts +0 -119
  33. package/dist/utils/error-sanitizer.js +0 -253
  34. package/dist/utils/error-sanitizer.js.map +0 -1
  35. package/dist/utils/errors.d.ts +0 -74
  36. package/dist/utils/errors.js +0 -139
  37. package/dist/utils/errors.js.map +0 -1
  38. package/dist/utils/incremental-analyzer.d.ts +0 -134
  39. package/dist/utils/incremental-analyzer.js +0 -377
  40. package/dist/utils/incremental-analyzer.js.map +0 -1
  41. package/dist/utils/math.d.ts +0 -1
  42. package/dist/utils/math.js +0 -4
  43. package/dist/utils/math.js.map +0 -1
  44. package/dist/utils/settings.d.ts +0 -1
  45. package/dist/utils/settings.js +0 -4
  46. package/dist/utils/settings.js.map +0 -1
  47. package/dist/utils/streaming-analyzer.d.ts +0 -160
  48. package/dist/utils/streaming-analyzer.js +0 -214
  49. package/dist/utils/streaming-analyzer.js.map +0 -1
@@ -1,253 +0,0 @@
1
- /**
2
- * Error Message Sanitization (REQ-SEC-010)
3
- *
4
- * Sanitizes error messages to prevent information disclosure
5
- * Removes:
6
- * - File system paths
7
- * - API keys and secrets
8
- * - Stack traces (for user-facing errors)
9
- * - Internal implementation details
10
- *
11
- * Security: CVSS 6.5 (Medium Priority)
12
- */
13
- import { homedir } from 'os';
14
- import { getAuditLogger, AuditCategory } from './audit-logger.js';
15
- /**
16
- * Patterns to detect and sanitize in error messages
17
- */
18
- const SENSITIVE_PATTERNS = {
19
- // File paths (Windows and Unix)
20
- FILE_PATH: /([A-Za-z]:\\|\/)[^\s"'<>|]+/g,
21
- // API keys and tokens (common formats)
22
- // Matches patterns like "api_key=XXX", "secret: XXX", "API key: XXX", "bearer XXX"
23
- API_KEY: /\b(?:api[_ -]?key|token|secret|password|bearer)[\s:=]+['"]?[a-zA-Z0-9_\-]{16,}['"]?/gi,
24
- // Environment variables
25
- ENV_VAR: /\$\{?[A-Z_][A-Z0-9_]*\}?/g,
26
- // IP addresses (for SSRF protection)
27
- IP_ADDRESS: /\b(?:\d{1,3}\.){3}\d{1,3}\b/g,
28
- // URLs with credentials
29
- URL_WITH_CREDS: /https?:\/\/[^:]+:[^@]+@[^\s]+/g,
30
- // Stack trace lines
31
- STACK_TRACE_LINE: /^\s*at\s+.+\(.+:\d+:\d+\)$/gm,
32
- // Home directory references
33
- HOME_DIR: new RegExp(homedir().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'),
34
- };
35
- /**
36
- * Replacement strings for sanitized content
37
- */
38
- const REPLACEMENTS = {
39
- FILE_PATH: '[REDACTED_PATH]',
40
- API_KEY: '[REDACTED_KEY]',
41
- ENV_VAR: '[REDACTED_ENV]',
42
- IP_ADDRESS: '[REDACTED_IP]',
43
- URL_WITH_CREDS: '[REDACTED_URL]',
44
- STACK_TRACE_LINE: '',
45
- HOME_DIR: '[USER_HOME]',
46
- };
47
- /**
48
- * Error categories for user-friendly messages
49
- */
50
- export var ErrorCategory;
51
- (function (ErrorCategory) {
52
- ErrorCategory["NETWORK"] = "NETWORK";
53
- ErrorCategory["FILE_SYSTEM"] = "FILE_SYSTEM";
54
- ErrorCategory["VALIDATION"] = "VALIDATION";
55
- ErrorCategory["AUTHENTICATION"] = "AUTHENTICATION";
56
- ErrorCategory["RATE_LIMIT"] = "RATE_LIMIT";
57
- ErrorCategory["API_ERROR"] = "API_ERROR";
58
- ErrorCategory["INTERNAL"] = "INTERNAL";
59
- ErrorCategory["USER_INPUT"] = "USER_INPUT";
60
- })(ErrorCategory || (ErrorCategory = {}));
61
- /**
62
- * Sanitize error message by removing sensitive information
63
- *
64
- * @param message - Raw error message
65
- * @returns Sanitized message safe for user display
66
- */
67
- export function sanitizeErrorMessage(message) {
68
- let sanitized = message;
69
- // Remove URLs with credentials first (before FILE_PATH catches them)
70
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.URL_WITH_CREDS, REPLACEMENTS.URL_WITH_CREDS);
71
- // Remove home directory references (before FILE_PATH catches them)
72
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.HOME_DIR, REPLACEMENTS.HOME_DIR);
73
- // Remove file paths
74
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.FILE_PATH, REPLACEMENTS.FILE_PATH);
75
- // Remove API keys and secrets
76
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.API_KEY, REPLACEMENTS.API_KEY);
77
- // Remove environment variables
78
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.ENV_VAR, REPLACEMENTS.ENV_VAR);
79
- // Remove IP addresses
80
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.IP_ADDRESS, REPLACEMENTS.IP_ADDRESS);
81
- return sanitized;
82
- }
83
- /**
84
- * Sanitize stack trace by removing sensitive paths
85
- *
86
- * @param stack - Raw stack trace
87
- * @returns Sanitized stack trace
88
- */
89
- export function sanitizeStackTrace(stack) {
90
- let sanitized = stack;
91
- // Remove home directory references first
92
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.HOME_DIR, REPLACEMENTS.HOME_DIR);
93
- // Remove file paths from stack frames
94
- sanitized = sanitized.replace(SENSITIVE_PATTERNS.FILE_PATH, REPLACEMENTS.FILE_PATH);
95
- return sanitized;
96
- }
97
- /**
98
- * Remove stack trace entirely (for user-facing errors)
99
- *
100
- * @param message - Error message with potential stack trace
101
- * @returns Message without stack trace
102
- */
103
- export function removeStackTrace(message) {
104
- // Split at first "at " (stack trace start)
105
- const parts = message.split(/\n\s*at\s+/);
106
- return parts[0].trim();
107
- }
108
- /**
109
- * Categorize error and create user-friendly message
110
- *
111
- * @param error - Error object
112
- * @returns Sanitized error with category and suggestion
113
- */
114
- export function sanitizeError(error) {
115
- const errorObj = error instanceof Error ? error : new Error(String(error));
116
- const message = errorObj.message;
117
- // Sanitize the message
118
- const sanitizedMessage = sanitizeErrorMessage(removeStackTrace(message));
119
- // Determine category and suggestion
120
- let category = ErrorCategory.INTERNAL;
121
- let suggestion;
122
- let code;
123
- // Network errors
124
- if (message.includes('ENOTFOUND') || message.includes('ECONNREFUSED') || message.includes('fetch failed')) {
125
- category = ErrorCategory.NETWORK;
126
- suggestion = 'Check your network connection and try again.';
127
- code = 'ERR_NETWORK';
128
- }
129
- // File system errors
130
- else if (message.includes('ENOENT') || message.includes('EACCES') || message.includes('EPERM')) {
131
- category = ErrorCategory.FILE_SYSTEM;
132
- suggestion = 'Check that the file exists and you have permission to access it.';
133
- code = 'ERR_FILE_SYSTEM';
134
- }
135
- // Validation errors
136
- else if (message.includes('validation') || message.includes('invalid') || message.includes('required')) {
137
- category = ErrorCategory.VALIDATION;
138
- suggestion = 'Check your input and try again.';
139
- code = 'ERR_VALIDATION';
140
- }
141
- // Authentication errors
142
- else if (message.includes('unauthorized') || message.includes('authentication') || message.includes('API key')) {
143
- category = ErrorCategory.AUTHENTICATION;
144
- suggestion = 'Check your API key configuration.';
145
- code = 'ERR_AUTH';
146
- }
147
- // Rate limit errors
148
- else if (message.includes('rate limit') || message.includes('too many requests')) {
149
- category = ErrorCategory.RATE_LIMIT;
150
- suggestion = 'Please wait a moment before trying again.';
151
- code = 'ERR_RATE_LIMIT';
152
- }
153
- // API errors
154
- else if (message.includes('API') || message.includes('status code')) {
155
- category = ErrorCategory.API_ERROR;
156
- suggestion = 'The API returned an error. Please try again later.';
157
- code = 'ERR_API';
158
- }
159
- // REQ-SEC-008: Audit log errors with sensitive info detection
160
- if (message !== sanitizedMessage) {
161
- const auditLogger = getAuditLogger();
162
- auditLogger.logWarning({
163
- category: AuditCategory.SYSTEM_EVENT,
164
- action: 'sensitive_data_in_error',
165
- outcome: 'success',
166
- details: {
167
- category,
168
- sanitized: true,
169
- },
170
- });
171
- }
172
- return {
173
- message: sanitizedMessage,
174
- code,
175
- category,
176
- suggestion,
177
- originalError: errorObj,
178
- };
179
- }
180
- /**
181
- * Format sanitized error for user display
182
- *
183
- * @param sanitizedError - Sanitized error object
184
- * @returns Formatted error message
185
- */
186
- export function formatUserError(sanitizedError) {
187
- const parts = [];
188
- if (sanitizedError.code) {
189
- parts.push(`[${sanitizedError.code}]`);
190
- }
191
- parts.push(sanitizedError.message);
192
- if (sanitizedError.suggestion) {
193
- parts.push(`\nℹ️ ${sanitizedError.suggestion}`);
194
- }
195
- return parts.join(' ');
196
- }
197
- /**
198
- * Create internal log message with full details (not sanitized)
199
- *
200
- * @param error - Original error
201
- * @param context - Additional context
202
- * @returns Detailed log message
203
- */
204
- export function createInternalLogMessage(error, context) {
205
- const errorObj = error instanceof Error ? error : new Error(String(error));
206
- const parts = [
207
- `Error: ${errorObj.message}`,
208
- ];
209
- if (errorObj.stack) {
210
- parts.push(`Stack: ${sanitizeStackTrace(errorObj.stack)}`);
211
- }
212
- if (context) {
213
- parts.push(`Context: ${JSON.stringify(context, null, 2)}`);
214
- }
215
- return parts.join('\n');
216
- }
217
- /**
218
- * Safe error wrapper for user-facing operations
219
- *
220
- * @param operation - Async operation to execute
221
- * @param errorHandler - Optional custom error handler
222
- * @returns Result or sanitized error
223
- *
224
- * @example
225
- * ```typescript
226
- * const result = await safeExecute(
227
- * () => riskyOperation(),
228
- * (error) => console.error('Internal error:', error)
229
- * );
230
- *
231
- * if (!result.success) {
232
- * console.log(formatUserError(result.error));
233
- * }
234
- * ```
235
- */
236
- export async function safeExecute(operation, errorHandler) {
237
- try {
238
- const data = await operation();
239
- return { success: true, data };
240
- }
241
- catch (error) {
242
- const sanitized = sanitizeError(error);
243
- // Log internal error details
244
- if (errorHandler) {
245
- errorHandler(sanitized.originalError, sanitized);
246
- }
247
- else {
248
- console.error(createInternalLogMessage(error));
249
- }
250
- return { success: false, error: sanitized };
251
- }
252
- }
253
- //# sourceMappingURL=error-sanitizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-sanitizer.js","sourceRoot":"","sources":["../../src/utils/error-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -1,74 +0,0 @@
1
- /**
2
- * Typed Error Classes
3
- * Provides consistent, categorized error handling across the application
4
- */
5
- /**
6
- * Base error class for AX CLI errors
7
- */
8
- export declare class AxCliError extends Error {
9
- readonly category: string;
10
- readonly details?: unknown | undefined;
11
- constructor(message: string, category: string, details?: unknown | undefined);
12
- }
13
- /**
14
- * Configuration-related errors (YAML, settings, etc.)
15
- */
16
- export declare class ConfigurationError extends AxCliError {
17
- constructor(message: string, details?: unknown);
18
- }
19
- /**
20
- * Validation errors (Zod, schema, input validation)
21
- */
22
- export declare class ValidationError extends AxCliError {
23
- constructor(message: string, details?: unknown);
24
- }
25
- /**
26
- * File system operation errors
27
- */
28
- export declare class FileSystemError extends AxCliError {
29
- readonly filePath?: string | undefined;
30
- constructor(message: string, filePath?: string | undefined, details?: unknown);
31
- }
32
- /**
33
- * Network/API errors
34
- */
35
- export declare class NetworkError extends AxCliError {
36
- readonly statusCode?: number | undefined;
37
- constructor(message: string, statusCode?: number | undefined, details?: unknown);
38
- }
39
- /**
40
- * MCP (Model Context Protocol) errors
41
- */
42
- export declare class MCPError extends AxCliError {
43
- readonly serverName?: string | undefined;
44
- constructor(message: string, serverName?: string | undefined, details?: unknown);
45
- }
46
- /**
47
- * Tool execution errors
48
- */
49
- export declare class ToolExecutionError extends AxCliError {
50
- readonly toolName?: string | undefined;
51
- constructor(message: string, toolName?: string | undefined, details?: unknown);
52
- }
53
- /**
54
- * Authentication/Authorization errors
55
- */
56
- export declare class AuthenticationError extends AxCliError {
57
- constructor(message: string, details?: unknown);
58
- }
59
- /**
60
- * Type guard to check if error is an AxCliError
61
- */
62
- export declare function isAxCliError(error: unknown): error is AxCliError;
63
- /**
64
- * Extract user-friendly error message from any error type
65
- */
66
- export declare function getErrorMessage(error: unknown): string;
67
- /**
68
- * Format error for logging with details
69
- */
70
- export declare function formatErrorForLogging(error: unknown): string;
71
- /**
72
- * Wrap any error in an appropriate AxCliError
73
- */
74
- export declare function wrapError(error: unknown, category: string, context?: string): AxCliError;
@@ -1,139 +0,0 @@
1
- /**
2
- * Typed Error Classes
3
- * Provides consistent, categorized error handling across the application
4
- */
5
- /**
6
- * Base error class for AX CLI errors
7
- */
8
- export class AxCliError extends Error {
9
- category;
10
- details;
11
- constructor(message, category, details) {
12
- super(message);
13
- this.category = category;
14
- this.details = details;
15
- this.name = 'AxCliError';
16
- Error.captureStackTrace(this, this.constructor);
17
- }
18
- }
19
- /**
20
- * Configuration-related errors (YAML, settings, etc.)
21
- */
22
- export class ConfigurationError extends AxCliError {
23
- constructor(message, details) {
24
- super(message, 'Configuration', details);
25
- this.name = 'ConfigurationError';
26
- }
27
- }
28
- /**
29
- * Validation errors (Zod, schema, input validation)
30
- */
31
- export class ValidationError extends AxCliError {
32
- constructor(message, details) {
33
- super(message, 'Validation', details);
34
- this.name = 'ValidationError';
35
- }
36
- }
37
- /**
38
- * File system operation errors
39
- */
40
- export class FileSystemError extends AxCliError {
41
- filePath;
42
- constructor(message, filePath, details) {
43
- super(message, 'FileSystem', details);
44
- this.filePath = filePath;
45
- this.name = 'FileSystemError';
46
- }
47
- }
48
- /**
49
- * Network/API errors
50
- */
51
- export class NetworkError extends AxCliError {
52
- statusCode;
53
- constructor(message, statusCode, details) {
54
- super(message, 'Network', details);
55
- this.statusCode = statusCode;
56
- this.name = 'NetworkError';
57
- }
58
- }
59
- /**
60
- * MCP (Model Context Protocol) errors
61
- */
62
- export class MCPError extends AxCliError {
63
- serverName;
64
- constructor(message, serverName, details) {
65
- super(message, 'MCP', details);
66
- this.serverName = serverName;
67
- this.name = 'MCPError';
68
- }
69
- }
70
- /**
71
- * Tool execution errors
72
- */
73
- export class ToolExecutionError extends AxCliError {
74
- toolName;
75
- constructor(message, toolName, details) {
76
- super(message, 'ToolExecution', details);
77
- this.toolName = toolName;
78
- this.name = 'ToolExecutionError';
79
- }
80
- }
81
- /**
82
- * Authentication/Authorization errors
83
- */
84
- export class AuthenticationError extends AxCliError {
85
- constructor(message, details) {
86
- super(message, 'Authentication', details);
87
- this.name = 'AuthenticationError';
88
- }
89
- }
90
- /**
91
- * Type guard to check if error is an AxCliError
92
- */
93
- export function isAxCliError(error) {
94
- return error instanceof AxCliError;
95
- }
96
- /**
97
- * Extract user-friendly error message from any error type
98
- */
99
- export function getErrorMessage(error) {
100
- if (error instanceof AxCliError) {
101
- return error.message;
102
- }
103
- if (error instanceof Error) {
104
- return error.message;
105
- }
106
- if (typeof error === 'string') {
107
- return error;
108
- }
109
- return 'An unknown error occurred';
110
- }
111
- /**
112
- * Format error for logging with details
113
- */
114
- export function formatErrorForLogging(error) {
115
- if (error instanceof AxCliError) {
116
- let message = `[${error.category}] ${error.message}`;
117
- if (error.details) {
118
- message += `\nDetails: ${JSON.stringify(error.details, null, 2)}`;
119
- }
120
- if (error.stack) {
121
- message += `\nStack: ${error.stack}`;
122
- }
123
- return message;
124
- }
125
- if (error instanceof Error) {
126
- return error.stack || error.message;
127
- }
128
- return String(error);
129
- }
130
- /**
131
- * Wrap any error in an appropriate AxCliError
132
- */
133
- export function wrapError(error, category, context) {
134
- const message = context
135
- ? `${context}: ${getErrorMessage(error)}`
136
- : getErrorMessage(error);
137
- return new AxCliError(message, category, error);
138
- }
139
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -1,134 +0,0 @@
1
- /**
2
- * Incremental Analyzer
3
- *
4
- * Analyzes only changed files and their dependencies using git integration.
5
- * Provides 10-50x speedup by avoiding analysis of unchanged files.
6
- *
7
- * Quick Win #2: Git-Based Incremental Analysis (Est. time: 1 hour)
8
- * Impact: 10-50x reduction in files to analyze
9
- */
10
- /**
11
- * Configuration for incremental analysis
12
- */
13
- export interface IncrementalConfig {
14
- /** Base directory for git operations (default: cwd) */
15
- baseDir?: string;
16
- /** File patterns to include (default: all) */
17
- include?: string[];
18
- /** File patterns to exclude (default: none) */
19
- exclude?: string[];
20
- /** Compare against specific commit/branch (default: HEAD) */
21
- compareWith?: string;
22
- /** Include untracked files (default: true) */
23
- includeUntracked?: boolean;
24
- /** Build dependency graph (default: false, for future use) */
25
- trackDependencies?: boolean;
26
- }
27
- /**
28
- * Changed file info
29
- */
30
- export interface ChangedFile {
31
- /** File path relative to base directory */
32
- path: string;
33
- /** Type of change */
34
- status: 'modified' | 'added' | 'deleted' | 'renamed' | 'untracked';
35
- /** Previous path (for renamed files) */
36
- oldPath?: string;
37
- }
38
- /**
39
- * Result of incremental analysis
40
- */
41
- export interface IncrementalResult {
42
- /** Files that need analysis */
43
- filesToAnalyze: string[];
44
- /** Files that are cached */
45
- cachedFiles: string[];
46
- /** Changed files detected */
47
- changedFiles: ChangedFile[];
48
- /** Total files in project */
49
- totalFiles: number;
50
- /** Estimated speedup */
51
- speedup: number;
52
- }
53
- /**
54
- * Check if directory is a git repository
55
- */
56
- export declare function isGitRepo(dir?: string): boolean;
57
- /**
58
- * Get changed files from git
59
- *
60
- * @param config - Configuration options
61
- * @returns Array of changed files
62
- *
63
- * @example
64
- * ```typescript
65
- * const changed = await getChangedFiles({
66
- * compareWith: 'main',
67
- * include: ['*.ts', '*.tsx'],
68
- * });
69
- *
70
- * console.log(`${changed.length} files changed`);
71
- * ```
72
- */
73
- export declare function getChangedFiles(config?: IncrementalConfig): Promise<ChangedFile[]>;
74
- /**
75
- * Get files to analyze incrementally
76
- *
77
- * Returns only files that need analysis based on git changes.
78
- *
79
- * @param allFiles - All files in project
80
- * @param config - Configuration options
81
- * @returns Incremental analysis result
82
- *
83
- * @example
84
- * ```typescript
85
- * const allFiles = await glob('src/** /*.ts');
86
- * const result = await getFilesToAnalyze(allFiles);
87
- *
88
- * console.log(`Analyzing ${result.filesToAnalyze.length} of ${result.totalFiles} files`);
89
- * console.log(`Speedup: ${result.speedup.toFixed(1)}x`);
90
- * ```
91
- */
92
- export declare function getFilesToAnalyze(allFiles: string[], config?: IncrementalConfig): Promise<IncrementalResult>;
93
- /**
94
- * Get git repository info
95
- *
96
- * @param baseDir - Base directory (default: cwd)
97
- * @returns Repository information
98
- */
99
- export declare function getGitInfo(baseDir?: string): {
100
- branch: string;
101
- commit: string;
102
- isDirty: boolean;
103
- ahead: number;
104
- behind: number;
105
- } | null;
106
- /**
107
- * Simple dependency tracker (for future use)
108
- *
109
- * Parses import/require statements to build a dependency graph.
110
- */
111
- export declare class DependencyTracker {
112
- private graph;
113
- private reverseGraph;
114
- /**
115
- * Add a file and its dependencies
116
- */
117
- addFile(filePath: string): Promise<void>;
118
- /**
119
- * Get files that depend on the given file
120
- */
121
- getDependents(filePath: string): string[];
122
- /**
123
- * Get all affected files (transitive dependencies)
124
- */
125
- getAffectedFiles(changedFiles: string[]): string[];
126
- /**
127
- * Parse import statements from file content
128
- */
129
- private parseImports;
130
- /**
131
- * Resolve import path to absolute path
132
- */
133
- private resolveImport;
134
- }