fix(installer): add upgrade path safety checks

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-04-08 13:26:33 +09:00
parent 01f7d5e2a8
commit cdd6e88557
4 changed files with 48 additions and 1 deletions
@@ -4,6 +4,7 @@ import type { DetectedConfig } from "../types"
import { getOmoConfigPath } from "./config-context"
import { detectConfigFormat } from "./opencode-config-format"
import { parseOpenCodeConfigFileWithError } from "./parse-opencode-config-file"
import { extractVersionFromPluginEntry } from "./version-compatibility"
function detectProvidersFromOmoConfig(): {
hasOpenAI: boolean
@@ -60,9 +61,14 @@ function isOurPlugin(plugin: string): boolean {
plugin === LEGACY_PLUGIN_NAME || plugin.startsWith(`${LEGACY_PLUGIN_NAME}@`)
}
function findOurPluginEntry(plugins: string[]): string | null {
return plugins.find(isOurPlugin) ?? null
}
export function detectCurrentConfig(): DetectedConfig {
const result: DetectedConfig = {
isInstalled: false,
installedVersion: null,
hasClaude: true,
isMax20: true,
hasOpenAI: true,
@@ -86,7 +92,12 @@ export function detectCurrentConfig(): DetectedConfig {
const openCodeConfig = parseResult.config
const plugins = openCodeConfig.plugin ?? []
result.isInstalled = plugins.some(isOurPlugin)
const ourPluginEntry = findOurPluginEntry(plugins)
result.isInstalled = !!ourPluginEntry
if (ourPluginEntry) {
result.installedVersion = extractVersionFromPluginEntry(ourPluginEntry)
}
if (!result.isInstalled) {
return result