import type { PackSource } from "../schema.js"; /** manifest 解析结果。ok=false 表示文件不存在/解析失败/校验不过——调用方走默认值。 */ export interface ParsedManifest { /** 文件存在且 YAML 解析成功(name/version/description 校验失败仍 ok=true,错误进 warnings)。 */ ok: boolean; /** 合法 kebab-case name(ok=true 且 manifest 有 name 且校验通过时) */ name?: string; /** 合法 semver(ok=true 且 manifest 有 version 且校验通过时) */ version?: string; /** 原样保留(仅诊断用) */ description?: string; /** 非致命问题(name 非 kebab / version 非 semver / 保留名冲突 / top-level 不是 mapping) */ warnings: string[]; } /** * 解析 /pt-asset-pack.yaml(可选)。 * - 文件不存在 → { ok: false, warnings: [] }(隐式 pack,走 basename 兜底) * - 文件存在但解析失败 → { ok: false, warnings: ["manifest parse failed: ..."] } * - name 非 kebab-case / 保留名冲突 → warnings + name 丢弃(走 basename) * - version 非 semver → warnings + version 丢弃(走 "0.0.0") * * v15.x builtin 特例:source="builtin" 时 manifest.name 等于保留名合法 * (位置 alias @pt = 身份 alias 合一;builtin pack 的"身份"就是"内置")。 * project/settings pack 仍禁用保留名(保护位置 slot)。 * * 永远不抛异常(§2.2 校验规则:解析失败当无 manifest 处理,不阻断加载)。 */ export declare function parseManifest(rootDir: string, source?: PackSource): Promise;