Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.1 kB · 45 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546/** * Denial tracking infrastructure for permission classifiers. * Tracks consecutive denials and total denials to determine * when to fall back to prompting. */
export type DenialTrackingState = { consecutiveDenials: number totalDenials: number}
export const DENIAL_LIMITS = { maxConsecutive: 3, maxTotal: 20,} as const
export function createDenialTrackingState(): DenialTrackingState { return { consecutiveDenials: 0, totalDenials: 0, }}
export function recordDenial(state: DenialTrackingState): DenialTrackingState { return { ...state, consecutiveDenials: state.consecutiveDenials + 1, totalDenials: state.totalDenials + 1, }}
export function recordSuccess(state: DenialTrackingState): DenialTrackingState { if (state.consecutiveDenials === 0) return state // No change needed return { ...state, consecutiveDenials: 0, }}
export function shouldFallbackToPrompting(state: DenialTrackingState): boolean { return ( state.consecutiveDenials >= DENIAL_LIMITS.maxConsecutive || state.totalDenials >= DENIAL_LIMITS.maxTotal )}