@idealyst/cli 1.2.1 → 1.2.3
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.
- package/dist/constants.js +9 -3
- package/dist/constants.js.map +1 -1
- package/dist/generators/core/mobile.js +34 -69
- package/dist/generators/core/mobile.js.map +1 -1
- package/dist/generators/core/shared.js +283 -16
- package/dist/generators/core/shared.js.map +1 -1
- package/dist/generators/core/web.js +29 -76
- package/dist/generators/core/web.js.map +1 -1
- package/dist/generators/extensions/devcontainer.js +90 -25
- package/dist/generators/extensions/devcontainer.js.map +1 -1
- package/dist/generators/index.js +23 -7
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/reactNative.js +111 -35
- package/dist/generators/reactNative.js.map +1 -1
- package/dist/generators/workspace.js +31 -0
- package/dist/generators/workspace.js.map +1 -1
- package/dist/types/constants.d.ts +9 -3
- package/dist/types/generators/core/mobile.d.ts +1 -0
- package/dist/types/types.d.ts +31 -0
- package/dist/types/utils/logger.d.ts +6 -0
- package/dist/types.js +34 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/shell.js +1 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/wizard/steps/devcontainerExtension.js +61 -8
- package/dist/wizard/steps/devcontainerExtension.js.map +1 -1
- package/dist/wizard/steps/summary.js +12 -0
- package/dist/wizard/steps/summary.js.map +1 -1
- package/package.json +1 -1
|
@@ -51,9 +51,13 @@ const constants_1 = require("../constants");
|
|
|
51
51
|
* Initialize a React Native project with correct identifiers
|
|
52
52
|
*/
|
|
53
53
|
async function initializeReactNative(options) {
|
|
54
|
-
const { projectName, displayName, bundleId, packageName, directory, skipInstall } = options;
|
|
54
|
+
const { projectName, displayName, bundleId, packageName, directory, skipInstall, interactive } = options;
|
|
55
|
+
// Use spinner in interactive mode, regular logging otherwise
|
|
56
|
+
const spinner = interactive ? logger_1.logger.spinner('Installing React Native project...') : null;
|
|
55
57
|
try {
|
|
56
|
-
|
|
58
|
+
if (!interactive) {
|
|
59
|
+
logger_1.logger.info('Initializing React Native with native platform support...');
|
|
60
|
+
}
|
|
57
61
|
// Build the React Native CLI command
|
|
58
62
|
const args = [
|
|
59
63
|
'@react-native-community/cli@latest',
|
|
@@ -70,19 +74,33 @@ async function initializeReactNative(options) {
|
|
|
70
74
|
const result = await (0, shell_1.runCommand)('npx', args, {
|
|
71
75
|
cwd: directory,
|
|
72
76
|
timeout: constants_1.RN_TIMEOUT,
|
|
73
|
-
silent:
|
|
77
|
+
silent: interactive, // Hide output in interactive mode
|
|
74
78
|
});
|
|
75
79
|
if (result.exitCode !== 0) {
|
|
76
80
|
throw new Error('React Native CLI failed');
|
|
77
81
|
}
|
|
82
|
+
if (spinner) {
|
|
83
|
+
spinner.text = 'Configuring iOS bundle identifier...';
|
|
84
|
+
}
|
|
78
85
|
// Update iOS bundle identifier (RN CLI only sets Android package name)
|
|
79
86
|
await updateIosBundleId(path_1.default.join(directory, projectName), bundleId, projectName);
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
if (spinner) {
|
|
88
|
+
spinner.text = 'Configuring Android for monorepo...';
|
|
89
|
+
}
|
|
90
|
+
// Fix Android gradle files for monorepo node_modules paths
|
|
91
|
+
await fixMonorepoGradlePaths(path_1.default.join(directory, projectName));
|
|
92
|
+
if (spinner) {
|
|
93
|
+
spinner.succeed('React Native project installed');
|
|
94
|
+
}
|
|
82
95
|
return { success: true };
|
|
83
96
|
}
|
|
84
97
|
catch (error) {
|
|
85
|
-
|
|
98
|
+
if (spinner) {
|
|
99
|
+
spinner.fail('React Native initialization failed');
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
logger_1.logger.warn('React Native CLI initialization failed');
|
|
103
|
+
}
|
|
86
104
|
logger_1.logger.dim('Native folders could not be created automatically.');
|
|
87
105
|
logger_1.logger.dim('You may need to run React Native init manually or use Expo.');
|
|
88
106
|
return {
|
|
@@ -102,44 +120,102 @@ async function updateIosBundleId(projectPath, bundleId, projectName) {
|
|
|
102
120
|
// RN CLI uses org.reactjs.native.example.{projectName} by default
|
|
103
121
|
content = content.replace(/PRODUCT_BUNDLE_IDENTIFIER = "[^"]+"/g, `PRODUCT_BUNDLE_IDENTIFIER = "${bundleId}"`);
|
|
104
122
|
await fs_extra_1.default.writeFile(pbxprojPath, content);
|
|
105
|
-
logger_1.logger.success(`Updated iOS bundle identifier to: ${bundleId}`);
|
|
106
123
|
}
|
|
107
124
|
}
|
|
108
125
|
/**
|
|
109
|
-
*
|
|
126
|
+
* Fix Android gradle files for monorepo structure
|
|
127
|
+
*
|
|
128
|
+
* In a Yarn workspace monorepo, dependencies are hoisted to the root node_modules.
|
|
129
|
+
* The React Native CLI generates paths assuming node_modules is in the package directory,
|
|
130
|
+
* but we need to point to the monorepo root instead.
|
|
131
|
+
*
|
|
132
|
+
* Directory structure:
|
|
133
|
+
* monorepo-root/
|
|
134
|
+
* node_modules/ <- hoisted dependencies here
|
|
135
|
+
* packages/
|
|
136
|
+
* mobile/
|
|
137
|
+
* android/
|
|
138
|
+
* settings.gradle <- needs ../../../node_modules (3 levels up)
|
|
139
|
+
* app/
|
|
140
|
+
* build.gradle <- needs ../../../../node_modules (4 levels up)
|
|
110
141
|
*/
|
|
111
|
-
async function
|
|
142
|
+
async function fixMonorepoGradlePaths(projectPath) {
|
|
143
|
+
await fixSettingsGradle(projectPath);
|
|
144
|
+
await fixAppBuildGradle(projectPath);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Fix settings.gradle for monorepo paths
|
|
148
|
+
*/
|
|
149
|
+
async function fixSettingsGradle(projectPath) {
|
|
150
|
+
const settingsPath = path_1.default.join(projectPath, 'android', 'settings.gradle');
|
|
151
|
+
if (!await fs_extra_1.default.pathExists(settingsPath)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
let content = await fs_extra_1.default.readFile(settingsPath, 'utf8');
|
|
155
|
+
// Add monorepo comment at the top if not already present
|
|
156
|
+
if (!content.includes('MONOREPO NOTE')) {
|
|
157
|
+
const monorepoComment = `// MONOREPO NOTE: In a Yarn workspace monorepo, dependencies are hoisted to the root node_modules.
|
|
158
|
+
// Paths must point to the monorepo root (../../../node_modules) not the package's node_modules.
|
|
159
|
+
`;
|
|
160
|
+
content = monorepoComment + content;
|
|
161
|
+
}
|
|
162
|
+
// Fix pluginManagement includeBuild path
|
|
163
|
+
content = content.replace(/includeBuild\s*\(\s*["']\.\.\/node_modules\/@react-native\/gradle-plugin["']\s*\)/g, 'includeBuild("../../../node_modules/@react-native/gradle-plugin")');
|
|
164
|
+
// Fix any other includeBuild paths for @react-native/gradle-plugin at the end of the file
|
|
165
|
+
content = content.replace(/includeBuild\s*\(\s*["']\.\.\/node_modules\/@react-native\/gradle-plugin["']\s*\)(?!.*pluginManagement)/g, 'includeBuild(\'../../../node_modules/@react-native/gradle-plugin\')');
|
|
166
|
+
await fs_extra_1.default.writeFile(settingsPath, content);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Fix app/build.gradle for monorepo paths and add vector icons
|
|
170
|
+
*/
|
|
171
|
+
async function fixAppBuildGradle(projectPath) {
|
|
112
172
|
const buildGradlePath = path_1.default.join(projectPath, 'android', 'app', 'build.gradle');
|
|
113
|
-
if (await fs_extra_1.default.pathExists(buildGradlePath)) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// Add
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (lastApplyIndex !== -1) {
|
|
132
|
-
lines.splice(lastApplyIndex + 1, 0, vectorIconsLine);
|
|
133
|
-
content = lines.join('\n');
|
|
173
|
+
if (!await fs_extra_1.default.pathExists(buildGradlePath)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
let content = await fs_extra_1.default.readFile(buildGradlePath, 'utf8');
|
|
177
|
+
// Add vector icons configuration if not present
|
|
178
|
+
if (!content.includes('react-native-vector-icons')) {
|
|
179
|
+
// Add after the apply plugin lines with monorepo comment
|
|
180
|
+
const vectorIconsBlock = `
|
|
181
|
+
// MONOREPO NOTE: In a Yarn workspace monorepo, dependencies are hoisted to the root node_modules.
|
|
182
|
+
// Paths must point to the monorepo root (../../../../node_modules from android/app) not the package's node_modules.
|
|
183
|
+
apply from: file("../../../../node_modules/react-native-vector-icons/fonts.gradle")
|
|
184
|
+
`;
|
|
185
|
+
// Find the last apply plugin/from line and insert after it
|
|
186
|
+
const lines = content.split('\n');
|
|
187
|
+
let lastApplyIndex = -1;
|
|
188
|
+
for (let i = 0; i < lines.length; i++) {
|
|
189
|
+
if (lines[i].includes('apply plugin:') || lines[i].includes('apply from:')) {
|
|
190
|
+
lastApplyIndex = i;
|
|
134
191
|
}
|
|
135
192
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
content
|
|
193
|
+
if (lastApplyIndex !== -1) {
|
|
194
|
+
lines.splice(lastApplyIndex + 1, 0, vectorIconsBlock);
|
|
195
|
+
content = lines.join('\n');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Fix the react block to use monorepo paths
|
|
199
|
+
// We need to uncomment and update the root, reactNativeDir, codegenDir, and cliFile paths
|
|
200
|
+
// First, check if the react block exists
|
|
201
|
+
if (content.includes('react {')) {
|
|
202
|
+
// Update or add the monorepo paths in the react block
|
|
203
|
+
const reactBlockRegex = /(react\s*\{[\s\S]*?)(\/\*\s*Folders\s*\*\/[\s\S]*?)(\/\*\s*Variants\s*\*\/)/;
|
|
204
|
+
const match = content.match(reactBlockRegex);
|
|
205
|
+
if (match) {
|
|
206
|
+
const newFoldersSection = `/* Folders */
|
|
207
|
+
// MONOREPO: Point to monorepo root where package.json and node_modules live
|
|
208
|
+
root = file("../../../..")
|
|
209
|
+
// MONOREPO: Point to hoisted node_modules
|
|
210
|
+
reactNativeDir = file("../../../../node_modules/react-native")
|
|
211
|
+
codegenDir = file("../../../../node_modules/@react-native/codegen")
|
|
212
|
+
cliFile = file("../../../../node_modules/react-native/cli.js")
|
|
213
|
+
|
|
214
|
+
`;
|
|
215
|
+
content = content.replace(reactBlockRegex, `$1${newFoldersSection}$3`);
|
|
139
216
|
}
|
|
140
|
-
await fs_extra_1.default.writeFile(buildGradlePath, content);
|
|
141
|
-
logger_1.logger.success('Configured Android vector icons');
|
|
142
217
|
}
|
|
218
|
+
await fs_extra_1.default.writeFile(buildGradlePath, content);
|
|
143
219
|
}
|
|
144
220
|
/**
|
|
145
221
|
* Check if native folders exist in a mobile package
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactNative.js","sourceRoot":"","sources":["../../src/generators/reactNative.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,
|
|
1
|
+
{"version":3,"file":"reactNative.js","sourceRoot":"","sources":["../../src/generators/reactNative.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,9 @@ async function generateWorkspaceFiles(projectPath, data) {
|
|
|
49
49
|
// Generate README.md
|
|
50
50
|
const readme = createReadme(data);
|
|
51
51
|
await fs_extra_1.default.writeFile(path_1.default.join(projectPath, 'README.md'), readme);
|
|
52
|
+
// Generate react-native.config.js for monorepo setup
|
|
53
|
+
const rnConfig = createReactNativeConfig(data);
|
|
54
|
+
await fs_extra_1.default.writeFile(path_1.default.join(projectPath, 'react-native.config.js'), rnConfig);
|
|
52
55
|
}
|
|
53
56
|
/**
|
|
54
57
|
* Create root package.json content
|
|
@@ -269,4 +272,32 @@ ${data.projectName}/
|
|
|
269
272
|
\`\`\`
|
|
270
273
|
`;
|
|
271
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* Create react-native.config.js for monorepo setup
|
|
277
|
+
*
|
|
278
|
+
* This file tells the React Native CLI where to find the mobile project
|
|
279
|
+
* and its dependencies in a Yarn workspace monorepo structure.
|
|
280
|
+
*/
|
|
281
|
+
function createReactNativeConfig(data) {
|
|
282
|
+
return `/**
|
|
283
|
+
* React Native configuration for monorepo setup
|
|
284
|
+
*
|
|
285
|
+
* This file tells the React Native CLI where to find the mobile project
|
|
286
|
+
* and its dependencies in a Yarn workspace monorepo structure.
|
|
287
|
+
*/
|
|
288
|
+
module.exports = {
|
|
289
|
+
project: {
|
|
290
|
+
android: {
|
|
291
|
+
sourceDir: './packages/mobile/android',
|
|
292
|
+
appName: 'app',
|
|
293
|
+
packageName: '${data.androidPackageName}',
|
|
294
|
+
},
|
|
295
|
+
ios: {
|
|
296
|
+
sourceDir: './packages/mobile/ios',
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
// Dependencies are auto-detected from node_modules
|
|
300
|
+
};
|
|
301
|
+
`;
|
|
302
|
+
}
|
|
272
303
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/generators/workspace.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAWH,8CAkBC;AA3BD,wDAA0B;AAC1B,gDAAwB;AAExB,gDAAiG;AACjG,4CAAyC;AAEzC;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,IAAkB;IAElB,eAAM,CAAC,IAAI,CAAC,yBAAyB,WAAW,KAAK,CAAC,CAAC;IAEvD,kCAAkC;IAClC,MAAM,kBAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhC,uDAAuD;IACvD,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAA,8BAAqB,EAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,MAAM,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,IAAkB;IAElB,4BAA4B;IAC5B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvF,yBAAyB;IACzB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAErF,sBAAsB;IACtB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAEpE,uBAAuB;IACvB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IAElE,qBAAqB;IACrB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/generators/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,14 +36,20 @@ export declare const DEPENDENCIES: {
|
|
|
36
36
|
readonly mobile: {
|
|
37
37
|
readonly react: "^19.1.0";
|
|
38
38
|
readonly 'react-native': "^0.83.0";
|
|
39
|
-
readonly 'react-native-
|
|
39
|
+
readonly 'react-native-nitro-modules': "^0.32.0";
|
|
40
|
+
readonly 'react-native-unistyles': "^3.0.21";
|
|
40
41
|
readonly '@react-navigation/native': "^7.0.0";
|
|
41
42
|
readonly '@react-navigation/native-stack': "^7.0.0";
|
|
42
|
-
readonly 'react-
|
|
43
|
+
readonly '@react-navigation/bottom-tabs': "^7.0.0";
|
|
44
|
+
readonly '@react-navigation/drawer': "^7.0.0";
|
|
45
|
+
readonly 'react-native-safe-area-context': "^5.6.0";
|
|
43
46
|
readonly 'react-native-screens': "^4.4.0";
|
|
47
|
+
readonly 'react-native-svg': "^15.11.0";
|
|
44
48
|
readonly 'react-native-gesture-handler': "^2.20.0";
|
|
45
|
-
readonly 'react-native-reanimated': "^
|
|
49
|
+
readonly 'react-native-reanimated': "^4.2.0";
|
|
50
|
+
readonly 'react-native-worklets': "^0.7.0";
|
|
46
51
|
readonly 'react-native-vector-icons': "^10.2.0";
|
|
52
|
+
readonly '@react-native-vector-icons/material-design-icons': "^12.0.0";
|
|
47
53
|
};
|
|
48
54
|
readonly trpc: {
|
|
49
55
|
readonly '@trpc/client': "^11.5.0";
|
package/dist/types/types.d.ts
CHANGED
|
@@ -34,7 +34,37 @@ export interface DevcontainerConfig {
|
|
|
34
34
|
redis: boolean;
|
|
35
35
|
chrome: boolean;
|
|
36
36
|
claudeCode: boolean;
|
|
37
|
+
mcpServers: string[];
|
|
37
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Available MCP servers for Claude Code
|
|
41
|
+
*/
|
|
42
|
+
export declare const AVAILABLE_MCP_SERVERS: readonly [{
|
|
43
|
+
readonly id: "idealyst";
|
|
44
|
+
readonly name: "Idealyst";
|
|
45
|
+
readonly description: "Idealyst component documentation and examples";
|
|
46
|
+
readonly requiresChrome: false;
|
|
47
|
+
readonly requiresPostgres: false;
|
|
48
|
+
}, {
|
|
49
|
+
readonly id: "serena";
|
|
50
|
+
readonly name: "Serena";
|
|
51
|
+
readonly description: "Code navigation and semantic search";
|
|
52
|
+
readonly requiresChrome: false;
|
|
53
|
+
readonly requiresPostgres: false;
|
|
54
|
+
}, {
|
|
55
|
+
readonly id: "playwright";
|
|
56
|
+
readonly name: "Playwright";
|
|
57
|
+
readonly description: "Browser automation and testing (requires Chrome)";
|
|
58
|
+
readonly requiresChrome: true;
|
|
59
|
+
readonly requiresPostgres: false;
|
|
60
|
+
}, {
|
|
61
|
+
readonly id: "postgres";
|
|
62
|
+
readonly name: "PostgreSQL";
|
|
63
|
+
readonly description: "Query PostgreSQL database (requires PostgreSQL)";
|
|
64
|
+
readonly requiresChrome: false;
|
|
65
|
+
readonly requiresPostgres: true;
|
|
66
|
+
}];
|
|
67
|
+
export type McpServerId = typeof AVAILABLE_MCP_SERVERS[number]['id'];
|
|
38
68
|
/**
|
|
39
69
|
* CLI arguments before processing
|
|
40
70
|
*/
|
|
@@ -124,6 +154,7 @@ export interface ReactNativeInitOptions {
|
|
|
124
154
|
packageName: string;
|
|
125
155
|
directory: string;
|
|
126
156
|
skipInstall: boolean;
|
|
157
|
+
interactive: boolean;
|
|
127
158
|
}
|
|
128
159
|
/**
|
|
129
160
|
* Types of projects that can be added to workspace
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Logger utility for consistent CLI output
|
|
3
3
|
*/
|
|
4
|
+
import { Ora } from 'ora';
|
|
4
5
|
export declare const logger: {
|
|
6
|
+
/**
|
|
7
|
+
* Create and start a spinner with a message
|
|
8
|
+
* Returns the ora spinner instance for control
|
|
9
|
+
*/
|
|
10
|
+
spinner(message: string): Ora;
|
|
5
11
|
/**
|
|
6
12
|
* Log an info message
|
|
7
13
|
*/
|
package/dist/types.js
CHANGED
|
@@ -3,7 +3,40 @@
|
|
|
3
3
|
* Core type definitions for the CLI-Beta package
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.InvalidExtensionError = exports.NotInWorkspaceError = exports.MissingArgumentsError = void 0;
|
|
6
|
+
exports.InvalidExtensionError = exports.NotInWorkspaceError = exports.MissingArgumentsError = exports.AVAILABLE_MCP_SERVERS = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Available MCP servers for Claude Code
|
|
9
|
+
*/
|
|
10
|
+
exports.AVAILABLE_MCP_SERVERS = [
|
|
11
|
+
{
|
|
12
|
+
id: 'idealyst',
|
|
13
|
+
name: 'Idealyst',
|
|
14
|
+
description: 'Idealyst component documentation and examples',
|
|
15
|
+
requiresChrome: false,
|
|
16
|
+
requiresPostgres: false,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'serena',
|
|
20
|
+
name: 'Serena',
|
|
21
|
+
description: 'Code navigation and semantic search',
|
|
22
|
+
requiresChrome: false,
|
|
23
|
+
requiresPostgres: false,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: 'playwright',
|
|
27
|
+
name: 'Playwright',
|
|
28
|
+
description: 'Browser automation and testing (requires Chrome)',
|
|
29
|
+
requiresChrome: true,
|
|
30
|
+
requiresPostgres: false,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'postgres',
|
|
34
|
+
name: 'PostgreSQL',
|
|
35
|
+
description: 'Query PostgreSQL database (requires PostgreSQL)',
|
|
36
|
+
requiresChrome: false,
|
|
37
|
+
requiresPostgres: true,
|
|
38
|
+
},
|
|
39
|
+
];
|
|
7
40
|
// ============================================
|
|
8
41
|
// ERROR TYPES
|
|
9
42
|
// ============================================
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAoDH;;GAEG;AACU,QAAA,qBAAqB,GAAG;IACnC;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,+CAA+C;QAC5D,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,KAAK;KACxB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qCAAqC;QAClD,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,KAAK;KACxB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kDAAkD;QAC/D,cAAc,EAAE,IAAI;QACpB,gBAAgB,EAAE,KAAK;KACxB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iDAAiD;QAC9D,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,IAAI;KACvB;CACO,CAAC;AAuIX,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;GAEG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAI9C,YACE,WAAqB,EACrB,YAAqC;QAErC,MAAM,OAAO,GAAG,+BAA+B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACvE,wFAAwF,CAAC;QAC3F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAfD,sDAeC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,SAAiB;QAC3B,KAAK,CAAC,QAAQ,SAAS,0DAA0D,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED;;GAEG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,SAAiB,EAAE,WAAmB;QAChD,KAAK,CAAC,cAAc,SAAS,eAAe,WAAW,kBAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,sDAKC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -8,7 +8,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.logger = void 0;
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
11
12
|
exports.logger = {
|
|
13
|
+
/**
|
|
14
|
+
* Create and start a spinner with a message
|
|
15
|
+
* Returns the ora spinner instance for control
|
|
16
|
+
*/
|
|
17
|
+
spinner(message) {
|
|
18
|
+
return (0, ora_1.default)({
|
|
19
|
+
text: message,
|
|
20
|
+
color: 'cyan',
|
|
21
|
+
}).start();
|
|
22
|
+
},
|
|
12
23
|
/**
|
|
13
24
|
* Log an info message
|
|
14
25
|
*/
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,kDAA0B;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,kDAA0B;AAC1B,8CAA+B;AAElB,QAAA,MAAM,GAAG;IACpB;;;OAGG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,IAAA,aAAG,EAAC;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IACD;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe,EAAE,QAA+C,OAAO;QAC5E,MAAM,OAAO,GAAG,eAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe;QACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAW,EAAE,KAAa;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;CACF,CAAC;AAEF,kBAAe,cAAM,CAAC"}
|
package/dist/utils/shell.js
CHANGED
|
@@ -19,7 +19,7 @@ async function runCommand(command, args, options = {}) {
|
|
|
19
19
|
return new Promise((resolve, reject) => {
|
|
20
20
|
const child = (0, child_process_1.spawn)(command, args, {
|
|
21
21
|
cwd,
|
|
22
|
-
shell:
|
|
22
|
+
shell: false,
|
|
23
23
|
stdio: silent ? 'pipe' : 'inherit',
|
|
24
24
|
});
|
|
25
25
|
let stdout = '';
|
package/dist/utils/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAqBH,gCAsDC;AAKD,kDAmBC;AAKD,sCAOC;AAKD,wCAOC;AAKD,wCAOC;AArID,iDAAsC;AACtC,4CAA+C;AAC/C,qCAAkC;AAclC;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,IAAc,EACd,UAA0B,EAAE;IAE5B,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,2BAAe,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEnE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YACjC,GAAG;YACH,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.devcontainerExtensionStep = void 0;
|
|
10
10
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const types_1 = require("../../types");
|
|
12
13
|
exports.devcontainerExtensionStep = {
|
|
13
14
|
id: 'devcontainer',
|
|
14
15
|
async prompt(_currentConfig) {
|
|
@@ -50,11 +51,6 @@ exports.devcontainerExtensionStep = {
|
|
|
50
51
|
value: 'redis',
|
|
51
52
|
checked: false,
|
|
52
53
|
},
|
|
53
|
-
{
|
|
54
|
-
name: 'Chrome - Headless browser for Playwright testing',
|
|
55
|
-
value: 'chrome',
|
|
56
|
-
checked: false,
|
|
57
|
-
},
|
|
58
54
|
{
|
|
59
55
|
name: 'Claude Code - AI assistant with MCP servers',
|
|
60
56
|
value: 'claudeCode',
|
|
@@ -63,12 +59,69 @@ exports.devcontainerExtensionStep = {
|
|
|
63
59
|
],
|
|
64
60
|
},
|
|
65
61
|
]);
|
|
62
|
+
const hasPostgres = services.includes('postgres');
|
|
63
|
+
const hasClaudeCode = services.includes('claudeCode');
|
|
64
|
+
let mcpServers = [];
|
|
65
|
+
let needsChrome = false;
|
|
66
|
+
// If Claude Code is selected, prompt for MCP server selection
|
|
67
|
+
if (hasClaudeCode) {
|
|
68
|
+
console.log('');
|
|
69
|
+
console.log(chalk_1.default.gray('Select which MCP servers to configure for Claude Code:'));
|
|
70
|
+
console.log('');
|
|
71
|
+
// Build choices - Idealyst auto-selected, Playwright shows Chrome will be added, Postgres MCP disabled without Postgres
|
|
72
|
+
const mcpChoices = types_1.AVAILABLE_MCP_SERVERS.map((server) => {
|
|
73
|
+
// Postgres MCP requires PostgreSQL service
|
|
74
|
+
if (server.requiresPostgres && !hasPostgres) {
|
|
75
|
+
return {
|
|
76
|
+
name: `${server.name} - ${server.description} ${chalk_1.default.yellow('(requires PostgreSQL)')}`,
|
|
77
|
+
value: server.id,
|
|
78
|
+
checked: false,
|
|
79
|
+
disabled: 'Requires PostgreSQL service',
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// Playwright will auto-add Chrome
|
|
83
|
+
if (server.requiresChrome) {
|
|
84
|
+
return {
|
|
85
|
+
name: `${server.name} - ${server.description} ${chalk_1.default.cyan('(will add Chrome service)')}`,
|
|
86
|
+
value: server.id,
|
|
87
|
+
checked: false,
|
|
88
|
+
disabled: false,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// Idealyst is auto-selected by default
|
|
92
|
+
const isAutoSelected = server.id === 'idealyst';
|
|
93
|
+
return {
|
|
94
|
+
name: `${server.name} - ${server.description}`,
|
|
95
|
+
value: server.id,
|
|
96
|
+
checked: isAutoSelected,
|
|
97
|
+
disabled: false,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
const { selectedMcpServers } = await inquirer_1.default.prompt([
|
|
101
|
+
{
|
|
102
|
+
type: 'checkbox',
|
|
103
|
+
name: 'selectedMcpServers',
|
|
104
|
+
message: 'MCP servers:',
|
|
105
|
+
choices: mcpChoices,
|
|
106
|
+
},
|
|
107
|
+
]);
|
|
108
|
+
mcpServers = selectedMcpServers;
|
|
109
|
+
// Check if any selected MCP server requires Chrome
|
|
110
|
+
needsChrome = mcpServers.some((serverId) => {
|
|
111
|
+
const server = types_1.AVAILABLE_MCP_SERVERS.find((s) => s.id === serverId);
|
|
112
|
+
return server?.requiresChrome ?? false;
|
|
113
|
+
});
|
|
114
|
+
if (needsChrome) {
|
|
115
|
+
console.log(chalk_1.default.cyan(' ℹ Chrome service will be added for Playwright MCP'));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
66
118
|
return {
|
|
67
119
|
enabled: true,
|
|
68
|
-
postgres:
|
|
120
|
+
postgres: hasPostgres,
|
|
69
121
|
redis: services.includes('redis'),
|
|
70
|
-
chrome:
|
|
71
|
-
claudeCode:
|
|
122
|
+
chrome: needsChrome,
|
|
123
|
+
claudeCode: hasClaudeCode,
|
|
124
|
+
mcpServers,
|
|
72
125
|
};
|
|
73
126
|
},
|
|
74
127
|
validate(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devcontainerExtension.js","sourceRoot":"","sources":["../../../src/wizard/steps/devcontainerExtension.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,wDAAgC;AAChC,kDAA0B;
|
|
1
|
+
{"version":3,"file":"devcontainerExtension.js","sourceRoot":"","sources":["../../../src/wizard/steps/devcontainerExtension.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.summaryStep = void 0;
|
|
10
10
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const types_1 = require("../../types");
|
|
12
13
|
const identifiers_1 = require("../../identifiers");
|
|
13
14
|
exports.summaryStep = {
|
|
14
15
|
id: 'confirm',
|
|
@@ -82,6 +83,17 @@ exports.summaryStep = {
|
|
|
82
83
|
services.push('Claude Code');
|
|
83
84
|
const serviceList = services.length > 0 ? services.join(', ') : 'Base only';
|
|
84
85
|
console.log(` ${chalk_1.default.green('✓')} devcontainer ${chalk_1.default.dim(`- Docker dev environment (${serviceList})`)}`);
|
|
86
|
+
// Show MCP servers if Claude Code is enabled
|
|
87
|
+
if (devConfig.claudeCode && devConfig.mcpServers && devConfig.mcpServers.length > 0) {
|
|
88
|
+
console.log('');
|
|
89
|
+
console.log(chalk_1.default.cyan(' MCP Servers:'));
|
|
90
|
+
for (const serverId of devConfig.mcpServers) {
|
|
91
|
+
const serverInfo = types_1.AVAILABLE_MCP_SERVERS.find(s => s.id === serverId);
|
|
92
|
+
if (serverInfo) {
|
|
93
|
+
console.log(` ${chalk_1.default.green('✓')} ${serverInfo.name.padEnd(12)} ${chalk_1.default.dim(`- ${serverInfo.description}`)}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
85
97
|
}
|
|
86
98
|
else {
|
|
87
99
|
console.log(` ${chalk_1.default.green('✓')} devcontainer ${chalk_1.default.dim('- Docker dev environment (all services)')}`);
|