@aiready/core 0.19.2 → 0.19.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.
package/dist/client.d.mts CHANGED
@@ -1,44 +1,268 @@
1
- interface AnalysisResult {
2
- fileName: string;
3
- issues: Issue[];
4
- metrics: Metrics;
5
- }
6
- interface Issue {
7
- type: IssueType;
8
- severity: 'critical' | 'major' | 'minor' | 'info';
9
- message: string;
10
- location: Location;
11
- suggestion?: string;
12
- }
13
- type IssueType = 'duplicate-pattern' | 'context-fragmentation' | 'doc-drift' | 'dependency-health' | 'naming-inconsistency' | 'naming-quality' | 'pattern-inconsistency' | 'architecture-inconsistency' | 'dead-code' | 'circular-dependency' | 'missing-types' | 'ai-signal-clarity' | 'low-testability' | 'agent-navigation-failure' | 'ambiguous-api' | 'magic-literal' | 'boolean-trap' | 'change-amplification';
14
- interface Location {
15
- file: string;
16
- line: number;
17
- column?: number;
18
- endLine?: number;
19
- endColumn?: number;
20
- }
21
- interface Metrics {
22
- tokenCost?: number;
23
- complexityScore?: number;
24
- consistencyScore?: number;
25
- docFreshnessScore?: number;
26
- estimatedMonthlyCost?: number;
27
- estimatedDeveloperHours?: number;
28
- comprehensionDifficultyIndex?: number;
29
- /** Probability (0-100) that AI will hallucinate in this file/module */
30
- aiSignalClarityScore?: number;
31
- /** How well an agent can navigate to/from this file unaided (0-100) */
32
- agentGroundingScore?: number;
33
- /** Whether AI-generated changes to this file can be safely verified (0-100) */
34
- testabilityScore?: number;
35
- /** Level of documentation drift vs code reality (0-100, higher = more drift) */
36
- docDriftScore?: number;
37
- /** Health of dependencies in relation to AI training knowledge (0-100) */
38
- dependencyHealthScore?: number;
39
- /** Model context tier this analysis was calibrated for */
40
- modelContextTier?: 'compact' | 'standard' | 'extended' | 'frontier';
41
- }
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Severity levels for all AIReady issues.
5
+ */
6
+ declare enum Severity {
7
+ Critical = "critical",
8
+ Major = "major",
9
+ Minor = "minor",
10
+ Info = "info"
11
+ }
12
+ declare const SeveritySchema: z.ZodEnum<typeof Severity>;
13
+ /**
14
+ * Canonical Tool Names (IDs)
15
+ * Used everywhere as the single source of truth for tool identification.
16
+ */
17
+ declare enum ToolName {
18
+ PatternDetect = "pattern-detect",
19
+ ContextAnalyzer = "context-analyzer",
20
+ NamingConsistency = "naming-consistency",
21
+ AiSignalClarity = "ai-signal-clarity",
22
+ AgentGrounding = "agent-grounding",
23
+ TestabilityIndex = "testability-index",
24
+ DocDrift = "doc-drift",
25
+ DependencyHealth = "dependency-health",
26
+ ChangeAmplification = "change-amplification",
27
+ CognitiveLoad = "cognitive-load",
28
+ PatternEntropy = "pattern-entropy",
29
+ ConceptCohesion = "concept-cohesion",
30
+ SemanticDistance = "semantic-distance"
31
+ }
32
+ declare const ToolNameSchema: z.ZodEnum<typeof ToolName>;
33
+ /**
34
+ * Friendly labels for UI display
35
+ */
36
+ declare const FRIENDLY_TOOL_NAMES: Record<ToolName, string>;
37
+ /**
38
+ * Standardized issue types across all AIReady tools.
39
+ */
40
+ declare enum IssueType {
41
+ DuplicatePattern = "duplicate-pattern",
42
+ PatternInconsistency = "pattern-inconsistency",
43
+ ContextFragmentation = "context-fragmentation",
44
+ DependencyHealth = "dependency-health",
45
+ CircularDependency = "circular-dependency",
46
+ DocDrift = "doc-drift",
47
+ NamingInconsistency = "naming-inconsistency",
48
+ NamingQuality = "naming-quality",
49
+ ArchitectureInconsistency = "architecture-inconsistency",
50
+ DeadCode = "dead-code",
51
+ MissingTypes = "missing-types",
52
+ MagicLiteral = "magic-literal",
53
+ BooleanTrap = "boolean-trap",
54
+ AiSignalClarity = "ai-signal-clarity",
55
+ LowTestability = "low-testability",
56
+ AgentNavigationFailure = "agent-navigation-failure",
57
+ AmbiguousApi = "ambiguous-api",
58
+ ChangeAmplification = "change-amplification"
59
+ }
60
+ declare const IssueTypeSchema: z.ZodEnum<typeof IssueType>;
61
+ /**
62
+ * Analysis processing status.
63
+ */
64
+ declare enum AnalysisStatus {
65
+ Processing = "processing",
66
+ Completed = "completed",
67
+ Failed = "failed"
68
+ }
69
+ declare const AnalysisStatusSchema: z.ZodEnum<typeof AnalysisStatus>;
70
+ /**
71
+ * AI Model Context Tiers.
72
+ */
73
+ declare enum ModelTier {
74
+ Compact = "compact",
75
+ Standard = "standard",
76
+ Extended = "extended",
77
+ Frontier = "frontier"
78
+ }
79
+ declare const ModelTierSchema: z.ZodEnum<typeof ModelTier>;
80
+ /**
81
+ * Source code location schema.
82
+ */
83
+ declare const LocationSchema: z.ZodObject<{
84
+ file: z.ZodString;
85
+ line: z.ZodNumber;
86
+ column: z.ZodOptional<z.ZodNumber>;
87
+ endLine: z.ZodOptional<z.ZodNumber>;
88
+ endColumn: z.ZodOptional<z.ZodNumber>;
89
+ }, z.core.$strip>;
90
+ type Location = z.infer<typeof LocationSchema>;
91
+ /**
92
+ * Standard Issue schema.
93
+ */
94
+ declare const IssueSchema: z.ZodObject<{
95
+ type: z.ZodEnum<typeof IssueType>;
96
+ severity: z.ZodEnum<typeof Severity>;
97
+ message: z.ZodString;
98
+ location: z.ZodObject<{
99
+ file: z.ZodString;
100
+ line: z.ZodNumber;
101
+ column: z.ZodOptional<z.ZodNumber>;
102
+ endLine: z.ZodOptional<z.ZodNumber>;
103
+ endColumn: z.ZodOptional<z.ZodNumber>;
104
+ }, z.core.$strip>;
105
+ suggestion: z.ZodOptional<z.ZodString>;
106
+ }, z.core.$strip>;
107
+ type Issue = z.infer<typeof IssueSchema>;
108
+ /**
109
+ * Standard Metrics schema.
110
+ */
111
+ declare const MetricsSchema: z.ZodObject<{
112
+ tokenCost: z.ZodOptional<z.ZodNumber>;
113
+ complexityScore: z.ZodOptional<z.ZodNumber>;
114
+ consistencyScore: z.ZodOptional<z.ZodNumber>;
115
+ docFreshnessScore: z.ZodOptional<z.ZodNumber>;
116
+ aiSignalClarityScore: z.ZodOptional<z.ZodNumber>;
117
+ agentGroundingScore: z.ZodOptional<z.ZodNumber>;
118
+ testabilityScore: z.ZodOptional<z.ZodNumber>;
119
+ docDriftScore: z.ZodOptional<z.ZodNumber>;
120
+ dependencyHealthScore: z.ZodOptional<z.ZodNumber>;
121
+ modelContextTier: z.ZodOptional<z.ZodEnum<typeof ModelTier>>;
122
+ estimatedMonthlyCost: z.ZodOptional<z.ZodNumber>;
123
+ estimatedDeveloperHours: z.ZodOptional<z.ZodNumber>;
124
+ comprehensionDifficultyIndex: z.ZodOptional<z.ZodNumber>;
125
+ totalSymbols: z.ZodOptional<z.ZodNumber>;
126
+ totalExports: z.ZodOptional<z.ZodNumber>;
127
+ }, z.core.$strip>;
128
+ type Metrics = z.infer<typeof MetricsSchema>;
129
+ /**
130
+ * Individual file/module analysis result.
131
+ */
132
+ declare const AnalysisResultSchema: z.ZodObject<{
133
+ fileName: z.ZodString;
134
+ issues: z.ZodArray<z.ZodObject<{
135
+ type: z.ZodEnum<typeof IssueType>;
136
+ severity: z.ZodEnum<typeof Severity>;
137
+ message: z.ZodString;
138
+ location: z.ZodObject<{
139
+ file: z.ZodString;
140
+ line: z.ZodNumber;
141
+ column: z.ZodOptional<z.ZodNumber>;
142
+ endLine: z.ZodOptional<z.ZodNumber>;
143
+ endColumn: z.ZodOptional<z.ZodNumber>;
144
+ }, z.core.$strip>;
145
+ suggestion: z.ZodOptional<z.ZodString>;
146
+ }, z.core.$strip>>;
147
+ metrics: z.ZodObject<{
148
+ tokenCost: z.ZodOptional<z.ZodNumber>;
149
+ complexityScore: z.ZodOptional<z.ZodNumber>;
150
+ consistencyScore: z.ZodOptional<z.ZodNumber>;
151
+ docFreshnessScore: z.ZodOptional<z.ZodNumber>;
152
+ aiSignalClarityScore: z.ZodOptional<z.ZodNumber>;
153
+ agentGroundingScore: z.ZodOptional<z.ZodNumber>;
154
+ testabilityScore: z.ZodOptional<z.ZodNumber>;
155
+ docDriftScore: z.ZodOptional<z.ZodNumber>;
156
+ dependencyHealthScore: z.ZodOptional<z.ZodNumber>;
157
+ modelContextTier: z.ZodOptional<z.ZodEnum<typeof ModelTier>>;
158
+ estimatedMonthlyCost: z.ZodOptional<z.ZodNumber>;
159
+ estimatedDeveloperHours: z.ZodOptional<z.ZodNumber>;
160
+ comprehensionDifficultyIndex: z.ZodOptional<z.ZodNumber>;
161
+ totalSymbols: z.ZodOptional<z.ZodNumber>;
162
+ totalExports: z.ZodOptional<z.ZodNumber>;
163
+ }, z.core.$strip>;
164
+ }, z.core.$strip>;
165
+ type AnalysisResult = z.infer<typeof AnalysisResultSchema>;
166
+ /**
167
+ * Standard spoke tool output contract.
168
+ */
169
+ declare const SpokeOutputSchema: z.ZodObject<{
170
+ results: z.ZodArray<z.ZodObject<{
171
+ fileName: z.ZodString;
172
+ issues: z.ZodArray<z.ZodObject<{
173
+ type: z.ZodEnum<typeof IssueType>;
174
+ severity: z.ZodEnum<typeof Severity>;
175
+ message: z.ZodString;
176
+ location: z.ZodObject<{
177
+ file: z.ZodString;
178
+ line: z.ZodNumber;
179
+ column: z.ZodOptional<z.ZodNumber>;
180
+ endLine: z.ZodOptional<z.ZodNumber>;
181
+ endColumn: z.ZodOptional<z.ZodNumber>;
182
+ }, z.core.$strip>;
183
+ suggestion: z.ZodOptional<z.ZodString>;
184
+ }, z.core.$strip>>;
185
+ metrics: z.ZodObject<{
186
+ tokenCost: z.ZodOptional<z.ZodNumber>;
187
+ complexityScore: z.ZodOptional<z.ZodNumber>;
188
+ consistencyScore: z.ZodOptional<z.ZodNumber>;
189
+ docFreshnessScore: z.ZodOptional<z.ZodNumber>;
190
+ aiSignalClarityScore: z.ZodOptional<z.ZodNumber>;
191
+ agentGroundingScore: z.ZodOptional<z.ZodNumber>;
192
+ testabilityScore: z.ZodOptional<z.ZodNumber>;
193
+ docDriftScore: z.ZodOptional<z.ZodNumber>;
194
+ dependencyHealthScore: z.ZodOptional<z.ZodNumber>;
195
+ modelContextTier: z.ZodOptional<z.ZodEnum<typeof ModelTier>>;
196
+ estimatedMonthlyCost: z.ZodOptional<z.ZodNumber>;
197
+ estimatedDeveloperHours: z.ZodOptional<z.ZodNumber>;
198
+ comprehensionDifficultyIndex: z.ZodOptional<z.ZodNumber>;
199
+ totalSymbols: z.ZodOptional<z.ZodNumber>;
200
+ totalExports: z.ZodOptional<z.ZodNumber>;
201
+ }, z.core.$strip>;
202
+ }, z.core.$strip>>;
203
+ summary: z.ZodAny;
204
+ metadata: z.ZodOptional<z.ZodObject<{
205
+ toolName: z.ZodString;
206
+ version: z.ZodString;
207
+ timestamp: z.ZodString;
208
+ }, z.core.$catchall<z.ZodAny>>>;
209
+ }, z.core.$strip>;
210
+ type SpokeOutput = z.infer<typeof SpokeOutputSchema>;
211
+ /**
212
+ * Master Unified Report contract (CLI -> Platform).
213
+ */
214
+ declare const UnifiedReportSchema: z.ZodObject<{
215
+ summary: z.ZodObject<{
216
+ totalFiles: z.ZodNumber;
217
+ totalIssues: z.ZodNumber;
218
+ criticalIssues: z.ZodNumber;
219
+ majorIssues: z.ZodNumber;
220
+ }, z.core.$strip>;
221
+ results: z.ZodArray<z.ZodObject<{
222
+ fileName: z.ZodString;
223
+ issues: z.ZodArray<z.ZodObject<{
224
+ type: z.ZodEnum<typeof IssueType>;
225
+ severity: z.ZodEnum<typeof Severity>;
226
+ message: z.ZodString;
227
+ location: z.ZodObject<{
228
+ file: z.ZodString;
229
+ line: z.ZodNumber;
230
+ column: z.ZodOptional<z.ZodNumber>;
231
+ endLine: z.ZodOptional<z.ZodNumber>;
232
+ endColumn: z.ZodOptional<z.ZodNumber>;
233
+ }, z.core.$strip>;
234
+ suggestion: z.ZodOptional<z.ZodString>;
235
+ }, z.core.$strip>>;
236
+ metrics: z.ZodObject<{
237
+ tokenCost: z.ZodOptional<z.ZodNumber>;
238
+ complexityScore: z.ZodOptional<z.ZodNumber>;
239
+ consistencyScore: z.ZodOptional<z.ZodNumber>;
240
+ docFreshnessScore: z.ZodOptional<z.ZodNumber>;
241
+ aiSignalClarityScore: z.ZodOptional<z.ZodNumber>;
242
+ agentGroundingScore: z.ZodOptional<z.ZodNumber>;
243
+ testabilityScore: z.ZodOptional<z.ZodNumber>;
244
+ docDriftScore: z.ZodOptional<z.ZodNumber>;
245
+ dependencyHealthScore: z.ZodOptional<z.ZodNumber>;
246
+ modelContextTier: z.ZodOptional<z.ZodEnum<typeof ModelTier>>;
247
+ estimatedMonthlyCost: z.ZodOptional<z.ZodNumber>;
248
+ estimatedDeveloperHours: z.ZodOptional<z.ZodNumber>;
249
+ comprehensionDifficultyIndex: z.ZodOptional<z.ZodNumber>;
250
+ totalSymbols: z.ZodOptional<z.ZodNumber>;
251
+ totalExports: z.ZodOptional<z.ZodNumber>;
252
+ }, z.core.$strip>;
253
+ }, z.core.$strip>>;
254
+ scoring: z.ZodOptional<z.ZodObject<{
255
+ overall: z.ZodNumber;
256
+ rating: z.ZodString;
257
+ timestamp: z.ZodString;
258
+ breakdown: z.ZodArray<z.ZodObject<{
259
+ toolName: z.ZodUnion<readonly [z.ZodEnum<typeof ToolName>, z.ZodString]>;
260
+ score: z.ZodNumber;
261
+ }, z.core.$catchall<z.ZodAny>>>;
262
+ }, z.core.$strip>>;
263
+ }, z.core.$catchall<z.ZodAny>>;
264
+ type UnifiedReport = z.infer<typeof UnifiedReportSchema>;
265
+
42
266
  /**
43
267
  * Cost estimation configuration
44
268
  */
@@ -87,15 +311,7 @@ interface ProductivityImpact {
87
311
  totalCost: number;
88
312
  /** Breakdown by severity */
89
313
  bySeverity: {
90
- critical: {
91
- hours: number;
92
- cost: number;
93
- };
94
- major: {
95
- hours: number;
96
- cost: number;
97
- };
98
- minor: {
314
+ [K in Severity]: {
99
315
  hours: number;
100
316
  cost: number;
101
317
  };
@@ -279,7 +495,7 @@ interface Report {
279
495
  /**
280
496
  * Severity levels for issues
281
497
  */
282
- type GraphIssueSeverity = 'critical' | 'major' | 'minor' | 'info';
498
+ type GraphIssueSeverity = Severity;
283
499
  /**
284
500
  * Base graph node
285
501
  */
@@ -333,7 +549,7 @@ interface GraphData {
333
549
  issues?: {
334
550
  id: string;
335
551
  type: string;
336
- severity: GraphIssueSeverity;
552
+ severity: Severity;
337
553
  nodeIds: string[];
338
554
  message: string;
339
555
  }[];
@@ -561,53 +777,26 @@ interface ScoringConfig {
561
777
  * Default weights for known tools. Weights sum to 100 and read directly as
562
778
  * percentage contribution to the overall score.
563
779
  * New tools get weight of 5 if not specified.
564
- *
565
- * Weight philosophy:
566
- * - pattern-detect (22%): Semantic duplication directly wastes token budget and
567
- * confuses AI with contradictory in-context examples.
568
- * - context-analyzer (19%): Context limits are the primary hard constraint on
569
- * AI effectiveness regardless of model size.
570
- * - consistency (14%): Naming/pattern inconsistency degrades AI intent understanding
571
- * proportionally to codebase size.
572
- * - ai-signal-clarity (11%): Code patterns empirically causing AI to generate
573
- * confidently wrong outputs — critical for agentic use cases.
574
- * - agent-grounding (10%): How well an autonomous agent can navigate unaided —
575
- * increasingly important as agentic workflows grow.
576
- * - testability (10%): AI changes without verifiability create hidden risk.
577
- * - doc-drift (8%): Stale docs actively mislead AI; planned spoke.
578
- * - deps (6%): Dependency health affects AI suggestion accuracy; planned spoke.
579
780
  */
580
781
  declare const DEFAULT_TOOL_WEIGHTS: Record<string, number>;
581
782
  /**
582
- * Tool name normalization map (shorthand -> full name)
783
+ * Tool name normalization map (shorthand -> canonical name)
583
784
  */
584
785
  declare const TOOL_NAME_MAP: Record<string, string>;
585
786
  /**
586
787
  * Model context tiers for context-aware threshold calibration.
587
- *
588
- * As AI models evolve from 32k → 128k → 1M+ context windows, absolute token
589
- * thresholds become meaningless. Use these tiers to adjust context-analyzer
590
- * thresholds relative to the model your team uses.
591
788
  */
592
789
  type ModelContextTier = 'compact' | 'standard' | 'extended' | 'frontier';
593
790
  /**
594
791
  * Context budget thresholds per tier.
595
- * Scores are interpolated between these boundaries.
596
792
  */
597
793
  declare const CONTEXT_TIER_THRESHOLDS: Record<ModelContextTier, {
598
- /** Below this → full score for context budget */
599
794
  idealTokens: number;
600
- /** Above this → critical penalty for context budget */
601
795
  criticalTokens: number;
602
- /** Suggested max import depth before penalty */
603
796
  idealDepth: number;
604
797
  }>;
605
798
  /**
606
799
  * Project-size-adjusted minimum thresholds.
607
- *
608
- * Large codebases structurally accrue more issues. A score of 65 in an
609
- * enterprise codebase is roughly equivalent to 75 in a small project.
610
- * These are recommended minimum passing thresholds by project size.
611
800
  */
612
801
  declare const SIZE_ADJUSTED_THRESHOLDS: Record<string, number>;
613
802
  /**
@@ -619,30 +808,21 @@ declare function getProjectSizeTier(fileCount: number): keyof typeof SIZE_ADJUST
619
808
  */
620
809
  declare function getRecommendedThreshold(fileCount: number, modelTier?: ModelContextTier): number;
621
810
  /**
622
- * Normalize tool name from shorthand to full name
811
+ * Normalize tool name from shorthand to canonical name
623
812
  */
624
813
  declare function normalizeToolName(shortName: string): string;
625
814
  /**
626
- * Get tool weight with fallback priority:
627
- * 1. CLI override
628
- * 2. Tool config scoreWeight
629
- * 3. Default weight
630
- * 4. 10 (for unknown tools)
815
+ * Get tool weight
631
816
  */
632
817
  declare function getToolWeight(toolName: string, toolConfig?: {
633
818
  scoreWeight?: number;
634
819
  }, cliOverride?: number): number;
635
820
  /**
636
- * Parse weight string from CLI (e.g., "patterns:50,context:30")
821
+ * Parse weight string from CLI
637
822
  */
638
823
  declare function parseWeightString(weightStr?: string): Map<string, number>;
639
824
  /**
640
- * Calculate overall AI Readiness Score from multiple tool scores.
641
- *
642
- * Formula: Σ(tool_score × tool_weight) / Σ(active_tool_weights)
643
- *
644
- * This allows dynamic composition - score adjusts automatically
645
- * based on which tools actually ran.
825
+ * Calculate overall AI Readiness Score
646
826
  */
647
827
  declare function calculateOverallScore(toolOutputs: Map<string, ToolScoringOutput>, config?: any, cliWeights?: Map<string, number>): ScoringResult;
648
828
  /**
@@ -651,18 +831,17 @@ declare function calculateOverallScore(toolOutputs: Map<string, ToolScoringOutpu
651
831
  declare function getRating(score: number): ScoringResult['rating'];
652
832
  /**
653
833
  * Convert score to rating with project-size awareness.
654
- * Use this for display to give fairer assessment to large codebases.
655
834
  */
656
835
  declare function getRatingWithContext(score: number, fileCount: number, modelTier?: ModelContextTier): ScoringResult['rating'];
657
836
  /**
658
- * Get rating emoji and color for display
837
+ * Get rating display properties
659
838
  */
660
839
  declare function getRatingDisplay(rating: ScoringResult['rating']): {
661
840
  emoji: string;
662
841
  color: string;
663
842
  };
664
843
  /**
665
- * Format score for display with rating
844
+ * Format score for display
666
845
  */
667
846
  declare function formatScore(result: ScoringResult): string;
668
847
  /**
@@ -683,4 +862,4 @@ declare function formatToolScore(output: ToolScoringOutput): string;
683
862
  */
684
863
  declare function generateHTML(graph: GraphData): string;
685
864
 
686
- export { type AIReadyConfig, type AcceptancePrediction, type AnalysisResult, type BusinessReport, CONTEXT_TIER_THRESHOLDS, type CommonASTNode, type ComprehensionDifficulty, type CostConfig, DEFAULT_TOOL_WEIGHTS, type ExportInfo, type GraphData, type GraphEdge, type GraphIssueSeverity, type GraphMetadata, type GraphNode, type ImportInfo, type Issue, type IssueType, LANGUAGE_EXTENSIONS, Language, type LanguageConfig, type LanguageParser, type Location, type Metrics, type ModelContextTier, type NamingConvention, ParseError, type ParseResult, type ParseStatistics, type ProductivityImpact, type Report, SIZE_ADJUSTED_THRESHOLDS, type ScanOptions, type ScoringConfig, type ScoringResult, type SourceLocation, type SourceRange, TOOL_NAME_MAP, type TechnicalValueChain, type TechnicalValueChainSummary, type TokenBudget, type ToolScoringOutput, calculateOverallScore, formatScore, formatToolScore, generateHTML, getProjectSizeTier, getRating, getRatingDisplay, getRatingWithContext, getRecommendedThreshold, getToolWeight, normalizeToolName, parseWeightString };
865
+ export { type AIReadyConfig, type AcceptancePrediction, type AnalysisResult, AnalysisResultSchema, AnalysisStatus, AnalysisStatusSchema, type BusinessReport, CONTEXT_TIER_THRESHOLDS, type CommonASTNode, type ComprehensionDifficulty, type CostConfig, DEFAULT_TOOL_WEIGHTS, type ExportInfo, FRIENDLY_TOOL_NAMES, type GraphData, type GraphEdge, type GraphIssueSeverity, type GraphMetadata, type GraphNode, type ImportInfo, type Issue, IssueSchema, IssueType, IssueTypeSchema, LANGUAGE_EXTENSIONS, Language, type LanguageConfig, type LanguageParser, type Location, LocationSchema, type Metrics, MetricsSchema, type ModelContextTier, ModelTier, ModelTierSchema, type NamingConvention, ParseError, type ParseResult, type ParseStatistics, type ProductivityImpact, type Report, SIZE_ADJUSTED_THRESHOLDS, type ScanOptions, type ScoringConfig, type ScoringResult, Severity, SeveritySchema, type SourceLocation, type SourceRange, type SpokeOutput, SpokeOutputSchema, TOOL_NAME_MAP, type TechnicalValueChain, type TechnicalValueChainSummary, type TokenBudget, ToolName, ToolNameSchema, type ToolScoringOutput, type UnifiedReport, UnifiedReportSchema, calculateOverallScore, formatScore, formatToolScore, generateHTML, getProjectSizeTier, getRating, getRatingDisplay, getRatingWithContext, getRecommendedThreshold, getToolWeight, normalizeToolName, parseWeightString };