/** * 给定相对源根的路径分段(空数组 = 源根本身),判断是否进可分发树。hash 的 walk、copy 的 filter、 * git 物化共用此一处,保证三者完全一致。 * * 关键:检查**每一段**而非只看叶子。本地 walk / cpSync 是逐层下降、命中目录即剪枝,只看叶子也够; * 但 git ls-tree 给的是**扁平路径**(如 `.omk/samples.json`),只看叶子 `samples.json` 会让 `.omk` * 内容漏过。故:任一段命中全局排除即排除;首段命中 root-only(evolve)即排除(嵌套同名是合法资产)。 */ export declare function isDistributablePath(segments: string[]): boolean; /** * cpSync 的 filter,口径与 hashArtifactSource 的 walk 完全一致(「分发出去的 == 算进 hash 的」): * 源根永远拷;软链跳过(避免软链目标改了却不触发 drift、回避软链环);其余按 isDistributablePath * 逐段判定。install 分发(copyArtifactToTarget)与 eval 隔离副本物化(materializeIsolatedCopy) * 共用此一处 —— copy / hash / 副本三者绝不发散。 */ export declare function distributableCopyFilter(sourceRoot: string): (src: string) => boolean; /** * artifact 内容 hash —— drift baseline 与 evidence 绑定的依据。 * - 文件-skill:单个 .md 的字节; * - 目录-skill:覆盖**整棵可分发目录树**(SKILL.md + references/ 等资产,但排除 .omk / .git / * evolve 等评测迭代产物),按相对路径排序后把每个文件的`路径 + 字节长度 + 内容`喂进同一个 * sha256 —— 改任意资产都会令 hash 变化、drift 不漏;只补样本则 hash 不动。 * 用 createHash 直接喂 Buffer(字节级,二进制资产也稳;分隔符是运行时字节,源码里不引入任何不可见字符)。 * 读时(list / drift 检查 / eval 报告)用同一函数重算比对。 */ /** sha256 前 12 位的字节摘要 —— 单文件 / 单 blob 内容指纹的共用底座(整树哈、git 单文件哈都走它)。 */ export declare function hashBytes(buf: Buffer): string; export declare function hashArtifactSource(source: string, isDirectorySkill: boolean): string;