@indigoai-us/hq-cli 5.3.1 → 5.4.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 (141) 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/onboard.d.ts +23 -0
  22. package/dist/commands/onboard.d.ts.map +1 -0
  23. package/dist/commands/onboard.js +142 -0
  24. package/dist/commands/onboard.js.map +1 -0
  25. package/dist/commands/pkg-install.d.ts +17 -0
  26. package/dist/commands/pkg-install.d.ts.map +1 -0
  27. package/dist/commands/pkg-install.js +144 -0
  28. package/dist/commands/pkg-install.js.map +1 -0
  29. package/dist/commands/pkg-list.d.ts +8 -0
  30. package/dist/commands/pkg-list.d.ts.map +1 -0
  31. package/dist/commands/pkg-list.js +70 -0
  32. package/dist/commands/pkg-list.js.map +1 -0
  33. package/dist/commands/pkg-remove.d.ts +10 -0
  34. package/dist/commands/pkg-remove.d.ts.map +1 -0
  35. package/dist/commands/pkg-remove.js +53 -0
  36. package/dist/commands/pkg-remove.js.map +1 -0
  37. package/dist/commands/pkg-update.d.ts +9 -0
  38. package/dist/commands/pkg-update.d.ts.map +1 -0
  39. package/dist/commands/pkg-update.js +124 -0
  40. package/dist/commands/pkg-update.js.map +1 -0
  41. package/dist/commands/team-sync.d.ts +14 -0
  42. package/dist/commands/team-sync.d.ts.map +1 -0
  43. package/dist/commands/team-sync.js +422 -0
  44. package/dist/commands/team-sync.js.map +1 -0
  45. package/dist/commands/whoami.d.ts +6 -0
  46. package/dist/commands/whoami.d.ts.map +1 -0
  47. package/dist/commands/whoami.js +29 -0
  48. package/dist/commands/whoami.js.map +1 -0
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.js +33 -13
  51. package/dist/index.js.map +1 -1
  52. package/dist/strategies/merge.js +2 -2
  53. package/dist/strategies/merge.js.map +1 -1
  54. package/dist/utils/auth.d.ts +27 -0
  55. package/dist/utils/auth.d.ts.map +1 -0
  56. package/dist/utils/auth.js +155 -0
  57. package/dist/utils/auth.js.map +1 -0
  58. package/dist/utils/cognito-session.d.ts +35 -0
  59. package/dist/utils/cognito-session.d.ts.map +1 -0
  60. package/dist/utils/cognito-session.js +72 -0
  61. package/dist/utils/cognito-session.js.map +1 -0
  62. package/dist/utils/git.js +1 -1
  63. package/dist/utils/git.js.map +1 -1
  64. package/dist/utils/hq-root.d.ts +10 -0
  65. package/dist/utils/hq-root.d.ts.map +1 -0
  66. package/dist/utils/hq-root.js +22 -0
  67. package/dist/utils/hq-root.js.map +1 -0
  68. package/dist/utils/integrity.d.ts +14 -0
  69. package/dist/utils/integrity.d.ts.map +1 -0
  70. package/dist/utils/integrity.js +40 -0
  71. package/dist/utils/integrity.js.map +1 -0
  72. package/dist/utils/manifest.d.ts.map +1 -1
  73. package/dist/utils/manifest.js +2 -5
  74. package/dist/utils/manifest.js.map +1 -1
  75. package/dist/utils/registry-client.d.ts +65 -0
  76. package/dist/utils/registry-client.d.ts.map +1 -0
  77. package/dist/utils/registry-client.js +102 -0
  78. package/dist/utils/registry-client.js.map +1 -0
  79. package/dist/utils/registry.d.ts +33 -0
  80. package/dist/utils/registry.d.ts.map +1 -0
  81. package/dist/utils/registry.js +58 -0
  82. package/dist/utils/registry.js.map +1 -0
  83. package/dist/utils/token-store.d.ts +28 -0
  84. package/dist/utils/token-store.d.ts.map +1 -0
  85. package/dist/utils/token-store.js +68 -0
  86. package/dist/utils/token-store.js.map +1 -0
  87. package/package.json +35 -45
  88. package/src/bin/hq-auth-refresh.ts +32 -0
  89. package/src/commands/add.ts +74 -0
  90. package/src/commands/auth.ts +153 -0
  91. package/src/commands/cloud.ts +125 -0
  92. package/src/commands/list.ts +66 -0
  93. package/src/commands/login.ts +29 -0
  94. package/src/commands/logout.ts +25 -0
  95. package/src/commands/pkg-install.ts +181 -0
  96. package/src/commands/pkg-list.ts +98 -0
  97. package/src/commands/pkg-remove.ts +71 -0
  98. package/src/commands/pkg-update.ts +189 -0
  99. package/src/commands/sync.ts +149 -0
  100. package/src/commands/team-sync.ts +629 -0
  101. package/src/commands/update.ts +71 -0
  102. package/src/commands/whoami.ts +38 -0
  103. package/src/index.ts +72 -0
  104. package/src/schemas/hq-package.schema.json +137 -0
  105. package/src/strategies/link.ts +62 -0
  106. package/src/strategies/merge.ts +142 -0
  107. package/src/types.ts +47 -0
  108. package/src/utils/auth.ts +193 -0
  109. package/src/utils/cognito-session.ts +94 -0
  110. package/src/utils/git.ts +74 -0
  111. package/src/utils/hq-root.ts +27 -0
  112. package/src/utils/integrity.ts +54 -0
  113. package/src/utils/manifest.ts +109 -0
  114. package/src/utils/registry-client.ts +204 -0
  115. package/src/utils/registry.ts +89 -0
  116. package/src/utils/token-store.ts +83 -0
  117. package/tsconfig.json +8 -0
  118. package/dist/commands/cloud-setup.d.ts +0 -19
  119. package/dist/commands/cloud-setup.d.ts.map +0 -1
  120. package/dist/commands/cloud-setup.js +0 -206
  121. package/dist/commands/cloud-setup.js.map +0 -1
  122. package/dist/commands/initial-upload.d.ts +0 -67
  123. package/dist/commands/initial-upload.d.ts.map +0 -1
  124. package/dist/commands/initial-upload.js +0 -205
  125. package/dist/commands/initial-upload.js.map +0 -1
  126. package/dist/sync-worker.d.ts +0 -11
  127. package/dist/sync-worker.d.ts.map +0 -1
  128. package/dist/sync-worker.js +0 -77
  129. package/dist/sync-worker.js.map +0 -1
  130. package/dist/utils/api-client.d.ts +0 -26
  131. package/dist/utils/api-client.d.ts.map +0 -1
  132. package/dist/utils/api-client.js +0 -87
  133. package/dist/utils/api-client.js.map +0 -1
  134. package/dist/utils/credentials.d.ts +0 -44
  135. package/dist/utils/credentials.d.ts.map +0 -1
  136. package/dist/utils/credentials.js +0 -101
  137. package/dist/utils/credentials.js.map +0 -1
  138. package/dist/utils/sync.d.ts +0 -125
  139. package/dist/utils/sync.d.ts.map +0 -1
  140. package/dist/utils/sync.js +0 -291
  141. 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,23 @@
1
+ /**
2
+ * `hq onboard` — bootstrap an HQ vault: sign in to Cognito + provision
3
+ * the company entity, S3 bucket, KMS key, owner membership, and STS-vended
4
+ * credentials in one flow.
5
+ *
6
+ * This is the "the entire flow" entry point that VLT-9 was building toward:
7
+ * a real user can install hq-cli and run `hq onboard create-company` once
8
+ * to land in a fully provisioned vault, then use `hq sync push|pull` to
9
+ * round-trip files against S3.
10
+ *
11
+ * Subcommands:
12
+ * hq onboard create-company — provision a brand new company
13
+ * hq onboard join — accept an invite from another user
14
+ * hq onboard resume — resume a partially-completed flow from checkpoint
15
+ * hq onboard dry-run — show what create-company would do, without doing it
16
+ *
17
+ * Auth: we cache the Cognito access + refresh tokens at ~/.hq/cognito-tokens.json.
18
+ * If the cached token is missing or expired beyond the refresh window, the
19
+ * browser-OAuth flow opens automatically.
20
+ */
21
+ import { Command } from "commander";
22
+ export declare function registerOnboardCommand(program: Command): void;
23
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6J7D"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * `hq onboard` — bootstrap an HQ vault: sign in to Cognito + provision
3
+ * the company entity, S3 bucket, KMS key, owner membership, and STS-vended
4
+ * credentials in one flow.
5
+ *
6
+ * This is the "the entire flow" entry point that VLT-9 was building toward:
7
+ * a real user can install hq-cli and run `hq onboard create-company` once
8
+ * to land in a fully provisioned vault, then use `hq sync push|pull` to
9
+ * round-trip files against S3.
10
+ *
11
+ * Subcommands:
12
+ * hq onboard create-company — provision a brand new company
13
+ * hq onboard join — accept an invite from another user
14
+ * hq onboard resume — resume a partially-completed flow from checkpoint
15
+ * hq onboard dry-run — show what create-company would do, without doing it
16
+ *
17
+ * Auth: we cache the Cognito access + refresh tokens at ~/.hq/cognito-tokens.json.
18
+ * If the cached token is missing or expired beyond the refresh window, the
19
+ * browser-OAuth flow opens automatically.
20
+ */
21
+ import chalk from "chalk";
22
+ import { runOnboardCli } from "@indigoai-us/hq-onboarding";
23
+ import { DEFAULT_HQ_ROOT, ensureCognitoToken, buildVaultConfig, } from "../utils/cognito-session.js";
24
+ // ---------------------------------------------------------------------------
25
+ // Command registration
26
+ // ---------------------------------------------------------------------------
27
+ export function registerOnboardCommand(program) {
28
+ const onboard = program
29
+ .command("onboard")
30
+ .description("Provision an HQ vault: sign in, create company, S3 bucket, STS, sync");
31
+ onboard
32
+ .command("create-company")
33
+ .description("Sign in and provision a brand new HQ vault for a company")
34
+ .requiredOption("--slug <slug>", "Company slug (used as bucket name suffix)")
35
+ .requiredOption("--name <name>", "Company display name")
36
+ .requiredOption("--email <email>", "Your email (must match Cognito sign-in)")
37
+ .requiredOption("--person-name <name>", "Your display name")
38
+ .option("--hq-root <path>", `Local HQ tree root (default: ${DEFAULT_HQ_ROOT})`, DEFAULT_HQ_ROOT)
39
+ .action(async (options) => {
40
+ try {
41
+ console.log(chalk.bold(`\nHQ Onboard — Create Company`));
42
+ console.log(` Company: ${options.name} (${options.slug})`);
43
+ console.log(` Person: ${options.personName} <${options.email}>`);
44
+ console.log(` HQ root: ${options.hqRoot}\n`);
45
+ const accessToken = await ensureCognitoToken();
46
+ const result = await runOnboardCli({
47
+ mode: "create-company",
48
+ personName: options.personName,
49
+ personEmail: options.email,
50
+ companyName: options.name,
51
+ companySlug: options.slug,
52
+ vaultConfig: buildVaultConfig(accessToken),
53
+ hqRoot: options.hqRoot,
54
+ });
55
+ if (!result.success) {
56
+ console.error(chalk.red(`\n✗ Onboarding failed: ${result.error}`));
57
+ process.exit(1);
58
+ }
59
+ }
60
+ catch (err) {
61
+ console.error(chalk.red("\n✗ Error:"), err instanceof Error ? err.message : String(err));
62
+ process.exit(1);
63
+ }
64
+ });
65
+ onboard
66
+ .command("join")
67
+ .description("Accept an invite and join an existing company")
68
+ .requiredOption("--invite-token <token>", "Magic link token from your invite email")
69
+ .requiredOption("--email <email>", "Your email (must match Cognito sign-in)")
70
+ .requiredOption("--person-name <name>", "Your display name")
71
+ .option("--hq-root <path>", `Local HQ tree root (default: ${DEFAULT_HQ_ROOT})`, DEFAULT_HQ_ROOT)
72
+ .action(async (options) => {
73
+ try {
74
+ console.log(chalk.bold(`\nHQ Onboard — Join Company`));
75
+ console.log(` Person: ${options.personName} <${options.email}>`);
76
+ console.log(` HQ root: ${options.hqRoot}\n`);
77
+ const accessToken = await ensureCognitoToken();
78
+ const result = await runOnboardCli({
79
+ mode: "join-company",
80
+ personName: options.personName,
81
+ personEmail: options.email,
82
+ inviteToken: options.inviteToken,
83
+ vaultConfig: buildVaultConfig(accessToken),
84
+ hqRoot: options.hqRoot,
85
+ });
86
+ if (!result.success) {
87
+ console.error(chalk.red(`\n✗ Join failed: ${result.error}`));
88
+ process.exit(1);
89
+ }
90
+ }
91
+ catch (err) {
92
+ console.error(chalk.red("\n✗ Error:"), err instanceof Error ? err.message : String(err));
93
+ process.exit(1);
94
+ }
95
+ });
96
+ onboard
97
+ .command("resume")
98
+ .description("Resume a partially-completed onboarding flow from local checkpoint")
99
+ .option("--hq-root <path>", `Local HQ tree root (default: ${DEFAULT_HQ_ROOT})`, DEFAULT_HQ_ROOT)
100
+ .action(async (options) => {
101
+ try {
102
+ const accessToken = await ensureCognitoToken();
103
+ const result = await runOnboardCli({
104
+ mode: "resume",
105
+ vaultConfig: buildVaultConfig(accessToken),
106
+ hqRoot: options.hqRoot,
107
+ });
108
+ if (!result.success) {
109
+ console.error(chalk.red(`\n✗ Resume failed: ${result.error}`));
110
+ process.exit(1);
111
+ }
112
+ }
113
+ catch (err) {
114
+ console.error(chalk.red("\n✗ Error:"), err instanceof Error ? err.message : String(err));
115
+ process.exit(1);
116
+ }
117
+ });
118
+ onboard
119
+ .command("dry-run")
120
+ .description("Show what create-company would do, without provisioning anything")
121
+ .option("--hq-root <path>", `Local HQ tree root (default: ${DEFAULT_HQ_ROOT})`, DEFAULT_HQ_ROOT)
122
+ .action(async (options) => {
123
+ try {
124
+ // No auth needed for dry-run — runOnboardCli handles this branch
125
+ // without touching the vault-service.
126
+ const result = await runOnboardCli({
127
+ mode: "dry-run",
128
+ vaultConfig: buildVaultConfig("dry-run-no-token"),
129
+ hqRoot: options.hqRoot,
130
+ });
131
+ if (!result.success) {
132
+ console.error(chalk.red(`\n✗ Dry-run failed: ${result.error}`));
133
+ process.exit(1);
134
+ }
135
+ }
136
+ catch (err) {
137
+ console.error(chalk.red("\n✗ Error:"), err instanceof Error ? err.message : String(err));
138
+ process.exit(1);
139
+ }
140
+ });
141
+ }
142
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"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"}
@@ -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"}