hacklab 0.14.1 → 0.15.0
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/dist/agent-handoff.d.ts +46 -0
- package/dist/agent-handoff.d.ts.map +1 -0
- package/dist/agent-handoff.js +87 -0
- package/dist/agent-handoff.js.map +1 -0
- package/dist/commands/rtfm.d.ts +7 -0
- package/dist/commands/rtfm.d.ts.map +1 -1
- package/dist/commands/rtfm.js +7 -0
- package/dist/commands/rtfm.js.map +1 -1
- package/dist/commands/setup.d.ts +2 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +62 -2
- package/dist/commands/setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The handoff: at the end of `hacklab setup` we look for a coding-agent CLI on
|
|
3
|
+
* the machine and, with one keypress of consent, hand it the profile-setup
|
|
4
|
+
* prompt. The agent runs interactively in the same terminal — the user watches
|
|
5
|
+
* it, answers its permission prompts, and (if the agent CLI is installed but
|
|
6
|
+
* logged out) walks its own login flow. Nothing here is silent or headless.
|
|
7
|
+
*
|
|
8
|
+
* When no agent can be used we tell the backend, so the web onboarding can fall
|
|
9
|
+
* back to showing the manual paste-the-prompt step instead of waiting for a
|
|
10
|
+
* ping that is never coming.
|
|
11
|
+
*/
|
|
12
|
+
export type AgentCli = {
|
|
13
|
+
/** Executable name, as it appears on PATH. */
|
|
14
|
+
bin: string;
|
|
15
|
+
/** What we call it in the terminal. */
|
|
16
|
+
name: string;
|
|
17
|
+
/** argv for "open interactively, seeded with this prompt". */
|
|
18
|
+
args: (prompt: string) => string[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Probed in order — first one on PATH wins. All three take the prompt as a
|
|
22
|
+
* single positional argument today; the shape stays per-entry so one of them
|
|
23
|
+
* can diverge without touching the others.
|
|
24
|
+
*/
|
|
25
|
+
export declare const AGENT_CLIS: AgentCli[];
|
|
26
|
+
/** The first agent CLI installed on this machine, or null if there is none. */
|
|
27
|
+
export declare function findAgentCli(): AgentCli | null;
|
|
28
|
+
/**
|
|
29
|
+
* Hand the terminal to `agent`, seeded with `prompt`, and block until its
|
|
30
|
+
* session exits. Returns false when the process never started (ENOENT, a broken
|
|
31
|
+
* shim) — the caller then treats the agent as unavailable. A non-zero exit is
|
|
32
|
+
* still a launch: the user was there and saw whatever happened.
|
|
33
|
+
*/
|
|
34
|
+
export declare function launchAgentCli(agent: AgentCli, prompt: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Tell the backend that no agent took the profile work, so the web onboarding
|
|
37
|
+
* shows the manual prompt instead of waiting. Best effort by design: a failure
|
|
38
|
+
* (offline, or a backend that doesn't have the route yet) must never break the
|
|
39
|
+
* end of setup. There is deliberately no 'launched' outcome — the agent's own
|
|
40
|
+
* `hacklab ping` is that signal.
|
|
41
|
+
*
|
|
42
|
+
* Server contract (POST /api/cli/agent-handoff):
|
|
43
|
+
* `Authorization: Bearer <session token>`, body `{ outcome }`.
|
|
44
|
+
*/
|
|
45
|
+
export declare function notifyAgentHandoff(appUrl: string, token: string, outcome: 'unavailable' | 'declined'): Promise<void>;
|
|
46
|
+
//# sourceMappingURL=agent-handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-handoff.d.ts","sourceRoot":"","sources":["../src/agent-handoff.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAA;IACX,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;CACnC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAIhC,CAAA;AA2BD,+EAA+E;AAC/E,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWvE;AAID;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GAAG,UAAU,GAClC,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { accessSync, constants } from 'node:fs';
|
|
3
|
+
import { delimiter, join } from 'node:path';
|
|
4
|
+
/**
|
|
5
|
+
* Probed in order — first one on PATH wins. All three take the prompt as a
|
|
6
|
+
* single positional argument today; the shape stays per-entry so one of them
|
|
7
|
+
* can diverge without touching the others.
|
|
8
|
+
*/
|
|
9
|
+
export const AGENT_CLIS = [
|
|
10
|
+
{ bin: 'claude', name: 'Claude Code', args: (prompt) => [prompt] },
|
|
11
|
+
{ bin: 'codex', name: 'Codex', args: (prompt) => [prompt] },
|
|
12
|
+
{ bin: 'grok', name: 'Grok', args: (prompt) => [prompt] },
|
|
13
|
+
];
|
|
14
|
+
/** Is `bin` an executable file in one of the PATH directories? */
|
|
15
|
+
function onPath(bin) {
|
|
16
|
+
const dirs = (process.env.PATH ?? '').split(delimiter).filter(Boolean);
|
|
17
|
+
// On Windows the thing on PATH is `claude.cmd` / `claude.exe`, never a
|
|
18
|
+
// bare-named file, so every candidate needs the PATHEXT suffixes tried.
|
|
19
|
+
const exts = process.platform === 'win32'
|
|
20
|
+
? (process.env.PATHEXT ?? '.COM;.EXE;.BAT;.CMD')
|
|
21
|
+
.split(';')
|
|
22
|
+
.filter(Boolean)
|
|
23
|
+
: [''];
|
|
24
|
+
for (const dir of dirs) {
|
|
25
|
+
for (const ext of exts) {
|
|
26
|
+
try {
|
|
27
|
+
accessSync(join(dir, bin + ext), constants.X_OK);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Not here (missing, or not executable) — keep looking.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
/** The first agent CLI installed on this machine, or null if there is none. */
|
|
38
|
+
export function findAgentCli() {
|
|
39
|
+
return AGENT_CLIS.find((agent) => onPath(agent.bin)) ?? null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Hand the terminal to `agent`, seeded with `prompt`, and block until its
|
|
43
|
+
* session exits. Returns false when the process never started (ENOENT, a broken
|
|
44
|
+
* shim) — the caller then treats the agent as unavailable. A non-zero exit is
|
|
45
|
+
* still a launch: the user was there and saw whatever happened.
|
|
46
|
+
*/
|
|
47
|
+
export function launchAgentCli(agent, prompt) {
|
|
48
|
+
// Windows agent CLIs are `.cmd` shims, which Node refuses to spawn without a
|
|
49
|
+
// shell; cmd.exe joins argv verbatim, so the prompt needs its own quotes.
|
|
50
|
+
const win = process.platform === 'win32';
|
|
51
|
+
const args = agent.args(prompt).map((arg) => (win ? `"${arg}"` : arg));
|
|
52
|
+
try {
|
|
53
|
+
const res = spawnSync(agent.bin, args, { stdio: 'inherit', shell: win });
|
|
54
|
+
return !res.error;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const HANDOFF_TIMEOUT_MS = 8000;
|
|
61
|
+
/**
|
|
62
|
+
* Tell the backend that no agent took the profile work, so the web onboarding
|
|
63
|
+
* shows the manual prompt instead of waiting. Best effort by design: a failure
|
|
64
|
+
* (offline, or a backend that doesn't have the route yet) must never break the
|
|
65
|
+
* end of setup. There is deliberately no 'launched' outcome — the agent's own
|
|
66
|
+
* `hacklab ping` is that signal.
|
|
67
|
+
*
|
|
68
|
+
* Server contract (POST /api/cli/agent-handoff):
|
|
69
|
+
* `Authorization: Bearer <session token>`, body `{ outcome }`.
|
|
70
|
+
*/
|
|
71
|
+
export async function notifyAgentHandoff(appUrl, token, outcome) {
|
|
72
|
+
try {
|
|
73
|
+
await fetch(`${appUrl}/api/cli/agent-handoff`, {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
'Content-Type': 'application/json',
|
|
77
|
+
Authorization: `Bearer ${token}`,
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({ outcome }),
|
|
80
|
+
signal: AbortSignal.timeout(HANDOFF_TIMEOUT_MS),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Best effort — setup is already done, and this only steers the web page.
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=agent-handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-handoff.js","sourceRoot":"","sources":["../src/agent-handoff.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/rtfm.d.ts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one line a user (or `hacklab setup`) hands an agent to start profile
|
|
3
|
+
* setup. Everything the agent needs is behind `hacklab rtfm profile-setup`, so
|
|
4
|
+
* this stays short enough to read and retype. The web onboarding shows the same
|
|
5
|
+
* sentence verbatim (hacklabubu/hacklab) — change both together.
|
|
6
|
+
*/
|
|
7
|
+
export declare const PROFILE_SETUP_PROMPT = "yo setup my profile on hacklab. to see how, run hacklab rtfm profile-setup";
|
|
1
8
|
export declare function rtfm(args: string[]): void;
|
|
2
9
|
//# sourceMappingURL=rtfm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtfm.d.ts","sourceRoot":"","sources":["../../src/commands/rtfm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rtfm.d.ts","sourceRoot":"","sources":["../../src/commands/rtfm.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,+EAC6C,CAAA;AAoF9E,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAezC"}
|
package/dist/commands/rtfm.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { bold, dim, error, info } from '../ui.js';
|
|
2
|
+
/**
|
|
3
|
+
* The one line a user (or `hacklab setup`) hands an agent to start profile
|
|
4
|
+
* setup. Everything the agent needs is behind `hacklab rtfm profile-setup`, so
|
|
5
|
+
* this stays short enough to read and retype. The web onboarding shows the same
|
|
6
|
+
* sentence verbatim (hacklabubu/hacklab) — change both together.
|
|
7
|
+
*/
|
|
8
|
+
export const PROFILE_SETUP_PROMPT = 'yo setup my profile on hacklab. to see how, run hacklab rtfm profile-setup';
|
|
2
9
|
const MANUALS = [
|
|
3
10
|
{
|
|
4
11
|
name: 'profile-setup',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtfm.js","sourceRoot":"","sources":["../../src/commands/rtfm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"rtfm.js","sourceRoot":"","sources":["../../src/commands/rtfm.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/setup.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `hacklab setup` — the front door.
|
|
3
3
|
*
|
|
4
|
-
* scan → anonymous rank → GitHub auth → one consent question → upload →
|
|
4
|
+
* scan → anonymous rank → GitHub auth → one consent question → upload →
|
|
5
|
+
* daemon → hand the profile work to a coding agent
|
|
5
6
|
*
|
|
6
7
|
* The one deliberate composite command in the CLI (DESIGN.md's "one job per
|
|
7
8
|
* command" carries a recorded exception for it): face-to-face testing showed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAiCA;;;;;;;;;;;;GAYG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA8K3C"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as clack from '@clack/prompts';
|
|
2
|
+
import { findAgentCli, launchAgentCli, notifyAgentHandoff, } from '../agent-handoff.js';
|
|
2
3
|
import { dailySyncState, installDailySync } from '../daily-sync.js';
|
|
3
4
|
import { captureEvent, identifyUser } from '../posthog.js';
|
|
4
5
|
import { loadPromptConsent, savePromptConsent, } from '../prompt-consent.js';
|
|
@@ -7,12 +8,15 @@ import { collectToolScans, mergeToolScans, } from '../scanners/index.js';
|
|
|
7
8
|
import { loadSession, resolveAppUrl, saveSession, } from '../session.js';
|
|
8
9
|
import { scanConsentedPromptStats, uploadTokenScan } from '../sync.js';
|
|
9
10
|
import { bold, dim, error, info, success } from '../ui.js';
|
|
11
|
+
import { waitForBareEnter } from '../utils/waitForEnter.js';
|
|
10
12
|
import { ensureHandleClaimed, performLogin } from './login.js';
|
|
13
|
+
import { PROFILE_SETUP_PROMPT } from './rtfm.js';
|
|
11
14
|
import { formatScanReceipt } from './scan.js';
|
|
12
15
|
/**
|
|
13
16
|
* `hacklab setup` — the front door.
|
|
14
17
|
*
|
|
15
|
-
* scan → anonymous rank → GitHub auth → one consent question → upload →
|
|
18
|
+
* scan → anonymous rank → GitHub auth → one consent question → upload →
|
|
19
|
+
* daemon → hand the profile work to a coding agent
|
|
16
20
|
*
|
|
17
21
|
* The one deliberate composite command in the CLI (DESIGN.md's "one job per
|
|
18
22
|
* command" carries a recorded exception for it): face-to-face testing showed
|
|
@@ -150,7 +154,7 @@ export async function setup() {
|
|
|
150
154
|
// ── Tail ─────────────────────────────────────────────────────────────────
|
|
151
155
|
console.log('');
|
|
152
156
|
success(session.handle ? `you're in — ${appUrl}/${session.handle}` : "you're in");
|
|
153
|
-
|
|
157
|
+
const handoff = await offerAgentHandoff(session, appUrl);
|
|
154
158
|
if (session.handle) {
|
|
155
159
|
await identifyUser(session.handle, {
|
|
156
160
|
$set: {
|
|
@@ -165,7 +169,63 @@ export async function setup() {
|
|
|
165
169
|
...((rank ?? previewRank) ? { rank: rank ?? previewRank } : {}),
|
|
166
170
|
prompt_consent: consent,
|
|
167
171
|
});
|
|
172
|
+
await captureEvent(session.handle, 'cli_agent_handoff', {
|
|
173
|
+
...(handoff.agent ? { agent: handoff.agent } : {}),
|
|
174
|
+
outcome: handoff.outcome,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* The last beat of setup: offer to hand the profile work to a coding agent the
|
|
180
|
+
* user already has installed, and close the flow.
|
|
181
|
+
*
|
|
182
|
+
* Every path ends with one closing line, and the browser line is printed before
|
|
183
|
+
* the agent takes over the terminal — once it does, nothing we print afterwards
|
|
184
|
+
* would be read in time. When no agent runs, the backend is told so the web
|
|
185
|
+
* onboarding switches to the manual paste-the-prompt step; a launched agent
|
|
186
|
+
* needs no such call, because its own `hacklab ping` is the signal.
|
|
187
|
+
*/
|
|
188
|
+
async function offerAgentHandoff(session, appUrl) {
|
|
189
|
+
const browserLine = 'head back to your browser — the page will move on by itself';
|
|
190
|
+
const agent = process.stdin.isTTY ? findAgentCli() : null;
|
|
191
|
+
if (!agent) {
|
|
192
|
+
await notifyAgentHandoff(appUrl, session.token, 'unavailable');
|
|
193
|
+
if (process.stdin.isTTY)
|
|
194
|
+
printManualPrompt();
|
|
195
|
+
clack.outro(dim(browserLine));
|
|
196
|
+
return { outcome: 'unavailable' };
|
|
197
|
+
}
|
|
198
|
+
console.log('');
|
|
199
|
+
console.log(`found ${bold(agent.name)} — it can set up your profile now`);
|
|
200
|
+
console.log(dim('it runs here in your terminal, and you approve what it does'));
|
|
201
|
+
const accepted = await waitForBareEnter(`(press enter to hand off) ${dim('· anything else skips')} `);
|
|
202
|
+
if (!accepted) {
|
|
203
|
+
await notifyAgentHandoff(appUrl, session.token, 'declined');
|
|
204
|
+
printManualPrompt();
|
|
205
|
+
clack.outro(dim(browserLine));
|
|
206
|
+
return { outcome: 'declined', agent: agent.bin };
|
|
168
207
|
}
|
|
208
|
+
console.log('');
|
|
209
|
+
console.log(dim(browserLine));
|
|
210
|
+
console.log('');
|
|
211
|
+
if (!launchAgentCli(agent, PROFILE_SETUP_PROMPT)) {
|
|
212
|
+
await notifyAgentHandoff(appUrl, session.token, 'unavailable');
|
|
213
|
+
console.log('');
|
|
214
|
+
console.log(`couldn't start ${agent.name}`);
|
|
215
|
+
printManualPrompt();
|
|
216
|
+
clack.outro(dim(session.handle ? `${appUrl}/${session.handle}` : appUrl));
|
|
217
|
+
return { outcome: 'spawn_failed', agent: agent.bin };
|
|
218
|
+
}
|
|
219
|
+
clack.outro(dim(session.handle
|
|
220
|
+
? `${agent.name} finished — ${appUrl}/${session.handle}`
|
|
221
|
+
: `${agent.name} finished`));
|
|
222
|
+
return { outcome: 'launched', agent: agent.bin };
|
|
223
|
+
}
|
|
224
|
+
/** The fallback when no agent runs here: the same line the web page shows. */
|
|
225
|
+
function printManualPrompt() {
|
|
226
|
+
console.log('');
|
|
227
|
+
console.log(dim("paste this into your agent when you're ready:"));
|
|
228
|
+
console.log(` ${bold(PROFILE_SETUP_PROMPT)}`);
|
|
169
229
|
}
|
|
170
230
|
/**
|
|
171
231
|
* Ask once whether to share conversation text, defaulting to yes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|