@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.
- package/dist/bin/hq-auth-refresh.d.ts +13 -0
- package/dist/bin/hq-auth-refresh.d.ts.map +1 -0
- package/dist/bin/hq-auth-refresh.js +27 -0
- package/dist/bin/hq-auth-refresh.js.map +1 -0
- package/dist/commands/auth.d.ts +17 -13
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +83 -238
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/cloud.d.ts +3 -12
- package/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +55 -212
- package/dist/commands/cloud.js.map +1 -1
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +25 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +6 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +21 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pkg-install.d.ts +17 -0
- package/dist/commands/pkg-install.d.ts.map +1 -0
- package/dist/commands/pkg-install.js +144 -0
- package/dist/commands/pkg-install.js.map +1 -0
- package/dist/commands/pkg-list.d.ts +8 -0
- package/dist/commands/pkg-list.d.ts.map +1 -0
- package/dist/commands/pkg-list.js +70 -0
- package/dist/commands/pkg-list.js.map +1 -0
- package/dist/commands/pkg-remove.d.ts +10 -0
- package/dist/commands/pkg-remove.d.ts.map +1 -0
- package/dist/commands/pkg-remove.js +53 -0
- package/dist/commands/pkg-remove.js.map +1 -0
- package/dist/commands/pkg-update.d.ts +9 -0
- package/dist/commands/pkg-update.d.ts.map +1 -0
- package/dist/commands/pkg-update.js +124 -0
- package/dist/commands/pkg-update.js.map +1 -0
- package/dist/commands/team-sync.d.ts +14 -0
- package/dist/commands/team-sync.d.ts.map +1 -0
- package/dist/commands/team-sync.js +422 -0
- package/dist/commands/team-sync.js.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +29 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +33 -13
- package/dist/index.js.map +1 -1
- package/dist/strategies/merge.js +2 -2
- package/dist/strategies/merge.js.map +1 -1
- package/dist/utils/auth.d.ts +27 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +155 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/cognito-session.d.ts +35 -0
- package/dist/utils/cognito-session.d.ts.map +1 -0
- package/dist/utils/cognito-session.js +72 -0
- package/dist/utils/cognito-session.js.map +1 -0
- package/dist/utils/git.js +1 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/hq-root.d.ts +10 -0
- package/dist/utils/hq-root.d.ts.map +1 -0
- package/dist/utils/hq-root.js +22 -0
- package/dist/utils/hq-root.js.map +1 -0
- package/dist/utils/integrity.d.ts +14 -0
- package/dist/utils/integrity.d.ts.map +1 -0
- package/dist/utils/integrity.js +40 -0
- package/dist/utils/integrity.js.map +1 -0
- package/dist/utils/manifest.d.ts.map +1 -1
- package/dist/utils/manifest.js +2 -5
- package/dist/utils/manifest.js.map +1 -1
- package/dist/utils/registry-client.d.ts +65 -0
- package/dist/utils/registry-client.d.ts.map +1 -0
- package/dist/utils/registry-client.js +102 -0
- package/dist/utils/registry-client.js.map +1 -0
- package/dist/utils/registry.d.ts +33 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +58 -0
- package/dist/utils/registry.js.map +1 -0
- package/dist/utils/token-store.d.ts +28 -0
- package/dist/utils/token-store.d.ts.map +1 -0
- package/dist/utils/token-store.js +68 -0
- package/dist/utils/token-store.js.map +1 -0
- package/package.json +35 -45
- package/src/bin/hq-auth-refresh.ts +32 -0
- package/src/commands/add.ts +74 -0
- package/src/commands/auth.ts +153 -0
- package/src/commands/cloud.ts +125 -0
- package/src/commands/list.ts +66 -0
- package/src/commands/login.ts +29 -0
- package/src/commands/logout.ts +25 -0
- package/src/commands/pkg-install.ts +181 -0
- package/src/commands/pkg-list.ts +98 -0
- package/src/commands/pkg-remove.ts +71 -0
- package/src/commands/pkg-update.ts +189 -0
- package/src/commands/sync.ts +149 -0
- package/src/commands/team-sync.ts +629 -0
- package/src/commands/update.ts +71 -0
- package/src/commands/whoami.ts +38 -0
- package/src/index.ts +72 -0
- package/src/schemas/hq-package.schema.json +137 -0
- package/src/strategies/link.ts +62 -0
- package/src/strategies/merge.ts +142 -0
- package/src/types.ts +47 -0
- package/src/utils/auth.ts +193 -0
- package/src/utils/cognito-session.ts +94 -0
- package/src/utils/git.ts +74 -0
- package/src/utils/hq-root.ts +27 -0
- package/src/utils/integrity.ts +54 -0
- package/src/utils/manifest.ts +109 -0
- package/src/utils/registry-client.ts +204 -0
- package/src/utils/registry.ts +89 -0
- package/src/utils/token-store.ts +83 -0
- package/tsconfig.json +8 -0
- package/dist/commands/cloud-setup.d.ts +0 -19
- package/dist/commands/cloud-setup.d.ts.map +0 -1
- package/dist/commands/cloud-setup.js +0 -206
- package/dist/commands/cloud-setup.js.map +0 -1
- package/dist/commands/initial-upload.d.ts +0 -67
- package/dist/commands/initial-upload.d.ts.map +0 -1
- package/dist/commands/initial-upload.js +0 -205
- package/dist/commands/initial-upload.js.map +0 -1
- package/dist/sync-worker.d.ts +0 -11
- package/dist/sync-worker.d.ts.map +0 -1
- package/dist/sync-worker.js +0 -77
- package/dist/sync-worker.js.map +0 -1
- package/dist/utils/api-client.d.ts +0 -26
- package/dist/utils/api-client.d.ts.map +0 -1
- package/dist/utils/api-client.js +0 -87
- package/dist/utils/api-client.js.map +0 -1
- package/dist/utils/credentials.d.ts +0 -44
- package/dist/utils/credentials.d.ts.map +0 -1
- package/dist/utils/credentials.js +0 -101
- package/dist/utils/credentials.js.map +0 -1
- package/dist/utils/sync.d.ts +0 -125
- package/dist/utils/sync.d.ts.map +0 -1
- package/dist/utils/sync.js +0 -291
- package/dist/utils/sync.js.map +0 -1
package/dist/commands/cloud.js
CHANGED
|
@@ -1,261 +1,104 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* hq sync commands — cloud sync management
|
|
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 {
|
|
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(
|
|
51
|
-
.description(
|
|
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
|
-
|
|
57
|
-
|
|
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(
|
|
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(
|
|
91
|
-
.description(
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
console.log(
|
|
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(
|
|
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(
|
|
131
|
-
.description(
|
|
132
|
-
.
|
|
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
|
|
138
|
-
|
|
139
|
-
|
|
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(
|
|
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(
|
|
181
|
-
.description(
|
|
52
|
+
.command("status")
|
|
53
|
+
.description("Show sync status")
|
|
182
54
|
.action(async () => {
|
|
183
55
|
try {
|
|
184
56
|
const hqRoot = findHqRoot();
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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(
|
|
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(
|
|
215
|
-
.description(
|
|
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
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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(
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|