minutework 0.1.0 → 0.1.2

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 (41) hide show
  1. package/EXTERNAL_ALPHA.md +10 -0
  2. package/README.md +9 -0
  3. package/assets/claude-local/bundle.json +1 -13
  4. package/assets/claude-local/skills/README.md +2 -2
  5. package/dist/cli.js +0 -0
  6. package/dist/developer-client.d.ts +36 -0
  7. package/dist/developer-client.js +37 -4
  8. package/dist/developer-client.js.map +1 -1
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.js +117 -50
  11. package/dist/index.js.map +1 -1
  12. package/dist/init-prompt.d.ts +11 -0
  13. package/dist/init-prompt.js +68 -0
  14. package/dist/init-prompt.js.map +1 -0
  15. package/dist/init.js +3 -3
  16. package/dist/init.js.map +1 -1
  17. package/dist/orchestrator-context.d.ts +13 -0
  18. package/dist/orchestrator-context.js +32 -0
  19. package/dist/orchestrator-context.js.map +1 -0
  20. package/dist/orchestrator-engine.d.ts +36 -0
  21. package/dist/orchestrator-engine.js +88 -0
  22. package/dist/orchestrator-engine.js.map +1 -0
  23. package/dist/orchestrator-state.d.ts +145 -0
  24. package/dist/orchestrator-state.js +211 -0
  25. package/dist/orchestrator-state.js.map +1 -0
  26. package/dist/orchestrator.d.ts +24 -0
  27. package/dist/orchestrator.js +599 -0
  28. package/dist/orchestrator.js.map +1 -0
  29. package/dist/paths.d.ts +1 -0
  30. package/dist/paths.js +1 -0
  31. package/dist/paths.js.map +1 -1
  32. package/dist/reporting.d.ts +53 -0
  33. package/dist/reporting.js +676 -0
  34. package/dist/reporting.js.map +1 -0
  35. package/dist/session-prompt.d.ts +11 -0
  36. package/dist/session-prompt.js +98 -0
  37. package/dist/session-prompt.js.map +1 -0
  38. package/dist/state.d.ts +1 -0
  39. package/dist/state.js +8 -0
  40. package/dist/state.js.map +1 -1
  41. package/package.json +17 -16
package/EXTERNAL_ALPHA.md CHANGED
@@ -18,6 +18,8 @@ npx minutework deploy --preview
18
18
 
19
19
  Anything outside that path is intentionally deferred.
20
20
 
21
+ If you run `minutework init` **without** `--starter` in an interactive terminal, the CLI prompts for tenant-app, sidecar, both, or base-only. In CI or scripts, use `--starter` or set `MW_CLI_NONINTERACTIVE=1` to skip the prompt (base-only scaffold).
22
+
21
23
  ## What `link` does
22
24
 
23
25
  `minutework link` is no longer tenant-only. It now:
@@ -66,6 +68,14 @@ The CLI does not fabricate success. If the backend cannot materialize a hosted p
66
68
  - Missing provider/receipt substrate: deploy returns a typed failure receipt
67
69
  - Failed preview deploy with an existing preview target: the platform reports `rolled_back` with `previous_preview_preserved`
68
70
 
71
+ ## CLI bug reports
72
+
73
+ - The CLI automatically submits a sanitized bug report for failed commands unless `MW_CLI_BUG_REPORTS=never` is set.
74
+ - Automatic reports keep a local JSON bundle under the MinuteWork CLI state root for retry and support follow-up.
75
+ - `minutework report-bug --note "..."` sends a manual report for UX issues or suspicious behavior that did not crash.
76
+ - `minutework report-bug --last --note "..."` resends the last saved bundle with extra context.
77
+ - Support should always ask for the printed `report_id` before requesting extra screenshots or logs.
78
+
69
79
  ## Release notes for operators
70
80
 
71
81
  - Package versioning stays manual for the first alpha.
package/README.md CHANGED
@@ -43,6 +43,15 @@ npx minutework deploy --preview
43
43
 
44
44
  `deploy --preview` always revalidates and recompiles before submit, prints a local-vs-remote diff, requires confirmation unless `--yes` is passed, polls typed receipts until a terminal state, and persists the last known preview deploy state under `.minutework/deploy/preview/status.json`.
45
45
 
46
+ ## Bug reporting
47
+
48
+ CLI failures automatically send a sanitized diagnostic report to the MinuteWork platform unless `MW_CLI_BUG_REPORTS=never` is set.
49
+
50
+ - Automatic reports never include raw `.env` contents, tokens, source files, or full local paths.
51
+ - The CLI keeps a local report bundle under the MinuteWork state root so you can retry or inspect what was sent.
52
+ - Use `minutework report-bug --note "what happened"` for manual reports.
53
+ - Use `minutework report-bug --last --note "extra context"` to resend the last saved bundle with more detail.
54
+
46
55
  ## Requirements
47
56
 
48
57
  - Node.js 18 or newer
@@ -5,18 +5,6 @@
5
5
  "output": "CLAUDE.md"
6
6
  },
7
7
  "directories": {
8
- "skills": "skills",
9
- "hooks": "hooks",
10
- "reference": "reference"
11
- },
12
- "local_export": {
13
- "include": [
14
- "CLAUDE.md.template",
15
- "skills/**"
16
- ],
17
- "exclude": [
18
- "hooks/**",
19
- "reference/**"
20
- ]
8
+ "skills": "skills"
21
9
  }
22
10
  }
@@ -2,5 +2,5 @@
2
2
 
3
3
  Place focused MinuteWork architecture skills here.
4
4
 
5
- These files are part of the canonical Builder bundle and are allowlisted for
6
- developer-local export.
5
+ These files are part of the canonical Builder common bundle and are allowlisted
6
+ for developer-local export. Skills are shared across all engine renderers.
package/dist/cli.js CHANGED
File without changes
@@ -61,6 +61,36 @@ export type DeveloperPublicSitePreviewDeployResponse = {
61
61
  export type DeveloperClientDependencies = {
62
62
  fetchImpl?: typeof fetch;
63
63
  };
64
+ export type CliBugReportRequest = {
65
+ auth: Record<string, unknown>;
66
+ cli_version: string;
67
+ command_args_shape: string[];
68
+ command_name: string;
69
+ cwd_kind: string;
70
+ diagnostics: Record<string, unknown>;
71
+ error_code: string;
72
+ error_message: string;
73
+ error_name: string;
74
+ failure_kind: "command_failure" | "crash" | "manual";
75
+ fingerprint: string;
76
+ install_id: string;
77
+ node_version: string;
78
+ os_name: string;
79
+ package_manager: string;
80
+ redacted_stack: string;
81
+ schema_version: string;
82
+ user_note: string;
83
+ workspace: Record<string, unknown>;
84
+ };
85
+ export type CliBugReportResponse = {
86
+ fingerprint: string;
87
+ report_id: string;
88
+ status: string;
89
+ };
90
+ export declare class DeveloperApiRequestError extends Error {
91
+ status: number;
92
+ constructor(message: string, status: number);
93
+ }
64
94
  export declare function createDeveloperClient(options: {
65
95
  dependencies?: DeveloperClientDependencies;
66
96
  profile: StoredAuthProfile;
@@ -86,3 +116,9 @@ export declare function createDeveloperClient(options: {
86
116
  workspaceName: string;
87
117
  }): Promise<DeveloperPublicSitePreviewDeployResponse>;
88
118
  };
119
+ export declare function submitCliBugReport(options: {
120
+ dependencies?: DeveloperClientDependencies;
121
+ payload: CliBugReportRequest;
122
+ platformBaseUrl: string;
123
+ profile?: StoredAuthProfile | null;
124
+ }): Promise<CliBugReportResponse>;
@@ -1,3 +1,11 @@
1
+ export class DeveloperApiRequestError extends Error {
2
+ status;
3
+ constructor(message, status) {
4
+ super(message);
5
+ this.name = "DeveloperApiRequestError";
6
+ this.status = status;
7
+ }
8
+ }
1
9
  export function createDeveloperClient(options) {
2
10
  const fetchImpl = options.dependencies?.fetchImpl ?? fetch;
3
11
  const tenantId = options.profile.tenantId;
@@ -62,17 +70,42 @@ export function createDeveloperClient(options) {
62
70
  },
63
71
  };
64
72
  }
73
+ export async function submitCliBugReport(options) {
74
+ const fetchImpl = options.dependencies?.fetchImpl ?? fetch;
75
+ const response = await fetchImpl(new URL("/api/v1/developer/cli-bug-reports/", `${options.platformBaseUrl}/`).toString(), {
76
+ method: "POST",
77
+ headers: {
78
+ "Content-Type": "application/json",
79
+ ...(options.profile
80
+ ? {
81
+ Authorization: `Bearer ${options.profile.token}`,
82
+ "X-Tenant-Id": options.profile.tenantId,
83
+ }
84
+ : {}),
85
+ },
86
+ body: JSON.stringify(options.payload),
87
+ });
88
+ const payload = (await response.json().catch(() => ({})));
89
+ if (!response.ok) {
90
+ throw developerApiRequestError({
91
+ actionLabel: "submit a CLI bug report",
92
+ detail: String(payload.detail || ""),
93
+ status: response.status,
94
+ });
95
+ }
96
+ return payload;
97
+ }
65
98
  function developerApiRequestError(options) {
66
99
  const detail = options.detail.trim();
67
100
  if (options.status === 401) {
68
- return new Error(`Authentication failed while attempting to ${options.actionLabel}. Run \`minutework login\` first.`);
101
+ return new DeveloperApiRequestError(`Authentication failed while attempting to ${options.actionLabel}. Run \`minutework login\` first.`, options.status);
69
102
  }
70
103
  if (options.status === 403) {
71
- return new Error(detail || `You are not allowed to ${options.actionLabel} with the active CLI auth profile.`);
104
+ return new DeveloperApiRequestError(detail || `You are not allowed to ${options.actionLabel} with the active CLI auth profile.`, options.status);
72
105
  }
73
106
  if (options.status === 404) {
74
- return new Error(detail || `Unable to ${options.actionLabel}: the requested MinuteWork resource was not found.`);
107
+ return new DeveloperApiRequestError(detail || `Unable to ${options.actionLabel}: the requested MinuteWork resource was not found.`, options.status);
75
108
  }
76
- return new Error(detail || `Unable to ${options.actionLabel}.`);
109
+ return new DeveloperApiRequestError(detail || `Unable to ${options.actionLabel}.`, options.status);
77
110
  }
78
111
  //# sourceMappingURL=developer-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"developer-client.js","sourceRoot":"","sources":["../src/developer-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"developer-client.js","sourceRoot":"","sources":["../src/developer-client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { type LinkDependencies, type LoginDependencies } from "./auth.js";
2
2
  import { type DeployDependencies } from "./deploy.js";
3
3
  import { resolveCliStatePaths, type PlatformName } from "./paths.js";
4
+ import { type OrchestratorDependencies } from "./orchestrator.js";
5
+ import { type BugReportDependencies } from "./reporting.js";
4
6
  import { type LocalRuntimeDependencies } from "./sandbox.js";
5
7
  import { type TokensDependencies } from "./tokens.js";
6
8
  export type CliIo = {
@@ -8,12 +10,14 @@ export type CliIo = {
8
10
  stderr: (message: string) => void;
9
11
  };
10
12
  export type RunCliOptions = {
13
+ bugReportDependencies?: BugReportDependencies;
11
14
  cwd?: string;
12
15
  deployDependencies?: DeployDependencies;
13
16
  env?: NodeJS.ProcessEnv;
14
17
  linkDependencies?: LinkDependencies;
15
18
  loginDependencies?: LoginDependencies;
16
19
  localRuntimeDependencies?: LocalRuntimeDependencies;
20
+ orchestratorDependencies?: OrchestratorDependencies;
17
21
  mcpCommandRunner?: (options: {
18
22
  args?: string[];
19
23
  cwd?: string;
package/dist/index.js CHANGED
@@ -3,8 +3,11 @@ import { runWorkspaceMcpCli } from "@minutework/workspace-mcp";
3
3
  import { runEnvUseCommand, runLinkCommand, runLoginCommand, } from "./auth.js";
4
4
  import { runCodegenCommand, runCompileCommand, runValidateCommand } from "./compile.js";
5
5
  import { runDeployCommand } from "./deploy.js";
6
+ import { promptInitStarters, shouldOfferInteractiveStarterPrompt } from "./init-prompt.js";
6
7
  import { STARTER_IDS, isStarterId, runInit } from "./init.js";
7
8
  import { resolveCliStatePaths } from "./paths.js";
9
+ import { runSessionCommand } from "./orchestrator.js";
10
+ import { createCapturedIo, maybeAutoReportCliFailure, runReportBugCommand, } from "./reporting.js";
8
11
  import { runDevCommand, runSandboxCommand, runTestCommand, } from "./sandbox.js";
9
12
  import { runTokensCommand } from "./tokens.js";
10
13
  export async function runCli(argv, options = {}, io = defaultIo) {
@@ -12,134 +15,186 @@ export async function runCli(argv, options = {}, io = defaultIo) {
12
15
  const env = options.env ?? process.env;
13
16
  const platform = options.platform ?? process.platform;
14
17
  const cliStatePaths = resolveCliStatePaths({ env, platform });
18
+ const capturedIo = createCapturedIo(io);
15
19
  const args = [...argv];
16
20
  if (args.length === 0 || args[0] === "--help" || args[0] === "-h" || args[0] === "help") {
17
- io.stdout(renderHelp());
21
+ capturedIo.io.stdout(renderHelp());
18
22
  return 0;
19
23
  }
20
24
  const [command, ...rest] = args;
25
+ let exitCode = 0;
26
+ let failureKind = null;
27
+ let thrownError;
21
28
  try {
22
29
  if (command === "init") {
23
- return await runInitCommand(rest, { cwd, env }, io);
30
+ exitCode = await runInitCommand(rest, { cwd, env }, capturedIo.io);
24
31
  }
25
- if (command === "login") {
26
- return await runLoginCommand({
32
+ else if (command === "login") {
33
+ exitCode = await runLoginCommand({
27
34
  args: rest,
28
35
  cwd,
29
36
  dependencies: options.loginDependencies,
30
37
  env,
31
- io,
38
+ io: capturedIo.io,
32
39
  paths: cliStatePaths,
33
40
  platform,
34
41
  });
35
42
  }
36
- if (command === "link") {
37
- return await runLinkCommand({
43
+ else if (command === "link") {
44
+ exitCode = await runLinkCommand({
38
45
  args: rest,
39
46
  cwd,
40
47
  dependencies: options.linkDependencies,
41
48
  env,
42
- io,
49
+ io: capturedIo.io,
43
50
  paths: cliStatePaths,
44
51
  platform,
45
52
  });
46
53
  }
47
- if (command === "mcp") {
48
- return await runMcpCommand(rest, options, io);
54
+ else if (command === "mcp") {
55
+ exitCode = await runMcpCommand(rest, options, capturedIo.io);
49
56
  }
50
- if (command === "tokens") {
51
- return await runTokensCommand({
57
+ else if (command === "session") {
58
+ exitCode = await runSessionCommand({
59
+ args: rest,
60
+ cwd,
61
+ dependencies: options.orchestratorDependencies,
62
+ env,
63
+ io: capturedIo.io,
64
+ paths: cliStatePaths,
65
+ platform,
66
+ });
67
+ }
68
+ else if (command === "report-bug") {
69
+ exitCode = await runReportBugCommand({
70
+ args: rest,
71
+ cwd,
72
+ dependencies: options.bugReportDependencies,
73
+ env,
74
+ io: capturedIo.io,
75
+ paths: cliStatePaths,
76
+ platform,
77
+ });
78
+ }
79
+ else if (command === "tokens") {
80
+ exitCode = await runTokensCommand({
52
81
  args: rest,
53
82
  cwd,
54
83
  dependencies: options.tokensDependencies,
55
84
  env,
56
- io,
85
+ io: capturedIo.io,
57
86
  paths: cliStatePaths,
58
87
  platform,
59
88
  });
60
89
  }
61
- if (command === "validate") {
62
- return await runValidateCommand({
90
+ else if (command === "validate") {
91
+ exitCode = await runValidateCommand({
63
92
  args: rest,
64
93
  cwd,
65
- io,
94
+ io: capturedIo.io,
66
95
  });
67
96
  }
68
- if (command === "compile") {
69
- return await runCompileCommand({
97
+ else if (command === "compile") {
98
+ exitCode = await runCompileCommand({
70
99
  args: rest,
71
100
  cwd,
72
- io,
101
+ io: capturedIo.io,
73
102
  });
74
103
  }
75
- if (command === "codegen") {
76
- return await runCodegenCommand({
104
+ else if (command === "codegen") {
105
+ exitCode = await runCodegenCommand({
77
106
  args: rest,
78
107
  cwd,
79
- io,
108
+ io: capturedIo.io,
80
109
  });
81
110
  }
82
- if (command === "sandbox") {
83
- return await runSandboxCommand({
111
+ else if (command === "sandbox") {
112
+ exitCode = await runSandboxCommand({
84
113
  args: rest,
85
114
  cwd,
86
115
  env,
87
- io,
116
+ io: capturedIo.io,
88
117
  platform,
89
118
  });
90
119
  }
91
- if (command === "dev") {
92
- return await runDevCommand({
120
+ else if (command === "dev") {
121
+ exitCode = await runDevCommand({
93
122
  args: rest,
94
123
  cwd,
95
124
  dependencies: options.localRuntimeDependencies,
96
125
  env,
97
- io,
126
+ io: capturedIo.io,
98
127
  platform,
99
128
  });
100
129
  }
101
- if (command === "test") {
102
- return await runTestCommand({
130
+ else if (command === "test") {
131
+ exitCode = await runTestCommand({
103
132
  args: rest,
104
133
  cwd,
105
134
  dependencies: options.localRuntimeDependencies,
106
135
  env,
107
- io,
136
+ io: capturedIo.io,
108
137
  platform,
109
138
  });
110
139
  }
111
- if (command === "deploy") {
112
- return await runDeployCommand({
140
+ else if (command === "deploy") {
141
+ exitCode = await runDeployCommand({
113
142
  args: rest,
114
143
  cwd,
115
144
  dependencies: options.deployDependencies,
116
145
  env,
117
- io,
146
+ io: capturedIo.io,
118
147
  paths: cliStatePaths,
119
148
  platform,
120
149
  });
121
150
  }
122
- if (command === "env") {
151
+ else if (command === "env") {
123
152
  if (rest[0] === "use") {
124
- return await runEnvUseCommand({
153
+ exitCode = await runEnvUseCommand({
125
154
  args: rest.slice(1),
126
155
  cwd,
127
- io,
156
+ io: capturedIo.io,
128
157
  platform,
129
158
  });
130
159
  }
131
- io.stderr('Unknown "env" subcommand. Reserved surface: minutework env use');
132
- return 1;
160
+ else {
161
+ capturedIo.io.stderr('Unknown "env" subcommand. Reserved surface: minutework env use');
162
+ exitCode = 1;
163
+ }
164
+ }
165
+ else {
166
+ capturedIo.io.stderr(`Unknown command: ${command}`);
167
+ capturedIo.io.stderr("");
168
+ capturedIo.io.stderr(renderHelp());
169
+ exitCode = 1;
133
170
  }
134
- io.stderr(`Unknown command: ${command}`);
135
- io.stderr("");
136
- io.stderr(renderHelp());
137
- return 1;
138
171
  }
139
172
  catch (error) {
140
- io.stderr(error instanceof Error ? error.message : String(error));
141
- return 1;
173
+ thrownError = error;
174
+ failureKind = "crash";
175
+ capturedIo.io.stderr(error instanceof Error ? error.message : String(error));
176
+ exitCode = 1;
177
+ }
178
+ if (exitCode !== 0) {
179
+ if (!failureKind) {
180
+ failureKind = "command_failure";
181
+ }
182
+ await maybeAutoReportCliFailure({
183
+ args: rest,
184
+ command,
185
+ cwd,
186
+ dependencies: options.bugReportDependencies,
187
+ env,
188
+ failureKind,
189
+ io: capturedIo.io,
190
+ paths: cliStatePaths,
191
+ platform,
192
+ stderrLines: capturedIo.stderr,
193
+ stdoutLines: capturedIo.stdout,
194
+ thrownError,
195
+ });
142
196
  }
197
+ return exitCode;
143
198
  }
144
199
  export { resolveCliStatePaths };
145
200
  async function runInitCommand(args, options, io) {
@@ -182,21 +237,25 @@ async function runInitCommand(args, options, io) {
182
237
  targetDirectory = arg;
183
238
  sawTarget = true;
184
239
  }
240
+ let startersForInit = selectedStarters;
241
+ if (selectedStarters.size === 0 && shouldOfferInteractiveStarterPrompt(options.env)) {
242
+ startersForInit = await promptInitStarters(io);
243
+ }
185
244
  const result = await runInit({
186
245
  cwd: options.cwd,
187
246
  targetDirectory,
188
247
  starters: {
189
- tenantApp: selectedStarters.has("tenant-app"),
190
- sidecar: selectedStarters.has("sidecar"),
248
+ tenantApp: startersForInit.has("tenant-app"),
249
+ sidecar: startersForInit.has("sidecar"),
191
250
  },
192
251
  });
193
252
  io.stdout(`Initialized MinuteWork workspace in ${path.relative(options.cwd, result.rootDirectory) || "."}.`);
194
253
  io.stdout(`Workspace slug: ${result.workspaceSlug}`);
195
254
  io.stdout(`Selected starters: ${formatStarters({
196
- tenantApp: selectedStarters.has("tenant-app"),
197
- sidecar: selectedStarters.has("sidecar"),
255
+ tenantApp: startersForInit.has("tenant-app"),
256
+ sidecar: startersForInit.has("sidecar"),
198
257
  })}`);
199
- if (selectedStarters.size === 0) {
258
+ if (startersForInit.size === 0) {
200
259
  io.stdout("No app starters were selected. This workspace contains only the base MinuteWork repo contract.");
201
260
  }
202
261
  return 0;
@@ -231,9 +290,11 @@ Usage:
231
290
  minutework test
232
291
  minutework deploy --preview
233
292
  minutework sandbox status
293
+ minutework session start [--mode <human|ai>] [--engine <claude>]
234
294
  minutework env use
235
295
  minutework tokens
236
296
  minutework mcp
297
+ minutework report-bug
237
298
 
238
299
  Wave 2 status:
239
300
  init Available
@@ -246,9 +307,11 @@ Wave 2 status:
246
307
  test Available
247
308
  deploy Preview available
248
309
  sandbox Status available
310
+ session Launcher/broker preview available
249
311
  env use Available
250
312
  tokens Available
251
313
  mcp Available
314
+ report-bug Available
252
315
 
253
316
  Starter notes:
254
317
  tenant-app Combined web starter with public root routes and a private /app workspace
@@ -271,6 +334,10 @@ Options:
271
334
  --starter Materialize a starter into the generated workspace. Repeat for multiple starters.
272
335
  --tenant-app Compatibility alias for "--starter tenant-app"
273
336
  --sidecar Compatibility alias for "--starter sidecar"
337
+
338
+ Interactive:
339
+ With no --starter flags, if stdin is a TTY and CI/MW_CLI_NONINTERACTIVE are unset, you will be prompted
340
+ to choose starters. Set MW_CLI_NONINTERACTIVE=1 (or CI=1) to skip the prompt and keep base-only scaffold.
274
341
  `;
275
342
  }
276
343
  function parseStarterId(value) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { StarterId } from "./init.js";
2
+ export type CliIo = {
3
+ stderr: (message: string) => void;
4
+ stdout: (message: string) => void;
5
+ };
6
+ /**
7
+ * Maps a single-line menu choice to starter ids. Empty string means default (tenant-app only).
8
+ */
9
+ export declare function parseInitStarterMenuInput(line: string): Set<StarterId>;
10
+ export declare function shouldOfferInteractiveStarterPrompt(env: NodeJS.ProcessEnv): boolean;
11
+ export declare function promptInitStarters(io: CliIo): Promise<Set<StarterId>>;
@@ -0,0 +1,68 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ const MENU_LINES = [
3
+ "",
4
+ "Choose starters for this workspace:",
5
+ " 1) Next.js tenant-app — public routes + private /app workspace",
6
+ " 2) FastAPI sidecar",
7
+ " 3) Both tenant-app and sidecar",
8
+ " 4) Base workspace only (schemas + MCP wiring; no app starters)",
9
+ "",
10
+ ];
11
+ /**
12
+ * Maps a single-line menu choice to starter ids. Empty string means default (tenant-app only).
13
+ */
14
+ export function parseInitStarterMenuInput(line) {
15
+ const key = line.trim() === "" ? "1" : line.trim();
16
+ if (key === "1") {
17
+ return new Set(["tenant-app"]);
18
+ }
19
+ if (key === "2") {
20
+ return new Set(["sidecar"]);
21
+ }
22
+ if (key === "3") {
23
+ return new Set(["tenant-app", "sidecar"]);
24
+ }
25
+ if (key === "4") {
26
+ return new Set();
27
+ }
28
+ throw new Error(`Invalid choice "${line.trim()}". Enter 1, 2, 3, or 4.`);
29
+ }
30
+ export function shouldOfferInteractiveStarterPrompt(env) {
31
+ if (env.MW_CLI_NONINTERACTIVE === "1" || env.MW_CLI_NONINTERACTIVE === "true") {
32
+ return false;
33
+ }
34
+ if (env.CI === "1" || env.CI === "true") {
35
+ return false;
36
+ }
37
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY);
38
+ }
39
+ const MAX_ATTEMPTS = 5;
40
+ export async function promptInitStarters(io) {
41
+ const rl = createInterface({
42
+ input: process.stdin,
43
+ output: process.stdout,
44
+ });
45
+ try {
46
+ for (const line of MENU_LINES) {
47
+ io.stdout(line);
48
+ }
49
+ for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt += 1) {
50
+ const raw = await rl.question("Enter 1–4 [default: 1]: ");
51
+ try {
52
+ return parseInitStarterMenuInput(raw);
53
+ }
54
+ catch (error) {
55
+ const message = error instanceof Error ? error.message : String(error);
56
+ io.stderr(message);
57
+ if (attempt === MAX_ATTEMPTS) {
58
+ throw error;
59
+ }
60
+ }
61
+ }
62
+ throw new Error("init starter prompt failed after maximum attempts.");
63
+ }
64
+ finally {
65
+ rl.close();
66
+ }
67
+ }
68
+ //# sourceMappingURL=init-prompt.js.map