hacklab 0.10.1 → 0.10.3
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 +54 -26
- package/dist/commands/demon.d.ts +15 -0
- package/dist/commands/demon.d.ts.map +1 -0
- package/dist/commands/demon.js +63 -0
- package/dist/commands/demon.js.map +1 -0
- package/dist/commands/hackathon.d.ts.map +1 -1
- package/dist/commands/hackathon.js +140 -3
- package/dist/commands/hackathon.js.map +1 -1
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +8 -21
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/org.d.ts +34 -0
- package/dist/commands/org.d.ts.map +1 -1
- package/dist/commands/org.js +269 -2
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +11 -29
- package/dist/commands/sync.js.map +1 -1
- package/dist/registry.d.ts +6 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +15 -4
- package/dist/registry.js.map +1 -1
- package/dist/resolve-command.d.ts +5 -1
- package/dist/resolve-command.d.ts.map +1 -1
- package/dist/resolve-command.js +19 -3
- package/dist/resolve-command.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/join.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as clack from '@clack/prompts';
|
|
2
2
|
import { beltForTokens } from '../belt.js';
|
|
3
3
|
import { loadConfig, resolveCursorAuth, saveConfig } from '../config.js';
|
|
4
|
-
import { installDailySync } from '../daily-sync.js';
|
|
5
4
|
import { captureEvent, identifyUser } from '../posthog.js';
|
|
6
5
|
import { referralUrl } from '../referral.js';
|
|
7
6
|
import { collectToolScans, computeStreaks, detectCursorUsage, formatTokens, mergeToolScans, rescanCursorWithApi, } from '../scanners/index.js';
|
|
@@ -252,25 +251,6 @@ export async function join(opts = {}) {
|
|
|
252
251
|
spin.stop('github projects synced');
|
|
253
252
|
}
|
|
254
253
|
clack.log.success(`${bold('claimed.')} ${base}/${claimedHandle}`);
|
|
255
|
-
// Set up the OS-native daily background sync so usage, streaks, and the
|
|
256
|
-
// retention signal stay fresh without the user remembering to run
|
|
257
|
-
// `hacklab sync`. Best-effort: installDailySync never throws (it falls back
|
|
258
|
-
// to printable instructions), and a non-ok result stays quiet here — the join
|
|
259
|
-
// ritual shouldn't dump scheduler config; `hacklab sync --install-daily`
|
|
260
|
-
// prints it on demand. Torn down again by `hacklab logout`.
|
|
261
|
-
const daily = await installDailySync();
|
|
262
|
-
if (daily.ok) {
|
|
263
|
-
info(dim(`daily sync scheduled (${daily.mechanism})`));
|
|
264
|
-
await captureEvent(claimedHandle, 'cli_daily_sync_installed', {
|
|
265
|
-
mechanism: daily.mechanism,
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
else if (daily.instructions) {
|
|
269
|
-
// Platform we don't auto-schedule on (e.g. BSD) or a failed scheduler
|
|
270
|
-
// write: surface the copy-paste cron command instead of silently shipping
|
|
271
|
-
// no daily sync at all.
|
|
272
|
-
info(dim(daily.instructions));
|
|
273
|
-
}
|
|
274
254
|
if (claimedSession.email) {
|
|
275
255
|
await identifyUser(claimedHandle, {
|
|
276
256
|
$set: {
|
|
@@ -321,7 +301,14 @@ export async function join(opts = {}) {
|
|
|
321
301
|
clack.note(`${bold(referralUrl(claimedHandle, base))}\n\n` +
|
|
322
302
|
'Send it to your smartest hacker friends. The more of your crew here,\n' +
|
|
323
303
|
'the better the network — they join, you both climb the ranks.', 'invite your crew');
|
|
324
|
-
|
|
304
|
+
// Point at the daemon instead of scheduling it here. Onboarding makes it its
|
|
305
|
+
// own step, and a background job installed on someone's machine as a silent
|
|
306
|
+
// side effect of joining is exactly the kind of thing that should be a
|
|
307
|
+
// deliberate command they ran.
|
|
308
|
+
clack.note(`${bold('hacklab demon')}\n\n` +
|
|
309
|
+
'Schedules a daily background re-scan so your tokens, rank, and streak\n' +
|
|
310
|
+
'stay current without you running anything. No daemon, no streak.', 'next: summon the daemon');
|
|
311
|
+
clack.outro(dim('run `hacklab demon`, then return to onboarding for your bio and drop.'));
|
|
325
312
|
}
|
|
326
313
|
/** The per-tool token lines + grand total shown after a scan. */
|
|
327
314
|
function printToolTotals(scan) {
|
|
@@ -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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"}
|
package/dist/commands/org.d.ts
CHANGED
|
@@ -9,11 +9,45 @@ type ClaimableOrg = {
|
|
|
9
9
|
export declare function claimReason(via: ClaimableOrg['via']): string;
|
|
10
10
|
export declare function slugify(name: string): string;
|
|
11
11
|
export declare function displayValue(spec: Pick<OrgFieldSpec, 'type'>, value: unknown): string;
|
|
12
|
+
type Claimant = {
|
|
13
|
+
handle: string | null;
|
|
14
|
+
displayName: string | null;
|
|
15
|
+
email: string;
|
|
16
|
+
grantedBy: string | null;
|
|
17
|
+
since: string;
|
|
18
|
+
isYou: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Map an access-route refusal to a stable code.
|
|
22
|
+
*
|
|
23
|
+
* The route answers with a bare `{ error: "<sentence>" }` — no machine code —
|
|
24
|
+
* and it reuses 404 for three different refusals. Classifying on the message is
|
|
25
|
+
* the only way to tell them apart, and telling them apart is the point: "there
|
|
26
|
+
* is no such account" and "that account doesn't control this org" send the
|
|
27
|
+
* caller to completely different next steps. Unrecognized text falls back to a
|
|
28
|
+
* generic code rather than guessing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function accessErrorCode(status: number, message: string): string;
|
|
31
|
+
/** What the caller can do about a refusal. Printed to stderr, never stdout. */
|
|
32
|
+
export declare function accessErrorHint(code: string): string | null;
|
|
12
33
|
/** Pull `--flag <value>` out of argv; returns the value and the rest. */
|
|
13
34
|
export declare function extractOption(args: string[], flag: string): {
|
|
14
35
|
value: string | undefined;
|
|
15
36
|
rest: string[];
|
|
16
37
|
};
|
|
38
|
+
/** Trim and drop a leading @, so `@marin` and `marin` both work. */
|
|
39
|
+
export declare function normalizeHandle(raw: string): string;
|
|
40
|
+
/** `@handle`, falling back to the email when there's no hacker profile yet. */
|
|
41
|
+
export declare function claimantLabel(claimant: Pick<Claimant, 'handle' | 'email'>): string;
|
|
42
|
+
/**
|
|
43
|
+
* The "granted by" column.
|
|
44
|
+
*
|
|
45
|
+
* `grantedBy` is a raw user id — the route has no handle for it — so there is
|
|
46
|
+
* nothing here to turn it into a name. It prints truncated: long enough to tell
|
|
47
|
+
* two granters apart at a glance, short enough not to swamp the row. The full
|
|
48
|
+
* value is in `--json`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function grantedByLabel(grantedBy: string | null): string;
|
|
17
51
|
export declare function org(args?: string[]): Promise<void>;
|
|
18
52
|
export {};
|
|
19
53
|
//# sourceMappingURL=org.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/commands/org.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAA;AAiDzB,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEvB,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;CAClC,CAAA;AAKD,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAI5D;AAiBD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS5C;AAID,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAChC,KAAK,EAAE,OAAO,GACb,MAAM,CAQR;AAuFD,KAAK,QAAQ,GAAG;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IAGb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAcD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAWvE;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc3D;AA4FD,yEAAyE;AACzE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAW/C;AA2XD,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAcD,+EAA+E;AAC/E,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAC3C,MAAM,CAGR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI/D;AAsjBD,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC5D"}
|
package/dist/commands/org.js
CHANGED
|
@@ -6,7 +6,7 @@ import { ensureScheme } from '../field-normalize.js';
|
|
|
6
6
|
import { normalizeOrgFieldValue, ORG_FIELD_NAMES, ORG_FIELDS, parseOrgDocument, resolveTargetOrg, } from '../org-fields.js';
|
|
7
7
|
import { resolveCommand } from '../resolve-command.js';
|
|
8
8
|
import { resolveAppUrl, unauthorizedHint } from '../session.js';
|
|
9
|
-
import { bold, dim, error, info, success } from '../ui.js';
|
|
9
|
+
import { bold, dim, displayWidth, error, hint, info, padEndTo, stripControl, success, } from '../ui.js';
|
|
10
10
|
// `hacklab org` is a small hub with two audiences. Humans: the bare command
|
|
11
11
|
// edits (autosave editor), `claim` / `create` run interactive flows, and the
|
|
12
12
|
// no-org case dead-ends into a claim/create menu. Agents: `list` / `view` /
|
|
@@ -21,7 +21,13 @@ const SUBCOMMANDS = [
|
|
|
21
21
|
'claim',
|
|
22
22
|
'create',
|
|
23
23
|
'edit',
|
|
24
|
+
'access',
|
|
24
25
|
];
|
|
26
|
+
// `hacklab org access <list|grant|revoke>` — who controls the org. Nested like
|
|
27
|
+
// `hackathon team <verb>` because "grant"/"revoke" mean nothing on their own at
|
|
28
|
+
// the `org` level. Note `org a` is now ambiguous (access/apply); `org ap` and
|
|
29
|
+
// `org ac` still resolve.
|
|
30
|
+
const ACCESS_SUBCOMMANDS = ['list', 'grant', 'revoke'];
|
|
25
31
|
// Must match ORG_SLUG_PATTERN on the server (apps/web/lib/org-payload.ts).
|
|
26
32
|
const SLUG_PATTERN = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
|
|
27
33
|
// Human hint for why a company is claimable.
|
|
@@ -131,11 +137,91 @@ async function postCreate(session, fields) {
|
|
|
131
137
|
}
|
|
132
138
|
throw new Error(data?.error ?? `create failed (${res.status})`);
|
|
133
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Map an access-route refusal to a stable code.
|
|
142
|
+
*
|
|
143
|
+
* The route answers with a bare `{ error: "<sentence>" }` — no machine code —
|
|
144
|
+
* and it reuses 404 for three different refusals. Classifying on the message is
|
|
145
|
+
* the only way to tell them apart, and telling them apart is the point: "there
|
|
146
|
+
* is no such account" and "that account doesn't control this org" send the
|
|
147
|
+
* caller to completely different next steps. Unrecognized text falls back to a
|
|
148
|
+
* generic code rather than guessing.
|
|
149
|
+
*/
|
|
150
|
+
export function accessErrorCode(status, message) {
|
|
151
|
+
if (status === 401)
|
|
152
|
+
return 'unauthorized';
|
|
153
|
+
if (status === 403)
|
|
154
|
+
return 'forbidden';
|
|
155
|
+
if (status === 409)
|
|
156
|
+
return 'last_claimant';
|
|
157
|
+
if (status === 400)
|
|
158
|
+
return 'invalid_args';
|
|
159
|
+
if (status === 404) {
|
|
160
|
+
if (/^no hacklab account/i.test(message))
|
|
161
|
+
return 'no_such_account';
|
|
162
|
+
if (/does not control/i.test(message))
|
|
163
|
+
return 'not_a_claimant';
|
|
164
|
+
return 'org_not_found';
|
|
165
|
+
}
|
|
166
|
+
return 'error';
|
|
167
|
+
}
|
|
168
|
+
/** What the caller can do about a refusal. Printed to stderr, never stdout. */
|
|
169
|
+
export function accessErrorHint(code) {
|
|
170
|
+
if (code === 'last_claimant') {
|
|
171
|
+
return 'grant control to someone else first: `hacklab org access grant <handle>`';
|
|
172
|
+
}
|
|
173
|
+
if (code === 'no_such_account') {
|
|
174
|
+
return 'handles are hacklab usernames — check one with `hacklab hacker view <handle>`';
|
|
175
|
+
}
|
|
176
|
+
if (code === 'not_a_claimant') {
|
|
177
|
+
return 'see who controls it with `hacklab org access list`';
|
|
178
|
+
}
|
|
179
|
+
if (code === 'forbidden' || code === 'org_not_found') {
|
|
180
|
+
return 'you no longer control this company — `hacklab org list` shows the ones you do';
|
|
181
|
+
}
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Call the access route. Returns the parsed body, or the classified refusal —
|
|
186
|
+
* refusals are values here (not throws) because every caller maps them to a
|
|
187
|
+
* code and a hint rather than to one generic message.
|
|
188
|
+
*/
|
|
189
|
+
async function accessRequest(session, method, query, body) {
|
|
190
|
+
const url = new URL(`${resolveAppUrl(session)}/api/cli/org/access`);
|
|
191
|
+
for (const [key, value] of Object.entries(query)) {
|
|
192
|
+
url.searchParams.set(key, value);
|
|
193
|
+
}
|
|
194
|
+
let res;
|
|
195
|
+
try {
|
|
196
|
+
res = await fetch(url, {
|
|
197
|
+
method,
|
|
198
|
+
headers: {
|
|
199
|
+
Authorization: `Bearer ${session.token}`,
|
|
200
|
+
...(body ? { 'Content-Type': 'application/json' } : {}),
|
|
201
|
+
},
|
|
202
|
+
...(body ? { body: JSON.stringify(body) } : {}),
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
return {
|
|
207
|
+
ok: false,
|
|
208
|
+
code: 'error',
|
|
209
|
+
message: err instanceof Error ? err.message : String(err),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const data = (await res.json().catch(() => null));
|
|
213
|
+
if (res.ok)
|
|
214
|
+
return { ok: true, data: data };
|
|
215
|
+
const message = res.status === 401
|
|
216
|
+
? unauthorizedHint(session)
|
|
217
|
+
: (data?.error ?? `request failed (${res.status})`);
|
|
218
|
+
return { ok: false, code: accessErrorCode(res.status, message), message };
|
|
219
|
+
}
|
|
134
220
|
// ---------------------------------------------------------------------------
|
|
135
221
|
// Agent verbs: list / view / set / apply / claim <slug> / create --name.
|
|
136
222
|
// Non-interactive, all take --json; one envelope shape with profile/hacker.
|
|
137
223
|
function usage() {
|
|
138
|
-
error('usage: hacklab org [list|view|set|apply|claim|create]');
|
|
224
|
+
error('usage: hacklab org [list|view|set|apply|claim|create|access]');
|
|
139
225
|
info(` hacklab org ${dim('interactive editor (claim/create hub)')}`);
|
|
140
226
|
info(` hacklab org ${dim('list [--json]')} orgs you manage + orgs you can claim`);
|
|
141
227
|
info(` hacklab org ${dim('view [--org <slug>] [--json]')}`);
|
|
@@ -143,6 +229,8 @@ function usage() {
|
|
|
143
229
|
info(` hacklab org ${dim('apply <file|-> [--org <slug>] [--json]')}`);
|
|
144
230
|
info(` hacklab org ${dim('claim <slug> [--json]')}`);
|
|
145
231
|
info(` hacklab org ${dim('create --name <name> [--slug <slug>] [--website <url>] [--description <text>] [--json]')}`);
|
|
232
|
+
info(` hacklab org ${dim('access [list] [--org <slug>] [--json]')} who controls it`);
|
|
233
|
+
info(` hacklab org ${dim('access grant|revoke <handle> [--org <slug>] [--json]')}`);
|
|
146
234
|
info(` fields: ${dim(ORG_FIELD_NAMES.join(', '))}`);
|
|
147
235
|
process.exit(1);
|
|
148
236
|
}
|
|
@@ -468,6 +556,183 @@ async function orgCreateDirect(args) {
|
|
|
468
556
|
process.exit(1);
|
|
469
557
|
}
|
|
470
558
|
// ---------------------------------------------------------------------------
|
|
559
|
+
// access: who controls this org. list / grant <handle> / revoke <handle>.
|
|
560
|
+
// People are named by hacklab handle — the identifier an organizer actually
|
|
561
|
+
// knows about a colleague — matching how the server takes them.
|
|
562
|
+
function accessUsage() {
|
|
563
|
+
error('usage: hacklab org access [list|grant|revoke]');
|
|
564
|
+
info(` hacklab org access ${dim('[list] [--org <slug>] [--json]')} who controls it`);
|
|
565
|
+
info(` hacklab org access ${dim('grant <handle> [--org <slug>] [--json]')}`);
|
|
566
|
+
info(` hacklab org access ${dim('revoke <handle> [--org <slug>] [--json]')}`);
|
|
567
|
+
hint('revoking yourself is allowed — the last controller is not');
|
|
568
|
+
process.exit(1);
|
|
569
|
+
}
|
|
570
|
+
/** Like fail(), plus the "what to do instead" line on stderr. */
|
|
571
|
+
function accessFail(json, code, message) {
|
|
572
|
+
if (json)
|
|
573
|
+
emitJsonError(code, message);
|
|
574
|
+
error(message);
|
|
575
|
+
const tip = accessErrorHint(code);
|
|
576
|
+
if (tip)
|
|
577
|
+
hint(tip);
|
|
578
|
+
process.exit(1);
|
|
579
|
+
}
|
|
580
|
+
/** Trim and drop a leading @, so `@marin` and `marin` both work. */
|
|
581
|
+
export function normalizeHandle(raw) {
|
|
582
|
+
return raw.trim().replace(/^@+/, '').trim();
|
|
583
|
+
}
|
|
584
|
+
/** Session + the org these verbs act on, resolved exactly like the other verbs. */
|
|
585
|
+
async function accessTarget(orgSlug, json) {
|
|
586
|
+
const session = await requireSession(json);
|
|
587
|
+
const state = await loadState(session, json);
|
|
588
|
+
const target = resolveTargetOrg(state.organizations, orgSlug);
|
|
589
|
+
if (!target.ok)
|
|
590
|
+
fail(json, target.code, target.error);
|
|
591
|
+
return { session, org: target.org };
|
|
592
|
+
}
|
|
593
|
+
/** `@handle`, falling back to the email when there's no hacker profile yet. */
|
|
594
|
+
export function claimantLabel(claimant) {
|
|
595
|
+
const handle = claimant.handle?.trim();
|
|
596
|
+
return handle ? `@${stripControl(handle)}` : stripControl(claimant.email);
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* The "granted by" column.
|
|
600
|
+
*
|
|
601
|
+
* `grantedBy` is a raw user id — the route has no handle for it — so there is
|
|
602
|
+
* nothing here to turn it into a name. It prints truncated: long enough to tell
|
|
603
|
+
* two granters apart at a glance, short enough not to swamp the row. The full
|
|
604
|
+
* value is in `--json`.
|
|
605
|
+
*/
|
|
606
|
+
export function grantedByLabel(grantedBy) {
|
|
607
|
+
if (!grantedBy)
|
|
608
|
+
return 'original claim';
|
|
609
|
+
const id = stripControl(grantedBy);
|
|
610
|
+
return `granted by ${id.length > 12 ? `${id.slice(0, 12)}…` : id}`;
|
|
611
|
+
}
|
|
612
|
+
function accessRows(claimants) {
|
|
613
|
+
const rows = claimants.map((c) => ({
|
|
614
|
+
who: claimantLabel(c),
|
|
615
|
+
name: stripControl(c.displayName?.trim() || ''),
|
|
616
|
+
meta: [
|
|
617
|
+
c.isYou ? 'you' : null,
|
|
618
|
+
grantedByLabel(c.grantedBy),
|
|
619
|
+
`since ${new Date(c.since).toLocaleDateString()}`,
|
|
620
|
+
]
|
|
621
|
+
.filter(Boolean)
|
|
622
|
+
.join(' · '),
|
|
623
|
+
}));
|
|
624
|
+
const whoWidth = Math.max(...rows.map((r) => displayWidth(r.who)));
|
|
625
|
+
const nameWidth = Math.max(...rows.map((r) => displayWidth(r.name)));
|
|
626
|
+
return rows.map((r) => ` ${bold(padEndTo(r.who, whoWidth))} ${padEndTo(r.name, nameWidth)} ${dim(r.meta)}`);
|
|
627
|
+
}
|
|
628
|
+
async function accessList(args) {
|
|
629
|
+
const json = args.includes('--json');
|
|
630
|
+
const { value: orgSlug } = extractOption(args.filter((a) => a !== '--json'), '--org');
|
|
631
|
+
const { session, org } = await accessTarget(orgSlug, json);
|
|
632
|
+
const result = await accessRequest(session, 'GET', {
|
|
633
|
+
orgSlug: org.slug,
|
|
634
|
+
});
|
|
635
|
+
if (!result.ok)
|
|
636
|
+
accessFail(json, result.code, result.message);
|
|
637
|
+
const { organization, claimants } = result.data;
|
|
638
|
+
if (json) {
|
|
639
|
+
printJson({ organization, claimants });
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
console.log(` ${bold(organization.name)} ${dim(`/o/${organization.slug}`)}`);
|
|
643
|
+
console.log('');
|
|
644
|
+
// The route only answers for an org you control, so you are always in here —
|
|
645
|
+
// an empty list would mean the org lost its last controller, which revoke
|
|
646
|
+
// refuses to allow. Handled anyway rather than crashing on Math.max of [].
|
|
647
|
+
if (claimants.length === 0) {
|
|
648
|
+
info('nobody controls this company');
|
|
649
|
+
}
|
|
650
|
+
else {
|
|
651
|
+
console.log(accessRows(claimants).join('\n'));
|
|
652
|
+
}
|
|
653
|
+
console.log('');
|
|
654
|
+
info(`grant control with ${dim('hacklab org access grant <handle>')}`);
|
|
655
|
+
}
|
|
656
|
+
async function accessGrant(args) {
|
|
657
|
+
const json = args.includes('--json');
|
|
658
|
+
const { value: orgSlug, rest } = extractOption(args.filter((a) => a !== '--json'), '--org');
|
|
659
|
+
const raw = rest.find((a) => !a.startsWith('-'));
|
|
660
|
+
const handle = raw ? normalizeHandle(raw) : '';
|
|
661
|
+
if (!handle) {
|
|
662
|
+
fail(json, 'invalid_args', 'pass the handle to grant control to');
|
|
663
|
+
}
|
|
664
|
+
const { session, org } = await accessTarget(orgSlug, json);
|
|
665
|
+
const result = await accessRequest(session, 'POST', {}, { orgSlug: org.slug, handle });
|
|
666
|
+
if (!result.ok)
|
|
667
|
+
accessFail(json, result.code, result.message);
|
|
668
|
+
const already = result.data.status === 'already_claimed';
|
|
669
|
+
if (json) {
|
|
670
|
+
printJson({
|
|
671
|
+
organization: { id: org.id, name: org.name, slug: org.slug },
|
|
672
|
+
handle,
|
|
673
|
+
status: result.data.status,
|
|
674
|
+
});
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
if (already) {
|
|
678
|
+
success(`@${handle} already controls ${bold(org.name)}`);
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
success(`@${handle} now controls ${bold(org.name)}`);
|
|
682
|
+
info(`they can edit it with ${dim('hacklab org')}`);
|
|
683
|
+
}
|
|
684
|
+
async function accessRevoke(args) {
|
|
685
|
+
const json = args.includes('--json');
|
|
686
|
+
const { value: orgSlug, rest } = extractOption(args.filter((a) => a !== '--json'), '--org');
|
|
687
|
+
const raw = rest.find((a) => !a.startsWith('-'));
|
|
688
|
+
const handle = raw ? normalizeHandle(raw) : '';
|
|
689
|
+
if (!handle) {
|
|
690
|
+
fail(json, 'invalid_args', 'pass the handle to revoke control from');
|
|
691
|
+
}
|
|
692
|
+
const { session, org } = await accessTarget(orgSlug, json);
|
|
693
|
+
const result = await accessRequest(session, 'DELETE', {
|
|
694
|
+
orgSlug: org.slug,
|
|
695
|
+
handle,
|
|
696
|
+
});
|
|
697
|
+
if (!result.ok)
|
|
698
|
+
accessFail(json, result.code, result.message);
|
|
699
|
+
if (json) {
|
|
700
|
+
printJson({
|
|
701
|
+
organization: { id: org.id, name: org.name, slug: org.slug },
|
|
702
|
+
handle,
|
|
703
|
+
status: result.data.status,
|
|
704
|
+
});
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
707
|
+
// Removing yourself is a supported move, and it reads very differently.
|
|
708
|
+
if (session.handle && normalizeHandle(session.handle) === handle) {
|
|
709
|
+
success(`you no longer control ${bold(org.name)}`);
|
|
710
|
+
return;
|
|
711
|
+
}
|
|
712
|
+
success(`@${handle} no longer controls ${bold(org.name)}`);
|
|
713
|
+
}
|
|
714
|
+
async function orgAccess(args) {
|
|
715
|
+
const [subToken, ...rest] = args;
|
|
716
|
+
// Bare `org access` (and `org access --json`) is the list — the cheapest read.
|
|
717
|
+
if (!subToken || subToken.startsWith('-'))
|
|
718
|
+
return accessList(args);
|
|
719
|
+
const resolved = resolveCommand(subToken, ACCESS_SUBCOMMANDS);
|
|
720
|
+
if (resolved.kind === 'ambiguous') {
|
|
721
|
+
error(`ambiguous: org access ${subToken} (${resolved.matches.join(', ')})`);
|
|
722
|
+
process.exit(1);
|
|
723
|
+
}
|
|
724
|
+
if (resolved.kind === 'unknown') {
|
|
725
|
+
error(`unknown subcommand: org access ${subToken}`);
|
|
726
|
+
accessUsage();
|
|
727
|
+
}
|
|
728
|
+
if (resolved.name === 'list')
|
|
729
|
+
return accessList(rest);
|
|
730
|
+
if (resolved.name === 'grant')
|
|
731
|
+
return accessGrant(rest);
|
|
732
|
+
if (resolved.name === 'revoke')
|
|
733
|
+
return accessRevoke(rest);
|
|
734
|
+
}
|
|
735
|
+
// ---------------------------------------------------------------------------
|
|
471
736
|
// Interactive flows (unchanged behavior): the human editor and claim/create.
|
|
472
737
|
// Prompt for one field, prefilled with the current value. Returns the new
|
|
473
738
|
// value to send, or a clack cancel symbol.
|
|
@@ -886,6 +1151,8 @@ export async function org(args = []) {
|
|
|
886
1151
|
return orgApply(rest);
|
|
887
1152
|
if (resolved.name === 'edit')
|
|
888
1153
|
return orgInteractive('edit');
|
|
1154
|
+
if (resolved.name === 'access')
|
|
1155
|
+
return orgAccess(rest);
|
|
889
1156
|
if (resolved.name === 'claim') {
|
|
890
1157
|
// A slug (or --json) makes it non-interactive; bare `claim` keeps the picker.
|
|
891
1158
|
const direct = rest.some((a) => !a.startsWith('-')) || rest.includes('--json');
|