@kya-os/create-mcpi-app 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +235 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/effects/index.d.ts +14 -0
  4. package/dist/effects/index.d.ts.map +1 -0
  5. package/dist/effects/index.js +51 -0
  6. package/dist/effects/index.js.map +1 -0
  7. package/dist/helpers/apply-identity-preset.d.ts +14 -0
  8. package/dist/helpers/apply-identity-preset.d.ts.map +1 -0
  9. package/dist/helpers/apply-identity-preset.js +171 -0
  10. package/dist/helpers/apply-identity-preset.js.map +1 -0
  11. package/dist/helpers/copy-template.d.ts +2 -0
  12. package/dist/helpers/copy-template.d.ts.map +1 -0
  13. package/dist/helpers/copy-template.js +11 -0
  14. package/dist/helpers/copy-template.js.map +1 -0
  15. package/dist/helpers/create.d.ts +26 -0
  16. package/dist/helpers/create.d.ts.map +1 -0
  17. package/dist/helpers/create.js +150 -0
  18. package/dist/helpers/create.js.map +1 -0
  19. package/dist/helpers/fetch-xmcp-template.d.ts +11 -0
  20. package/dist/helpers/fetch-xmcp-template.d.ts.map +1 -0
  21. package/dist/helpers/fetch-xmcp-template.js +54 -0
  22. package/dist/helpers/fetch-xmcp-template.js.map +1 -0
  23. package/dist/helpers/generate-config.d.ts +2 -0
  24. package/dist/helpers/generate-config.d.ts.map +1 -0
  25. package/dist/helpers/generate-config.js +28 -0
  26. package/dist/helpers/generate-config.js.map +1 -0
  27. package/dist/helpers/install.d.ts +3 -0
  28. package/dist/helpers/install.d.ts.map +1 -0
  29. package/dist/helpers/install.js +52 -0
  30. package/dist/helpers/install.js.map +1 -0
  31. package/dist/helpers/rename.d.ts +2 -0
  32. package/dist/helpers/rename.d.ts.map +1 -0
  33. package/dist/helpers/rename.js +15 -0
  34. package/dist/helpers/rename.js.map +1 -0
  35. package/dist/helpers/validate-project-structure.d.ts +14 -0
  36. package/dist/helpers/validate-project-structure.d.ts.map +1 -0
  37. package/dist/helpers/validate-project-structure.js +103 -0
  38. package/dist/helpers/validate-project-structure.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +322 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/utils/check-node.d.ts +2 -0
  44. package/dist/utils/check-node.d.ts.map +1 -0
  45. package/dist/utils/check-node.js +12 -0
  46. package/dist/utils/check-node.js.map +1 -0
  47. package/dist/utils/is-folder-empty.d.ts +2 -0
  48. package/dist/utils/is-folder-empty.d.ts.map +1 -0
  49. package/dist/utils/is-folder-empty.js +55 -0
  50. package/dist/utils/is-folder-empty.js.map +1 -0
  51. package/dist/utils/validate-project-name.d.ts +15 -0
  52. package/dist/utils/validate-project-name.d.ts.map +1 -0
  53. package/dist/utils/validate-project-name.js +106 -0
  54. package/dist/utils/validate-project-name.js.map +1 -0
  55. package/index.js +4 -0
  56. package/package.json +65 -0
@@ -0,0 +1,14 @@
1
+ interface ProjectStructureValidation {
2
+ valid: boolean;
3
+ issues: string[];
4
+ }
5
+ /**
6
+ * Validate that the generated project structure meets requirements
7
+ */
8
+ export declare function validateProjectStructure(projectPath: string, identityEnabled: boolean): ProjectStructureValidation;
9
+ /**
10
+ * Ensure lockfile is written and not mutated post-generation
11
+ */
12
+ export declare function ensureLockfile(projectPath: string, packageManager: string): void;
13
+ export {};
14
+ //# sourceMappingURL=validate-project-structure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-structure.d.ts","sourceRoot":"","sources":["../../src/helpers/validate-project-structure.ts"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,OAAO,GACvB,0BAA0B,CAoF5B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,IAAI,CAsBN"}
@@ -0,0 +1,103 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ /**
5
+ * Validate that the generated project structure meets requirements
6
+ */
7
+ export function validateProjectStructure(projectPath, identityEnabled) {
8
+ const issues = [];
9
+ // Check package.json scripts
10
+ const packageJsonPath = path.join(projectPath, "package.json");
11
+ if (fs.existsSync(packageJsonPath)) {
12
+ const packageJson = fs.readJsonSync(packageJsonPath);
13
+ const scripts = packageJson.scripts || {};
14
+ const scriptCount = Object.keys(scripts).length;
15
+ if (identityEnabled) {
16
+ // Should have exactly 8 scripts for identity-enabled projects
17
+ if (scriptCount !== 8) {
18
+ issues.push(`Expected exactly 8 scripts for identity project, found ${scriptCount}`);
19
+ }
20
+ const requiredScripts = [
21
+ "dev",
22
+ "build",
23
+ "start",
24
+ "init",
25
+ "register",
26
+ "keys:rotate",
27
+ "identity:clean",
28
+ "status",
29
+ ];
30
+ for (const script of requiredScripts) {
31
+ if (!scripts[script]) {
32
+ issues.push(`Missing required script: ${script}`);
33
+ }
34
+ }
35
+ }
36
+ else {
37
+ // Should have exactly 3 scripts for vanilla XMCP projects
38
+ if (scriptCount !== 3) {
39
+ issues.push(`Expected exactly 3 scripts for vanilla project, found ${scriptCount}`);
40
+ }
41
+ const requiredScripts = ["dev", "build", "start"];
42
+ for (const script of requiredScripts) {
43
+ if (!scripts[script]) {
44
+ issues.push(`Missing required script: ${script}`);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ else {
50
+ issues.push("package.json not found");
51
+ }
52
+ // Check required files exist (based on actual XMCP upstream structure)
53
+ const requiredFiles = [
54
+ "src/tools/greet.ts", // XMCP creates greet.ts, not hello.ts
55
+ ".gitignore",
56
+ "xmcp.config.ts",
57
+ ];
58
+ for (const file of requiredFiles) {
59
+ if (!fs.existsSync(path.join(projectPath, file))) {
60
+ issues.push(`Missing required file: ${file}`);
61
+ }
62
+ }
63
+ // Check .gitignore includes .mcpi/ for identity projects
64
+ if (identityEnabled) {
65
+ const gitignorePath = path.join(projectPath, ".gitignore");
66
+ if (fs.existsSync(gitignorePath)) {
67
+ const gitignoreContent = fs.readFileSync(gitignorePath, "utf8");
68
+ if (!gitignoreContent.includes(".mcp-i/") &&
69
+ !gitignoreContent.includes(".mcpi/")) {
70
+ issues.push(".gitignore should include .mcp-i/ directory");
71
+ }
72
+ }
73
+ }
74
+ return {
75
+ valid: issues.length === 0,
76
+ issues,
77
+ };
78
+ }
79
+ /**
80
+ * Ensure lockfile is written and not mutated post-generation
81
+ */
82
+ export function ensureLockfile(projectPath, packageManager) {
83
+ const lockfiles = {
84
+ npm: "package-lock.json",
85
+ yarn: "yarn.lock",
86
+ pnpm: "pnpm-lock.yaml",
87
+ };
88
+ const lockfileName = lockfiles[packageManager];
89
+ if (!lockfileName) {
90
+ console.warn(chalk.yellow(`Unknown package manager: ${packageManager}`));
91
+ return;
92
+ }
93
+ const lockfilePath = path.join(projectPath, lockfileName);
94
+ // The lockfile should be created during npm install
95
+ // We just validate it exists after installation
96
+ if (fs.existsSync(lockfilePath)) {
97
+ console.log(chalk.green(`✅ Lockfile created: ${lockfileName}`));
98
+ }
99
+ else {
100
+ console.warn(chalk.yellow(`⚠️ Lockfile not found: ${lockfileName}`));
101
+ }
102
+ }
103
+ //# sourceMappingURL=validate-project-structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-structure.js","sourceRoot":"","sources":["../../src/helpers/validate-project-structure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,322 @@
1
+ #!/usr/bin/env node
2
+ import path from "path";
3
+ import fs from "fs-extra";
4
+ import chalk from "chalk";
5
+ import { Command } from "commander";
6
+ import inquirer from "inquirer";
7
+ import ora from "ora";
8
+ import { fileURLToPath } from "url";
9
+ import { checkNodeVersion } from "./utils/check-node.js";
10
+ import { createProject } from "./helpers/create.js";
11
+ import { createKYAOSBanner } from "./effects/index.js";
12
+ import { validateProjectName, validateDirectoryAvailability, } from "./utils/validate-project-name.js";
13
+ checkNodeVersion();
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = path.dirname(__filename);
16
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "../package.json"), "utf8"));
17
+ const program = new Command()
18
+ .name("create-mcpi-app")
19
+ .description("Create a new xmcp application with identity features built-in")
20
+ .version(packageJson.version, "-v, --version", "Output the current version of create-mcpi-app.")
21
+ .argument("[directory]")
22
+ .usage("[directory] [options]")
23
+ .helpOption("-h, --help", "Display help message.")
24
+ .option("-y, --yes", "Skip confirmation prompt", false)
25
+ .option("--use-npm", "Use npm as package manager (default: use npm)")
26
+ .option("--use-yarn", "Use yarn as package manager")
27
+ .option("--use-pnpm", "Use pnpm as package manager")
28
+ .option("--skip-install", "Skip installing dependencies", false)
29
+ .option("--skip-identity", "Skip identity generation", false)
30
+ .option("--no-identity", "Create plain XMCP project without identity features")
31
+ .option("--vercel", "Add Vercel support for deployment", false)
32
+ .option("--http", "Enable HTTP transport", false)
33
+ .option("--stdio", "Enable STDIO transport", false)
34
+ .option("--local", "Use local xmcp-i dependency", false)
35
+ .option("--xmcp-version <version>", "Specify XMCP version (e.g., 0.3.1)")
36
+ .option("--xmcp-channel <channel>", "Use dist-tag (latest|next)", "latest")
37
+ .option("--no-animation", "Skip the black hole animation", false)
38
+ .option("--fast", "Use shorter animation duration", false)
39
+ .action(async (projectDir, options) => {
40
+ console.log(chalk.bold(`\ncreate-mcpi-app@${packageJson.version}`));
41
+ // Show KYA-OS banner
42
+ const banner = await createKYAOSBanner();
43
+ console.log(chalk.cyan(banner));
44
+ console.log(chalk.dim("\nEnhanced with identity features by MCP-I\n"));
45
+ // If project directory wasn't specified, ask for it
46
+ if (!projectDir) {
47
+ const answers = await inquirer.prompt([
48
+ {
49
+ type: "input",
50
+ name: "projectDir",
51
+ message: "What is your project named?",
52
+ default: "my-mcpi-app",
53
+ },
54
+ ]);
55
+ projectDir = answers.projectDir;
56
+ }
57
+ // Normalize project directory
58
+ const resolvedProjectPath = path.resolve(process.cwd(), projectDir);
59
+ const projectName = path.basename(resolvedProjectPath);
60
+ // Validate project name
61
+ const nameValidation = validateProjectName(projectName);
62
+ if (!nameValidation.valid) {
63
+ console.error(chalk.red("Invalid project name:"));
64
+ for (const issue of nameValidation.issues) {
65
+ console.error(chalk.red(` - ${issue}`));
66
+ }
67
+ process.exit(1);
68
+ }
69
+ // Validate directory availability
70
+ const dirValidation = validateDirectoryAvailability(resolvedProjectPath);
71
+ if (!dirValidation.valid) {
72
+ console.error(chalk.red("Directory validation failed:"));
73
+ for (const issue of dirValidation.issues) {
74
+ console.error(chalk.red(` - ${issue}`));
75
+ }
76
+ process.exit(1);
77
+ }
78
+ let packageManager = "npm";
79
+ let useLocalXmcp = options.local;
80
+ let xmcpVersion = options.xmcpVersion;
81
+ let xmcpChannel = options.xmcpChannel;
82
+ let deployToVercel = options.vercel;
83
+ let skipInstall = options.skipInstall;
84
+ let skipIdentity = options.skipIdentity || !options.identity;
85
+ let transports = ["http"];
86
+ let agentName = projectName;
87
+ let agentDescription = "XMCP-I server with identity features";
88
+ let agentRepository = "";
89
+ // Handle transport selection from CLI options
90
+ if (options.http || options.stdio) {
91
+ transports = [];
92
+ if (options.http)
93
+ transports.push("http");
94
+ if (options.stdio)
95
+ transports.push("stdio");
96
+ }
97
+ if (!options.yes) {
98
+ // Package manager selection
99
+ if (options.useYarn)
100
+ packageManager = "yarn";
101
+ if (options.usePnpm)
102
+ packageManager = "pnpm";
103
+ if (!options.useYarn && !options.usePnpm && !options.useNpm) {
104
+ const pmAnswers = await inquirer.prompt([
105
+ {
106
+ type: "list",
107
+ name: "packageManager",
108
+ message: "Select a package manager:",
109
+ choices: [
110
+ { name: "npm", value: "npm" },
111
+ { name: "yarn", value: "yarn" },
112
+ { name: "pnpm", value: "pnpm" },
113
+ ],
114
+ default: "npm",
115
+ },
116
+ ]);
117
+ packageManager = pmAnswers.packageManager;
118
+ }
119
+ // Transport selection (skip if already specified via CLI options)
120
+ if (!options.http && !options.stdio) {
121
+ const transportAnswers = await inquirer.prompt([
122
+ {
123
+ type: "checkbox",
124
+ name: "transports",
125
+ message: "Select the transports you want to use:",
126
+ choices: [
127
+ {
128
+ name: "HTTP (runs on a server)",
129
+ value: "http",
130
+ checked: true,
131
+ },
132
+ {
133
+ name: "STDIO (runs on the user's machine)",
134
+ value: "stdio",
135
+ checked: false,
136
+ },
137
+ ],
138
+ validate: (input) => {
139
+ if (input.length === 0) {
140
+ return "You must select at least one transport.";
141
+ }
142
+ return true;
143
+ },
144
+ },
145
+ ]);
146
+ transports = transportAnswers.transports;
147
+ }
148
+ // Vercel deployment option
149
+ if (!options.vercel && transports.includes("http")) {
150
+ const vercelAnswers = await inquirer.prompt([
151
+ {
152
+ type: "confirm",
153
+ name: "deployToVercel",
154
+ message: "Add Vercel deployment support?",
155
+ default: true,
156
+ },
157
+ ]);
158
+ deployToVercel = vercelAnswers.deployToVercel;
159
+ }
160
+ // Agent information for identity generation
161
+ if (!skipIdentity) {
162
+ console.log(chalk.blue("\n🤖 Agent Configuration:"));
163
+ const agentInfo = await inquirer.prompt([
164
+ {
165
+ type: "input",
166
+ name: "name",
167
+ message: "What's your agent name?",
168
+ default: projectName,
169
+ },
170
+ {
171
+ type: "input",
172
+ name: "description",
173
+ message: "Brief description of your agent:",
174
+ default: "XMCP-I server with identity features",
175
+ },
176
+ {
177
+ type: "input",
178
+ name: "repository",
179
+ message: "Repository URL (optional):",
180
+ default: "",
181
+ },
182
+ ]);
183
+ agentName = agentInfo.name;
184
+ agentDescription = agentInfo.description;
185
+ agentRepository = agentInfo.repository;
186
+ }
187
+ console.log();
188
+ console.log(`Creating a new xmcp app in ${chalk.green(resolvedProjectPath)}.\n`);
189
+ const { confirmed } = await inquirer.prompt([
190
+ {
191
+ type: "confirm",
192
+ name: "confirmed",
193
+ message: "Ok to continue?",
194
+ default: true,
195
+ },
196
+ ]);
197
+ if (!confirmed) {
198
+ console.log(chalk.yellow("Aborting installation."));
199
+ process.exit(0);
200
+ }
201
+ }
202
+ else {
203
+ // Use command-line options when --yes is provided
204
+ if (options.useYarn)
205
+ packageManager = "yarn";
206
+ if (options.usePnpm)
207
+ packageManager = "pnpm";
208
+ }
209
+ const spinner = ora("Creating your xmcp-i app with identity features...").start();
210
+ try {
211
+ spinner.text = "Scaffolding project structure...";
212
+ const result = await createProject({
213
+ projectPath: resolvedProjectPath,
214
+ projectName,
215
+ packageManager,
216
+ transports: transports,
217
+ packageVersion: packageJson.version,
218
+ useLocalXmcp,
219
+ xmcpVersion,
220
+ xmcpChannel,
221
+ deployToVercel,
222
+ skipInstall,
223
+ agentName,
224
+ agentDescription,
225
+ agentRepository,
226
+ skipIdentity,
227
+ skipAnimation: options.noAnimation === false ? true : false, // Handle --no-animation flag
228
+ fastAnimation: options.fast,
229
+ spinner, // Pass spinner to stop it before animation
230
+ });
231
+ if (!result.success) {
232
+ spinner.fail(chalk.red("Failed to create the project."));
233
+ if (result.warnings) {
234
+ for (const warning of result.warnings) {
235
+ console.error(chalk.red(` ${warning}`));
236
+ }
237
+ }
238
+ process.exit(1);
239
+ }
240
+ if (result.warnings && result.warnings.length > 0) {
241
+ spinner.warn(chalk.yellow("Your xmcp-i app is ready with warnings"));
242
+ for (const warning of result.warnings) {
243
+ console.warn(chalk.yellow(` ⚠️ ${warning}`));
244
+ }
245
+ }
246
+ else {
247
+ spinner.succeed(chalk.green("Your xmcp-i app is ready"));
248
+ }
249
+ console.log();
250
+ console.log("Next Steps:");
251
+ // Show agent management with claim URL first
252
+ if (!skipIdentity) {
253
+ console.log("Agent management:");
254
+ console.log(" Follow the Claim URL above to claim your agent");
255
+ if (resolvedProjectPath !== process.cwd()) {
256
+ console.log(` cd ${chalk.cyan(projectDir)}`);
257
+ }
258
+ console.log(` ${chalk.cyan(`${packageManager} run status`)} - Check agent status`);
259
+ console.log(` ${chalk.cyan(`${packageManager} run register`)} - Register with registry`);
260
+ console.log();
261
+ }
262
+ console.log("Start agent:");
263
+ if (resolvedProjectPath !== process.cwd()) {
264
+ console.log(` cd ${chalk.cyan(projectDir)}`);
265
+ }
266
+ if (skipInstall) {
267
+ if (packageManager === "yarn") {
268
+ console.log(` ${chalk.cyan("yarn install")}`);
269
+ }
270
+ else if (packageManager === "pnpm") {
271
+ console.log(` ${chalk.cyan("pnpm install")}`);
272
+ }
273
+ else {
274
+ console.log(` ${chalk.cyan("npm install")}`);
275
+ }
276
+ }
277
+ // Show appropriate command based on transport
278
+ if (transports.includes("stdio")) {
279
+ console.log(` ${chalk.cyan("npx xmcp build")}`);
280
+ }
281
+ else {
282
+ // HTTP transport - show dev command
283
+ if (packageManager === "yarn") {
284
+ console.log(` ${chalk.cyan("yarn dev")}`);
285
+ }
286
+ else if (packageManager === "pnpm") {
287
+ console.log(` ${chalk.cyan("pnpm dev")}`);
288
+ }
289
+ else {
290
+ console.log(` ${chalk.cyan("npm run dev")}`);
291
+ }
292
+ }
293
+ console.log();
294
+ console.log("Manage identity:");
295
+ if (resolvedProjectPath !== process.cwd()) {
296
+ console.log(` cd ${chalk.cyan(projectDir)}`);
297
+ }
298
+ // Show identity management commands
299
+ if (packageManager === "yarn") {
300
+ console.log(` ${chalk.cyan("yarn keys:rotate")} - Rotate cryptographic keys`);
301
+ console.log(` ${chalk.cyan("yarn identity:clean")} - Clean identity data`);
302
+ }
303
+ else if (packageManager === "pnpm") {
304
+ console.log(` ${chalk.cyan("pnpm keys:rotate")} - Rotate cryptographic keys`);
305
+ console.log(` ${chalk.cyan("pnpm identity:clean")} - Clean identity data`);
306
+ }
307
+ else {
308
+ console.log(` ${chalk.cyan("npm run keys:rotate")} - Rotate cryptographic keys`);
309
+ console.log(` ${chalk.cyan("npm run identity:clean")} - Clean identity data`);
310
+ }
311
+ console.log();
312
+ // Explicitly exit after successful completion
313
+ process.exit(0);
314
+ }
315
+ catch (error) {
316
+ spinner.fail(chalk.red("Failed to create the project."));
317
+ console.error(error);
318
+ process.exit(1);
319
+ }
320
+ });
321
+ program.parse(process.argv);
322
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function checkNodeVersion(): void;
2
+ //# sourceMappingURL=check-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-node.d.ts","sourceRoot":"","sources":["../../src/utils/check-node.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,IAAI,IAAI,CAcvC"}
@@ -0,0 +1,12 @@
1
+ import chalk from "chalk";
2
+ export function checkNodeVersion() {
3
+ const currentNodeVersion = process.versions.node;
4
+ const [major] = currentNodeVersion.split(".").map(Number);
5
+ if (major < 20) {
6
+ console.error(chalk.red(`Error: Node.js version ${currentNodeVersion} is not supported.\n` +
7
+ `create-mcpi-app requires Node.js 20.0.0 or higher.\n` +
8
+ `Please update your Node.js version.`));
9
+ process.exit(1);
10
+ }
11
+ }
12
+ //# sourceMappingURL=check-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-node.js","sourceRoot":"","sources":["../../src/utils/check-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,gBAAgB;IAC9B,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1D,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,0BAA0B,kBAAkB,sBAAsB;YAChE,sDAAsD;YACtD,qCAAqC,CACxC,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isFolderEmpty(root: string, name: string): boolean;
2
+ //# sourceMappingURL=is-folder-empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-folder-empty.d.ts","sourceRoot":"","sources":["../../src/utils/is-folder-empty.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAwDjE"}
@@ -0,0 +1,55 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ export function isFolderEmpty(root, name) {
4
+ const validFiles = [
5
+ ".DS_Store",
6
+ ".git",
7
+ ".gitattributes",
8
+ ".gitignore",
9
+ ".gitlab-ci.yml",
10
+ ".hg",
11
+ ".hgcheck",
12
+ ".hgignore",
13
+ ".idea",
14
+ ".npmignore",
15
+ ".travis.yml",
16
+ "LICENSE",
17
+ "Makefile",
18
+ "README.md",
19
+ "Thumbs.db",
20
+ "docs",
21
+ "mkdocs.yml",
22
+ "npm-debug.log",
23
+ "yarn-debug.log",
24
+ "yarn-error.log",
25
+ ];
26
+ const conflicts = fs
27
+ .readdirSync(root)
28
+ .filter((file) => !validFiles.includes(file))
29
+ // Support IntelliJ IDEA-based editors
30
+ .filter((file) => !/\.iml$/.test(file));
31
+ if (conflicts.length > 0) {
32
+ console.log(`The directory ${name} contains conflicting files:\n`);
33
+ console.log();
34
+ for (const file of conflicts) {
35
+ try {
36
+ const stats = fs.lstatSync(path.join(root, file));
37
+ if (stats.isDirectory()) {
38
+ console.log(` ${file}/`);
39
+ }
40
+ else {
41
+ console.log(` ${file}`);
42
+ }
43
+ }
44
+ catch {
45
+ console.log(` ${file}`);
46
+ }
47
+ }
48
+ console.log();
49
+ console.log("Either try using a new directory name, or remove the conflicting files.");
50
+ console.log();
51
+ return false;
52
+ }
53
+ return true;
54
+ }
55
+ //# sourceMappingURL=is-folder-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-folder-empty.js","sourceRoot":"","sources":["../../src/utils/is-folder-empty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY;IACtD,MAAM,UAAU,GAAG;QACjB,WAAW;QACX,MAAM;QACN,gBAAgB;QAChB,YAAY;QACZ,gBAAgB;QAChB,KAAK;QACL,UAAU;QACV,WAAW;QACX,OAAO;QACP,YAAY;QACZ,aAAa;QACb,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW;QACX,MAAM;QACN,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,gBAAgB;KACjB,CAAC;IAEF,MAAM,SAAS,GAAG,EAAE;SACjB,WAAW,CAAC,IAAI,CAAC;SACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,sCAAsC;SACrC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,iBAAiB,IAAI,gCAAgC,CACtD,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAClD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,yEAAyE,CAC1E,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Validate project name meets requirements
3
+ */
4
+ export declare function validateProjectName(name: string): {
5
+ valid: boolean;
6
+ issues: string[];
7
+ };
8
+ /**
9
+ * Check if directory is available for project creation
10
+ */
11
+ export declare function validateDirectoryAvailability(projectPath: string): {
12
+ valid: boolean;
13
+ issues: string[];
14
+ };
15
+ //# sourceMappingURL=validate-project-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-name.d.ts","sourceRoot":"","sources":["../../src/utils/validate-project-name.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA0EA;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG;IAClE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAwCA"}