hacklab 0.9.0 → 0.10.0-staging.16.1
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 +60 -35
- package/dist/commands/drop.d.ts +2 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +51 -11
- package/dist/commands/drop.js.map +1 -1
- package/dist/commands/hacker.d.ts.map +1 -1
- package/dist/commands/hacker.js +68 -6
- package/dist/commands/hacker.js.map +1 -1
- package/dist/commands/join.d.ts +1 -1
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +96 -184
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/profile.d.ts +2 -1
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +66 -7
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/project.d.ts +19 -0
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +684 -27
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/sync.js +7 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/update.js +2 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/project-infer.d.ts +13 -0
- package/dist/project-infer.d.ts.map +1 -1
- package/dist/project-infer.js +41 -2
- package/dist/project-infer.js.map +1 -1
- package/dist/registry.js +7 -7
- package/dist/registry.js.map +1 -1
- package/dist/share.d.ts +3 -12
- package/dist/share.d.ts.map +1 -1
- package/dist/share.js +41 -37
- package/dist/share.js.map +1 -1
- package/dist/sync.d.ts +4 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +9 -2
- package/dist/sync.js.map +1 -1
- package/package.json +5 -3
package/dist/commands/join.js
CHANGED
|
@@ -4,11 +4,10 @@ import { loadConfig, resolveCursorAuth, saveConfig } from '../config.js';
|
|
|
4
4
|
import { installDailySync } from '../daily-sync.js';
|
|
5
5
|
import { captureEvent, identifyUser } from '../posthog.js';
|
|
6
6
|
import { collectToolScans, computeStreaks, detectCursorUsage, formatTokens, mergeToolScans, rescanCursorWithApi, } from '../scanners/index.js';
|
|
7
|
-
import {
|
|
7
|
+
import { loadSession, resolveAppUrl, saveSession } from '../session.js';
|
|
8
8
|
import { promptShareOnX, renderShareCard, } from '../share.js';
|
|
9
9
|
import { syncGithubRepos, uploadTokenScan } from '../sync.js';
|
|
10
10
|
import { bold, dim, info } from '../ui.js';
|
|
11
|
-
import { chat } from './chat.js';
|
|
12
11
|
import { login } from './login.js';
|
|
13
12
|
const TOOL_LABELS = {
|
|
14
13
|
claude_code: 'Claude Code',
|
|
@@ -21,7 +20,7 @@ const TOOL_LABELS = {
|
|
|
21
20
|
/**
|
|
22
21
|
* The hero command: the guided join ritual.
|
|
23
22
|
*
|
|
24
|
-
* scan → anonymous rank → GitHub OAuth → pick username
|
|
23
|
+
* scan → anonymous rank → GitHub OAuth → pick username → claim → card
|
|
25
24
|
*
|
|
26
25
|
* Value (rank) is shown before any account exists. GitHub auth comes right
|
|
27
26
|
* after the rank and before the username, so we know whether the account
|
|
@@ -51,7 +50,10 @@ export async function join(opts = {}) {
|
|
|
51
50
|
clack.outro(dim('nothing to do — log out first to switch accounts.'));
|
|
52
51
|
return;
|
|
53
52
|
}
|
|
54
|
-
|
|
53
|
+
// Derive the backend from the reused session when one exists: an unclaimed
|
|
54
|
+
// session saved against staging (or --env) must not send its token to the
|
|
55
|
+
// production default. HACKLAB_APP_URL still wins inside resolveAppUrl.
|
|
56
|
+
const appUrl = resolveAppUrl(current);
|
|
55
57
|
// ── Stage 1: scan ────────────────────────────────────────────────────────
|
|
56
58
|
// Keep the per-tool results, not just the merged totals: Stage 1.5 may re-scan
|
|
57
59
|
// Cursor alone and re-merge, which needs the other tools' results intact.
|
|
@@ -111,21 +113,21 @@ export async function join(opts = {}) {
|
|
|
111
113
|
catch {
|
|
112
114
|
// Rank is a hook, not a gate. Skip silently and continue the join.
|
|
113
115
|
}
|
|
114
|
-
// ── Stage 3: GitHub OAuth
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
116
|
+
// ── Stage 3: GitHub OAuth when needed ─────────────────────────────────────
|
|
117
|
+
// The web onboarding flow runs `hacklab login` before `join`, so reuse that
|
|
118
|
+
// unclaimed session instead of making the user authorize GitHub twice. A
|
|
119
|
+
// direct `hacklab join` still performs the full login flow here.
|
|
120
|
+
let session = current;
|
|
121
|
+
if (!session) {
|
|
122
|
+
try {
|
|
123
|
+
await login({ allowSignup: true, browser: opts.browser });
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
clack.cancel(`GitHub sign-in failed: ${err instanceof Error ? err.message : String(err)}. run \`hacklab join\` again.`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
session = await loadSession();
|
|
127
130
|
}
|
|
128
|
-
const session = await loadSession();
|
|
129
131
|
if (!session) {
|
|
130
132
|
clack.cancel('GitHub sign-in did not complete. run `hacklab join` again.');
|
|
131
133
|
process.exit(1);
|
|
@@ -148,7 +150,7 @@ export async function join(opts = {}) {
|
|
|
148
150
|
clack.outro(dim(`${base}/${session.handle} · \`hacklab sync\` to update usage · \`hacklab chat\` to jump in`));
|
|
149
151
|
return;
|
|
150
152
|
}
|
|
151
|
-
// ── Stage 5: pick username
|
|
153
|
+
// ── Stage 5: pick username, then claim ───────────────────────────────────
|
|
152
154
|
// Only reached when the account has no claimed username yet: a fresh signup,
|
|
153
155
|
// or a first-time web user who authenticated on the site and now needs to
|
|
154
156
|
// choose a handle. An account that already set its username skipped this at
|
|
@@ -164,9 +166,6 @@ export async function join(opts = {}) {
|
|
|
164
166
|
clack.outro(dim('cancelled.'));
|
|
165
167
|
process.exit(0);
|
|
166
168
|
}
|
|
167
|
-
const bio = await optionalText('one line — what are you building?');
|
|
168
|
-
const xRaw = await optionalText('x / twitter (handle or url, optional)');
|
|
169
|
-
const websiteRaw = await optionalText('website (optional)');
|
|
170
169
|
// Claim (re-prompt username on a TOCTOU collision).
|
|
171
170
|
let claimedHandle = username;
|
|
172
171
|
while (true) {
|
|
@@ -178,11 +177,6 @@ export async function join(opts = {}) {
|
|
|
178
177
|
},
|
|
179
178
|
body: JSON.stringify({
|
|
180
179
|
username: claimedHandle,
|
|
181
|
-
...(bio ? { bio } : {}),
|
|
182
|
-
...(normalizeXUrl(xRaw) ? { xUrl: normalizeXUrl(xRaw) } : {}),
|
|
183
|
-
...(normalizeWebsite(websiteRaw)
|
|
184
|
-
? { websiteUrl: normalizeWebsite(websiteRaw) }
|
|
185
|
-
: {}),
|
|
186
180
|
}),
|
|
187
181
|
});
|
|
188
182
|
if (res.ok) {
|
|
@@ -210,67 +204,32 @@ export async function join(opts = {}) {
|
|
|
210
204
|
// account. The logged-in guard (here and in the installer) keys off a claimed
|
|
211
205
|
// username, so set both — without this a finished signup would still look
|
|
212
206
|
// half-done and a re-run of join would scan/upload again instead of stopping.
|
|
213
|
-
|
|
207
|
+
const claimedSession = {
|
|
214
208
|
...session,
|
|
215
209
|
handle: claimedHandle,
|
|
216
210
|
usernameClaimed: true,
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
//
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
beltColor: typeof r.beltColor === 'string' ? r.beltColor : undefined,
|
|
234
|
-
rankAfter: typeof r.rankAfter === 'number' ? r.rankAfter : undefined,
|
|
235
|
-
}))
|
|
236
|
-
.catch(() => null);
|
|
237
|
-
// ── Stage 7: stats thumbnail + share (runs while the upload is in flight) ─
|
|
238
|
-
// Card is rendered from local data: scan totals, the captured preview rank,
|
|
239
|
-
// and the locally-computed belt (pyro-only, which matches the server for a
|
|
240
|
-
// fresh join). No dependency on the in-flight sync.
|
|
241
|
-
if (scan.grandTotal > 0) {
|
|
242
|
-
const belt = beltForTokens(scan.grandTotal);
|
|
243
|
-
const streaks = computeStreaks(scan.dailyTotals.map((e) => e.date));
|
|
244
|
-
const card = {
|
|
245
|
-
handle: claimedHandle,
|
|
246
|
-
level: belt.level,
|
|
247
|
-
title: belt.title,
|
|
248
|
-
beltColor: belt.beltColor,
|
|
249
|
-
tokensTotal: scan.grandTotal,
|
|
250
|
-
rank: previewRank ?? 0,
|
|
251
|
-
streak: streaks.current,
|
|
252
|
-
longestStreak: streaks.longest,
|
|
253
|
-
progressPercent: belt.progressPercent,
|
|
254
|
-
estimatedCost: estimateCost(scan.toolTotals),
|
|
255
|
-
toolBreakdown: {
|
|
256
|
-
claudeCode: scan.toolTotals.claude_code ?? 0,
|
|
257
|
-
codex: scan.toolTotals.codex ?? 0,
|
|
258
|
-
cursor: scan.toolTotals.cursor ?? 0,
|
|
259
|
-
},
|
|
260
|
-
models: Object.entries(scan.modelTotals)
|
|
261
|
-
.map(([name, tokens]) => ({ name, tokens }))
|
|
262
|
-
.sort((a, b) => b.tokens - a.tokens),
|
|
263
|
-
dailyActivity: aggregateDailyActivity(scan.dailyTotals),
|
|
211
|
+
};
|
|
212
|
+
await saveSession(claimedSession);
|
|
213
|
+
// ── Stage 6: save usage and mirror pinned projects ────────────────────────
|
|
214
|
+
// Finish essential work before the viral loop. The card is the reward for a
|
|
215
|
+
// completed claim, never something standing between the user and an account.
|
|
216
|
+
spin.start('saving your usage');
|
|
217
|
+
let syncResult = null;
|
|
218
|
+
try {
|
|
219
|
+
const result = await uploadTokenScan(claimedSession, scan, {
|
|
220
|
+
timeoutMs: 120_000,
|
|
221
|
+
});
|
|
222
|
+
syncResult = {
|
|
223
|
+
title: typeof result.title === 'string' ? result.title : undefined,
|
|
224
|
+
level: typeof result.level === 'number' ? result.level : undefined,
|
|
225
|
+
beltColor: typeof result.beltColor === 'string' ? result.beltColor : undefined,
|
|
226
|
+
rankAfter: typeof result.rankAfter === 'number' ? result.rankAfter : undefined,
|
|
264
227
|
};
|
|
265
|
-
await renderShareCard(card);
|
|
266
|
-
await promptShareOnX(card);
|
|
267
228
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
spin.start('saving your usage');
|
|
273
|
-
const syncResult = await syncPromise;
|
|
229
|
+
catch {
|
|
230
|
+
// A failed usage upload does not undo the claimed handle. `hacklab sync`
|
|
231
|
+
// remains the explicit recovery path.
|
|
232
|
+
}
|
|
274
233
|
const base = appUrl.replace(/\/$/, '');
|
|
275
234
|
if (syncResult?.title && syncResult.level != null) {
|
|
276
235
|
spin.stop('usage saved');
|
|
@@ -280,46 +239,40 @@ export async function join(opts = {}) {
|
|
|
280
239
|
}
|
|
281
240
|
else {
|
|
282
241
|
spin.stop('usage sync deferred');
|
|
283
|
-
info(dim('
|
|
242
|
+
info(dim('run `hacklab sync` if your stats look off.'));
|
|
284
243
|
}
|
|
285
|
-
// ── Stage 8.5: mirror pinned GitHub repos into projects (best-effort) ─────
|
|
286
244
|
spin.start('syncing pinned github repos');
|
|
287
|
-
const repos = await syncGithubRepos(
|
|
245
|
+
const repos = await syncGithubRepos(claimedSession);
|
|
288
246
|
if (repos && repos.synced > 0) {
|
|
289
247
|
spin.stop(`synced ${repos.synced} github project${repos.synced === 1 ? '' : 's'}`);
|
|
290
248
|
}
|
|
291
249
|
else {
|
|
292
250
|
spin.stop('github projects synced');
|
|
293
251
|
}
|
|
294
|
-
// ── Stage 8.6: offer the daily background sync (default yes) ───────────────
|
|
295
|
-
// Right before the chat funnel: opt the user into an unattended daily
|
|
296
|
-
// `hacklab sync` so their stats stay fresh without thinking about it. Default
|
|
297
|
-
// yes (one Enter), but confirm. `=== true` treats Esc/Ctrl+C as "no".
|
|
298
|
-
const wantDaily = await clack.confirm({
|
|
299
|
-
message: 'keep your stats fresh with a daily background sync?',
|
|
300
|
-
initialValue: true,
|
|
301
|
-
});
|
|
302
|
-
if (wantDaily === true) {
|
|
303
|
-
spin.start('setting up daily background sync');
|
|
304
|
-
const result = await installDailySync();
|
|
305
|
-
if (result.ok) {
|
|
306
|
-
spin.stop(`daily background sync on (${result.mechanism})`);
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
spin.stop('daily background sync not set up');
|
|
310
|
-
info(dim(result.instructions));
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
// ── Stage 9: funnel into the live channel ─────────────────────────────────
|
|
314
|
-
// A fresh joiner converts to the community best right now, so end by offering
|
|
315
|
-
// the channel. Default to yes (one Enter on the happy path), but make them
|
|
316
|
-
// confirm rather than yanking them in. `=== true` treats Esc/Ctrl+C as "no".
|
|
317
252
|
clack.log.success(`${bold('claimed.')} ${base}/${claimedHandle}`);
|
|
318
|
-
|
|
319
|
-
|
|
253
|
+
// Set up the OS-native daily background sync so usage, streaks, and the
|
|
254
|
+
// retention signal stay fresh without the user remembering to run
|
|
255
|
+
// `hacklab sync`. Best-effort: installDailySync never throws (it falls back
|
|
256
|
+
// to printable instructions), and a non-ok result stays quiet here — the join
|
|
257
|
+
// ritual shouldn't dump scheduler config; `hacklab sync --install-daily`
|
|
258
|
+
// prints it on demand. Torn down again by `hacklab logout`.
|
|
259
|
+
const daily = await installDailySync();
|
|
260
|
+
if (daily.ok) {
|
|
261
|
+
info(dim(`daily sync scheduled (${daily.mechanism})`));
|
|
262
|
+
await captureEvent(claimedHandle, 'cli_daily_sync_installed', {
|
|
263
|
+
mechanism: daily.mechanism,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
else if (daily.instructions) {
|
|
267
|
+
// Platform we don't auto-schedule on (e.g. BSD) or a failed scheduler
|
|
268
|
+
// write: surface the copy-paste cron command instead of silently shipping
|
|
269
|
+
// no daily sync at all.
|
|
270
|
+
info(dim(daily.instructions));
|
|
271
|
+
}
|
|
272
|
+
if (claimedSession.email) {
|
|
320
273
|
await identifyUser(claimedHandle, {
|
|
321
274
|
$set: {
|
|
322
|
-
email:
|
|
275
|
+
email: claimedSession.email,
|
|
323
276
|
handle: claimedHandle,
|
|
324
277
|
app_url: appUrl,
|
|
325
278
|
},
|
|
@@ -328,48 +281,38 @@ export async function join(opts = {}) {
|
|
|
328
281
|
}
|
|
329
282
|
await captureEvent(claimedHandle, 'cli_join_completed', {
|
|
330
283
|
tokens_total: scan.grandTotal,
|
|
331
|
-
rank: previewRank ?? undefined,
|
|
332
|
-
has_bio: bio !== undefined,
|
|
333
|
-
has_x_url: normalizeXUrl(xRaw) !== undefined,
|
|
334
|
-
has_website: normalizeWebsite(websiteRaw) !== undefined,
|
|
284
|
+
rank: syncResult?.rankAfter ?? previewRank ?? undefined,
|
|
335
285
|
});
|
|
336
|
-
// ── Stage
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
});
|
|
367
|
-
if (openChat === true) {
|
|
368
|
-
clack.outro(dim('opening live chat…'));
|
|
369
|
-
await chat(['live']);
|
|
370
|
-
return;
|
|
371
|
-
}
|
|
372
|
-
clack.outro(dim('jump in anytime with `hacklab chat`.'));
|
|
286
|
+
// ── Stage 7: show the reward, then offer one sharing action ───────────────
|
|
287
|
+
const belt = beltForTokens(scan.grandTotal);
|
|
288
|
+
const streaks = computeStreaks(scan.dailyTotals.map((entry) => entry.date));
|
|
289
|
+
const card = {
|
|
290
|
+
handle: claimedHandle,
|
|
291
|
+
level: belt.level,
|
|
292
|
+
title: belt.title,
|
|
293
|
+
beltColor: belt.beltColor,
|
|
294
|
+
tokensTotal: scan.grandTotal,
|
|
295
|
+
rank: syncResult?.rankAfter ?? previewRank ?? 0,
|
|
296
|
+
streak: streaks.current,
|
|
297
|
+
longestStreak: streaks.longest,
|
|
298
|
+
progressPercent: belt.progressPercent,
|
|
299
|
+
estimatedCost: estimateCost(scan.toolTotals),
|
|
300
|
+
toolBreakdown: {
|
|
301
|
+
claudeCode: scan.toolTotals.claude_code ?? 0,
|
|
302
|
+
codex: scan.toolTotals.codex ?? 0,
|
|
303
|
+
cursor: scan.toolTotals.cursor ?? 0,
|
|
304
|
+
},
|
|
305
|
+
models: Object.entries(scan.modelTotals)
|
|
306
|
+
.map(([name, tokens]) => ({ name, tokens }))
|
|
307
|
+
.sort((a, b) => b.tokens - a.tokens),
|
|
308
|
+
dailyActivity: aggregateDailyActivity(scan.dailyTotals),
|
|
309
|
+
};
|
|
310
|
+
const cardPath = await renderShareCard(card);
|
|
311
|
+
await promptShareOnX(card, cardPath);
|
|
312
|
+
// Keep the required discovery notice visible without another decision or a
|
|
313
|
+
// wall of text in the join path.
|
|
314
|
+
clack.note('Your public profile can appear in vetted scout discovery. Email, DMs, and AI session content are never shared. Change "get discovered" anytime in profile settings.', 'discovery');
|
|
315
|
+
clack.outro(dim('return to onboarding to add your bio and first drop.'));
|
|
373
316
|
}
|
|
374
317
|
/** The per-tool token lines + grand total shown after a scan. */
|
|
375
318
|
function printToolTotals(scan) {
|
|
@@ -546,35 +489,4 @@ async function optionalText(message, placeholder = '(optional)') {
|
|
|
546
489
|
const trimmed = String(value).trim();
|
|
547
490
|
return trimmed.length > 0 ? trimmed : undefined;
|
|
548
491
|
}
|
|
549
|
-
/** Discard a value that isn't a parseable URL, so an optional vanity field can
|
|
550
|
-
* never 400 the claim and abort the join at the final step. */
|
|
551
|
-
function asValidUrl(value) {
|
|
552
|
-
try {
|
|
553
|
-
return new URL(value).href;
|
|
554
|
-
}
|
|
555
|
-
catch {
|
|
556
|
-
return undefined;
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
/** Turn a handle or partial url into a full x.com url; undefined if blank/invalid. */
|
|
560
|
-
function normalizeXUrl(raw) {
|
|
561
|
-
if (!raw)
|
|
562
|
-
return undefined;
|
|
563
|
-
const v = raw.trim();
|
|
564
|
-
if (!v)
|
|
565
|
-
return undefined;
|
|
566
|
-
if (/^https?:\/\//i.test(v))
|
|
567
|
-
return asValidUrl(v);
|
|
568
|
-
const handle = v.replace(/^@/, '');
|
|
569
|
-
return asValidUrl(`https://x.com/${handle}`);
|
|
570
|
-
}
|
|
571
|
-
/** Ensure a website has a scheme; undefined if blank/invalid. */
|
|
572
|
-
function normalizeWebsite(raw) {
|
|
573
|
-
if (!raw)
|
|
574
|
-
return undefined;
|
|
575
|
-
const v = raw.trim();
|
|
576
|
-
if (!v)
|
|
577
|
-
return undefined;
|
|
578
|
-
return asValidUrl(/^https?:\/\//i.test(v) ? v : `https://${v}`);
|
|
579
|
-
}
|
|
580
492
|
//# sourceMappingURL=join.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ProfileFieldKind = 'text' | 'url' | 'handle' | 'boolean';
|
|
1
|
+
export type ProfileFieldKind = 'text' | 'markdown' | 'url' | 'handle' | 'boolean';
|
|
2
2
|
export type ProfileField = {
|
|
3
3
|
/** API key sent to /api/hackers/me. */
|
|
4
4
|
key: string;
|
|
@@ -16,6 +16,7 @@ type Profile = {
|
|
|
16
16
|
handle: string;
|
|
17
17
|
displayName: string | null;
|
|
18
18
|
bio: string | null;
|
|
19
|
+
profileReadme: string | null;
|
|
19
20
|
websiteUrl: string | null;
|
|
20
21
|
blogUrl: string | null;
|
|
21
22
|
xUrl: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,UAAU,GACV,KAAK,GACL,QAAQ,GACR,SAAS,CAAA;AAEb,MAAM,MAAM,YAAY,GAAG;IACzB,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,gBAAgB,CAAA;IACtB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAID,eAAO,MAAM,cAAc,EAAE,YAAY,EA6CxC,CAAA;AAID,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAID,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAahC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,GACV,eAAe,CA4BjB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAC7C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAA;CAAE,GAC7D;IACE,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd,CAsCJ;AAED,qCAAqC;AACrC,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAKxE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAgCxE;AAgVD,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B3D"}
|
package/dist/commands/profile.js
CHANGED
|
@@ -19,6 +19,12 @@ const ME_PATH = '/api/hackers/me?src=cli';
|
|
|
19
19
|
export const PROFILE_FIELDS = [
|
|
20
20
|
{ key: 'displayName', name: 'name', kind: 'text', hint: 'display name' },
|
|
21
21
|
{ key: 'bio', name: 'bio', kind: 'text', hint: 'short bio' },
|
|
22
|
+
{
|
|
23
|
+
key: 'profileReadme',
|
|
24
|
+
name: 'readme',
|
|
25
|
+
kind: 'markdown',
|
|
26
|
+
hint: 'markdown or --file profile.md',
|
|
27
|
+
},
|
|
22
28
|
{ key: 'websiteUrl', name: 'website', kind: 'url', hint: 'your-site.com' },
|
|
23
29
|
{ key: 'blogUrl', name: 'blog', kind: 'url', hint: 'your-blog.com' },
|
|
24
30
|
{
|
|
@@ -85,8 +91,9 @@ export function normalizeFieldValue(field, raw) {
|
|
|
85
91
|
return { ok: true, value: false };
|
|
86
92
|
return { ok: false, error: `${field.name} must be yes or no` };
|
|
87
93
|
}
|
|
88
|
-
if (field.kind === 'text')
|
|
94
|
+
if (field.kind === 'text' || field.kind === 'markdown') {
|
|
89
95
|
return { ok: true, value: trimmed };
|
|
96
|
+
}
|
|
90
97
|
if (field.kind === 'handle' && field.base && field.strip) {
|
|
91
98
|
const cleaned = stripAll(field.strip, trimmed).replace(/^@/, '');
|
|
92
99
|
if (!cleaned)
|
|
@@ -146,6 +153,8 @@ export function displayValue(field, value) {
|
|
|
146
153
|
return value ? 'yes' : 'no';
|
|
147
154
|
if (value == null || value === '')
|
|
148
155
|
return '';
|
|
156
|
+
if (field.kind === 'markdown')
|
|
157
|
+
return `${String(value).length} chars`;
|
|
149
158
|
return String(value);
|
|
150
159
|
}
|
|
151
160
|
export function renderProfile(profile, appUrl) {
|
|
@@ -180,14 +189,17 @@ export function renderProfile(profile, appUrl) {
|
|
|
180
189
|
function printJson(data) {
|
|
181
190
|
console.log(JSON.stringify(data, null, 2));
|
|
182
191
|
}
|
|
183
|
-
function usage() {
|
|
184
|
-
|
|
192
|
+
function usage(exitCode = 1) {
|
|
193
|
+
if (exitCode === 0)
|
|
194
|
+
info('usage: hacklab profile [view|set|edit|apply]');
|
|
195
|
+
else
|
|
196
|
+
error('usage: hacklab profile [view|set|edit|apply]');
|
|
185
197
|
info(` hacklab profile ${dim('view [--json]')} show your profile`);
|
|
186
|
-
info(` hacklab profile ${dim('set <field> <value>')} set one field (--
|
|
198
|
+
info(` hacklab profile ${dim('set <field> <value>')} set one field (--file for long content, --clear to unset)`);
|
|
187
199
|
info(` hacklab profile ${dim('edit')} interactive editor`);
|
|
188
200
|
info(` hacklab profile ${dim('apply <file> [--json]')} apply fields from a yaml/json file`);
|
|
189
201
|
info(` fields: ${dim(FIELD_NAMES.join(', '))}`);
|
|
190
|
-
process.exit(
|
|
202
|
+
process.exit(exitCode);
|
|
191
203
|
}
|
|
192
204
|
async function fetchProfile(session) {
|
|
193
205
|
const res = await fetchApi(session, ME_PATH, {
|
|
@@ -239,7 +251,24 @@ async function profileView(args) {
|
|
|
239
251
|
async function profileSet(args) {
|
|
240
252
|
const json = args.includes('--json');
|
|
241
253
|
const clear = args.includes('--clear');
|
|
242
|
-
const
|
|
254
|
+
const fileFlagIndex = args.indexOf('--file');
|
|
255
|
+
const filePath = fileFlagIndex >= 0 ? args[fileFlagIndex + 1] : undefined;
|
|
256
|
+
if (fileFlagIndex >= 0 && (!filePath || filePath.startsWith('-'))) {
|
|
257
|
+
if (json)
|
|
258
|
+
emitJsonError('invalid_fields', '--file requires a path');
|
|
259
|
+
error('--file requires a path');
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
const ignoredIndexes = new Set();
|
|
263
|
+
for (const [index, arg] of args.entries()) {
|
|
264
|
+
if (arg === '--json' || arg === '--clear')
|
|
265
|
+
ignoredIndexes.add(index);
|
|
266
|
+
}
|
|
267
|
+
if (fileFlagIndex >= 0) {
|
|
268
|
+
ignoredIndexes.add(fileFlagIndex);
|
|
269
|
+
ignoredIndexes.add(fileFlagIndex + 1);
|
|
270
|
+
}
|
|
271
|
+
const rest = args.filter((_, index) => !ignoredIndexes.has(index));
|
|
243
272
|
const [fieldToken, ...valueParts] = rest;
|
|
244
273
|
if (!fieldToken)
|
|
245
274
|
usage();
|
|
@@ -260,7 +289,34 @@ async function profileSet(args) {
|
|
|
260
289
|
const field = PROFILE_FIELDS.find((f) => f.name === resolved.name);
|
|
261
290
|
if (!field)
|
|
262
291
|
usage();
|
|
263
|
-
|
|
292
|
+
if (clear && filePath) {
|
|
293
|
+
if (json)
|
|
294
|
+
emitJsonError('invalid_fields', 'use either --file or --clear');
|
|
295
|
+
error('use either --file or --clear');
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
if (filePath && valueParts.length > 0) {
|
|
299
|
+
if (json)
|
|
300
|
+
emitJsonError('invalid_fields', 'pass either a value or --file, not both');
|
|
301
|
+
error('pass either a value or --file, not both');
|
|
302
|
+
process.exit(1);
|
|
303
|
+
}
|
|
304
|
+
let rawValue = valueParts.join(' ');
|
|
305
|
+
if (filePath) {
|
|
306
|
+
try {
|
|
307
|
+
rawValue = await readFile(filePath, 'utf8');
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
const code = err.code;
|
|
311
|
+
const message = code === 'ENOENT'
|
|
312
|
+
? `file not found: ${filePath}`
|
|
313
|
+
: `could not read ${filePath}`;
|
|
314
|
+
if (json)
|
|
315
|
+
emitJsonError('read_failed', message);
|
|
316
|
+
error(message);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
264
320
|
if (!clear && !rawValue.trim()) {
|
|
265
321
|
if (json)
|
|
266
322
|
emitJsonError('invalid_fields', 'pass a value, or --clear');
|
|
@@ -448,6 +504,9 @@ async function profileEdit() {
|
|
|
448
504
|
}
|
|
449
505
|
export async function profile(args) {
|
|
450
506
|
const [subToken, ...rest] = args;
|
|
507
|
+
if (subToken === '--help' || subToken === '-h' || subToken === 'help') {
|
|
508
|
+
usage(0);
|
|
509
|
+
}
|
|
451
510
|
// Bare `hacklab profile` shows the profile — the safe default; editing is
|
|
452
511
|
// an explicit `edit` away.
|
|
453
512
|
if (!subToken || subToken.startsWith('-')) {
|