refactor: wave 1 - extract leaf modules, rename catch-all files, split index.ts hooks
- Split 25+ index.ts files into hook.ts + extracted modules - Rename all catch-all utils.ts/helpers.ts to domain-specific names - Split src/tools/lsp/ into ~15 focused modules - Split src/tools/delegate-task/ into ~18 focused modules - Separate shared types from implementation - 155 files changed, 60+ new files created - All typecheck clean, 61 tests pass
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import type { PendingCall } from "./types"
|
||||
|
||||
const pendingCalls = new Map<string, PendingCall>()
|
||||
const PENDING_CALL_TTL = 60_000
|
||||
|
||||
let cleanupIntervalStarted = false
|
||||
|
||||
function cleanupOldPendingCalls(): void {
|
||||
const now = Date.now()
|
||||
for (const [callID, call] of pendingCalls) {
|
||||
if (now - call.timestamp > PENDING_CALL_TTL) {
|
||||
pendingCalls.delete(callID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function startPendingCallCleanup(): void {
|
||||
if (cleanupIntervalStarted) return
|
||||
cleanupIntervalStarted = true
|
||||
setInterval(cleanupOldPendingCalls, 10_000)
|
||||
}
|
||||
|
||||
export function registerPendingCall(callID: string, pendingCall: PendingCall): void {
|
||||
pendingCalls.set(callID, pendingCall)
|
||||
}
|
||||
|
||||
export function takePendingCall(callID: string): PendingCall | undefined {
|
||||
const pendingCall = pendingCalls.get(callID)
|
||||
if (!pendingCall) return undefined
|
||||
pendingCalls.delete(callID)
|
||||
return pendingCall
|
||||
}
|
||||
Reference in New Issue
Block a user