create-urateam 0.1.8 → 0.1.12

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/index.js CHANGED
@@ -5,6 +5,159 @@ import { fileURLToPath } from "url";
5
5
  import { randomBytes } from "crypto";
6
6
  const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = dirname(__filename);
8
+ /**
9
+ * Decode a urateam license JWT payload WITHOUT verifying the signature.
10
+ *
11
+ * The scaffolder doesn't ship the public key (would bloat the package and
12
+ * couple it to a specific signing-key generation), and a malformed JWT here
13
+ * just produces a wrong prompt flow which is recoverable by editing .env
14
+ * after the fact. Production verification happens at runtime in the agent
15
+ * via packages/core/src/license.ts against the embedded public key.
16
+ *
17
+ * Returns null on any parse failure.
18
+ */
19
+ export function decodeLicense(jwt) {
20
+ if (!jwt)
21
+ return null;
22
+ const segments = jwt.split(".");
23
+ if (segments.length !== 3)
24
+ return null;
25
+ try {
26
+ const payloadJson = Buffer.from(segments[1].replace(/-/g, "+").replace(/_/g, "/") +
27
+ "=".repeat((4 - (segments[1].length % 4)) % 4), "base64").toString("utf-8");
28
+ const payload = JSON.parse(payloadJson);
29
+ const tier = payload.tier === "pro" || payload.tier === "enterprise" ? payload.tier : "oss";
30
+ return {
31
+ tier,
32
+ features: payload.features ?? [],
33
+ customerId: payload.sub,
34
+ expiresAt: payload.exp ? new Date(payload.exp * 1000) : undefined,
35
+ };
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Build the `.env` content for a scaffolded urateam sidecar.
43
+ *
44
+ * Pure function: takes already-resolved values, returns the file string.
45
+ * Auto-generation of missing secrets is the caller's responsibility (see
46
+ * resolveSecrets below) so this stays trivially testable.
47
+ */
48
+ function buildEnv(options) {
49
+ const lines = [];
50
+ const push = (line) => lines.push(line);
51
+ const blank = () => lines.push("");
52
+ push("# === Linear (REQUIRED) ===");
53
+ push(`LINEAR_API_KEY=${options.linearApiKey}`);
54
+ // Comment out when blank so the runtime's "is required" check fails fast
55
+ // with the right message instead of silently treating "" as a valid secret.
56
+ if (options.linearWebhookSecret) {
57
+ push(`LINEAR_WEBHOOK_SECRET=${options.linearWebhookSecret}`);
58
+ }
59
+ else {
60
+ push("# LINEAR_WEBHOOK_SECRET= # paste from Linear's webhook config UI");
61
+ }
62
+ push(`LINEAR_TEAM_ID=${options.linearTeamId}`);
63
+ blank();
64
+ push("# === Repository (REQUIRED) ===");
65
+ push(`REPO_URL=${options.repoUrl}`);
66
+ push(`REPO_DEFAULT_BRANCH=${options.defaultBranch}`);
67
+ push(`REPO_TEAM_ID=${options.linearTeamId}`);
68
+ blank();
69
+ push("# === Anthropic auth ===");
70
+ if (options.anthropicApiKey) {
71
+ push(`ANTHROPIC_API_KEY=${options.anthropicApiKey}`);
72
+ }
73
+ else {
74
+ push("# ANTHROPIC_API_KEY= # blank → run `docker compose exec agent claude login` after deploy");
75
+ }
76
+ blank();
77
+ push("# === Pro license (blank = OSS tier) ===");
78
+ push(`URATEAM_LICENSE_KEY=${options.licenseKey}`);
79
+ blank();
80
+ push("# === GitHub auth (REQUIRED for PR creation) ===");
81
+ push("# Either run `docker compose exec agent gh auth login` after deploy,");
82
+ push("# or set the GitHub App trio below:");
83
+ push("# GITHUB_APP_ID=");
84
+ push("# GITHUB_PRIVATE_KEY_PATH=/run/gh-app.pem");
85
+ push("# GITHUB_INSTALLATION_ID=");
86
+ push(`GITHUB_WEBHOOK_SECRET=${options.githubWebhookSecret}`);
87
+ blank();
88
+ push("# === Database ===");
89
+ push(`POSTGRES_PASSWORD=${options.postgresPassword}`);
90
+ blank();
91
+ if (options.deployMode === "production") {
92
+ push("# === Domain (production deploy) ===");
93
+ push(`DOMAIN=${options.domain}`);
94
+ push(`CADDY_EMAIL=${options.caddyEmail}`);
95
+ blank();
96
+ }
97
+ push("# === Dashboard auth ===");
98
+ push(`DASHBOARD_USER=${options.dashboardUser}`);
99
+ push(`DASHBOARD_PASSWORD=${options.dashboardPassword}`);
100
+ push("# DASHBOARD_BASE_PATH= # set with leading slash, no trailing, when behind a path prefix");
101
+ blank();
102
+ push("# === Concurrency ===");
103
+ push(`MAX_CONCURRENT_RUNS=${options.maxConcurrentRuns}`);
104
+ blank();
105
+ if (options.pmAgent) {
106
+ push("# === PM Agent (Pro: slack-interface) ===");
107
+ push("PM_AGENT_ENABLED=true");
108
+ push(`PM_AGENT_TEAM_IDS=${options.pmAgent.teamIds}`);
109
+ push(`PM_AGENT_SLACK_CHANNEL_ID=${options.pmAgent.slackChannelId}`);
110
+ push(`PM_AGENT_DAILY_TOKEN_BUDGET=${options.pmAgent.dailyTokenBudget ?? 5_000_000}`);
111
+ push(`PM_AGENT_MAX_IN_FLIGHT=3`);
112
+ push(`SLACK_BOT_TOKEN=${options.pmAgent.slackBotToken}`);
113
+ push(`SLACK_SIGNING_SECRET=${options.pmAgent.slackSigningSecret}`);
114
+ blank();
115
+ }
116
+ else {
117
+ push("# === PM Agent (Pro: slack-interface) — fill in to enable ===");
118
+ push("# PM_AGENT_ENABLED=true");
119
+ push("# PM_AGENT_TEAM_IDS=");
120
+ push("# PM_AGENT_SLACK_CHANNEL_ID=");
121
+ push("# PM_AGENT_DAILY_TOKEN_BUDGET=5000000");
122
+ push("# PM_AGENT_MAX_IN_FLIGHT=3");
123
+ push("# SLACK_BOT_TOKEN=");
124
+ push("# SLACK_SIGNING_SECRET=");
125
+ blank();
126
+ }
127
+ push("# === Optional ===");
128
+ push("# SLACK_WEBHOOK_URL= # incoming webhook for pipeline notifications (no Pro license needed)");
129
+ push("# DISCORD_WEBHOOK_URL=");
130
+ push("# LOG_LEVEL=info");
131
+ push("");
132
+ push("# Additional tunables (worktree TTL, agent profiles, repo clone dir, etc.)");
133
+ push("# documented in .env.example next to this file. Keep that file as the");
134
+ push("# canonical reference; this .env is generated from prompts.");
135
+ return lines.join("\n") + "\n";
136
+ }
137
+ function resolveSecrets(options) {
138
+ const autoGen = options.autoGenSecrets ?? true;
139
+ const generated = {};
140
+ let dashboardPassword = options.dashboardPassword ?? "";
141
+ let postgresPassword = options.postgresPassword ?? "";
142
+ let githubWebhookSecret = options.githubWebhookSecret ?? "";
143
+ if (autoGen) {
144
+ // base64url avoids `+`, `/`, `=` which can trip strict env-file parsers
145
+ // and a few HMAC validators in the wild.
146
+ if (!dashboardPassword) {
147
+ dashboardPassword = randomBytes(18).toString("base64url");
148
+ generated.dashboardPassword = dashboardPassword;
149
+ }
150
+ if (!postgresPassword) {
151
+ postgresPassword = randomBytes(24).toString("base64url");
152
+ generated.postgresPassword = postgresPassword;
153
+ }
154
+ if (!githubWebhookSecret) {
155
+ githubWebhookSecret = randomBytes(32).toString("hex");
156
+ generated.githubWebhookSecret = githubWebhookSecret;
157
+ }
158
+ }
159
+ return { dashboardPassword, postgresPassword, githubWebhookSecret, generated };
160
+ }
8
161
  /**
9
162
  * Scaffold a urateam sidecar into a project directory.
10
163
  *
@@ -15,41 +168,32 @@ const __dirname = dirname(__filename);
15
168
  * - .env.example
16
169
  * - Dockerfile
17
170
  * - docker-compose.yml
171
+ * - Caddyfile — reverse proxy + auto-HTTPS
18
172
  * - README.md — how to run the sidecar
19
173
  * - <projectDir>/CLAUDE.md — project conventions (only if absent)
20
174
  * - <projectDir>/README.md — project readme (only if absent)
21
175
  * - <projectDir>/.gitignore — ensures .urateam/.env is ignored
22
176
  *
23
- * The project root `package.json` is NOT touched urateam is a sidecar tool,
24
- * not a project dependency. Existing `CLAUDE.md` at the project root is
25
- * preserved (not overwritten).
177
+ * The project root `package.json` is NOT touched. Existing `.env` and
178
+ * `package.json` inside `.urateam/` are preserved on re-run.
26
179
  */
27
180
  export function scaffold(options) {
28
181
  const { projectDir, projectName, linearApiKey, linearTeamId, repoUrl, defaultBranch } = options;
29
182
  mkdirSync(projectDir, { recursive: true });
30
- // Locate template directory (supports running from dist/ or src/ during tests)
31
183
  let templateDir = join(__dirname, "..", "template");
32
184
  if (!statSync(templateDir, { throwIfNoEntry: false })?.isDirectory()) {
33
185
  templateDir = join(__dirname, "..", "..", "template");
34
186
  }
35
- // --- Sidecar files: refresh template files but preserve .env and package.json ---
36
- // Template files (Dockerfile, docker-compose.yml, .env.example, README.md)
37
- // are always overwritten with the latest version from the package.
38
- // User-editable files (.env, package.json) are preserved if they exist
39
- // so re-running create-urateam is safe and non-destructive to credentials.
40
187
  const urateamDir = join(projectDir, ".urateam");
41
188
  mkdirSync(urateamDir, { recursive: true });
42
- // Copy template files from template/.urateam/, skipping .env (generated below)
43
189
  const urateamTemplateDir = join(templateDir, ".urateam");
44
190
  for (const entry of readdirSync(urateamTemplateDir)) {
45
- // .env is never in the template — it's generated below — but guard anyway
46
191
  if (entry === ".env")
47
192
  continue;
48
193
  const src = join(urateamTemplateDir, entry);
49
194
  const dest = join(urateamDir, entry);
50
195
  cpSync(src, dest, { recursive: true, force: true });
51
196
  }
52
- // Write .urateam/package.json only if absent (user may have customized deps)
53
197
  const pkgPath = join(urateamDir, "package.json");
54
198
  if (!existsSync(pkgPath)) {
55
199
  const pkg = {
@@ -66,27 +210,69 @@ export function scaffold(options) {
66
210
  };
67
211
  writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
68
212
  }
69
- // Write .urateam/.env only if absent — preserves real credentials on re-run.
70
- // On first run, generates a random DASHBOARD_PASSWORD and fills in values
71
- // from user prompts. On re-run, the existing .env is kept intact so users
72
- // can iterate without losing credentials. To force a re-prompt, delete .env.
213
+ const license = decodeLicense(options.licenseKey);
214
+ const todos = [];
215
+ const { dashboardPassword, postgresPassword, githubWebhookSecret, generated } = resolveSecrets(options);
216
+ // --- Compose .env from inputs + resolved secrets ---
73
217
  const envPath = join(urateamDir, ".env");
74
218
  if (!existsSync(envPath)) {
75
- const envContent = [
76
- `LINEAR_API_KEY=${linearApiKey}`,
77
- `LINEAR_WEBHOOK_SECRET=`,
78
- `LINEAR_TEAM_ID=${linearTeamId}`,
79
- `REPO_URL=${repoUrl}`,
80
- `REPO_DEFAULT_BRANCH=${defaultBranch}`,
81
- `REPO_TEAM_ID=${linearTeamId}`,
82
- `DATABASE_URL=postgres://urateam:password@postgres:5432/urateam`,
83
- `DASHBOARD_USER=admin`,
84
- `DASHBOARD_PASSWORD=${randomBytes(16).toString("hex")}`,
85
- ].join("\n") + "\n";
219
+ const linearWebhookSecret = options.linearWebhookSecret ?? "";
220
+ if (!linearWebhookSecret) {
221
+ todos.push("LINEAR_WEBHOOK_SECRET — paste from Linear's webhook config UI " +
222
+ "(Workspace settings → API → Webhooks).");
223
+ }
224
+ if (!options.licenseKey) {
225
+ todos.push("URATEAM_LICENSE_KEY — Pro features (PM agent, Slack interface, multi-repo, " +
226
+ "deep-review, etc.) stay disabled until you set this.");
227
+ }
228
+ if (license?.tier &&
229
+ license.tier !== "oss" &&
230
+ license.features.includes("slack-interface") &&
231
+ !options.pmAgent) {
232
+ todos.push("PM_AGENT_* — your license includes `slack-interface`. Fill in the " +
233
+ "PM_AGENT_* + SLACK_* lines in .env to enable it.");
234
+ }
235
+ if (!options.anthropicApiKey) {
236
+ todos.push("Anthropic auth — run `docker compose exec agent claude login` after the stack is up " +
237
+ "(or set ANTHROPIC_API_KEY in .env for headless API auth).");
238
+ }
239
+ todos.push("GitHub auth — run `docker compose exec agent gh auth login` after the stack is up " +
240
+ "(or set the GITHUB_APP_* trio in .env for app-based auth).");
241
+ if (options.deployMode === "production" && !options.domain) {
242
+ todos.push("DOMAIN — set in .env before running `docker compose up`.");
243
+ }
244
+ if (options.deployMode === "production" && !options.caddyEmail) {
245
+ todos.push("CADDY_EMAIL — recommended for Let's Encrypt expiry warnings.");
246
+ }
247
+ if (!options.autoGenSecrets) {
248
+ if (!options.dashboardPassword)
249
+ todos.push("DASHBOARD_PASSWORD — fill in .env.");
250
+ if (!options.postgresPassword)
251
+ todos.push("POSTGRES_PASSWORD — fill in .env.");
252
+ if (!options.githubWebhookSecret)
253
+ todos.push("GITHUB_WEBHOOK_SECRET — fill in .env.");
254
+ }
255
+ const envContent = buildEnv({
256
+ linearApiKey,
257
+ linearTeamId,
258
+ repoUrl,
259
+ defaultBranch,
260
+ deployMode: options.deployMode ?? "local",
261
+ linearWebhookSecret,
262
+ domain: options.domain ?? "",
263
+ caddyEmail: options.caddyEmail ?? "",
264
+ anthropicApiKey: options.anthropicApiKey ?? "",
265
+ licenseKey: options.licenseKey ?? "",
266
+ dashboardUser: options.dashboardUser ?? "admin",
267
+ dashboardPassword,
268
+ postgresPassword,
269
+ githubWebhookSecret,
270
+ maxConcurrentRuns: options.maxConcurrentRuns ?? 3,
271
+ pmAgent: options.pmAgent,
272
+ });
86
273
  writeFileSync(envPath, envContent);
87
274
  }
88
- // --- Project root files: copy only if absent (don't clobber user files) ---
89
- // Files with {{PROJECT_NAME}} placeholder get the substitution applied.
275
+ // --- Project root files: copy only if absent ---
90
276
  const rootFilesWithPlaceholder = ["CLAUDE.md", "README.md"];
91
277
  for (const file of rootFilesWithPlaceholder) {
92
278
  const dest = join(projectDir, file);
@@ -98,18 +284,12 @@ export function scaffold(options) {
98
284
  const content = readFileSync(src, "utf-8");
99
285
  writeFileSync(dest, content.replace(/\{\{PROJECT_NAME\}\}/g, projectName));
100
286
  }
101
- // Ensure .gitignore at project root has the urateam entries.
102
- // Content is inlined here (not loaded from template/) because npm publish
103
- // excludes files named `.gitignore` from published packages automatically,
104
- // which would cause an ENOENT at runtime in installed create-urateam.
105
287
  const gitignorePath = join(projectDir, ".gitignore");
106
288
  if (!existsSync(gitignorePath)) {
107
289
  writeFileSync(gitignorePath, URATEAM_GITIGNORE);
108
290
  }
109
291
  else {
110
292
  const existing = readFileSync(gitignorePath, "utf-8");
111
- // Check for the bare `.urateam/.env` entry as a standalone line.
112
- // Loose substring match would false-positive on `!.urateam/.env.example`.
113
293
  const hasBareEntry = existing
114
294
  .split(/\r?\n/)
115
295
  .some((line) => line.trim() === ".urateam/.env");
@@ -118,16 +298,8 @@ export function scaffold(options) {
118
298
  appendFileSync(gitignorePath, separator + URATEAM_GITIGNORE);
119
299
  }
120
300
  }
301
+ return { urateamDir, license, generatedSecrets: generated, todos };
121
302
  }
122
- /**
123
- * Inlined .gitignore content for the urateam sidecar.
124
- *
125
- * IMPORTANT: This is intentionally NOT loaded from `template/.gitignore`.
126
- * When this package is published to npm, files named `.gitignore` are
127
- * automatically excluded from the tarball by npm's default rules, so the
128
- * file wouldn't exist at runtime in an installed copy. Inlining avoids
129
- * the packaging pitfall entirely.
130
- */
131
303
  const URATEAM_GITIGNORE = `# urateam sidecar
132
304
  .urateam/.env
133
305
  .urateam/.env.*
@@ -138,42 +310,202 @@ const URATEAM_GITIGNORE = `# urateam sidecar
138
310
  `;
139
311
  // CLI entrypoint — only runs when executed directly (not when imported for testing)
140
312
  async function main() {
141
- const arg = process.argv[2];
142
- if (!arg) {
143
- console.error("Usage: create-urateam <project-name-or-dot>");
144
- console.error(" create-urateam my-project # creates new directory");
145
- console.error(" create-urateam . # adds .urateam/ to current directory");
146
- process.exit(1);
313
+ const arg = process.argv[2] ?? ".";
314
+ if (arg === "--help" || arg === "-h") {
315
+ console.log("Usage: create-urateam [project-name]");
316
+ console.log(" create-urateam # adds .urateam/ to current directory (default)");
317
+ console.log(" create-urateam . # same as above");
318
+ console.log(" create-urateam my-project # creates new directory and adds .urateam/ inside");
319
+ process.exit(0);
147
320
  }
148
321
  const prompts = (await import("prompts")).default;
149
- const response = await prompts([
322
+ // --- Stage 1: Linear / repo basics ---
323
+ const stage1 = await prompts([
150
324
  { type: "text", name: "linearApiKey", message: "Linear API key:" },
151
325
  { type: "text", name: "linearTeamId", message: "Linear team ID:" },
152
326
  { type: "text", name: "repoUrl", message: "Repo URL (GitHub/GitLab):" },
153
327
  { type: "text", name: "defaultBranch", message: "Default branch:", initial: "main" },
154
328
  ]);
155
- if (!response.linearApiKey || !response.repoUrl) {
329
+ if (!stage1.linearApiKey || !stage1.repoUrl) {
156
330
  console.error("Cancelled.");
157
331
  process.exit(1);
158
332
  }
333
+ // --- Stage 2: deploy mode + Linear webhook secret ---
334
+ const stage2 = await prompts([
335
+ {
336
+ type: "select",
337
+ name: "deployMode",
338
+ message: "Deploy target:",
339
+ choices: [
340
+ { title: "local (laptop / dev — pnpm dev)", value: "local" },
341
+ { title: "production (VPS / docker compose)", value: "production" },
342
+ ],
343
+ },
344
+ {
345
+ type: "text",
346
+ name: "linearWebhookSecret",
347
+ message: "LINEAR_WEBHOOK_SECRET (paste from Linear webhook config; leave blank to fill in later):",
348
+ },
349
+ ]);
350
+ // --- Stage 3: production-only details (domain / caddy email) ---
351
+ const stage3 = stage2.deployMode === "production"
352
+ ? await prompts([
353
+ { type: "text", name: "domain", message: "Public domain (e.g. urateam.example.com):" },
354
+ { type: "text", name: "caddyEmail", message: "Email for Let's Encrypt:" },
355
+ ])
356
+ : { domain: undefined, caddyEmail: undefined };
357
+ // --- Stage 4: Anthropic auth choice ---
358
+ const stage4 = await prompts([
359
+ {
360
+ type: "select",
361
+ name: "anthropicAuth",
362
+ message: "Anthropic auth method:",
363
+ choices: [
364
+ { title: "Claude Code CLI (`claude login` after deploy)", value: "cli" },
365
+ { title: "API key (set ANTHROPIC_API_KEY now)", value: "apiKey" },
366
+ ],
367
+ },
368
+ {
369
+ type: (prev) => (prev === "apiKey" ? "password" : null),
370
+ name: "anthropicApiKey",
371
+ message: "ANTHROPIC_API_KEY:",
372
+ },
373
+ ]);
374
+ // --- Stage 5: license + tier-gated PM agent setup ---
375
+ const stage5 = await prompts([
376
+ {
377
+ type: "text",
378
+ name: "licenseKey",
379
+ message: "URATEAM_LICENSE_KEY (leave blank for OSS):",
380
+ },
381
+ ]);
382
+ const license = decodeLicense(stage5.licenseKey);
383
+ if (license) {
384
+ console.log(`\n License decoded: tier=${license.tier}, features=[${license.features.join(", ")}]`);
385
+ if (license.expiresAt && license.expiresAt.getTime() < Date.now()) {
386
+ console.warn(` ⚠ License expired at ${license.expiresAt.toISOString()} — runtime will reject ` +
387
+ "it and fall back to OSS tier. Renew before deploying.");
388
+ }
389
+ console.log("");
390
+ }
391
+ let pmAgent;
392
+ if (license &&
393
+ license.tier !== "oss" &&
394
+ license.features.includes("slack-interface")) {
395
+ const setupNow = await prompts({
396
+ type: "confirm",
397
+ name: "setup",
398
+ message: "Set up PM agent + Slack interface now? (you can skip and fill in later)",
399
+ initial: false,
400
+ });
401
+ if (setupNow.setup) {
402
+ const pmPrompts = await prompts([
403
+ { type: "password", name: "slackBotToken", message: "SLACK_BOT_TOKEN (xoxb-...):" },
404
+ { type: "password", name: "slackSigningSecret", message: "SLACK_SIGNING_SECRET:" },
405
+ { type: "text", name: "slackChannelId", message: "PM_AGENT_SLACK_CHANNEL_ID (Cxxxxx):" },
406
+ {
407
+ type: "text",
408
+ name: "teamIds",
409
+ message: "PM_AGENT_TEAM_IDS (comma-separated):",
410
+ initial: stage1.linearTeamId,
411
+ },
412
+ {
413
+ type: "number",
414
+ name: "dailyTokenBudget",
415
+ message: "PM_AGENT_DAILY_TOKEN_BUDGET:",
416
+ initial: 5_000_000,
417
+ },
418
+ ]);
419
+ if (pmPrompts.slackBotToken && pmPrompts.slackSigningSecret && pmPrompts.slackChannelId) {
420
+ pmAgent = {
421
+ slackBotToken: pmPrompts.slackBotToken,
422
+ slackSigningSecret: pmPrompts.slackSigningSecret,
423
+ slackChannelId: pmPrompts.slackChannelId,
424
+ teamIds: pmPrompts.teamIds || stage1.linearTeamId,
425
+ dailyTokenBudget: pmPrompts.dailyTokenBudget ?? 5_000_000,
426
+ };
427
+ }
428
+ else if (pmPrompts.slackBotToken || pmPrompts.slackSigningSecret || pmPrompts.slackChannelId) {
429
+ // Partial input — warn loudly so the operator doesn't think they configured PM.
430
+ console.warn("\n ⚠ PM agent setup incomplete — at least one of SLACK_BOT_TOKEN, " +
431
+ "SLACK_SIGNING_SECRET, PM_AGENT_SLACK_CHANNEL_ID was blank. The PM_AGENT_* " +
432
+ "block in .env has been left commented out; fill it in by hand to enable.\n");
433
+ }
434
+ }
435
+ }
436
+ // --- Stage 6: secret generation strategy ---
437
+ const stage6 = await prompts({
438
+ type: "confirm",
439
+ name: "autoGen",
440
+ message: "Auto-generate POSTGRES_PASSWORD, DASHBOARD_PASSWORD, GITHUB_WEBHOOK_SECRET? (No → leave blank in .env)",
441
+ initial: true,
442
+ });
159
443
  const projectDir = arg === "." ? process.cwd() : join(process.cwd(), arg);
160
444
  const projectName = arg === "." ? basename(projectDir) || "my-project" : arg;
161
- scaffold({
445
+ const result = scaffold({
162
446
  projectDir,
163
447
  projectName,
164
- linearApiKey: response.linearApiKey,
165
- linearTeamId: response.linearTeamId,
166
- repoUrl: response.repoUrl,
167
- defaultBranch: response.defaultBranch || "main",
448
+ linearApiKey: stage1.linearApiKey,
449
+ linearTeamId: stage1.linearTeamId,
450
+ repoUrl: stage1.repoUrl,
451
+ defaultBranch: stage1.defaultBranch || "main",
452
+ deployMode: stage2.deployMode,
453
+ linearWebhookSecret: stage2.linearWebhookSecret,
454
+ domain: stage3.domain,
455
+ caddyEmail: stage3.caddyEmail,
456
+ anthropicApiKey: stage4.anthropicApiKey,
457
+ licenseKey: stage5.licenseKey,
458
+ pmAgent,
459
+ autoGenSecrets: stage6.autoGen,
168
460
  });
169
- console.log(`\n urateam sidecar installed in ${projectDir}/.urateam\n`);
170
- console.log(` Next steps:`);
461
+ // --- Next steps printout ---
462
+ console.log(`\n urateam sidecar installed in ${result.urateamDir}\n`);
463
+ if (Object.keys(result.generatedSecrets).length > 0) {
464
+ console.log(" Auto-generated secrets (saved to .env — record these now):");
465
+ if (result.generatedSecrets.dashboardPassword) {
466
+ console.log(` Dashboard login: admin / ${result.generatedSecrets.dashboardPassword}`);
467
+ }
468
+ if (result.generatedSecrets.postgresPassword) {
469
+ console.log(` POSTGRES_PASSWORD: ${result.generatedSecrets.postgresPassword}`);
470
+ }
471
+ if (result.generatedSecrets.githubWebhookSecret) {
472
+ console.log(` GITHUB_WEBHOOK_SECRET: ${result.generatedSecrets.githubWebhookSecret.slice(0, 12)}…`);
473
+ }
474
+ console.log("");
475
+ }
476
+ if (result.license) {
477
+ console.log(` License: ${result.license.tier}`);
478
+ if (result.license.features.length > 0) {
479
+ console.log(` Features: ${result.license.features.join(", ")}`);
480
+ }
481
+ console.log("");
482
+ }
483
+ if (result.todos.length > 0) {
484
+ console.log(" Still to do (edit .urateam/.env or run the noted commands):");
485
+ for (const todo of result.todos) {
486
+ console.log(` • ${todo}`);
487
+ }
488
+ console.log("");
489
+ }
490
+ console.log(" Next:");
171
491
  if (arg !== ".")
172
492
  console.log(` cd ${arg}`);
173
- console.log(` cd .urateam`);
174
- console.log(` pnpm install`);
175
- console.log(` ura dev`);
176
- console.log(`\n See CLAUDE.md in the project root for agent context.\n`);
493
+ console.log(" cd .urateam");
494
+ if (result.todos.length > 0) {
495
+ console.log(" # edit .env to fill in the TODOs above before continuing");
496
+ }
497
+ if (stage2.deployMode === "production") {
498
+ console.log(" docker compose up -d --build");
499
+ if (stage4.anthropicAuth === "cli") {
500
+ console.log(" docker compose exec agent claude login");
501
+ }
502
+ console.log(" docker compose exec agent gh auth login");
503
+ }
504
+ else {
505
+ console.log(" pnpm install");
506
+ console.log(" ura dev");
507
+ }
508
+ console.log("\n See CLAUDE.md in the project root for agent context.\n");
177
509
  }
178
510
  const isEntrypoint = process.argv[1]?.endsWith("create-urateam") ||
179
511
  process.argv[1]?.endsWith("index.js");
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":";AACA,OAAO,EACL,SAAS,EACT,aAAa,EACb,MAAM,EACN,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,GACf,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AA2EtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,GAA8B;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAChD,QAAQ,CACT,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAKrC,CAAC;QACF,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,UAAU,EAAE,OAAO,CAAC,GAAG;YACvB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CACf,OAkBC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEnC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACpC,IAAI,CAAC,kBAAkB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,yEAAyE;IACzE,4EAA4E;IAC5E,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,IAAI,CAAC,yBAAyB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,kBAAkB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxC,IAAI,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,uBAAuB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,2FAA2F,CAAC,CAAC;IACpG,CAAC;IACD,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACjD,IAAI,CAAC,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACzD,IAAI,CAAC,sEAAsE,CAAC,CAAC;IAC7E,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC5C,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAClD,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAClC,IAAI,CAAC,yBAAyB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC7D,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3B,IAAI,CAAC,qBAAqB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtD,KAAK,EAAE,CAAC;IAER,IAAI,OAAO,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC;IACV,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACjC,IAAI,CAAC,kBAAkB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,sBAAsB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,0FAA0F,CAAC,CAAC;IACjG,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC9B,IAAI,CAAC,uBAAuB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzD,KAAK,EAAE,CAAC;IAER,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAClD,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC9B,IAAI,CAAC,qBAAqB,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,6BAA6B,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,+BAA+B,OAAO,CAAC,OAAO,CAAC,gBAAgB,IAAI,SAAS,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjC,IAAI,CAAC,mBAAmB,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,wBAAwB,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACnE,KAAK,EAAE,CAAC;IACV,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACtE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7B,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACrC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC9C,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3B,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChC,KAAK,EAAE,CAAC;IACV,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3B,IAAI,CAAC,6FAA6F,CAAC,CAAC;IACpG,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC/B,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACnF,IAAI,CAAC,uEAAuE,CAAC,CAAC;IAC9E,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB;IAM9C,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;IAC/C,MAAM,SAAS,GAAuC,EAAE,CAAC;IAEzD,IAAI,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACxD,IAAI,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACtD,IAAI,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAE5D,IAAI,OAAO,EAAE,CAAC;QACZ,wEAAwE;QACxE,yCAAyC;QACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,iBAAiB,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC1D,SAAS,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,gBAAgB,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACzD,SAAS,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,mBAAmB,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtD,SAAS,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAwB;IAC/C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEhG,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACrE,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAChD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,KAAK,MAAM;YAAE,SAAS;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,GAAG,WAAW,UAAU;YAC9B,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,WAAW;aACnB;YACD,YAAY,EAAE;gBACZ,cAAc,EAAE,QAAQ;aACzB;SACF,CAAC;QACF,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAC3E,cAAc,CAAC,OAAO,CAAC,CAAC;IAE1B,sDAAsD;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,gEAAgE;gBAC9D,wCAAwC,CAC3C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CACR,6EAA6E;gBAC3E,sDAAsD,CACzD,CAAC;QACJ,CAAC;QACD,IACE,OAAO,EAAE,IAAI;YACb,OAAO,CAAC,IAAI,KAAK,KAAK;YACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC5C,CAAC,OAAO,CAAC,OAAO,EAChB,CAAC;YACD,KAAK,CAAC,IAAI,CACR,oEAAoE;gBAClE,kDAAkD,CACrD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,sFAAsF;gBACpF,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CACR,oFAAoF;YAClF,4DAA4D,CAC/D,CAAC;QACF,IAAI,OAAO,CAAC,UAAU,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBAAE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACjF,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAAE,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,mBAAmB;gBAAE,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC;YAC1B,YAAY;YACZ,YAAY;YACZ,OAAO;YACP,aAAa;YACb,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO;YACzC,mBAAmB;YACnB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;YAC9C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,OAAO;YAC/C,iBAAiB;YACjB,gBAAgB;YAChB,mBAAmB;YACnB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,CAAC;YACjD,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,kDAAkD;IAClD,MAAM,wBAAwB,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,QAAQ;aAC1B,KAAK,CAAC,OAAO,CAAC;aACd,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1D,cAAc,CAAC,aAAa,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,iBAAiB,GAAG;;;;;;;CAOzB,CAAC;AAGF,oFAAoF;AACpF,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACnC,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAElD,wCAAwC;IACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC3B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAClE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAClE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,EAAE;QACvE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE;KACrF,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uDAAuD;IACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC3B;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC5D,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,YAAY,EAAE;aACpE;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EACL,yFAAyF;SAC5F;KACF,CAAC,CAAC;IAEH,kEAAkE;IAClE,MAAM,MAAM,GACV,MAAM,CAAC,UAAU,KAAK,YAAY;QAChC,CAAC,CAAC,MAAM,OAAO,CAAC;YACZ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2CAA2C,EAAE;YACtF,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,0BAA0B,EAAE;SAC1E,CAAC;QACJ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAEnD,yCAAyC;IACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC3B;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,+CAA+C,EAAE,KAAK,EAAE,KAAK,EAAE;gBACxE,EAAE,KAAK,EAAE,qCAAqC,EAAE,KAAK,EAAE,QAAQ,EAAE;aAClE;SACF;QACD;YACE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,oBAAoB;SAC9B;KACF,CAAC,CAAC;IAEH,uDAAuD;IACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC3B;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,4CAA4C;SACtD;KACF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEjD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CACT,6BAA6B,OAAO,CAAC,IAAI,eAAe,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvF,CAAC;QACF,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAClE,OAAO,CAAC,IAAI,CACV,0BAA0B,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,yBAAyB;gBAChF,uDAAuD,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAmC,CAAC;IACxC,IACE,OAAO;QACP,OAAO,CAAC,IAAI,KAAK,KAAK;QACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAC5C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,yEAAyE;YAClF,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;gBAC9B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,6BAA6B,EAAE;gBACnF,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,uBAAuB,EAAE;gBAClF,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,qCAAqC,EAAE;gBACxF;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,sCAAsC;oBAC/C,OAAO,EAAE,MAAM,CAAC,YAAY;iBAC7B;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,8BAA8B;oBACvC,OAAO,EAAE,SAAS;iBACnB;aACF,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,kBAAkB,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;gBACxF,OAAO,GAAG;oBACR,aAAa,EAAE,SAAS,CAAC,aAAa;oBACtC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;oBAChD,cAAc,EAAE,SAAS,CAAC,cAAc;oBACxC,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY;oBACjD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,SAAS;iBAC1D,CAAC;YACJ,CAAC;iBAAM,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,kBAAkB,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;gBAC/F,gFAAgF;gBAChF,OAAO,CAAC,IAAI,CACV,qEAAqE;oBACnE,4EAA4E;oBAC5E,4EAA4E,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EACL,wGAAwG;QAC1G,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IAE7E,MAAM,MAAM,GAAG,QAAQ,CAAC;QACtB,UAAU;QACV,WAAW;QACX,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM;QAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO;QACP,cAAc,EAAE,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAC;IAEH,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CACT,gCAAgC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CACT,8BAA8B,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3D,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-urateam",
3
- "version": "0.1.8",
3
+ "version": "0.1.12",
4
4
  "license": "BUSL-1.1",
5
5
  "type": "module",
6
6
  "bin": {