@indigoai-us/hq-cli 5.3.1 → 5.5.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 (137) hide show
  1. package/dist/bin/hq-auth-refresh.d.ts +13 -0
  2. package/dist/bin/hq-auth-refresh.d.ts.map +1 -0
  3. package/dist/bin/hq-auth-refresh.js +27 -0
  4. package/dist/bin/hq-auth-refresh.js.map +1 -0
  5. package/dist/commands/auth.d.ts +17 -13
  6. package/dist/commands/auth.d.ts.map +1 -1
  7. package/dist/commands/auth.js +83 -238
  8. package/dist/commands/auth.js.map +1 -1
  9. package/dist/commands/cloud.d.ts +3 -12
  10. package/dist/commands/cloud.d.ts.map +1 -1
  11. package/dist/commands/cloud.js +55 -212
  12. package/dist/commands/cloud.js.map +1 -1
  13. package/dist/commands/login.d.ts +6 -0
  14. package/dist/commands/login.d.ts.map +1 -0
  15. package/dist/commands/login.js +25 -0
  16. package/dist/commands/login.js.map +1 -0
  17. package/dist/commands/logout.d.ts +6 -0
  18. package/dist/commands/logout.d.ts.map +1 -0
  19. package/dist/commands/logout.js +21 -0
  20. package/dist/commands/logout.js.map +1 -0
  21. package/dist/commands/pkg-install.d.ts +17 -0
  22. package/dist/commands/pkg-install.d.ts.map +1 -0
  23. package/dist/commands/pkg-install.js +144 -0
  24. package/dist/commands/pkg-install.js.map +1 -0
  25. package/dist/commands/pkg-list.d.ts +8 -0
  26. package/dist/commands/pkg-list.d.ts.map +1 -0
  27. package/dist/commands/pkg-list.js +70 -0
  28. package/dist/commands/pkg-list.js.map +1 -0
  29. package/dist/commands/pkg-remove.d.ts +10 -0
  30. package/dist/commands/pkg-remove.d.ts.map +1 -0
  31. package/dist/commands/pkg-remove.js +53 -0
  32. package/dist/commands/pkg-remove.js.map +1 -0
  33. package/dist/commands/pkg-update.d.ts +9 -0
  34. package/dist/commands/pkg-update.d.ts.map +1 -0
  35. package/dist/commands/pkg-update.js +124 -0
  36. package/dist/commands/pkg-update.js.map +1 -0
  37. package/dist/commands/team-sync.d.ts +14 -0
  38. package/dist/commands/team-sync.d.ts.map +1 -0
  39. package/dist/commands/team-sync.js +422 -0
  40. package/dist/commands/team-sync.js.map +1 -0
  41. package/dist/commands/whoami.d.ts +6 -0
  42. package/dist/commands/whoami.d.ts.map +1 -0
  43. package/dist/commands/whoami.js +29 -0
  44. package/dist/commands/whoami.js.map +1 -0
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.js +33 -13
  47. package/dist/index.js.map +1 -1
  48. package/dist/strategies/merge.js +2 -2
  49. package/dist/strategies/merge.js.map +1 -1
  50. package/dist/utils/auth.d.ts +27 -0
  51. package/dist/utils/auth.d.ts.map +1 -0
  52. package/dist/utils/auth.js +155 -0
  53. package/dist/utils/auth.js.map +1 -0
  54. package/dist/utils/cognito-session.d.ts +35 -0
  55. package/dist/utils/cognito-session.d.ts.map +1 -0
  56. package/dist/utils/cognito-session.js +72 -0
  57. package/dist/utils/cognito-session.js.map +1 -0
  58. package/dist/utils/git.js +1 -1
  59. package/dist/utils/git.js.map +1 -1
  60. package/dist/utils/hq-root.d.ts +10 -0
  61. package/dist/utils/hq-root.d.ts.map +1 -0
  62. package/dist/utils/hq-root.js +22 -0
  63. package/dist/utils/hq-root.js.map +1 -0
  64. package/dist/utils/integrity.d.ts +14 -0
  65. package/dist/utils/integrity.d.ts.map +1 -0
  66. package/dist/utils/integrity.js +40 -0
  67. package/dist/utils/integrity.js.map +1 -0
  68. package/dist/utils/manifest.d.ts.map +1 -1
  69. package/dist/utils/manifest.js +2 -5
  70. package/dist/utils/manifest.js.map +1 -1
  71. package/dist/utils/registry-client.d.ts +65 -0
  72. package/dist/utils/registry-client.d.ts.map +1 -0
  73. package/dist/utils/registry-client.js +102 -0
  74. package/dist/utils/registry-client.js.map +1 -0
  75. package/dist/utils/registry.d.ts +33 -0
  76. package/dist/utils/registry.d.ts.map +1 -0
  77. package/dist/utils/registry.js +58 -0
  78. package/dist/utils/registry.js.map +1 -0
  79. package/dist/utils/token-store.d.ts +28 -0
  80. package/dist/utils/token-store.d.ts.map +1 -0
  81. package/dist/utils/token-store.js +68 -0
  82. package/dist/utils/token-store.js.map +1 -0
  83. package/package.json +35 -45
  84. package/src/bin/hq-auth-refresh.ts +32 -0
  85. package/src/commands/add.ts +74 -0
  86. package/src/commands/auth.ts +153 -0
  87. package/src/commands/cloud.ts +125 -0
  88. package/src/commands/list.ts +66 -0
  89. package/src/commands/login.ts +29 -0
  90. package/src/commands/logout.ts +25 -0
  91. package/src/commands/pkg-install.ts +181 -0
  92. package/src/commands/pkg-list.ts +98 -0
  93. package/src/commands/pkg-remove.ts +71 -0
  94. package/src/commands/pkg-update.ts +189 -0
  95. package/src/commands/sync.ts +149 -0
  96. package/src/commands/team-sync.ts +629 -0
  97. package/src/commands/update.ts +71 -0
  98. package/src/commands/whoami.ts +38 -0
  99. package/src/index.ts +72 -0
  100. package/src/schemas/hq-package.schema.json +137 -0
  101. package/src/strategies/link.ts +62 -0
  102. package/src/strategies/merge.ts +142 -0
  103. package/src/types.ts +47 -0
  104. package/src/utils/auth.ts +193 -0
  105. package/src/utils/cognito-session.ts +94 -0
  106. package/src/utils/git.ts +74 -0
  107. package/src/utils/hq-root.ts +27 -0
  108. package/src/utils/integrity.ts +54 -0
  109. package/src/utils/manifest.ts +109 -0
  110. package/src/utils/registry-client.ts +204 -0
  111. package/src/utils/registry.ts +89 -0
  112. package/src/utils/token-store.ts +83 -0
  113. package/tsconfig.json +8 -0
  114. package/dist/commands/cloud-setup.d.ts +0 -19
  115. package/dist/commands/cloud-setup.d.ts.map +0 -1
  116. package/dist/commands/cloud-setup.js +0 -206
  117. package/dist/commands/cloud-setup.js.map +0 -1
  118. package/dist/commands/initial-upload.d.ts +0 -67
  119. package/dist/commands/initial-upload.d.ts.map +0 -1
  120. package/dist/commands/initial-upload.js +0 -205
  121. package/dist/commands/initial-upload.js.map +0 -1
  122. package/dist/sync-worker.d.ts +0 -11
  123. package/dist/sync-worker.d.ts.map +0 -1
  124. package/dist/sync-worker.js +0 -77
  125. package/dist/sync-worker.js.map +0 -1
  126. package/dist/utils/api-client.d.ts +0 -26
  127. package/dist/utils/api-client.d.ts.map +0 -1
  128. package/dist/utils/api-client.js +0 -87
  129. package/dist/utils/api-client.js.map +0 -1
  130. package/dist/utils/credentials.d.ts +0 -44
  131. package/dist/utils/credentials.d.ts.map +0 -1
  132. package/dist/utils/credentials.js +0 -101
  133. package/dist/utils/credentials.js.map +0 -1
  134. package/dist/utils/sync.d.ts +0 -125
  135. package/dist/utils/sync.d.ts.map +0 -1
  136. package/dist/utils/sync.js +0 -291
  137. package/dist/utils/sync.js.map +0 -1
@@ -1,261 +1,104 @@
1
1
  /**
2
- * hq sync commands — cloud sync management via API proxy
3
- *
4
- * All sync operations go through the hq-cloud API (authenticated with Clerk
5
- * tokens from US-002). No AWS credentials or direct S3 access needed.
6
- *
7
- * Commands:
8
- * hq sync push — Upload changed local files to cloud
9
- * hq sync pull — Download changed cloud files to local
10
- * hq sync start — Begin background auto-sync watcher
11
- * hq sync stop — Halt the background watcher
12
- * hq sync status — Show sync state, last sync time, file counts
2
+ * hq sync commands — cloud sync management
3
+ * Bridges hq-cli to @indigoai-us/hq-cloud
13
4
  */
14
- import { fork } from 'child_process';
15
- import * as path from 'path';
16
- import { fileURLToPath } from 'url';
17
- import chalk from 'chalk';
18
- import { findHqRoot } from '../utils/manifest.js';
19
- import { readCredentials, isExpired } from '../utils/credentials.js';
20
- import { pushChanges, pullChanges, computeLocalManifest, readSyncState, writeSyncState, getQuota, } from '../utils/sync.js';
21
- /**
22
- * Verify that the user is authenticated before running sync commands.
23
- * Throws if not logged in or token is expired.
24
- */
25
- function requireAuth() {
26
- const creds = readCredentials();
27
- if (!creds) {
28
- throw new Error('Not logged in. Run "hq auth login" first.');
29
- }
30
- if (isExpired(creds)) {
31
- throw new Error('Session expired. Run "hq auth login" to re-authenticate.');
32
- }
33
- }
34
- /**
35
- * Check if a background sync process is actually running (not just recorded).
36
- */
37
- function isProcessRunning(pid) {
38
- try {
39
- // Sending signal 0 checks if process exists without killing it
40
- process.kill(pid, 0);
41
- return true;
42
- }
43
- catch {
44
- return false;
45
- }
46
- }
5
+ import { findHqRoot } from "../utils/manifest.js";
47
6
  export function registerCloudCommands(program) {
48
- // ── hq sync push ────────────────────────────────────────────────────────
49
7
  program
50
- .command('push')
51
- .description('Upload changed local files to cloud via API proxy')
8
+ .command("init")
9
+ .description("Authenticate with IndigoAI and set up cloud sync")
52
10
  .action(async () => {
53
11
  try {
54
- requireAuth();
55
12
  const hqRoot = findHqRoot();
56
- console.log(chalk.blue('Computing local manifest...'));
57
- const manifest = computeLocalManifest(hqRoot);
58
- console.log(chalk.dim(` ${manifest.length} local files scanned`));
59
- console.log(chalk.blue('Checking for changes...'));
60
- const result = await pushChanges(hqRoot);
61
- if (result.uploaded === 0 && result.errors.length === 0) {
62
- console.log(chalk.green('Already up to date. No files to push.'));
63
- }
64
- else {
65
- console.log(chalk.green(`Pushed ${result.uploaded} file${result.uploaded !== 1 ? 's' : ''} to cloud.`));
66
- }
67
- if (result.errors.length > 0) {
68
- console.log(chalk.yellow(` ${result.errors.length} error${result.errors.length !== 1 ? 's' : ''}:`));
69
- for (const err of result.errors.slice(0, 5)) {
70
- console.log(chalk.red(` - ${err}`));
71
- }
72
- if (result.errors.length > 5) {
73
- console.log(chalk.dim(` ... and ${result.errors.length - 5} more`));
74
- }
75
- }
76
- // Update sync state
77
- const state = readSyncState(hqRoot);
78
- state.lastSync = new Date().toISOString();
79
- state.fileCount = manifest.length;
80
- state.errors = result.errors;
81
- writeSyncState(hqRoot, state);
13
+ const { initSync } = await import("@indigoai-us/hq-cloud");
14
+ await initSync(hqRoot);
82
15
  }
83
16
  catch (error) {
84
- console.error(chalk.red('Push failed:'), error instanceof Error ? error.message : error);
17
+ console.error("Error:", error instanceof Error ? error.message : error);
85
18
  process.exit(1);
86
19
  }
87
20
  });
88
- // ── hq sync pull ────────────────────────────────────────────────────────
89
21
  program
90
- .command('pull')
91
- .description('Download changed cloud files to local via API proxy')
22
+ .command("start")
23
+ .description("Start the background sync daemon")
92
24
  .action(async () => {
93
25
  try {
94
- requireAuth();
95
26
  const hqRoot = findHqRoot();
96
- console.log(chalk.blue('Computing local manifest...'));
97
- const manifest = computeLocalManifest(hqRoot);
98
- console.log(chalk.dim(` ${manifest.length} local files scanned`));
99
- console.log(chalk.blue('Checking for changes...'));
100
- const result = await pullChanges(hqRoot);
101
- if (result.downloaded === 0 && result.errors.length === 0) {
102
- console.log(chalk.green('Already up to date. No files to pull.'));
103
- }
104
- else {
105
- console.log(chalk.green(`Pulled ${result.downloaded} file${result.downloaded !== 1 ? 's' : ''} from cloud.`));
106
- }
107
- if (result.errors.length > 0) {
108
- console.log(chalk.yellow(` ${result.errors.length} error${result.errors.length !== 1 ? 's' : ''}:`));
109
- for (const err of result.errors.slice(0, 5)) {
110
- console.log(chalk.red(` - ${err}`));
111
- }
112
- if (result.errors.length > 5) {
113
- console.log(chalk.dim(` ... and ${result.errors.length - 5} more`));
114
- }
115
- }
116
- // Update sync state
117
- const state = readSyncState(hqRoot);
118
- state.lastSync = new Date().toISOString();
119
- state.fileCount = manifest.length;
120
- state.errors = result.errors;
121
- writeSyncState(hqRoot, state);
27
+ const { startDaemon } = await import("@indigoai-us/hq-cloud");
28
+ await startDaemon(hqRoot);
29
+ console.log("Sync daemon started. Use 'hq sync status' to check.");
122
30
  }
123
31
  catch (error) {
124
- console.error(chalk.red('Pull failed:'), error instanceof Error ? error.message : error);
32
+ console.error("Error:", error instanceof Error ? error.message : error);
125
33
  process.exit(1);
126
34
  }
127
35
  });
128
- // ── hq sync start ──────────────────────────────────────────────────────
129
36
  program
130
- .command('start')
131
- .description('Start background auto-sync watcher (polls every 30s)')
132
- .option('-i, --interval <seconds>', 'Polling interval in seconds', '30')
133
- .action(async (opts) => {
37
+ .command("stop")
38
+ .description("Stop the sync daemon")
39
+ .action(async () => {
134
40
  try {
135
- requireAuth();
136
41
  const hqRoot = findHqRoot();
137
- const intervalSec = parseInt(opts.interval, 10);
138
- if (isNaN(intervalSec) || intervalSec < 5) {
139
- throw new Error('Interval must be at least 5 seconds.');
140
- }
141
- // Check if already running
142
- const existingState = readSyncState(hqRoot);
143
- if (existingState.running && existingState.pid && isProcessRunning(existingState.pid)) {
144
- console.log(chalk.yellow(`Sync watcher already running (PID ${existingState.pid}).`));
145
- console.log('Use "hq sync stop" to stop it first.');
146
- return;
147
- }
148
- // Fork a background worker process
149
- // The worker script path is relative to the compiled output
150
- const thisFile = fileURLToPath(import.meta.url);
151
- const workerScript = path.join(path.dirname(thisFile), '..', 'sync-worker.js');
152
- const child = fork(workerScript, [hqRoot, String(intervalSec * 1000)], {
153
- detached: true,
154
- stdio: 'ignore',
155
- });
156
- if (!child.pid) {
157
- throw new Error('Failed to start background sync process.');
158
- }
159
- // Allow the parent to exit without waiting for the child
160
- child.unref();
161
- // Record state
162
- const state = {
163
- running: true,
164
- pid: child.pid,
165
- lastSync: existingState.lastSync,
166
- fileCount: existingState.fileCount,
167
- errors: [],
168
- };
169
- writeSyncState(hqRoot, state);
170
- console.log(chalk.green(`Sync watcher started (PID ${child.pid}, interval: ${intervalSec}s).`));
171
- console.log('Use "hq sync status" to check, "hq sync stop" to halt.');
42
+ const { stopDaemon } = await import("@indigoai-us/hq-cloud");
43
+ await stopDaemon(hqRoot);
44
+ console.log("Sync daemon stopped.");
172
45
  }
173
46
  catch (error) {
174
- console.error(chalk.red('Start failed:'), error instanceof Error ? error.message : error);
47
+ console.error("Error:", error instanceof Error ? error.message : error);
175
48
  process.exit(1);
176
49
  }
177
50
  });
178
- // ── hq sync stop ───────────────────────────────────────────────────────
179
51
  program
180
- .command('stop')
181
- .description('Stop the background sync watcher')
52
+ .command("status")
53
+ .description("Show sync status")
182
54
  .action(async () => {
183
55
  try {
184
56
  const hqRoot = findHqRoot();
185
- const state = readSyncState(hqRoot);
186
- if (!state.running || !state.pid) {
187
- console.log(chalk.yellow('No sync watcher is running.'));
188
- return;
189
- }
190
- if (isProcessRunning(state.pid)) {
191
- try {
192
- process.kill(state.pid, 'SIGTERM');
193
- console.log(chalk.green(`Sync watcher stopped (PID ${state.pid}).`));
194
- }
195
- catch {
196
- console.log(chalk.yellow(`Could not stop process ${state.pid} — it may have already exited.`));
57
+ const { getStatus } = await import("@indigoai-us/hq-cloud");
58
+ const status = await getStatus(hqRoot);
59
+ console.log(` State: ${status.running ? "running" : "stopped"}`);
60
+ console.log(` Last sync: ${status.lastSync || "never"}`);
61
+ console.log(` Files: ${status.fileCount} tracked`);
62
+ console.log(` Bucket: ${status.bucket || "not configured"}`);
63
+ if (status.errors.length > 0) {
64
+ console.log(` Errors: ${status.errors.length}`);
65
+ for (const err of status.errors.slice(0, 5)) {
66
+ console.log(` - ${err}`);
197
67
  }
198
68
  }
199
- else {
200
- console.log(chalk.dim(`Sync watcher process ${state.pid} is no longer running. Cleaning up state.`));
201
- }
202
- // Update state
203
- state.running = false;
204
- state.pid = undefined;
205
- writeSyncState(hqRoot, state);
206
69
  }
207
70
  catch (error) {
208
- console.error(chalk.red('Stop failed:'), error instanceof Error ? error.message : error);
71
+ console.error("Error:", error instanceof Error ? error.message : error);
209
72
  process.exit(1);
210
73
  }
211
74
  });
212
- // ── hq sync status ─────────────────────────────────────────────────────
213
75
  program
214
- .command('status')
215
- .description('Show sync state, last sync time, and file counts')
76
+ .command("push")
77
+ .description("Force push all local changes to cloud")
216
78
  .action(async () => {
217
79
  try {
218
80
  const hqRoot = findHqRoot();
219
- const state = readSyncState(hqRoot);
220
- // Check if the recorded PID is actually alive
221
- const actuallyRunning = state.running && state.pid
222
- ? isProcessRunning(state.pid)
223
- : false;
224
- if (state.running && !actuallyRunning) {
225
- // Stale state — clean it up
226
- state.running = false;
227
- state.pid = undefined;
228
- writeSyncState(hqRoot, state);
229
- }
230
- console.log(chalk.bold('HQ Cloud Sync Status'));
231
- console.log();
232
- console.log(` Watcher: ${actuallyRunning ? chalk.green('running') + ` (PID ${state.pid})` : chalk.dim('stopped')}`);
233
- console.log(` Last sync: ${state.lastSync ? state.lastSync : chalk.dim('never')}`);
234
- console.log(` Files: ${state.fileCount != null ? `${state.fileCount} tracked` : chalk.dim('unknown')}`);
235
- console.log(` HQ root: ${hqRoot}`);
236
- if (state.errors.length > 0) {
237
- console.log(` Errors: ${chalk.yellow(String(state.errors.length))}`);
238
- for (const err of state.errors.slice(0, 5)) {
239
- console.log(chalk.red(` - ${err}`));
240
- }
241
- }
242
- // Try to fetch quota info (non-fatal if it fails)
243
- try {
244
- requireAuth();
245
- const quota = await getQuota();
246
- console.log();
247
- console.log(chalk.bold(' Storage Quota'));
248
- const usedMB = (quota.used / (1024 * 1024)).toFixed(1);
249
- const limitMB = (quota.limit / (1024 * 1024)).toFixed(1);
250
- const pctColor = quota.percentage > 90 ? chalk.red : quota.percentage > 70 ? chalk.yellow : chalk.green;
251
- console.log(` Used: ${usedMB} MB / ${limitMB} MB (${pctColor(quota.percentage + '%')})`);
252
- }
253
- catch {
254
- // Quota info is optional — skip silently
255
- }
81
+ const { pushAll } = await import("@indigoai-us/hq-cloud");
82
+ const result = await pushAll(hqRoot);
83
+ console.log(`Pushed ${result.filesUploaded} files to cloud.`);
84
+ }
85
+ catch (error) {
86
+ console.error("Error:", error instanceof Error ? error.message : error);
87
+ process.exit(1);
88
+ }
89
+ });
90
+ program
91
+ .command("pull")
92
+ .description("Force pull all cloud changes to local")
93
+ .action(async () => {
94
+ try {
95
+ const hqRoot = findHqRoot();
96
+ const { pullAll } = await import("@indigoai-us/hq-cloud");
97
+ const result = await pullAll(hqRoot);
98
+ console.log(`Pulled ${result.filesDownloaded} files from cloud.`);
256
99
  }
257
100
  catch (error) {
258
- console.error(chalk.red('Status check failed:'), error instanceof Error ? error.message : error);
101
+ console.error("Error:", error instanceof Error ? error.message : error);
259
102
  process.exit(1);
260
103
  }
261
104
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * hq login — opens browser for Clerk auth, caches token (US-004)
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function registerLoginCommand(program: Command): void;
6
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB3D"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * hq login — opens browser for Clerk auth, caches token (US-004)
3
+ */
4
+ import chalk from 'chalk';
5
+ import { startAuthFlow } from '../utils/auth.js';
6
+ import { saveToken } from '../utils/token-store.js';
7
+ import { getRegistryUrl } from '../utils/registry-client.js';
8
+ export function registerLoginCommand(program) {
9
+ program
10
+ .command('login')
11
+ .description('Authenticate with the HQ package registry')
12
+ .action(async () => {
13
+ try {
14
+ const registryUrl = getRegistryUrl();
15
+ const token = await startAuthFlow(registryUrl);
16
+ await saveToken(token);
17
+ console.log(chalk.green(`Logged in as ${token.email}`));
18
+ }
19
+ catch (error) {
20
+ console.error(chalk.red('Login failed:'), error instanceof Error ? error.message : 'Unknown error');
21
+ process.exit(1);
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAC1B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * hq logout — clears cached session (US-004)
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function registerLogoutCommand(program: Command): void;
6
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB5D"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * hq logout — clears cached session (US-004)
3
+ */
4
+ import chalk from 'chalk';
5
+ import { clearToken } from '../utils/token-store.js';
6
+ export function registerLogoutCommand(program) {
7
+ program
8
+ .command('logout')
9
+ .description('Log out and clear cached credentials')
10
+ .action(async () => {
11
+ try {
12
+ await clearToken();
13
+ console.log(chalk.green('Logged out successfully'));
14
+ }
15
+ catch (error) {
16
+ console.error(chalk.red('Logout failed:'), error instanceof Error ? error.message : 'Unknown error');
17
+ process.exit(1);
18
+ }
19
+ });
20
+ }
21
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * hq packages install <slug> — download, verify, and extract a package (US-005)
3
+ *
4
+ * Flow:
5
+ * 1. Check auth (prompt login if needed)
6
+ * 2. Check entitlement via API
7
+ * 3. Download tarball via presigned URL
8
+ * 4. Verify SHA256 hash
9
+ * 5. Verify RSA signature (if provided)
10
+ * 6. Extract to packages/installed/<slug>/
11
+ * 7. Validate extracted package.yaml slug matches
12
+ * 8. Update packages/registry.yaml
13
+ * 9. Print next-step message
14
+ */
15
+ import { Command } from 'commander';
16
+ export declare function registerPackageInstallCommand(parent: Command): void;
17
+ //# sourceMappingURL=pkg-install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkg-install.d.ts","sourceRoot":"","sources":["../../src/commands/pkg-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAgBnE"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * hq packages install <slug> — download, verify, and extract a package (US-005)
3
+ *
4
+ * Flow:
5
+ * 1. Check auth (prompt login if needed)
6
+ * 2. Check entitlement via API
7
+ * 3. Download tarball via presigned URL
8
+ * 4. Verify SHA256 hash
9
+ * 5. Verify RSA signature (if provided)
10
+ * 6. Extract to packages/installed/<slug>/
11
+ * 7. Validate extracted package.yaml slug matches
12
+ * 8. Update packages/registry.yaml
13
+ * 9. Print next-step message
14
+ */
15
+ import * as fs from 'fs';
16
+ import * as os from 'os';
17
+ import * as path from 'path';
18
+ import * as yaml from 'js-yaml';
19
+ import { execSync } from 'child_process';
20
+ import chalk from 'chalk';
21
+ import { getAuthToken } from '../utils/auth.js';
22
+ import { findHqRoot } from '../utils/hq-root.js';
23
+ import { getRegistryUrl, RegistryClient, } from '../utils/registry-client.js';
24
+ import { verifySha256, verifyRsaSignature } from '../utils/integrity.js';
25
+ import { addToRegistry } from '../utils/registry.js';
26
+ export function registerPackageInstallCommand(parent) {
27
+ parent
28
+ .command('install <slug>')
29
+ .description('Install a package from the registry')
30
+ .option('--company <co>', 'Scope the package to a specific company')
31
+ .action(async (slug, opts) => {
32
+ try {
33
+ await installPackage(slug, opts.company);
34
+ }
35
+ catch (error) {
36
+ console.error(chalk.red('Install failed:'), error instanceof Error ? error.message : 'Unknown error');
37
+ process.exit(1);
38
+ }
39
+ });
40
+ }
41
+ async function installPackage(slug, company) {
42
+ // 1. Auth
43
+ const token = await getAuthToken();
44
+ const registryUrl = getRegistryUrl();
45
+ const client = new RegistryClient(registryUrl, token.clerk_session_token);
46
+ // 2. Check entitlement
47
+ console.log(chalk.dim(`Checking entitlement for ${slug}...`));
48
+ const entitlement = await client.checkEntitlement(slug);
49
+ if (!entitlement.entitled) {
50
+ throw new Error(`You are not entitled to package "${slug}". Visit the registry to purchase or request access.`);
51
+ }
52
+ // 3. Get download URL
53
+ console.log(chalk.dim('Fetching download URL...'));
54
+ const download = await client.getDownloadUrl(slug);
55
+ // 4. Download to temp file
56
+ const tmpDir = os.tmpdir();
57
+ const tmpFile = path.resolve(tmpDir, `hq-pkg-${slug}-${Date.now()}.tar.gz`);
58
+ try {
59
+ console.log(chalk.dim('Downloading package...'));
60
+ const response = await fetch(download.url, {
61
+ signal: AbortSignal.timeout(120_000),
62
+ });
63
+ if (!response.ok) {
64
+ throw new Error(`Download failed (${response.status})`);
65
+ }
66
+ const buffer = Buffer.from(await response.arrayBuffer());
67
+ fs.writeFileSync(tmpFile, buffer);
68
+ // 5. Verify SHA256
69
+ console.log(chalk.dim('Verifying integrity...'));
70
+ const hashValid = await verifySha256(tmpFile, download.sha256);
71
+ if (!hashValid) {
72
+ throw new Error('SHA256 hash mismatch — the downloaded file may be corrupted or tampered with.');
73
+ }
74
+ // 6. Verify RSA signature (if provided)
75
+ if (download.signature) {
76
+ const sigValid = verifyRsaSignature(download.sha256, download.signature);
77
+ if (!sigValid) {
78
+ throw new Error('RSA signature verification failed — the package may have been tampered with or the public key is missing/invalid. Aborting install.');
79
+ }
80
+ }
81
+ // 7. Extract
82
+ const hqRoot = findHqRoot();
83
+ const installDir = path.resolve(hqRoot, 'packages', 'installed', slug);
84
+ // Clean existing installation
85
+ if (fs.existsSync(installDir)) {
86
+ fs.rmSync(installDir, { recursive: true, force: true });
87
+ }
88
+ fs.mkdirSync(installDir, { recursive: true });
89
+ execSync(`tar -xzf "${tmpFile}" -C "${installDir}"`, {
90
+ stdio: 'pipe',
91
+ });
92
+ // 8. Validate package.yaml slug
93
+ const packageYamlPath = path.resolve(installDir, 'package.yaml');
94
+ if (fs.existsSync(packageYamlPath)) {
95
+ const pkgContent = fs.readFileSync(packageYamlPath, 'utf-8');
96
+ const pkgMeta = yaml.load(pkgContent);
97
+ if (pkgMeta?.slug && pkgMeta.slug !== slug) {
98
+ // Mismatch — clean up and abort
99
+ fs.rmSync(installDir, { recursive: true, force: true });
100
+ throw new Error(`Package slug mismatch: expected "${slug}", got "${pkgMeta.slug}"`);
101
+ }
102
+ }
103
+ // 9. Get package info for registry entry
104
+ let version = 'unknown';
105
+ let name = slug;
106
+ try {
107
+ const pkgInfo = await client.getPackage(slug);
108
+ version = pkgInfo.package.latest_version;
109
+ name = pkgInfo.package.name;
110
+ }
111
+ catch {
112
+ // Best-effort — fall back to package.yaml if present
113
+ const packageYaml = path.resolve(installDir, 'package.yaml');
114
+ if (fs.existsSync(packageYaml)) {
115
+ const content = fs.readFileSync(packageYaml, 'utf-8');
116
+ const meta = yaml.load(content);
117
+ if (meta?.version)
118
+ version = meta.version;
119
+ if (meta?.name)
120
+ name = meta.name;
121
+ }
122
+ }
123
+ // 10. Update registry.yaml
124
+ const now = new Date().toISOString();
125
+ addToRegistry(hqRoot, {
126
+ name,
127
+ slug,
128
+ version,
129
+ source: registryUrl,
130
+ scope: company,
131
+ installed_at: now,
132
+ updated_at: now,
133
+ });
134
+ console.log(chalk.green(`\nInstalled ${slug}@${version} to packages/installed/${slug}/`));
135
+ console.log(chalk.cyan('Run /package-install ' + slug + ' in Claude to merge into your HQ.'));
136
+ }
137
+ finally {
138
+ // Clean up temp file — never leave partial downloads
139
+ if (fs.existsSync(tmpFile)) {
140
+ fs.unlinkSync(tmpFile);
141
+ }
142
+ }
143
+ }
144
+ //# sourceMappingURL=pkg-install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkg-install.js","sourceRoot":"","sources":["../../src/commands/pkg-install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * hq packages list — show installed packages and available entitlements (US-005)
3
+ *
4
+ * Graceful offline: if registry is unreachable, show cached data with a note.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function registerPackageListCommand(parent: Command): void;
8
+ //# sourceMappingURL=pkg-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkg-list.d.ts","sourceRoot":"","sources":["../../src/commands/pkg-list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAgBhE"}