/** * Authoritative Write Surface — 权威写入面单源。 * * 第一性:SoloForge 的"权威写入目标"有四类——引擎 store(.soloforge/*)、SoloForge 自身维护审查门禁记录 * (docs/ai-maintenance/reviews/*)、hook 承载者(.claude/settings.json)、MCP 配置承载者(.mcp.json)。 * 这四类被两个 PreToolUse hook 共同保护:scope_check 拦 Edit|Write|MultiEdit|NotebookEdit,bash_check 拦 Bash * shell 载体(redirect/tee/cp/mv/sed -i/install/ln/touch...)。原 bash_check 只锚 `.soloforge/`,遗漏 * settings.json/.mcp.json/docs-reviews → "一个 hook 漏的同语义载体,另一个也没补"(铰链在外:AI 用 Bash sed * 改 settings.json 撤 hook / 写 docs-reviews 伪造审查门禁记录,scope_check 不拦 Bash)。本模块把四类权威面 * 单源化,scope_check 与 bash_check 各自派生,消除漂移。 * * 职责边界: * - 负责:定义权威写入面路径 + bash 写载体正则,供 scope_check/bash_check 共享 * - 不负责:不进 denied_paths.ts(checkDeniedPath)——init CLI 的 atomicWriteFileSync 合法写 * settings.json/.mcp.json 会触发 checkDeniedPath 卡死安装器;本模块只供 PreToolUse hook 用。 * 密钥/凭证(.pem/.key 等)仍由 denied_paths.ts 单源。 * * 被谁调用:scope_check(路径判断)、bash_check(shell 载体判断) * 调用谁:无 * * 数据流:路径或 Bash 命令 → 正则匹配权威写入面 → bool * 持久化:无 */ /** 路径是否指向权威写入面(供 scope_check 判断单一路径,含相对/绝对前缀,文件类锚结尾)。 * 供 scope_check 的 DENIED_PATTERNS 派生,与 bash_check 同源。 * 大小写不敏感(i flag):macOS APFS/Windows NTFS 默认 case-insensitive,AI 写 Docs/.../.Soloforge/... * 实际落到 docs/.../.soloforge/...(FS 折叠大小写),原大小写敏感正则漏拦;Linux case-sensitive FS 上会 * 过度拦截 .Soloforge(不同目录),但 AI 无合法理由写大写变体,保守拦截优于漏拦(与"宁可误拦"策略一致)。 */ export declare const AUTHORITATIVE_PATH_PATTERNS: readonly RegExp[]; export declare function isAuthoritativeWritePath(filePath: string): boolean; /** Bash 命令是否写入权威写入面(纯函数,与 isDangerousCommand 共用,递归内层也走此判定)。 * 含 shell 载体(redirect/tee/cp 等)+ powershell 写载体(Set-Content/Out-File 等写权威面路径)。 */ export declare function bashWritesAuthoritativeSurface(command: string): boolean; /** 路径是否指向 secret 读保护区(供 scope_check 拦 Read 工具读 HMAC 密钥)。大小写不敏感(同权威面,防 .Soloforge/Secret 变体)。 */ export declare const SECRET_READ_PROTECT_PATTERN: RegExp; export declare function isSecretReadPath(filePath: string): boolean; export declare function bashReadsSecret(command: string): boolean; /** SoloForge HMAC 密钥在 OS keychain 的 service 名(单源:provenance.ts import 此常量,bash_check 共享,避免双源漂移)。 */ export declare const REVIEW_KEYCHAIN_SERVICE = "com.soloforge.review-hmac"; export declare function bashReadsKeychain(command: string): boolean; export declare function bashDeletesKeychain(command: string): boolean; export declare function bashWritesKeychain(command: string): boolean; export declare function bashReadsDpapiSecret(command: string): boolean;