autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
129 lines (128 loc) • 4.41 kB
TypeScript
/**
* ModuleService — 多语言统一模块扫描服务
*
* 通过 DiscovererRegistry 自动检测项目类型,
* 统一 SPM / Node / Go / JVM / Python / Generic 等语言的模块扫描、依赖分析、AI 提取管线。
* 语言特有操作(如 SPM 依赖管理)由对应的 Discoverer / Service 直接暴露,不经此类代理。
*/
export declare class ModuleService {
#private;
constructor(projectRoot: string, options?: {
agentFactory?: Record<string, unknown> | null;
container?: Record<string, unknown> | null;
qualityScorer?: Record<string, unknown> | null;
recipeExtractor?: Record<string, unknown> | null;
guardCheckEngine?: Record<string, unknown> | null;
violationsStore?: Record<string, unknown> | null;
});
/** 自动检测项目类型并加载所有匹配的 Discoverer */
load(): Promise<void>;
/** 清除缓存,重新检测 */
reload(): Promise<void>;
/** 列出所有模块/Target(合并所有 Discoverer 的结果) */
listTargets(): Promise<Record<string, unknown>[]>;
/** 获取 Target 的文件列表 */
getTargetFiles(target: string | Record<string, unknown>): Promise<{
name: string;
path: string;
relativePath: string;
language: string;
}[]>;
/**
* 获取依赖关系图
* @param [options]
* @returns [] }>}
*/
getDependencyGraph(options?: {
level?: 'package' | 'target';
}): Promise<{
nodes: Record<string, unknown>[];
edges: {
from: string;
to: string;
type: string;
source: string;
}[];
projectRoot: string;
generatedAt: string;
}>;
/** 项目信息摘要 */
getProjectInfo(): {
projectRoot: string;
projectName: string;
primaryLanguage: string;
discoverers: {
id: string;
name: string;
confidence: number;
}[];
languages: string[];
hasSpm: boolean;
};
/**
* AI 扫描 Target 发现候选项
* 完整管线: 读文件 → AI 提取 → Header 解析 → 工具增强
*/
scanTarget(target: string | Record<string, unknown>, options?: {
onProgress?: (event: Record<string, unknown>) => void;
}): Promise<Record<string, unknown>>;
/** 全项目扫描 — 遍历所有 Target,AI 提取候选 + Guard 审计 */
scanProject(options?: {
maxFiles?: number;
batchSize?: number;
batchTimeout?: number;
totalTimeout?: number;
}): Promise<{
targets: unknown[];
recipes: never[];
guardAudit: null;
scannedFiles: never[];
message: string;
partial?: undefined;
} | {
targets: unknown[];
recipes: Record<string, unknown>[];
guardAudit: Record<string, unknown> | null;
scannedFiles: {
name: unknown;
path: unknown;
targetName: unknown;
}[];
partial: boolean;
message?: undefined;
}>;
/** 刷新模块映射(替代 updateDependencyMap) */
updateModuleMap(options?: Record<string, unknown>): Promise<{
success: boolean;
message: string;
targets: number;
edges: number;
projectRoot: string;
}>;
/**
* 浏览项目目录结构 — 供前端目录选择器使用
* @param [basePath=''] 相对于项目根目录的起始路径
* @param [maxDepth=2] 最大递归深度
* @returns >>}
*/
browseDirectories(basePath?: string, maxDepth?: number): Promise<{
name: string;
path: string;
depth: number;
language: string;
sourceFileCount: number;
hasSourceFiles: boolean;
}[]>;
/**
* 扫描任意文件夹 — 创建虚拟 Target 并走标准 AI 管线
* 用于 Discoverer 未覆盖的目录(自定义目录名、新语言等)
* @param folderPath 相对/绝对路径
* @param [options] scanTarget options (onProgress 等)
* @returns >}
*/
scanFolder(folderPath: string, options?: {
onProgress?: (event: Record<string, unknown>) => void;
}): Promise<Record<string, unknown>>;
/** 静态语义标准化 */
static normalizeSemanticFields(recipe: Record<string, unknown>): Record<string, unknown>;
}