hacklab 0.0.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 +67 -0
- package/dist/api/client.d.ts +118 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +214 -0
- package/dist/api/client.js.map +1 -0
- package/dist/commands/brag.d.ts +8 -0
- package/dist/commands/brag.d.ts.map +1 -0
- package/dist/commands/brag.js +318 -0
- package/dist/commands/brag.js.map +1 -0
- package/dist/commands/brag.utils.d.ts +12 -0
- package/dist/commands/brag.utils.d.ts.map +1 -0
- package/dist/commands/brag.utils.js +43 -0
- package/dist/commands/brag.utils.js.map +1 -0
- package/dist/commands/essay.d.ts +18 -0
- package/dist/commands/essay.d.ts.map +1 -0
- package/dist/commands/essay.js +117 -0
- package/dist/commands/essay.js.map +1 -0
- package/dist/commands/init.d.ts +16 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +237 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/join.d.ts +10 -0
- package/dist/commands/join.d.ts.map +1 -0
- package/dist/commands/join.js +314 -0
- package/dist/commands/join.js.map +1 -0
- package/dist/commands/link.d.ts +17 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +36 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +15 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +108 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/login.utils.d.ts +3 -0
- package/dist/commands/login.utils.d.ts.map +1 -0
- package/dist/commands/login.utils.js +13 -0
- package/dist/commands/login.utils.js.map +1 -0
- package/dist/commands/new.d.ts +15 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +172 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/new.utils.d.ts +7 -0
- package/dist/commands/new.utils.d.ts.map +1 -0
- package/dist/commands/new.utils.js +50 -0
- package/dist/commands/new.utils.js.map +1 -0
- package/dist/commands/onboard.d.ts +10 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +93 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/tui.d.ts +12 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +112 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +23 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/help-format.d.ts +4 -0
- package/dist/help-format.d.ts.map +1 -0
- package/dist/help-format.js +30 -0
- package/dist/help-format.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +138 -0
- package/dist/index.js.map +1 -0
- package/dist/lab/config.d.ts +32 -0
- package/dist/lab/config.d.ts.map +1 -0
- package/dist/lab/config.js +148 -0
- package/dist/lab/config.js.map +1 -0
- package/dist/lab/contentStatus.d.ts +6 -0
- package/dist/lab/contentStatus.d.ts.map +1 -0
- package/dist/lab/contentStatus.js +19 -0
- package/dist/lab/contentStatus.js.map +1 -0
- package/dist/session.d.ts +18 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +158 -0
- package/dist/session.js.map +1 -0
- package/dist/ui/banner.d.ts +2 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +22 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/utils/findRepoRoot.d.ts +2 -0
- package/dist/utils/findRepoRoot.d.ts.map +1 -0
- package/dist/utils/findRepoRoot.js +17 -0
- package/dist/utils/findRepoRoot.js.map +1 -0
- package/dist/utils/openBrowser.d.ts +2 -0
- package/dist/utils/openBrowser.d.ts.map +1 -0
- package/dist/utils/openBrowser.js +29 -0
- package/dist/utils/openBrowser.js.map +1 -0
- package/dist/utils/pathExists.d.ts +2 -0
- package/dist/utils/pathExists.d.ts.map +1 -0
- package/dist/utils/pathExists.js +11 -0
- package/dist/utils/pathExists.js.map +1 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# @hacklab/cli
|
|
2
|
+
|
|
3
|
+
hacklab cli package.
|
|
4
|
+
|
|
5
|
+
## commands
|
|
6
|
+
|
|
7
|
+
- `hacklab join` - onboarding flow: choose hq location, login with github, create your hq repository, then choose your next step (first essay draft, profile setup, or browse hackers).
|
|
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.
|
|
10
|
+
- `hacklab whoami` - show current logged in user.
|
|
11
|
+
- `hacklab init` - initialize current repo as a hacklab repository.
|
|
12
|
+
- `hacklab link` - link an existing repo to hacklab by creating `.hacklab/config.json` only.
|
|
13
|
+
- `hacklab new` - interactive content creation (`essay`, `guide`, `course`, `research paper`, `project`).
|
|
14
|
+
- `hacklab tui` (alias: `hacklab /tui`) - tui entrypoint with slash commands (`/new`, `/help`, `/exit`), type `/` to open the arrow-key picker.
|
|
15
|
+
|
|
16
|
+
## repository layout
|
|
17
|
+
|
|
18
|
+
`hacklab init` creates:
|
|
19
|
+
|
|
20
|
+
- `.hacklab/config.json`
|
|
21
|
+
- `.hacklab/README.mdx`
|
|
22
|
+
- `assets/`
|
|
23
|
+
- `home.mdx`
|
|
24
|
+
- `readme.mdx`
|
|
25
|
+
- `profile/`
|
|
26
|
+
- `profile/bio.mdx`
|
|
27
|
+
- `profile/cv.mdx`
|
|
28
|
+
- `projects/`
|
|
29
|
+
- `guides/`
|
|
30
|
+
- `courses/`
|
|
31
|
+
- `essays/`
|
|
32
|
+
- `research/`
|
|
33
|
+
- `docs/profile.mdx`
|
|
34
|
+
- `docs/content-model.mdx`
|
|
35
|
+
- `docs/frontmatter.mdx`
|
|
36
|
+
|
|
37
|
+
it also creates sample `.mdx` content in each content directory.
|
|
38
|
+
|
|
39
|
+
identity fields in `.hacklab/config.json`:
|
|
40
|
+
|
|
41
|
+
- `labId` (optional)
|
|
42
|
+
- `labSlug`
|
|
43
|
+
- `labName`
|
|
44
|
+
- `owner`
|
|
45
|
+
- `workspaceType`
|
|
46
|
+
|
|
47
|
+
## local usage
|
|
48
|
+
|
|
49
|
+
from repo root:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pnpm --filter @hacklab/cli build
|
|
53
|
+
node packages/cli/dist/index.js join
|
|
54
|
+
node packages/cli/dist/index.js brag
|
|
55
|
+
node packages/cli/dist/index.js init --name matts-lab
|
|
56
|
+
node packages/cli/dist/index.js link --name matts-lab
|
|
57
|
+
node packages/cli/dist/index.js new
|
|
58
|
+
node packages/cli/dist/index.js new guide api-design-primer
|
|
59
|
+
node packages/cli/dist/index.js new research-paper llm-evals-2026
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
environment variables:
|
|
63
|
+
|
|
64
|
+
- `HACKLAB_APP_URL` - app base url (default: `http://localhost:3000`)
|
|
65
|
+
- `HACKLAB_SESSION_PATH` - custom path for cli session file
|
|
66
|
+
|
|
67
|
+
credentials are stored at `~/.hacklab/session.json`.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export type StartCliAuthResponse = {
|
|
2
|
+
requestId: string;
|
|
3
|
+
authorizeUrl: string;
|
|
4
|
+
expiresAt: string;
|
|
5
|
+
};
|
|
6
|
+
type StartCliAuthOptions = {
|
|
7
|
+
nickname?: string;
|
|
8
|
+
};
|
|
9
|
+
export type ExchangeCliAuthResponse = {
|
|
10
|
+
status: 'pending';
|
|
11
|
+
} | {
|
|
12
|
+
status: 'expired';
|
|
13
|
+
} | {
|
|
14
|
+
status: 'not_found';
|
|
15
|
+
} | {
|
|
16
|
+
status: 'consumed';
|
|
17
|
+
} | {
|
|
18
|
+
status: 'approved';
|
|
19
|
+
accessToken: string;
|
|
20
|
+
expiresAt: string;
|
|
21
|
+
user: {
|
|
22
|
+
id: string;
|
|
23
|
+
email: string;
|
|
24
|
+
name: string | null;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare function startCliAuth(appUrl: string, options?: StartCliAuthOptions): Promise<StartCliAuthResponse>;
|
|
28
|
+
export declare function exchangeCliAuth(appUrl: string, requestId: string): Promise<ExchangeCliAuthResponse>;
|
|
29
|
+
export declare function fetchCliWhoAmI(appUrl: string, accessToken: string): Promise<{
|
|
30
|
+
user: {
|
|
31
|
+
id: string;
|
|
32
|
+
email: string;
|
|
33
|
+
name: string | null;
|
|
34
|
+
};
|
|
35
|
+
expiresAt: string;
|
|
36
|
+
} | null>;
|
|
37
|
+
export type CliLab = {
|
|
38
|
+
id: string;
|
|
39
|
+
slug: string;
|
|
40
|
+
name: string;
|
|
41
|
+
};
|
|
42
|
+
export declare function fetchCliLabs(appUrl: string, accessToken: string): Promise<CliLab[]>;
|
|
43
|
+
export declare function createCliLab(appUrl: string, accessToken: string, options: {
|
|
44
|
+
name: string;
|
|
45
|
+
}): Promise<{
|
|
46
|
+
created: boolean;
|
|
47
|
+
lab: CliLab;
|
|
48
|
+
}>;
|
|
49
|
+
export type CliMe = {
|
|
50
|
+
id: string;
|
|
51
|
+
email: string;
|
|
52
|
+
name: string | null;
|
|
53
|
+
bio: string | null;
|
|
54
|
+
image: string | null;
|
|
55
|
+
};
|
|
56
|
+
export declare function fetchCliMe(appUrl: string, accessToken: string): Promise<CliMe | null>;
|
|
57
|
+
export declare function updateCliMe(appUrl: string, accessToken: string, options: {
|
|
58
|
+
username?: string;
|
|
59
|
+
bio?: string;
|
|
60
|
+
}): Promise<CliMe>;
|
|
61
|
+
export type CreateCliEssayOptions = {
|
|
62
|
+
labSlug: string;
|
|
63
|
+
title: string;
|
|
64
|
+
summary?: string;
|
|
65
|
+
body?: string;
|
|
66
|
+
publish?: boolean;
|
|
67
|
+
};
|
|
68
|
+
export type CreateCliEssayResponse = {
|
|
69
|
+
essay: {
|
|
70
|
+
id: string;
|
|
71
|
+
slug: string;
|
|
72
|
+
title: string;
|
|
73
|
+
status: 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';
|
|
74
|
+
url: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export declare function createCliEssay(appUrl: string, accessToken: string, options: CreateCliEssayOptions): Promise<CreateCliEssayResponse>;
|
|
78
|
+
export type CliAgent = {
|
|
79
|
+
id: string;
|
|
80
|
+
slug: string;
|
|
81
|
+
name: string;
|
|
82
|
+
bio: string | null;
|
|
83
|
+
avatarUrl: string | null;
|
|
84
|
+
claimState: 'UNCLAIMED' | 'CLAIMED';
|
|
85
|
+
status: 'ACTIVE' | 'PAUSED' | 'ARCHIVED';
|
|
86
|
+
};
|
|
87
|
+
export type PublicCliAgentResponse = {
|
|
88
|
+
agent: CliAgent;
|
|
89
|
+
profileUrl: string;
|
|
90
|
+
claimUrl: string;
|
|
91
|
+
manageToken: string;
|
|
92
|
+
};
|
|
93
|
+
export declare function createPublicCliAgent(appUrl: string, options: {
|
|
94
|
+
handle: string;
|
|
95
|
+
bio?: string;
|
|
96
|
+
avatarUrl?: string;
|
|
97
|
+
}): Promise<PublicCliAgentResponse>;
|
|
98
|
+
export declare function updatePublicCliAgent(appUrl: string, manageToken: string, options: {
|
|
99
|
+
handle: string;
|
|
100
|
+
}): Promise<PublicCliAgentResponse>;
|
|
101
|
+
export declare function createOrGetCliAgent(appUrl: string, accessToken: string): Promise<{
|
|
102
|
+
created: boolean;
|
|
103
|
+
agent: CliAgent;
|
|
104
|
+
profileUrl: string;
|
|
105
|
+
claimUrl: string;
|
|
106
|
+
}>;
|
|
107
|
+
export declare function updateCliAgentProfile(appUrl: string, accessToken: string, options: {
|
|
108
|
+
name?: string;
|
|
109
|
+
slug?: string;
|
|
110
|
+
bio?: string;
|
|
111
|
+
avatarUrl?: string;
|
|
112
|
+
}): Promise<{
|
|
113
|
+
agent: CliAgent;
|
|
114
|
+
profileUrl: string;
|
|
115
|
+
claimUrl: string;
|
|
116
|
+
}>;
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
async function parseJson(response) {
|
|
2
|
+
try {
|
|
3
|
+
return await response.json();
|
|
4
|
+
}
|
|
5
|
+
catch {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export async function startCliAuth(appUrl, options = {}) {
|
|
10
|
+
const response = await fetch(`${appUrl}/api/cli/auth/start`, {
|
|
11
|
+
method: 'POST',
|
|
12
|
+
headers: {
|
|
13
|
+
'Content-Type': 'application/json',
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
appUrl,
|
|
17
|
+
nickname: options.nickname,
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
const data = await parseJson(response);
|
|
21
|
+
if (!response.ok || !data?.requestId || !data?.authorizeUrl || !data?.expiresAt) {
|
|
22
|
+
throw new Error('failed to start cli login. is the app running?');
|
|
23
|
+
}
|
|
24
|
+
return data;
|
|
25
|
+
}
|
|
26
|
+
export async function exchangeCliAuth(appUrl, requestId) {
|
|
27
|
+
const response = await fetch(`${appUrl}/api/cli/auth/exchange`, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: {
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
},
|
|
32
|
+
body: JSON.stringify({ requestId }),
|
|
33
|
+
});
|
|
34
|
+
const data = (await parseJson(response));
|
|
35
|
+
if (!data) {
|
|
36
|
+
throw new Error('failed to exchange cli login state.');
|
|
37
|
+
}
|
|
38
|
+
if (response.status === 202 ||
|
|
39
|
+
response.status === 404 ||
|
|
40
|
+
response.status === 409 ||
|
|
41
|
+
response.status === 410 ||
|
|
42
|
+
response.status === 200) {
|
|
43
|
+
return data;
|
|
44
|
+
}
|
|
45
|
+
throw new Error('failed to exchange cli login state.');
|
|
46
|
+
}
|
|
47
|
+
export async function fetchCliWhoAmI(appUrl, accessToken) {
|
|
48
|
+
const response = await fetch(`${appUrl}/api/cli/auth/whoami`, {
|
|
49
|
+
headers: {
|
|
50
|
+
Authorization: `Bearer ${accessToken}`,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const data = await parseJson(response);
|
|
57
|
+
if (!data?.user?.email) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
export async function fetchCliLabs(appUrl, accessToken) {
|
|
63
|
+
const response = await fetch(`${appUrl}/api/cli/labs`, {
|
|
64
|
+
headers: {
|
|
65
|
+
Authorization: `Bearer ${accessToken}`,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
const data = await parseJson(response);
|
|
69
|
+
if (!response.ok || !Array.isArray(data?.labs)) {
|
|
70
|
+
throw new Error('failed to fetch labs');
|
|
71
|
+
}
|
|
72
|
+
return data.labs;
|
|
73
|
+
}
|
|
74
|
+
export async function createCliLab(appUrl, accessToken, options) {
|
|
75
|
+
const response = await fetch(`${appUrl}/api/cli/labs`, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: {
|
|
78
|
+
Authorization: `Bearer ${accessToken}`,
|
|
79
|
+
'Content-Type': 'application/json',
|
|
80
|
+
},
|
|
81
|
+
body: JSON.stringify(options),
|
|
82
|
+
});
|
|
83
|
+
const data = await parseJson(response);
|
|
84
|
+
if (!response.ok || typeof data?.created !== 'boolean' || !data?.lab?.id) {
|
|
85
|
+
const message = typeof data?.message === 'string'
|
|
86
|
+
? data.message
|
|
87
|
+
: 'failed to create lab';
|
|
88
|
+
throw new Error(message);
|
|
89
|
+
}
|
|
90
|
+
return data;
|
|
91
|
+
}
|
|
92
|
+
export async function fetchCliMe(appUrl, accessToken) {
|
|
93
|
+
const response = await fetch(`${appUrl}/api/cli/me`, {
|
|
94
|
+
headers: {
|
|
95
|
+
Authorization: `Bearer ${accessToken}`,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
const data = await parseJson(response);
|
|
102
|
+
if (!data?.user?.id || !data?.user?.email) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return data.user;
|
|
106
|
+
}
|
|
107
|
+
export async function updateCliMe(appUrl, accessToken, options) {
|
|
108
|
+
const response = await fetch(`${appUrl}/api/cli/me`, {
|
|
109
|
+
method: 'PATCH',
|
|
110
|
+
headers: {
|
|
111
|
+
Authorization: `Bearer ${accessToken}`,
|
|
112
|
+
'Content-Type': 'application/json',
|
|
113
|
+
},
|
|
114
|
+
body: JSON.stringify(options),
|
|
115
|
+
});
|
|
116
|
+
const data = await parseJson(response);
|
|
117
|
+
if (!response.ok || !data?.user?.id || !data?.user?.email) {
|
|
118
|
+
const message = typeof data?.message === 'string'
|
|
119
|
+
? data.message
|
|
120
|
+
: 'failed to update user profile';
|
|
121
|
+
throw new Error(message);
|
|
122
|
+
}
|
|
123
|
+
return data.user;
|
|
124
|
+
}
|
|
125
|
+
export async function createCliEssay(appUrl, accessToken, options) {
|
|
126
|
+
const response = await fetch(`${appUrl}/api/cli/lab-items/essay`, {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: {
|
|
129
|
+
Authorization: `Bearer ${accessToken}`,
|
|
130
|
+
'Content-Type': 'application/json',
|
|
131
|
+
},
|
|
132
|
+
body: JSON.stringify(options),
|
|
133
|
+
});
|
|
134
|
+
const data = await parseJson(response);
|
|
135
|
+
if (!response.ok || !data?.essay?.id || !data?.essay?.slug) {
|
|
136
|
+
const message = typeof data?.message === 'string'
|
|
137
|
+
? data.message
|
|
138
|
+
: 'failed to create essay';
|
|
139
|
+
throw new Error(message);
|
|
140
|
+
}
|
|
141
|
+
return data;
|
|
142
|
+
}
|
|
143
|
+
export async function createPublicCliAgent(appUrl, options) {
|
|
144
|
+
const response = await fetch(`${appUrl}/api/cli/agents/public`, {
|
|
145
|
+
method: 'POST',
|
|
146
|
+
headers: {
|
|
147
|
+
'Content-Type': 'application/json',
|
|
148
|
+
},
|
|
149
|
+
body: JSON.stringify(options),
|
|
150
|
+
});
|
|
151
|
+
const data = await parseJson(response);
|
|
152
|
+
if (!response.ok || !data?.agent?.id || !data?.profileUrl || !data?.claimUrl || !data?.manageToken) {
|
|
153
|
+
const message = typeof data?.message === 'string'
|
|
154
|
+
? data.message
|
|
155
|
+
: 'failed to create agent profile';
|
|
156
|
+
throw new Error(message);
|
|
157
|
+
}
|
|
158
|
+
return data;
|
|
159
|
+
}
|
|
160
|
+
export async function updatePublicCliAgent(appUrl, manageToken, options) {
|
|
161
|
+
const response = await fetch(`${appUrl}/api/cli/agents/public`, {
|
|
162
|
+
method: 'PATCH',
|
|
163
|
+
headers: {
|
|
164
|
+
'Content-Type': 'application/json',
|
|
165
|
+
},
|
|
166
|
+
body: JSON.stringify({
|
|
167
|
+
manageToken,
|
|
168
|
+
...options,
|
|
169
|
+
}),
|
|
170
|
+
});
|
|
171
|
+
const data = await parseJson(response);
|
|
172
|
+
if (!response.ok || !data?.agent?.id || !data?.profileUrl || !data?.claimUrl || !data?.manageToken) {
|
|
173
|
+
const message = typeof data?.message === 'string'
|
|
174
|
+
? data.message
|
|
175
|
+
: 'failed to update agent profile';
|
|
176
|
+
throw new Error(message);
|
|
177
|
+
}
|
|
178
|
+
return data;
|
|
179
|
+
}
|
|
180
|
+
export async function createOrGetCliAgent(appUrl, accessToken) {
|
|
181
|
+
const response = await fetch(`${appUrl}/api/cli/agents/me`, {
|
|
182
|
+
method: 'POST',
|
|
183
|
+
headers: {
|
|
184
|
+
Authorization: `Bearer ${accessToken}`,
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
const data = await parseJson(response);
|
|
188
|
+
if (!response.ok || !data?.agent?.id || !data?.profileUrl || !data?.claimUrl) {
|
|
189
|
+
const message = typeof data?.message === 'string'
|
|
190
|
+
? data.message
|
|
191
|
+
: 'failed to create or load agent profile';
|
|
192
|
+
throw new Error(message);
|
|
193
|
+
}
|
|
194
|
+
return data;
|
|
195
|
+
}
|
|
196
|
+
export async function updateCliAgentProfile(appUrl, accessToken, options) {
|
|
197
|
+
const response = await fetch(`${appUrl}/api/cli/agents/me`, {
|
|
198
|
+
method: 'PATCH',
|
|
199
|
+
headers: {
|
|
200
|
+
Authorization: `Bearer ${accessToken}`,
|
|
201
|
+
'Content-Type': 'application/json',
|
|
202
|
+
},
|
|
203
|
+
body: JSON.stringify(options),
|
|
204
|
+
});
|
|
205
|
+
const data = await parseJson(response);
|
|
206
|
+
if (!response.ok || !data?.agent?.id || !data?.profileUrl || !data?.claimUrl) {
|
|
207
|
+
const message = typeof data?.message === 'string'
|
|
208
|
+
? data.message
|
|
209
|
+
: 'failed to update agent profile';
|
|
210
|
+
throw new Error(message);
|
|
211
|
+
}
|
|
212
|
+
return data;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AA0BA,KAAK,UAAU,SAAS,CAAC,QAAkB;IACvC,IAAI,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,MAAc,EACd,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,qBAAqB,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC7B,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,IAA4B,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAAc,EACd,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,wBAAwB,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;KACtC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAmC,CAAA;IAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAC1D,CAAC;IAED,IACI,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;QACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,EACzB,CAAC;QACC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,WAAmB;IACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,sBAAsB,EAAE;QAC1D,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;SACzC;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,IAON,CAAA;AACL,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,MAAc,EACd,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,eAAe,EAAE;QACnD,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;SACzC;KACJ,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,IAAI,CAAC,IAAgB,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,MAAc,EACd,WAAmB,EACnB,OAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,eAAe,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACvE,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,sBAAsB,CAAA;QAChC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAAyC,CAAA;AACpD,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,MAAc,EACd,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE;QACjD,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;SACzC;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,IAAI,CAAC,IAAa,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAc,EACd,WAAmB,EACnB,OAGC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE;QACjD,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxD,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,+BAA+B,CAAA;QACzC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC,IAAa,CAAA;AAC7B,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,MAAc,EACd,WAAmB,EACnB,OAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,0BAA0B,EAAE;QAC9D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,wBAAwB,CAAA;QAClC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAA8B,CAAA;AACzC,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,MAAc,EACd,OAIC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,wBAAwB,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QACjG,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,gCAAgC,CAAA;QAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAA8B,CAAA;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,MAAc,EACd,WAAmB,EACnB,OAEC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,wBAAwB,EAAE;QAC5D,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACL,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,WAAW;YACX,GAAG,OAAO;SACb,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QACjG,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,gCAAgC,CAAA;QAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAA8B,CAAA;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAc,EACd,WAAmB;IAOnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,oBAAoB,EAAE;QACxD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;SACzC;KACJ,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3E,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,wCAAwC,CAAA;QAClD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAKN,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,MAAc,EACd,WAAmB,EACnB,OAKC;IAMD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,oBAAoB,EAAE;QACxD,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,WAAW,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3E,MAAM,OAAO,GACT,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,gCAAgC,CAAA;QAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,IAIN,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brag.d.ts","sourceRoot":"","sources":["../../src/commands/brag.ts"],"names":[],"mappings":"AAqBA,KAAK,WAAW,GAAG;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAgOD,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2L1E"}
|