@@ -10,22 +10,18 @@ import {
1010 writeMcpConfig ,
1111 loadGlobalMcpConfig ,
1212 writeGlobalMcpConfig ,
13- getGlobalMcpDisabledState ,
14- setGlobalMcpDisabledState ,
15- setProjectMcpDisabledState ,
16- resetProjectMcpDisabledState ,
13+ setGlobalMcpServerEnabled ,
14+ setProjectMcpServerEnabled ,
1715} from '../mcp/config.js' ;
1816import {
1917 loadHookConfigs ,
2018 writeHookConfigs ,
2119 loadGlobalHookConfigs ,
2220 writeGlobalHookConfigs ,
2321 resolveHookConfigs ,
24- setGlobalHookDisabledState ,
25- setProjectHookDisabledState ,
26- resetProjectHookDisabledState ,
22+ setGlobalHookEnabled ,
23+ setProjectHookEnabled ,
2724} from '../hooks/config.js' ;
28- import { setHookRuntimeEnabled } from '../hooks/executor.js' ;
2925import { getMemoryConfig } from '../memory/config.js' ;
3026import { MemoryService } from '../memory/port.js' ;
3127import { AlreadyExistsError , NotFoundError } from '../contracts/error.js' ;
@@ -99,7 +95,11 @@ function hooksList(
9995 cwd : string
10096) : Array < UserHookConfig & { source : 'global' | 'project' ; hasProjectOverride ?: boolean } > {
10197 if ( isGlobalCwd ( cwd ) ) {
102- return loadGlobalHookConfigs ( ) . map ( ( h ) => ( { ...h , source : 'global' as const } ) ) ;
98+ return loadGlobalHookConfigs ( ) . map ( ( h ) => ( {
99+ ...h ,
100+ enabled : h . enabled !== false ,
101+ source : 'global' as const ,
102+ } ) ) ;
103103 }
104104 const globalHooks = loadGlobalHookConfigs ( ) ;
105105 const projectHooks = loadHookConfigs ( cwd ) ;
@@ -112,6 +112,7 @@ function hooksList(
112112 const hasProjectOverride = isFromProject && isFromGlobal ;
113113 return {
114114 ...h ,
115+ enabled : h . enabled !== false ,
115116 source : ( isFromProject ? 'project' : 'global' ) as 'global' | 'project' ,
116117 hasProjectOverride,
117118 } ;
@@ -173,14 +174,12 @@ function hooksDelete(cwd: string, name: string): void {
173174 ) ;
174175}
175176
176- function hooksSetDisabled ( cwd : string , name : string , disabled : boolean ) : void {
177- setHookRuntimeEnabled ( name , ! disabled ) ;
178- const hooks = loadHookConfigs ( cwd ) ;
179- const hook = hooks . find ( ( h ) => h . name === name ) ;
180- if ( hook ) {
181- hook . enabled = ! disabled ;
182- writeHookConfigs ( cwd , hooks ) ;
177+ function hooksSetEnabled ( cwd : string , name : string , enabled : boolean ) : void {
178+ if ( isGlobalCwd ( cwd ) ) {
179+ setGlobalHookEnabled ( name , enabled ) ;
180+ return ;
183181 }
182+ setProjectHookEnabled ( resolveCwd ( cwd ) , name , enabled ) ;
184183}
185184
186185export function createDirectSettingsClient ( rt : AppRuntime ) : SettingsClient {
@@ -236,7 +235,7 @@ export function createDirectSettingsClient(rt: AppRuntime): SettingsClient {
236235 return loadGlobalMcpConfig ( ) . map ( ( s ) => ( {
237236 ...runtimeByName . get ( s . name ) ,
238237 name : s . name ,
239- disabled : getGlobalMcpDisabledState ( s . name ) ,
238+ enabled : s . enabled !== false ,
240239 source : 'global' as const ,
241240 } ) ) as McpStatus [ ] ;
242241 }
@@ -245,7 +244,11 @@ export function createDirectSettingsClient(rt: AppRuntime): SettingsClient {
245244 const globalNames = new Set ( globalServers . map ( ( s ) => s . name ) ) ;
246245 const seen = new Set < string > ( ) ;
247246 const result : Array <
248- McpStatus & { source : 'global' | 'project' ; hasProjectOverride ?: boolean }
247+ McpStatus & {
248+ enabled : boolean ;
249+ source : 'global' | 'project' ;
250+ hasProjectOverride ?: boolean ;
251+ }
249252 > = [ ] ;
250253 for ( const s of projectServers ) {
251254 seen . add ( s . name ) ;
@@ -261,7 +264,7 @@ export function createDirectSettingsClient(rt: AppRuntime): SettingsClient {
261264 toolCount : 0 ,
262265 } ) ,
263266 name : s . name ,
264- disabled : r ?. disabled ?? false ,
267+ enabled : s . enabled !== false ,
265268 source : 'project' ,
266269 hasProjectOverride : isFromGlobal ,
267270 } ) ;
@@ -279,32 +282,19 @@ export function createDirectSettingsClient(rt: AppRuntime): SettingsClient {
279282 toolCount : 0 ,
280283 } ) ,
281284 name : s . name ,
282- disabled : r ?. disabled ?? false ,
285+ enabled : s . enabled !== false ,
283286 source : 'global' ,
284287 } ) ;
285288 }
286289 return result as McpStatus [ ] ;
287290 } ,
288291
289- async setMcpDisabled ( { name, disabled, cwd } ) {
290- const projectCwd = resolveCwd ( cwd ) ;
292+ async setMcpEnabled ( { name, enabled, cwd } ) {
291293 if ( isGlobalCwd ( cwd ) ) {
292- setGlobalMcpDisabledState ( name , disabled ) ;
294+ setGlobalMcpServerEnabled ( name , enabled ) ;
293295 } else {
294- setProjectMcpDisabledState ( projectCwd , name , disabled ) ;
296+ setProjectMcpServerEnabled ( resolveCwd ( cwd ) , name , enabled ) ;
295297 }
296- await rt . runPromise (
297- Effect . gen ( function * ( ) {
298- const mcp = yield * McpService ;
299- return yield * disabled
300- ? mcp . disable ( projectCwd , name )
301- : mcp . enable ( projectCwd , name ) ;
302- } )
303- ) ;
304- } ,
305-
306- async resetMcpDisabled ( { name, cwd } ) {
307- resetProjectMcpDisabledState ( cwd , name ) ;
308298 } ,
309299
310300 async createMcpServer ( { cwd, server } ) {
@@ -344,17 +334,8 @@ export function createDirectSettingsClient(rt: AppRuntime): SettingsClient {
344334 hooksDelete ( cwd , name ) ;
345335 } ,
346336
347- async setHookDisabled ( { cwd, name, disabled } ) {
348- if ( isGlobalCwd ( cwd ) ) {
349- setGlobalHookDisabledState ( name , disabled ) ;
350- } else {
351- setProjectHookDisabledState ( cwd , name , disabled ) ;
352- }
353- hooksSetDisabled ( cwd , name , disabled ) ;
354- } ,
355-
356- async resetHookDisabled ( { name, cwd } ) {
357- resetProjectHookDisabledState ( cwd , name ) ;
337+ async setHookEnabled ( { cwd, name, enabled } ) {
338+ hooksSetEnabled ( cwd , name , enabled ) ;
358339 } ,
359340
360341 async getGlobalPermissionMode ( input : {
0 commit comments