hacklab 0.7.2 → 0.7.5
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/README.md +16 -1
- package/dist/api-client.d.ts +18 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +40 -0
- package/dist/api-client.js.map +1 -0
- package/dist/card.d.ts +66 -0
- package/dist/card.d.ts.map +1 -0
- package/dist/card.js +151 -0
- package/dist/card.js.map +1 -0
- package/dist/commands/chat.d.ts +21 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +109 -14
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/drop.d.ts +1 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +6 -1
- package/dist/commands/drop.js.map +1 -1
- package/dist/commands/essay.d.ts.map +1 -1
- package/dist/commands/essay.js +13 -0
- package/dist/commands/essay.js.map +1 -1
- package/dist/commands/hacker.d.ts +2 -0
- package/dist/commands/hacker.d.ts.map +1 -0
- package/dist/commands/hacker.js +104 -0
- package/dist/commands/hacker.js.map +1 -0
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +22 -0
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +13 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +2 -0
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/profile.d.ts +60 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +478 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/project.d.ts +5 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +387 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +14 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +92 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/posthog.d.ts +9 -0
- package/dist/posthog.d.ts.map +1 -0
- package/dist/posthog.js +20 -0
- package/dist/posthog.js.map +1 -0
- package/dist/project-infer.d.ts +50 -0
- package/dist/project-infer.d.ts.map +1 -0
- package/dist/project-infer.js +211 -0
- package/dist/project-infer.js.map +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +25 -5
- package/dist/registry.js.map +1 -1
- package/dist/ui.d.ts +12 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +56 -0
- package/dist/ui.js.map +1 -1
- package/dist/utils/npmGlobal.d.ts +30 -0
- package/dist/utils/npmGlobal.d.ts.map +1 -0
- package/dist/utils/npmGlobal.js +69 -0
- package/dist/utils/npmGlobal.js.map +1 -0
- package/dist/utils/updateCheck.d.ts +6 -0
- package/dist/utils/updateCheck.d.ts.map +1 -1
- package/dist/utils/updateCheck.js +7 -2
- package/dist/utils/updateCheck.js.map +1 -1
- package/package.json +3 -1
- package/dist/commands/brag.d.ts +0 -5
- package/dist/commands/brag.d.ts.map +0 -1
- package/dist/commands/brag.js +0 -87
- package/dist/commands/brag.js.map +0 -1
- package/dist/project-brag.d.ts +0 -58
- package/dist/project-brag.d.ts.map +0 -1
- package/dist/project-brag.js +0 -270
- package/dist/project-brag.js.map +0 -1
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import * as clack from '@clack/prompts';
|
|
2
|
+
import { captureEvent } from '../posthog.js';
|
|
3
|
+
import { findRepoRoot, inferProject, slugFromName, } from '../project-infer.js';
|
|
4
|
+
import { resolveCommand } from '../resolve-command.js';
|
|
5
|
+
import { loadSession, resolveAppUrl, unauthorizedHint, } from '../session.js';
|
|
6
|
+
import { fetchApi } from '../sync.js';
|
|
7
|
+
import { bold, dim, error, info, success } from '../ui.js';
|
|
8
|
+
// `hacklab project` — publish and manage the projects on your profile. The
|
|
9
|
+
// old `brag` flow asked you to transcribe your repo into a YAML manifest; this
|
|
10
|
+
// one reads the repo instead (git remote, README, package.json) and only asks
|
|
11
|
+
// for confirmation. `add` is idempotent per repo: the slug derives from the
|
|
12
|
+
// repo name, and a re-run refreshes the same project without touching its
|
|
13
|
+
// publish date or losing screenshots.
|
|
14
|
+
const SUBCOMMANDS = ['add', 'list', 'delete'];
|
|
15
|
+
const PROJECTS_PATH = '/api/projects';
|
|
16
|
+
function printJson(data) {
|
|
17
|
+
console.log(JSON.stringify(data, null, 2));
|
|
18
|
+
}
|
|
19
|
+
function emitJsonError(code, message) {
|
|
20
|
+
console.log(JSON.stringify({ schemaVersion: 1, error: { code, message } }));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
function usage() {
|
|
24
|
+
error('usage: hacklab project [add|list|delete]');
|
|
25
|
+
info(` hacklab project ${dim('add [path] [--yes] [--json]')} publish the repo you're in (re-run to refresh)`);
|
|
26
|
+
info(` hacklab project ${dim('add --title/--description/--live/--tags/--slug')} override any inferred field`);
|
|
27
|
+
info(` hacklab project ${dim('list [--json]')} your projects`);
|
|
28
|
+
info(` hacklab project ${dim('delete <slug> [--yes] [--json]')} remove one`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
async function requireSession(json) {
|
|
32
|
+
const session = await loadSession();
|
|
33
|
+
if (!session) {
|
|
34
|
+
if (json)
|
|
35
|
+
emitJsonError('unauthorized', 'not logged in');
|
|
36
|
+
error('not logged in');
|
|
37
|
+
info(`run ${dim('hacklab login')} first`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
return session;
|
|
41
|
+
}
|
|
42
|
+
async function readEnvelopeError(res, session) {
|
|
43
|
+
if (res.status === 401)
|
|
44
|
+
return unauthorizedHint(session);
|
|
45
|
+
const data = (await res.json().catch(() => null));
|
|
46
|
+
if (typeof data?.error === 'string')
|
|
47
|
+
return data.error;
|
|
48
|
+
return data?.error?.message ?? `request failed (${res.status})`;
|
|
49
|
+
}
|
|
50
|
+
async function fetchProjects(session) {
|
|
51
|
+
const res = await fetchApi(session, PROJECTS_PATH, {
|
|
52
|
+
headers: { Authorization: `Bearer ${session.token}` },
|
|
53
|
+
});
|
|
54
|
+
if (!res.ok)
|
|
55
|
+
throw new Error(await readEnvelopeError(res, session));
|
|
56
|
+
const data = (await res.json().catch(() => null));
|
|
57
|
+
if (!data?.projects)
|
|
58
|
+
throw new Error('got a malformed response from hacklab');
|
|
59
|
+
return data;
|
|
60
|
+
}
|
|
61
|
+
function flagValue(args, ...names) {
|
|
62
|
+
for (const name of names) {
|
|
63
|
+
const i = args.indexOf(name);
|
|
64
|
+
if (i !== -1 && args[i + 1])
|
|
65
|
+
return args[i + 1];
|
|
66
|
+
const eq = args.find((a) => a.startsWith(`${name}=`));
|
|
67
|
+
if (eq)
|
|
68
|
+
return eq.slice(name.length + 1);
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
/** Split a `--tags a,b,c` value into clean tag names. */
|
|
73
|
+
export function parseTags(value) {
|
|
74
|
+
return value
|
|
75
|
+
.split(',')
|
|
76
|
+
.map((t) => t.trim().toLowerCase())
|
|
77
|
+
.filter(Boolean)
|
|
78
|
+
.slice(0, 20);
|
|
79
|
+
}
|
|
80
|
+
// og:image discovery: one GET of the live page, one regex. Both content-first
|
|
81
|
+
// and property-first attribute orders appear in the wild.
|
|
82
|
+
const OG_IMAGE_PATTERNS = [
|
|
83
|
+
/<meta[^>]+(?:property|name)=["']og:image["'][^>]*content=["']([^"']+)["']/i,
|
|
84
|
+
/<meta[^>]+content=["']([^"']+)["'][^>]*(?:property|name)=["']og:image["']/i,
|
|
85
|
+
];
|
|
86
|
+
export function extractOgImage(html, baseUrl) {
|
|
87
|
+
for (const pattern of OG_IMAGE_PATTERNS) {
|
|
88
|
+
const match = html.match(pattern);
|
|
89
|
+
if (match?.[1]) {
|
|
90
|
+
try {
|
|
91
|
+
return new URL(match[1], baseUrl).toString();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const SCREENSHOT_MAX_BYTES = 4 * 1024 * 1024;
|
|
101
|
+
/**
|
|
102
|
+
* Best-effort screenshot from the live site's og:image. Any failure —
|
|
103
|
+
* unreachable site, no tag, oversized or non-png/jpeg image, upload error —
|
|
104
|
+
* returns null and costs nothing but the attempt.
|
|
105
|
+
*/
|
|
106
|
+
async function captureOgScreenshot(session, liveUrl) {
|
|
107
|
+
try {
|
|
108
|
+
const page = await fetch(liveUrl, {
|
|
109
|
+
signal: AbortSignal.timeout(8000),
|
|
110
|
+
headers: { 'User-Agent': 'HacklabCLI (+https://hacklab.so)' },
|
|
111
|
+
});
|
|
112
|
+
if (!page.ok)
|
|
113
|
+
return null;
|
|
114
|
+
const imageUrl = extractOgImage(await page.text(), liveUrl);
|
|
115
|
+
if (!imageUrl)
|
|
116
|
+
return null;
|
|
117
|
+
const image = await fetch(imageUrl, {
|
|
118
|
+
signal: AbortSignal.timeout(8000),
|
|
119
|
+
headers: { 'User-Agent': 'HacklabCLI (+https://hacklab.so)' },
|
|
120
|
+
});
|
|
121
|
+
if (!image.ok)
|
|
122
|
+
return null;
|
|
123
|
+
const contentType = image.headers.get('content-type')?.split(';')[0];
|
|
124
|
+
if (contentType !== 'image/png' && contentType !== 'image/jpeg')
|
|
125
|
+
return null;
|
|
126
|
+
const bytes = Buffer.from(await image.arrayBuffer());
|
|
127
|
+
if (bytes.length === 0 || bytes.length > SCREENSHOT_MAX_BYTES)
|
|
128
|
+
return null;
|
|
129
|
+
const upload = await fetchApi(session, '/api/screenshots', {
|
|
130
|
+
method: 'POST',
|
|
131
|
+
headers: {
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
Authorization: `Bearer ${session.token}`,
|
|
134
|
+
},
|
|
135
|
+
body: JSON.stringify({
|
|
136
|
+
image: bytes.toString('base64'),
|
|
137
|
+
filename: contentType === 'image/png' ? 'og.png' : 'og.jpg',
|
|
138
|
+
contentType,
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
const data = (await upload.json().catch(() => null));
|
|
142
|
+
if (!upload.ok || !data?.url)
|
|
143
|
+
return null;
|
|
144
|
+
return { url: data.url, caption: '' };
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function summarize(value, max = 72) {
|
|
151
|
+
if (!value)
|
|
152
|
+
return dim('(none)');
|
|
153
|
+
const oneLine = value.replace(/\s+/g, ' ').trim();
|
|
154
|
+
return oneLine.length > max ? `${oneLine.slice(0, max - 1)}…` : oneLine;
|
|
155
|
+
}
|
|
156
|
+
async function projectAdd(args) {
|
|
157
|
+
const json = args.includes('--json');
|
|
158
|
+
const yes = args.includes('--yes');
|
|
159
|
+
const overrides = {
|
|
160
|
+
title: flagValue(args, '--title'),
|
|
161
|
+
description: flagValue(args, '--description', '--desc'),
|
|
162
|
+
liveUrl: flagValue(args, '--live'),
|
|
163
|
+
repoUrl: flagValue(args, '--repo'),
|
|
164
|
+
slug: flagValue(args, '--slug'),
|
|
165
|
+
tags: flagValue(args, '--tags'),
|
|
166
|
+
};
|
|
167
|
+
const flagValues = new Set(Object.values(overrides).filter((v) => v !== undefined));
|
|
168
|
+
const pathArg = args.find((a) => !a.startsWith('-') && !flagValues.has(a));
|
|
169
|
+
const root = await findRepoRoot(pathArg ?? process.cwd());
|
|
170
|
+
if (!root) {
|
|
171
|
+
const message = `not a git repository: ${pathArg ?? process.cwd()}`;
|
|
172
|
+
if (json)
|
|
173
|
+
emitJsonError('not_a_repo', message);
|
|
174
|
+
error(message);
|
|
175
|
+
info('run from inside the repo you want to publish');
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
const inferred = await inferProject(root);
|
|
179
|
+
const draft = {
|
|
180
|
+
...inferred,
|
|
181
|
+
title: overrides.title ?? inferred.title,
|
|
182
|
+
description: overrides.description ?? inferred.description,
|
|
183
|
+
liveUrl: overrides.liveUrl ?? inferred.liveUrl,
|
|
184
|
+
repoUrl: overrides.repoUrl ?? inferred.repoUrl,
|
|
185
|
+
slug: overrides.slug ? slugFromName(overrides.slug) : inferred.slug,
|
|
186
|
+
tags: overrides.tags ? parseTags(overrides.tags) : inferred.tags,
|
|
187
|
+
};
|
|
188
|
+
const session = await requireSession(json);
|
|
189
|
+
// The existing row (if any) decides create-vs-refresh, keeps the original
|
|
190
|
+
// publish date, and provides fallback screenshots.
|
|
191
|
+
let existing;
|
|
192
|
+
try {
|
|
193
|
+
existing = (await fetchProjects(session)).projects.find((p) => p.slug === draft.slug);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
197
|
+
if (json)
|
|
198
|
+
emitJsonError('error', message);
|
|
199
|
+
error(message);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
if (!json) {
|
|
203
|
+
console.log(` ${bold(existing ? 'refreshing' : 'publishing')} ${bold(draft.title)} ${dim(`(${draft.slug})`)}`);
|
|
204
|
+
console.log(` ${dim('description')} ${summarize(draft.description)}`);
|
|
205
|
+
console.log(` ${dim('repo')} ${summarize(draft.repoUrl)}`);
|
|
206
|
+
console.log(` ${dim('live')} ${summarize(draft.liveUrl)}`);
|
|
207
|
+
console.log(` ${dim('tags')} ${draft.tags.length ? draft.tags.join(', ') : dim('(none)')}`);
|
|
208
|
+
console.log(` ${dim('content')} ${draft.content ? `README (${draft.content.length} chars)` : dim('(none)')}`);
|
|
209
|
+
}
|
|
210
|
+
if (!json && !yes && process.stdout.isTTY) {
|
|
211
|
+
const go = await clack.confirm({ message: 'publish it?' });
|
|
212
|
+
if (clack.isCancel(go) || !go) {
|
|
213
|
+
clack.outro(dim('cancelled.'));
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Fresh og:image capture when the site has one; otherwise whatever the
|
|
218
|
+
// project already shows keeps showing (POST overwrites screenshots).
|
|
219
|
+
let screenshots = existing?.screenshots ?? [];
|
|
220
|
+
if (draft.liveUrl) {
|
|
221
|
+
if (!json)
|
|
222
|
+
info(dim('looking for a screenshot (og:image)…'));
|
|
223
|
+
const shot = await captureOgScreenshot(session, draft.liveUrl);
|
|
224
|
+
if (shot)
|
|
225
|
+
screenshots = [shot];
|
|
226
|
+
}
|
|
227
|
+
const payload = {
|
|
228
|
+
title: draft.title,
|
|
229
|
+
slug: draft.slug,
|
|
230
|
+
description: draft.description ?? undefined,
|
|
231
|
+
tags: draft.tags,
|
|
232
|
+
repoUrl: draft.repoUrl ?? undefined,
|
|
233
|
+
liveUrl: draft.liveUrl ?? undefined,
|
|
234
|
+
screenshots,
|
|
235
|
+
content: draft.content ?? undefined,
|
|
236
|
+
publishedAt: existing?.publishedAt ?? new Date().toISOString(),
|
|
237
|
+
};
|
|
238
|
+
let res;
|
|
239
|
+
try {
|
|
240
|
+
res = await fetchApi(session, PROJECTS_PATH, {
|
|
241
|
+
method: 'POST',
|
|
242
|
+
headers: {
|
|
243
|
+
'Content-Type': 'application/json',
|
|
244
|
+
Authorization: `Bearer ${session.token}`,
|
|
245
|
+
},
|
|
246
|
+
body: JSON.stringify(payload),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
251
|
+
if (json)
|
|
252
|
+
emitJsonError('network', message);
|
|
253
|
+
error(message);
|
|
254
|
+
process.exit(1);
|
|
255
|
+
}
|
|
256
|
+
if (!res.ok) {
|
|
257
|
+
const message = await readEnvelopeError(res, session);
|
|
258
|
+
if (json)
|
|
259
|
+
emitJsonError('error', message);
|
|
260
|
+
error(message);
|
|
261
|
+
process.exit(1);
|
|
262
|
+
}
|
|
263
|
+
await captureEvent(session.handle, 'cli_project_added', {
|
|
264
|
+
slug: draft.slug,
|
|
265
|
+
refreshed: Boolean(existing),
|
|
266
|
+
has_live_url: Boolean(draft.liveUrl),
|
|
267
|
+
has_screenshot: screenshots.length > 0,
|
|
268
|
+
tag_count: draft.tags.length,
|
|
269
|
+
});
|
|
270
|
+
const path = `/${session.handle}/${draft.slug}`;
|
|
271
|
+
if (json) {
|
|
272
|
+
printJson({
|
|
273
|
+
schemaVersion: 1,
|
|
274
|
+
[existing ? 'refreshed' : 'published']: true,
|
|
275
|
+
slug: draft.slug,
|
|
276
|
+
path,
|
|
277
|
+
});
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
success(`${existing ? 'refreshed' : 'published'} ${bold(draft.title)}`);
|
|
281
|
+
info(`${resolveAppUrl(session)}${path}`);
|
|
282
|
+
}
|
|
283
|
+
async function projectList(args) {
|
|
284
|
+
const json = args.includes('--json');
|
|
285
|
+
const session = await requireSession(json);
|
|
286
|
+
let list;
|
|
287
|
+
try {
|
|
288
|
+
list = await fetchProjects(session);
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
292
|
+
if (json)
|
|
293
|
+
emitJsonError('error', message);
|
|
294
|
+
error(message);
|
|
295
|
+
process.exit(1);
|
|
296
|
+
}
|
|
297
|
+
if (json) {
|
|
298
|
+
printJson({ schemaVersion: 1, ...list });
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (list.projects.length === 0) {
|
|
302
|
+
info('no projects yet');
|
|
303
|
+
info(`run ${dim('hacklab project add')} inside a repo to publish one`);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const width = Math.max(...list.projects.map((p) => p.slug.length));
|
|
307
|
+
for (const p of list.projects) {
|
|
308
|
+
console.log(` ${bold(p.slug.padEnd(width))} ${summarize(p.title, 48)} ${dim(`(${p.source})`)}`);
|
|
309
|
+
}
|
|
310
|
+
console.log('');
|
|
311
|
+
info(dim(`${resolveAppUrl(session)}/${list.handle}`));
|
|
312
|
+
}
|
|
313
|
+
async function projectDelete(args) {
|
|
314
|
+
const json = args.includes('--json');
|
|
315
|
+
const yes = args.includes('--yes');
|
|
316
|
+
const slug = args.find((a) => !a.startsWith('-'));
|
|
317
|
+
if (!slug)
|
|
318
|
+
usage();
|
|
319
|
+
const session = await requireSession(json);
|
|
320
|
+
if (!json && !yes && process.stdout.isTTY) {
|
|
321
|
+
const go = await clack.confirm({
|
|
322
|
+
message: `delete ${bold(slug)} from your profile?`,
|
|
323
|
+
});
|
|
324
|
+
if (clack.isCancel(go) || !go) {
|
|
325
|
+
clack.outro(dim('cancelled.'));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
let res;
|
|
330
|
+
try {
|
|
331
|
+
res = await fetchApi(session, `${PROJECTS_PATH}/${encodeURIComponent(slug)}`, {
|
|
332
|
+
method: 'DELETE',
|
|
333
|
+
headers: { Authorization: `Bearer ${session.token}` },
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
catch (err) {
|
|
337
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
338
|
+
if (json)
|
|
339
|
+
emitJsonError('network', message);
|
|
340
|
+
error(message);
|
|
341
|
+
process.exit(1);
|
|
342
|
+
}
|
|
343
|
+
if (!res.ok) {
|
|
344
|
+
const message = await readEnvelopeError(res, session);
|
|
345
|
+
if (json)
|
|
346
|
+
emitJsonError('error', message);
|
|
347
|
+
error(message);
|
|
348
|
+
process.exit(1);
|
|
349
|
+
}
|
|
350
|
+
const data = (await res.json().catch(() => null));
|
|
351
|
+
await captureEvent(session.handle, 'cli_project_deleted', {
|
|
352
|
+
slug,
|
|
353
|
+
source: data?.deleted?.source,
|
|
354
|
+
});
|
|
355
|
+
if (json) {
|
|
356
|
+
printJson({ schemaVersion: 1, deleted: data?.deleted ?? { slug } });
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
success(`deleted ${bold(slug)}`);
|
|
360
|
+
if (data?.deleted?.source === 'github') {
|
|
361
|
+
info(`it's synced from a pinned GitHub repo — unpin it or the next ${dim('hacklab sync')} brings it back`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
export async function project(args) {
|
|
365
|
+
const [subToken, ...rest] = args;
|
|
366
|
+
// Bare `hacklab project` inside a repo means "publish this" — the verb the
|
|
367
|
+
// command exists for. `list` is one word away.
|
|
368
|
+
if (!subToken || subToken.startsWith('-')) {
|
|
369
|
+
return projectAdd(args);
|
|
370
|
+
}
|
|
371
|
+
const resolved = resolveCommand(subToken, SUBCOMMANDS);
|
|
372
|
+
if (resolved.kind === 'ambiguous') {
|
|
373
|
+
error(`ambiguous: project ${subToken} (${resolved.matches.join(', ')})`);
|
|
374
|
+
process.exit(1);
|
|
375
|
+
}
|
|
376
|
+
if (resolved.kind === 'unknown') {
|
|
377
|
+
error(`unknown subcommand: project ${subToken}`);
|
|
378
|
+
usage();
|
|
379
|
+
}
|
|
380
|
+
if (resolved.name === 'add')
|
|
381
|
+
return projectAdd(rest);
|
|
382
|
+
if (resolved.name === 'list')
|
|
383
|
+
return projectList(rest);
|
|
384
|
+
if (resolved.name === 'delete')
|
|
385
|
+
return projectDelete(rest);
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AA0BA;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as clack from '@clack/prompts';
|
|
2
2
|
import { appendSyncLog, clearSyncPaused, installDailySync, markSyncPaused, } from '../daily-sync.js';
|
|
3
|
+
import { captureEvent } from '../posthog.js';
|
|
3
4
|
import { scanAllTools } from '../scanners/index.js';
|
|
4
5
|
import { loadSession, loadSessionState } from '../session.js';
|
|
5
6
|
import { checkSession, ensureFreshSession, formatTokens, LOGIN_EXPIRED_MESSAGE, refreshSession, runSync, syncGithubRepos, uploadTokenScan, } from '../sync.js';
|
|
@@ -32,6 +33,9 @@ async function installDailyCommand() {
|
|
|
32
33
|
success(`daily background sync set up (${result.mechanism})`);
|
|
33
34
|
info(dim(` ${result.detail}`));
|
|
34
35
|
info(dim(' turn it off anytime with `hacklab logout`'));
|
|
36
|
+
await captureEvent(session.handle, 'cli_daily_sync_installed', {
|
|
37
|
+
mechanism: result.mechanism,
|
|
38
|
+
});
|
|
35
39
|
}
|
|
36
40
|
else {
|
|
37
41
|
info(result.instructions);
|
|
@@ -164,6 +168,16 @@ async function interactiveSync() {
|
|
|
164
168
|
parts.push(`removed ${repos.removed}`);
|
|
165
169
|
info(` github: ${parts.join(', ')}`);
|
|
166
170
|
}
|
|
171
|
+
await captureEvent(session.handle, 'cli_sync_completed', {
|
|
172
|
+
tokens_claude: claudeTotal,
|
|
173
|
+
tokens_codex: codexTotal,
|
|
174
|
+
tokens_cursor: cursorTotal,
|
|
175
|
+
tokens_openclaw: openclawTotal,
|
|
176
|
+
tokens_hermes: hermesTotal,
|
|
177
|
+
tokens_opencode: opencodeTotal,
|
|
178
|
+
level: r.level,
|
|
179
|
+
title: r.title,
|
|
180
|
+
});
|
|
167
181
|
clack.outro(dim('synced.'));
|
|
168
182
|
}
|
|
169
183
|
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,eAAe,CAAA;AAC3E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,OAAO,EACP,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAE1D,MAAM,sBAAsB,GAC1B,oDAAoD,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,EAAE;IAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,mBAAmB,EAAE,CAAA;IAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,EAAE,CAAA;IAChD,OAAO,eAAe,EAAE,CAAA;AAC1B,CAAC;AAED;iFACiF;AACjF,KAAK,UAAU,mBAAmB;IAChC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAA;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,eAAe,CAAC,CAAA;QACtB,IAAI,CACF,OAAO,GAAG,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC,8BAA8B,CAAC,EAAE,CACjF,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACvC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,iCAAiC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AA6BA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA+C5C"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { captureEvent } from '../posthog.js';
|
|
4
|
+
import { loadSession } from '../session.js';
|
|
5
|
+
import { dim, error, info, success } from '../ui.js';
|
|
6
|
+
import { isWritable, npmGlobalRoot, runNpm, userNpmPrefix, } from '../utils/npmGlobal.js';
|
|
7
|
+
import { fetchLatest, isNewerVersion } from '../utils/updateCheck.js';
|
|
8
|
+
// The version we're running now — read from package.json (two levels up from
|
|
9
|
+
// this module, in both `dist/` and `src/`) the same way index.ts does, so it
|
|
10
|
+
// can't drift from a hardcoded string.
|
|
11
|
+
const require = createRequire(import.meta.url);
|
|
12
|
+
const { version: CURRENT } = require('../../package.json');
|
|
13
|
+
// `hacklab update` — a permission-safe wrapper around `npm i -g hacklab@latest`.
|
|
14
|
+
// A plain `npm i -g` is enough on most machines, but on systems where npm's
|
|
15
|
+
// global folder is root-owned (a stock /usr/local) it dies with EACCES. Rather
|
|
16
|
+
// than surface that stack trace or reach for sudo, we probe writability first
|
|
17
|
+
// and, if needed, reconfigure npm to a user-owned prefix (option H1) before
|
|
18
|
+
// installing. Works on Linux, macOS, and Windows; the prefix reconfigure is a
|
|
19
|
+
// POSIX concern only (Windows installs globals into a user-writable %APPDATA%).
|
|
20
|
+
export async function update() {
|
|
21
|
+
// For analytics only — never block the update on a session read.
|
|
22
|
+
const session = await loadSession().catch(() => null);
|
|
23
|
+
// Short-circuit when there's nothing to do: if the registry says we're already
|
|
24
|
+
// on the latest, skip the install entirely. Crucially this runs BEFORE any
|
|
25
|
+
// writability probe / prefix reconfigure — we never want to touch ~/.npmrc when
|
|
26
|
+
// there's nothing to install. A failed/timed-out lookup returns undefined and
|
|
27
|
+
// falls through to the install (the safe default: attempt it rather than
|
|
28
|
+
// wrongly claim we're current).
|
|
29
|
+
const latest = await fetchLatest();
|
|
30
|
+
if (latest && !isNewerVersion(latest, CURRENT)) {
|
|
31
|
+
success(`already on the latest hacklab (${CURRENT}).`);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const reconfiguredPrefix = ensureWritableGlobalPrefix();
|
|
35
|
+
info('updating hacklab (npm i -g hacklab@latest)…');
|
|
36
|
+
const res = runNpm(['install', '-g', 'hacklab@latest']);
|
|
37
|
+
if (res.status !== 0) {
|
|
38
|
+
error('update failed.');
|
|
39
|
+
if (res.error?.message.includes('ENOENT')) {
|
|
40
|
+
info('npm not found — it ships with Node. Install Node 20+ and retry.');
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
info('Try again, or install manually: npm install -g hacklab@latest');
|
|
44
|
+
}
|
|
45
|
+
await captureEvent(session?.handle, 'cli_update_failed');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
success('hacklab is up to date.');
|
|
49
|
+
if (reconfiguredPrefix) {
|
|
50
|
+
const binDir = join(reconfiguredPrefix, 'bin');
|
|
51
|
+
info(`npm now installs global packages under ${reconfiguredPrefix}.`);
|
|
52
|
+
info('Add its bin dir to your PATH — put this in your shell profile:');
|
|
53
|
+
console.log(dim(` export PATH="${binDir}:$PATH"`));
|
|
54
|
+
info(dim('Prefer the system location? Undo with `npm config delete prefix`, then reinstall with sudo.'));
|
|
55
|
+
}
|
|
56
|
+
await captureEvent(session?.handle, 'cli_update', {
|
|
57
|
+
from: CURRENT,
|
|
58
|
+
to: latest ?? null,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* If npm's global folder isn't writable by this user, reconfigure npm to a
|
|
63
|
+
* user-owned prefix and return that prefix; otherwise return null (nothing to
|
|
64
|
+
* do). The reconfigure is skipped on Windows, where global installs already land
|
|
65
|
+
* in a user-writable location. Exits the process with a clear, actionable
|
|
66
|
+
* message if the reconfigure itself fails.
|
|
67
|
+
*/
|
|
68
|
+
function ensureWritableGlobalPrefix() {
|
|
69
|
+
if (process.platform === 'win32')
|
|
70
|
+
return null;
|
|
71
|
+
const root = npmGlobalRoot();
|
|
72
|
+
if (!root || isWritable(root))
|
|
73
|
+
return null;
|
|
74
|
+
const prefix = userNpmPrefix();
|
|
75
|
+
info(`npm's global folder isn't writable (${root}).`);
|
|
76
|
+
info(`Reconfiguring npm to install under ${prefix} — no sudo needed…`);
|
|
77
|
+
const cfg = runNpm(['config', 'set', 'prefix', prefix], { capture: true });
|
|
78
|
+
if (cfg.status !== 0) {
|
|
79
|
+
error("couldn't reconfigure npm automatically.");
|
|
80
|
+
info('Install into the system location with sudo instead:');
|
|
81
|
+
console.log(dim(' sudo npm install -g hacklab@latest'));
|
|
82
|
+
info('or set a user prefix yourself:');
|
|
83
|
+
console.log(dim(` npm config set prefix "${prefix}" && npm install -g hacklab@latest`));
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
// Make the new bin dir usable by anything this process spawns for the rest of
|
|
87
|
+
// the run. The persistent profile edit (printed after install) is only needed
|
|
88
|
+
// for future shells.
|
|
89
|
+
process.env.PATH = `${join(prefix, 'bin')}:${process.env.PATH ?? ''}`;
|
|
90
|
+
return prefix;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { clearSyncPaused, readSyncPaused } from './daily-sync.js';
|
|
4
|
+
import { posthog } from './posthog.js';
|
|
4
5
|
import { COMMANDS, findCommand } from './registry.js';
|
|
5
6
|
import { resolveCommand } from './resolve-command.js';
|
|
6
|
-
import { HACKLAB_ENVIRONMENTS, resolveHacklabEnv } from './session.js';
|
|
7
|
+
import { HACKLAB_ENVIRONMENTS, loadSession, resolveHacklabEnv, } from './session.js';
|
|
7
8
|
import { banner, bold, dim } from './ui.js';
|
|
8
9
|
import { notifyIfOutdated } from './utils/updateCheck.js';
|
|
9
10
|
// Single source of the published version: read it from package.json (one level
|
|
@@ -138,8 +139,11 @@ async function main() {
|
|
|
138
139
|
}
|
|
139
140
|
await command.run(args);
|
|
140
141
|
}
|
|
141
|
-
main().catch((err) => {
|
|
142
|
+
main().catch(async (err) => {
|
|
142
143
|
console.error(err instanceof Error ? err.message : String(err));
|
|
144
|
+
const session = await loadSession().catch(() => null);
|
|
145
|
+
posthog.captureException(err, session?.handle);
|
|
146
|
+
await posthog.flush();
|
|
143
147
|
process.exit(1);
|
|
144
148
|
});
|
|
145
149
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|