export declare const MAX_TRACKED_SENSITIVE_VALUES = 1024; export declare const MAX_TRACKED_SENSITIVE_VALUE_BYTES: number; export declare const MAX_INSPECTED_BYTES_PER_SOURCE: number; export interface SensitiveValues { values: Set; exhausted: boolean; inspectedBytes: number; } /** * 予算超過の理由。挙動はいずれも同じ exhaust(fail-closed)だが、 * 誤爆調査のためにどの上限に当たったかを失敗メッセージへ残す。 */ export type SensitiveBudgetExhaustReason = 'candidate_count' | 'candidate_bytes' | 'source_scan'; /** * 予算は「検査した量」ではなく「保持している機密候補」に課金する。 * 検査量課金だと Write/Edit 本文のような非機密の大きな入力が予算を食い潰し、 * 健全な長時間実行が fail-closed に到達してしまう(実測で発生)。 * 保持候補への課金なら、予算超過 = 実際に大量の機密候補を追跡できなくなった * ときだけであり、そのときの exhaust(以降すべて [REDACTED])は漏洩防止として正当。 * 単一ソースの検査上限(バイト・ノード数)は、走査コストとフラット化攻撃への * 防護として別途残す。 */ export declare class BoundedSensitiveValues { readonly values: Set; exhausted: boolean; exhaustReason: SensitiveBudgetExhaustReason | undefined; storedValueBytes: number; collect(source: unknown): void; reset(): void; exhaust(reason?: SensitiveBudgetExhaustReason): void; } export declare function createBoundedSensitiveValues(): BoundedSensitiveValues; export interface SensitiveStringReplacement { readonly value: unknown; } export type SensitiveStringReplacer = (value: string, key: string | undefined) => SensitiveStringReplacement | undefined; export declare function sanitizeSensitiveValue(value: unknown, key?: string): unknown; export declare function sanitizeSensitiveValueWithStringReplacer(value: unknown, replacer: SensitiveStringReplacer): unknown; export declare function sanitizeSensitiveValueWithKnownValues(value: unknown, source: unknown, key?: string): unknown; export declare function sanitizeSensitiveTextWithKnownValues(text: string, source: unknown): string; export declare function collectSensitiveStringValues(source: unknown, maxInspectedBytes?: number): SensitiveValues; //# sourceMappingURL=sensitive-value.d.ts.map