From ba2a9a905182b92e4461e9c77bce1c72bf0667d3 Mon Sep 17 00:00:00 2001 From: Muhammad Noor Misyuari Date: Sun, 1 Feb 2026 23:54:32 +0700 Subject: [PATCH] fix: update skill resolution to support disabled skills functionality --- src/agents/utils.ts | 7 ++++--- src/index.ts | 4 +++- src/tools/delegate-task/executor.ts | 2 +- src/tools/delegate-task/tools.ts | 1 + src/tools/delegate-task/types.ts | 1 + src/tools/skill/tools.ts | 2 +- src/tools/skill/types.ts | 1 + 7 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/agents/utils.ts b/src/agents/utils.ts index 7924f515c..56d15983b 100644 --- a/src/agents/utils.ts +++ b/src/agents/utils.ts @@ -57,7 +57,8 @@ export function buildAgent( model: string, categories?: CategoriesConfig, gitMasterConfig?: GitMasterConfig, - browserProvider?: BrowserAutomationProvider + browserProvider?: BrowserAutomationProvider, + disabledSkills?: Set ): AgentConfig { const base = isFactory(source) ? source(model) : source const categoryConfigs: Record = categories @@ -81,7 +82,7 @@ export function buildAgent( } if (agentWithCategory.skills?.length) { - const { resolved } = resolveMultipleSkills(agentWithCategory.skills, { gitMasterConfig, browserProvider }) + const { resolved } = resolveMultipleSkills(agentWithCategory.skills, { gitMasterConfig, browserProvider, disabledSkills }) if (resolved.size > 0) { const skillContent = Array.from(resolved.values()).join("\n\n") base.prompt = skillContent + (base.prompt ? "\n\n" + base.prompt : "") @@ -311,7 +312,7 @@ export async function createBuiltinAgents( if (!resolution) continue const { model, variant: resolvedVariant } = resolution - let config = buildAgent(source, model, mergedCategories, gitMasterConfig, browserProvider) + let config = buildAgent(source, model, mergedCategories, gitMasterConfig, browserProvider, disabledSkills) // Apply resolved variant from model fallback chain if (resolvedVariant) { diff --git a/src/index.ts b/src/index.ts index 2e24b73e9..7aa8aaeed 100644 --- a/src/index.ts +++ b/src/index.ts @@ -386,6 +386,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { const lookAt = isMultimodalLookerEnabled ? createLookAt(ctx) : null; const browserProvider = pluginConfig.browser_automation_engine?.provider ?? "playwright"; + const disabledSkills = new Set(pluginConfig.disabled_skills ?? []); const delegateTask = createDelegateTask({ manager: backgroundManager, client: ctx.client, @@ -394,6 +395,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { gitMasterConfig: pluginConfig.git_master, sisyphusJuniorModel: pluginConfig.agents?.["sisyphus-junior"]?.model, browserProvider, + disabledSkills, onSyncSessionCreated: async (event) => { log("[index] onSyncSessionCreated callback", { sessionID: event.sessionID, @@ -412,7 +414,6 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { }); }, }); - const disabledSkills = new Set(pluginConfig.disabled_skills ?? []); const systemMcpNames = getSystemMcpServerNames(); const builtinSkills = createBuiltinSkills({ browserProvider, disabledSkills }).filter((skill) => { if (skill.mcpConfig) { @@ -446,6 +447,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { mcpManager: skillMcpManager, getSessionID: getSessionIDForMcp, gitMasterConfig: pluginConfig.git_master, + disabledSkills }); const skillMcpTool = createSkillMcpTool({ manager: skillMcpManager, diff --git a/src/tools/delegate-task/executor.ts b/src/tools/delegate-task/executor.ts index df761c08d..ee908535b 100644 --- a/src/tools/delegate-task/executor.ts +++ b/src/tools/delegate-task/executor.ts @@ -44,7 +44,7 @@ interface SessionMessage { export async function resolveSkillContent( skills: string[], - options: { gitMasterConfig?: GitMasterConfig; browserProvider?: BrowserAutomationProvider } + options: { gitMasterConfig?: GitMasterConfig; browserProvider?: BrowserAutomationProvider, disabledSkills?: Set } ): Promise<{ content: string | undefined; error: string | null }> { if (skills.length === 0) { return { content: undefined, error: null } diff --git a/src/tools/delegate-task/tools.ts b/src/tools/delegate-task/tools.ts index 965a82ee4..0cf1d4ff1 100644 --- a/src/tools/delegate-task/tools.ts +++ b/src/tools/delegate-task/tools.ts @@ -83,6 +83,7 @@ Prompts MUST be in English.` const { content: skillContent, error: skillError } = await resolveSkillContent(args.load_skills, { gitMasterConfig: options.gitMasterConfig, browserProvider: options.browserProvider, + disabledSkills: options.disabledSkills, }) if (skillError) { return skillError diff --git a/src/tools/delegate-task/types.ts b/src/tools/delegate-task/types.ts index aa0c512d9..0b82836d5 100644 --- a/src/tools/delegate-task/types.ts +++ b/src/tools/delegate-task/types.ts @@ -41,6 +41,7 @@ export interface DelegateTaskToolOptions { gitMasterConfig?: GitMasterConfig sisyphusJuniorModel?: string browserProvider?: BrowserAutomationProvider + disabledSkills?: Set onSyncSessionCreated?: (event: SyncSessionCreatedEvent) => Promise } diff --git a/src/tools/skill/tools.ts b/src/tools/skill/tools.ts index 3a2eca1f3..006a07b48 100644 --- a/src/tools/skill/tools.ts +++ b/src/tools/skill/tools.ts @@ -133,7 +133,7 @@ export function createSkillTool(options: SkillLoadOptions = {}): ToolDefinition const getSkills = async (): Promise => { if (options.skills) return options.skills if (cachedSkills) return cachedSkills - cachedSkills = await getAllSkills() + cachedSkills = await getAllSkills({disabledSkills: options?.disabledSkills}) return cachedSkills } diff --git a/src/tools/skill/types.ts b/src/tools/skill/types.ts index d22951e07..3babfeef6 100644 --- a/src/tools/skill/types.ts +++ b/src/tools/skill/types.ts @@ -28,4 +28,5 @@ export interface SkillLoadOptions { getSessionID?: () => string /** Git master configuration for watermark/co-author settings */ gitMasterConfig?: GitMasterConfig + disabledSkills?: Set }