create-urateam 0.1.45 → 0.1.47

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/dist/wizard.js ADDED
@@ -0,0 +1,346 @@
1
+ /**
2
+ * Interactive CLI wizard for the create-urateam installer. Orchestrates the
3
+ * 9-stage prompt sequence that collects user configuration, detects existing
4
+ * installations, and assembles ScaffoldOptions for the scaffolding step.
5
+ */
6
+ import { existsSync } from "fs";
7
+ import { join, basename } from "path";
8
+ import { scaffold, normalizeBasePath, decodeLicense, } from "./scaffold.js";
9
+ /**
10
+ * Run the interactive 9-stage wizard. Returns a WizardResult for the main
11
+ * flow, or null when the early-exit path was handled internally (e.g. an
12
+ * existing .env was detected and template files were refreshed).
13
+ */
14
+ export async function runWizard(arg) {
15
+ const prompts = (await import("prompts")).default;
16
+ // Detect existing .env early so we can short-circuit before walking the
17
+ // operator through 8 stages of prompts that won't be applied. The
18
+ // scaffolder already preserves .env on re-run; without this, the prompts
19
+ // are pure UX waste.
20
+ const projectDirEarly = arg === "." ? process.cwd() : join(process.cwd(), arg);
21
+ const existingEnv = join(projectDirEarly, ".urateam", ".env");
22
+ if (existsSync(existingEnv)) {
23
+ console.log(`\n Existing .env detected at ${existingEnv}.\n` +
24
+ " Re-running create-urateam will refresh template files (Dockerfile, docker-compose.yml,\n" +
25
+ " Caddyfile, etc.) but will NOT touch your .env. To re-prompt for secrets, delete .env\n" +
26
+ " first and re-run. Continuing with template-refresh only…\n");
27
+ // Use minimal stub options — scaffold() needs them but won't write .env.
28
+ scaffold({
29
+ projectDir: projectDirEarly,
30
+ projectName: arg === "." ? basename(projectDirEarly) || "my-project" : arg,
31
+ linearApiKey: "",
32
+ linearTeamId: "",
33
+ repoUrl: "",
34
+ defaultBranch: "main",
35
+ });
36
+ console.log(` ✓ Template files refreshed in ${projectDirEarly}/.urateam\n`);
37
+ return null;
38
+ }
39
+ // --- Stage 1: Linear / repo basics ---
40
+ const stage1 = await prompts([
41
+ { type: "text", name: "linearApiKey", message: "Linear API key:" },
42
+ { type: "text", name: "linearTeamId", message: "Linear team ID:" },
43
+ { type: "text", name: "repoUrl", message: "Repo URL (GitHub/GitLab):" },
44
+ { type: "text", name: "defaultBranch", message: "Default branch:", initial: "main" },
45
+ ]);
46
+ if (!stage1.linearApiKey || !stage1.repoUrl) {
47
+ console.error("Cancelled.");
48
+ process.exit(1);
49
+ }
50
+ // --- Stage 2: deploy mode + Linear webhook secret (hidden input) ---
51
+ const stage2 = await prompts([
52
+ {
53
+ type: "select",
54
+ name: "deployMode",
55
+ message: "Deploy target:",
56
+ choices: [
57
+ { title: "local (laptop / dev — pnpm dev)", value: "local" },
58
+ { title: "production (VPS / docker compose)", value: "production" },
59
+ ],
60
+ },
61
+ {
62
+ // password type masks input so the secret doesn't land in scrollback / shell history
63
+ type: "password",
64
+ name: "linearWebhookSecret",
65
+ message: "LINEAR_WEBHOOK_SECRET (paste from Linear webhook config; leave blank to fill in later):",
66
+ },
67
+ ]);
68
+ // --- Stage 3: production-only details (domain / caddy email / dashboard base path) ---
69
+ const stage3 = stage2.deployMode === "production"
70
+ ? await prompts([
71
+ { type: "text", name: "domain", message: "Public domain (e.g. urateam.example.com):" },
72
+ { type: "text", name: "caddyEmail", message: "Email for Let's Encrypt:" },
73
+ {
74
+ type: "text",
75
+ name: "dashboardBasePath",
76
+ message: "DASHBOARD_BASE_PATH (leading slash, no trailing — leave blank if dashboard is at root):",
77
+ },
78
+ ])
79
+ : { domain: undefined, caddyEmail: undefined, dashboardBasePath: undefined };
80
+ // --- Stage 4: Anthropic auth choice ---
81
+ const stage4 = await prompts([
82
+ {
83
+ type: "select",
84
+ name: "anthropicAuth",
85
+ message: "Anthropic auth method:",
86
+ choices: [
87
+ { title: "Claude Code CLI (`claude login` after deploy)", value: "cli" },
88
+ { title: "API key (set ANTHROPIC_API_KEY now)", value: "apiKey" },
89
+ ],
90
+ },
91
+ {
92
+ type: (prev) => (prev === "apiKey" ? "password" : null),
93
+ name: "anthropicApiKey",
94
+ message: "ANTHROPIC_API_KEY:",
95
+ },
96
+ ]);
97
+ // --- Stage 5: license + tier-gated PM agent setup ---
98
+ const stage5 = await prompts([
99
+ {
100
+ // password type masks the JWT so it doesn't echo to scrollback / shell history.
101
+ // Decoded license summary printed below intentionally only shows tier + features,
102
+ // not the full JWT, so paste-into-terminal stays opaque.
103
+ type: "password",
104
+ name: "licenseKey",
105
+ message: "URATEAM_LICENSE_KEY (leave blank for OSS):",
106
+ },
107
+ ]);
108
+ const license = decodeLicense(stage5.licenseKey);
109
+ if (license) {
110
+ console.log(`\n License decoded: tier=${license.tier}, features=[${license.features.join(", ")}]`);
111
+ if (license.expiresAt && license.expiresAt.getTime() < Date.now()) {
112
+ console.warn(` ⚠ License expired at ${license.expiresAt.toISOString()} — runtime will reject ` +
113
+ "it and fall back to OSS tier. Renew before deploying.");
114
+ }
115
+ console.log("");
116
+ }
117
+ let pmAgent;
118
+ if (license &&
119
+ license.tier !== "oss" &&
120
+ license.features.includes("slack-interface")) {
121
+ console.log("\n Your license includes the `slack-interface` feature (PM agent + Slack /pm slash commands).\n" +
122
+ " You can configure it now if you have your Slack app credentials handy, or skip and add\n" +
123
+ " the PM_AGENT_* + SLACK_* lines to .env later. Setup walkthrough:\n" +
124
+ " https://github.com/JonB32/urateam/blob/main/docs/slack-setup.md\n");
125
+ const setupNow = await prompts({
126
+ type: "confirm",
127
+ name: "setup",
128
+ message: "Set up PM agent + Slack interface now?",
129
+ initial: false,
130
+ });
131
+ if (setupNow.setup) {
132
+ const pmPrompts = await prompts([
133
+ { type: "password", name: "slackBotToken", message: "SLACK_BOT_TOKEN (xoxb-...):" },
134
+ { type: "password", name: "slackSigningSecret", message: "SLACK_SIGNING_SECRET:" },
135
+ { type: "text", name: "slackChannelId", message: "PM_AGENT_SLACK_CHANNEL_ID (Cxxxxx):" },
136
+ {
137
+ type: "text",
138
+ name: "teamIds",
139
+ message: "PM_AGENT_TEAM_IDS (comma-separated):",
140
+ initial: stage1.linearTeamId,
141
+ },
142
+ {
143
+ type: "number",
144
+ name: "dailyTokenBudget",
145
+ message: "PM_AGENT_DAILY_TOKEN_BUDGET:",
146
+ initial: 5_000_000,
147
+ },
148
+ ]);
149
+ if (pmPrompts.slackBotToken && pmPrompts.slackSigningSecret && pmPrompts.slackChannelId) {
150
+ pmAgent = {
151
+ slackBotToken: pmPrompts.slackBotToken,
152
+ slackSigningSecret: pmPrompts.slackSigningSecret,
153
+ slackChannelId: pmPrompts.slackChannelId,
154
+ teamIds: pmPrompts.teamIds || stage1.linearTeamId,
155
+ dailyTokenBudget: pmPrompts.dailyTokenBudget ?? 5_000_000,
156
+ };
157
+ }
158
+ else if (pmPrompts.slackBotToken || pmPrompts.slackSigningSecret || pmPrompts.slackChannelId) {
159
+ // Partial input — warn loudly so the operator doesn't think they configured PM.
160
+ console.warn("\n ⚠ PM agent setup incomplete — at least one of SLACK_BOT_TOKEN, " +
161
+ "SLACK_SIGNING_SECRET, PM_AGENT_SLACK_CHANNEL_ID was blank. The PM_AGENT_* " +
162
+ "block in .env has been left commented out; fill it in by hand to enable.\n");
163
+ }
164
+ }
165
+ }
166
+ // --- Stage 6: optional GitHub webhook secret + notification webhooks ---
167
+ const stage6 = await prompts([
168
+ {
169
+ // Hidden input — secret is shared with GitHub's webhook config. If the
170
+ // operator already has a secret in GitHub, paste it here. Otherwise leave
171
+ // blank and the auto-gen step at Stage 8 will mint one for both sides.
172
+ type: "password",
173
+ name: "githubWebhookSecret",
174
+ message: "GITHUB_WEBHOOK_SECRET (paste from GitHub if you already set one, or leave blank to auto-generate):",
175
+ },
176
+ {
177
+ type: "text",
178
+ name: "slackWebhookUrl",
179
+ message: "SLACK_WEBHOOK_URL (incoming-webhook for pipeline events; leave blank to skip):",
180
+ },
181
+ {
182
+ type: "text",
183
+ name: "discordWebhookUrl",
184
+ message: "DISCORD_WEBHOOK_URL (leave blank to skip):",
185
+ },
186
+ ]);
187
+ // --- Stage 7: per-stage agent profile overrides (wizard) ---
188
+ const stage7Customize = await prompts({
189
+ type: "confirm",
190
+ name: "customize",
191
+ message: "Customize per-stage agent budgets (URATEAM_AGENT_PROFILES)? Most operators skip this.",
192
+ initial: false,
193
+ });
194
+ let agentProfiles;
195
+ if (stage7Customize.customize) {
196
+ agentProfiles = {};
197
+ const stages = ["implement", "test", "review"];
198
+ for (const stage of stages) {
199
+ const wantStage = await prompts({
200
+ type: "confirm",
201
+ name: "yes",
202
+ message: `Override budget for the \`${stage}\` stage?`,
203
+ initial: false,
204
+ });
205
+ if (!wantStage.yes)
206
+ continue;
207
+ // Min/max mirror the runtime ceilings in packages/core/src/executor/profiles.ts:96
208
+ // (MAX_TURNS_CEILING=500, MAX_INPUT_TOKENS_CEILING=500_000) so the wizard
209
+ // rejects out-of-range values at input time instead of letting the runtime
210
+ // silently drop them with a warn.
211
+ const profile = await prompts([
212
+ {
213
+ type: "number",
214
+ name: "maxTurns",
215
+ message: ` ${stage}.maxTurns (1–500, blank to keep default):`,
216
+ min: 1,
217
+ max: 500,
218
+ },
219
+ {
220
+ type: "number",
221
+ name: "maxInputTokens",
222
+ message: ` ${stage}.maxInputTokens (1–500000, blank to keep default):`,
223
+ min: 1,
224
+ max: 500_000,
225
+ },
226
+ { type: "text", name: "model", message: ` ${stage}.model (blank to keep default):` },
227
+ ]);
228
+ const entry = {};
229
+ if (typeof profile.maxTurns === "number")
230
+ entry.maxTurns = profile.maxTurns;
231
+ if (typeof profile.maxInputTokens === "number")
232
+ entry.maxInputTokens = profile.maxInputTokens;
233
+ if (profile.model)
234
+ entry.model = profile.model;
235
+ if (Object.keys(entry).length > 0)
236
+ agentProfiles[stage] = entry;
237
+ }
238
+ if (Object.keys(agentProfiles).length === 0) {
239
+ agentProfiles = undefined; // all stages skipped — don't write a `{}` JSON
240
+ }
241
+ else {
242
+ // Validate that the profiles object is JSON-serializable so a typo doesn't
243
+ // get persisted as broken syntax that the agent would crash on at runtime.
244
+ try {
245
+ JSON.stringify(agentProfiles);
246
+ }
247
+ catch (e) {
248
+ console.error("Internal: agent profiles failed JSON serialization — skipping.", e);
249
+ agentProfiles = undefined;
250
+ }
251
+ }
252
+ }
253
+ // --- Stage 8: secret generation strategy ---
254
+ // GITHUB_WEBHOOK_SECRET is in this set with one twist: if the operator
255
+ // explicitly pasted a value in Stage 6, it wins; otherwise it's auto-genned
256
+ // here. Either way the operator gets a value they can paste into GitHub's
257
+ // webhook config so HMAC signatures match.
258
+ const stage8 = await prompts({
259
+ type: "confirm",
260
+ name: "autoGen",
261
+ message: "Auto-generate POSTGRES_PASSWORD, DASHBOARD_PASSWORD, GITHUB_WEBHOOK_SECRET? (No → leave blank in .env for any not provided above)",
262
+ initial: true,
263
+ });
264
+ // --- Stage 9: GitHub PR-comment re-trigger config (gated) ---
265
+ // Only prompt when both signals are present:
266
+ // - URATEAM_LICENSE_KEY pasted (operator is engaged with the product enough
267
+ // to want advanced workflows)
268
+ // - A GITHUB_WEBHOOK_SECRET will exist in .env (either pasted in Stage 6
269
+ // or auto-genned in Stage 8) — without it the runtime won't even mount
270
+ // the feedback handler.
271
+ let githubFeedback;
272
+ const willHaveGhSecret = !!stage6.githubWebhookSecret || stage8.autoGen;
273
+ if (stage5.licenseKey && willHaveGhSecret) {
274
+ const setupFeedback = await prompts({
275
+ type: "confirm",
276
+ name: "setup",
277
+ message: "Configure GitHub PR-comment re-triggers (GITHUB_FEEDBACK_*) now? You can skip and add later.",
278
+ initial: false,
279
+ });
280
+ if (setupFeedback.setup) {
281
+ const fb = await prompts([
282
+ {
283
+ type: "text",
284
+ name: "triggerKeyword",
285
+ message: " GITHUB_FEEDBACK_TRIGGER_KEYWORD (require this string in PR comment to fire; blank = any review/comment):",
286
+ },
287
+ {
288
+ type: "text",
289
+ name: "allowedReviewers",
290
+ message: " GITHUB_FEEDBACK_ALLOWED_REVIEWERS (csv of GitHub usernames whose comments fire it; blank = all):",
291
+ },
292
+ {
293
+ type: "text",
294
+ name: "botLogins",
295
+ message: " GITHUB_FEEDBACK_BOT_LOGINS (csv of bot logins like github-actions[bot]; blank = none):",
296
+ },
297
+ {
298
+ type: "confirm",
299
+ name: "autoTrigger",
300
+ message: " GITHUB_FEEDBACK_AUTO_TRIGGER — fire automatically on qualifying comments?",
301
+ initial: true,
302
+ },
303
+ ]);
304
+ githubFeedback = {
305
+ triggerKeyword: fb.triggerKeyword || undefined,
306
+ allowedReviewers: fb.allowedReviewers || undefined,
307
+ botLogins: fb.botLogins || undefined,
308
+ autoTrigger: fb.autoTrigger,
309
+ };
310
+ }
311
+ }
312
+ const projectDir = arg === "." ? process.cwd() : join(process.cwd(), arg);
313
+ const projectName = arg === "." ? basename(projectDir) || "my-project" : arg;
314
+ const scaffoldOptions = {
315
+ projectDir,
316
+ projectName,
317
+ linearApiKey: stage1.linearApiKey,
318
+ linearTeamId: stage1.linearTeamId,
319
+ repoUrl: stage1.repoUrl,
320
+ defaultBranch: stage1.defaultBranch || "main",
321
+ deployMode: stage2.deployMode,
322
+ linearWebhookSecret: stage2.linearWebhookSecret,
323
+ domain: stage3.domain,
324
+ caddyEmail: stage3.caddyEmail,
325
+ dashboardBasePath: normalizeBasePath(stage3.dashboardBasePath),
326
+ anthropicApiKey: stage4.anthropicApiKey,
327
+ licenseKey: stage5.licenseKey,
328
+ pmAgent,
329
+ githubWebhookSecret: stage6.githubWebhookSecret || undefined,
330
+ githubFeedback,
331
+ slackWebhookUrl: stage6.slackWebhookUrl || undefined,
332
+ discordWebhookUrl: stage6.discordWebhookUrl || undefined,
333
+ agentProfiles,
334
+ autoGenSecrets: stage8.autoGen,
335
+ };
336
+ return {
337
+ projectDir,
338
+ projectName,
339
+ scaffoldOptions,
340
+ deployMode: stage2.deployMode,
341
+ domain: stage3.domain,
342
+ dashboardBasePath: normalizeBasePath(stage3.dashboardBasePath),
343
+ anthropicAuth: stage4.anthropicAuth,
344
+ };
345
+ }
346
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-urateam",
3
- "version": "0.1.45",
3
+ "version": "0.1.47",
4
4
  "license": "BUSL-1.1",
5
5
  "type": "module",
6
6
  "bin": {