(limits: ClaudeAILimits)
| 182 | export const statusListeners: Set<StatusChangeListener> = new Set() |
| 183 | |
| 184 | export function emitStatusChange(limits: ClaudeAILimits) { |
| 185 | currentLimits = limits |
| 186 | statusListeners.forEach(listener => listener(limits)) |
| 187 | const hoursTillReset = Math.round( |
| 188 | (limits.resetsAt ? limits.resetsAt - Date.now() / 1000 : 0) / (60 * 60), |
| 189 | ) |
| 190 | |
| 191 | logEvent('tengu_claudeai_limits_status_changed', { |
| 192 | status: |
| 193 | limits.status as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 194 | unifiedRateLimitFallbackAvailable: limits.unifiedRateLimitFallbackAvailable, |
| 195 | hoursTillReset, |
| 196 | }) |
| 197 | } |
| 198 | |
| 199 | async function makeTestQuery() { |
| 200 | const model = getSmallFastModel() |
no test coverage detected