fix(auto-update-checker): defer npm registry check until first idle
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -3,6 +3,7 @@ import { log } from "../../shared/logger"
|
||||
import type { AutoUpdateCheckerOptions } from "./types"
|
||||
import { getCachedVersion, getLocalDevVersion } from "./checker"
|
||||
import { runBackgroundUpdateCheck } from "./hook/background-update-check"
|
||||
import { scheduleDeferredIdleCheck } from "./hook/deferred-idle-check"
|
||||
import { showConfigErrorsIfAny } from "./hook/config-errors-toast"
|
||||
import { updateAndShowConnectedProvidersCacheStatus } from "./hook/connected-providers-status"
|
||||
import { refreshModelCapabilitiesOnStartup } from "./hook/model-capabilities-status"
|
||||
@@ -60,44 +61,45 @@ export function createAutoUpdateCheckerHook(
|
||||
}
|
||||
|
||||
let hasChecked = false
|
||||
let hasScheduled = false
|
||||
|
||||
return {
|
||||
event: ({ event }: { event: { type: string; properties?: unknown } }) => {
|
||||
if (event.type !== "session.created") return
|
||||
if (event.type !== "session.idle") return
|
||||
if (isCliRunMode) return
|
||||
if (hasChecked) return
|
||||
if (hasChecked || hasScheduled) return
|
||||
|
||||
const props = event.properties as { info?: { parentID?: string } } | undefined
|
||||
if (props?.info?.parentID) return
|
||||
hasScheduled = true
|
||||
|
||||
scheduleDeferredIdleCheck(() => {
|
||||
hasChecked = true
|
||||
void (async () => {
|
||||
const cachedVersion = deps.getCachedVersion()
|
||||
const localDevVersion = deps.getLocalDevVersion(ctx.directory)
|
||||
const displayVersion = localDevVersion ?? cachedVersion
|
||||
|
||||
setTimeout(async () => {
|
||||
const cachedVersion = deps.getCachedVersion()
|
||||
const localDevVersion = deps.getLocalDevVersion(ctx.directory)
|
||||
const displayVersion = localDevVersion ?? cachedVersion
|
||||
await deps.showConfigErrorsIfAny(ctx)
|
||||
await deps.updateAndShowConnectedProvidersCacheStatus(ctx)
|
||||
await deps.refreshModelCapabilitiesOnStartup(modelCapabilities)
|
||||
await deps.showModelCacheWarningIfNeeded(ctx)
|
||||
|
||||
await deps.showConfigErrorsIfAny(ctx)
|
||||
await deps.updateAndShowConnectedProvidersCacheStatus(ctx)
|
||||
await deps.refreshModelCapabilitiesOnStartup(modelCapabilities)
|
||||
await deps.showModelCacheWarningIfNeeded(ctx)
|
||||
|
||||
if (localDevVersion) {
|
||||
if (showStartupToast) {
|
||||
deps.showLocalDevToast(ctx, displayVersion, isSisyphusEnabled).catch(() => {})
|
||||
if (localDevVersion) {
|
||||
if (showStartupToast) {
|
||||
deps.showLocalDevToast(ctx, displayVersion, isSisyphusEnabled).catch(() => {})
|
||||
}
|
||||
deps.log("[auto-update-checker] Local development mode")
|
||||
return
|
||||
}
|
||||
deps.log("[auto-update-checker] Local development mode")
|
||||
return
|
||||
}
|
||||
|
||||
if (showStartupToast) {
|
||||
deps.showVersionToast(ctx, displayVersion, getToastMessage(false)).catch(() => {})
|
||||
}
|
||||
if (showStartupToast) {
|
||||
deps.showVersionToast(ctx, displayVersion, getToastMessage(false)).catch(() => {})
|
||||
}
|
||||
|
||||
deps.runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage).catch((err) => {
|
||||
deps.log("[auto-update-checker] Background update check failed:", err)
|
||||
})
|
||||
}, 0)
|
||||
deps.runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage).catch((err) => {
|
||||
deps.log("[auto-update-checker] Background update check failed:", err)
|
||||
})
|
||||
})()
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user