From 41b9b4d724a2def91ae1f2ff2708e41a305b4bdd Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 10 Apr 2026 11:16:08 +0900 Subject: [PATCH] refactor(doctor): use plugin-identity constants for package names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update doctor checks to use centralized constants from plugin-identity: - PACKAGE_NAME now references PUBLISHED_PACKAGE_NAME - System check uses PLUGIN_NAME and LEGACY_PLUGIN_NAME for plugin registration validation and legacy name detection - Formatters updated for consistency 🤖 Generated with assistance of OhMyOpenCode --- src/cli/doctor/checks/system.test.ts | 2 +- src/cli/doctor/checks/system.ts | 6 +++--- src/cli/doctor/constants.ts | 4 ++-- src/cli/doctor/format-default.ts | 4 +++- src/cli/doctor/format-verbose.ts | 3 ++- src/cli/doctor/formatter.test.ts | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/cli/doctor/checks/system.test.ts b/src/cli/doctor/checks/system.test.ts index 5f39289a3..96d8bde00 100644 --- a/src/cli/doctor/checks/system.test.ts +++ b/src/cli/doctor/checks/system.test.ts @@ -125,7 +125,7 @@ describe("system check", () => { //#then const outdatedIssue = result.issues.find((issue) => issue.title === "Loaded plugin is outdated") expect(outdatedIssue?.fix).toBe( - `Update: cd "/Users/test/Library/Caches/opencode with spaces" && bun add ${PLUGIN_NAME}@canary` + 'Update: cd "/Users/test/Library/Caches/opencode with spaces" && bun add oh-my-opencode@canary' ) }) }) diff --git a/src/cli/doctor/checks/system.ts b/src/cli/doctor/checks/system.ts index ed58ad04a..8df2f6c11 100644 --- a/src/cli/doctor/checks/system.ts +++ b/src/cli/doctor/checks/system.ts @@ -6,7 +6,7 @@ import { findOpenCodeBinary, getOpenCodeVersion, compareVersions } from "./syste import { getPluginInfo } from "./system-plugin" import { getLatestPluginVersion, getLoadedPluginVersion, getSuggestedInstallTag } from "./system-loaded-version" import { parseJsonc } from "../../../shared" -import { PLUGIN_NAME, LEGACY_PLUGIN_NAME } from "../../../shared/plugin-identity" +import { PUBLISHED_PACKAGE_NAME, PLUGIN_NAME, LEGACY_PLUGIN_NAME } from "../../../shared/plugin-identity" function isConfigValid(configPath: string | null): boolean { if (!configPath) return true @@ -85,7 +85,7 @@ export async function checkSystem(): Promise { issues.push({ title: `${PLUGIN_NAME} is not registered`, description: "Plugin entry is missing from OpenCode configuration.", - fix: `Run: bunx ${PLUGIN_NAME} install`, + fix: `Run: bunx ${PUBLISHED_PACKAGE_NAME} install`, severity: "error", affects: ["all agents"], }) @@ -125,7 +125,7 @@ export async function checkSystem(): Promise { issues.push({ title: "Loaded plugin is outdated", description: `Loaded ${systemInfo.loadedVersion}, latest ${latestVersion}.`, - fix: `Update: cd "${loadedInfo.cacheDir}" && bun add ${PLUGIN_NAME}@${installTag}`, + fix: `Update: cd "${loadedInfo.cacheDir}" && bun add ${PUBLISHED_PACKAGE_NAME}@${installTag}`, severity: "warning", affects: ["plugin features"], }) diff --git a/src/cli/doctor/constants.ts b/src/cli/doctor/constants.ts index 39bab0568..ea2c43a98 100644 --- a/src/cli/doctor/constants.ts +++ b/src/cli/doctor/constants.ts @@ -1,5 +1,5 @@ import color from "picocolors" -import { PLUGIN_NAME } from "../../shared" +import { PUBLISHED_PACKAGE_NAME } from "../../shared" export const SYMBOLS = { check: color.green("\u2713"), @@ -39,6 +39,6 @@ export const EXIT_CODES = { export const MIN_OPENCODE_VERSION = "1.4.0" -export const PACKAGE_NAME = PLUGIN_NAME +export const PACKAGE_NAME = PUBLISHED_PACKAGE_NAME export const OPENCODE_BINARIES = ["opencode", "opencode-desktop"] as const diff --git a/src/cli/doctor/format-default.ts b/src/cli/doctor/format-default.ts index dbf9f108d..41fe589f6 100644 --- a/src/cli/doctor/format-default.ts +++ b/src/cli/doctor/format-default.ts @@ -1,4 +1,5 @@ import color from "picocolors" +import { PLUGIN_NAME } from "../../shared" import type { DoctorResult } from "./types" import { SYMBOLS } from "./constants" import { formatHeader, formatIssue } from "./format-shared" @@ -15,7 +16,8 @@ export function formatDefault(result: DoctorResult): string { const pluginVer = result.systemInfo.pluginVersion ?? "unknown" lines.push( ` ${color.green(SYMBOLS.check)} ${color.green( - `System OK (opencode ${opencodeVer} · oh-my-opencode ${pluginVer})` + `System OK (opencode ${opencodeVer} · oh-my-opencode ${pluginVer})` + .replace("oh-my-opencode", PLUGIN_NAME) )}` ) } else { diff --git a/src/cli/doctor/format-verbose.ts b/src/cli/doctor/format-verbose.ts index 1d1d14eae..ed78373a6 100644 --- a/src/cli/doctor/format-verbose.ts +++ b/src/cli/doctor/format-verbose.ts @@ -1,4 +1,5 @@ import color from "picocolors" +import { PLUGIN_NAME } from "../../shared" import type { DoctorResult } from "./types" import { formatHeader, formatStatusSymbol, formatIssue } from "./format-shared" @@ -12,7 +13,7 @@ export function formatVerbose(result: DoctorResult): string { lines.push(`${color.bold("System Information")}`) lines.push(`${color.dim("\u2500".repeat(40))}`) lines.push(` ${formatStatusSymbol("pass")} opencode ${systemInfo.opencodeVersion ?? "unknown"}`) - lines.push(` ${formatStatusSymbol("pass")} oh-my-opencode ${systemInfo.pluginVersion ?? "unknown"}`) + lines.push(` ${formatStatusSymbol("pass")} ${PLUGIN_NAME} ${systemInfo.pluginVersion ?? "unknown"}`) if (systemInfo.loadedVersion) { lines.push(` ${formatStatusSymbol("pass")} loaded ${systemInfo.loadedVersion}`) } diff --git a/src/cli/doctor/formatter.test.ts b/src/cli/doctor/formatter.test.ts index 2e4979f88..fa95e53f8 100644 --- a/src/cli/doctor/formatter.test.ts +++ b/src/cli/doctor/formatter.test.ts @@ -81,7 +81,7 @@ describe("formatDoctorOutput", () => { const output = stripAnsi(formatDoctorOutput(result, "default")) //#then - expect(output).toContain("System OK (opencode 1.0.200 · oh-my-opencode 3.4.0)") + expect(output).toContain("System OK (opencode 1.0.200 · oh-my-openagent 3.4.0)") }) it("shows issue count and details when issues exist", async () => {