π File detail
utils/permissions/denialTracking.ts
π― Use case
This file lives under βutils/β, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, β¦). On the API surface it exposes DenialTrackingState, DENIAL_LIMITS, createDenialTrackingState, recordDenial, and recordSuccess (and more) β mainly functions, hooks, or classes. What the file header says: Denial tracking infrastructure for permission classifiers. Tracks consecutive denials and total denials to determine when to fall back to prompting.
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
Denial tracking infrastructure for permission classifiers. Tracks consecutive denials and total denials to determine when to fall back to prompting.
π€ Exports (heuristic)
DenialTrackingStateDENIAL_LIMITScreateDenialTrackingStaterecordDenialrecordSuccessshouldFallbackToPrompting
π₯οΈ Source preview
/**
* 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
)
}