@zigrivers/scaffold 3.5.3 → 3.7.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 (89) hide show
  1. package/README.md +150 -8
  2. package/content/knowledge/backend/backend-api-design.md +103 -0
  3. package/content/knowledge/backend/backend-architecture.md +100 -0
  4. package/content/knowledge/backend/backend-async-patterns.md +101 -0
  5. package/content/knowledge/backend/backend-auth-patterns.md +100 -0
  6. package/content/knowledge/backend/backend-conventions.md +105 -0
  7. package/content/knowledge/backend/backend-data-modeling.md +102 -0
  8. package/content/knowledge/backend/backend-deployment.md +100 -0
  9. package/content/knowledge/backend/backend-dev-environment.md +102 -0
  10. package/content/knowledge/backend/backend-observability.md +102 -0
  11. package/content/knowledge/backend/backend-project-structure.md +100 -0
  12. package/content/knowledge/backend/backend-requirements.md +103 -0
  13. package/content/knowledge/backend/backend-security.md +104 -0
  14. package/content/knowledge/backend/backend-testing.md +101 -0
  15. package/content/knowledge/backend/backend-worker-patterns.md +100 -0
  16. package/content/knowledge/cli/cli-architecture.md +101 -0
  17. package/content/knowledge/cli/cli-conventions.md +117 -0
  18. package/content/knowledge/cli/cli-dev-environment.md +121 -0
  19. package/content/knowledge/cli/cli-distribution-patterns.md +106 -0
  20. package/content/knowledge/cli/cli-interactivity-patterns.md +116 -0
  21. package/content/knowledge/cli/cli-output-patterns.md +107 -0
  22. package/content/knowledge/cli/cli-project-structure.md +124 -0
  23. package/content/knowledge/cli/cli-requirements.md +101 -0
  24. package/content/knowledge/cli/cli-shell-integration.md +130 -0
  25. package/content/knowledge/cli/cli-testing.md +134 -0
  26. package/content/knowledge/web-app/web-app-api-patterns.md +224 -0
  27. package/content/knowledge/web-app/web-app-architecture.md +116 -0
  28. package/content/knowledge/web-app/web-app-auth-patterns.md +256 -0
  29. package/content/knowledge/web-app/web-app-conventions.md +121 -0
  30. package/content/knowledge/web-app/web-app-data-patterns.md +218 -0
  31. package/content/knowledge/web-app/web-app-deployment-workflow.md +143 -0
  32. package/content/knowledge/web-app/web-app-deployment.md +134 -0
  33. package/content/knowledge/web-app/web-app-design-system.md +158 -0
  34. package/content/knowledge/web-app/web-app-dev-environment.md +173 -0
  35. package/content/knowledge/web-app/web-app-observability.md +221 -0
  36. package/content/knowledge/web-app/web-app-project-structure.md +160 -0
  37. package/content/knowledge/web-app/web-app-rendering-strategies.md +133 -0
  38. package/content/knowledge/web-app/web-app-requirements.md +112 -0
  39. package/content/knowledge/web-app/web-app-security.md +193 -0
  40. package/content/knowledge/web-app/web-app-session-patterns.md +214 -0
  41. package/content/knowledge/web-app/web-app-testing.md +249 -0
  42. package/content/knowledge/web-app/web-app-ux-patterns.md +162 -0
  43. package/content/methodology/backend-overlay.yml +73 -0
  44. package/content/methodology/cli-overlay.yml +69 -0
  45. package/content/methodology/web-app-overlay.yml +79 -0
  46. package/dist/cli/commands/init.d.ts +26 -0
  47. package/dist/cli/commands/init.d.ts.map +1 -1
  48. package/dist/cli/commands/init.js +354 -7
  49. package/dist/cli/commands/init.js.map +1 -1
  50. package/dist/cli/commands/init.test.js +136 -0
  51. package/dist/cli/commands/init.test.js.map +1 -1
  52. package/dist/config/schema.d.ts +800 -32
  53. package/dist/config/schema.d.ts.map +1 -1
  54. package/dist/config/schema.js +48 -5
  55. package/dist/config/schema.js.map +1 -1
  56. package/dist/config/schema.test.js +156 -1
  57. package/dist/config/schema.test.js.map +1 -1
  58. package/dist/core/assembly/overlay-loader.d.ts.map +1 -1
  59. package/dist/core/assembly/overlay-loader.js +2 -1
  60. package/dist/core/assembly/overlay-loader.js.map +1 -1
  61. package/dist/core/assembly/overlay-loader.test.js +34 -0
  62. package/dist/core/assembly/overlay-loader.test.js.map +1 -1
  63. package/dist/e2e/game-pipeline.test.js +1 -0
  64. package/dist/e2e/game-pipeline.test.js.map +1 -1
  65. package/dist/e2e/project-type-overlays.test.d.ts +15 -0
  66. package/dist/e2e/project-type-overlays.test.d.ts.map +1 -0
  67. package/dist/e2e/project-type-overlays.test.js +534 -0
  68. package/dist/e2e/project-type-overlays.test.js.map +1 -0
  69. package/dist/types/config.d.ts +13 -2
  70. package/dist/types/config.d.ts.map +1 -1
  71. package/dist/types/index.d.ts +0 -1
  72. package/dist/types/index.d.ts.map +1 -1
  73. package/dist/types/index.js +0 -1
  74. package/dist/types/index.js.map +1 -1
  75. package/dist/wizard/questions.d.ts +30 -1
  76. package/dist/wizard/questions.d.ts.map +1 -1
  77. package/dist/wizard/questions.js +181 -36
  78. package/dist/wizard/questions.js.map +1 -1
  79. package/dist/wizard/questions.test.js +334 -4
  80. package/dist/wizard/questions.test.js.map +1 -1
  81. package/dist/wizard/wizard.d.ts +26 -0
  82. package/dist/wizard/wizard.d.ts.map +1 -1
  83. package/dist/wizard/wizard.js +31 -2
  84. package/dist/wizard/wizard.js.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/types/wizard.d.ts +0 -14
  87. package/dist/types/wizard.d.ts.map +0 -1
  88. package/dist/types/wizard.js +0 -2
  89. package/dist/types/wizard.js.map +0 -1
@@ -8,7 +8,6 @@ export * from './decision.js';
8
8
  export * from './lock.js';
9
9
  export * from './cli.js';
10
10
  export * from './adapter.js';
11
- export * from './wizard.js';
12
11
  export * from './errors.js';
13
12
  export * from './claude-md.js';
14
13
  export * from './rework.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { OutputContext } from '../cli/output/context.js';
2
- import type { ProjectType, GameConfig } from '../types/index.js';
2
+ import type { ProjectType, GameConfig, WebAppConfig, BackendConfig, CliConfig } from '../types/index.js';
3
3
  export interface WizardAnswers {
4
4
  methodology: 'deep' | 'mvp' | 'custom';
5
5
  depth: 1 | 2 | 3 | 4 | 5;
@@ -7,6 +7,9 @@ export interface WizardAnswers {
7
7
  traits: string[];
8
8
  projectType?: ProjectType;
9
9
  gameConfig?: GameConfig;
10
+ webAppConfig?: WebAppConfig;
11
+ backendConfig?: BackendConfig;
12
+ cliConfig?: CliConfig;
10
13
  }
11
14
  /**
12
15
  * Ask user the wizard questions interactively.
@@ -18,5 +21,31 @@ export declare function askWizardQuestions(options: {
18
21
  methodology?: string;
19
22
  projectType?: string;
20
23
  auto: boolean;
24
+ depth?: number;
25
+ adapters?: string[];
26
+ traits?: string[];
27
+ engine?: string;
28
+ multiplayer?: string;
29
+ targetPlatforms?: string[];
30
+ onlineServices?: string[];
31
+ contentStructure?: string;
32
+ economy?: string;
33
+ narrative?: string;
34
+ locales?: string[];
35
+ npcAi?: string;
36
+ modding?: boolean;
37
+ persistence?: string;
38
+ webRendering?: string;
39
+ webDeployTarget?: string;
40
+ webRealtime?: string;
41
+ webAuthFlow?: string;
42
+ backendApiStyle?: string;
43
+ backendDataStore?: string[];
44
+ backendAuth?: string;
45
+ backendMessaging?: string;
46
+ backendDeployTarget?: string;
47
+ cliInteractivity?: string;
48
+ cliDistribution?: string[];
49
+ cliStructuredOutput?: boolean;
21
50
  }): Promise<WizardAnswers>;
22
51
  //# sourceMappingURL=questions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/wizard/questions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGhE,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACtC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,SAAS,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA;IACpD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,MAAM,GAAG,KAAK,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;CACd,GAAG,OAAO,CAAC,aAAa,CAAC,CA4JzB"}
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/wizard/questions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGxG,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACtC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,SAAS,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA;IACpD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,MAAM,GAAG,KAAK,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,OAAO,CAAC,aAAa,CAAC,CA2TzB"}
@@ -1,4 +1,4 @@
1
- import { GameConfigSchema } from '../config/schema.js';
1
+ import { GameConfigSchema, ProjectTypeSchema } from '../config/schema.js';
2
2
  /**
3
3
  * Ask user the wizard questions interactively.
4
4
  * In auto mode, use defaults immediately.
@@ -18,16 +18,24 @@ export async function askWizardQuestions(options) {
18
18
  }
19
19
  }
20
20
  // Depth question (only for custom methodology)
21
- let depth = methodology === 'mvp' ? 1 : methodology === 'deep' ? 5 : 3;
22
- if (methodology === 'custom' && !auto) {
21
+ const defaultDepth = methodology === 'mvp' ? 1 : methodology === 'deep' ? 5 : 3;
22
+ let depth = defaultDepth;
23
+ if (options.depth !== undefined) {
24
+ depth = options.depth;
25
+ }
26
+ else if (methodology === 'custom' && !auto) {
23
27
  const depthStr = await output.prompt('Depth (1-5) [3]:', '3');
24
28
  const parsed = parseInt(depthStr);
25
29
  if (parsed >= 1 && parsed <= 5)
26
30
  depth = parsed;
27
31
  }
28
32
  // Platform selection (simplified — claude-code always included)
29
- const platforms = ['claude-code'];
30
- if (!auto) {
33
+ let platforms;
34
+ if (options.adapters) {
35
+ platforms = options.adapters;
36
+ }
37
+ else if (!auto) {
38
+ platforms = ['claude-code'];
31
39
  const addCodex = await output.confirm('Include Codex adapter?', false);
32
40
  if (addCodex)
33
41
  platforms.push('codex');
@@ -35,9 +43,16 @@ export async function askWizardQuestions(options) {
35
43
  if (addGemini)
36
44
  platforms.push('gemini');
37
45
  }
46
+ else {
47
+ platforms = ['claude-code'];
48
+ }
38
49
  // Traits (web/mobile/desktop)
39
- const traits = [];
40
- if (!auto) {
50
+ let traits;
51
+ if (options.traits) {
52
+ traits = options.traits;
53
+ }
54
+ else if (!auto) {
55
+ traits = [];
41
56
  const isWeb = await output.confirm('Is this a web application?', false);
42
57
  if (isWeb)
43
58
  traits.push('web');
@@ -45,48 +60,178 @@ export async function askWizardQuestions(options) {
45
60
  if (isMobile)
46
61
  traits.push('mobile');
47
62
  }
63
+ else {
64
+ traits = [];
65
+ }
48
66
  // Project type question (skip if --project-type was provided)
49
67
  let projectType;
50
68
  if (options.projectType) {
51
69
  projectType = options.projectType;
52
70
  }
53
71
  else if (!auto) {
54
- const selected = await output.select('What type of project is this?', ['web-app', 'mobile-app', 'backend', 'cli', 'library', 'game'], 'web-app');
72
+ const selected = await output.select('What type of project is this?', [...ProjectTypeSchema.options], 'web-app');
55
73
  projectType = selected;
56
74
  }
75
+ // Web-App configuration
76
+ let webAppConfig;
77
+ if (projectType === 'web-app') {
78
+ if (auto && !options.webRendering) {
79
+ throw new Error('--web-rendering is required in auto mode for web-app projects');
80
+ }
81
+ const renderingStrategy = options.webRendering
82
+ ? options.webRendering
83
+ : await output.select('Rendering strategy?', ['spa', 'ssr', 'ssg', 'hybrid']);
84
+ const deployTarget = options.webDeployTarget
85
+ ? options.webDeployTarget
86
+ : !auto
87
+ ? await output.select('Deploy target?', ['static', 'serverless', 'container', 'edge', 'long-running'], 'serverless')
88
+ : 'serverless';
89
+ const realtime = options.webRealtime
90
+ ? options.webRealtime
91
+ : !auto
92
+ ? await output.select('Real-time needs?', ['none', 'websocket', 'sse'], 'none')
93
+ : 'none';
94
+ const authFlow = options.webAuthFlow
95
+ ? options.webAuthFlow
96
+ : !auto
97
+ ? await output.select('How do users authenticate?', ['none', 'session', 'oauth', 'passkey'], 'none')
98
+ : 'none';
99
+ webAppConfig = { renderingStrategy, deployTarget, realtime, authFlow };
100
+ }
101
+ // Backend configuration
102
+ let backendConfig;
103
+ if (projectType === 'backend') {
104
+ if (auto && !options.backendApiStyle) {
105
+ throw new Error('--backend-api-style is required in auto mode for backend projects');
106
+ }
107
+ const apiStyle = options.backendApiStyle
108
+ ? options.backendApiStyle
109
+ : await output.select('API style?', ['rest', 'graphql', 'grpc', 'trpc', 'none']);
110
+ const dataStore = options.backendDataStore
111
+ ? options.backendDataStore
112
+ : !auto
113
+ ? await output.multiSelect('Data store(s)?', ['relational', 'document', 'key-value'], ['relational'])
114
+ : ['relational'];
115
+ let authMechanism;
116
+ if (apiStyle === 'none') {
117
+ if (options.backendAuth && options.backendAuth !== 'none') {
118
+ output.warn('--backend-auth ignored because --backend-api-style is none (no API to authenticate)');
119
+ }
120
+ authMechanism = 'none';
121
+ }
122
+ else {
123
+ authMechanism = options.backendAuth
124
+ ? options.backendAuth
125
+ : !auto
126
+ ? await output.select('How does the API verify requests?', ['none', 'jwt', 'session', 'oauth', 'apikey'], 'none')
127
+ : 'none';
128
+ }
129
+ const asyncMessaging = options.backendMessaging
130
+ ? options.backendMessaging
131
+ : !auto
132
+ ? await output.select('Async messaging?', ['none', 'queue', 'event-driven'], 'none')
133
+ : 'none';
134
+ const deployTarget = options.backendDeployTarget
135
+ ? options.backendDeployTarget
136
+ : !auto
137
+ ? await output.select('Deploy target?', ['serverless', 'container', 'long-running'], 'container')
138
+ : 'container';
139
+ backendConfig = { apiStyle, dataStore, authMechanism, asyncMessaging, deployTarget };
140
+ }
141
+ // CLI configuration
142
+ let cliConfig;
143
+ if (projectType === 'cli') {
144
+ if (auto && !options.cliInteractivity) {
145
+ throw new Error('--cli-interactivity is required in auto mode for cli projects');
146
+ }
147
+ const interactivity = options.cliInteractivity
148
+ ? options.cliInteractivity
149
+ : await output.select('Interactivity model?', ['args-only', 'interactive', 'hybrid']);
150
+ const distributionChannels = options.cliDistribution
151
+ ? options.cliDistribution
152
+ : !auto
153
+ ? await output.multiSelect('Distribution channels?', ['package-manager', 'system-package-manager', 'standalone-binary', 'container'], ['package-manager'])
154
+ : ['package-manager'];
155
+ const hasStructuredOutput = options.cliStructuredOutput
156
+ ?? (!auto ? await output.confirm('Support structured output (--json)?', false) : false);
157
+ cliConfig = { interactivity, distributionChannels, hasStructuredOutput };
158
+ }
57
159
  // Game config questions (only when projectType === 'game')
58
160
  let gameConfig;
59
- if (projectType === 'game' && auto) {
60
- // --project-type game --auto: use Zod defaults
61
- const defaults = GameConfigSchema.parse({ engine: 'custom' });
62
- gameConfig = defaults;
63
- }
64
- else if (projectType === 'game' && !auto) {
65
- // Core questions — always asked for games
66
- const engine = await output.select('Game engine:', ['unity', 'unreal', 'godot', 'custom']);
67
- const multiplayerMode = await output.select('Multiplayer mode:', ['none', 'local', 'online', 'hybrid'], 'none');
68
- const targetPlatforms = await output.multiSelect('Target platforms:', ['pc', 'web', 'ios', 'android', 'ps5', 'xbox', 'switch', 'vr', 'ar'], ['pc']);
161
+ if (projectType === 'game') {
162
+ // Core questions use flag if provided, else ask (or default in auto mode)
163
+ const engine = options.engine
164
+ ? options.engine
165
+ : !auto
166
+ ? await output.select('Game engine:', ['unity', 'unreal', 'godot', 'custom'])
167
+ : 'custom';
168
+ // Derive Zod defaults from engine (used for auto mode and advanced defaults)
169
+ const schemaDefaults = GameConfigSchema.parse({ engine });
170
+ const multiplayerMode = options.multiplayer
171
+ ? options.multiplayer
172
+ : !auto
173
+ ? await output.select('Multiplayer mode:', ['none', 'local', 'online', 'hybrid'], 'none')
174
+ : schemaDefaults.multiplayerMode;
175
+ const targetPlatforms = options.targetPlatforms
176
+ ? options.targetPlatforms
177
+ : !auto
178
+ ? await output.multiSelect('Target platforms:', ['pc', 'web', 'ios', 'android', 'ps5', 'xbox', 'switch', 'vr', 'ar'], ['pc'])
179
+ : schemaDefaults.targetPlatforms;
69
180
  // Conditional follow-ups
70
- let onlineServices = [];
71
- if (multiplayerMode === 'online' || multiplayerMode === 'hybrid') {
181
+ let onlineServices;
182
+ if (options.onlineServices) {
183
+ onlineServices = options.onlineServices;
184
+ }
185
+ else if ((multiplayerMode === 'online' || multiplayerMode === 'hybrid') && !auto) {
72
186
  onlineServices = await output.multiSelect('Online services:', ['leaderboards', 'accounts', 'matchmaking', 'live-ops'], []);
73
187
  }
74
- const contentStructure = await output.select('Content structure:', ['discrete', 'open-world', 'procedural', 'endless', 'mission-based'], 'discrete');
75
- const economy = await output.select('Economy model:', ['none', 'progression', 'monetized', 'both'], 'none');
188
+ else {
189
+ onlineServices = schemaDefaults.onlineServices;
190
+ }
191
+ const contentStructure = options.contentStructure
192
+ ? options.contentStructure
193
+ : !auto
194
+ ? await output.select('Content structure:', ['discrete', 'open-world', 'procedural', 'endless', 'mission-based'], 'discrete')
195
+ : schemaDefaults.contentStructure;
196
+ const economy = options.economy
197
+ ? options.economy
198
+ : !auto
199
+ ? await output.select('Economy model:', ['none', 'progression', 'monetized', 'both'], 'none')
200
+ : schemaDefaults.economy;
76
201
  // Advanced options — defaults derived from Zod schema to prevent drift
77
- const schemaDefaults = GameConfigSchema.parse({ engine });
78
- let narrative = schemaDefaults.narrative;
79
- let supportedLocales = schemaDefaults.supportedLocales;
80
- let npcAiComplexity = schemaDefaults.npcAiComplexity;
81
- let hasModding = schemaDefaults.hasModding;
82
- let persistence = schemaDefaults.persistence;
83
- const showAdvanced = await output.confirm('Configure advanced game options?', false);
84
- if (showAdvanced) {
85
- narrative = await output.select('Narrative depth:', ['none', 'light', 'heavy'], 'none');
86
- supportedLocales = await output.multiInput('Supported locales (comma-separated):', ['en']);
87
- npcAiComplexity = await output.select('NPC AI complexity:', ['none', 'simple', 'complex'], 'none');
88
- hasModding = await output.confirm('Mod support?', false);
89
- persistence = await output.select('Persistence level:', ['none', 'settings-only', 'profile', 'progression', 'cloud'], 'progression');
202
+ let narrative = options.narrative
203
+ ? options.narrative
204
+ : schemaDefaults.narrative;
205
+ let supportedLocales = options.locales ?? schemaDefaults.supportedLocales;
206
+ let npcAiComplexity = options.npcAi
207
+ ? options.npcAi
208
+ : schemaDefaults.npcAiComplexity;
209
+ let hasModding = options.modding ?? schemaDefaults.hasModding;
210
+ let persistence = options.persistence
211
+ ? options.persistence
212
+ : schemaDefaults.persistence;
213
+ // If any advanced flag was provided via CLI, skip the gate question
214
+ const hasAdvancedFlag = options.narrative !== undefined || options.locales !== undefined ||
215
+ options.npcAi !== undefined || options.modding !== undefined || options.persistence !== undefined;
216
+ // Show advanced questions if: any advanced flag is set (force open), or user confirms
217
+ const showAdvanced = hasAdvancedFlag || (!auto && await output.confirm('Configure advanced game options?', false));
218
+ if (showAdvanced && !auto) {
219
+ // Ask each unflagged advanced question interactively
220
+ if (options.narrative === undefined) {
221
+ narrative = await output.select('Narrative depth:', ['none', 'light', 'heavy'], 'none');
222
+ }
223
+ if (options.locales === undefined) {
224
+ supportedLocales = await output.multiInput('Supported locales (comma-separated):', ['en']);
225
+ }
226
+ if (options.npcAi === undefined) {
227
+ npcAiComplexity = await output.select('NPC AI complexity:', ['none', 'simple', 'complex'], 'none');
228
+ }
229
+ if (options.modding === undefined) {
230
+ hasModding = await output.confirm('Mod support?', false);
231
+ }
232
+ if (options.persistence === undefined) {
233
+ persistence = await output.select('Persistence level:', ['none', 'settings-only', 'profile', 'progression', 'cloud'], 'progression');
234
+ }
90
235
  }
91
236
  gameConfig = {
92
237
  engine,
@@ -102,6 +247,6 @@ export async function askWizardQuestions(options) {
102
247
  persistence,
103
248
  };
104
249
  }
105
- return { methodology, depth, platforms, traits, projectType, gameConfig };
250
+ return { methodology, depth, platforms, traits, projectType, webAppConfig, backendConfig, cliConfig, gameConfig };
106
251
  }
107
252
  //# sourceMappingURL=questions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/wizard/questions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/wizard/questions.ts"],"names":[],"mappings":"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"}