@nexus-framework/cli 0.2.0 → 0.3.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.
- package/README.md +62 -6
- package/dist/cli.js +87 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +4 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +47 -8
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pack.d.ts +28 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +206 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/skill.d.ts +53 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +371 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +100 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/generators/ai-config.js +40 -1
- package/dist/generators/ai-config.js.map +1 -1
- package/dist/generators/docs.d.ts +10 -1
- package/dist/generators/docs.d.ts.map +1 -1
- package/dist/generators/docs.js +40 -65
- package/dist/generators/docs.js.map +1 -1
- package/dist/generators/index.d.ts +2 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +85 -9
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/skills.d.ts +32 -0
- package/dist/generators/skills.d.ts.map +1 -0
- package/dist/generators/skills.js +220 -0
- package/dist/generators/skills.js.map +1 -0
- package/dist/generators/spring-boot.d.ts +12 -0
- package/dist/generators/spring-boot.d.ts.map +1 -0
- package/dist/generators/spring-boot.js +220 -0
- package/dist/generators/spring-boot.js.map +1 -0
- package/dist/generators/structure.d.ts +1 -0
- package/dist/generators/structure.d.ts.map +1 -1
- package/dist/generators/structure.js +129 -24
- package/dist/generators/structure.js.map +1 -1
- package/dist/prompts/adoption.d.ts +35 -0
- package/dist/prompts/adoption.d.ts.map +1 -0
- package/dist/prompts/adoption.js +153 -0
- package/dist/prompts/adoption.js.map +1 -0
- package/dist/prompts/frameworks.d.ts +5 -1
- package/dist/prompts/frameworks.d.ts.map +1 -1
- package/dist/prompts/frameworks.js +49 -1
- package/dist/prompts/frameworks.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +32 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/project-type.d.ts.map +1 -1
- package/dist/prompts/project-type.js +6 -1
- package/dist/prompts/project-type.js.map +1 -1
- package/dist/prompts/skill-config.d.ts +19 -0
- package/dist/prompts/skill-config.d.ts.map +1 -0
- package/dist/prompts/skill-config.js +22 -0
- package/dist/prompts/skill-config.js.map +1 -0
- package/dist/types/config.d.ts +9 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +4 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +49 -36
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/project-detector.d.ts +20 -4
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +156 -27
- package/dist/utils/project-detector.js.map +1 -1
- package/dist/utils/update-check.d.ts +27 -0
- package/dist/utils/update-check.d.ts.map +1 -0
- package/dist/utils/update-check.js +111 -0
- package/dist/utils/update-check.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +9 -2
|
@@ -8,45 +8,70 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export function generateDirectories(config) {
|
|
10
10
|
const dirs = [
|
|
11
|
-
{ path: 'src' },
|
|
12
|
-
{ path: 'public' },
|
|
13
11
|
{ path: '.nexus' },
|
|
14
12
|
{ path: '.nexus/docs' },
|
|
15
13
|
{ path: '.nexus/ai' },
|
|
16
14
|
];
|
|
17
|
-
//
|
|
18
|
-
if (config.
|
|
15
|
+
// Spring Boot projects have a different structure
|
|
16
|
+
if (config.backendFramework === 'spring-boot') {
|
|
17
|
+
const packagePath = `com/example/${config.projectName.replace(/-/g, '')}`;
|
|
18
|
+
dirs.push({ path: 'src' }, { path: 'src/main' }, { path: 'src/main/java' }, { path: `src/main/java/${packagePath}` }, { path: `src/main/java/${packagePath}/controller` }, { path: 'src/main/resources' }, { path: 'src/test' }, { path: 'src/test/java' }, { path: `src/test/java/${packagePath}` });
|
|
19
|
+
}
|
|
20
|
+
else if (config.projectType === 'api') {
|
|
21
|
+
// API-only projects (Node.js-based)
|
|
22
|
+
dirs.push({ path: 'src' }, { path: 'src/routes' }, { path: 'src/controllers' }, { path: 'src/services' }, { path: 'src/models' }, { path: 'src/middleware' }, { path: 'src/utils' });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Regular web projects
|
|
26
|
+
dirs.push({ path: 'src' }, { path: 'public' });
|
|
27
|
+
}
|
|
28
|
+
// UI Library specific structure
|
|
29
|
+
if (config.projectType === 'ui-library') {
|
|
30
|
+
dirs.push({ path: 'src/components' }, { path: 'src/lib' }, { path: '.storybook' }, { path: 'stories' });
|
|
31
|
+
}
|
|
32
|
+
// Test directories (skip for Spring Boot as it has its own structure)
|
|
33
|
+
if (config.testFramework !== 'none' && config.backendFramework !== 'spring-boot') {
|
|
19
34
|
dirs.push({ path: 'tests' }, { path: 'tests/unit' }, { path: 'tests/integration' }, { path: 'tests/e2e' }, { path: 'tests/utils' });
|
|
20
35
|
}
|
|
21
36
|
// CI/CD
|
|
22
37
|
dirs.push({ path: '.github' }, { path: '.github/workflows' });
|
|
23
|
-
// Framework-specific
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
// Framework-specific (skip if Spring Boot, UI library, or API-only)
|
|
39
|
+
if (config.backendFramework !== 'spring-boot' && config.projectType !== 'ui-library' && config.projectType !== 'api') {
|
|
40
|
+
switch (config.frontendFramework) {
|
|
41
|
+
case 'nextjs':
|
|
42
|
+
dirs.push({ path: 'src/app' }, { path: 'src/components' }, { path: 'src/lib' });
|
|
43
|
+
break;
|
|
44
|
+
case 'react-vite':
|
|
45
|
+
dirs.push({ path: 'src/components' }, { path: 'src/pages' }, { path: 'src/hooks' }, { path: 'src/lib' });
|
|
46
|
+
break;
|
|
47
|
+
case 'sveltekit':
|
|
48
|
+
dirs.push({ path: 'src/routes' }, { path: 'src/lib' }, { path: 'src/lib/components' }, { path: 'src/styles' });
|
|
49
|
+
break;
|
|
50
|
+
case 'nuxt':
|
|
51
|
+
dirs.push({ path: 'src/lib' }, { path: 'src/components' }, { path: 'pages' }, { path: 'assets' }, { path: 'assets/css' });
|
|
52
|
+
break;
|
|
53
|
+
case 'astro':
|
|
54
|
+
dirs.push({ path: 'src/pages' }, { path: 'src/layouts' }, { path: 'src/components' }, { path: 'src/styles' });
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
dirs.push({ path: 'src/lib' }, { path: 'src/components' });
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
43
60
|
}
|
|
44
61
|
return dirs;
|
|
45
62
|
}
|
|
46
63
|
/**
|
|
47
64
|
* Generate the project's package.json content.
|
|
65
|
+
* For Spring Boot projects, returns empty content (they use pom.xml/build.gradle).
|
|
48
66
|
*/
|
|
49
67
|
export function generatePackageJson(config) {
|
|
68
|
+
// Spring Boot projects don't use package.json - return empty
|
|
69
|
+
if (config.backendFramework === 'spring-boot') {
|
|
70
|
+
return {
|
|
71
|
+
path: 'package.json',
|
|
72
|
+
content: '',
|
|
73
|
+
};
|
|
74
|
+
}
|
|
50
75
|
const scripts = getFrameworkScripts(config);
|
|
51
76
|
const { dependencies, devDependencies } = getFrameworkDependencies(config);
|
|
52
77
|
const pkg = {
|
|
@@ -58,6 +83,20 @@ export function generatePackageJson(config) {
|
|
|
58
83
|
dependencies,
|
|
59
84
|
devDependencies,
|
|
60
85
|
};
|
|
86
|
+
// UI Library specific fields
|
|
87
|
+
if (config.projectType === 'ui-library') {
|
|
88
|
+
pkg.main = './dist/index.js';
|
|
89
|
+
pkg.module = './dist/index.mjs';
|
|
90
|
+
pkg.types = './dist/index.d.ts';
|
|
91
|
+
pkg.exports = {
|
|
92
|
+
'.': {
|
|
93
|
+
import: './dist/index.mjs',
|
|
94
|
+
require: './dist/index.js',
|
|
95
|
+
types: './dist/index.d.ts',
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
pkg.files = ['dist'];
|
|
99
|
+
}
|
|
61
100
|
// Add test scripts & dependencies
|
|
62
101
|
if (config.testFramework === 'vitest') {
|
|
63
102
|
pkg.scripts.test = 'vitest run';
|
|
@@ -71,6 +110,32 @@ export function generatePackageJson(config) {
|
|
|
71
110
|
pkg.devDependencies['ts-jest'] = '^29.0.0';
|
|
72
111
|
pkg.devDependencies['@types/jest'] = '^29.0.0';
|
|
73
112
|
}
|
|
113
|
+
// API-only projects need specific dependencies
|
|
114
|
+
if (config.projectType === 'api') {
|
|
115
|
+
// Add backend framework dependencies
|
|
116
|
+
if (config.backendFramework === 'express') {
|
|
117
|
+
pkg.dependencies['express'] = '^4.18.0';
|
|
118
|
+
pkg.dependencies['cors'] = '^2.8.5';
|
|
119
|
+
pkg.dependencies['helmet'] = '^7.0.0';
|
|
120
|
+
pkg.devDependencies['@types/express'] = '^4.17.0';
|
|
121
|
+
pkg.devDependencies['@types/cors'] = '^2.8.0';
|
|
122
|
+
pkg.devDependencies['@types/helmet'] = '^4.0.0';
|
|
123
|
+
}
|
|
124
|
+
else if (config.backendFramework === 'fastify') {
|
|
125
|
+
pkg.dependencies['fastify'] = '^4.0.0';
|
|
126
|
+
pkg.dependencies['@fastify/cors'] = '^8.0.0';
|
|
127
|
+
pkg.dependencies['@fastify/helmet'] = '^11.0.0';
|
|
128
|
+
}
|
|
129
|
+
else if (config.backendFramework === 'nestjs') {
|
|
130
|
+
pkg.dependencies['@nestjs/core'] = '^10.0.0';
|
|
131
|
+
pkg.dependencies['@nestjs/common'] = '^10.0.0';
|
|
132
|
+
pkg.dependencies['@nestjs/platform-express'] = '^10.0.0';
|
|
133
|
+
pkg.devDependencies['@nestjs/cli'] = '^10.0.0';
|
|
134
|
+
pkg.devDependencies['@nestjs/schematics'] = '^10.0.0';
|
|
135
|
+
}
|
|
136
|
+
// Add TypeScript execution dependency
|
|
137
|
+
pkg.devDependencies['tsx'] = '^4.0.0';
|
|
138
|
+
}
|
|
74
139
|
return {
|
|
75
140
|
path: 'package.json',
|
|
76
141
|
content: JSON.stringify(pkg, null, 2) + '\n',
|
|
@@ -85,6 +150,25 @@ function getFrameworkScripts(config) {
|
|
|
85
150
|
format: 'prettier --write .',
|
|
86
151
|
'type-check': 'tsc --noEmit',
|
|
87
152
|
};
|
|
153
|
+
// API-only scripts
|
|
154
|
+
if (config.projectType === 'api') {
|
|
155
|
+
return {
|
|
156
|
+
dev: 'tsx src/index.ts',
|
|
157
|
+
build: 'tsc',
|
|
158
|
+
start: 'node dist/index.js',
|
|
159
|
+
...base,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// UI Library scripts
|
|
163
|
+
if (config.projectType === 'ui-library') {
|
|
164
|
+
return {
|
|
165
|
+
dev: 'vite',
|
|
166
|
+
build: 'vite build && tsc --emitDeclarationOnly',
|
|
167
|
+
storybook: 'storybook dev -p 6006',
|
|
168
|
+
'build-storybook': 'storybook build',
|
|
169
|
+
...base,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
88
172
|
switch (config.frontendFramework) {
|
|
89
173
|
case 'nextjs':
|
|
90
174
|
return {
|
|
@@ -148,6 +232,27 @@ function getFrameworkDependencies(config) {
|
|
|
148
232
|
eslint: '^8.57.0',
|
|
149
233
|
prettier: '^3.4.0',
|
|
150
234
|
};
|
|
235
|
+
// UI Library dependencies
|
|
236
|
+
if (config.projectType === 'ui-library') {
|
|
237
|
+
return {
|
|
238
|
+
dependencies: {},
|
|
239
|
+
devDependencies: {
|
|
240
|
+
...baseDev,
|
|
241
|
+
react: '^19.0.0',
|
|
242
|
+
'react-dom': '^19.0.0',
|
|
243
|
+
'@types/react': '^19.0.0',
|
|
244
|
+
'@types/react-dom': '^19.0.0',
|
|
245
|
+
vite: '^6.0.0',
|
|
246
|
+
'@vitejs/plugin-react': '^4.3.0',
|
|
247
|
+
storybook: '^8.0.0',
|
|
248
|
+
'@storybook/react': '^8.0.0',
|
|
249
|
+
'@storybook/react-vite': '^8.0.0',
|
|
250
|
+
'@storybook/addon-essentials': '^8.0.0',
|
|
251
|
+
'@storybook/addon-interactions': '^8.0.0',
|
|
252
|
+
'@storybook/test': '^8.0.0',
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
}
|
|
151
256
|
switch (config.frontendFramework) {
|
|
152
257
|
case 'nextjs':
|
|
153
258
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,MAAM,IAAI,GAAyB;QACjC,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS CLI - Adoption Interview Prompt
|
|
3
|
+
*
|
|
4
|
+
* Before adopting an existing project, we interview the user to gather
|
|
5
|
+
* context that will help AI agents populate the template docs more intelligently.
|
|
6
|
+
*
|
|
7
|
+
* This is the "pre-adoption onboarding" — a brief conversation about:
|
|
8
|
+
* - What the project does (for vision doc)
|
|
9
|
+
* - Architecture type (monolith, microservices, serverless, etc.)
|
|
10
|
+
* - Main tech stack (if we couldn't auto-detect it)
|
|
11
|
+
* - Known pain points or areas needing docs
|
|
12
|
+
* - Whether NEXUS should be local-only or team-shared
|
|
13
|
+
*/
|
|
14
|
+
import type { ProjectInfo } from '../utils/project-detector.js';
|
|
15
|
+
/** User answers from the pre-adoption interview */
|
|
16
|
+
export interface AdoptionContext {
|
|
17
|
+
/** One-sentence description of what the project does */
|
|
18
|
+
projectDescription: string;
|
|
19
|
+
/** Architecture pattern */
|
|
20
|
+
architectureType: 'monolith' | 'microservices' | 'serverless' | 'modular-monolith' | 'other';
|
|
21
|
+
/** Main tech stack (if not auto-detected) */
|
|
22
|
+
techStack: string;
|
|
23
|
+
/** Areas that need documentation or are pain points */
|
|
24
|
+
painPoints: string;
|
|
25
|
+
/** Whether .nexus/ should be gitignored (local-only) */
|
|
26
|
+
localOnly: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Run the pre-adoption interview.
|
|
30
|
+
*
|
|
31
|
+
* @param projectInfo - Detected project information (used for smart defaults)
|
|
32
|
+
* @returns User responses to guide doc generation
|
|
33
|
+
*/
|
|
34
|
+
export declare function promptAdoption(projectInfo: ProjectInfo): Promise<AdoptionContext>;
|
|
35
|
+
//# sourceMappingURL=adoption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoption.d.ts","sourceRoot":"","sources":["../../src/prompts/adoption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,gBAAgB,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,GAAG,kBAAkB,GAAG,OAAO,CAAC;IAC7F,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAuFvF"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXUS CLI - Adoption Interview Prompt
|
|
3
|
+
*
|
|
4
|
+
* Before adopting an existing project, we interview the user to gather
|
|
5
|
+
* context that will help AI agents populate the template docs more intelligently.
|
|
6
|
+
*
|
|
7
|
+
* This is the "pre-adoption onboarding" — a brief conversation about:
|
|
8
|
+
* - What the project does (for vision doc)
|
|
9
|
+
* - Architecture type (monolith, microservices, serverless, etc.)
|
|
10
|
+
* - Main tech stack (if we couldn't auto-detect it)
|
|
11
|
+
* - Known pain points or areas needing docs
|
|
12
|
+
* - Whether NEXUS should be local-only or team-shared
|
|
13
|
+
*/
|
|
14
|
+
import { input, select, confirm } from '@inquirer/prompts';
|
|
15
|
+
/**
|
|
16
|
+
* Run the pre-adoption interview.
|
|
17
|
+
*
|
|
18
|
+
* @param projectInfo - Detected project information (used for smart defaults)
|
|
19
|
+
* @returns User responses to guide doc generation
|
|
20
|
+
*/
|
|
21
|
+
export async function promptAdoption(projectInfo) {
|
|
22
|
+
const displayName = projectInfo.name ?? 'this project';
|
|
23
|
+
console.log('');
|
|
24
|
+
console.log('🔮 Let\'s set up NEXUS for your existing project.');
|
|
25
|
+
console.log(' Answer a few quick questions so AI agents understand your codebase.');
|
|
26
|
+
console.log('');
|
|
27
|
+
// 1. Project description
|
|
28
|
+
const projectDescription = await input({
|
|
29
|
+
message: `What does ${displayName} do? (One sentence for the vision doc)`,
|
|
30
|
+
default: projectInfo.description ?? '',
|
|
31
|
+
validate: (value) => {
|
|
32
|
+
if (value.trim().length < 10) {
|
|
33
|
+
return 'Please provide at least a 10-character description.';
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
// 2. Architecture type
|
|
39
|
+
const architectureType = await select({
|
|
40
|
+
message: 'What\'s the architecture pattern?',
|
|
41
|
+
choices: [
|
|
42
|
+
{
|
|
43
|
+
value: 'monolith',
|
|
44
|
+
name: '🏛️ Monolith',
|
|
45
|
+
description: 'Single codebase, all features in one app',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
value: 'microservices',
|
|
49
|
+
name: '🔗 Microservices',
|
|
50
|
+
description: 'Multiple independent services communicating via APIs',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
value: 'serverless',
|
|
54
|
+
name: '☁️ Serverless',
|
|
55
|
+
description: 'Cloud Functions, Lambda, Vercel Functions, etc.',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
value: 'modular-monolith',
|
|
59
|
+
name: '📦 Modular Monolith',
|
|
60
|
+
description: 'Single deployment, organized into independent modules',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
value: 'other',
|
|
64
|
+
name: '🔧 Other',
|
|
65
|
+
description: 'Something else (explain in pain points)',
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
default: detectArchitectureType(projectInfo),
|
|
69
|
+
});
|
|
70
|
+
// 3. Tech stack (if we couldn't detect a framework)
|
|
71
|
+
let techStack = projectInfo.framework ?? 'unknown';
|
|
72
|
+
if (techStack === 'unknown' || techStack === 'node') {
|
|
73
|
+
techStack = await input({
|
|
74
|
+
message: 'What\'s the main tech stack? (e.g., "Express + MongoDB", "Go + PostgreSQL")',
|
|
75
|
+
default: buildTechStackGuess(projectInfo),
|
|
76
|
+
validate: (value) => {
|
|
77
|
+
if (value.trim().length < 3) {
|
|
78
|
+
return 'Please provide a valid tech stack description.';
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// 4. Pain points
|
|
85
|
+
const painPoints = await input({
|
|
86
|
+
message: 'Any known pain points or areas that need better docs? (optional)',
|
|
87
|
+
default: '',
|
|
88
|
+
});
|
|
89
|
+
// 5. Local-only mode
|
|
90
|
+
const localOnly = await confirm({
|
|
91
|
+
message: 'Keep NEXUS local-only? (adds .nexus/ to .gitignore - won\'t be shared with team)',
|
|
92
|
+
default: false,
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
projectDescription: projectDescription.trim(),
|
|
96
|
+
architectureType,
|
|
97
|
+
techStack,
|
|
98
|
+
painPoints: painPoints.trim(),
|
|
99
|
+
localOnly,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/* ──────────────────────────────────────────────────────────────
|
|
103
|
+
* Smart Defaults
|
|
104
|
+
* ────────────────────────────────────────────────────────────── */
|
|
105
|
+
/**
|
|
106
|
+
* Guess architecture type based on detected dependencies.
|
|
107
|
+
*/
|
|
108
|
+
function detectArchitectureType(projectInfo) {
|
|
109
|
+
const deps = projectInfo.dependencies.map((d) => d.toLowerCase());
|
|
110
|
+
if (deps.includes('firebase-functions') ||
|
|
111
|
+
deps.includes('@google-cloud/functions-framework') ||
|
|
112
|
+
deps.includes('aws-lambda') ||
|
|
113
|
+
deps.includes('@vercel/node')) {
|
|
114
|
+
return 'serverless';
|
|
115
|
+
}
|
|
116
|
+
if (deps.some((d) => d.includes('microservice') || d.includes('grpc') || d.includes('rabbitmq'))) {
|
|
117
|
+
return 'microservices';
|
|
118
|
+
}
|
|
119
|
+
return 'monolith';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build a tech stack guess from detected dependencies.
|
|
123
|
+
*/
|
|
124
|
+
function buildTechStackGuess(projectInfo) {
|
|
125
|
+
const deps = projectInfo.dependencies;
|
|
126
|
+
const parts = [];
|
|
127
|
+
// Backend framework
|
|
128
|
+
if (deps.includes('express'))
|
|
129
|
+
parts.push('Express');
|
|
130
|
+
if (deps.includes('fastify'))
|
|
131
|
+
parts.push('Fastify');
|
|
132
|
+
if (deps.includes('koa'))
|
|
133
|
+
parts.push('Koa');
|
|
134
|
+
if (deps.includes('hapi'))
|
|
135
|
+
parts.push('Hapi');
|
|
136
|
+
if (deps.includes('nestjs'))
|
|
137
|
+
parts.push('NestJS');
|
|
138
|
+
// Database
|
|
139
|
+
if (deps.includes('mongodb') || deps.includes('mongoose'))
|
|
140
|
+
parts.push('MongoDB');
|
|
141
|
+
if (deps.includes('pg') || deps.includes('postgres'))
|
|
142
|
+
parts.push('PostgreSQL');
|
|
143
|
+
if (deps.includes('mysql') || deps.includes('mysql2'))
|
|
144
|
+
parts.push('MySQL');
|
|
145
|
+
if (deps.includes('prisma'))
|
|
146
|
+
parts.push('Prisma');
|
|
147
|
+
// Frontend
|
|
148
|
+
if (projectInfo.framework && projectInfo.framework !== 'node' && projectInfo.framework !== 'unknown') {
|
|
149
|
+
parts.push(projectInfo.framework);
|
|
150
|
+
}
|
|
151
|
+
return parts.length > 0 ? parts.join(' + ') : 'Node.js';
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=adoption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoption.js","sourceRoot":"","sources":["../../src/prompts/adoption.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* Asks the user which frontend framework to use.
|
|
5
5
|
* Options are filtered based on project type.
|
|
6
6
|
*/
|
|
7
|
-
import type { FrontendFramework, ProjectType } from '../types/config.js';
|
|
7
|
+
import type { FrontendFramework, ProjectType, BackendFramework } from '../types/config.js';
|
|
8
8
|
export declare function promptFramework(projectType: ProjectType): Promise<FrontendFramework>;
|
|
9
|
+
/**
|
|
10
|
+
* Prompt for backend framework (for API projects)
|
|
11
|
+
*/
|
|
12
|
+
export declare function promptBackendFramework(): Promise<BackendFramework>;
|
|
9
13
|
//# sourceMappingURL=frameworks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3F,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuD1F;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA0BxE"}
|
|
@@ -8,7 +8,25 @@ import { select } from '@inquirer/prompts';
|
|
|
8
8
|
export async function promptFramework(projectType) {
|
|
9
9
|
if (projectType === 'api') {
|
|
10
10
|
// API projects don't need a frontend framework — we return a sentinel
|
|
11
|
-
return '
|
|
11
|
+
return 'none'; // will be ignored; backend prompt handles this
|
|
12
|
+
}
|
|
13
|
+
if (projectType === 'ui-library') {
|
|
14
|
+
// UI library projects use React + Vite as the base
|
|
15
|
+
return select({
|
|
16
|
+
message: 'Which UI framework for your component library?',
|
|
17
|
+
choices: [
|
|
18
|
+
{
|
|
19
|
+
value: 'react-vite',
|
|
20
|
+
name: '⚛️ React + Vite + Storybook',
|
|
21
|
+
description: 'Build, document, and publish React component library with Storybook.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
value: 'sveltekit',
|
|
25
|
+
name: '🔥 Svelte + SvelteKit',
|
|
26
|
+
description: 'Build Svelte component library with SvelteKit for documentation.',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
});
|
|
12
30
|
}
|
|
13
31
|
return select({
|
|
14
32
|
message: 'Which frontend framework?',
|
|
@@ -41,4 +59,34 @@ export async function promptFramework(projectType) {
|
|
|
41
59
|
],
|
|
42
60
|
});
|
|
43
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Prompt for backend framework (for API projects)
|
|
64
|
+
*/
|
|
65
|
+
export async function promptBackendFramework() {
|
|
66
|
+
return select({
|
|
67
|
+
message: 'Which backend framework?',
|
|
68
|
+
choices: [
|
|
69
|
+
{
|
|
70
|
+
value: 'spring-boot',
|
|
71
|
+
name: '☕ Spring Boot',
|
|
72
|
+
description: 'Java/Kotlin enterprise framework with auto-configuration and production-ready features.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
value: 'express',
|
|
76
|
+
name: '🚂 Express.js',
|
|
77
|
+
description: 'Minimalist Node.js framework. Most popular, highly flexible.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
value: 'fastify',
|
|
81
|
+
name: '⚡ Fastify',
|
|
82
|
+
description: 'Fast Node.js framework with schema validation and TypeScript support.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
value: 'nestjs',
|
|
86
|
+
name: '🐈 NestJS',
|
|
87
|
+
description: 'TypeScript-first Node.js framework inspired by Angular. Great for large teams.',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
44
92
|
//# sourceMappingURL=frameworks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAwB;IAC5D,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAwB;IAC5D,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,MAAM,CAAC,CAAC,+CAA+C;IAChE,CAAC;IAED,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QACjC,mDAAmD;QACnD,OAAO,MAAM,CAAoB;YAC/B,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,YAAY;oBACnB,IAAI,EAAE,8BAA8B;oBACpC,WAAW,EAAE,sEAAsE;iBACpF;gBACD;oBACE,KAAK,EAAE,WAAW;oBAClB,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EAAE,kEAAkE;iBAChF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAoB;QAC/B,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,2BAA2B;gBACjC,WAAW,EAAE,yEAAyE;aACvF;YACD;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,uEAAuE;aACrF;YACD;gBACE,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,mEAAmE;aACjF;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,iEAAiE;aAC/E;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,2EAA2E;aACzF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,OAAO,MAAM,CAAmB;QAC9B,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,yFAAyF;aACvG;YACD;gBACE,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,8DAA8D;aAC5E;YACD;gBACE,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,uEAAuE;aACrF;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,gFAAgF;aAC9F;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type { NexusConfig } from '../types/config.js';
|
|
|
11
11
|
* slug ("todo-list-app") automatically for the folder & package.json name.
|
|
12
12
|
*
|
|
13
13
|
* @param initialName - Optional project name passed via CLI argument
|
|
14
|
+
* @param localOnly - Optional flag to set local-only mode (skip prompt)
|
|
14
15
|
*/
|
|
15
|
-
export declare function runPrompts(initialName?: string): Promise<NexusConfig>;
|
|
16
|
+
export declare function runPrompts(initialName?: string, localOnly?: boolean): Promise<NexusConfig>;
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYtD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAwEhG"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -8,10 +8,11 @@ import { detectPackageManager } from '../utils/package-manager.js';
|
|
|
8
8
|
import { validateProjectName, toSlug, toDisplayName } from '../utils/validator.js';
|
|
9
9
|
import { promptDataStrategy } from './data-strategy.js';
|
|
10
10
|
import { promptFeatures } from './features.js';
|
|
11
|
-
import { promptFramework } from './frameworks.js';
|
|
11
|
+
import { promptFramework, promptBackendFramework } from './frameworks.js';
|
|
12
12
|
import { promptPatterns } from './patterns.js';
|
|
13
13
|
import { promptPersona } from './persona.js';
|
|
14
14
|
import { promptProjectType } from './project-type.js';
|
|
15
|
+
import { promptSkillConfig } from './skill-config.js';
|
|
15
16
|
/**
|
|
16
17
|
* Run the full interactive prompt flow and return a complete NexusConfig.
|
|
17
18
|
*
|
|
@@ -19,8 +20,9 @@ import { promptProjectType } from './project-type.js';
|
|
|
19
20
|
* slug ("todo-list-app") automatically for the folder & package.json name.
|
|
20
21
|
*
|
|
21
22
|
* @param initialName - Optional project name passed via CLI argument
|
|
23
|
+
* @param localOnly - Optional flag to set local-only mode (skip prompt)
|
|
22
24
|
*/
|
|
23
|
-
export async function runPrompts(initialName) {
|
|
25
|
+
export async function runPrompts(initialName, localOnly) {
|
|
24
26
|
// 1. Project name (free-text)
|
|
25
27
|
let rawName;
|
|
26
28
|
if (!initialName) {
|
|
@@ -44,16 +46,25 @@ export async function runPrompts(initialName) {
|
|
|
44
46
|
const displayName = toDisplayName(rawName);
|
|
45
47
|
// 2. Project type
|
|
46
48
|
const projectType = await promptProjectType();
|
|
47
|
-
// 3. Data strategy
|
|
48
|
-
const dataStrategy = await promptDataStrategy();
|
|
49
|
-
// 4. Application patterns
|
|
50
|
-
const appPatterns =
|
|
49
|
+
// 3. Data strategy (skip for ui-library)
|
|
50
|
+
const dataStrategy = projectType === 'ui-library' ? 'local-only' : await promptDataStrategy();
|
|
51
|
+
// 4. Application patterns (skip for ui-library and api)
|
|
52
|
+
const appPatterns = (projectType === 'ui-library' || projectType === 'api')
|
|
53
|
+
? []
|
|
54
|
+
: await promptPatterns();
|
|
51
55
|
// 5. Framework
|
|
52
56
|
const frontendFramework = await promptFramework(projectType);
|
|
57
|
+
// 5b. Backend framework (only for API projects)
|
|
58
|
+
const backendFramework = projectType === 'api'
|
|
59
|
+
? await promptBackendFramework()
|
|
60
|
+
: 'none';
|
|
53
61
|
// 6. Features & extras
|
|
54
62
|
const { testFramework, packageManager, git, installDeps } = await promptFeatures();
|
|
55
63
|
// 7. AI agent persona
|
|
56
64
|
const persona = await promptPersona();
|
|
65
|
+
// 8. Skills system
|
|
66
|
+
const frameworkLabel = getFrameworkLabel(frontendFramework);
|
|
67
|
+
const { enableSkills } = await promptSkillConfig(frameworkLabel);
|
|
57
68
|
// Assemble config
|
|
58
69
|
const config = {
|
|
59
70
|
projectName,
|
|
@@ -63,13 +74,27 @@ export async function runPrompts(initialName) {
|
|
|
63
74
|
appPatterns,
|
|
64
75
|
frontendFramework,
|
|
65
76
|
backendStrategy: projectType === 'api' ? 'separate' : 'integrated',
|
|
66
|
-
backendFramework
|
|
77
|
+
backendFramework,
|
|
67
78
|
testFramework,
|
|
68
79
|
packageManager: packageManager ?? detectPackageManager(),
|
|
69
80
|
git,
|
|
70
81
|
installDeps,
|
|
71
82
|
persona,
|
|
83
|
+
localOnly,
|
|
84
|
+
enableSkills,
|
|
72
85
|
};
|
|
73
86
|
return config;
|
|
74
87
|
}
|
|
88
|
+
function getFrameworkLabel(framework) {
|
|
89
|
+
const labels = {
|
|
90
|
+
nextjs: 'Next.js',
|
|
91
|
+
'react-vite': 'React + Vite',
|
|
92
|
+
sveltekit: 'SvelteKit',
|
|
93
|
+
nuxt: 'Nuxt 3',
|
|
94
|
+
astro: 'Astro',
|
|
95
|
+
remix: 'Remix',
|
|
96
|
+
none: 'shared',
|
|
97
|
+
};
|
|
98
|
+
return labels[framework] ?? framework;
|
|
99
|
+
}
|
|
75
100
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|