source dump of claude code
at main 45 lines 1.1 kB view raw
1/** 2 * Denial tracking infrastructure for permission classifiers. 3 * Tracks consecutive denials and total denials to determine 4 * when to fall back to prompting. 5 */ 6 7export type DenialTrackingState = { 8 consecutiveDenials: number 9 totalDenials: number 10} 11 12export const DENIAL_LIMITS = { 13 maxConsecutive: 3, 14 maxTotal: 20, 15} as const 16 17export function createDenialTrackingState(): DenialTrackingState { 18 return { 19 consecutiveDenials: 0, 20 totalDenials: 0, 21 } 22} 23 24export function recordDenial(state: DenialTrackingState): DenialTrackingState { 25 return { 26 ...state, 27 consecutiveDenials: state.consecutiveDenials + 1, 28 totalDenials: state.totalDenials + 1, 29 } 30} 31 32export function recordSuccess(state: DenialTrackingState): DenialTrackingState { 33 if (state.consecutiveDenials === 0) return state // No change needed 34 return { 35 ...state, 36 consecutiveDenials: 0, 37 } 38} 39 40export function shouldFallbackToPrompting(state: DenialTrackingState): boolean { 41 return ( 42 state.consecutiveDenials >= DENIAL_LIMITS.maxConsecutive || 43 state.totalDenials >= DENIAL_LIMITS.maxTotal 44 ) 45}