add rules to mcp initialize project

This commit is contained in:
Joe Danziger
2025-05-09 11:23:14 -04:00
parent c8904d750e
commit 746fa90212
2 changed files with 22 additions and 1 deletions

View File

@@ -14,6 +14,14 @@ import os from 'os'; // Import os module for home directory check
* @param {object} context - The context object, must contain { session }.
* @returns {Promise<{success: boolean, data?: any, error?: {code: string, message: string}}>} - Standard result object.
*/
/**
* Direct function wrapper for initializing a project.
* Accepts a 'rules' array in args (e.g., ["cursor", "roo"]). If present, passes it as the --rules argument to the core init logic. Defaults to ["cursor"] if not provided.
* @param {object} args - Arguments containing initialization options (addAliases, skipInstall, yes, projectRoot, rules)
* @param {object} log - The FastMCP logger instance.
* @param {object} context - The context object, must contain { session }.
* @returns {Promise<{success: boolean, data?: any, error?: {code: string, message: string}}>} - Standard result object.
*/
export async function initializeProjectDirect(args, log, context = {}) {
const { session } = context; // Keep session if core logic needs it
const homeDir = os.homedir();
@@ -69,6 +77,15 @@ export async function initializeProjectDirect(args, log, context = {}) {
yes: true // Force yes mode
};
// Handle rules option just like CLI
if (Array.isArray(args.rules) && args.rules.length > 0) {
options.rules = args.rules;
log.info(`Including brand rules: ${args.rules.join(", ")}`);
} else {
options.rules = ["cursor"];
log.info(`No rules specified, defaulting to: cursor`);
}
log.info(`Initializing project with options: ${JSON.stringify(options)}`);
const result = await initializeProject(options); // Call core logic

View File

@@ -35,7 +35,11 @@ export function registerInitializeProjectTool(server) {
.string()
.describe(
'The root directory for the project. ALWAYS SET THIS TO THE PROJECT ROOT DIRECTORY. IF NOT SET, THE TOOL WILL NOT WORK.'
)
),
rules: z
.array(z.string())
.optional()
.describe('List of brand rules to include at initialization (e.g., ["cursor", "roo"]). If omitted, defaults to ["cursor"].')
}),
execute: withNormalizedProjectRoot(async (args, context) => {
const { log } = context;