@aiready/core 0.9.4 → 0.9.5

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 (59) hide show
  1. package/dist/__tests__/parser-factory.test.d.ts +5 -0
  2. package/dist/__tests__/parser-factory.test.d.ts.map +1 -0
  3. package/dist/__tests__/parser-factory.test.js +58 -0
  4. package/dist/__tests__/parser-factory.test.js.map +1 -0
  5. package/dist/__tests__/python-parser.test.d.ts +5 -0
  6. package/dist/__tests__/python-parser.test.d.ts.map +1 -0
  7. package/dist/__tests__/python-parser.test.js +192 -0
  8. package/dist/__tests__/python-parser.test.js.map +1 -0
  9. package/dist/__tests__/scoring.test.d.ts +2 -0
  10. package/dist/__tests__/scoring.test.d.ts.map +1 -0
  11. package/dist/__tests__/scoring.test.js +180 -0
  12. package/dist/__tests__/scoring.test.js.map +1 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/parsers/parser-factory.d.ts +69 -0
  16. package/dist/parsers/parser-factory.d.ts.map +1 -0
  17. package/dist/parsers/parser-factory.js +114 -0
  18. package/dist/parsers/parser-factory.js.map +1 -0
  19. package/dist/parsers/python-parser.d.ts +42 -0
  20. package/dist/parsers/python-parser.d.ts.map +1 -0
  21. package/dist/parsers/python-parser.js +241 -0
  22. package/dist/parsers/python-parser.js.map +1 -0
  23. package/dist/parsers/typescript-parser.d.ts +17 -0
  24. package/dist/parsers/typescript-parser.d.ts.map +1 -0
  25. package/dist/parsers/typescript-parser.js +216 -0
  26. package/dist/parsers/typescript-parser.js.map +1 -0
  27. package/dist/scoring.d.ts +110 -0
  28. package/dist/scoring.d.ts.map +1 -0
  29. package/dist/scoring.js +195 -0
  30. package/dist/scoring.js.map +1 -0
  31. package/dist/types/language.d.ts +161 -0
  32. package/dist/types/language.d.ts.map +1 -0
  33. package/dist/types/language.js +45 -0
  34. package/dist/types/language.js.map +1 -0
  35. package/dist/types.d.ts +104 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +2 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils/ast-parser.d.ts +50 -0
  40. package/dist/utils/ast-parser.d.ts.map +1 -0
  41. package/dist/utils/ast-parser.js +216 -0
  42. package/dist/utils/ast-parser.js.map +1 -0
  43. package/dist/utils/cli-helpers.d.ts +37 -0
  44. package/dist/utils/cli-helpers.d.ts.map +1 -0
  45. package/dist/utils/cli-helpers.js +76 -0
  46. package/dist/utils/cli-helpers.js.map +1 -0
  47. package/dist/utils/config.d.ts +4 -0
  48. package/dist/utils/config.d.ts.map +1 -0
  49. package/dist/utils/config.js +82 -0
  50. package/dist/utils/config.js.map +1 -0
  51. package/dist/utils/file-scanner.d.ts +16 -0
  52. package/dist/utils/file-scanner.d.ts.map +1 -0
  53. package/dist/utils/file-scanner.js +100 -0
  54. package/dist/utils/file-scanner.js.map +1 -0
  55. package/dist/utils/metrics.d.ts +6 -0
  56. package/dist/utils/metrics.d.ts.map +1 -0
  57. package/dist/utils/metrics.js +8 -0
  58. package/dist/utils/metrics.js.map +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1,110 @@
1
+ /**
2
+ * AI Readiness Scoring System
3
+ *
4
+ * Provides dynamic, composable scoring across multiple analysis tools.
5
+ * Each tool contributes a 0-100 score with configurable weights.
6
+ */
7
+ export interface ToolScoringOutput {
8
+ /** Unique tool identifier (e.g., "pattern-detect") */
9
+ toolName: string;
10
+ /** Normalized 0-100 score for this tool */
11
+ score: number;
12
+ /** Raw metrics used to calculate the score */
13
+ rawMetrics: Record<string, any>;
14
+ /** Factors that influenced the score */
15
+ factors: Array<{
16
+ name: string;
17
+ impact: number;
18
+ description: string;
19
+ }>;
20
+ /** Actionable recommendations with estimated impact */
21
+ recommendations: Array<{
22
+ action: string;
23
+ estimatedImpact: number;
24
+ priority: 'high' | 'medium' | 'low';
25
+ }>;
26
+ }
27
+ export interface ScoringResult {
28
+ /** Overall AI Readiness Score (0-100) */
29
+ overall: number;
30
+ /** Rating category */
31
+ rating: 'Excellent' | 'Good' | 'Fair' | 'Needs Work' | 'Critical';
32
+ /** Timestamp of score calculation */
33
+ timestamp: string;
34
+ /** Tools that contributed to this score */
35
+ toolsUsed: string[];
36
+ /** Breakdown by tool */
37
+ breakdown: ToolScoringOutput[];
38
+ /** Calculation details */
39
+ calculation: {
40
+ formula: string;
41
+ weights: Record<string, number>;
42
+ normalized: string;
43
+ };
44
+ }
45
+ export interface ScoringConfig {
46
+ /** Minimum passing score (exit code 1 if below) */
47
+ threshold?: number;
48
+ /** Show detailed breakdown in output */
49
+ showBreakdown?: boolean;
50
+ /** Path to baseline JSON for comparison */
51
+ compareBaseline?: string;
52
+ /** Auto-save score to this path */
53
+ saveTo?: string;
54
+ }
55
+ /**
56
+ * Default weights for known tools.
57
+ * New tools get weight of 10 if not specified.
58
+ */
59
+ export declare const DEFAULT_TOOL_WEIGHTS: Record<string, number>;
60
+ /**
61
+ * Tool name normalization map (shorthand -> full name)
62
+ */
63
+ export declare const TOOL_NAME_MAP: Record<string, string>;
64
+ /**
65
+ * Normalize tool name from shorthand to full name
66
+ */
67
+ export declare function normalizeToolName(shortName: string): string;
68
+ /**
69
+ * Get tool weight with fallback priority:
70
+ * 1. CLI override
71
+ * 2. Tool config scoreWeight
72
+ * 3. Default weight
73
+ * 4. 10 (for unknown tools)
74
+ */
75
+ export declare function getToolWeight(toolName: string, toolConfig?: {
76
+ scoreWeight?: number;
77
+ }, cliOverride?: number): number;
78
+ /**
79
+ * Parse weight string from CLI (e.g., "patterns:50,context:30")
80
+ */
81
+ export declare function parseWeightString(weightStr?: string): Map<string, number>;
82
+ /**
83
+ * Calculate overall AI Readiness Score from multiple tool scores.
84
+ *
85
+ * Formula: Σ(tool_score × tool_weight) / Σ(active_tool_weights)
86
+ *
87
+ * This allows dynamic composition - score adjusts automatically
88
+ * based on which tools actually ran.
89
+ */
90
+ export declare function calculateOverallScore(toolOutputs: Map<string, ToolScoringOutput>, config?: any, cliWeights?: Map<string, number>): ScoringResult;
91
+ /**
92
+ * Convert numeric score to rating category
93
+ */
94
+ export declare function getRating(score: number): ScoringResult['rating'];
95
+ /**
96
+ * Get rating emoji and color for display
97
+ */
98
+ export declare function getRatingDisplay(rating: ScoringResult['rating']): {
99
+ emoji: string;
100
+ color: string;
101
+ };
102
+ /**
103
+ * Format score for display with rating
104
+ */
105
+ export declare function formatScore(result: ScoringResult): string;
106
+ /**
107
+ * Format individual tool score for display
108
+ */
109
+ export declare function formatToolScore(output: ToolScoringOutput): string;
110
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * AI Readiness Scoring System
3
+ *
4
+ * Provides dynamic, composable scoring across multiple analysis tools.
5
+ * Each tool contributes a 0-100 score with configurable weights.
6
+ */
7
+ /**
8
+ * Default weights for known tools.
9
+ * New tools get weight of 10 if not specified.
10
+ */
11
+ export const DEFAULT_TOOL_WEIGHTS = {
12
+ 'pattern-detect': 40,
13
+ 'context-analyzer': 35,
14
+ 'consistency': 25,
15
+ 'doc-drift': 20,
16
+ 'deps': 15,
17
+ };
18
+ /**
19
+ * Tool name normalization map (shorthand -> full name)
20
+ */
21
+ export const TOOL_NAME_MAP = {
22
+ 'patterns': 'pattern-detect',
23
+ 'context': 'context-analyzer',
24
+ 'consistency': 'consistency',
25
+ 'doc-drift': 'doc-drift',
26
+ 'deps': 'deps',
27
+ };
28
+ /**
29
+ * Normalize tool name from shorthand to full name
30
+ */
31
+ export function normalizeToolName(shortName) {
32
+ return TOOL_NAME_MAP[shortName] || shortName;
33
+ }
34
+ /**
35
+ * Get tool weight with fallback priority:
36
+ * 1. CLI override
37
+ * 2. Tool config scoreWeight
38
+ * 3. Default weight
39
+ * 4. 10 (for unknown tools)
40
+ */
41
+ export function getToolWeight(toolName, toolConfig, cliOverride) {
42
+ // CLI override has highest priority
43
+ if (cliOverride !== undefined) {
44
+ return cliOverride;
45
+ }
46
+ // Check tool's own config
47
+ if (toolConfig?.scoreWeight !== undefined) {
48
+ return toolConfig.scoreWeight;
49
+ }
50
+ // Fall back to defaults
51
+ return DEFAULT_TOOL_WEIGHTS[toolName] || 10;
52
+ }
53
+ /**
54
+ * Parse weight string from CLI (e.g., "patterns:50,context:30")
55
+ */
56
+ export function parseWeightString(weightStr) {
57
+ const weights = new Map();
58
+ if (!weightStr) {
59
+ return weights;
60
+ }
61
+ const pairs = weightStr.split(',');
62
+ for (const pair of pairs) {
63
+ const [toolShortName, weightStr] = pair.split(':');
64
+ if (toolShortName && weightStr) {
65
+ const toolName = normalizeToolName(toolShortName.trim());
66
+ const weight = parseInt(weightStr.trim(), 10);
67
+ if (!isNaN(weight) && weight > 0) {
68
+ weights.set(toolName, weight);
69
+ }
70
+ }
71
+ }
72
+ return weights;
73
+ }
74
+ /**
75
+ * Calculate overall AI Readiness Score from multiple tool scores.
76
+ *
77
+ * Formula: Σ(tool_score × tool_weight) / Σ(active_tool_weights)
78
+ *
79
+ * This allows dynamic composition - score adjusts automatically
80
+ * based on which tools actually ran.
81
+ */
82
+ export function calculateOverallScore(toolOutputs, config, cliWeights) {
83
+ if (toolOutputs.size === 0) {
84
+ throw new Error('No tool outputs provided for scoring');
85
+ }
86
+ // Build weights map with priority: CLI > config > defaults
87
+ const weights = new Map();
88
+ for (const [toolName] of toolOutputs.entries()) {
89
+ const cliWeight = cliWeights?.get(toolName);
90
+ const configWeight = config?.tools?.[toolName]?.scoreWeight;
91
+ const weight = cliWeight ?? configWeight ?? DEFAULT_TOOL_WEIGHTS[toolName] ?? 10;
92
+ weights.set(toolName, weight);
93
+ }
94
+ // Calculate weighted sum and total weight
95
+ let weightedSum = 0;
96
+ let totalWeight = 0;
97
+ const breakdown = [];
98
+ const toolsUsed = [];
99
+ const calculationWeights = {};
100
+ for (const [toolName, output] of toolOutputs.entries()) {
101
+ const weight = weights.get(toolName) || 10;
102
+ const weightedScore = output.score * weight;
103
+ weightedSum += weightedScore;
104
+ totalWeight += weight;
105
+ toolsUsed.push(toolName);
106
+ calculationWeights[toolName] = weight;
107
+ breakdown.push(output);
108
+ }
109
+ // Calculate final score
110
+ const overall = Math.round(weightedSum / totalWeight);
111
+ // Determine rating
112
+ const rating = getRating(overall);
113
+ // Build formula string
114
+ const formulaParts = Array.from(toolOutputs.entries())
115
+ .map(([name, output]) => {
116
+ const w = weights.get(name) || 10;
117
+ return `(${output.score} × ${w})`;
118
+ });
119
+ const formulaStr = `[${formulaParts.join(' + ')}] / ${totalWeight} = ${overall}`;
120
+ return {
121
+ overall,
122
+ rating,
123
+ timestamp: new Date().toISOString(),
124
+ toolsUsed,
125
+ breakdown,
126
+ calculation: {
127
+ formula: formulaStr,
128
+ weights: calculationWeights,
129
+ normalized: formulaStr,
130
+ },
131
+ };
132
+ }
133
+ /**
134
+ * Convert numeric score to rating category
135
+ */
136
+ export function getRating(score) {
137
+ if (score >= 90)
138
+ return 'Excellent';
139
+ if (score >= 75)
140
+ return 'Good';
141
+ if (score >= 60)
142
+ return 'Fair';
143
+ if (score >= 40)
144
+ return 'Needs Work';
145
+ return 'Critical';
146
+ }
147
+ /**
148
+ * Get rating emoji and color for display
149
+ */
150
+ export function getRatingDisplay(rating) {
151
+ switch (rating) {
152
+ case 'Excellent':
153
+ return { emoji: '✅', color: 'green' };
154
+ case 'Good':
155
+ return { emoji: '👍', color: 'blue' };
156
+ case 'Fair':
157
+ return { emoji: '⚠️', color: 'yellow' };
158
+ case 'Needs Work':
159
+ return { emoji: '🔨', color: 'orange' };
160
+ case 'Critical':
161
+ return { emoji: '❌', color: 'red' };
162
+ }
163
+ }
164
+ /**
165
+ * Format score for display with rating
166
+ */
167
+ export function formatScore(result) {
168
+ const { emoji, color } = getRatingDisplay(result.rating);
169
+ return `${result.overall}/100 (${result.rating}) ${emoji}`;
170
+ }
171
+ /**
172
+ * Format individual tool score for display
173
+ */
174
+ export function formatToolScore(output) {
175
+ let result = ` Score: ${output.score}/100\n\n`;
176
+ if (output.factors && output.factors.length > 0) {
177
+ result += ` Factors:\n`;
178
+ output.factors.forEach(factor => {
179
+ const impactSign = factor.impact > 0 ? '+' : '';
180
+ result += ` • ${factor.name}: ${impactSign}${factor.impact} - ${factor.description}\n`;
181
+ });
182
+ result += '\n';
183
+ }
184
+ if (output.recommendations && output.recommendations.length > 0) {
185
+ result += ` Recommendations:\n`;
186
+ output.recommendations.forEach((rec, i) => {
187
+ const priorityIcon = rec.priority === 'high' ? '🔴' :
188
+ rec.priority === 'medium' ? '🟡' : '🔵';
189
+ result += ` ${i + 1}. ${priorityIcon} ${rec.action}\n`;
190
+ result += ` Impact: +${rec.estimatedImpact} points\n\n`;
191
+ });
192
+ }
193
+ return result;
194
+ }
195
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Language-agnostic AST and parser interfaces for multi-language support
3
+ *
4
+ * This module provides abstractions for parsing different programming languages
5
+ * while maintaining a consistent interface for analysis tools.
6
+ */
7
+ /**
8
+ * Supported programming languages
9
+ */
10
+ export declare enum Language {
11
+ TypeScript = "typescript",
12
+ JavaScript = "javascript",
13
+ Python = "python",
14
+ Java = "java",
15
+ Go = "go",
16
+ Rust = "rust",
17
+ CSharp = "csharp"
18
+ }
19
+ /**
20
+ * File extensions mapped to languages
21
+ */
22
+ export declare const LANGUAGE_EXTENSIONS: Record<string, Language>;
23
+ /**
24
+ * Location information in source code
25
+ */
26
+ export interface SourceLocation {
27
+ line: number;
28
+ column: number;
29
+ }
30
+ export interface SourceRange {
31
+ start: SourceLocation;
32
+ end: SourceLocation;
33
+ }
34
+ /**
35
+ * Common AST node type (language-agnostic)
36
+ */
37
+ export interface CommonASTNode {
38
+ type: string;
39
+ loc?: SourceRange;
40
+ raw?: any;
41
+ }
42
+ /**
43
+ * Export information (function, class, variable, etc.)
44
+ */
45
+ export interface ExportInfo {
46
+ name: string;
47
+ type: 'function' | 'class' | 'const' | 'type' | 'interface' | 'default' | 'variable';
48
+ loc?: SourceRange;
49
+ /** Imports used within this export */
50
+ imports?: string[];
51
+ /** Dependencies on other exports in same file */
52
+ dependencies?: string[];
53
+ /** TypeScript types referenced */
54
+ typeReferences?: string[];
55
+ /** For methods: parent class name */
56
+ parentClass?: string;
57
+ /** For functions/methods: parameters */
58
+ parameters?: string[];
59
+ /** Visibility (public, private, protected) */
60
+ visibility?: 'public' | 'private' | 'protected';
61
+ }
62
+ /**
63
+ * Import information
64
+ */
65
+ export interface ImportInfo {
66
+ /** Module being imported from */
67
+ source: string;
68
+ /** What's being imported */
69
+ specifiers: string[];
70
+ /** Is this a type-only import (TypeScript) */
71
+ isTypeOnly?: boolean;
72
+ /** Location in source */
73
+ loc?: SourceRange;
74
+ }
75
+ /**
76
+ * Parse result containing exports and imports
77
+ */
78
+ export interface ParseResult {
79
+ exports: ExportInfo[];
80
+ imports: ImportInfo[];
81
+ /** Language of the parsed file */
82
+ language: Language;
83
+ /** Any parse warnings (non-fatal) */
84
+ warnings?: string[];
85
+ }
86
+ /**
87
+ * Naming convention rules per language
88
+ */
89
+ export interface NamingConvention {
90
+ /** Allowed variable naming patterns */
91
+ variablePattern: RegExp;
92
+ /** Allowed function naming patterns */
93
+ functionPattern: RegExp;
94
+ /** Allowed class naming patterns */
95
+ classPattern: RegExp;
96
+ /** Allowed constant naming patterns */
97
+ constantPattern: RegExp;
98
+ /** Language-specific exceptions (e.g., __init__ in Python) */
99
+ exceptions?: string[];
100
+ }
101
+ /**
102
+ * Language-specific configuration
103
+ */
104
+ export interface LanguageConfig {
105
+ language: Language;
106
+ /** File extensions for this language */
107
+ extensions: string[];
108
+ /** Naming conventions */
109
+ namingConventions: NamingConvention;
110
+ /** Common abbreviations allowed */
111
+ allowedAbbreviations?: string[];
112
+ /** Language-specific keywords to ignore */
113
+ keywords?: string[];
114
+ }
115
+ /**
116
+ * Abstract interface for language parsers
117
+ * Each language implementation should implement this interface
118
+ */
119
+ export interface LanguageParser {
120
+ /** Language this parser handles */
121
+ readonly language: Language;
122
+ /** File extensions this parser supports */
123
+ readonly extensions: string[];
124
+ /**
125
+ * Parse source code and extract structure
126
+ * @param code - Source code to parse
127
+ * @param filePath - Path to the file (for context)
128
+ * @returns Parse result with exports and imports
129
+ * @throws ParseError if code has syntax errors
130
+ */
131
+ parse(code: string, filePath: string): ParseResult;
132
+ /**
133
+ * Get naming conventions for this language
134
+ */
135
+ getNamingConventions(): NamingConvention;
136
+ /**
137
+ * Check if this parser can handle a file
138
+ * @param filePath - File path to check
139
+ */
140
+ canHandle(filePath: string): boolean;
141
+ }
142
+ /**
143
+ * Parser error with location information
144
+ */
145
+ export declare class ParseError extends Error {
146
+ readonly filePath: string;
147
+ readonly loc?: SourceLocation | undefined;
148
+ constructor(message: string, filePath: string, loc?: SourceLocation | undefined);
149
+ }
150
+ /**
151
+ * Statistics about parsed code
152
+ */
153
+ export interface ParseStatistics {
154
+ language: Language;
155
+ filesAnalyzed: number;
156
+ totalExports: number;
157
+ totalImports: number;
158
+ parseErrors: number;
159
+ warnings: number;
160
+ }
161
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/types/language.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Language-agnostic AST and parser interfaces for multi-language support
3
+ *
4
+ * This module provides abstractions for parsing different programming languages
5
+ * while maintaining a consistent interface for analysis tools.
6
+ */
7
+ /**
8
+ * Supported programming languages
9
+ */
10
+ export var Language;
11
+ (function (Language) {
12
+ Language["TypeScript"] = "typescript";
13
+ Language["JavaScript"] = "javascript";
14
+ Language["Python"] = "python";
15
+ Language["Java"] = "java";
16
+ Language["Go"] = "go";
17
+ Language["Rust"] = "rust";
18
+ Language["CSharp"] = "csharp";
19
+ })(Language || (Language = {}));
20
+ /**
21
+ * File extensions mapped to languages
22
+ */
23
+ export const LANGUAGE_EXTENSIONS = {
24
+ '.ts': Language.TypeScript,
25
+ '.tsx': Language.TypeScript,
26
+ '.js': Language.JavaScript,
27
+ '.jsx': Language.JavaScript,
28
+ '.py': Language.Python,
29
+ '.java': Language.Java,
30
+ '.go': Language.Go,
31
+ '.rs': Language.Rust,
32
+ '.cs': Language.CSharp,
33
+ };
34
+ /**
35
+ * Parser error with location information
36
+ */
37
+ export class ParseError extends Error {
38
+ constructor(message, filePath, loc) {
39
+ super(message);
40
+ this.filePath = filePath;
41
+ this.loc = loc;
42
+ this.name = 'ParseError';
43
+ }
44
+ }
45
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/types/language.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,qCAAyB,CAAA;IACzB,6BAAiB,CAAA;IACjB,yBAAa,CAAA;IACb,qBAAS,CAAA;IACT,yBAAa,CAAA;IACb,6BAAiB,CAAA;AACnB,CAAC,EARW,QAAQ,KAAR,QAAQ,QAQnB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,KAAK,EAAE,QAAQ,CAAC,UAAU;IAC1B,MAAM,EAAE,QAAQ,CAAC,UAAU;IAC3B,KAAK,EAAE,QAAQ,CAAC,UAAU;IAC1B,MAAM,EAAE,QAAQ,CAAC,UAAU;IAC3B,KAAK,EAAE,QAAQ,CAAC,MAAM;IACtB,OAAO,EAAE,QAAQ,CAAC,IAAI;IACtB,KAAK,EAAE,QAAQ,CAAC,EAAE;IAClB,KAAK,EAAE,QAAQ,CAAC,IAAI;IACpB,KAAK,EAAE,QAAQ,CAAC,MAAM;CACvB,CAAC;AAuIF;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YACE,OAAe,EACC,QAAgB,EAChB,GAAoB;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,QAAG,GAAH,GAAG,CAAiB;QAGpC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,104 @@
1
+ export interface AnalysisResult {
2
+ fileName: string;
3
+ issues: Issue[];
4
+ metrics: Metrics;
5
+ }
6
+ export interface Issue {
7
+ type: IssueType;
8
+ severity: 'critical' | 'major' | 'minor' | 'info';
9
+ message: string;
10
+ location: Location;
11
+ suggestion?: string;
12
+ }
13
+ export type IssueType = 'duplicate-pattern' | 'context-fragmentation' | 'doc-drift' | 'naming-inconsistency' | 'naming-quality' | 'pattern-inconsistency' | 'architecture-inconsistency' | 'dead-code' | 'circular-dependency' | 'missing-types';
14
+ export interface Location {
15
+ file: string;
16
+ line: number;
17
+ column?: number;
18
+ endLine?: number;
19
+ endColumn?: number;
20
+ }
21
+ export interface Metrics {
22
+ tokenCost?: number;
23
+ complexityScore?: number;
24
+ consistencyScore?: number;
25
+ docFreshnessScore?: number;
26
+ }
27
+ export interface ScanOptions {
28
+ rootDir: string;
29
+ include?: string[];
30
+ exclude?: string[];
31
+ maxDepth?: number;
32
+ }
33
+ export interface AIReadyConfig {
34
+ scan?: {
35
+ include?: string[];
36
+ exclude?: string[];
37
+ tools?: string[];
38
+ };
39
+ tools?: {
40
+ 'pattern-detect'?: {
41
+ enabled?: boolean;
42
+ scoreWeight?: number;
43
+ minSimilarity?: number;
44
+ minLines?: number;
45
+ batchSize?: number;
46
+ approx?: boolean;
47
+ minSharedTokens?: number;
48
+ maxCandidatesPerBlock?: number;
49
+ streamResults?: boolean;
50
+ maxResults?: number;
51
+ };
52
+ 'context-analyzer'?: {
53
+ enabled?: boolean;
54
+ scoreWeight?: number;
55
+ maxDepth?: number;
56
+ maxContextBudget?: number;
57
+ minCohesion?: number;
58
+ maxFragmentation?: number;
59
+ focus?: 'fragmentation' | 'cohesion' | 'depth' | 'all';
60
+ includeNodeModules?: boolean;
61
+ maxResults?: number;
62
+ domainKeywords?: string[];
63
+ domainPatterns?: string[];
64
+ pathDomainMap?: Record<string, string>;
65
+ };
66
+ 'consistency'?: {
67
+ enabled?: boolean;
68
+ scoreWeight?: number;
69
+ acceptedAbbreviations?: string[];
70
+ shortWords?: string[];
71
+ disableChecks?: ('single-letter' | 'abbreviation' | 'convention-mix' | 'unclear' | 'poor-naming')[];
72
+ };
73
+ [toolName: string]: {
74
+ enabled?: boolean;
75
+ scoreWeight?: number;
76
+ [key: string]: any;
77
+ } | undefined;
78
+ };
79
+ scoring?: {
80
+ threshold?: number;
81
+ showBreakdown?: boolean;
82
+ compareBaseline?: string;
83
+ saveTo?: string;
84
+ };
85
+ output?: {
86
+ format?: 'console' | 'json' | 'html';
87
+ file?: string;
88
+ };
89
+ }
90
+ export interface Report {
91
+ summary: {
92
+ totalFiles: number;
93
+ totalIssues: number;
94
+ criticalIssues: number;
95
+ majorIssues: number;
96
+ };
97
+ results: AnalysisResult[];
98
+ metrics: {
99
+ overallScore: number;
100
+ tokenCostTotal: number;
101
+ avgConsistency: number;
102
+ };
103
+ }
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,WAAW,GACX,sBAAsB,GACpB,gBAAgB,GAChB,uBAAuB,GACvB,4BAA4B,GAC9B,WAAW,GACX,qBAAqB,GACrB,eAAe,CAAC;AAEpB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAE5B,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAGF,KAAK,CAAC,EAAE;QACN,gBAAgB,CAAC,EAAE;YACjB,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;YAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,kBAAkB,CAAC,EAAE;YACnB,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,KAAK,CAAC,EAAE,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;YACvD,kBAAkB,CAAC,EAAE,OAAO,CAAC;YAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;YAEpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;YAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;YAC1B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACxC,CAAC;QACF,aAAa,CAAC,EAAE;YACd,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YAErB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;YAEjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YAEtB,aAAa,CAAC,EAAE,CAAC,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;SACrG,CAAC;QACF,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACpB,GAAG,SAAS,CAAC;KACf,CAAC;IAGF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAGF,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH"}
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":""}