autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
79 lines (78 loc) • 2.5 kB
TypeScript
/**
* @module ProjectDiscoverer
* @description 项目结构发现器 - 统一接口定义
*
* 每个实现负责一种构建系统/包管理器的解析。
* Bootstrap Phase 1 通过 DiscovererRegistry 自动选择匹配的实现。
*/
export interface DiscoveredTarget {
name: string;
path: string;
type: string;
language?: string;
framework?: string | null;
metadata?: Record<string, unknown>;
[key: string]: unknown;
}
export interface DiscoveredFile {
name: string;
path: string;
relativePath: string;
language: string;
[key: string]: unknown;
}
export interface DependencyEdge {
from: string;
to: string;
type: string;
/** 依赖作用域 (如 CMake PUBLIC/PRIVATE, Gradle implementation/api) */
scope?: string;
/** 构建配置 (如 Gradle configuration) */
configuration?: string;
/** 跨语言桥接类型 (如 flutter-engine / native-module / cinterop) */
bridgeType?: string;
}
export interface DependencyGraphLayer {
name: string;
order: number;
accessibleLayers: string[];
}
export interface DependencyGraph {
nodes: (string | {
id: string;
label?: string;
type?: string;
fullPath?: string;
indirect?: boolean;
/** 标签 (如 Nx tags, Bazel visibility) */
tags?: string[];
/** 可见性 (如 Bazel //visibility:public) */
visibility?: string[];
/** Convention 角色 (如 Gradle convention plugin 推断的角色) */
conventionRole?: string;
[key: string]: unknown;
})[];
edges: DependencyEdge[];
/** 层级元数据(来自自研构建系统的分层声明) */
layers?: DependencyGraphLayer[];
}
export declare class ProjectDiscoverer {
/** 检测此 Discoverer 是否适用于给定项目 */
detect(projectRoot: string): Promise<{
match: boolean;
confidence: number;
reason: string;
}>;
/** 加载项目结构(解析配置文件、构建依赖图) */
load(projectRoot: string): Promise<void>;
/** 列出所有 Target/模块 */
listTargets(): Promise<DiscoveredTarget[]>;
/** 获取指定 Target 下的源码文件列表 */
getTargetFiles(target: DiscoveredTarget): Promise<DiscoveredFile[]>;
/** 获取模块间依赖关系图 */
getDependencyGraph(): Promise<DependencyGraph>;
/** Discoverer 标识 */
get id(): string;
/** 人类可读名称 */
get displayName(): string;
}