UNPKG

@git.zone/tsdoc

Version:

A comprehensive TypeScript documentation tool that leverages AI to generate and enhance project documentation, including dynamic README creation, API docs via TypeDoc, and smart commit message generation.

74 lines (73 loc) 2.52 kB
import type { IFileMetadata, IAnalysisResult, TaskType, IPrioritizationWeights, ITierConfig } from './types.js'; /** * ContextAnalyzer provides intelligent file selection and prioritization * based on dependency analysis, task relevance, and configurable weights */ export declare class ContextAnalyzer { private projectRoot; private weights; private tiers; /** * Creates a new ContextAnalyzer * @param projectRoot - Root directory of the project * @param weights - Prioritization weights * @param tiers - Tier configuration */ constructor(projectRoot: string, weights?: Partial<IPrioritizationWeights>, tiers?: Partial<ITierConfig>); /** * Analyzes files for a specific task type * @param metadata - Array of file metadata to analyze * @param taskType - Type of task being performed * @param changedFiles - Optional list of recently changed files (for commits) * @returns Analysis result with scored files */ analyze(metadata: IFileMetadata[], taskType: TaskType, changedFiles?: string[]): Promise<IAnalysisResult>; /** * Builds a dependency graph from file metadata * @param metadata - Array of file metadata * @returns Dependency graph as a map */ private buildDependencyGraph; /** * Extracts import statements from file contents * @param contents - File contents * @param filePath - Path of the file being analyzed * @returns Array of absolute paths to imported files */ private extractImports; /** * Calculates centrality scores for all nodes in the dependency graph * Uses a simplified PageRank-like algorithm * @param graph - Dependency graph */ private calculateCentrality; /** * Analyzes a single file * @param meta - File metadata * @param taskType - Task being performed * @param graph - Dependency graph * @param changedFiles - Recently changed files * @returns File analysis */ private analyzeFile; /** * Calculates task-specific relevance score */ private calculateRelevance; /** * Calculates efficiency score (information density) */ private calculateEfficiency; /** * Calculates recency score for changed files */ private calculateRecency; /** * Assigns a tier based on importance score */ private assignTier; /** * Generates a human-readable reason for the score */ private generateReason; }