Browse Source

fix: ignore non-string plugin entries during install detection

Ruben Beuker 3 months ago
parent
commit
e336cbbbd7
1 changed files with 10 additions and 2 deletions
  1. 10 2
      src/cli/config-io.ts

+ 10 - 2
src/cli/config-io.ts

@@ -23,6 +23,14 @@ import type {
 
 const PACKAGE_NAME = 'oh-my-opencode-slim';
 
+function isString(value: unknown): value is string {
+  return typeof value === 'string';
+}
+
+function getPluginEntries(config: OpenCodeConfig): string[] {
+  return Array.isArray(config.plugin) ? config.plugin.filter(isString) : [];
+}
+
 function normalizePathForMatch(path: string): string {
   return path.replaceAll('\\', '/');
 }
@@ -204,7 +212,7 @@ export async function addPluginToOpenCodeConfig(): Promise<ConfigMergeResult> {
       };
     }
     const config = parsedConfig ?? {};
-    const plugins = config.plugin ?? [];
+    const plugins = getPluginEntries(config);
 
     const pluginEntry = getPluginEntry();
 
@@ -324,7 +332,7 @@ export function detectCurrentConfig(): DetectedConfig {
   const { config } = parseConfig(getExistingConfigPath());
   if (!config) return result;
 
-  const plugins = config.plugin ?? [];
+  const plugins = getPluginEntries(config);
   result.isInstalled = plugins.some((p) => isPluginEntry(p));
   result.hasAntigravity = plugins.some((p) =>
     p.startsWith('opencode-antigravity-auth'),