fix(hooks): improve auto update checker
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import type { PluginInput } from "@opencode-ai/plugin"
|
import type { PluginInput } from "@opencode-ai/plugin"
|
||||||
import { log } from "../../shared/logger"
|
import { log } from "../../shared/logger"
|
||||||
import { getCachedVersion, getLocalDevVersion } from "./checker"
|
|
||||||
import type { AutoUpdateCheckerOptions } from "./types"
|
import type { AutoUpdateCheckerOptions } from "./types"
|
||||||
|
import { getCachedVersion, getLocalDevVersion } from "./checker"
|
||||||
import { runBackgroundUpdateCheck } from "./hook/background-update-check"
|
import { runBackgroundUpdateCheck } from "./hook/background-update-check"
|
||||||
import { showConfigErrorsIfAny } from "./hook/config-errors-toast"
|
import { showConfigErrorsIfAny } from "./hook/config-errors-toast"
|
||||||
import { updateAndShowConnectedProvidersCacheStatus } from "./hook/connected-providers-status"
|
import { updateAndShowConnectedProvidersCacheStatus } from "./hook/connected-providers-status"
|
||||||
@@ -9,7 +9,37 @@ import { refreshModelCapabilitiesOnStartup } from "./hook/model-capabilities-sta
|
|||||||
import { showModelCacheWarningIfNeeded } from "./hook/model-cache-warning"
|
import { showModelCacheWarningIfNeeded } from "./hook/model-cache-warning"
|
||||||
import { showLocalDevToast, showVersionToast } from "./hook/startup-toasts"
|
import { showLocalDevToast, showVersionToast } from "./hook/startup-toasts"
|
||||||
|
|
||||||
export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdateCheckerOptions = {}) {
|
interface AutoUpdateCheckerDeps {
|
||||||
|
getCachedVersion: typeof getCachedVersion
|
||||||
|
getLocalDevVersion: typeof getLocalDevVersion
|
||||||
|
showConfigErrorsIfAny: typeof showConfigErrorsIfAny
|
||||||
|
updateAndShowConnectedProvidersCacheStatus: typeof updateAndShowConnectedProvidersCacheStatus
|
||||||
|
refreshModelCapabilitiesOnStartup: typeof refreshModelCapabilitiesOnStartup
|
||||||
|
showModelCacheWarningIfNeeded: typeof showModelCacheWarningIfNeeded
|
||||||
|
showLocalDevToast: typeof showLocalDevToast
|
||||||
|
showVersionToast: typeof showVersionToast
|
||||||
|
runBackgroundUpdateCheck: typeof runBackgroundUpdateCheck
|
||||||
|
log: typeof log
|
||||||
|
}
|
||||||
|
|
||||||
|
const defaultDeps: AutoUpdateCheckerDeps = {
|
||||||
|
getCachedVersion,
|
||||||
|
getLocalDevVersion,
|
||||||
|
showConfigErrorsIfAny,
|
||||||
|
updateAndShowConnectedProvidersCacheStatus,
|
||||||
|
refreshModelCapabilitiesOnStartup,
|
||||||
|
showModelCacheWarningIfNeeded,
|
||||||
|
showLocalDevToast,
|
||||||
|
showVersionToast,
|
||||||
|
runBackgroundUpdateCheck,
|
||||||
|
log,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createAutoUpdateCheckerHook(
|
||||||
|
ctx: PluginInput,
|
||||||
|
options: AutoUpdateCheckerOptions = {},
|
||||||
|
deps: AutoUpdateCheckerDeps = defaultDeps,
|
||||||
|
) {
|
||||||
const {
|
const {
|
||||||
showStartupToast = true,
|
showStartupToast = true,
|
||||||
isSisyphusEnabled = false,
|
isSisyphusEnabled = false,
|
||||||
@@ -40,32 +70,32 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat
|
|||||||
const props = event.properties as { info?: { parentID?: string } } | undefined
|
const props = event.properties as { info?: { parentID?: string } } | undefined
|
||||||
if (props?.info?.parentID) return
|
if (props?.info?.parentID) return
|
||||||
|
|
||||||
hasChecked = true
|
hasChecked = true
|
||||||
|
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
const cachedVersion = getCachedVersion()
|
const cachedVersion = deps.getCachedVersion()
|
||||||
const localDevVersion = getLocalDevVersion(ctx.directory)
|
const localDevVersion = deps.getLocalDevVersion(ctx.directory)
|
||||||
const displayVersion = localDevVersion ?? cachedVersion
|
const displayVersion = localDevVersion ?? cachedVersion
|
||||||
|
|
||||||
await showConfigErrorsIfAny(ctx)
|
await deps.showConfigErrorsIfAny(ctx)
|
||||||
await updateAndShowConnectedProvidersCacheStatus(ctx)
|
await deps.updateAndShowConnectedProvidersCacheStatus(ctx)
|
||||||
await refreshModelCapabilitiesOnStartup(modelCapabilities)
|
await deps.refreshModelCapabilitiesOnStartup(modelCapabilities)
|
||||||
await showModelCacheWarningIfNeeded(ctx)
|
await deps.showModelCacheWarningIfNeeded(ctx)
|
||||||
|
|
||||||
if (localDevVersion) {
|
if (localDevVersion) {
|
||||||
if (showStartupToast) {
|
if (showStartupToast) {
|
||||||
showLocalDevToast(ctx, displayVersion, isSisyphusEnabled).catch(() => {})
|
deps.showLocalDevToast(ctx, displayVersion, isSisyphusEnabled).catch(() => {})
|
||||||
}
|
}
|
||||||
log("[auto-update-checker] Local development mode")
|
deps.log("[auto-update-checker] Local development mode")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showStartupToast) {
|
if (showStartupToast) {
|
||||||
showVersionToast(ctx, displayVersion, getToastMessage(false)).catch(() => {})
|
deps.showVersionToast(ctx, displayVersion, getToastMessage(false)).catch(() => {})
|
||||||
}
|
}
|
||||||
|
|
||||||
runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage).catch((err) => {
|
deps.runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage).catch((err) => {
|
||||||
log("[auto-update-checker] Background update check failed:", err)
|
deps.log("[auto-update-checker] Background update check failed:", err)
|
||||||
})
|
})
|
||||||
}, 0)
|
}, 0)
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user