/** * Forgen v0.5.0 — `forgen migrate tenetx` (ADR-010 W1-1, Rule Reclaimer) * * tenetx(forgen 의 레거시 정체성) 및 구버전 forgen 이 ~/.claude/rules/ 와 * /.claude/rules/ 에 남긴 규칙 파일 스프롤을 provenance 기반으로 회수한다. * 2026-07-16 수동 청소(56K→0, 중복 스킬 21개 제거)의 프로덕트화. * * 판정 3단계 (설계: docs/plans/2026-07-16-v0.5.0-execution-plan.md W1-1): * (a) content-hash 가 rendered-rules-manifest 와 일치 → 무프롬프트 삭제 (forgen 이 쓴 그대로) * (b) provenance 마커만 매치 + hash 불일치 → --yes 필요 (사용자 편집 가능성) * (c) 매치 없음 → 불간섭 * * 안전장치: 모든 삭제는 백업 이동(가역), --dry-run 지원, * settings.json/installed_plugins.json 편집은 --apply-settings 명시 동의 시에만. */ export type ReclaimReason = 'manifest-hash' | 'provenance-marker'; export interface ReclaimCandidate { path: string; reason: ReclaimReason; } export interface ReclaimScan { /** (a) 무프롬프트 삭제 가능 — forgen 이 쓴 그대로 */ removable: ReclaimCandidate[]; /** (b) 마커는 있으나 hash 불일치 — --yes 필요 */ needsConfirm: ReclaimCandidate[]; /** settings/registry 의 tenetx 흔적 (사람이 읽는 설명) */ settingsFindings: string[]; } export interface ReclaimOptions { cwd: string; home?: string; dryRun?: boolean; /** marker-only(b) 항목도 삭제에 포함 */ yes?: boolean; /** settings.json / installed_plugins.json 에서 tenetx 항목 직접 제거 */ applySettings?: boolean; } export interface ReclaimResult { removed: string[]; skippedNeedsConfirm: string[]; settingsFindings: string[]; settingsApplied: boolean; backupDir: string | null; dryRun: boolean; } export declare function hasProvenanceMarker(content: string): boolean; /** 스캔만 — 디스크 수정 없음. doctor --reclaim 이 그대로 사용. */ export declare function scanReclaimables(cwd: string, home?: string): ReclaimScan; export declare function runReclaim(opts: ReclaimOptions): ReclaimResult; export declare function printReclaimResult(r: ReclaimResult): void;