fix: update skill resolution to support disabled skills functionality

This commit is contained in:
Muhammad Noor Misyuari 2026-02-01 23:54:32 +07:00
parent 2236a940f8
commit ba2a9a9051
No known key found for this signature in database
GPG Key ID: C78CF07E782BB4B2
7 changed files with 12 additions and 6 deletions

View File

@ -57,7 +57,8 @@ export function buildAgent(
model: string,
categories?: CategoriesConfig,
gitMasterConfig?: GitMasterConfig,
browserProvider?: BrowserAutomationProvider
browserProvider?: BrowserAutomationProvider,
disabledSkills?: Set<string>
): AgentConfig {
const base = isFactory(source) ? source(model) : source
const categoryConfigs: Record<string, CategoryConfig> = 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) {

View File

@ -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<string>(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,

View File

@ -44,7 +44,7 @@ interface SessionMessage {
export async function resolveSkillContent(
skills: string[],
options: { gitMasterConfig?: GitMasterConfig; browserProvider?: BrowserAutomationProvider }
options: { gitMasterConfig?: GitMasterConfig; browserProvider?: BrowserAutomationProvider, disabledSkills?: Set<string> }
): Promise<{ content: string | undefined; error: string | null }> {
if (skills.length === 0) {
return { content: undefined, error: null }

View File

@ -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

View File

@ -41,6 +41,7 @@ export interface DelegateTaskToolOptions {
gitMasterConfig?: GitMasterConfig
sisyphusJuniorModel?: string
browserProvider?: BrowserAutomationProvider
disabledSkills?: Set<string>
onSyncSessionCreated?: (event: SyncSessionCreatedEvent) => Promise<void>
}

View File

@ -133,7 +133,7 @@ export function createSkillTool(options: SkillLoadOptions = {}): ToolDefinition
const getSkills = async (): Promise<LoadedSkill[]> => {
if (options.skills) return options.skills
if (cachedSkills) return cachedSkills
cachedSkills = await getAllSkills()
cachedSkills = await getAllSkills({disabledSkills: options?.disabledSkills})
return cachedSkills
}

View File

@ -28,4 +28,5 @@ export interface SkillLoadOptions {
getSessionID?: () => string
/** Git master configuration for watermark/co-author settings */
gitMasterConfig?: GitMasterConfig
disabledSkills?: Set<string>
}