create-hq 10.7.0 → 10.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/art.js ADDED
@@ -0,0 +1,171 @@
1
+ import chalk from "chalk";
2
+ const VERSION = "7.0.0";
3
+ /**
4
+ * Raw banner lines without ANSI codes — testable.
5
+ */
6
+ export function bannerLines() {
7
+ return [
8
+ "",
9
+ " ┌──────────┐",
10
+ " │ ╔══════╗│",
11
+ " │ ║INDIGO║│",
12
+ " │ ║ HQ ║│",
13
+ " │ ╚══════╝│",
14
+ " ┌────┴──────────┴────┐",
15
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
16
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ │",
17
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
18
+ " ┌────┴────────────────────┴────┐",
19
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
20
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ │",
21
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
22
+ " ┌────┴─────────────────────────────┴────┐",
23
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
24
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ │",
25
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
26
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ │",
27
+ " ┌────┴──────────────────────────────────────┴────┐",
28
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
29
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ │",
30
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
31
+ " │ ┌──────────────┐ │",
32
+ " │ │ ════════ │ │",
33
+ " └───────┴──────────────┴───────┘",
34
+ "",
35
+ " ██╗███╗ ██╗██████╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ",
36
+ " ██║████╗ ██║██╔══██╗██║██╔════╝ ██╔═══██╗ ██║ ██║██╔═══██╗",
37
+ " ██║██╔██╗ ██║██║ ██║██║██║ ███╗██║ ██║ ███████║██║ ██║",
38
+ " ██║██║╚██╗██║██║ ██║██║██║ ██║██║ ██║ ██╔══██║██║▄▄ ██║",
39
+ " ██║██║ ╚████║██████╔╝██║╚██████╔╝╚██████╔╝ ██║ ██║╚██████╔╝",
40
+ " ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══▀▀═╝ ",
41
+ "",
42
+ ` Personal OS for AI Workers v${VERSION}`,
43
+ "",
44
+ ];
45
+ }
46
+ /**
47
+ * Raw compact banner lines without ANSI codes — testable.
48
+ */
49
+ export function compactBannerLines() {
50
+ return [
51
+ "",
52
+ " ┌────────────┐",
53
+ " │ ╔════════╗ │",
54
+ " │ ║INDIGOHQ║ │",
55
+ " │ ╚════════╝ │",
56
+ " ┌────┴────────────┴────┐",
57
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
58
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ │",
59
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
60
+ " │ ░░ ▓▓ ░░ ▓▓ ░░ │",
61
+ " │ ▓▓ ░░ ▓▓ ░░ ▓▓ │",
62
+ " │ ┌──────┐ │",
63
+ " │ │ ════ │ │",
64
+ " └────┴──────┴────────┘",
65
+ "",
66
+ " ██╗██╗ ██╗ ██████╗ ",
67
+ " ██║██║ ██║██╔═══██╗",
68
+ " ██║███████║██║ ██║",
69
+ " ██║██╔══██║██║▄▄ ██║",
70
+ " ██║██║ ██║╚██████╔╝",
71
+ " ╚═╝╚═╝ ╚═╝ ╚══▀▀═╝",
72
+ "",
73
+ " Personal OS for AI Workers",
74
+ ` v${VERSION}`,
75
+ "",
76
+ ];
77
+ }
78
+ /**
79
+ * Full-width ASCII art banner (80 cols) — retro office building + INDIGO HQ
80
+ */
81
+ export function banner() {
82
+ const b = chalk.cyan; // building structure
83
+ const bd = chalk.cyanBright; // building highlights
84
+ const w = chalk.blueBright; // windows (lit)
85
+ const wd = chalk.blue; // windows (dark)
86
+ const t = chalk.bold.whiteBright; // title text
87
+ const dim = chalk.dim;
88
+ const lines = [
89
+ "",
90
+ b(" ┌──────────┐"),
91
+ b(" │") + bd(" ╔══════╗") + b("│"),
92
+ b(" │") + bd(" ║INDIGO║") + b("│"),
93
+ b(" │") + bd(" ║ HQ ║") + b("│"),
94
+ b(" │") + bd(" ╚══════╝") + b("│"),
95
+ b(" ┌────┴──────────┴────┐"),
96
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
97
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
98
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
99
+ b(" ┌────┴────────────────────┴────┐"),
100
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
101
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
102
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
103
+ b(" ┌────┴─────────────────────────────┴────┐"),
104
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
105
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
106
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
107
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
108
+ b(" ┌────┴──────────────────────────────────────┴────┐"),
109
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
110
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
111
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
112
+ b(" │") + wd(" ") + b("┌──────────────┐") + wd(" ") + b("│"),
113
+ b(" │") + wd(" ") + b("│") + bd(" ════════ ") + b("│") + wd(" ") + b("│"),
114
+ b(" └───────┴──────────────┴───────┘"),
115
+ "",
116
+ t(" ██╗███╗ ██╗██████╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ "),
117
+ t(" ██║████╗ ██║██╔══██╗██║██╔════╝ ██╔═══██╗ ██║ ██║██╔═══██╗"),
118
+ t(" ██║██╔██╗ ██║██║ ██║██║██║ ███╗██║ ██║ ███████║██║ ██║"),
119
+ t(" ██║██║╚██╗██║██║ ██║██║██║ ██║██║ ██║ ██╔══██║██║▄▄ ██║"),
120
+ t(" ██║██║ ╚████║██████╔╝██║╚██████╔╝╚██████╔╝ ██║ ██║╚██████╔╝"),
121
+ t(" ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══▀▀═╝ "),
122
+ "",
123
+ dim(" Personal OS for AI Workers") + dim(` v${VERSION}`),
124
+ "",
125
+ ];
126
+ for (const line of lines) {
127
+ console.log(line);
128
+ }
129
+ }
130
+ /**
131
+ * Compact banner for narrow terminals (< 80 cols)
132
+ */
133
+ export function compactBanner() {
134
+ const b = chalk.cyan;
135
+ const bd = chalk.cyanBright;
136
+ const w = chalk.blueBright;
137
+ const wd = chalk.blue;
138
+ const t = chalk.bold.whiteBright;
139
+ const dim = chalk.dim;
140
+ const lines = [
141
+ "",
142
+ b(" ┌────────────┐"),
143
+ b(" │") + bd(" ╔════════╗ ") + b("│"),
144
+ b(" │") + bd(" ║INDIGOHQ║ ") + b("│"),
145
+ b(" │") + bd(" ╚════════╝ ") + b("│"),
146
+ b(" ┌────┴────────────┴────┐"),
147
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
148
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
149
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
150
+ b(" │") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + b("│"),
151
+ b(" │") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + wd(" ░░ ") + w(" ▓▓ ") + b("│"),
152
+ b(" │") + wd(" ") + b("┌──────┐") + wd(" ") + b("│"),
153
+ b(" │") + wd(" ") + b("│") + bd(" ════ ") + b("│") + wd(" ") + b("│"),
154
+ b(" └────┴──────┴────────┘"),
155
+ "",
156
+ t(" ██╗██╗ ██╗ ██████╗ "),
157
+ t(" ██║██║ ██║██╔═══██╗"),
158
+ t(" ██║███████║██║ ██║"),
159
+ t(" ██║██╔══██║██║▄▄ ██║"),
160
+ t(" ██║██║ ██║╚██████╔╝"),
161
+ t(" ╚═╝╚═╝ ╚═╝ ╚══▀▀═╝"),
162
+ "",
163
+ dim(" Personal OS for AI Workers"),
164
+ dim(` v${VERSION}`),
165
+ "",
166
+ ];
167
+ for (const line of lines) {
168
+ console.log(line);
169
+ }
170
+ }
171
+ //# sourceMappingURL=art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"art.js","sourceRoot":"","sources":["../src/art.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts CHANGED
@@ -7,20 +7,20 @@
7
7
  * 1. POST github.com/login/device/code with our App's client_id
8
8
  * 2. Display user_code, open verification_uri in browser
9
9
  * 3. Poll github.com/login/oauth/access_token at the GitHub-specified interval
10
- * 4. On success: GET api.github.com/user → store { access_token, login, id, name, email }
10
+ * 4. On success: GET api.github.com/user → configure gh CLI with the token
11
11
  *
12
- * Token is stored at ~/.hq/credentials.json (mode 0600). Tokens are
13
- * GitHub App user-to-server tokens (ghu_…), so they ignore OAuth scopes
14
- * permissions are configured on the App settings page.
12
+ * After authentication, the token is handed to `gh auth login --with-token`
13
+ * so that subsequent sessions can use `gh` for all GitHub operations.
14
+ * No credentials are persisted to disk by create-hq itself.
15
15
  *
16
16
  * Token values are NEVER written to stdout or logs.
17
17
  */
18
18
  /** hq-team-sync GitHub App client ID (public — safe to commit). */
19
19
  export declare const HQ_GITHUB_APP_CLIENT_ID = "Iv23liSdkCBQYhrNcRmI";
20
20
  export declare const HQ_GITHUB_APP_SLUG = "hq-team-sync";
21
- /** Stored credentials for the authenticated GitHub user. */
21
+ /** Authenticated GitHub user info. The access_token is held in-memory only. */
22
22
  export interface GitHubAuth {
23
- /** ghu_ user-to-server token from GitHub App device flow. */
23
+ /** ghu_ user-to-server token from GitHub App device flow (in-memory only). */
24
24
  access_token: string;
25
25
  /** GitHub login (username). */
26
26
  login: string;
@@ -38,15 +38,21 @@ export interface GitHubAuth {
38
38
  * callers have migrated. New code should use GitHubAuth.
39
39
  */
40
40
  export type AuthToken = GitHubAuth;
41
- /** Save credentials to ~/.hq/credentials.json with 0600 perms. */
41
+ /**
42
+ * Save the GitHub auth to gh CLI. The token is handed to `gh auth login`
43
+ * so it's stored in the OS keychain, not on disk as a plain file.
44
+ */
42
45
  export declare function saveGitHubAuth(auth: GitHubAuth): void;
43
- /** Load credentials, or null if missing/invalid. */
46
+ /**
47
+ * Load GitHub auth from `gh` CLI. Returns null if gh is not installed
48
+ * or not authenticated. Fetches user profile from GitHub API via gh.
49
+ */
44
50
  export declare function loadGitHubAuth(): GitHubAuth | null;
45
- /** Remove stored credentials. */
51
+ /** Remove stored credentials by logging out of gh. */
46
52
  export declare function clearGitHubAuth(): void;
47
53
  /**
48
54
  * Quick liveness probe — does the stored token still work?
49
- * Calls api.github.com/user with the token; returns true on 200.
55
+ * Uses `gh auth status` which validates the token against GitHub.
50
56
  */
51
57
  export declare function isGitHubAuthValid(auth: GitHubAuth): Promise<boolean>;
52
58
  /** Open a URL in the user's default browser. Best-effort, never throws. */
@@ -54,6 +60,10 @@ export declare function openBrowser(url: string): void;
54
60
  /**
55
61
  * Run the GitHub App device authorization flow.
56
62
  *
63
+ * On success, the token is:
64
+ * 1. Returned in-memory as part of GitHubAuth (for the current session)
65
+ * 2. Configured in `gh` CLI for future sessions (via gh auth login --with-token)
66
+ *
57
67
  * Throws on:
58
68
  * - Network errors talking to github.com
59
69
  * - User-denied authorization (access_denied)
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAC9D,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAWjD,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC;AAkCnC,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAKrD;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CAelD;AAED,iCAAiC;AACjC,wBAAgB,eAAe,IAAI,IAAI,CAQtC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1E;AAID,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkB7C;AAQD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,UAAU,CAAC,CAyHjE;AAID;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,CAAC,CAAC,CAwBZ"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAC9D,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAUjD,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC;AA8EnC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAErD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CA+BlD;AAED,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,IAAI,CAUtC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB1E;AAID,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkB7C;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,UAAU,CAAC,CA0HjE;AAID;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,CAAC,CAAC,CAwBZ"}
package/dist/auth.js CHANGED
@@ -7,18 +7,17 @@
7
7
  * 1. POST github.com/login/device/code with our App's client_id
8
8
  * 2. Display user_code, open verification_uri in browser
9
9
  * 3. Poll github.com/login/oauth/access_token at the GitHub-specified interval
10
- * 4. On success: GET api.github.com/user → store { access_token, login, id, name, email }
10
+ * 4. On success: GET api.github.com/user → configure gh CLI with the token
11
11
  *
12
- * Token is stored at ~/.hq/credentials.json (mode 0600). Tokens are
13
- * GitHub App user-to-server tokens (ghu_…), so they ignore OAuth scopes
14
- * permissions are configured on the App settings page.
12
+ * After authentication, the token is handed to `gh auth login --with-token`
13
+ * so that subsequent sessions can use `gh` for all GitHub operations.
14
+ * No credentials are persisted to disk by create-hq itself.
15
15
  *
16
16
  * Token values are NEVER written to stdout or logs.
17
17
  */
18
- import * as fs from "fs";
19
18
  import * as path from "path";
20
19
  import * as os from "os";
21
- import { exec } from "child_process";
20
+ import { exec, execSync } from "child_process";
22
21
  import chalk from "chalk";
23
22
  // ─── Constants ──────────────────────────────────────────────────────────────
24
23
  /** hq-team-sync GitHub App client ID (public — safe to commit). */
@@ -28,67 +27,128 @@ const GITHUB_DEVICE_CODE_URL = "https://github.com/login/device/code";
28
27
  const GITHUB_TOKEN_URL = "https://github.com/login/oauth/access_token";
29
28
  const GITHUB_API_USER_URL = "https://api.github.com/user";
30
29
  const HQ_DIR = path.join(os.homedir(), ".hq");
31
- const CREDENTIALS_FILE = path.join(HQ_DIR, "credentials.json");
32
- // ─── Token store ────────────────────────────────────────────────────────────
33
- function ensureHqDir() {
34
- if (!fs.existsSync(HQ_DIR)) {
35
- fs.mkdirSync(HQ_DIR, { recursive: true, mode: 0o700 });
30
+ // ─── gh CLI helpers ────────────────────────────────────────────────────────
31
+ /** Check if `gh` CLI is installed. */
32
+ function isGhInstalled() {
33
+ try {
34
+ execSync("gh --version", { stdio: "ignore" });
35
+ return true;
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /** Check if `gh` is authenticated with any GitHub host. */
42
+ function isGhAuthenticated() {
43
+ try {
44
+ execSync("gh auth status", { stdio: "ignore" });
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ /**
52
+ * Configure `gh` CLI with a token and set up git credential helper.
53
+ * This makes the token available for all future `gh` and `git` operations.
54
+ */
55
+ function configureGhAuth(token) {
56
+ if (!isGhInstalled()) {
57
+ console.error(chalk.dim(" (gh CLI not found — install it from https://cli.github.com for team commands)"));
58
+ return;
59
+ }
60
+ try {
61
+ // Pipe token to gh auth login (stdin, non-interactive)
62
+ execSync("gh auth login --with-token", {
63
+ input: token,
64
+ stdio: ["pipe", "ignore", "ignore"],
65
+ });
66
+ // Configure git to use gh for HTTPS auth
67
+ execSync("gh auth setup-git", { stdio: "ignore" });
68
+ }
69
+ catch (err) {
70
+ console.error(chalk.dim(" (could not configure gh CLI — you can run `gh auth login` manually)"));
36
71
  }
37
72
  }
38
- /** Save credentials to ~/.hq/credentials.json with 0600 perms. */
73
+ /**
74
+ * Save the GitHub auth to gh CLI. The token is handed to `gh auth login`
75
+ * so it's stored in the OS keychain, not on disk as a plain file.
76
+ */
39
77
  export function saveGitHubAuth(auth) {
40
- ensureHqDir();
41
- fs.writeFileSync(CREDENTIALS_FILE, JSON.stringify(auth, null, 2), {
42
- mode: 0o600,
43
- });
78
+ configureGhAuth(auth.access_token);
44
79
  }
45
- /** Load credentials, or null if missing/invalid. */
80
+ /**
81
+ * Load GitHub auth from `gh` CLI. Returns null if gh is not installed
82
+ * or not authenticated. Fetches user profile from GitHub API via gh.
83
+ */
46
84
  export function loadGitHubAuth() {
85
+ if (!isGhInstalled() || !isGhAuthenticated())
86
+ return null;
47
87
  try {
48
- if (!fs.existsSync(CREDENTIALS_FILE))
49
- return null;
50
- const parsed = JSON.parse(fs.readFileSync(CREDENTIALS_FILE, "utf-8"));
51
- if (typeof parsed.access_token !== "string" ||
52
- typeof parsed.login !== "string" ||
53
- typeof parsed.id !== "number") {
88
+ // Get the token from gh
89
+ const token = execSync("gh auth token", {
90
+ encoding: "utf-8",
91
+ stdio: ["pipe", "pipe", "ignore"],
92
+ }).trim();
93
+ if (!token)
54
94
  return null;
55
- }
56
- return parsed;
95
+ // Get user profile via gh api
96
+ const userJson = execSync('gh api user --jq \'{"login":.login,"id":.id,"name":.name,"email":.email}\'', {
97
+ encoding: "utf-8",
98
+ stdio: ["pipe", "pipe", "ignore"],
99
+ }).trim();
100
+ const user = JSON.parse(userJson);
101
+ return {
102
+ access_token: token,
103
+ login: user.login,
104
+ id: user.id,
105
+ name: user.name,
106
+ email: user.email,
107
+ issued_at: new Date().toISOString(),
108
+ };
57
109
  }
58
110
  catch {
59
111
  return null;
60
112
  }
61
113
  }
62
- /** Remove stored credentials. */
114
+ /** Remove stored credentials by logging out of gh. */
63
115
  export function clearGitHubAuth() {
116
+ if (!isGhInstalled())
117
+ return;
64
118
  try {
65
- if (fs.existsSync(CREDENTIALS_FILE)) {
66
- fs.unlinkSync(CREDENTIALS_FILE);
67
- }
119
+ execSync("gh auth logout --hostname github.com", {
120
+ input: "Y\n",
121
+ stdio: ["pipe", "ignore", "ignore"],
122
+ });
68
123
  }
69
124
  catch {
70
- // ignore
125
+ // ignore — may already be logged out
71
126
  }
72
127
  }
73
128
  /**
74
129
  * Quick liveness probe — does the stored token still work?
75
- * Calls api.github.com/user with the token; returns true on 200.
130
+ * Uses `gh auth status` which validates the token against GitHub.
76
131
  */
77
132
  export async function isGitHubAuthValid(auth) {
78
- try {
79
- const res = await fetch(GITHUB_API_USER_URL, {
80
- headers: {
81
- Authorization: `token ${auth.access_token}`,
82
- Accept: "application/vnd.github+json",
83
- "User-Agent": "create-hq",
84
- },
85
- signal: AbortSignal.timeout(10_000),
86
- });
87
- return res.ok;
88
- }
89
- catch {
90
- return false;
133
+ // If we have a token in memory, verify it directly
134
+ if (auth.access_token) {
135
+ try {
136
+ const res = await fetch(GITHUB_API_USER_URL, {
137
+ headers: {
138
+ Authorization: `token ${auth.access_token}`,
139
+ Accept: "application/vnd.github+json",
140
+ "User-Agent": "create-hq",
141
+ },
142
+ signal: AbortSignal.timeout(10_000),
143
+ });
144
+ return res.ok;
145
+ }
146
+ catch {
147
+ return false;
148
+ }
91
149
  }
150
+ // Fall back to gh auth status
151
+ return isGhAuthenticated();
92
152
  }
93
153
  // ─── Browser open (cross-platform) ──────────────────────────────────────────
94
154
  /** Open a URL in the user's default browser. Best-effort, never throws. */
@@ -118,6 +178,10 @@ function sleep(ms) {
118
178
  /**
119
179
  * Run the GitHub App device authorization flow.
120
180
  *
181
+ * On success, the token is:
182
+ * 1. Returned in-memory as part of GitHubAuth (for the current session)
183
+ * 2. Configured in `gh` CLI for future sessions (via gh auth login --with-token)
184
+ *
121
185
  * Throws on:
122
186
  * - Network errors talking to github.com
123
187
  * - User-denied authorization (access_denied)
@@ -223,6 +287,7 @@ export async function startGitHubDeviceFlow() {
223
287
  email: user.email,
224
288
  issued_at: new Date().toISOString(),
225
289
  };
290
+ // Configure gh CLI with the token for future sessions
226
291
  saveGitHubAuth(auth);
227
292
  return auth;
228
293
  }
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Result type for cloud state detection.
3
+ */
4
+ export type CloudState = {
5
+ status: "has-files";
6
+ count: number;
7
+ } | {
8
+ status: "empty";
9
+ } | {
10
+ status: "error";
11
+ message: string;
12
+ } | {
13
+ status: "no-auth";
14
+ };
15
+ /**
16
+ * Pure function that checks cloud state without side effects.
17
+ * Takes dependencies as parameters for testability.
18
+ */
19
+ export declare function checkCloudState(deps: {
20
+ hasCredentials: () => boolean;
21
+ listRemoteFiles: () => Promise<{
22
+ key: string;
23
+ }[]>;
24
+ }): Promise<CloudState>;
25
+ export declare function checkAndSyncCloud(targetDir: string): Promise<void>;
26
+ //# sourceMappingURL=cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,cAAc,EAAE,MAAM,OAAO,CAAC;IAC9B,eAAe,EAAE,MAAM,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;CACnD,GAAG,OAAO,CAAC,UAAU,CAAC,CAetB;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FxE"}