Files
orca/src/main/ipc/rate-limits.ts
T
kazu-42andBrennan Benson 4a71a0ecb2 feat(mobile): add safe Codex rate-limit resets (#9394)
* feat(mobile): add safe Codex rate-limit resets

* fix(mobile): address reset credit review feedback

* review: purge removed-account reset attempts, shared capability constant, rebase test mocks

* review: preserve host compatibility and reset durability

* fix(mobile): recover reset capability after cutover

* fix(mobile): validate runtime capability payloads

* fix(mobile): enforce capability payload contract

* fix(mobile): route mock terminals to selected worktree

* test(mobile): pin malformed probe retry behavior

---------

Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
2026-07-24 14:42:04 -07:00

34 lines
1.5 KiB
TypeScript

import { ipcMain } from 'electron'
import type { RateLimitService } from '../rate-limits/service'
import type { RateLimitRuntimeTarget } from '../../shared/rate-limit-types'
import type { CodexAccountService } from '../codex-accounts/service'
export function registerRateLimitHandlers(
rateLimits: RateLimitService,
codexAccounts: CodexAccountService
): void {
ipcMain.handle('rateLimits:get', () => rateLimits.getState())
ipcMain.handle('rateLimits:refresh', () => rateLimits.refresh())
ipcMain.handle('rateLimits:refreshCodexForTarget', (_event, target: RateLimitRuntimeTarget) =>
rateLimits.refreshCodexForTarget(target)
)
// Why: managed desktop resets must share the mobile mutation queue and durable ledger.
ipcMain.handle('rateLimits:consumeCodexResetCredit', () =>
codexAccounts.consumeCurrentRateLimitResetCredit()
)
ipcMain.handle('rateLimits:refreshClaudeForTarget', (_event, target: RateLimitRuntimeTarget) =>
rateLimits.refreshClaudeForTarget(target)
)
ipcMain.handle('rateLimits:setPollingInterval', (_event, ms: number) =>
rateLimits.setPollingInterval(ms)
)
ipcMain.handle('rateLimits:fetchInactiveClaudeAccounts', () =>
rateLimits.fetchInactiveClaudeAccountsOnOpen()
)
ipcMain.handle('rateLimits:fetchInactiveCodexAccounts', () =>
rateLimits.fetchInactiveCodexAccountsOnOpen()
)
ipcMain.handle('rateLimits:refreshMiniMax', () => rateLimits.refresh())
ipcMain.handle('rateLimits:refreshGrok', () => rateLimits.refreshGrok())
}