@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
44 lines • 2 kB
JavaScript
/**
* Manage Flag State Tool - Individual Module
* @description Handles flag state management and rule updates
* @since 2025-08-04
* @author Tool Modularization Team
*
* Migration Status: COMPLETED
* Original Method: OptimizelyMCPTools.manageFlagState
* Complexity: MEDIUM
* Dependencies: logger, errorMapper, manageEntityLifecycle
*/
/**
* Creates the Manage Flag State tool with injected dependencies
* @param deps - Injected dependencies (storage, logger, errorMapper, etc.)
* @returns Tool definition with handler
*/
export function createManageFlagStateTool(deps) {
return {
name: 'manage_flag_state',
requiresCache: true,
category: 'management',
description: 'Consolidated tool for enabling or disabling feature flags. Replaces the separate enable_flag and disable_flag tools.',
handler: async (args) => {
// Validate required parameters
if (!args.project_id || !args.flag_key || !args.environment_key || !args.action) {
throw new Error('Missing required parameters: project_id, flag_key, environment_key, and action are required');
}
// Validate action parameter
if (!['enable', 'disable'].includes(args.action)) {
throw new Error(`Invalid action: ${args.action}. Must be 'enable' or 'disable'`);
}
deps.logger.info('OptimizelyMCPTools.manageFlagState: Managing flag state', {
project_id: args.project_id,
flag_key: args.flag_key,
environment_key: args.environment_key,
action: args.action
});
// Route to manageEntityLifecycle with the appropriate operation
return deps.manageEntityLifecycle(args.action, 'flag', undefined, // entityData not needed for enable/disable
args.flag_key, args.project_id, { environment_key: args.environment_key });
}
};
}
//# sourceMappingURL=ManageFlagState.js.map