/** * private-filter — 캡처 제외 태그 (Wave 2 W2-5, feature-audit 2026-07-21). * * 사용자가 응답/교정/코드에 민감 내용을 담을 때, 그 범위를 compound 추출·correction * 캡처·solution 저장·세션 인덱싱에서 제외한다. secret-filter(비밀키 커밋 차단)와는 * 별개 축 — 이건 "학습 코퍼스에 넣지 말라"는 사용자 의도 마킹이다. $0-로컬·프라이버시 * 우선 도구에 정합하며, 캡처 신뢰도를 높인다(사용자가 안심하고 교정할 수 있음). * * 마커 (claude-mem 대응 + 편의 라인 마커): * 1. 블록: (다중 라인, 대소문자 무시, 속성/공백 허용) * 2. 라인: // forgen:private (해당 라인 전체 제외) * # forgen:private (동일, 해시 주석 스타일) * /* forgen:private (동일, 블록주석 시작 스타일) * * fail-closed 원칙 (프라이버시 필터의 핵심): 사용자가 닫는 태그를 잊거나 오타를 * 내는 것이 가장 흔한 실수다. 미닫힘 는 *조용히 누출*하지 않고 EOF 까지 * private 로 취급한다(fail-closed). 중첩은 depth 카운팅으로 바깥까지 제거한다. * * 제외는 *조용히* 하지 않는다 — 호출측이 hadPrivate 로 로그/공지할 수 있게 반환한다. */ export interface StripPrivateResult { /** private 범위를 제거한 텍스트. */ cleaned: string; /** 제거된 private 범위가 하나라도 있었는지 (조용한 제외 방지 — 호출측 공지용). */ hadPrivate: boolean; } /** * 블록 및 라인 마커 범위를 제거한다. * 완전히 private 이면 cleaned 는 (공백만 남아) '' 에 가깝다 — isFullyPrivate 로 판정. */ export declare function stripPrivate(text: string): StripPrivateResult; /** * 캡처 대상이 *통째로* private 인지 — private 제거 후 의미 있는 내용이 남지 않으면 true. * (공백/개행만 남는 경우 포함) → 호출측은 저장 자체를 skip. */ export declare function isFullyPrivate(text: string): boolean;