@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.
- package/README.md +150 -8
- package/content/knowledge/backend/backend-api-design.md +103 -0
- package/content/knowledge/backend/backend-architecture.md +100 -0
- package/content/knowledge/backend/backend-async-patterns.md +101 -0
- package/content/knowledge/backend/backend-auth-patterns.md +100 -0
- package/content/knowledge/backend/backend-conventions.md +105 -0
- package/content/knowledge/backend/backend-data-modeling.md +102 -0
- package/content/knowledge/backend/backend-deployment.md +100 -0
- package/content/knowledge/backend/backend-dev-environment.md +102 -0
- package/content/knowledge/backend/backend-observability.md +102 -0
- package/content/knowledge/backend/backend-project-structure.md +100 -0
- package/content/knowledge/backend/backend-requirements.md +103 -0
- package/content/knowledge/backend/backend-security.md +104 -0
- package/content/knowledge/backend/backend-testing.md +101 -0
- package/content/knowledge/backend/backend-worker-patterns.md +100 -0
- package/content/knowledge/cli/cli-architecture.md +101 -0
- package/content/knowledge/cli/cli-conventions.md +117 -0
- package/content/knowledge/cli/cli-dev-environment.md +121 -0
- package/content/knowledge/cli/cli-distribution-patterns.md +106 -0
- package/content/knowledge/cli/cli-interactivity-patterns.md +116 -0
- package/content/knowledge/cli/cli-output-patterns.md +107 -0
- package/content/knowledge/cli/cli-project-structure.md +124 -0
- package/content/knowledge/cli/cli-requirements.md +101 -0
- package/content/knowledge/cli/cli-shell-integration.md +130 -0
- package/content/knowledge/cli/cli-testing.md +134 -0
- package/content/knowledge/web-app/web-app-api-patterns.md +224 -0
- package/content/knowledge/web-app/web-app-architecture.md +116 -0
- package/content/knowledge/web-app/web-app-auth-patterns.md +256 -0
- package/content/knowledge/web-app/web-app-conventions.md +121 -0
- package/content/knowledge/web-app/web-app-data-patterns.md +218 -0
- package/content/knowledge/web-app/web-app-deployment-workflow.md +143 -0
- package/content/knowledge/web-app/web-app-deployment.md +134 -0
- package/content/knowledge/web-app/web-app-design-system.md +158 -0
- package/content/knowledge/web-app/web-app-dev-environment.md +173 -0
- package/content/knowledge/web-app/web-app-observability.md +221 -0
- package/content/knowledge/web-app/web-app-project-structure.md +160 -0
- package/content/knowledge/web-app/web-app-rendering-strategies.md +133 -0
- package/content/knowledge/web-app/web-app-requirements.md +112 -0
- package/content/knowledge/web-app/web-app-security.md +193 -0
- package/content/knowledge/web-app/web-app-session-patterns.md +214 -0
- package/content/knowledge/web-app/web-app-testing.md +249 -0
- package/content/knowledge/web-app/web-app-ux-patterns.md +162 -0
- package/content/methodology/backend-overlay.yml +73 -0
- package/content/methodology/cli-overlay.yml +69 -0
- package/content/methodology/web-app-overlay.yml +79 -0
- package/dist/cli/commands/init.d.ts +26 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +354 -7
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +136 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/config/schema.d.ts +800 -32
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +48 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/config/schema.test.js +156 -1
- package/dist/config/schema.test.js.map +1 -1
- package/dist/core/assembly/overlay-loader.d.ts.map +1 -1
- package/dist/core/assembly/overlay-loader.js +2 -1
- package/dist/core/assembly/overlay-loader.js.map +1 -1
- package/dist/core/assembly/overlay-loader.test.js +34 -0
- package/dist/core/assembly/overlay-loader.test.js.map +1 -1
- package/dist/e2e/game-pipeline.test.js +1 -0
- package/dist/e2e/game-pipeline.test.js.map +1 -1
- package/dist/e2e/project-type-overlays.test.d.ts +15 -0
- package/dist/e2e/project-type-overlays.test.d.ts.map +1 -0
- package/dist/e2e/project-type-overlays.test.js +534 -0
- package/dist/e2e/project-type-overlays.test.js.map +1 -0
- package/dist/types/config.d.ts +13 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/wizard/questions.d.ts +30 -1
- package/dist/wizard/questions.d.ts.map +1 -1
- package/dist/wizard/questions.js +181 -36
- package/dist/wizard/questions.js.map +1 -1
- package/dist/wizard/questions.test.js +334 -4
- package/dist/wizard/questions.test.js.map +1 -1
- package/dist/wizard/wizard.d.ts +26 -0
- package/dist/wizard/wizard.d.ts.map +1 -1
- package/dist/wizard/wizard.js +31 -2
- package/dist/wizard/wizard.js.map +1 -1
- package/package.json +1 -1
- package/dist/types/wizard.d.ts +0 -14
- package/dist/types/wizard.d.ts.map +0 -1
- package/dist/types/wizard.js +0 -2
- package/dist/types/wizard.js.map +0 -1
package/dist/types/index.js
CHANGED
package/dist/types/index.js.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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"}
|
package/dist/wizard/questions.js
CHANGED
|
@@ -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
|
-
|
|
22
|
-
|
|
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
|
-
|
|
30
|
-
if (
|
|
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
|
-
|
|
40
|
-
if (
|
|
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?', [
|
|
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'
|
|
60
|
-
//
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
const
|
|
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 (
|
|
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
|
-
|
|
75
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let
|
|
81
|
-
let
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/wizard/questions.ts"],"names":[],"mappings":"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"}
|