UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

65 lines (64 loc) 3.01 kB
/** * ProjectMarkers — 统一项目探测标准(核心库 & VSCode 扩展共用) * * 所有模块判断「当前目录是否是 AutoSnippet 项目」时,都应该使用此模块提供的常量和函数, * 避免各处硬编码不同的标记目录名导致探测标准不一致。 * * 探测优先级: * 1. 存在 AutoSnippet.boxspec.json 的一级子目录 → 知识库根目录 * 2. 存在 AutoSnippet/ 目录 → 默认知识库根目录 * 3. 存在 .autosnippet/ 目录 → 运行时目录(至少说明曾初始化过) * * 子仓库(Sub-Repo): * 子仓库指通过独立 git 管理的知识数据目录,默认为 `AutoSnippet/recipes/`。 * 可通过 `.autosnippet/config.json` 中的 `core.subRepoDir` 自定义。 * 支持形式:git submodule、git subtree、独立 git init、或无 git(跳过权限探测)。 */ /** 默认知识库顶级目录名 */ export declare const DEFAULT_KNOWLEDGE_BASE_DIR = "AutoSnippet"; /** 默认子仓库相对路径(相对于 projectRoot) */ export declare const DEFAULT_SUB_REPO_DIR = "AutoSnippet/recipes"; /** 运行时配置目录名 */ export declare const RUNTIME_DIR = ".autosnippet"; /** Boxspec 文件名 — 知识库目录标记 */ export declare const SPEC_FILENAME = "AutoSnippet.boxspec.json"; /** * 项目标记目录列表(任一存在即视为 AutoSnippet 项目) * 顺序即优先级:AutoSnippet/ > .autosnippet/ */ export declare const PROJECT_MARKER_DIRS: readonly ["AutoSnippet", ".autosnippet"]; /** * 判断一个目录是否是 AutoSnippet 项目 * 条件:存在 `AutoSnippet/` 或 `.autosnippet/` 子目录 */ export declare function isAutoSnippetProject(folderPath: string): boolean; /** * 探测知识库目录名 * 优先查找含 boxspec.json 的一级子目录,fallback 到默认值 'AutoSnippet' */ export declare function detectKnowledgeBaseDir(projectRoot: string): string; /** * 从 `.autosnippet/config.json` 读取子仓库路径配置 * @returns 子仓库相对路径(相对于 projectRoot),如 'AutoSnippet/recipes' */ export declare function readSubRepoDirFromConfig(projectRoot: string): string | null; /** * 从 `.autosnippet/config.json` 读取子仓库远程 URL 配置 * @returns 远程仓库 URL,如 'https://github.com/team/recipes.git';未配置则返回 null */ export declare function readSubRepoUrlFromConfig(projectRoot: string): string | null; /** * 解析子仓库的绝对路径 * * 优先级: * 1. 传入的 explicitPath 参数 * 2. `.autosnippet/config.json` 中 `core.subRepoDir` * 3. 默认 `AutoSnippet/recipes` * * @param projectRoot 项目根目录 * @param explicitPath 显式指定的子仓库路径(绝对或相对于 projectRoot) * @returns 子仓库绝对路径 */ export declare function resolveSubRepoPath(projectRoot: string, explicitPath?: string): string; /** 检测路径是否为 git 仓库(含 submodule) */ export declare function isGitRepo(dirPath: string): boolean;