@microfox/cli
Version:
Universal CLI tool for creating modern TypeScript packages with npm availability checking
1 lines • 6.07 kB
Source Map (JSON)
{"version":3,"sources":["../src/commands/push.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport axios from 'axios';\nimport micromatch from 'micromatch';\n\ninterface FileDirectory {\n type: 'file' | 'directory';\n name: string;\n path: string;\n content?: string;\n children?: FileDirectory[];\n}\n\nconst API_ENDPOINT = 'https://staging-cicd.microfox.app/api/deployments/new-agent-cli';\n\nconst getDirectoryFiles = (dir: string, basePath: string = '', ignorePatterns: string[]): FileDirectory[] => {\n const structure: FileDirectory[] = [];\n const items = fs.readdirSync(dir, { withFileTypes: true });\n\n for (const item of items) {\n const relativePath = path.join(basePath, item.name);\n if (micromatch.isMatch(relativePath, ignorePatterns)) {\n continue;\n }\n\n if (item.isDirectory()) {\n structure.push(...getDirectoryFiles(path.join(dir, item.name), relativePath, ignorePatterns));\n } else {\n structure.push({\n type: 'file',\n name: item.name,\n path: relativePath.replace(/\\\\/g, '/'),\n content: fs.readFileSync(path.join(dir, item.name), 'utf-8'),\n });\n }\n }\n return structure;\n};\n\nexport async function pushCommand(): Promise<void> {\n const cwd = process.cwd();\n const microfoxConfigPath = path.join(cwd, 'microfox.json');\n\n if (!fs.existsSync(microfoxConfigPath)) {\n console.error(chalk.red('❌ Error: `microfox.json` not found in the current directory.'));\n console.log(chalk.yellow('This command must be run from the root of an agent project.'));\n process.exit(1);\n }\n\n console.log(chalk.cyan('🚀 Pushing your agent to Microfox...'));\n\n const microfoxConfig = JSON.parse(fs.readFileSync(microfoxConfigPath, 'utf-8'));\n\n let agentApiKey: string | undefined;\n const envPath = path.join(cwd, 'env.json');\n if (fs.existsSync(envPath)) {\n try {\n const envConfig = JSON.parse(fs.readFileSync(envPath, 'utf-8'));\n agentApiKey = envConfig.AGENT_API_KEY;\n } catch (e) {\n console.warn(chalk.yellow('⚠️ Could not read or parse `env.json`. The AGENT_API_KEY will not be sent.'));\n }\n }\n\n const stage = microfoxConfig.stage || 'prod';\n const ignored: string[] = microfoxConfig.ignored || [];\n\n const defaultIgnore = ['node_modules/**', '.git/**', 'dist/**', '.build/**', '.serverless/**', '.DS_Store', 'package-lock.json', 'pnpm-lock.yaml'];\n const allIgnored = [...defaultIgnore, ...ignored];\n\n const files: FileDirectory[] = getDirectoryFiles(cwd, '', allIgnored);\n\n // console.log(JSON.stringify(files, null, 2));\n \n try {\n console.log(chalk.blue('📦 Bundling and deploying your agent...'));\n const response = await axios.post(\n API_ENDPOINT,\n {\n stage,\n isLocal: false,\n dir: files,\n },\n {\n headers: {\n 'x-agent-api-key': agentApiKey,\n },\n },\n );\n\n if (response.status === 200) {\n console.log(chalk.green('✅ Deployment successful!'));\n console.log(chalk.green(` Run ID: ${response.data.runId}`));\n console.log(chalk.green(` Message: ${response.data.message}`));\n } else {\n console.error(chalk.red(`❌ Deployment failed with status: ${response.status}`));\n console.error(response.data);\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('❌ An error occurred during deployment:'));\n if (axios.isAxiosError(error) && error.response) {\n console.error(chalk.red(` Status: ${error.response.status}`));\n console.error(chalk.red(` Data: ${JSON.stringify(error.response.data, null, 2)}`));\n } else {\n console.error(error);\n }\n process.exit(1);\n }\n} "],"mappings":"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","names":[]}