kimu-cli 0.1.1 → 1.2.0

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 (68) hide show
  1. package/CHANGELOG.md +47 -2
  2. package/README.md +18 -7
  3. package/bin/kimu.js +54 -47
  4. package/dist/commands/build.d.ts +3 -0
  5. package/dist/commands/build.d.ts.map +1 -0
  6. package/dist/commands/build.js +54 -0
  7. package/dist/commands/build.js.map +1 -0
  8. package/dist/commands/dev.d.ts +3 -0
  9. package/dist/commands/dev.d.ts.map +1 -0
  10. package/dist/commands/dev.js +58 -0
  11. package/dist/commands/dev.js.map +1 -0
  12. package/dist/commands/doctor.d.ts +3 -0
  13. package/dist/commands/doctor.d.ts.map +1 -0
  14. package/dist/commands/doctor.js +255 -0
  15. package/dist/commands/doctor.js.map +1 -0
  16. package/dist/commands/install.d.ts +3 -0
  17. package/dist/commands/install.d.ts.map +1 -0
  18. package/dist/commands/install.js +58 -0
  19. package/dist/commands/install.js.map +1 -0
  20. package/dist/commands/list.d.ts +3 -0
  21. package/dist/commands/list.d.ts.map +1 -0
  22. package/dist/commands/list.js +173 -0
  23. package/dist/commands/list.js.map +1 -0
  24. package/dist/commands/new.d.ts +16 -0
  25. package/dist/commands/new.d.ts.map +1 -0
  26. package/dist/commands/new.js +316 -0
  27. package/dist/commands/new.js.map +1 -0
  28. package/dist/commands/remove.d.ts +3 -0
  29. package/dist/commands/remove.d.ts.map +1 -0
  30. package/dist/commands/remove.js +133 -0
  31. package/dist/commands/remove.js.map +1 -0
  32. package/dist/commands/serve.d.ts +3 -0
  33. package/dist/commands/serve.d.ts.map +1 -0
  34. package/dist/commands/serve.js +91 -0
  35. package/dist/commands/serve.js.map +1 -0
  36. package/dist/types/cli-types.d.ts +7 -0
  37. package/dist/types/cli-types.d.ts.map +1 -1
  38. package/dist/utils/module-installer.d.ts +11 -0
  39. package/dist/utils/module-installer.d.ts.map +1 -0
  40. package/dist/utils/module-installer.js +123 -0
  41. package/dist/utils/module-installer.js.map +1 -0
  42. package/dist/utils/registry.d.ts +8 -0
  43. package/dist/utils/registry.d.ts.map +1 -0
  44. package/dist/utils/registry.js +109 -0
  45. package/dist/utils/registry.js.map +1 -0
  46. package/docs/README.md +126 -0
  47. package/docs/command-kimu.md +14 -0
  48. package/docs/commands/create.md +60 -15
  49. package/docs/commands/install.md +52 -8
  50. package/docs/commands/list.md +39 -51
  51. package/docs/commands/new.md +626 -0
  52. package/docs/configuration-files.md +192 -0
  53. package/docs/getting-started.md +386 -0
  54. package/docs/index.md +57 -27
  55. package/docs/intro.md +30 -8
  56. package/docs/quick-reference.md +335 -0
  57. package/package.json +101 -101
  58. package/templates/generators/README.md +76 -0
  59. package/templates/generators/extension/config.json +45 -0
  60. package/templates/generators/extension/templates/component.ts.template +66 -0
  61. package/templates/generators/extension/templates/style.css.template +40 -0
  62. package/templates/generators/extension/templates/view.html.template +9 -0
  63. package/templates/generators/module/config.json +35 -0
  64. package/templates/generators/module/templates/README.md.template +62 -0
  65. package/templates/generators/module/templates/module.ts.template +36 -0
  66. package/templates/generators/module/templates/service.ts.template +41 -0
  67. package/docs/command-kimu-new.md +0 -207
  68. package/docs/command-kimu-old.md +0 -51
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setupInstallCommand = setupInstallCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const module_installer_1 = require("../utils/module-installer");
10
+ function setupInstallCommand(program) {
11
+ const install = program
12
+ .command('install')
13
+ .alias('i')
14
+ .description('Install modules or extensions for your KIMU project');
15
+ // kimu install module <name>
16
+ install
17
+ .command('module <name>')
18
+ .alias('m')
19
+ .description('Install a KIMU module from the registry')
20
+ .option('--save-dev', 'install as development dependency')
21
+ .option('--registry <url>', 'use custom registry URL')
22
+ .option('--version <version>', 'install specific version')
23
+ .option('--force', 'force reinstall if already installed')
24
+ .option('--verbose', 'show detailed installation progress')
25
+ .action(async (name, options) => {
26
+ const spinner = (0, ora_1.default)(`Installing module ${name}...`).start();
27
+ try {
28
+ await (0, module_installer_1.installModuleOrExtension)(name, { ...options, type: 'module' });
29
+ spinner.succeed(chalk_1.default.green(`✅ Module ${name} installed successfully!`));
30
+ }
31
+ catch (error) {
32
+ spinner.fail(chalk_1.default.red(`❌ Failed to install module ${name}: ${error.message}`));
33
+ process.exit(1);
34
+ }
35
+ });
36
+ // kimu install extension <name>
37
+ install
38
+ .command('extension <name>')
39
+ .alias('e')
40
+ .description('Install a KIMU extension from the registry')
41
+ .option('--save-dev', 'install as development dependency')
42
+ .option('--registry <url>', 'use custom registry URL')
43
+ .option('--version <version>', 'install specific version')
44
+ .option('--force', 'force reinstall if already installed')
45
+ .option('--verbose', 'show detailed installation progress')
46
+ .action(async (name, options) => {
47
+ const spinner = (0, ora_1.default)(`Installing extension ${name}...`).start();
48
+ try {
49
+ await (0, module_installer_1.installModuleOrExtension)(name, { ...options, type: 'extension' });
50
+ spinner.succeed(chalk_1.default.green(`✅ Extension ${name} installed successfully!`));
51
+ }
52
+ catch (error) {
53
+ spinner.fail(chalk_1.default.red(`❌ Failed to install extension ${name}: ${error.message}`));
54
+ process.exit(1);
55
+ }
56
+ });
57
+ }
58
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;AAKA,kDAuDC;AA3DD,kDAA0B;AAC1B,8CAAsB;AACtB,gEAAqE;AAErE,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,qDAAqD,CAAC,CAAC;IAEtE,6BAA6B;IAC7B,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;SACzD,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;SACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAA,2CAAwB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,OAAO,CACb,eAAK,CAAC,KAAK,CAAC,YAAY,IAAI,0BAA0B,CAAC,CACxD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,GAAG,CAAC,8BAA8B,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAClE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,gCAAgC;IAChC,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;SACzD,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;SACzD,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,wBAAwB,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,IAAA,2CAAwB,EAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,OAAO,CACb,eAAK,CAAC,KAAK,CAAC,eAAe,IAAI,0BAA0B,CAAC,CAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,GAAG,CAAC,iCAAiC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CACrE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function setupListCommand(program: Command): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuHvD"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.setupListCommand = setupListCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const ora_1 = __importDefault(require("ora"));
42
+ const fs = __importStar(require("fs-extra"));
43
+ const path = __importStar(require("path"));
44
+ const registry_1 = require("../utils/registry");
45
+ async function getInstalledPackages() {
46
+ const modules = [];
47
+ const extensions = [];
48
+ try {
49
+ // Read modules from modules-manifest.json
50
+ const modulesManifestPath = path.join(process.cwd(), 'src', 'modules', 'modules-manifest.json');
51
+ if (await fs.pathExists(modulesManifestPath)) {
52
+ const modulesManifest = await fs.readJson(modulesManifestPath);
53
+ modules.push(...(modulesManifest.installedModules?.map((mod) => mod.name) || []));
54
+ }
55
+ // Read extensions from extensions-manifest.json
56
+ const extensionsManifestPath = path.join(process.cwd(), 'src', 'extensions', 'extensions-manifest.json');
57
+ if (await fs.pathExists(extensionsManifestPath)) {
58
+ const extensionsManifest = await fs.readJson(extensionsManifestPath);
59
+ extensions.push(...(extensionsManifest.installedExtensions?.map((ext) => ext.tag || ext.name) || []));
60
+ }
61
+ }
62
+ catch (error) {
63
+ // Ignore errors, return empty arrays
64
+ }
65
+ return { modules, extensions };
66
+ }
67
+ function setupListCommand(program) {
68
+ const list = program
69
+ .command('list')
70
+ .alias('l')
71
+ .description('List available or installed modules and extensions');
72
+ // kimu list modules
73
+ list
74
+ .command('modules')
75
+ .alias('m')
76
+ .description('List available modules from the registry')
77
+ .option('--verbose', 'show detailed information')
78
+ .action(async (options) => {
79
+ const spinner = (0, ora_1.default)('Fetching available modules...').start();
80
+ try {
81
+ const registry = registry_1.KimuRegistry.getInstance();
82
+ const modules = await registry.listModules();
83
+ const installed = await getInstalledPackages();
84
+ spinner.succeed(chalk_1.default.green(`✅ Found ${modules.length} modules`));
85
+ console.log('\n📦 Available Modules:\n');
86
+ modules.forEach((mod) => {
87
+ const isInstalled = installed.modules.includes(mod.name);
88
+ const statusIcon = isInstalled ? chalk_1.default.green('✓') : chalk_1.default.gray('○');
89
+ const statusText = isInstalled ? chalk_1.default.green('[installed]') : '';
90
+ console.log(` ${statusIcon} ${chalk_1.default.cyan(mod.name)} ${chalk_1.default.gray(`v${mod.version}`)} ${statusText}`);
91
+ if (options.verbose) {
92
+ console.log(` ${chalk_1.default.dim(mod.description)}`);
93
+ }
94
+ });
95
+ console.log('');
96
+ }
97
+ catch (error) {
98
+ spinner.fail(chalk_1.default.red(`❌ Failed to fetch modules: ${error.message}`));
99
+ process.exit(1);
100
+ }
101
+ });
102
+ // kimu list extensions
103
+ list
104
+ .command('extensions')
105
+ .alias('e')
106
+ .description('List available extensions from the registry')
107
+ .option('--verbose', 'show detailed information')
108
+ .action(async (options) => {
109
+ const spinner = (0, ora_1.default)('Fetching available extensions...').start();
110
+ try {
111
+ const registry = registry_1.KimuRegistry.getInstance();
112
+ const extensions = await registry.listExtensions();
113
+ const installed = await getInstalledPackages();
114
+ spinner.succeed(chalk_1.default.green(`✅ Found ${extensions.length} extensions`));
115
+ console.log('\n🧩 Available Extensions:\n');
116
+ extensions.forEach((ext) => {
117
+ const isInstalled = installed.extensions.includes(ext.name);
118
+ const statusIcon = isInstalled ? chalk_1.default.green('✓') : chalk_1.default.gray('○');
119
+ const statusText = isInstalled ? chalk_1.default.green('[installed]') : '';
120
+ console.log(` ${statusIcon} ${chalk_1.default.cyan(ext.name)} ${chalk_1.default.gray(`v${ext.version}`)} ${statusText}`);
121
+ if (options.verbose) {
122
+ console.log(` ${chalk_1.default.dim(ext.description)}`);
123
+ }
124
+ });
125
+ console.log('');
126
+ }
127
+ catch (error) {
128
+ spinner.fail(chalk_1.default.red(`❌ Failed to fetch extensions: ${error.message}`));
129
+ process.exit(1);
130
+ }
131
+ });
132
+ // kimu list installed
133
+ list
134
+ .command('installed')
135
+ .alias('i')
136
+ .description('List installed modules and extensions in your project')
137
+ .option('--verbose', 'show detailed information')
138
+ .action(async () => {
139
+ const spinner = (0, ora_1.default)('Checking installed packages...').start();
140
+ try {
141
+ const installed = await getInstalledPackages();
142
+ const total = installed.modules.length + installed.extensions.length;
143
+ if (total === 0) {
144
+ spinner.info(chalk_1.default.yellow('⚠️ No installed packages detected'));
145
+ console.log('\n📋 Installed Packages:\n');
146
+ console.log(' (No installed packages found in kimu.config.json)');
147
+ console.log('');
148
+ return;
149
+ }
150
+ spinner.succeed(chalk_1.default.green(`✅ Found ${total} installed packages`));
151
+ console.log('\n📋 Installed Packages:\n');
152
+ if (installed.modules.length > 0) {
153
+ console.log(chalk_1.default.bold(' Modules:'));
154
+ installed.modules.forEach((name) => {
155
+ console.log(` ${chalk_1.default.green('✓')} ${chalk_1.default.cyan(name)}`);
156
+ });
157
+ console.log('');
158
+ }
159
+ if (installed.extensions.length > 0) {
160
+ console.log(chalk_1.default.bold(' Extensions:'));
161
+ installed.extensions.forEach((name) => {
162
+ console.log(` ${chalk_1.default.green('✓')} ${chalk_1.default.cyan(name)}`);
163
+ });
164
+ console.log('');
165
+ }
166
+ }
167
+ catch (error) {
168
+ spinner.fail(chalk_1.default.red(`❌ Failed to check installed packages: ${error.message}`));
169
+ process.exit(1);
170
+ }
171
+ });
172
+ }
173
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * New command implementation - Create components from templates
3
+ * Template-based generator system for extensibility
4
+ */
5
+ import { Command } from 'commander';
6
+ import { Logger } from '../utils/logger';
7
+ import { NewOptions } from '../types/cli-types';
8
+ /**
9
+ * Setup new command
10
+ */
11
+ export declare function setupNewCommand(program: Command): void;
12
+ /**
13
+ * Handle new command
14
+ */
15
+ export declare function handleNewCommand(type: string, name: string, options: NewOptions, logger: Logger): Promise<void>;
16
+ //# sourceMappingURL=new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAwRhD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6CtD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyCf"}
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ /**
3
+ * New command implementation - Create components from templates
4
+ * Template-based generator system for extensibility
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.setupNewCommand = setupNewCommand;
44
+ exports.handleNewCommand = handleNewCommand;
45
+ const fs = __importStar(require("fs-extra"));
46
+ const path = __importStar(require("path"));
47
+ const chalk_1 = __importDefault(require("chalk"));
48
+ const ora_1 = __importDefault(require("ora"));
49
+ const logger_1 = require("../utils/logger");
50
+ const constants_1 = require("../config/constants");
51
+ /**
52
+ * Get the templates directory path
53
+ */
54
+ function getTemplatesDir() {
55
+ // In development, templates are in the project root
56
+ // When published, they're in the package root
57
+ const devPath = path.join(__dirname, '../../templates/generators');
58
+ const prodPath = path.join(__dirname, '../templates/generators');
59
+ if (fs.existsSync(devPath)) {
60
+ return devPath;
61
+ }
62
+ else if (fs.existsSync(prodPath)) {
63
+ return prodPath;
64
+ }
65
+ else {
66
+ throw new Error('Templates directory not found');
67
+ }
68
+ }
69
+ /**
70
+ * Discover available generator types
71
+ */
72
+ function discoverGenerators() {
73
+ const templatesDir = getTemplatesDir();
74
+ if (!fs.existsSync(templatesDir)) {
75
+ return [];
76
+ }
77
+ const entries = fs.readdirSync(templatesDir, { withFileTypes: true });
78
+ return entries
79
+ .filter(entry => entry.isDirectory())
80
+ .map(entry => entry.name)
81
+ .filter(name => fs.existsSync(path.join(templatesDir, name, 'config.json')));
82
+ }
83
+ /**
84
+ * Load generator configuration
85
+ */
86
+ function loadGeneratorConfig(type) {
87
+ const templatesDir = getTemplatesDir();
88
+ const configPath = path.join(templatesDir, type, 'config.json');
89
+ if (!fs.existsSync(configPath)) {
90
+ throw new Error(`Generator config not found: ${configPath}`);
91
+ }
92
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
93
+ }
94
+ /**
95
+ * Convert kebab-case to PascalCase
96
+ */
97
+ function toPascalCase(str) {
98
+ return str
99
+ .split('-')
100
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
101
+ .join('');
102
+ }
103
+ /**
104
+ * Convert kebab-case to camelCase
105
+ */
106
+ function toCamelCase(str) {
107
+ const pascal = toPascalCase(str);
108
+ return pascal.charAt(0).toLowerCase() + pascal.slice(1);
109
+ }
110
+ /**
111
+ * Convert kebab-case to Title Case
112
+ */
113
+ function toTitleCase(str) {
114
+ return str
115
+ .split('-')
116
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
117
+ .join(' ');
118
+ }
119
+ /**
120
+ * Convert kebab-case to snake_case
121
+ */
122
+ function toSnakeCase(str) {
123
+ return str.replace(/-/g, '_');
124
+ }
125
+ /**
126
+ * Replace placeholders in text
127
+ */
128
+ function replacePlaceholders(text, name, targetPath) {
129
+ const replacements = {
130
+ '{{name}}': name,
131
+ '{{className}}': toPascalCase(name),
132
+ '{{kebabName}}': name,
133
+ '{{camelName}}': toCamelCase(name),
134
+ '{{titleName}}': toTitleCase(name),
135
+ '{{snakeName}}': toSnakeCase(name),
136
+ '{{targetPath}}': targetPath,
137
+ };
138
+ let result = text;
139
+ for (const [placeholder, value] of Object.entries(replacements)) {
140
+ result = result.replace(new RegExp(placeholder.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), value);
141
+ }
142
+ return result;
143
+ }
144
+ /**
145
+ * Register component in manifest or config
146
+ */
147
+ async function registerComponent(config, name, targetPath, logger) {
148
+ if (!config.registration || !config.registration.enabled) {
149
+ return;
150
+ }
151
+ const { file, type, path: configPath, entry } = config.registration;
152
+ if (!fs.existsSync(file)) {
153
+ logger.warn(`Registration file not found: ${file}. Skipping registration.`);
154
+ return;
155
+ }
156
+ const content = JSON.parse(fs.readFileSync(file, 'utf-8'));
157
+ if (type === 'array') {
158
+ // Add to array (e.g., extension-manifest.json)
159
+ const entryWithPlaceholders = JSON.stringify(entry);
160
+ const finalEntry = JSON.parse(replacePlaceholders(entryWithPlaceholders, name, targetPath));
161
+ content.push(finalEntry);
162
+ }
163
+ else if (type === 'object' && configPath) {
164
+ // Add to nested object (e.g., kimu.config.json modules.installed)
165
+ const pathParts = configPath.split('.');
166
+ let current = content;
167
+ for (let i = 0; i < pathParts.length - 1; i++) {
168
+ const key = pathParts[i];
169
+ if (key && !current[key]) {
170
+ current[key] = {};
171
+ }
172
+ if (key) {
173
+ current = current[key];
174
+ }
175
+ }
176
+ const lastKey = pathParts[pathParts.length - 1];
177
+ if (lastKey && !Array.isArray(current[lastKey])) {
178
+ current[lastKey] = [];
179
+ }
180
+ if (lastKey) {
181
+ current[lastKey].push(name);
182
+ }
183
+ }
184
+ fs.writeFileSync(file, JSON.stringify(content, null, 2) + '\n');
185
+ logger.success(`Registered in ${file}`);
186
+ }
187
+ /**
188
+ * Create component from generator template
189
+ */
190
+ async function createFromTemplate(type, name, options, logger, spinner) {
191
+ // Load generator configuration
192
+ const config = loadGeneratorConfig(type);
193
+ const templatesDir = getTemplatesDir();
194
+ const templateDir = path.join(templatesDir, type, 'templates');
195
+ // Resolve target path with placeholders
196
+ const targetPath = options.path || replacePlaceholders(config.targetPath, name, '');
197
+ // Check if component already exists
198
+ if (fs.existsSync(targetPath) && !options.force) {
199
+ spinner.fail(chalk_1.default.red(`Component already exists: ${targetPath}`));
200
+ logger.error('Use --force to overwrite');
201
+ process.exit(1);
202
+ }
203
+ // Create target directory
204
+ fs.ensureDirSync(targetPath);
205
+ spinner.text = `Creating ${type} structure...`;
206
+ // Process each template file
207
+ for (const fileConfig of config.files) {
208
+ const templatePath = path.join(templateDir, fileConfig.template);
209
+ const outputPath = path.join(targetPath, replacePlaceholders(fileConfig.output, name, targetPath));
210
+ if (!fs.existsSync(templatePath)) {
211
+ logger.warn(`Template not found: ${templatePath}`);
212
+ continue;
213
+ }
214
+ // Read template content
215
+ const templateContent = fs.readFileSync(templatePath, 'utf-8');
216
+ // Replace placeholders
217
+ const finalContent = replacePlaceholders(templateContent, name, targetPath);
218
+ // Write output file
219
+ fs.writeFileSync(outputPath, finalContent);
220
+ if (options.verbose) {
221
+ logger.debug(`Created: ${outputPath}`);
222
+ }
223
+ }
224
+ // Register component if enabled
225
+ if (options.register !== false) {
226
+ spinner.text = `Registering ${type}...`;
227
+ await registerComponent(config, name, targetPath, logger);
228
+ }
229
+ spinner.succeed(chalk_1.default.green(`✅ ${config.name} ${chalk_1.default.cyan(name)} created successfully!`));
230
+ // Show post-creation instructions
231
+ if (config.postCreate && config.postCreate.length > 0) {
232
+ logger.newLine();
233
+ logger.info(chalk_1.default.bold('Next steps:'));
234
+ for (const instruction of config.postCreate) {
235
+ const finalInstruction = replacePlaceholders(instruction, name, targetPath);
236
+ logger.bullet(finalInstruction);
237
+ }
238
+ }
239
+ }
240
+ /**
241
+ * Setup new command
242
+ */
243
+ function setupNewCommand(program) {
244
+ program
245
+ .command('new <type> <name>')
246
+ .description('Create a new component from template (extension, module, etc.)')
247
+ .option('--path <path>', 'custom path for the component')
248
+ .option('--force', 'overwrite if component already exists')
249
+ .option('--no-register', 'skip registration in manifest/config')
250
+ .option('--verbose', 'enable verbose output')
251
+ .action(async (type, name, options) => {
252
+ const logger = new logger_1.Logger(options.verbose);
253
+ await handleNewCommand(type, name, options, logger);
254
+ });
255
+ // Add list subcommand to show available generators
256
+ program
257
+ .command('new:list')
258
+ .description('List all available component generators')
259
+ .action(() => {
260
+ const generators = discoverGenerators();
261
+ console.log(chalk_1.default.bold('\nAvailable component generators:\n'));
262
+ if (generators.length === 0) {
263
+ console.log(chalk_1.default.yellow(' No generators found.'));
264
+ console.log(chalk_1.default.gray(' Check templates/generators/ directory.\n'));
265
+ return;
266
+ }
267
+ for (const type of generators) {
268
+ try {
269
+ const config = loadGeneratorConfig(type);
270
+ console.log(` ${chalk_1.default.cyan(type.padEnd(15))} ${chalk_1.default.gray(config.description)}`);
271
+ }
272
+ catch (error) {
273
+ console.log(` ${chalk_1.default.cyan(type.padEnd(15))} ${chalk_1.default.red('(config error)')}`);
274
+ }
275
+ }
276
+ console.log('\nUsage: kimu new <type> <name>\n');
277
+ });
278
+ }
279
+ /**
280
+ * Handle new command
281
+ */
282
+ async function handleNewCommand(type, name, options, logger) {
283
+ const spinner = (0, ora_1.default)('Creating component...').start();
284
+ try {
285
+ // Check if we're in a KIMU project
286
+ if (!fs.existsSync(constants_1.KIMU_CONFIG_FILE)) {
287
+ spinner.fail(chalk_1.default.red('Not in a KIMU project directory'));
288
+ logger.error(`Run this command from the root of a KIMU project (${constants_1.KIMU_CONFIG_FILE} not found)`);
289
+ process.exit(1);
290
+ }
291
+ // Validate component type
292
+ const availableTypes = discoverGenerators();
293
+ if (!availableTypes.includes(type)) {
294
+ spinner.fail(chalk_1.default.red(`Invalid component type: ${type}`));
295
+ logger.error(`Valid types: ${availableTypes.join(', ')}`);
296
+ logger.info('Run "kimu new:list" to see all available generators');
297
+ process.exit(1);
298
+ }
299
+ // Validate component name
300
+ const namePattern = /^[a-z0-9-]+$/;
301
+ if (!namePattern.test(name)) {
302
+ spinner.fail(chalk_1.default.red('Invalid component name'));
303
+ logger.error('Component name must contain only lowercase letters, numbers, and hyphens');
304
+ process.exit(1);
305
+ }
306
+ spinner.text = `Creating ${type} ${chalk_1.default.cyan(name)}...`;
307
+ // Create component from template
308
+ await createFromTemplate(type, name, options, logger, spinner);
309
+ }
310
+ catch (error) {
311
+ spinner.fail(chalk_1.default.red('Failed to create component'));
312
+ logger.error('Error details:', error);
313
+ process.exit(1);
314
+ }
315
+ }
316
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function setupRemoveCommand(program: Command): void;
3
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2FzD"}