create-hq 10.10.0 → 10.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/commands/{team-sync.md → sync-team.md} +167 -6
  2. package/dist/__tests__/auth.test.js +176 -186
  3. package/dist/__tests__/auth.test.js.map +1 -1
  4. package/dist/__tests__/scaffold.test.js +5 -3
  5. package/dist/__tests__/scaffold.test.js.map +1 -1
  6. package/dist/auth.d.ts +57 -129
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +81 -370
  9. package/dist/auth.js.map +1 -1
  10. package/dist/fetch-template.d.ts +7 -2
  11. package/dist/fetch-template.d.ts.map +1 -1
  12. package/dist/fetch-template.js +27 -15
  13. package/dist/fetch-template.js.map +1 -1
  14. package/dist/index.js +7 -17
  15. package/dist/index.js.map +1 -1
  16. package/dist/packages.d.ts.map +1 -1
  17. package/dist/packages.js +1 -1
  18. package/dist/packages.js.map +1 -1
  19. package/dist/recommended-packages.d.ts +93 -0
  20. package/dist/recommended-packages.d.ts.map +1 -0
  21. package/dist/recommended-packages.js +221 -0
  22. package/dist/recommended-packages.js.map +1 -0
  23. package/dist/scaffold.d.ts +4 -2
  24. package/dist/scaffold.d.ts.map +1 -1
  25. package/dist/scaffold.js +127 -232
  26. package/dist/scaffold.js.map +1 -1
  27. package/dist/ui.d.ts +0 -17
  28. package/dist/ui.d.ts.map +1 -1
  29. package/dist/ui.js +0 -45
  30. package/dist/ui.js.map +1 -1
  31. package/package.json +2 -1
  32. package/dist/admin-onboarding.d.ts +0 -44
  33. package/dist/admin-onboarding.d.ts.map +0 -1
  34. package/dist/admin-onboarding.js +0 -530
  35. package/dist/admin-onboarding.js.map +0 -1
  36. package/dist/company-template.d.ts +0 -34
  37. package/dist/company-template.d.ts.map +0 -1
  38. package/dist/company-template.js +0 -142
  39. package/dist/company-template.js.map +0 -1
  40. package/dist/invite-command.d.ts +0 -10
  41. package/dist/invite-command.d.ts.map +0 -1
  42. package/dist/invite-command.js +0 -110
  43. package/dist/invite-command.js.map +0 -1
  44. package/dist/invite.d.ts +0 -91
  45. package/dist/invite.d.ts.map +0 -1
  46. package/dist/invite.js +0 -230
  47. package/dist/invite.js.map +0 -1
  48. package/dist/join-flow.d.ts +0 -32
  49. package/dist/join-flow.d.ts.map +0 -1
  50. package/dist/join-flow.js +0 -315
  51. package/dist/join-flow.js.map +0 -1
  52. package/dist/team-setup.d.ts +0 -83
  53. package/dist/team-setup.d.ts.map +0 -1
  54. package/dist/team-setup.js +0 -353
  55. package/dist/team-setup.js.map +0 -1
  56. package/dist/teams-flow.d.ts +0 -41
  57. package/dist/teams-flow.d.ts.map +0 -1
  58. package/dist/teams-flow.js +0 -173
  59. package/dist/teams-flow.js.map +0 -1
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-hq",
3
- "version": "10.10.0",
3
+ "version": "10.12.0",
4
4
  "description": "Create a new HQ by Indigo — Personal OS for AI Workers",
5
5
  "bin": {
6
6
  "create-hq": "./dist/index.js"
@@ -18,6 +18,7 @@
18
18
  "test:containers": "vitest run test/container.test.ts"
19
19
  },
20
20
  "dependencies": {
21
+ "@indigoai-us/hq-cloud": "^5.1.9",
21
22
  "chalk": "^5.3.0",
22
23
  "commander": "^12.1.0",
23
24
  "fs-extra": "^11.2.0",
@@ -1,44 +0,0 @@
1
- /**
2
- * Admin onboarding flow — for users creating a brand new HQ team.
3
- *
4
- * Steps:
5
- * 1. Ensure a `gh` CLI token for org discovery (prompt login if needed)
6
- * 2. List ALL user's GitHub orgs via gh token (full visibility)
7
- * 3. Let user pick an existing org or create a new one (browser hand-off)
8
- * 4. Verify the HQ App is installed on the chosen org (browser hand-off if not)
9
- * 5. Prompt for team name (default = org display name)
10
- * 6. Create the {org}/hq private repo
11
- * 7. Seed the repo locally with the company template + push
12
- * 8. Clone the repo into companies/{slug}/ as a nested git
13
- * 9. Return team metadata for the orientation summary
14
- */
15
- import { type GitHubAuth } from "./auth.js";
16
- import { type TeamMetadata } from "./company-template.js";
17
- export interface AdminOnboardingResult {
18
- team: TeamMetadata;
19
- /** Local path where the team repo was cloned. */
20
- companyDir: string;
21
- /** GitHub HTML URL for the new team repo. */
22
- repoHtmlUrl: string;
23
- }
24
- export declare function slugify(input: string): string;
25
- /**
26
- * Run the admin onboarding flow.
27
- *
28
- * @param preAuth - Pre-existing App auth (from "existing" path), or null
29
- * if coming from the "new" path (auth deferred until after org selection)
30
- * @param hqRoot - Local HQ root directory (where companies/ lives)
31
- * @param hqVersion - HQ template version (for team metadata)
32
- */
33
- export declare function runAdminOnboarding(preAuth: GitHubAuth | null, hqRoot: string, hqVersion: string): Promise<AdminOnboardingResult | null>;
34
- /**
35
- * Interactive invite generation for a single member. Prompts for email,
36
- * sends org invite, generates token, and prints instructions.
37
- */
38
- export declare function generateInviteInteractive(auth: GitHubAuth, meta: TeamMetadata, cloneUrl: string): Promise<void>;
39
- /**
40
- * Invite loop — asks "Invite a team member?" and repeats until the admin
41
- * says no. Used after team creation and from the standalone invite command.
42
- */
43
- export declare function inviteLoop(auth: GitHubAuth, meta: TeamMetadata, cloneUrl: string): Promise<void>;
44
- //# sourceMappingURL=admin-onboarding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-onboarding.d.ts","sourceRoot":"","sources":["../src/admin-onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,EACL,KAAK,UAAU,EAOhB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAwChF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;CACrB;AA6MD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAID;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,GAAG,IAAI,EAC1B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAySvC;AAID;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -1,530 +0,0 @@
1
- /**
2
- * Admin onboarding flow — for users creating a brand new HQ team.
3
- *
4
- * Steps:
5
- * 1. Ensure a `gh` CLI token for org discovery (prompt login if needed)
6
- * 2. List ALL user's GitHub orgs via gh token (full visibility)
7
- * 3. Let user pick an existing org or create a new one (browser hand-off)
8
- * 4. Verify the HQ App is installed on the chosen org (browser hand-off if not)
9
- * 5. Prompt for team name (default = org display name)
10
- * 6. Create the {org}/hq private repo
11
- * 7. Seed the repo locally with the company template + push
12
- * 8. Clone the repo into companies/{slug}/ as a nested git
13
- * 9. Return team metadata for the orientation summary
14
- */
15
- import * as fs from "fs";
16
- import * as path from "path";
17
- import * as os from "os";
18
- import * as crypto from "crypto";
19
- import { execSync } from "child_process";
20
- import { createInterface } from "readline";
21
- import chalk from "chalk";
22
- import { HQ_GITHUB_APP_SLUG, githubApi, openBrowser, getGhCliToken, fetchAdminOrgsWithToken, startGitHubDeviceFlow, } from "./auth.js";
23
- import { writeCompanyTemplate } from "./company-template.js";
24
- import { stepStatus, success, warn, info } from "./ui.js";
25
- import { linkTeamCommands, installTeamCommands } from "./team-setup.js";
26
- import { encodeInviteToken, printInviteSummary, openInviteEmail, formatInviteMessage, copyToClipboard, sendOrgInviteByEmail, } from "./invite.js";
27
- // ─── Prompt helpers ─────────────────────────────────────────────────────────
28
- function prompt(question, defaultVal) {
29
- const rl = createInterface({ input: process.stdin, output: process.stdout });
30
- const suffix = defaultVal ? ` (${defaultVal})` : "";
31
- return new Promise((resolve) => {
32
- rl.question(` ? ${question}${suffix} `, (answer) => {
33
- rl.close();
34
- resolve(answer.trim() || defaultVal || "");
35
- });
36
- });
37
- }
38
- function pause(message) {
39
- const rl = createInterface({ input: process.stdin, output: process.stdout });
40
- return new Promise((resolve) => {
41
- rl.question(` ${message} `, () => {
42
- rl.close();
43
- resolve();
44
- });
45
- });
46
- }
47
- // ─── GitHub helpers ─────────────────────────────────────────────────────────
48
- /**
49
- * Ensure we have a `gh` CLI token for org discovery.
50
- *
51
- * The GitHub App user-to-server token can only see orgs where the App is
52
- * already installed — a chicken-and-egg problem when the user wants to pick
53
- * an org to install the App on. The `gh` CLI token (OAuth with `read:org`)
54
- * sees ALL the user's orgs regardless of App installations.
55
- *
56
- * Flow:
57
- * 1. Try `gh auth token` — if it works, we're done
58
- * 2. If `gh` isn't installed or not logged in, prompt the user to log in
59
- * 3. Retry after they confirm — if still no token, return null (caller
60
- * will guide user to create an org or abort)
61
- */
62
- async function ensureGhToken() {
63
- const existing = getGhCliToken();
64
- if (existing)
65
- return existing;
66
- // gh not available or not logged in — guide the user
67
- console.log();
68
- info("HQ needs access to your GitHub organizations to continue.");
69
- info("The fastest way is to sign into the GitHub CLI:");
70
- console.log();
71
- console.log(chalk.cyan(" gh auth login"));
72
- console.log();
73
- await pause("Run that command in another terminal, then press Enter...");
74
- // Retry after user says they logged in
75
- const token = getGhCliToken();
76
- if (token)
77
- return token;
78
- // Still no luck — one more attempt with installation help
79
- console.log();
80
- info("Still can't detect a GitHub CLI session.");
81
- info("If you don't have the GitHub CLI installed:");
82
- console.log(chalk.cyan(" https://cli.github.com"));
83
- console.log();
84
- const retry = await prompt("Try again after installing/logging in? (Y/n)", "y");
85
- if (!retry.toLowerCase().startsWith("y"))
86
- return null;
87
- await pause("Press Enter when ready...");
88
- return getGhCliToken();
89
- }
90
- /**
91
- * Fetch the orgs the user is an active admin of, using their `gh` CLI token.
92
- *
93
- * Always uses a user-scoped token (from `gh auth token`) so we see ALL
94
- * the user's orgs — not just orgs where the HQ App is installed.
95
- * Returns an empty array if the token is unavailable or the user has no orgs.
96
- */
97
- async function fetchAdminOrgs(ghToken) {
98
- return fetchAdminOrgsWithToken(ghToken);
99
- }
100
- async function fetchInstallations(auth) {
101
- const data = await githubApi("/user/installations?per_page=100", auth);
102
- return data.installations ?? [];
103
- }
104
- function findHqInstallation(installations, orgLogin) {
105
- return (installations.find((i) => i.app_slug === HQ_GITHUB_APP_SLUG &&
106
- i.account?.login?.toLowerCase() === orgLogin.toLowerCase()) ?? null);
107
- }
108
- async function createOrgRepo(auth, orgLogin, repoName, description) {
109
- return githubApi(`/orgs/${orgLogin}/repos`, auth, {
110
- method: "POST",
111
- body: JSON.stringify({
112
- name: repoName,
113
- private: true,
114
- description,
115
- auto_init: false,
116
- has_issues: true,
117
- has_projects: false,
118
- has_wiki: false,
119
- }),
120
- });
121
- }
122
- async function getExistingRepo(auth, orgLogin, repoName) {
123
- try {
124
- return await githubApi(`/repos/${orgLogin}/${repoName}`, auth);
125
- }
126
- catch {
127
- return null;
128
- }
129
- }
130
- // ─── Git helpers ────────────────────────────────────────────────────────────
131
- /**
132
- * Run a git command, embedding the user's GitHub token via a one-shot
133
- * credential helper so the token never appears in argv or remote URLs.
134
- *
135
- * The token is passed via an environment variable to a tiny inline askpass
136
- * script written to a temp file, which git invokes via GIT_ASKPASS.
137
- */
138
- function runGitWithToken(args, cwd, auth, inputEnv = {}) {
139
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "create-hq-git-"));
140
- const isWindows = process.platform === "win32";
141
- const askpassPath = path.join(tmpDir, isWindows ? "askpass.cmd" : "askpass.sh");
142
- try {
143
- if (isWindows) {
144
- // Windows batch script: stdout the token (for Password) or username
145
- fs.writeFileSync(askpassPath, `@echo off\nif "%~1"=="" (echo %GIT_TOKEN%) else (echo %GIT_TOKEN%)\n`, "utf-8");
146
- }
147
- else {
148
- fs.writeFileSync(askpassPath, `#!/bin/sh\necho "$GIT_TOKEN"\n`, "utf-8");
149
- fs.chmodSync(askpassPath, 0o700);
150
- }
151
- execSync(`git -c credential.helper= ${args.join(" ")}`, {
152
- cwd,
153
- stdio: "pipe",
154
- env: {
155
- ...process.env,
156
- ...inputEnv,
157
- GIT_TOKEN: auth.access_token,
158
- GIT_ASKPASS: askpassPath,
159
- GIT_TERMINAL_PROMPT: "0",
160
- // Prevent any system credential helper from caching the token
161
- GCM_INTERACTIVE: "never",
162
- },
163
- });
164
- }
165
- finally {
166
- try {
167
- fs.rmSync(tmpDir, { recursive: true, force: true });
168
- }
169
- catch {
170
- // ignore
171
- }
172
- }
173
- }
174
- /**
175
- * Build an HTTPS URL with the username embedded so git's askpass only
176
- * needs to provide the password (the token). We use "x-access-token" as
177
- * the username — GitHub's recommended convention for token auth.
178
- */
179
- function tokenAuthUrl(cloneUrl) {
180
- const u = new URL(cloneUrl);
181
- u.username = "x-access-token";
182
- // Don't put the token in the URL — askpass handles it
183
- return u.toString();
184
- }
185
- // ─── Slug helper ────────────────────────────────────────────────────────────
186
- export function slugify(input) {
187
- return input
188
- .toLowerCase()
189
- .replace(/[^a-z0-9-]+/g, "-")
190
- .replace(/^-+|-+$/g, "")
191
- .slice(0, 50) || "team";
192
- }
193
- // ─── Main flow ──────────────────────────────────────────────────────────────
194
- /**
195
- * Run the admin onboarding flow.
196
- *
197
- * @param preAuth - Pre-existing App auth (from "existing" path), or null
198
- * if coming from the "new" path (auth deferred until after org selection)
199
- * @param hqRoot - Local HQ root directory (where companies/ lives)
200
- * @param hqVersion - HQ template version (for team metadata)
201
- */
202
- export async function runAdminOnboarding(preAuth, hqRoot, hqVersion) {
203
- console.log();
204
- console.log(chalk.bold(" Create a new HQ team"));
205
- console.log();
206
- // 1. Get a gh CLI token for org discovery (sees ALL user's orgs)
207
- const ghToken = await ensureGhToken();
208
- if (!ghToken) {
209
- warn("GitHub CLI is needed to list your organizations.");
210
- info("Install it from " + chalk.cyan("https://cli.github.com") + " then run " + chalk.cyan("gh auth login"));
211
- info("After that, run create-hq again.");
212
- return null;
213
- }
214
- // 2. Fetch admin orgs using the gh token
215
- const orgsLabel = "Looking up your GitHub organizations";
216
- stepStatus(orgsLabel, "running");
217
- let orgs = await fetchAdminOrgs(ghToken);
218
- stepStatus(orgsLabel, "done");
219
- // 3. Pick or create org
220
- let chosenOrg = null;
221
- while (!chosenOrg) {
222
- if (orgs.length === 0) {
223
- console.log();
224
- info("You aren't an admin of any GitHub organization yet.");
225
- info("HQ Teams need a GitHub org to host the shared workspace repo.");
226
- console.log();
227
- const create = await prompt("Open browser to create one now? (Y/n)", "y");
228
- if (!create.toLowerCase().startsWith("y")) {
229
- warn("Skipping team creation — you can run create-hq again after creating an org.");
230
- return null;
231
- }
232
- openBrowser("https://github.com/organizations/new");
233
- await pause("Press Enter when you have finished creating the org...");
234
- stepStatus("Re-checking organizations", "running");
235
- orgs = await fetchAdminOrgs(ghToken);
236
- stepStatus("Re-checking organizations", "done");
237
- continue;
238
- }
239
- console.log();
240
- console.log(chalk.bold(" Choose an organization:"));
241
- for (let i = 0; i < orgs.length; i++) {
242
- console.log(chalk.cyan(` [${i + 1}] `) + chalk.white(orgs[i].login));
243
- }
244
- console.log(chalk.cyan(` [${orgs.length + 1}] `) + chalk.dim("Create a new GitHub organization"));
245
- console.log();
246
- const answer = await prompt(`Select (1-${orgs.length + 1})`, "1");
247
- const idx = parseInt(answer, 10) - 1;
248
- if (idx === orgs.length) {
249
- // Create new org
250
- openBrowser("https://github.com/organizations/new");
251
- await pause("Press Enter when you have finished creating the org...");
252
- stepStatus("Re-checking organizations", "running");
253
- orgs = await fetchAdminOrgs(ghToken);
254
- stepStatus("Re-checking organizations", "done");
255
- continue;
256
- }
257
- if (idx < 0 || idx >= orgs.length) {
258
- warn("Invalid selection. Try again.");
259
- continue;
260
- }
261
- chosenOrg = orgs[idx];
262
- }
263
- // 4. Authenticate with the HQ App (deferred until after org selection)
264
- // The App token is needed for installation checks and repo management.
265
- // By deferring, we avoid the chicken-and-egg: user sees all orgs first
266
- // (via gh token), picks one, THEN authorizes the App for that org.
267
- let auth = preAuth;
268
- if (!auth) {
269
- console.log();
270
- info(`Now authorize the HQ App to manage repos in ${chalk.cyan(chosenOrg.login)}.`);
271
- try {
272
- auth = await startGitHubDeviceFlow();
273
- }
274
- catch (err) {
275
- const message = err instanceof Error ? err.message : String(err);
276
- warn(`GitHub App authorization failed: ${message}`);
277
- return null;
278
- }
279
- }
280
- // 5. Verify HQ App is installed on the chosen org
281
- let installation = null;
282
- while (!installation) {
283
- const installLabel = `Checking HQ App on ${chosenOrg.login}`;
284
- stepStatus(installLabel, "running");
285
- const installations = await fetchInstallations(auth);
286
- installation = findHqInstallation(installations, chosenOrg.login);
287
- if (installation) {
288
- stepStatus(installLabel, "done");
289
- break;
290
- }
291
- stepStatus(installLabel, "failed");
292
- console.log();
293
- info(`The HQ GitHub App isn't installed on ${chalk.cyan(chosenOrg.login)} yet.`);
294
- info("Installing it gives HQ permission to manage the team workspace repo.");
295
- console.log();
296
- console.log();
297
- info("We'll open the HQ App install page.");
298
- info(chalk.bold(`Select "${chosenOrg.login}" from the list of organizations.`));
299
- console.log();
300
- const openIt = await prompt("Open the install page now? (Y/n)", "y");
301
- if (openIt.toLowerCase().startsWith("y")) {
302
- // /installations/select_target always shows the org picker, even when
303
- // the App is already installed on a different org (unlike /installations/new
304
- // which redirects to the existing installation's config page).
305
- openBrowser(`https://github.com/apps/${HQ_GITHUB_APP_SLUG}/installations/select_target`);
306
- }
307
- await pause("Press Enter when the App has been installed...");
308
- }
309
- // 6. Prompt for team name
310
- console.log();
311
- const defaultName = chosenOrg.login;
312
- const teamName = (await prompt("Team name", defaultName)) || defaultName;
313
- const teamSlug = slugify(teamName);
314
- const teamId = crypto.randomUUID();
315
- const meta = {
316
- team_id: teamId,
317
- team_name: teamName,
318
- team_slug: teamSlug,
319
- org_login: chosenOrg.login,
320
- org_id: chosenOrg.id,
321
- created_by: auth.login,
322
- created_at: new Date().toISOString(),
323
- hq_version: hqVersion,
324
- };
325
- // 7. Create the {org}/hq-{teamSlug} repo
326
- const repoName = `hq-${teamSlug}`;
327
- const repoLabel = `Creating ${chosenOrg.login}/${repoName} private repo`;
328
- stepStatus(repoLabel, "running");
329
- let repo = null;
330
- try {
331
- repo = await createOrgRepo(auth, chosenOrg.login, repoName, `HQ Teams workspace for ${teamName}`);
332
- stepStatus(repoLabel, "done");
333
- }
334
- catch (err) {
335
- const message = err instanceof Error ? err.message : String(err);
336
- if (message.includes("422") && /already exists/i.test(message)) {
337
- // Repo already exists — could be from a prior run. Confirm before reusing.
338
- stepStatus(repoLabel, "done");
339
- console.log();
340
- info(`${chosenOrg.login}/${repoName} already exists.`);
341
- const reuse = await prompt("Reuse this repo? (Y/n)", "y");
342
- if (!reuse.toLowerCase().startsWith("y")) {
343
- warn("Aborting — choose a different team name next time to avoid the conflict.");
344
- return null;
345
- }
346
- repo = await getExistingRepo(auth, chosenOrg.login, repoName);
347
- if (!repo) {
348
- stepStatus(repoLabel, "failed");
349
- warn(`Could not load existing ${chosenOrg.login}/${repoName}: ${message}`);
350
- return null;
351
- }
352
- }
353
- else {
354
- stepStatus(repoLabel, "failed");
355
- warn(`Could not create repo: ${message}`);
356
- return null;
357
- }
358
- }
359
- // 8. Seed locally and push
360
- const seedLabel = "Seeding team workspace";
361
- stepStatus(seedLabel, "running");
362
- const seedDir = fs.mkdtempSync(path.join(os.tmpdir(), "create-hq-seed-"));
363
- try {
364
- // git init in seed dir
365
- execSync(`git init -b main`, { cwd: seedDir, stdio: "pipe" });
366
- execSync(`git config user.email "${auth.email || `${auth.login}@users.noreply.github.com`}"`, {
367
- cwd: seedDir,
368
- stdio: "pipe",
369
- });
370
- execSync(`git config user.name "${auth.name || auth.login}"`, {
371
- cwd: seedDir,
372
- stdio: "pipe",
373
- });
374
- writeCompanyTemplate(seedDir, meta);
375
- execSync(`git add -A`, { cwd: seedDir, stdio: "pipe" });
376
- execSync(`git commit -m "chore: bootstrap HQ team workspace"`, { cwd: seedDir, stdio: "pipe" });
377
- const remoteUrl = tokenAuthUrl(repo.clone_url);
378
- execSync(`git remote add origin "${remoteUrl}"`, { cwd: seedDir, stdio: "pipe" });
379
- runGitWithToken(["push", "-u", "origin", "main"], seedDir, auth);
380
- stepStatus(seedLabel, "done");
381
- }
382
- catch (err) {
383
- stepStatus(seedLabel, "failed");
384
- const message = err instanceof Error ? err.message : String(err);
385
- warn(`Failed to seed team repo: ${message}`);
386
- return null;
387
- }
388
- finally {
389
- try {
390
- fs.rmSync(seedDir, { recursive: true, force: true });
391
- }
392
- catch {
393
- // ignore
394
- }
395
- }
396
- // 9. Clone into companies/{slug}/
397
- const companiesDir = path.join(hqRoot, "companies");
398
- if (!fs.existsSync(companiesDir)) {
399
- fs.mkdirSync(companiesDir, { recursive: true });
400
- }
401
- const companyDir = path.join(companiesDir, teamSlug);
402
- if (fs.existsSync(companyDir) && fs.readdirSync(companyDir).length > 0) {
403
- warn(`companies/${teamSlug}/ already exists and is not empty — skipping clone.`);
404
- }
405
- else {
406
- const cloneLabel = `Cloning into companies/${teamSlug}`;
407
- stepStatus(cloneLabel, "running");
408
- try {
409
- const remoteUrl = tokenAuthUrl(repo.clone_url);
410
- runGitWithToken(["clone", `"${remoteUrl}"`, `"${companyDir}"`], companiesDir, auth);
411
- // Strip token from the stored remote URL
412
- execSync(`git remote set-url origin "${repo.clone_url}"`, {
413
- cwd: companyDir,
414
- stdio: "pipe",
415
- });
416
- stepStatus(cloneLabel, "done");
417
- }
418
- catch (err) {
419
- stepStatus(cloneLabel, "failed");
420
- const message = err instanceof Error ? err.message : String(err);
421
- warn(`Could not clone into companies/${teamSlug}/: ${message}`);
422
- // Team repo was created on GitHub — still return success so the user
423
- // gets the admin orientation (with repo URL) instead of generic next steps.
424
- // They can clone manually later.
425
- console.log();
426
- success(`Team "${teamName}" created at ${repo.html_url}`);
427
- info("Local clone failed — clone manually with:");
428
- info(` git clone ${repo.clone_url} companies/${teamSlug}`);
429
- // Still offer invite generation
430
- await inviteLoop(auth, meta, repo.clone_url);
431
- return {
432
- team: meta,
433
- companyDir,
434
- repoHtmlUrl: repo.html_url,
435
- };
436
- }
437
- }
438
- // Install bundled team commands (invite, sync, promote)
439
- const installed = installTeamCommands(hqRoot);
440
- if (installed.length > 0) {
441
- info(`Installed ${installed.length} team command${installed.length === 1 ? "" : "s"}: ${installed.join(", ")}`);
442
- }
443
- // Link team-distributed commands as slash commands
444
- const symlinks = linkTeamCommands(hqRoot, teamSlug);
445
- if (symlinks.linked.length > 0) {
446
- info(`Linked ${symlinks.linked.length} team command${symlinks.linked.length === 1 ? "" : "s"}`);
447
- }
448
- console.log();
449
- success(`Team "${teamName}" created — ${repo.html_url}`);
450
- // 10. Offer to generate member invites
451
- await inviteLoop(auth, meta, repo.clone_url);
452
- return {
453
- team: meta,
454
- companyDir,
455
- repoHtmlUrl: repo.html_url,
456
- };
457
- }
458
- // ─── Invite generation (used by admin onboarding + standalone) ──────────────
459
- /**
460
- * Interactive invite generation for a single member. Prompts for email,
461
- * sends org invite, generates token, and prints instructions.
462
- */
463
- export async function generateInviteInteractive(auth, meta, cloneUrl) {
464
- const payload = {
465
- org: meta.org_login,
466
- repo: `hq-${meta.team_slug}`,
467
- slug: meta.team_slug,
468
- teamName: meta.team_name,
469
- cloneUrl,
470
- invitedBy: auth.login,
471
- };
472
- const token = encodeInviteToken(payload);
473
- // Ask for email — used for the mailto invite, not for API calls
474
- const email = await prompt("New member's email (or press Enter to skip)");
475
- printInviteSummary(payload, token, false, email || undefined);
476
- // Copy invite message to clipboard
477
- const msg = formatInviteMessage(payload, token, email || undefined);
478
- const copied = copyToClipboard(msg);
479
- // Try to open mailto: with pre-populated email (works well on macOS/first use)
480
- if (email) {
481
- openInviteEmail(payload, token, email);
482
- }
483
- // Always show clipboard status — mailto: is unreliable on Windows after first use
484
- if (copied) {
485
- success("Invite message copied to clipboard — if your email client didn't open, just paste into a new email and send.");
486
- }
487
- else if (!email) {
488
- info("No email provided — share the invite message above via email, Slack, or text.");
489
- }
490
- // Send the GitHub org invite via API (required for the member to accept)
491
- if (email) {
492
- const result = await sendOrgInviteByEmail(auth, meta.org_login, email);
493
- if (result.ok) {
494
- success(`GitHub org invite sent to ${email}`);
495
- }
496
- else {
497
- warn(`Could not send org invite automatically: ${result.error}`);
498
- console.log();
499
- info(`Send the invite manually (required for access):`);
500
- info(` https://github.com/orgs/${meta.org_login}/people`);
501
- info(` Click "Invite member" and enter: ${email}`);
502
- }
503
- }
504
- else {
505
- console.log();
506
- info(`Send them a GitHub org invite (required for access):`);
507
- info(` https://github.com/orgs/${meta.org_login}/people`);
508
- info(` Click "Invite member" and enter their email or GitHub username`);
509
- }
510
- }
511
- /**
512
- * Invite loop — asks "Invite a team member?" and repeats until the admin
513
- * says no. Used after team creation and from the standalone invite command.
514
- */
515
- export async function inviteLoop(auth, meta, cloneUrl) {
516
- let first = true;
517
- while (true) {
518
- console.log();
519
- const question = first
520
- ? "Invite a team member now? (Y/n)"
521
- : "Invite another team member? (y/N)";
522
- const defaultAnswer = first ? "y" : "n";
523
- const answer = await prompt(question, defaultAnswer);
524
- if (!answer.toLowerCase().startsWith("y"))
525
- break;
526
- await generateInviteInteractive(auth, meta, cloneUrl);
527
- first = false;
528
- }
529
- }
530
- //# sourceMappingURL=admin-onboarding.js.map