feat(keyword-detector): add enabled_expansions config for allowlist control
Add optional enabled_expansions field to keyword_detector config schema. When set, acts as an allowlist - only those expansion types fire. Empty array disables all expansions. Absent field keeps all enabled (backward-compatible). Also supports coexistence with disabled_keywords denylist for fine-grained control. - src/config/schema/keyword-detector.ts: add enabled_expansions field - src/hooks/keyword-detector/detector.ts: apply allowlist filter in detectKeywordsWithType - src/hooks/keyword-detector/hook.ts: pass enabled_expansions from config - src/hooks/keyword-detector/index.test.ts: add 4 tests for enabled_expansions behavior - assets/oh-my-opencode.schema.json: regenerate schema
This commit is contained in:
@@ -33,6 +33,7 @@ export function createKeywordDetectorHook(
|
||||
config?: KeywordDetectorConfig,
|
||||
) {
|
||||
const disabledKeywords = config?.disabled_keywords
|
||||
const enabledExpansions = config?.enabled_expansions
|
||||
function getRuntimeVariant(input: { variant?: string }, message: Record<string, unknown>): string | undefined {
|
||||
if (typeof message.variant === "string") {
|
||||
return message.variant
|
||||
@@ -83,7 +84,7 @@ export function createKeywordDetectorHook(
|
||||
// Remove system-reminder content to prevent automated system messages from triggering mode keywords
|
||||
const cleanText = removeSystemReminders(promptText)
|
||||
const modelID = input.model?.modelID
|
||||
let detectedKeywords = detectKeywordsWithType(cleanText, currentAgent, modelID, disabledKeywords)
|
||||
let detectedKeywords = detectKeywordsWithType(cleanText, currentAgent, modelID, disabledKeywords, enabledExpansions)
|
||||
detectedKeywords = suppressComboStandalones(detectedKeywords)
|
||||
|
||||
if (isPlannerAgent(currentAgent)) {
|
||||
|
||||
Reference in New Issue
Block a user