|
|
@@ -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'),
|