hacklab 0.0.1 → 0.0.2
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 +8 -9
- package/dist/api/client.d.ts +42 -10
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +32 -0
- package/dist/api/client.js.map +1 -1
- package/dist/commands/admin-waitlist.d.ts +12 -0
- package/dist/commands/admin-waitlist.d.ts.map +1 -0
- package/dist/commands/admin-waitlist.js +96 -0
- package/dist/commands/admin-waitlist.js.map +1 -0
- package/dist/commands/explore.d.ts +9 -0
- package/dist/commands/explore.d.ts.map +1 -0
- package/dist/commands/explore.js +32 -0
- package/dist/commands/explore.js.map +1 -0
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +33 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +47 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +23 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +88 -102
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +14 -0
- package/dist/session.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -4,14 +4,13 @@ hacklab cli package.
|
|
|
4
4
|
|
|
5
5
|
## commands
|
|
6
6
|
|
|
7
|
-
- `hacklab
|
|
8
|
-
- `hacklab brag` - from a project repo, generate `.hacklab/repo.json` and add a draft project entry to your hq automatically.
|
|
9
|
-
- `hacklab login` - open browser login and store local session.
|
|
7
|
+
- `hacklab login` - authenticate via browser oauth or non-interactive token (`--token`).
|
|
10
8
|
- `hacklab whoami` - show current logged in user.
|
|
11
|
-
- `hacklab init` - initialize current repo as
|
|
12
|
-
- `hacklab link` - link an existing repo to hacklab by creating `.hacklab/config.json` only.
|
|
9
|
+
- `hacklab init` - create or initialize current repo as your hq repository.
|
|
13
10
|
- `hacklab new` - interactive content creation (`essay`, `guide`, `course`, `research paper`, `project`).
|
|
14
|
-
- `hacklab
|
|
11
|
+
- `hacklab publish` - push current hq repo to github.
|
|
12
|
+
- `hacklab explore` - open hacklab discovery in browser.
|
|
13
|
+
- `hacklab admin waitlist` - admin-only waitlist inspection (visible only for DEV/GOD accounts).
|
|
15
14
|
|
|
16
15
|
## repository layout
|
|
17
16
|
|
|
@@ -50,13 +49,13 @@ from repo root:
|
|
|
50
49
|
|
|
51
50
|
```bash
|
|
52
51
|
pnpm --filter @hacklab/cli build
|
|
53
|
-
node packages/cli/dist/index.js
|
|
54
|
-
node packages/cli/dist/index.js brag
|
|
52
|
+
node packages/cli/dist/index.js login --token <cli-access-token>
|
|
55
53
|
node packages/cli/dist/index.js init --name matts-lab
|
|
56
|
-
node packages/cli/dist/index.js link --name matts-lab
|
|
57
54
|
node packages/cli/dist/index.js new
|
|
58
55
|
node packages/cli/dist/index.js new guide api-design-primer
|
|
59
56
|
node packages/cli/dist/index.js new research-paper llm-evals-2026
|
|
57
|
+
node packages/cli/dist/index.js publish
|
|
58
|
+
node packages/cli/dist/index.js explore
|
|
60
59
|
```
|
|
61
60
|
|
|
62
61
|
environment variables:
|
package/dist/api/client.d.ts
CHANGED
|
@@ -6,6 +6,21 @@ export type StartCliAuthResponse = {
|
|
|
6
6
|
type StartCliAuthOptions = {
|
|
7
7
|
nickname?: string;
|
|
8
8
|
};
|
|
9
|
+
export type CliIdentityUser = {
|
|
10
|
+
id: string;
|
|
11
|
+
email: string;
|
|
12
|
+
name: string | null;
|
|
13
|
+
systemMode: 'NORMAL' | 'DEV' | 'GOD' | 'TESTER';
|
|
14
|
+
type?: 'HUMAN' | 'AGENT';
|
|
15
|
+
ownerId?: string | null;
|
|
16
|
+
agent?: {
|
|
17
|
+
id: string;
|
|
18
|
+
slug: string;
|
|
19
|
+
name: string;
|
|
20
|
+
claimState: 'UNCLAIMED' | 'CLAIMED';
|
|
21
|
+
status: 'ACTIVE' | 'PAUSED' | 'ARCHIVED';
|
|
22
|
+
} | null;
|
|
23
|
+
};
|
|
9
24
|
export type ExchangeCliAuthResponse = {
|
|
10
25
|
status: 'pending';
|
|
11
26
|
} | {
|
|
@@ -18,22 +33,39 @@ export type ExchangeCliAuthResponse = {
|
|
|
18
33
|
status: 'approved';
|
|
19
34
|
accessToken: string;
|
|
20
35
|
expiresAt: string;
|
|
21
|
-
user:
|
|
22
|
-
id: string;
|
|
23
|
-
email: string;
|
|
24
|
-
name: string | null;
|
|
25
|
-
};
|
|
36
|
+
user: CliIdentityUser;
|
|
26
37
|
};
|
|
27
38
|
export declare function startCliAuth(appUrl: string, options?: StartCliAuthOptions): Promise<StartCliAuthResponse>;
|
|
28
39
|
export declare function exchangeCliAuth(appUrl: string, requestId: string): Promise<ExchangeCliAuthResponse>;
|
|
29
40
|
export declare function fetchCliWhoAmI(appUrl: string, accessToken: string): Promise<{
|
|
30
|
-
user:
|
|
31
|
-
id: string;
|
|
32
|
-
email: string;
|
|
33
|
-
name: string | null;
|
|
34
|
-
};
|
|
41
|
+
user: CliIdentityUser;
|
|
35
42
|
expiresAt: string;
|
|
36
43
|
} | null>;
|
|
44
|
+
export type CliAdminWaitlistRole = 'ALL' | 'HUMAN' | 'AGENT';
|
|
45
|
+
export type CliAdminWaitlistSnapshot = {
|
|
46
|
+
query: {
|
|
47
|
+
role: CliAdminWaitlistRole;
|
|
48
|
+
search: string;
|
|
49
|
+
limit: number;
|
|
50
|
+
};
|
|
51
|
+
counts: {
|
|
52
|
+
human: number;
|
|
53
|
+
agent: number;
|
|
54
|
+
total: number;
|
|
55
|
+
};
|
|
56
|
+
filteredTotal: number;
|
|
57
|
+
rows: Array<{
|
|
58
|
+
email: string;
|
|
59
|
+
role: Exclude<CliAdminWaitlistRole, 'ALL'>;
|
|
60
|
+
joinedAt: string;
|
|
61
|
+
updatedAt: string;
|
|
62
|
+
}>;
|
|
63
|
+
};
|
|
64
|
+
export declare function fetchCliAdminWaitlist(appUrl: string, accessToken: string, options?: {
|
|
65
|
+
role?: CliAdminWaitlistRole;
|
|
66
|
+
search?: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
}): Promise<CliAdminWaitlistSnapshot>;
|
|
37
69
|
export type CliLab = {
|
|
38
70
|
id: string;
|
|
39
71
|
slug: string;
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,mBAAmB,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC7B;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IACI,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/client.js
CHANGED
|
@@ -59,6 +59,38 @@ export async function fetchCliWhoAmI(appUrl, accessToken) {
|
|
|
59
59
|
}
|
|
60
60
|
return data;
|
|
61
61
|
}
|
|
62
|
+
export async function fetchCliAdminWaitlist(appUrl, accessToken, options = {}) {
|
|
63
|
+
const params = new URLSearchParams();
|
|
64
|
+
if (options.role) {
|
|
65
|
+
params.set('role', options.role);
|
|
66
|
+
}
|
|
67
|
+
if (options.search) {
|
|
68
|
+
params.set('search', options.search);
|
|
69
|
+
}
|
|
70
|
+
if (typeof options.limit === 'number') {
|
|
71
|
+
params.set('limit', String(options.limit));
|
|
72
|
+
}
|
|
73
|
+
const queryString = params.toString();
|
|
74
|
+
const endpoint = queryString
|
|
75
|
+
? `${appUrl}/api/cli/admin/waitlist?${queryString}`
|
|
76
|
+
: `${appUrl}/api/cli/admin/waitlist`;
|
|
77
|
+
const response = await fetch(endpoint, {
|
|
78
|
+
headers: {
|
|
79
|
+
Authorization: `Bearer ${accessToken}`,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
const data = await parseJson(response);
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
const message = typeof data?.message === 'string'
|
|
85
|
+
? data.message
|
|
86
|
+
: 'failed to fetch admin waitlist';
|
|
87
|
+
throw new Error(message);
|
|
88
|
+
}
|
|
89
|
+
if (!data?.counts || !Array.isArray(data?.rows) || !data?.query) {
|
|
90
|
+
throw new Error('failed to fetch admin waitlist');
|
|
91
|
+
}
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
62
94
|
export async function fetchCliLabs(appUrl, accessToken) {
|
|
63
95
|
const response = await fetch(`${appUrl}/api/cli/labs`, {
|
|
64
96
|
headers: {
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type CliAdminWaitlistRole, type CliAdminWaitlistSnapshot } from '../api/client.js';
|
|
2
|
+
export type AdminWaitlistCommandOptions = {
|
|
3
|
+
appUrl?: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
limit?: string;
|
|
6
|
+
search?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function normalizeAdminWaitlistRole(rawRole: string | undefined): CliAdminWaitlistRole;
|
|
9
|
+
export declare function normalizeAdminWaitlistLimit(rawLimit: string | undefined): number;
|
|
10
|
+
export declare function renderAdminWaitlistRows(snapshot: CliAdminWaitlistSnapshot): string[];
|
|
11
|
+
export declare function adminWaitlistCommand(options?: AdminWaitlistCommandOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=admin-waitlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-waitlist.d.ts","sourceRoot":"","sources":["../../src/commands/admin-waitlist.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAChC,MAAM,kBAAkB,CAAA;AAIzB,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAYD,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC5B,oBAAoB,CAOtB;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAoBhF;AAMD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,EAAE,CAwBpF;AAED,wBAAsB,oBAAoB,CACtC,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC,IAAI,CAAC,CA0Df"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { cancel, intro, note, outro } from '@clack/prompts';
|
|
2
|
+
import { fetchCliAdminWaitlist, fetchCliWhoAmI, } from '../api/client.js';
|
|
3
|
+
import { loadSession } from '../session.js';
|
|
4
|
+
import { getAppUrl } from './login.utils.js';
|
|
5
|
+
const MAX_LIMIT = 500;
|
|
6
|
+
const DEFAULT_LIMIT = 100;
|
|
7
|
+
const ADMIN_ROLES = new Set(['DEV', 'GOD']);
|
|
8
|
+
const ROLE_ALIASES = {
|
|
9
|
+
all: 'ALL',
|
|
10
|
+
human: 'HUMAN',
|
|
11
|
+
agent: 'AGENT',
|
|
12
|
+
};
|
|
13
|
+
export function normalizeAdminWaitlistRole(rawRole) {
|
|
14
|
+
if (!rawRole) {
|
|
15
|
+
return 'ALL';
|
|
16
|
+
}
|
|
17
|
+
const normalized = rawRole.trim().toLowerCase();
|
|
18
|
+
return ROLE_ALIASES[normalized] ?? 'ALL';
|
|
19
|
+
}
|
|
20
|
+
export function normalizeAdminWaitlistLimit(rawLimit) {
|
|
21
|
+
if (!rawLimit) {
|
|
22
|
+
return DEFAULT_LIMIT;
|
|
23
|
+
}
|
|
24
|
+
const parsed = Number.parseInt(rawLimit, 10);
|
|
25
|
+
if (!Number.isFinite(parsed)) {
|
|
26
|
+
return DEFAULT_LIMIT;
|
|
27
|
+
}
|
|
28
|
+
if (parsed < 1) {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
if (parsed > MAX_LIMIT) {
|
|
32
|
+
return MAX_LIMIT;
|
|
33
|
+
}
|
|
34
|
+
return parsed;
|
|
35
|
+
}
|
|
36
|
+
function formatTime(isoDate) {
|
|
37
|
+
return new Date(isoDate).toISOString().replace('T', ' ').slice(0, 16);
|
|
38
|
+
}
|
|
39
|
+
export function renderAdminWaitlistRows(snapshot) {
|
|
40
|
+
if (snapshot.rows.length === 0) {
|
|
41
|
+
return ['no waitlist signups found for current filters.'];
|
|
42
|
+
}
|
|
43
|
+
const emailWidth = Math.max('email'.length, ...snapshot.rows.map((row) => row.email.length));
|
|
44
|
+
const roleWidth = Math.max('role'.length, ...snapshot.rows.map((row) => row.role.length));
|
|
45
|
+
const header = `${'joined_at'.padEnd(16)} ${'role'.padEnd(roleWidth)} ${'email'.padEnd(emailWidth)}`;
|
|
46
|
+
const divider = `${'-'.repeat(16)} ${'-'.repeat(roleWidth)} ${'-'.repeat(emailWidth)}`;
|
|
47
|
+
const lines = snapshot.rows.map((row) => {
|
|
48
|
+
const joinedAt = formatTime(row.joinedAt);
|
|
49
|
+
return `${joinedAt.padEnd(16)} ${row.role.padEnd(roleWidth)} ${row.email.padEnd(emailWidth)}`;
|
|
50
|
+
});
|
|
51
|
+
return [header, divider, ...lines];
|
|
52
|
+
}
|
|
53
|
+
export async function adminWaitlistCommand(options = {}) {
|
|
54
|
+
intro('hacklab admin waitlist');
|
|
55
|
+
const session = await loadSession();
|
|
56
|
+
if (!session) {
|
|
57
|
+
cancel('not logged in. run `hacklab login`.');
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const appUrl = getAppUrl(options.appUrl || session.appUrl);
|
|
62
|
+
const identity = await fetchCliWhoAmI(appUrl, session.token);
|
|
63
|
+
if (!identity) {
|
|
64
|
+
cancel('your cli session is invalid or expired. run `hacklab login`.');
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!ADMIN_ROLES.has(identity.user.systemMode)) {
|
|
69
|
+
cancel('admin access required (DEV/GOD only).');
|
|
70
|
+
process.exitCode = 1;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const role = normalizeAdminWaitlistRole(options.role);
|
|
74
|
+
const limit = normalizeAdminWaitlistLimit(options.limit);
|
|
75
|
+
const search = options.search?.trim() || '';
|
|
76
|
+
const snapshot = await fetchCliAdminWaitlist(appUrl, session.token, {
|
|
77
|
+
role,
|
|
78
|
+
limit,
|
|
79
|
+
search,
|
|
80
|
+
});
|
|
81
|
+
note([
|
|
82
|
+
`total: ${snapshot.counts.total}`,
|
|
83
|
+
`humans: ${snapshot.counts.human}`,
|
|
84
|
+
`agents: ${snapshot.counts.agent}`,
|
|
85
|
+
`matching filters: ${snapshot.filteredTotal}`,
|
|
86
|
+
].join('\n'), 'waitlist stats');
|
|
87
|
+
note([
|
|
88
|
+
`role filter: ${snapshot.query.role.toLowerCase()}`,
|
|
89
|
+
`limit: ${snapshot.query.limit}`,
|
|
90
|
+
`search: ${snapshot.query.search || '-'}`,
|
|
91
|
+
].join('\n'), 'query');
|
|
92
|
+
const lines = renderAdminWaitlistRows(snapshot);
|
|
93
|
+
note(lines.join('\n'), 'signups');
|
|
94
|
+
outro('done.');
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=admin-waitlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-waitlist.js","sourceRoot":"","sources":["../../src/commands/admin-waitlist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ExploreOptions = {
|
|
2
|
+
appUrl?: string;
|
|
3
|
+
path?: string;
|
|
4
|
+
browser?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function buildExploreUrl(options?: ExploreOptions): string;
|
|
7
|
+
export declare function exploreCommand(options?: ExploreOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=explore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"AAKA,KAAK,cAAc,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAYD,wBAAgB,eAAe,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CAKpE;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { intro, note, outro } from '@clack/prompts';
|
|
2
|
+
import { openBrowser } from '../utils/openBrowser.js';
|
|
3
|
+
import { getAppUrl } from './login.utils.js';
|
|
4
|
+
function normalizeExplorePath(path) {
|
|
5
|
+
const normalized = path?.trim();
|
|
6
|
+
if (!normalized) {
|
|
7
|
+
return '/explore';
|
|
8
|
+
}
|
|
9
|
+
return normalized.startsWith('/') ? normalized : `/${normalized}`;
|
|
10
|
+
}
|
|
11
|
+
export function buildExploreUrl(options = {}) {
|
|
12
|
+
const appUrl = getAppUrl(options.appUrl);
|
|
13
|
+
const path = normalizeExplorePath(options.path);
|
|
14
|
+
return `${appUrl}${path}`;
|
|
15
|
+
}
|
|
16
|
+
export async function exploreCommand(options = {}) {
|
|
17
|
+
intro('explore hacklab');
|
|
18
|
+
const exploreUrl = buildExploreUrl(options);
|
|
19
|
+
if (options.browser === false) {
|
|
20
|
+
note(exploreUrl, 'explore url');
|
|
21
|
+
outro('browser disabled. copy the url above.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const opened = await openBrowser(exploreUrl);
|
|
25
|
+
if (!opened) {
|
|
26
|
+
note(exploreUrl, 'explore url');
|
|
27
|
+
outro('could not open browser automatically. copy the url above.');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
outro(`opened ${exploreUrl}`);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=explore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAQ5C,SAAS,oBAAoB,CAAC,IAAa;IACvC,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,CAAA;IAE/B,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAA0B,EAAE;IACxD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/C,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAA0B,EAAE;IAC7D,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAExB,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IAE3C,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAC/B,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC9C,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAC/B,KAAK,CAAC,2DAA2D,CAAC,CAAA;QAClE,OAAM;IACV,CAAC;IAED,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC,CAAA;AACjC,CAAC"}
|
package/dist/commands/login.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAeA,KAAK,YAAY,GAAG;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAsCD,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAeA,KAAK,YAAY,GAAG;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAsCD,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiJnF"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cancel, intro, isCancel, note, outro, spinner, text, } from '@clack/prompts';
|
|
2
|
-
import { exchangeCliAuth, startCliAuth } from '../api/client.js';
|
|
2
|
+
import { exchangeCliAuth, fetchCliWhoAmI, startCliAuth } from '../api/client.js';
|
|
3
3
|
import { saveSession } from '../session.js';
|
|
4
4
|
import { openBrowser } from '../utils/openBrowser.js';
|
|
5
5
|
import { getAppUrl } from './login.utils.js';
|
|
@@ -37,6 +37,37 @@ export async function loginCommand(options = {}) {
|
|
|
37
37
|
intro(mode === 'join' ? 'join hacklab' : 'hacklab cli login');
|
|
38
38
|
}
|
|
39
39
|
const appUrl = getAppUrl(options.appUrl);
|
|
40
|
+
if (options.token) {
|
|
41
|
+
const accessToken = options.token.trim();
|
|
42
|
+
if (!accessToken) {
|
|
43
|
+
cancel('token is required.');
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const identity = await fetchCliWhoAmI(appUrl, accessToken);
|
|
47
|
+
if (!identity) {
|
|
48
|
+
cancel('invalid token. run `hacklab login` to authenticate again.');
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const nickname = options.nickname || deriveNicknameFromIdentity(identity.user);
|
|
52
|
+
await saveSession({
|
|
53
|
+
email: identity.user.email,
|
|
54
|
+
token: accessToken,
|
|
55
|
+
loggedInAt: new Date().toISOString(),
|
|
56
|
+
systemMode: identity.user.systemMode,
|
|
57
|
+
appUrl,
|
|
58
|
+
nickname,
|
|
59
|
+
});
|
|
60
|
+
if (options.showSuccess !== false) {
|
|
61
|
+
const nicknameLabel = nickname ? ` (${nickname})` : '';
|
|
62
|
+
outro(mode === 'join'
|
|
63
|
+
? `joined with token as ${identity.user.email}${nicknameLabel}`
|
|
64
|
+
: `logged in with token as ${identity.user.email}${nicknameLabel}`);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
email: identity.user.email,
|
|
68
|
+
nickname,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
40
71
|
const startPayload = await startCliAuth(appUrl, {
|
|
41
72
|
nickname: options.nickname,
|
|
42
73
|
});
|
|
@@ -68,6 +99,7 @@ export async function loginCommand(options = {}) {
|
|
|
68
99
|
email: exchange.user.email,
|
|
69
100
|
token: exchange.accessToken,
|
|
70
101
|
loggedInAt: new Date().toISOString(),
|
|
102
|
+
systemMode: exchange.user.systemMode,
|
|
71
103
|
appUrl,
|
|
72
104
|
nickname,
|
|
73
105
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,IAAI,GACP,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,IAAI,GACP,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAY5C,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACvC,OAAO,QAAQ;SACV,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,0BAA0B,CAAC,IAGnC;IACG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE5C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;IACjF,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE3C,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,CAAA;IAE7D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC/C,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,UAAU,CAAA;QACrB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAwB,EAAE;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAA;IACpC,MAAM,QAAQ,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;IACrD,MAAM,YAAY,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;IAEvD,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAExC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAExC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,CAAC,oBAAoB,CAAC,CAAA;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAE1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,CAAC,2DAA2D,CAAC,CAAA;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE9E,MAAM,WAAW,CAAC;YACd,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YAC1B,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU;YACpC,MAAM;YACN,QAAQ;SACX,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACtD,KAAK,CACD,IAAI,KAAK,MAAM;gBACX,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,EAAE;gBAC/D,CAAC,CAAC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,EAAE,CACzE,CAAA;QACL,CAAC;QAED,OAAO;YACH,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YAC1B,QAAQ;SACX,CAAA;IACL,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC7B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;IAE3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,IAAI,CACA,2CAA2C,YAAY,CAAC,YAAY,EAAE,EACtE,UAAU,QAAQ,EAAE,CACvB,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,CACA,OAAO,CAAC,0BAA0B,KAAK,KAAK;YACxC,CAAC,CAAC,6BAA6B,QAAQ,GAAG;YAC1C,CAAC,CAAC,6BAA6B,QAAQ,MAAM,YAAY,CAAC,YAAY,EAAE,EAC5E,UAAU,QAAQ,EAAE,CACvB,CAAA;IACL,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;QAC1B,OAAO,EAAE,iBAAiB,QAAQ,+BAA+B;QACjE,WAAW,EAAE,aAAa;KAC7B,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,YAAY,aAAa,CAAC,CAAA;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,EAAE,CAAA;IAC7B,WAAW,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAA;IAExC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;QAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,QAAQ,GACV,OAAO,CAAC,QAAQ,IAAI,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAEjE,MAAM,WAAW,CAAC;gBACd,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;gBAC1B,KAAK,EAAE,QAAQ,CAAC,WAAW;gBAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU;gBACpC,MAAM;gBACN,QAAQ;aACX,CAAC,CAAA;YAEF,WAAW,CAAC,IAAI,CAAC,UAAU,QAAQ,YAAY,CAAC,CAAA;YAChD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACtD,KAAK,CACD,IAAI,KAAK,MAAM;oBACX,CAAC,CAAC,aAAa,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,EAAE;oBACpD,CAAC,CAAC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,EAAE,CAC9D,CAAA;YACL,CAAC;YACD,OAAO;gBACH,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;gBAC1B,QAAQ;aACX,CAAA;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAA;YAClB,SAAQ;QACZ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,OAAO,YAAY,mBAAmB,CAAC,CAAA;YACxD,MAAM,CAAC,kCAAkC,YAAY,WAAW,CAAC,CAAA;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,WAAW,CAAC,IAAI,CAAC,OAAO,YAAY,wBAAwB,CAAC,CAAA;YAC7D,MAAM,CAAC,2CAA2C,YAAY,WAAW,CAAC,CAAA;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,OAAO,YAAY,qBAAqB,CAAC,CAAA;QAC1D,MAAM,CAAC,oCAAoC,YAAY,WAAW,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IACnD,MAAM,CACF,yBAAyB,YAAY,4BAA4B,YAAY,WAAW,CAC3F,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type PublishOptions = {
|
|
2
|
+
remote?: string;
|
|
3
|
+
branch?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function getGitPushArgs(options?: PublishOptions): string[];
|
|
6
|
+
export declare function publishCommand(options?: PublishOptions): Promise<void>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAWA,KAAK,cAAc,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAOD,wBAAgB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,EAAE,CAiBrE;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
import { cancel, intro, note, outro } from '@clack/prompts';
|
|
5
|
+
import { findRepoRoot } from '../utils/findRepoRoot.js';
|
|
6
|
+
import { pathExists } from '../utils/pathExists.js';
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
function normalizeArg(value) {
|
|
9
|
+
const normalized = value?.trim();
|
|
10
|
+
return normalized ? normalized : undefined;
|
|
11
|
+
}
|
|
12
|
+
export function getGitPushArgs(options = {}) {
|
|
13
|
+
const remote = normalizeArg(options.remote);
|
|
14
|
+
const branch = normalizeArg(options.branch);
|
|
15
|
+
if (!remote && !branch) {
|
|
16
|
+
return ['push'];
|
|
17
|
+
}
|
|
18
|
+
if (!remote && branch) {
|
|
19
|
+
return ['push', 'origin', branch];
|
|
20
|
+
}
|
|
21
|
+
if (remote && !branch) {
|
|
22
|
+
return ['push', remote];
|
|
23
|
+
}
|
|
24
|
+
return ['push', remote, branch];
|
|
25
|
+
}
|
|
26
|
+
export async function publishCommand(options = {}) {
|
|
27
|
+
intro('publish hq');
|
|
28
|
+
const repoRoot = await findRepoRoot();
|
|
29
|
+
if (!(await pathExists(join(repoRoot, '.git')))) {
|
|
30
|
+
cancel('this command must be run inside a git repository.');
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const args = getGitPushArgs(options);
|
|
34
|
+
try {
|
|
35
|
+
await execFileAsync('git', args, {
|
|
36
|
+
cwd: repoRoot,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
+
cancel(`publish failed: ${message}`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
note(`git ${args.join(' ')}`, 'pushed');
|
|
45
|
+
outro('published. hacklab will sync from github.');
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAOzC,SAAS,YAAY,CAAC,KAAc;IAChC,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAChC,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAA0B,EAAE;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAE3C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,CAAA;IACnB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,MAAgB,EAAE,MAAgB,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAA0B,EAAE;IAC7D,KAAK,CAAC,YAAY,CAAC,CAAA;IAEnB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;IAErC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,mDAAmD,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAEpC,IAAI,CAAC;QACD,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,QAAQ;SAChB,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,MAAM,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IACvC,KAAK,CAAC,2CAA2C,CAAC,CAAA;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAoBvD,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,eAAe,EACrB,QAAQ,CAAC,EAAE,MAAM,GAClB,MAAM,CAWR;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBnD"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -2,6 +2,28 @@ import { intro, outro } from '@clack/prompts';
|
|
|
2
2
|
import { fetchCliWhoAmI } from '../api/client.js';
|
|
3
3
|
import { loadSession } from '../session.js';
|
|
4
4
|
import { getAppUrl } from './login.utils.js';
|
|
5
|
+
function resolveIdentityType(user) {
|
|
6
|
+
if (user.type === 'AGENT') {
|
|
7
|
+
return 'agent';
|
|
8
|
+
}
|
|
9
|
+
if (user.type === 'HUMAN') {
|
|
10
|
+
return 'human';
|
|
11
|
+
}
|
|
12
|
+
if (user.agent) {
|
|
13
|
+
return 'agent';
|
|
14
|
+
}
|
|
15
|
+
return 'human';
|
|
16
|
+
}
|
|
17
|
+
export function formatWhoamiMessage(user, nickname) {
|
|
18
|
+
const nicknameLabel = nickname ? ` (${nickname})` : '';
|
|
19
|
+
const systemModeLabel = user.systemMode.toLowerCase();
|
|
20
|
+
const identityType = resolveIdentityType(user);
|
|
21
|
+
const tags = [systemModeLabel, identityType];
|
|
22
|
+
if (identityType === 'agent' && user.agent?.slug) {
|
|
23
|
+
tags.push(`@${user.agent.slug}`);
|
|
24
|
+
}
|
|
25
|
+
return `logged in as ${user.email}${nicknameLabel} [${tags.join(', ')}]`;
|
|
26
|
+
}
|
|
5
27
|
export async function whoamiCommand() {
|
|
6
28
|
intro('hacklab cli');
|
|
7
29
|
const session = await loadSession();
|
|
@@ -17,7 +39,6 @@ export async function whoamiCommand() {
|
|
|
17
39
|
process.exitCode = 1;
|
|
18
40
|
return;
|
|
19
41
|
}
|
|
20
|
-
|
|
21
|
-
outro(`logged in as ${identity.user.email}${nicknameLabel}`);
|
|
42
|
+
outro(formatWhoamiMessage(identity.user, session.nickname));
|
|
22
43
|
}
|
|
23
44
|
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,SAAS,mBAAmB,CAAC,IAAqB;IAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,IAAqB,EACrB,QAAiB;IAEjB,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAA;IACrD,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;IAE5C,IAAI,YAAY,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,gBAAgB,IAAI,CAAC,KAAK,GAAG,aAAa,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,KAAK,CAAC,aAAa,CAAC,CAAA;IAEpB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAA;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAE5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,KAAK,CAAC,8DAA8D,CAAC,CAAA;QACrE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACV,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC/D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,101 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { newCommand } from
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { fetchCliWhoAmI } from './api/client.js';
|
|
4
|
+
import { adminWaitlistCommand } from './commands/admin-waitlist.js';
|
|
5
|
+
import { exploreCommand } from './commands/explore.js';
|
|
6
|
+
import { initCommand } from './commands/init.js';
|
|
7
|
+
import { loginCommand } from './commands/login.js';
|
|
8
|
+
import { getAppUrl } from './commands/login.utils.js';
|
|
9
|
+
import { newCommand } from './commands/new.js';
|
|
10
|
+
import { publishCommand } from './commands/publish.js';
|
|
11
|
+
import { whoamiCommand } from './commands/whoami.js';
|
|
12
|
+
import { createGreenHelpConfig, HELP_BANNER } from './help-format.js';
|
|
13
|
+
import { loadSession } from './session.js';
|
|
14
14
|
const program = new Command();
|
|
15
15
|
program
|
|
16
|
-
.name(
|
|
17
|
-
.description(
|
|
18
|
-
.version(
|
|
19
|
-
.addHelpText(
|
|
16
|
+
.name('hacklab')
|
|
17
|
+
.description('hacklab hq cli')
|
|
18
|
+
.version('0.0.1')
|
|
19
|
+
.addHelpText('beforeAll', HELP_BANNER);
|
|
20
20
|
program.configureHelp(createGreenHelpConfig());
|
|
21
21
|
program
|
|
22
|
-
.command(
|
|
23
|
-
.description(
|
|
24
|
-
.option(
|
|
25
|
-
.
|
|
26
|
-
|
|
27
|
-
appUrl: options.appUrl,
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
program
|
|
31
|
-
.command("brag")
|
|
32
|
-
.description("add current github project repo to your hacklab hq as draft")
|
|
33
|
-
.option("-a, --app-url <url>", "hacklab app url (defaults to localhost)")
|
|
34
|
-
.option("--as <account>", "account email or nickname to use")
|
|
35
|
-
.option("--hq <path>", "path to your hq repository")
|
|
36
|
-
.action(async (options) => {
|
|
37
|
-
await bragCommand({
|
|
38
|
-
appUrl: options.appUrl,
|
|
39
|
-
as: options.as,
|
|
40
|
-
hq: options.hq,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
program
|
|
44
|
-
.command("essay")
|
|
45
|
-
.description("add an essay to your studio lab")
|
|
46
|
-
.option("-a, --app-url <url>", "hacklab app url (defaults to localhost)")
|
|
47
|
-
.option("-l, --lab <slug>", "lab slug (defaults to local .hacklab config)")
|
|
48
|
-
.option("-t, --title <title>", "essay title")
|
|
49
|
-
.option("-s, --summary <summary>", "essay summary")
|
|
50
|
-
.option("-b, --body <markdown>", "essay body markdown")
|
|
51
|
-
.option("-f, --file <path>", "read essay body markdown from file")
|
|
52
|
-
.option("-p, --publish", "publish immediately")
|
|
53
|
-
.action(async (options) => {
|
|
54
|
-
await essayCommand({
|
|
55
|
-
appUrl: options.appUrl,
|
|
56
|
-
lab: options.lab,
|
|
57
|
-
title: options.title,
|
|
58
|
-
summary: options.summary,
|
|
59
|
-
body: options.body,
|
|
60
|
-
file: options.file,
|
|
61
|
-
publish: options.publish,
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
program
|
|
65
|
-
.command("onboard")
|
|
66
|
-
.description("run cli onboarding (profile + lab)")
|
|
67
|
-
.option("-a, --app-url <url>", "hacklab app url (defaults to localhost)")
|
|
68
|
-
.option("-u, --username <username>", "profile username")
|
|
69
|
-
.option("-b, --bio <bio>", "profile bio")
|
|
70
|
-
.option("-l, --lab-name <name>", "lab name")
|
|
71
|
-
.action(async (options) => {
|
|
72
|
-
await onboardCommand({
|
|
73
|
-
appUrl: options.appUrl,
|
|
74
|
-
username: options.username,
|
|
75
|
-
bio: options.bio,
|
|
76
|
-
labName: options.labName,
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
program
|
|
80
|
-
.command("login")
|
|
81
|
-
.description("login with your browser and store session locally")
|
|
82
|
-
.option("-a, --app-url <url>", "hacklab app url (defaults to localhost)")
|
|
22
|
+
.command('login')
|
|
23
|
+
.description('authenticate with github oauth or a pre-issued cli token')
|
|
24
|
+
.option('-a, --app-url <url>', 'hacklab app url (defaults to localhost)')
|
|
25
|
+
.option('-t, --token <token>', 'cli access token for non-interactive login')
|
|
26
|
+
.option('-n, --nickname <nickname>', 'local nickname for this login')
|
|
83
27
|
.action(async (options) => {
|
|
84
28
|
await loginCommand({
|
|
85
29
|
appUrl: options.appUrl,
|
|
30
|
+
token: options.token,
|
|
31
|
+
nickname: options.nickname,
|
|
86
32
|
});
|
|
87
33
|
});
|
|
88
34
|
program
|
|
89
|
-
.command(
|
|
90
|
-
.description(
|
|
35
|
+
.command('whoami')
|
|
36
|
+
.description('print current logged in account')
|
|
91
37
|
.action(async () => {
|
|
92
38
|
await whoamiCommand();
|
|
93
39
|
});
|
|
94
40
|
program
|
|
95
|
-
.command(
|
|
96
|
-
.description(
|
|
97
|
-
.option(
|
|
98
|
-
.option(
|
|
41
|
+
.command('init')
|
|
42
|
+
.description('create or initialize your hq repository in the current git repo')
|
|
43
|
+
.option('-n, --name <name>', 'lab display name')
|
|
44
|
+
.option('-f, --force', 'overwrite existing .hacklab/config.json')
|
|
99
45
|
.action(async (options) => {
|
|
100
46
|
await initCommand({
|
|
101
47
|
name: options.name,
|
|
@@ -103,35 +49,75 @@ program
|
|
|
103
49
|
});
|
|
104
50
|
});
|
|
105
51
|
program
|
|
106
|
-
.command(
|
|
107
|
-
.description(
|
|
108
|
-
.argument(
|
|
109
|
-
.argument(
|
|
110
|
-
.option(
|
|
52
|
+
.command('new')
|
|
53
|
+
.description('create new content in your hq')
|
|
54
|
+
.argument('[type]', 'project | guide | course | essay | research-paper')
|
|
55
|
+
.argument('[slug]', 'content slug, e.g. my-first-project')
|
|
56
|
+
.option('-t, --title <title>', 'custom title')
|
|
111
57
|
.action(async (type, slug, options) => {
|
|
112
58
|
await newCommand(type, slug, {
|
|
113
59
|
title: options.title,
|
|
114
60
|
});
|
|
115
61
|
});
|
|
116
62
|
program
|
|
117
|
-
.command(
|
|
118
|
-
.description(
|
|
119
|
-
.option(
|
|
120
|
-
.option(
|
|
63
|
+
.command('publish')
|
|
64
|
+
.description('push your hq repo to github so hacklab can sync')
|
|
65
|
+
.option('-r, --remote <remote>', 'git remote to push to (defaults to git default)')
|
|
66
|
+
.option('-b, --branch <branch>', 'git branch to push')
|
|
121
67
|
.action(async (options) => {
|
|
122
|
-
await
|
|
123
|
-
name: options.name,
|
|
124
|
-
force: options.force,
|
|
125
|
-
});
|
|
68
|
+
await publishCommand(options);
|
|
126
69
|
});
|
|
127
70
|
program
|
|
128
|
-
.command(
|
|
129
|
-
.
|
|
130
|
-
.
|
|
131
|
-
.
|
|
132
|
-
|
|
71
|
+
.command('explore')
|
|
72
|
+
.description('open hacklab discovery in your browser')
|
|
73
|
+
.option('-a, --app-url <url>', 'hacklab app url (defaults to localhost)')
|
|
74
|
+
.option('--path <path>', 'relative path to open (defaults to /explore)')
|
|
75
|
+
.option('--no-browser', 'print the url instead of opening a browser')
|
|
76
|
+
.action(async (options) => {
|
|
77
|
+
await exploreCommand(options);
|
|
133
78
|
});
|
|
134
|
-
|
|
79
|
+
async function isCliAdmin() {
|
|
80
|
+
const session = await loadSession();
|
|
81
|
+
if (!session) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
if (session.systemMode) {
|
|
85
|
+
return session.systemMode === 'DEV' || session.systemMode === 'GOD';
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const appUrl = getAppUrl(session.appUrl);
|
|
89
|
+
const identity = await fetchCliWhoAmI(appUrl, session.token);
|
|
90
|
+
return Boolean(identity &&
|
|
91
|
+
(identity.user.systemMode === 'DEV' ||
|
|
92
|
+
identity.user.systemMode === 'GOD'));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function registerAdminCommands() {
|
|
99
|
+
if (!(await isCliAdmin())) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const admin = program
|
|
103
|
+
.command('admin')
|
|
104
|
+
.description('admin-only commands');
|
|
105
|
+
admin
|
|
106
|
+
.command('waitlist')
|
|
107
|
+
.description('inspect waitlist signups (humans/agents)')
|
|
108
|
+
.option('-a, --app-url <url>', 'hacklab app url (defaults to localhost)')
|
|
109
|
+
.option('-r, --role <role>', 'all | human | agent')
|
|
110
|
+
.option('-l, --limit <number>', 'max rows to return (1-500)')
|
|
111
|
+
.option('-s, --search <email>', 'filter by email')
|
|
112
|
+
.action(async (options) => {
|
|
113
|
+
await adminWaitlistCommand(options);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async function main() {
|
|
117
|
+
await registerAdminCommands();
|
|
118
|
+
await program.parseAsync(process.argv);
|
|
119
|
+
}
|
|
120
|
+
main().catch((error) => {
|
|
135
121
|
console.error(error instanceof Error ? error.message : String(error));
|
|
136
122
|
process.exit(1);
|
|
137
123
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAKD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAOD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAKD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAOD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAoED,wBAAsB,WAAW,CAC7B,OAAO,EAAE,OAAO,EAChB,WAAW,SAAmB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,wBAAsB,WAAW,CAC7B,WAAW,SAAmB,GAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAoCzB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAmB5D;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuClF"}
|
package/dist/session.js
CHANGED
|
@@ -18,10 +18,17 @@ function normalizeAccountState(raw) {
|
|
|
18
18
|
return Boolean(account?.email && account?.token && account?.loggedInAt);
|
|
19
19
|
})
|
|
20
20
|
.map((account) => {
|
|
21
|
+
const systemMode = account.systemMode === 'NORMAL' ||
|
|
22
|
+
account.systemMode === 'DEV' ||
|
|
23
|
+
account.systemMode === 'GOD' ||
|
|
24
|
+
account.systemMode === 'TESTER'
|
|
25
|
+
? account.systemMode
|
|
26
|
+
: undefined;
|
|
21
27
|
return {
|
|
22
28
|
email: account.email,
|
|
23
29
|
token: account.token,
|
|
24
30
|
loggedInAt: account.loggedInAt,
|
|
31
|
+
...(systemMode ? { systemMode } : {}),
|
|
25
32
|
appUrl: account.appUrl,
|
|
26
33
|
nickname: account.nickname,
|
|
27
34
|
hqPaths: account.hqPaths?.filter(Boolean) ?? [],
|
|
@@ -88,10 +95,17 @@ export async function loadSession(sessionPath = getSessionPath()) {
|
|
|
88
95
|
if (!parsed.email || !parsed.token || !parsed.loggedInAt) {
|
|
89
96
|
return null;
|
|
90
97
|
}
|
|
98
|
+
const systemMode = parsed.systemMode === 'NORMAL' ||
|
|
99
|
+
parsed.systemMode === 'DEV' ||
|
|
100
|
+
parsed.systemMode === 'GOD' ||
|
|
101
|
+
parsed.systemMode === 'TESTER'
|
|
102
|
+
? parsed.systemMode
|
|
103
|
+
: undefined;
|
|
91
104
|
return {
|
|
92
105
|
email: parsed.email,
|
|
93
106
|
token: parsed.token,
|
|
94
107
|
loggedInAt: parsed.loggedInAt,
|
|
108
|
+
...(systemMode ? { systemMode } : {}),
|
|
95
109
|
appUrl: parsed.appUrl,
|
|
96
110
|
nickname: parsed.nickname,
|
|
97
111
|
};
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hacklab",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
"bin": {
|
|
10
10
|
"hacklab": "./dist/index.js"
|
|
11
11
|
},
|
|
12
|
-
"files": [
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
13
15
|
"scripts": {
|
|
14
16
|
"build": "tsc -p tsconfig.json",
|
|
15
17
|
"dev": "tsx src/index.ts",
|