feat(core): Decouple enabling hooks UI from subsystem. (#16074)

This commit is contained in:
joshualitt
2026-01-07 12:34:33 -08:00
committed by GitHub
parent 19bdd95eab
commit 4c961df313
5 changed files with 19 additions and 7 deletions
+3 -2
View File
@@ -53,7 +53,7 @@ import { requestConsentNonInteractive } from './extensions/consent.js';
import { promptForSetting } from './extensions/extensionSettings.js';
import type { EventEmitter } from 'node:stream';
import { runExitCleanup } from '../utils/cleanup.js';
import { getEnableHooks } from './settingsSchema.js';
import { getEnableHooks, getEnableHooksUI } from './settingsSchema.js';
export interface CliArgs {
query: string | undefined;
@@ -292,7 +292,7 @@ export async function parseArguments(settings: Settings): Promise<CliArgs> {
}
// Register hooks command if hooks are enabled
if (getEnableHooks(settings)) {
if (getEnableHooksUI(settings)) {
yargsInstance.command(hooksCommand);
}
@@ -740,6 +740,7 @@ export async function loadCliConfig(
modelConfigServiceConfig: settings.modelConfigs,
// TODO: loading of hooks based on workspace trust
enableHooks: getEnableHooks(settings),
enableHooksUI: getEnableHooksUI(settings),
hooks: settings.hooks || {},
projectHooks: projectHooks || {},
onModelChange: (model: string) => saveModelChange(loadedSettings, model),
+6 -4
View File
@@ -2136,8 +2136,10 @@ type InferSettings<T extends SettingsSchema> = {
export type Settings = InferSettings<SettingsSchemaType>;
export function getEnableHooks(settings: Settings): boolean {
return (
(settings.tools?.enableHooks ?? true) && (settings.hooks?.enabled ?? false)
);
export function getEnableHooksUI(settings: Settings): boolean {
return settings.tools?.enableHooks ?? true;
}
export function getEnableHooks(settings: Settings): boolean {
return getEnableHooksUI(settings) && (settings.hooks?.enabled ?? false);
}