UNPKG

microfox

Version:

Universal CLI tool for creating modern TypeScript packages with npm availability checking

1 lines • 5.5 kB
{"version":3,"sources":["../src/commands/add.ts"],"sourcesContent":["import { Command } from 'commander';\nimport fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport readlineSync from 'readline-sync';\nimport { getWorkingDirectory } from '../utils/getProjectRoot';\n\nasync function addBackgroundAgentFunctions(name: string): Promise<void> {\n const workingDir = getWorkingDirectory();\n const functionsDir = path.join(workingDir, 'src', 'functions', name);\n\n // if (fs.existsSync(functionsDir)) {\n // throw new Error(`Directory already exists at ${functionsDir}`);\n // }\n\n console.log(\n chalk.blue(\n `šŸš€ Adding background agent functions ${chalk.bold(name)} at ${functionsDir}\\n`,\n ),\n );\n\n fs.mkdirSync(functionsDir, { recursive: true });\n\n const templateDir = path.resolve(__dirname, 'background-agent', 'src', 'functions');\n\n const entries = fs.readdirSync(templateDir, { withFileTypes: true });\n for (const entry of entries) {\n const srcPath = path.join(templateDir, entry.name);\n const destPath = path.join(functionsDir, entry.name.replace(/\\.txt$/, ''));\n\n if (!entry.isDirectory() && entry.name.endsWith('.txt')) {\n const templateContent = fs.readFileSync(srcPath, 'utf-8');\n const content = templateContent.replace(/<%= agentName %>/g, name);\n fs.writeFileSync(destPath, content);\n console.log(chalk.green(`āœ… Created ${path.relative(workingDir, destPath)}`));\n }\n }\n}\n\nasync function addAction(): Promise<void> {\n console.log(chalk.cyan(\"✨ Add new features to your project!\\n\"));\n\n const workingDir = getWorkingDirectory();\n const microfoxConfigPath = path.join(workingDir, 'microfox.json');\n if (!fs.existsSync(microfoxConfigPath)) {\n console.log(chalk.red('Error: `microfox.json` not found in the current directory.'));\n console.log(chalk.red('Please run this command from the root of a Microfox project.'));\n return;\n }\n\n const { featureType } = await inquirer.prompt([\n {\n type: 'list',\n name: 'featureType',\n message: 'Select what you want to add:',\n choices: ['background_agent_functions'],\n },\n ]);\n\n if (!featureType) {\n console.log(chalk.yellow('Operation cancelled.'));\n return;\n }\n\n if (featureType === 'background_agent_functions') {\n const functionName = readlineSync.question(\n chalk.yellow('šŸ“¦ Enter a name for the new functions: '),\n );\n\n if (!functionName.trim()) {\n throw new Error('Function name cannot be empty');\n }\n\n await addBackgroundAgentFunctions(functionName.trim());\n\n console.log(\n chalk.green(\n `\\nšŸŽ‰ Successfully added background agent functions ${chalk.bold(functionName)}!`,\n ),\n );\n console.log(chalk.gray(`šŸ“ Located at src/functions/${functionName.trim()}`));\n console.log(chalk.yellow('\\nšŸ’” Next steps:'));\n console.log(chalk.yellow(' 1. Check the new files in src/functions/'));\n console.log(chalk.yellow(' 2. Update your agent logic to use the new functions.'));\n }\n}\n\nexport const addCommand = new Command('add')\n .description('Add features to a Microfox project')\n .action(async () => {\n try {\n await addAction();\n } catch (error) {\n console.error(chalk.red('āŒ Error:'), error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n }); "],"mappings":";;;;;;AAAA,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,WAAW;AAClB,OAAO,cAAc;AACrB,OAAO,kBAAkB;AAGzB,eAAe,4BAA4B,MAA6B;AACtE,QAAM,aAAa,oBAAoB;AACvC,QAAM,eAAe,KAAK,KAAK,YAAY,OAAO,aAAa,IAAI;AAMnE,UAAQ;AAAA,IACN,MAAM;AAAA,MACJ,+CAAwC,MAAM,KAAK,IAAI,CAAC,OAAO,YAAY;AAAA;AAAA,IAC7E;AAAA,EACF;AAEA,KAAG,UAAU,cAAc,EAAE,WAAW,KAAK,CAAC;AAE9C,QAAM,cAAc,KAAK,QAAQ,WAAW,oBAAoB,OAAO,WAAW;AAElF,QAAM,UAAU,GAAG,YAAY,aAAa,EAAE,eAAe,KAAK,CAAC;AACnE,aAAW,SAAS,SAAS;AAC3B,UAAM,UAAU,KAAK,KAAK,aAAa,MAAM,IAAI;AACjD,UAAM,WAAW,KAAK,KAAK,cAAc,MAAM,KAAK,QAAQ,UAAU,EAAE,CAAC;AAEzE,QAAI,CAAC,MAAM,YAAY,KAAK,MAAM,KAAK,SAAS,MAAM,GAAG;AACvD,YAAM,kBAAkB,GAAG,aAAa,SAAS,OAAO;AACxD,YAAM,UAAU,gBAAgB,QAAQ,qBAAqB,IAAI;AACjE,SAAG,cAAc,UAAU,OAAO;AAClC,cAAQ,IAAI,MAAM,MAAM,kBAAa,KAAK,SAAS,YAAY,QAAQ,CAAC,EAAE,CAAC;AAAA,IAC7E;AAAA,EACF;AACF;AAEA,eAAe,YAA2B;AACxC,UAAQ,IAAI,MAAM,KAAK,4CAAuC,CAAC;AAE/D,QAAM,aAAa,oBAAoB;AACvC,QAAM,qBAAqB,KAAK,KAAK,YAAY,eAAe;AAChE,MAAI,CAAC,GAAG,WAAW,kBAAkB,GAAG;AACtC,YAAQ,IAAI,MAAM,IAAI,4DAA4D,CAAC;AACnF,YAAQ,IAAI,MAAM,IAAI,8DAA8D,CAAC;AACrF;AAAA,EACF;AAEA,QAAM,EAAE,YAAY,IAAI,MAAM,SAAS,OAAO;AAAA,IAC5C;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,4BAA4B;AAAA,IACxC;AAAA,EACF,CAAC;AAED,MAAI,CAAC,aAAa;AAChB,YAAQ,IAAI,MAAM,OAAO,sBAAsB,CAAC;AAChD;AAAA,EACF;AAEA,MAAI,gBAAgB,8BAA8B;AAChD,UAAM,eAAe,aAAa;AAAA,MAChC,MAAM,OAAO,gDAAyC;AAAA,IACxD;AAEA,QAAI,CAAC,aAAa,KAAK,GAAG;AACxB,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,UAAM,4BAA4B,aAAa,KAAK,CAAC;AAErD,YAAQ;AAAA,MACN,MAAM;AAAA,QACJ;AAAA,0DAAsD,MAAM,KAAK,YAAY,CAAC;AAAA,MAChF;AAAA,IACF;AACA,YAAQ,IAAI,MAAM,KAAK,sCAA+B,aAAa,KAAK,CAAC,EAAE,CAAC;AAC5E,YAAQ,IAAI,MAAM,OAAO,yBAAkB,CAAC;AAC5C,YAAQ,IAAI,MAAM,OAAO,6CAA6C,CAAC;AACvE,YAAQ,IAAI,MAAM,OAAO,yDAAyD,CAAC;AAAA,EACrF;AACF;AAEO,IAAM,aAAa,IAAI,QAAQ,KAAK,EACtC,YAAY,oCAAoC,EAChD,OAAO,YAAY;AAChB,MAAI;AACA,UAAM,UAAU;AAAA,EACpB,SAAS,OAAO;AACZ,YAAQ,MAAM,MAAM,IAAI,eAAU,GAAG,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAC3F,YAAQ,KAAK,CAAC;AAAA,EAClB;AACJ,CAAC;","names":[]}