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,133 @@
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.setupRemoveCommand = setupRemoveCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const ora_1 = __importDefault(require("ora"));
42
+ const child_process_1 = require("child_process");
43
+ const path = __importStar(require("path"));
44
+ const fs = __importStar(require("fs-extra"));
45
+ /**
46
+ * Find kimu-core installation path
47
+ */
48
+ function findKimuCorePath() {
49
+ const cwd = process.cwd();
50
+ // Check in node_modules
51
+ const nodeModulesPath = path.join(cwd, 'node_modules', 'kimu-core');
52
+ if (fs.existsSync(nodeModulesPath)) {
53
+ return nodeModulesPath;
54
+ }
55
+ // Check in current directory
56
+ if (fs.existsSync(path.join(cwd, 'scripts', 'remove-module.js'))) {
57
+ return cwd;
58
+ }
59
+ // Check parent directories
60
+ let currentDir = cwd;
61
+ for (let i = 0; i < 3; i++) {
62
+ const parentDir = path.dirname(currentDir);
63
+ const kimuCorePath = path.join(parentDir, 'kimu-core');
64
+ if (fs.existsSync(path.join(kimuCorePath, 'scripts', 'remove-module.js'))) {
65
+ return kimuCorePath;
66
+ }
67
+ currentDir = parentDir;
68
+ }
69
+ return null;
70
+ }
71
+ function setupRemoveCommand(program) {
72
+ const remove = program
73
+ .command('remove')
74
+ .alias('rm')
75
+ .description('Remove installed modules or extensions from your KIMU project');
76
+ // kimu remove module <name>
77
+ remove
78
+ .command('module <name>')
79
+ .alias('m')
80
+ .description('Remove an installed KIMU module')
81
+ .option('--verbose', 'show detailed removal progress')
82
+ .action(async (name, options) => {
83
+ const spinner = (0, ora_1.default)(`Removing module ${name}...`).start();
84
+ try {
85
+ const kimuCorePath = findKimuCorePath();
86
+ if (!kimuCorePath) {
87
+ throw new Error('kimu-core not found. Please ensure kimu-core is installed as a dependency or accessible in your workspace.');
88
+ }
89
+ const scriptPath = path.join(kimuCorePath, 'scripts', 'remove-module.js');
90
+ if (!fs.existsSync(scriptPath)) {
91
+ throw new Error(`remove-module.js script not found in kimu-core at: ${scriptPath}`);
92
+ }
93
+ if (options.verbose) {
94
+ spinner.info(`Using kimu-core at: ${kimuCorePath}`);
95
+ spinner.start(`Removing module ${name}...`);
96
+ }
97
+ // Execute kimu-core's remove script
98
+ const result = (0, child_process_1.spawnSync)('node', [scriptPath, name], {
99
+ stdio: 'inherit',
100
+ cwd: process.cwd(),
101
+ });
102
+ if (result.error) {
103
+ throw new Error(`Failed to execute remove script: ${result.error.message}`);
104
+ }
105
+ if (result.status !== 0) {
106
+ throw new Error(`Module removal failed with exit code ${result.status}`);
107
+ }
108
+ spinner.succeed(chalk_1.default.green(`✅ Module ${name} removed successfully!`));
109
+ }
110
+ catch (error) {
111
+ spinner.fail(chalk_1.default.red(`❌ Failed to remove module ${name}: ${error.message}`));
112
+ process.exit(1);
113
+ }
114
+ });
115
+ // kimu remove extension <name>
116
+ remove
117
+ .command('extension <name>')
118
+ .alias('e')
119
+ .description('Remove an installed KIMU extension')
120
+ .option('--verbose', 'show detailed removal progress')
121
+ .action(async (name) => {
122
+ const spinner = (0, ora_1.default)(`Removing extension ${name}...`).start();
123
+ try {
124
+ // TODO: Implement extension removal when kimu-core provides the script
125
+ spinner.fail(chalk_1.default.yellow(`⚠️ Extension removal is not yet implemented. Please remove extensions manually or wait for future updates.`));
126
+ }
127
+ catch (error) {
128
+ spinner.fail(chalk_1.default.red(`❌ Failed to remove extension ${name}: ${error.message}`));
129
+ process.exit(1);
130
+ }
131
+ });
132
+ }
133
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function setupServeCommand(program: Command): void;
3
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4DxD"}
@@ -0,0 +1,91 @@
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.setupServeCommand = setupServeCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const ora_1 = __importDefault(require("ora"));
42
+ const child_process_1 = require("child_process");
43
+ const path = __importStar(require("path"));
44
+ const fs = __importStar(require("fs-extra"));
45
+ function setupServeCommand(program) {
46
+ program
47
+ .command('serve')
48
+ .description('Serve the built KIMU project')
49
+ .option('-p, --port <port>', 'port to run the server on', '8080')
50
+ .option('-h, --host <host>', 'host to run the server on', 'localhost')
51
+ .option('--open', 'open browser automatically')
52
+ .action(async (options) => {
53
+ const spinner = (0, ora_1.default)('Starting production server...').start();
54
+ try {
55
+ const distPath = path.join(process.cwd(), 'dist');
56
+ if (!fs.existsSync(distPath)) {
57
+ throw new Error('Build directory not found. Please run "kimu build" first.');
58
+ }
59
+ // Use vite preview or simple http server
60
+ const serveProcess = (0, child_process_1.spawn)('npx', ['vite', 'preview', '--port', options.port, '--host', options.host], {
61
+ stdio: 'inherit',
62
+ cwd: process.cwd(),
63
+ shell: true,
64
+ });
65
+ spinner.succeed(chalk_1.default.green('✅ Production server started!'));
66
+ console.log(chalk_1.default.cyan(`\n🚀 Server running at: http://${options.host}:${options.port}\n`));
67
+ console.log(chalk_1.default.dim('Press Ctrl+C to stop the server\n'));
68
+ serveProcess.on('error', error => {
69
+ console.error(chalk_1.default.red(`❌ Server error: ${error.message}`));
70
+ process.exit(1);
71
+ });
72
+ serveProcess.on('exit', code => {
73
+ if (code !== 0 && code !== null) {
74
+ console.error(chalk_1.default.red(`❌ Server exited with code ${code}`));
75
+ process.exit(code);
76
+ }
77
+ });
78
+ // Handle Ctrl+C
79
+ process.on('SIGINT', () => {
80
+ console.log(chalk_1.default.yellow('\n\n⚠️ Stopping server...'));
81
+ serveProcess.kill('SIGINT');
82
+ process.exit(0);
83
+ });
84
+ }
85
+ catch (error) {
86
+ spinner.fail(chalk_1.default.red(`❌ Failed to start server: ${error.message}`));
87
+ process.exit(1);
88
+ }
89
+ });
90
+ }
91
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,13 @@ export interface CreateOptions {
7
7
  verbose: boolean;
8
8
  yes: boolean;
9
9
  }
10
+ export interface NewOptions {
11
+ path?: string;
12
+ force: boolean;
13
+ register: boolean;
14
+ verbose: boolean;
15
+ }
16
+ export type ComponentType = 'extension' | 'module';
10
17
  export interface InstallOptions {
11
18
  verbose: boolean;
12
19
  save: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-types.d.ts","sourceRoot":"","sources":["../../src/types/cli-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"cli-types.d.ts","sourceRoot":"","sources":["../../src/types/cli-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,11 @@
1
+ interface InstallOptions {
2
+ verbose?: boolean;
3
+ type?: 'module' | 'extension';
4
+ saveDev?: boolean;
5
+ registry?: string;
6
+ version?: string;
7
+ force?: boolean;
8
+ }
9
+ export declare function installModuleOrExtension(name: string, options: InstallOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=module-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-installer.d.ts","sourceRoot":"","sources":["../../src/utils/module-installer.ts"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkGD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,iBAaxB"}
@@ -0,0 +1,123 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.installModuleOrExtension = installModuleOrExtension;
37
+ // module-installer.ts: logica di installazione moduli/estensioni KIMU
38
+ const registry_1 = require("./registry");
39
+ const child_process_1 = require("child_process");
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs-extra"));
42
+ /**
43
+ * Find kimu-core installation path
44
+ * Checks: node_modules, parent directories, and workspace structure
45
+ */
46
+ function findKimuCorePath() {
47
+ const cwd = process.cwd();
48
+ // Check in node_modules (if kimu-core is a dependency)
49
+ const nodeModulesPath = path.join(cwd, 'node_modules', 'kimu-core');
50
+ if (fs.existsSync(nodeModulesPath)) {
51
+ return nodeModulesPath;
52
+ }
53
+ // Check in current directory (if we're inside kimu-core)
54
+ if (fs.existsSync(path.join(cwd, 'scripts', 'install-module.js'))) {
55
+ return cwd;
56
+ }
57
+ // Check parent directories (common workspace structure)
58
+ let currentDir = cwd;
59
+ for (let i = 0; i < 3; i++) {
60
+ const parentDir = path.dirname(currentDir);
61
+ const kimuCorePath = path.join(parentDir, 'kimu-core');
62
+ if (fs.existsSync(path.join(kimuCorePath, 'scripts', 'install-module.js'))) {
63
+ return kimuCorePath;
64
+ }
65
+ currentDir = parentDir;
66
+ }
67
+ return null;
68
+ }
69
+ /**
70
+ * Install module using kimu-core's install script
71
+ */
72
+ async function installModuleViaKimuCore(name, options) {
73
+ const kimuCorePath = findKimuCorePath();
74
+ if (!kimuCorePath) {
75
+ throw new Error('kimu-core not found. Please ensure kimu-core is installed as a dependency or accessible in your workspace.');
76
+ }
77
+ const scriptPath = path.join(kimuCorePath, 'scripts', 'install-module.js');
78
+ if (!fs.existsSync(scriptPath)) {
79
+ throw new Error(`install-module.js script not found in kimu-core at: ${scriptPath}`);
80
+ }
81
+ if (options.verbose) {
82
+ console.log(`[DEBUG] Using kimu-core at: ${kimuCorePath}`);
83
+ console.log(`[DEBUG] Running script: ${scriptPath}`);
84
+ }
85
+ // Execute kimu-core's install script
86
+ const result = (0, child_process_1.spawnSync)('node', [scriptPath, name], {
87
+ stdio: 'inherit',
88
+ cwd: process.cwd(),
89
+ });
90
+ if (result.error) {
91
+ throw new Error(`Failed to execute install script: ${result.error.message}`);
92
+ }
93
+ if (result.status !== 0) {
94
+ throw new Error(`Module installation failed with exit code ${result.status}`);
95
+ }
96
+ }
97
+ /**
98
+ * Install extension (placeholder for future implementation)
99
+ */
100
+ async function installExtension(name, _options) {
101
+ const registry = registry_1.KimuRegistry.getInstance();
102
+ const info = await registry.getModuleInfo(name, 'extension');
103
+ if (!info) {
104
+ throw new Error(`Extension "${name}" not found in registry.`);
105
+ }
106
+ // TODO: Implement extension installation
107
+ // Extensions might have different installation logic than modules
108
+ throw new Error('Extension installation is not yet implemented. Please install extensions manually or wait for future updates.');
109
+ }
110
+ async function installModuleOrExtension(name, options) {
111
+ if (options.type === 'module') {
112
+ // Delegate to kimu-core's installation script
113
+ await installModuleViaKimuCore(name, options);
114
+ }
115
+ else if (options.type === 'extension') {
116
+ // Use extension installation logic
117
+ await installExtension(name, options);
118
+ }
119
+ else {
120
+ throw new Error('Installation type must be specified: "module" or "extension"');
121
+ }
122
+ }
123
+ //# sourceMappingURL=module-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-installer.js","sourceRoot":"","sources":["../../src/utils/module-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare class KimuRegistry {
2
+ private static instance;
3
+ static getInstance(): KimuRegistry;
4
+ getModuleInfo(name: string, type?: 'module' | 'extension'): Promise<any | null>;
5
+ listModules(): Promise<any[]>;
6
+ listExtensions(): Promise<any[]>;
7
+ }
8
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IAEtC,MAAM,CAAC,WAAW,IAAI,YAAY;IAO5B,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,GAC5B,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAqDhB,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IA2B7B,cAAc,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;CAoBvC"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ // KimuRegistry: manages the catalog of modules/extensions from the official registry
3
+ // (Initial stub, to be expanded with real fetch, cache, etc.)
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.KimuRegistry = void 0;
6
+ class KimuRegistry {
7
+ static getInstance() {
8
+ if (!KimuRegistry.instance) {
9
+ KimuRegistry.instance = new KimuRegistry();
10
+ }
11
+ return KimuRegistry.instance;
12
+ }
13
+ async getModuleInfo(name, type) {
14
+ // TODO: real fetch from remote registry
15
+ // Mock for now: "router" module and "kimu-home" extension
16
+ const mockCatalog = {
17
+ modules: {
18
+ router: {
19
+ name: 'router',
20
+ type: 'module',
21
+ version: '1.2.0',
22
+ description: 'Routing module',
23
+ },
24
+ i18n: {
25
+ name: 'i18n',
26
+ type: 'module',
27
+ version: '1.5.0',
28
+ description: 'Internationalization module',
29
+ },
30
+ analytics: {
31
+ name: 'analytics',
32
+ type: 'module',
33
+ version: '0.8.0',
34
+ description: 'Analytics tracking module',
35
+ },
36
+ },
37
+ extensions: {
38
+ 'kimu-home': {
39
+ name: 'kimu-home',
40
+ type: 'extension',
41
+ version: '1.0.0',
42
+ description: 'Home extension',
43
+ },
44
+ 'kimu-dashboard': {
45
+ name: 'kimu-dashboard',
46
+ type: 'extension',
47
+ version: '2.1.0',
48
+ description: 'Dashboard extension',
49
+ },
50
+ },
51
+ };
52
+ if (type === 'module') {
53
+ return mockCatalog.modules[name] || null;
54
+ }
55
+ else if (type === 'extension') {
56
+ return mockCatalog.extensions[name] || null;
57
+ }
58
+ // Fallback: search in both
59
+ return mockCatalog.modules[name] || mockCatalog.extensions[name] || null;
60
+ }
61
+ async listModules() {
62
+ // TODO: real fetch from remote registry
63
+ const mockCatalog = {
64
+ modules: {
65
+ router: {
66
+ name: 'router',
67
+ type: 'module',
68
+ version: '1.2.0',
69
+ description: 'Routing module',
70
+ },
71
+ i18n: {
72
+ name: 'i18n',
73
+ type: 'module',
74
+ version: '1.5.0',
75
+ description: 'Internationalization module',
76
+ },
77
+ analytics: {
78
+ name: 'analytics',
79
+ type: 'module',
80
+ version: '0.8.0',
81
+ description: 'Analytics tracking module',
82
+ },
83
+ },
84
+ };
85
+ return Object.values(mockCatalog.modules);
86
+ }
87
+ async listExtensions() {
88
+ // TODO: real fetch from remote registry
89
+ const mockCatalog = {
90
+ extensions: {
91
+ 'kimu-home': {
92
+ name: 'kimu-home',
93
+ type: 'extension',
94
+ version: '1.0.0',
95
+ description: 'Home extension',
96
+ },
97
+ 'kimu-dashboard': {
98
+ name: 'kimu-dashboard',
99
+ type: 'extension',
100
+ version: '2.1.0',
101
+ description: 'Dashboard extension',
102
+ },
103
+ },
104
+ };
105
+ return Object.values(mockCatalog.extensions);
106
+ }
107
+ }
108
+ exports.KimuRegistry = KimuRegistry;
109
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"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"}