@cristiancorreau/forge 2.15.0 → 2.17.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 (54) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/assets/core/schemas/project.schema.json +16 -1
  3. package/assets/manifest.json +1 -1
  4. package/dist/cli.js +6 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/adopt.d.ts +2 -0
  7. package/dist/commands/adopt.d.ts.map +1 -0
  8. package/dist/commands/adopt.js +259 -0
  9. package/dist/commands/adopt.js.map +1 -0
  10. package/dist/commands/init.d.ts +41 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +60 -44
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/lib/detect.d.ts +6 -0
  15. package/dist/lib/detect.d.ts.map +1 -1
  16. package/dist/lib/detect.js +17 -1
  17. package/dist/lib/detect.js.map +1 -1
  18. package/dist/lib/generators/claude-code.d.ts.map +1 -1
  19. package/dist/lib/generators/claude-code.js +7 -2
  20. package/dist/lib/generators/claude-code.js.map +1 -1
  21. package/dist/lib/generators/codex.d.ts.map +1 -1
  22. package/dist/lib/generators/codex.js +3 -2
  23. package/dist/lib/generators/codex.js.map +1 -1
  24. package/dist/lib/generators/kiro.d.ts.map +1 -1
  25. package/dist/lib/generators/kiro.js +3 -2
  26. package/dist/lib/generators/kiro.js.map +1 -1
  27. package/dist/lib/generators/opencode.d.ts.map +1 -1
  28. package/dist/lib/generators/opencode.js +3 -2
  29. package/dist/lib/generators/opencode.js.map +1 -1
  30. package/dist/lib/project-analysis.d.ts +52 -0
  31. package/dist/lib/project-analysis.d.ts.map +1 -0
  32. package/dist/lib/project-analysis.js +361 -0
  33. package/dist/lib/project-analysis.js.map +1 -0
  34. package/dist/lib/wiki-autogen.d.ts +31 -0
  35. package/dist/lib/wiki-autogen.d.ts.map +1 -0
  36. package/dist/lib/wiki-autogen.js +596 -0
  37. package/dist/lib/wiki-autogen.js.map +1 -0
  38. package/dist/lib/wizard-flow.d.ts +57 -0
  39. package/dist/lib/wizard-flow.d.ts.map +1 -0
  40. package/dist/lib/wizard-flow.js +99 -0
  41. package/dist/lib/wizard-flow.js.map +1 -0
  42. package/dist/lib/wizard.d.ts +8 -0
  43. package/dist/lib/wizard.d.ts.map +1 -1
  44. package/dist/lib/wizard.js +133 -76
  45. package/dist/lib/wizard.js.map +1 -1
  46. package/dist/lib/yaml.d.ts +6 -0
  47. package/dist/lib/yaml.d.ts.map +1 -1
  48. package/dist/lib/yaml.js.map +1 -1
  49. package/dist/tui/wizard.d.ts.map +1 -1
  50. package/dist/tui/wizard.js +95 -40
  51. package/dist/tui/wizard.js.map +1 -1
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/package.json +2 -2
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Pure helpers shared by both wizards (OpenTUI `tui/wizard.ts` and the @clack
3
+ * fallback `lib/wizard.ts`) and exercised directly by the test suite.
4
+ *
5
+ * The wizard now asks the PROJECT TYPE first (frontend · backend · fullstack)
6
+ * and then the LANGUAGE + FRAMEWORK separately per side, with the framework list
7
+ * FILTERED by the chosen language. The data model stays backward-compatible:
8
+ * `project.language` is DERIVED from the per-side languages.
9
+ */
10
+ export type ProjectType = 'frontend' | 'backend' | 'fullstack';
11
+ /** Backend frameworks by language. Used to filter the framework picker. */
12
+ export declare const BACKEND_BY_LANG: Record<string, string[]>;
13
+ /** Frontend frameworks by language. Frontend is TypeScript/JS only today. */
14
+ export declare const FRONTEND_BY_LANG: Record<string, string[]>;
15
+ /** Languages offered for the backend side. */
16
+ export declare const BACKEND_LANGUAGES: string[];
17
+ /** Languages offered for the frontend side. */
18
+ export declare const FRONTEND_LANGUAGES: string[];
19
+ /** True when the project type implies a backend side. */
20
+ export declare function hasBackend(type: ProjectType): boolean;
21
+ /** True when the project type implies a frontend side. */
22
+ export declare function hasFrontend(type: ProjectType): boolean;
23
+ /** Backend framework values valid for a language (always includes the escape). */
24
+ export declare function backendFrameworksFor(language: string): string[];
25
+ /** Frontend framework values valid for a language. */
26
+ export declare function frontendFrameworksFor(language: string): string[];
27
+ /**
28
+ * Derive the legacy `project.language` from the per-side languages, per the
29
+ * backward-compat rule:
30
+ * - backend / fullstack → the backend language
31
+ * - frontend-only → the frontend language
32
+ * - fullstack with differing sides → 'mixed'
33
+ * Falls back to 'typescript' when nothing is known.
34
+ */
35
+ export declare function deriveProjectLanguage(args: {
36
+ type: ProjectType;
37
+ backendLanguage?: string;
38
+ frontendLanguage?: string;
39
+ }): string;
40
+ /**
41
+ * Infer the project type from what was detected/declared. Best-effort, used by
42
+ * detect.ts and to back-fill old project.yaml files that lack `project.type`.
43
+ */
44
+ export declare function inferProjectType(args: {
45
+ backend?: string | null;
46
+ frontend?: string | null;
47
+ }): ProjectType;
48
+ /** Human label for a language, used in generated docs (CLAUDE.md/AGENTS.md). */
49
+ export declare function languageLabel(language: string): string;
50
+ /**
51
+ * Render a stack side for generated docs: "FastAPI (Python)" when the per-side
52
+ * language is known, "FastAPI" when only the framework is known, and 'N/A' when
53
+ * the side is absent. Old project.yaml files (no per-side language) degrade to
54
+ * just the framework name.
55
+ */
56
+ export declare function stackWithLanguage(framework?: string | null, language?: string | null): string;
57
+ //# sourceMappingURL=wizard-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-flow.d.ts","sourceRoot":"","sources":["../../src/lib/wizard-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/D,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAMpD,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAErD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,UAAgD,CAAC;AAE/E,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,UAAiB,CAAC;AAEjD,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAErD;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEtD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAE/D;AAED,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAST;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,WAAW,CAOd;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG7F"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Pure helpers shared by both wizards (OpenTUI `tui/wizard.ts` and the @clack
3
+ * fallback `lib/wizard.ts`) and exercised directly by the test suite.
4
+ *
5
+ * The wizard now asks the PROJECT TYPE first (frontend · backend · fullstack)
6
+ * and then the LANGUAGE + FRAMEWORK separately per side, with the framework list
7
+ * FILTERED by the chosen language. The data model stays backward-compatible:
8
+ * `project.language` is DERIVED from the per-side languages.
9
+ */
10
+ /** Backend frameworks by language. Used to filter the framework picker. */
11
+ export const BACKEND_BY_LANG = {
12
+ typescript: ['hono', 'express', 'nestjs', 'fastify'],
13
+ python: ['fastapi', 'django'],
14
+ ruby: ['rails'],
15
+ go: ['go-gin'],
16
+ php: ['laravel'],
17
+ };
18
+ /** Frontend frameworks by language. Frontend is TypeScript/JS only today. */
19
+ export const FRONTEND_BY_LANG = {
20
+ typescript: ['nextjs', 'astro', 'sveltekit', 'nuxt'],
21
+ };
22
+ /** Languages offered for the backend side. */
23
+ export const BACKEND_LANGUAGES = ['typescript', 'python', 'ruby', 'go', 'php'];
24
+ /** Languages offered for the frontend side. */
25
+ export const FRONTEND_LANGUAGES = ['typescript'];
26
+ /** True when the project type implies a backend side. */
27
+ export function hasBackend(type) {
28
+ return type === 'backend' || type === 'fullstack';
29
+ }
30
+ /** True when the project type implies a frontend side. */
31
+ export function hasFrontend(type) {
32
+ return type === 'frontend' || type === 'fullstack';
33
+ }
34
+ /** Backend framework values valid for a language (always includes the escape). */
35
+ export function backendFrameworksFor(language) {
36
+ return BACKEND_BY_LANG[language] ?? [];
37
+ }
38
+ /** Frontend framework values valid for a language. */
39
+ export function frontendFrameworksFor(language) {
40
+ return FRONTEND_BY_LANG[language] ?? [];
41
+ }
42
+ /**
43
+ * Derive the legacy `project.language` from the per-side languages, per the
44
+ * backward-compat rule:
45
+ * - backend / fullstack → the backend language
46
+ * - frontend-only → the frontend language
47
+ * - fullstack with differing sides → 'mixed'
48
+ * Falls back to 'typescript' when nothing is known.
49
+ */
50
+ export function deriveProjectLanguage(args) {
51
+ const { type, backendLanguage, frontendLanguage } = args;
52
+ if (type === 'frontend')
53
+ return frontendLanguage ?? 'typescript';
54
+ if (type === 'backend')
55
+ return backendLanguage ?? 'typescript';
56
+ // fullstack
57
+ if (backendLanguage && frontendLanguage) {
58
+ return backendLanguage === frontendLanguage ? backendLanguage : 'mixed';
59
+ }
60
+ return backendLanguage ?? frontendLanguage ?? 'typescript';
61
+ }
62
+ /**
63
+ * Infer the project type from what was detected/declared. Best-effort, used by
64
+ * detect.ts and to back-fill old project.yaml files that lack `project.type`.
65
+ */
66
+ export function inferProjectType(args) {
67
+ const hasB = !!args.backend;
68
+ const hasF = !!args.frontend;
69
+ if (hasB && hasF)
70
+ return 'fullstack';
71
+ if (hasF && !hasB)
72
+ return 'frontend';
73
+ // backend, or nothing detected → default to backend (DB/ORM stay available).
74
+ return 'backend';
75
+ }
76
+ /** Human label for a language, used in generated docs (CLAUDE.md/AGENTS.md). */
77
+ export function languageLabel(language) {
78
+ const map = {
79
+ typescript: 'TypeScript',
80
+ python: 'Python',
81
+ ruby: 'Ruby',
82
+ go: 'Go',
83
+ php: 'PHP',
84
+ mixed: 'mixed',
85
+ };
86
+ return map[language] ?? language;
87
+ }
88
+ /**
89
+ * Render a stack side for generated docs: "FastAPI (Python)" when the per-side
90
+ * language is known, "FastAPI" when only the framework is known, and 'N/A' when
91
+ * the side is absent. Old project.yaml files (no per-side language) degrade to
92
+ * just the framework name.
93
+ */
94
+ export function stackWithLanguage(framework, language) {
95
+ if (!framework)
96
+ return 'N/A';
97
+ return language ? `${framework} (${languageLabel(language)})` : framework;
98
+ }
99
+ //# sourceMappingURL=wizard-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-flow.js","sourceRoot":"","sources":["../../src/lib/wizard-flow.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,16 @@
1
+ import { type ProjectType } from './wizard-flow.js';
1
2
  export interface WizardResult {
2
3
  name: string;
3
4
  slug: string;
4
5
  description: string;
6
+ /** Derived legacy language (backend lang, frontend lang, or 'mixed'). */
5
7
  language: string;
8
+ /** Project type: solo frontend, solo backend o fullstack. */
9
+ type: ProjectType;
10
+ /** Backend language (only when the project has a backend). */
11
+ backendLanguage?: string;
12
+ /** Frontend language (only when the project has a frontend). */
13
+ frontendLanguage?: string;
6
14
  mode: 'startup' | 'standard' | 'enterprise';
7
15
  backend?: string;
8
16
  frontend?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAmHD,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgN9D"}
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,WAAW,EAIjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,IAAI,EAAE,WAAW,CAAC;IAClB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AA6ID,wBAAsB,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsP9D"}
@@ -4,29 +4,52 @@ import { detectStack } from './detect.js';
4
4
  import { SKILLS } from './catalog.js';
5
5
  import { forgeBanner } from '../ui/banner.js';
6
6
  import { VERSION } from '../version.js';
7
+ import { hasBackend, hasFrontend, backendFrameworksFor, frontendFrameworksFor, deriveProjectLanguage, } from './wizard-flow.js';
7
8
  // ─── Options tables ──────────────────────────────────────────────────────────
8
- const BACKENDS = {
9
- typescript: [
10
- { value: 'hono', label: 'Hono', hint: 'edge-ready, ultraligero' },
11
- { value: 'express', label: 'Express', hint: 'el clásico' },
12
- { value: 'nestjs', label: 'NestJS', hint: 'enterprise, opinionado' },
13
- { value: 'fastify', label: 'Fastify', hint: 'rápido, plugins' },
14
- { value: 'none', label: 'Ninguno' },
15
- ],
16
- python: [{ value: 'fastapi', label: 'FastAPI', hint: 'async' }, { value: 'django', label: 'Django' }, { value: 'none', label: 'Ninguno' }],
17
- ruby: [{ value: 'rails', label: 'Rails' }, { value: 'none', label: 'Ninguno' }],
18
- go: [{ value: 'go-gin', label: 'Gin' }, { value: 'none', label: 'Ninguno' }],
19
- php: [{ value: 'laravel', label: 'Laravel' }, { value: 'none', label: 'Ninguno' }],
9
+ // Per-framework option metadata (label + hint). The wizard builds the actual
10
+ // picker by FILTERING these by the chosen per-side language (wizard-flow maps).
11
+ const BACKEND_META = {
12
+ hono: { label: 'Hono', hint: 'edge-ready, ultraligero' },
13
+ express: { label: 'Express', hint: 'el clásico' },
14
+ nestjs: { label: 'NestJS', hint: 'enterprise, opinionado' },
15
+ fastify: { label: 'Fastify', hint: 'rápido, plugins' },
16
+ fastapi: { label: 'FastAPI', hint: 'async' },
17
+ django: { label: 'Django' },
18
+ rails: { label: 'Rails' },
19
+ 'go-gin': { label: 'Gin' },
20
+ laravel: { label: 'Laravel' },
20
21
  };
21
- const FRONTENDS = {
22
- typescript: [
23
- { value: 'nextjs', label: 'Next.js', hint: 'fullstack React' },
24
- { value: 'astro', label: 'Astro', hint: 'content-first' },
25
- { value: 'nuxt', label: 'Nuxt', hint: 'Vue' },
26
- { value: 'sveltekit', label: 'SvelteKit', hint: 'Svelte' },
27
- { value: 'none', label: 'Ninguno' },
28
- ],
22
+ const FRONTEND_META = {
23
+ nextjs: { label: 'Next.js', hint: 'fullstack React' },
24
+ astro: { label: 'Astro', hint: 'content-first' },
25
+ nuxt: { label: 'Nuxt', hint: 'Vue' },
26
+ sveltekit: { label: 'SvelteKit', hint: 'Svelte' },
29
27
  };
28
+ const BACKEND_LANG_OPTS = [
29
+ { value: 'typescript', label: 'TypeScript / JavaScript', hint: 'recomendado' },
30
+ { value: 'python', label: 'Python' },
31
+ { value: 'ruby', label: 'Ruby' },
32
+ { value: 'go', label: 'Go' },
33
+ { value: 'php', label: 'PHP' },
34
+ ];
35
+ const FRONTEND_LANG_OPTS = [
36
+ { value: 'typescript', label: 'TypeScript / JavaScript', hint: 'recomendado' },
37
+ ];
38
+ /** Build a framework picker (filtered by language) + the "ninguno / otro" escape. */
39
+ function backendFrameworkOptions(language) {
40
+ const opts = backendFrameworksFor(language).map(v => ({
41
+ value: v, label: BACKEND_META[v]?.label ?? v, hint: BACKEND_META[v]?.hint,
42
+ }));
43
+ opts.push({ value: 'none', label: 'Ninguno / otro' });
44
+ return opts;
45
+ }
46
+ function frontendFrameworkOptions(language) {
47
+ const opts = frontendFrameworksFor(language).map(v => ({
48
+ value: v, label: FRONTEND_META[v]?.label ?? v, hint: FRONTEND_META[v]?.hint,
49
+ }));
50
+ opts.push({ value: 'none', label: 'Ninguno / otro' });
51
+ return opts;
52
+ }
30
53
  const ORMS = {
31
54
  typescript: [
32
55
  { value: 'drizzle', label: 'Drizzle ORM', hint: 'ligero, type-safe' },
@@ -153,67 +176,85 @@ export async function runWizard() {
153
176
  message: 'Descripción breve',
154
177
  placeholder: 'Describe tu proyecto en una línea',
155
178
  }));
156
- // ── Tech stack ──
157
- step(2, 4, 'Stack técnico');
158
- const language = check(await p.select({
159
- message: 'Lenguaje principal',
160
- initialValue: detected.language ?? 'typescript',
161
- options: [
162
- { value: 'typescript', label: 'TypeScript / JavaScript', hint: 'recomendado' },
163
- { value: 'python', label: 'Python' },
164
- { value: 'ruby', label: 'Ruby' },
165
- { value: 'go', label: 'Go' },
166
- { value: 'php', label: 'PHP' },
167
- ],
168
- }));
169
- const mode = check(await p.select({
170
- message: 'Modo del proyecto',
171
- initialValue: 'standard',
179
+ // ── Tipo de proyecto (PRIMERO, justo después del nombre) ──
180
+ // Determina qué lados (backend/frontend) se preguntan. Si se detectó stack,
181
+ // se pre-selecciona el tipo inferido.
182
+ const detectedType = detected.backend && detected.frontend ? 'fullstack'
183
+ : detected.frontend ? 'frontend'
184
+ : detected.backend ? 'backend'
185
+ : undefined;
186
+ const type = check(await p.select({
187
+ message: 'Tipo de proyecto',
188
+ initialValue: detectedType ?? 'fullstack',
172
189
  options: [
173
- { value: 'startup', label: 'startup', hint: 'mínimo viable, equipo pequeño' },
174
- { value: 'standard', label: 'standard', hint: 'CI/CD, code review, testing' },
175
- { value: 'enterprise', label: 'enterprise', hint: 'compliance, auditoría, multi-equipo' },
190
+ { value: 'frontend', label: 'Solo Frontend', hint: 'UI / SPA / SSR' },
191
+ { value: 'backend', label: 'Solo Backend', hint: 'API / servicio' },
192
+ { value: 'fullstack', label: 'Fullstack', hint: 'frontend + backend (pueden diferir)' },
176
193
  ],
177
194
  }));
178
- const backendOpts = BACKENDS[language] ?? [{ value: 'none', label: 'Ninguno' }];
179
- const backendVal = check(await p.select({
180
- message: 'Framework backend',
181
- initialValue: detected.backend ?? backendOpts[0].value,
182
- options: backendOpts,
183
- }));
184
- const backend = backendVal === 'none' ? undefined : backendVal;
185
- const frontendOpts = FRONTENDS[language];
195
+ // ── Stack técnico ──
196
+ step(2, 4, 'Stack técnico');
197
+ // Backend: lenguaje → framework (filtrado por lenguaje). Solo si aplica.
198
+ let backendLanguage;
199
+ let backend;
200
+ if (hasBackend(type)) {
201
+ backendLanguage = check(await p.select({
202
+ message: 'Lenguaje del backend',
203
+ initialValue: detected.language ?? 'typescript',
204
+ options: BACKEND_LANG_OPTS,
205
+ }));
206
+ const backendVal = check(await p.select({
207
+ message: 'Framework backend',
208
+ initialValue: detected.backend ?? 'none',
209
+ options: backendFrameworkOptions(backendLanguage),
210
+ }));
211
+ backend = backendVal === 'none' ? undefined : backendVal;
212
+ }
213
+ // Frontend: lenguaje → framework (filtrado por lenguaje). Solo si aplica.
214
+ let frontendLanguage;
186
215
  let frontend;
187
- if (frontendOpts) {
188
- const v = check(await p.select({
216
+ if (hasFrontend(type)) {
217
+ frontendLanguage = check(await p.select({
218
+ message: 'Lenguaje del frontend',
219
+ initialValue: detected.frontend ? 'typescript' : 'typescript',
220
+ options: FRONTEND_LANG_OPTS,
221
+ }));
222
+ const frontendVal = check(await p.select({
189
223
  message: 'Framework frontend',
190
224
  initialValue: detected.frontend ?? 'none',
191
- options: frontendOpts,
225
+ options: frontendFrameworkOptions(frontendLanguage),
192
226
  }));
193
- frontend = v === 'none' ? undefined : v;
227
+ frontend = frontendVal === 'none' ? undefined : frontendVal;
194
228
  }
195
- const dbVal = check(await p.select({
196
- message: 'Base de datos',
197
- initialValue: detected.database ?? 'postgresql',
198
- options: [
199
- { value: 'postgresql', label: 'PostgreSQL', hint: 'recomendado' },
200
- { value: 'mysql', label: 'MySQL / MariaDB' },
201
- { value: 'sqlite', label: 'SQLite', hint: 'dev/embedded' },
202
- { value: 'none', label: 'Ninguna' },
203
- ],
204
- }));
205
- const database = dbVal === 'none' ? undefined : dbVal;
229
+ // Lenguaje para ORM / package manager / testing: el del backend si existe,
230
+ // si no el del frontend.
231
+ const stackLanguage = backendLanguage ?? frontendLanguage ?? 'typescript';
232
+ // Database / ORM — solo cuando hay backend.
233
+ let database;
206
234
  let orm;
207
- const ormOpts = ORMS[language];
208
- if (database && ormOpts) {
209
- const v = check(await p.select({
210
- message: 'ORM / query builder',
211
- initialValue: detected.orm ?? ormOpts[0].value,
212
- options: ormOpts,
235
+ if (hasBackend(type)) {
236
+ const dbVal = check(await p.select({
237
+ message: 'Base de datos',
238
+ initialValue: detected.database ?? 'postgresql',
239
+ options: [
240
+ { value: 'postgresql', label: 'PostgreSQL', hint: 'recomendado' },
241
+ { value: 'mysql', label: 'MySQL / MariaDB' },
242
+ { value: 'sqlite', label: 'SQLite', hint: 'dev/embedded' },
243
+ { value: 'none', label: 'Ninguna' },
244
+ ],
213
245
  }));
214
- orm = v === 'none' ? undefined : v;
246
+ database = dbVal === 'none' ? undefined : dbVal;
247
+ const ormOpts = ORMS[backendLanguage ?? 'typescript'];
248
+ if (database && ormOpts) {
249
+ const v = check(await p.select({
250
+ message: 'ORM / query builder',
251
+ initialValue: detected.orm ?? ormOpts[0].value,
252
+ options: ormOpts,
253
+ }));
254
+ orm = v === 'none' ? undefined : v;
255
+ }
215
256
  }
216
- const pmOpts = PKG_MANAGERS[language];
257
+ const pmOpts = PKG_MANAGERS[stackLanguage];
217
258
  let packageManager;
218
259
  if (pmOpts) {
219
260
  const v = check(await p.select({
@@ -223,7 +264,7 @@ export async function runWizard() {
223
264
  }));
224
265
  packageManager = v === 'none' ? undefined : v;
225
266
  }
226
- const testOpts = TESTING_OPTS[language];
267
+ const testOpts = TESTING_OPTS[stackLanguage];
227
268
  let testing = detected.testing;
228
269
  if (testOpts) {
229
270
  const v = check(await p.multiselect({
@@ -234,6 +275,19 @@ export async function runWizard() {
234
275
  }));
235
276
  testing = v;
236
277
  }
278
+ // ── Modo ──
279
+ const mode = check(await p.select({
280
+ message: 'Modo del proyecto',
281
+ initialValue: 'standard',
282
+ options: [
283
+ { value: 'startup', label: 'startup', hint: 'mínimo viable, equipo pequeño' },
284
+ { value: 'standard', label: 'standard', hint: 'CI/CD, code review, testing' },
285
+ { value: 'enterprise', label: 'enterprise', hint: 'compliance, auditoría, multi-equipo' },
286
+ ],
287
+ }));
288
+ // Lenguaje legacy derivado (back-compat): back/fullstack → backend lang,
289
+ // frontend-only → frontend lang, fullstack con lados distintos → 'mixed'.
290
+ const language = deriveProjectLanguage({ type, backendLanguage, frontendLanguage });
237
291
  // ── Runtime ──
238
292
  step(3, 4, 'Runtime de IA');
239
293
  const runtime = check(await p.select({
@@ -260,12 +314,14 @@ export async function runWizard() {
260
314
  }));
261
315
  // ── Confirmación ──
262
316
  // Tidy, label-aligned summary box (right-padded keys so the values line up).
263
- const row = (k, v) => ` ${chalk.dim(k.padEnd(10))} ${v}`;
317
+ const row = (k, v) => ` ${chalk.dim(k.padEnd(14))} ${v}`;
318
+ const backendStr = backend ? `${backend}${backendLanguage ? ` (${backendLanguage})` : ''}` : '';
319
+ const frontendStr = frontend ? `${frontend}${frontendLanguage ? ` (${frontendLanguage})` : ''}` : '';
264
320
  const summary = [
265
321
  row('Nombre', chalk.bold(name)),
266
- row('Lenguaje', `${language} ${chalk.dim('Modo:')} ${mode}`),
267
- backend ? row('Backend', backend) : '',
268
- frontend ? row('Frontend', frontend) : '',
322
+ row('Tipo', `${type} ${chalk.dim('Lenguaje:')} ${language} ${chalk.dim('Modo:')} ${mode}`),
323
+ backendStr ? row('Backend', backendStr) : '',
324
+ frontendStr ? row('Frontend', frontendStr) : '',
269
325
  database ? row('Base de datos', `${database}${orm ? ' + ' + orm : ''}`) : '',
270
326
  testing.length ? row('Testing', testing.join(', ')) : '',
271
327
  row('Runtime', runtime),
@@ -285,7 +341,8 @@ export async function runWizard() {
285
341
  profiles.push(PROFILE_MAP[key]);
286
342
  }
287
343
  return {
288
- name, slug, description: description || '', language, mode,
344
+ name, slug, description: description || '', language, type,
345
+ backendLanguage, frontendLanguage, mode,
289
346
  backend, frontend, database, orm, packageManager, testing,
290
347
  profiles: [...new Set(profiles)], skills, runtime, detected: hasDetection,
291
348
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  export interface ProjectStack {
2
2
  backend?: string;
3
+ /** Lenguaje del backend (nuevo). Permite que back y front difieran. */
4
+ backend_language?: string;
3
5
  frontend?: string;
6
+ /** Lenguaje del frontend (nuevo). Permite que back y front difieran. */
7
+ frontend_language?: string;
4
8
  database?: string;
5
9
  orm?: string;
6
10
  package_manager?: string;
@@ -70,6 +74,8 @@ export interface ProjectYaml {
70
74
  slug?: string;
71
75
  description?: string;
72
76
  language?: string;
77
+ /** Tipo de proyecto (nuevo): solo frontend, solo backend o fullstack. */
78
+ type?: 'frontend' | 'backend' | 'fullstack';
73
79
  mode: 'startup' | 'standard' | 'enterprise';
74
80
  status?: string;
75
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/lib/yaml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/lib/yaml.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../src/lib/yaml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,IAAI,MAAM,SAAS,CAAC;AAgG3B,MAAM,UAAU,eAAe,CAAC,QAAgB,OAAO,CAAC,GAAG,EAAE;IAC3D,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAgB,CAAC;IAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAChH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../src/lib/yaml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,IAAI,MAAM,SAAS,CAAC;AAsG3B,MAAM,UAAU,eAAe,CAAC,QAAgB,OAAO,CAAC,GAAG,EAAE;IAC3D,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAgB,CAAC;IAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAChH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/tui/wizard.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA+GrD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA4TrE"}
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/tui/wizard.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgKrD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiVrE"}