jfl 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/clawdbot-plugin/clawdbot.plugin.json +12 -1
  2. package/clawdbot-plugin/index.js +5 -5
  3. package/clawdbot-plugin/index.ts +5 -5
  4. package/dist/commands/context-hub.d.ts +4 -0
  5. package/dist/commands/context-hub.d.ts.map +1 -1
  6. package/dist/commands/context-hub.js +570 -81
  7. package/dist/commands/context-hub.js.map +1 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +42 -11
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/peter.d.ts +15 -0
  12. package/dist/commands/peter.d.ts.map +1 -0
  13. package/dist/commands/peter.js +198 -0
  14. package/dist/commands/peter.js.map +1 -0
  15. package/dist/commands/ralph.d.ts +3 -1
  16. package/dist/commands/ralph.d.ts.map +1 -1
  17. package/dist/commands/ralph.js +40 -5
  18. package/dist/commands/ralph.js.map +1 -1
  19. package/dist/commands/session.d.ts +2 -1
  20. package/dist/commands/session.d.ts.map +1 -1
  21. package/dist/commands/session.js +496 -49
  22. package/dist/commands/session.js.map +1 -1
  23. package/dist/commands/update.d.ts.map +1 -1
  24. package/dist/commands/update.js +25 -6
  25. package/dist/commands/update.js.map +1 -1
  26. package/dist/dashboard/components.d.ts +7 -0
  27. package/dist/dashboard/components.d.ts.map +1 -0
  28. package/dist/dashboard/components.js +163 -0
  29. package/dist/dashboard/components.js.map +1 -0
  30. package/dist/dashboard/index.d.ts +12 -0
  31. package/dist/dashboard/index.d.ts.map +1 -0
  32. package/dist/dashboard/index.js +132 -0
  33. package/dist/dashboard/index.js.map +1 -0
  34. package/dist/dashboard/pages.d.ts +7 -0
  35. package/dist/dashboard/pages.d.ts.map +1 -0
  36. package/dist/dashboard/pages.js +742 -0
  37. package/dist/dashboard/pages.js.map +1 -0
  38. package/dist/dashboard/styles.d.ts +7 -0
  39. package/dist/dashboard/styles.d.ts.map +1 -0
  40. package/dist/dashboard/styles.js +497 -0
  41. package/dist/dashboard/styles.js.map +1 -0
  42. package/dist/index.js +30 -3
  43. package/dist/index.js.map +1 -1
  44. package/dist/lib/map-event-bus.d.ts +48 -0
  45. package/dist/lib/map-event-bus.d.ts.map +1 -0
  46. package/dist/lib/map-event-bus.js +326 -0
  47. package/dist/lib/map-event-bus.js.map +1 -0
  48. package/dist/lib/peter-parker-bridge.d.ts +33 -0
  49. package/dist/lib/peter-parker-bridge.d.ts.map +1 -0
  50. package/dist/lib/peter-parker-bridge.js +116 -0
  51. package/dist/lib/peter-parker-bridge.js.map +1 -0
  52. package/dist/lib/peter-parker-config.d.ts +13 -0
  53. package/dist/lib/peter-parker-config.d.ts.map +1 -0
  54. package/dist/lib/peter-parker-config.js +86 -0
  55. package/dist/lib/peter-parker-config.js.map +1 -0
  56. package/dist/lib/service-utils.d.ts.map +1 -1
  57. package/dist/lib/service-utils.js +33 -17
  58. package/dist/lib/service-utils.js.map +1 -1
  59. package/dist/mcp/context-hub-mcp.js +122 -22
  60. package/dist/mcp/context-hub-mcp.js.map +1 -1
  61. package/dist/types/map.d.ts +33 -0
  62. package/dist/types/map.d.ts.map +1 -0
  63. package/dist/types/map.js +39 -0
  64. package/dist/types/map.js.map +1 -0
  65. package/dist/ui/event-dashboard.d.ts +12 -0
  66. package/dist/ui/event-dashboard.d.ts.map +1 -0
  67. package/dist/ui/event-dashboard.js +342 -0
  68. package/dist/ui/event-dashboard.js.map +1 -0
  69. package/package.json +1 -1
  70. package/scripts/test-map-eventbus.sh +357 -0
@@ -1,53 +1,196 @@
1
1
  import chalk from "chalk";
2
2
  import ora from "ora";
3
3
  import * as p from "@clack/prompts";
4
- import { existsSync } from "fs";
4
+ import { execSync, spawn } from "child_process";
5
+ import { existsSync, readFileSync } from "fs";
5
6
  import { join } from "path";
6
7
  import { homedir } from "os";
7
8
  import Conf from "conf";
8
- import { ensureDayPass, isTrialMode } from "../utils/auth-guard.js";
9
9
  import { ensureContextHub, getContextHubConfig } from "../utils/ensure-context-hub.js";
10
- import { isRunning as getContextHubStatus } from "./context-hub.js";
10
+ import { isRunning as getContextHubStatus, ensureDaemonInstalled } from "./context-hub.js";
11
11
  import { initCommand } from "./init.js";
12
+ import { authenticateWithGitHub, discoverJflProjects, cloneRepository, } from "../utils/github-auth.js";
13
+ import { renderBanner, showHowItWorksNotice, theme } from "../ui/index.js";
12
14
  import axios from "axios";
13
15
  const config = new Conf({ projectName: "jfl" });
16
+ const AUTONOMOUS_FLAGS = {
17
+ claude: "--dangerously-skip-permissions",
18
+ codex: "--full-auto",
19
+ aider: "--yes-always",
20
+ pi: "--yolo",
21
+ none: undefined,
22
+ };
23
+ const CHROME_FLAG = "--chrome";
14
24
  export async function sessionCommand(options = {}) {
15
25
  const cwd = process.cwd();
16
- // Check if in a JFL project
17
26
  const hasJflConfig = existsSync(join(cwd, "CLAUDE.md")) || existsSync(join(cwd, "knowledge"));
18
27
  if (!hasJflConfig) {
19
28
  await onboardNewUser(cwd);
20
29
  return;
21
30
  }
22
- // Check day pass for paid users (trial mode is free)
23
- if (!isTrialMode()) {
24
- console.log(chalk.yellow("\n💳 Payment required (teammates detected)\n"));
25
- const dayPass = await ensureDayPass();
26
- if (!dayPass) {
27
- console.log(chalk.red("\n❌ Cannot start session without active Day Pass\n"));
28
- console.log(chalk.gray("Run: jfl login --x402"));
29
- console.log();
30
- return;
31
- }
32
- console.log(chalk.green("✓ Day Pass verified\n"));
33
- }
34
- else {
35
- console.log(chalk.green("🎁 Trial Mode") + chalk.gray(" - Free until foundation complete\n"));
36
- }
37
31
  // Track this project
38
32
  const projects = config.get("projects") || [];
39
33
  if (!projects.includes(cwd)) {
40
34
  projects.push(cwd);
41
35
  config.set("projects", projects);
42
36
  }
43
- // Show JFL Gateway Dashboard
44
- await showGatewayDashboard();
37
+ // Auto-install daemon (fire-and-forget, silent)
38
+ ensureDaemonInstalled({ quiet: true }).catch(() => { });
39
+ // Check for saved CLI preference
40
+ let preferredCLI = config.get("aiCLI");
41
+ // Detect available CLIs
42
+ const available = detectAICLIs();
43
+ if (available.length === 0) {
44
+ await onboardAICLI();
45
+ return;
46
+ }
47
+ // If preference is set and still available, use it
48
+ if (preferredCLI) {
49
+ const preferred = available.find(cli => cli.command === preferredCLI);
50
+ if (preferred) {
51
+ await launchCLI(preferred, cwd);
52
+ return;
53
+ }
54
+ }
55
+ // If only one option, use it
56
+ if (available.length === 1) {
57
+ config.set("aiCLI", available[0].command);
58
+ await launchCLI(available[0], cwd);
59
+ return;
60
+ }
61
+ // Multiple options - let them choose
62
+ console.log(chalk.bold("\n🤖 JFL - AI Session\n"));
63
+ console.log(chalk.gray("Multiple AI CLIs detected:\n"));
64
+ const selected = await p.select({
65
+ message: "Which AI do you want to use?",
66
+ options: available.map(cli => ({
67
+ label: `${cli.name}${cli.version ? ` (${cli.version})` : ""}`,
68
+ value: cli.command,
69
+ })),
70
+ });
71
+ if (p.isCancel(selected)) {
72
+ p.cancel("Session cancelled.");
73
+ return;
74
+ }
75
+ const remember = await p.confirm({
76
+ message: "Remember this choice?",
77
+ initialValue: true,
78
+ });
79
+ if (!p.isCancel(remember) && remember) {
80
+ config.set("aiCLI", selected);
81
+ }
82
+ const cli = available.find(c => c.command === selected);
83
+ await launchCLI(cli, cwd);
84
+ }
85
+ function detectAICLIs() {
86
+ const clis = [];
87
+ try {
88
+ const version = execSync("claude --version 2>/dev/null", { encoding: "utf-8" }).trim();
89
+ clis.push({
90
+ name: "Claude Code",
91
+ command: "claude",
92
+ provider: "claude",
93
+ version: version.split("\n")[0],
94
+ });
95
+ }
96
+ catch { }
97
+ try {
98
+ const version = execSync("codex --version 2>/dev/null", { encoding: "utf-8" }).trim();
99
+ clis.push({
100
+ name: "Codex CLI",
101
+ command: "codex",
102
+ provider: "codex",
103
+ version,
104
+ });
105
+ }
106
+ catch { }
107
+ try {
108
+ const version = execSync("aider --version 2>/dev/null", { encoding: "utf-8" }).trim();
109
+ clis.push({
110
+ name: "Aider",
111
+ command: "aider",
112
+ provider: "aider",
113
+ version,
114
+ });
115
+ }
116
+ catch { }
117
+ try {
118
+ const version = execSync("pi --version 2>/dev/null", { encoding: "utf-8" }).trim();
119
+ clis.push({
120
+ name: "Pi",
121
+ command: "pi",
122
+ provider: "pi",
123
+ version: version.split("\n")[0],
124
+ });
125
+ }
126
+ catch { }
127
+ return clis;
128
+ }
129
+ async function promptAutonomousMode(cli) {
130
+ const savedPref = config.get(`autonomous_${cli.provider}`);
131
+ if (savedPref !== undefined)
132
+ return savedPref;
133
+ const flag = AUTONOMOUS_FLAGS[cli.provider];
134
+ if (!flag)
135
+ return false;
136
+ console.log();
137
+ const autonomous = await p.confirm({
138
+ message: `Run in autonomous mode? (${flag})`,
139
+ initialValue: false,
140
+ });
141
+ if (p.isCancel(autonomous))
142
+ return false;
143
+ if (autonomous) {
144
+ console.log(chalk.yellow("\n⚠️ Autonomous mode: AI can execute without asking permission."));
145
+ }
146
+ const remember = await p.confirm({
147
+ message: "Remember this choice?",
148
+ initialValue: true,
149
+ });
150
+ if (!p.isCancel(remember) && remember) {
151
+ config.set(`autonomous_${cli.provider}`, autonomous);
152
+ }
153
+ return autonomous;
154
+ }
155
+ async function promptChromeMode(cli) {
156
+ if (cli.provider !== "claude")
157
+ return false;
158
+ const savedPref = config.get("chrome_claude");
159
+ if (savedPref !== undefined)
160
+ return savedPref;
161
+ console.log();
162
+ const chrome = await p.confirm({
163
+ message: `Enable browser capabilities? (${CHROME_FLAG})`,
164
+ initialValue: false,
165
+ });
166
+ if (p.isCancel(chrome))
167
+ return false;
168
+ if (chrome) {
169
+ console.log(chalk.cyan("\n🌐 Chrome mode: Claude can browse and interact with web pages."));
170
+ }
171
+ const remember = await p.confirm({
172
+ message: "Remember this choice?",
173
+ initialValue: true,
174
+ });
175
+ if (!p.isCancel(remember) && remember) {
176
+ config.set("chrome_claude", chrome);
177
+ }
178
+ return chrome;
179
+ }
180
+ function showBanner() {
181
+ let version;
182
+ try {
183
+ const pkgPath = new URL("../../package.json", import.meta.url);
184
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
185
+ version = pkg.version;
186
+ }
187
+ catch { }
188
+ console.log(renderBanner({ version }));
45
189
  }
46
190
  async function showGatewayDashboard() {
47
191
  console.log(chalk.bold.cyan("\n┌─────────────────────────────────────────┐"));
48
192
  console.log(chalk.bold.cyan("│ JFL Gateway Dashboard │"));
49
193
  console.log(chalk.bold.cyan("└─────────────────────────────────────────┘\n"));
50
- // 1. Ensure and check Context Hub
51
194
  const spinner1 = ora("Checking Context Hub...").start();
52
195
  await ensureContextHub();
53
196
  const contextHubConfig = getContextHubConfig();
@@ -59,7 +202,6 @@ async function showGatewayDashboard() {
59
202
  else {
60
203
  spinner1.fail(chalk.red("Context Hub not running"));
61
204
  }
62
- // 2. Check Service Manager
63
205
  const spinner2 = ora("Checking Service Manager...").start();
64
206
  const serviceManagerStatus = await checkServiceManager();
65
207
  if (serviceManagerStatus.running) {
@@ -70,31 +212,12 @@ async function showGatewayDashboard() {
70
212
  spinner2.warn(chalk.yellow("Service Manager not running"));
71
213
  console.log(chalk.gray(" Start with: pm2 start ~/.jfl/service-manager/ecosystem.config.js"));
72
214
  }
73
- // 3. Show connection info
74
215
  console.log();
75
216
  console.log(chalk.bold("Gateway Endpoints:"));
76
217
  console.log(chalk.gray(" Context Hub: ") + chalk.cyan(`http://localhost:${contextHubConfig.port}`));
77
218
  console.log(chalk.gray(" Service Manager: ") + chalk.cyan("http://localhost:3401"));
78
219
  console.log(chalk.gray(" MCP Server: ") + chalk.cyan("Connected via MCP"));
79
- // 4. Show how to connect
80
- console.log();
81
- console.log(chalk.bold("AI Tools Connection:"));
82
- console.log(chalk.gray(" Claude Code connects via MCP automatically"));
83
- console.log(chalk.gray(" Cursor connects via MCP automatically"));
84
- console.log(chalk.gray(" Custom tools can use HTTP API"));
85
- // 5. Show available commands
86
- console.log();
87
- console.log(chalk.bold("Manage Services:"));
88
- console.log(chalk.gray(" jfl-services list ") + "# List all services");
89
- console.log(chalk.gray(" jfl-services start <id> ") + "# Start a service");
90
- console.log(chalk.gray(" jfl-services logs <id> ") + "# View service logs");
91
220
  console.log();
92
- console.log(chalk.bold("View Status:"));
93
- console.log(chalk.gray(" jfl status ") + "# Project status");
94
- console.log(chalk.gray(" jfl hud ") + "# Campaign dashboard");
95
- console.log();
96
- console.log(chalk.green("✓ JFL Gateway is ready!"));
97
- console.log(chalk.gray(" Open Claude Code or Cursor to connect via MCP\n"));
98
221
  }
99
222
  async function checkServiceManager() {
100
223
  try {
@@ -102,20 +225,344 @@ async function checkServiceManager() {
102
225
  const services = response.data.stats?.total_services || 0;
103
226
  return { running: true, services };
104
227
  }
105
- catch (err) {
228
+ catch {
106
229
  return { running: false };
107
230
  }
108
231
  }
232
+ async function launchCLI(cli, cwd) {
233
+ const autonomous = await promptAutonomousMode(cli);
234
+ let chrome = false;
235
+ if (cli.provider === "claude") {
236
+ chrome = await promptChromeMode(cli);
237
+ }
238
+ // Ensure Context Hub is running and show dashboard before launch
239
+ await showGatewayDashboard();
240
+ // Build args
241
+ const args = [];
242
+ if (autonomous && AUTONOMOUS_FLAGS[cli.provider]) {
243
+ args.push(AUTONOMOUS_FLAGS[cli.provider]);
244
+ }
245
+ if (chrome) {
246
+ args.push(CHROME_FLAG);
247
+ }
248
+ // Show banner + mode indicators
249
+ showBanner();
250
+ const modes = [];
251
+ if (autonomous)
252
+ modes.push("autonomous");
253
+ if (chrome)
254
+ modes.push("chrome");
255
+ const modeStr = modes.length > 0 ? theme.dim(` (${modes.join(", ")})`) : "";
256
+ console.log(theme.accent(`Launching ${cli.name}`) + modeStr);
257
+ console.log(theme.dim("Context loaded from CLAUDE.md + knowledge/\n"));
258
+ console.log(theme.dimmer("─".repeat(50)));
259
+ console.log();
260
+ const child = spawn(cli.command, args, {
261
+ cwd,
262
+ stdio: "inherit",
263
+ env: {
264
+ ...process.env,
265
+ JFL_PROJECT: cwd,
266
+ },
267
+ });
268
+ child.on("error", (err) => {
269
+ console.error(chalk.red(`\nFailed to launch ${cli.name}:`), err.message);
270
+ });
271
+ child.on("exit", (code) => {
272
+ if (code !== 0 && code !== null) {
273
+ console.log(chalk.yellow(`\n${cli.name} exited with code ${code}`));
274
+ }
275
+ console.log(chalk.gray("\nJFL session ended.\n"));
276
+ });
277
+ }
109
278
  async function onboardNewUser(cwd) {
110
- console.log(chalk.yellow("\n⚠️ Not in a JFL project\n"));
111
- const shouldInit = await p.confirm({
112
- message: "Initialize this directory as a JFL project?",
113
- initialValue: true,
279
+ showBanner();
280
+ showHowItWorksNotice();
281
+ const knownProjects = config.get("projects") || [];
282
+ const existingProjects = knownProjects.filter((proj) => existsSync(join(proj, "CLAUDE.md")) || existsSync(join(proj, "knowledge")));
283
+ p.intro(chalk.hex("#FFD700")("┌ JFL onboarding"));
284
+ if (existingProjects.length > 0) {
285
+ const selected = await p.select({
286
+ message: "Open a project or create new?",
287
+ options: [
288
+ ...existingProjects.map((proj) => ({
289
+ label: proj.replace(process.env.HOME || "", "~"),
290
+ value: proj,
291
+ })),
292
+ { label: "Join existing project (I was invited)", value: "__join__" },
293
+ { label: "Create new project", value: "__new__" },
294
+ ],
295
+ });
296
+ if (p.isCancel(selected)) {
297
+ p.cancel("Setup cancelled.");
298
+ process.exit(0);
299
+ }
300
+ if (selected === "__join__") {
301
+ await joinExistingProject();
302
+ return;
303
+ }
304
+ if (selected !== "__new__") {
305
+ config.set("projects", existingProjects);
306
+ process.chdir(selected);
307
+ p.outro(chalk.hex("#FFA500")(`Opening ${selected.replace(process.env.HOME || "", "~")}`));
308
+ const available = detectAICLIs();
309
+ if (available.length > 0) {
310
+ await launchCLI(available[0], selected);
311
+ }
312
+ else {
313
+ await onboardAICLI();
314
+ }
315
+ return;
316
+ }
317
+ }
318
+ const action = await p.select({
319
+ message: "What do you want to do?",
320
+ options: [
321
+ { label: "Join existing project (I was invited)", value: "join" },
322
+ { label: "Create a new project", value: "create" },
323
+ ],
114
324
  });
115
- if (p.isCancel(shouldInit) || !shouldInit) {
116
- console.log(chalk.gray("\nRun 'jfl init' when ready\n"));
325
+ if (p.isCancel(action)) {
326
+ p.cancel("Setup cancelled.");
327
+ process.exit(0);
328
+ }
329
+ if (action === "join") {
330
+ await joinExistingProject();
117
331
  return;
118
332
  }
333
+ p.outro(chalk.hex("#FFA500")("Launching project setup..."));
119
334
  await initCommand();
120
335
  }
336
+ async function joinExistingProject() {
337
+ console.log(chalk.cyan("\n🔗 Join Existing Project\n"));
338
+ let username;
339
+ try {
340
+ username = await authenticateWithGitHub();
341
+ }
342
+ catch (error) {
343
+ console.error(chalk.red("\nGitHub authentication failed"));
344
+ console.error(chalk.gray(error instanceof Error ? error.message : String(error)));
345
+ return;
346
+ }
347
+ let projects;
348
+ try {
349
+ projects = await discoverJflProjects();
350
+ }
351
+ catch (error) {
352
+ console.error(chalk.red("\nFailed to discover projects"));
353
+ console.error(chalk.gray(error instanceof Error ? error.message : String(error)));
354
+ return;
355
+ }
356
+ if (projects.length === 0) {
357
+ console.log(chalk.yellow("\nNo JFL projects found that you have access to.\n"));
358
+ console.log(chalk.gray("Ask the project owner to add you as a collaborator."));
359
+ console.log(chalk.gray("The project needs a CLAUDE.md file or .jfl/ directory.\n"));
360
+ return;
361
+ }
362
+ const selectedProject = await p.select({
363
+ message: "Which project do you want to join?",
364
+ options: projects.map((proj) => ({
365
+ label: `${proj.fullName}${proj.hasUserSuggestions ? chalk.green(" (you're invited)") : ""}${proj.description ? chalk.gray(` - ${proj.description}`) : ""}`,
366
+ value: proj,
367
+ })),
368
+ });
369
+ if (p.isCancel(selectedProject)) {
370
+ p.cancel("Cancelled.");
371
+ return;
372
+ }
373
+ const project = selectedProject;
374
+ // Check if already cloned locally
375
+ const trackedProjects = config.get("projects") || [];
376
+ const existingLocal = trackedProjects.find((proj) => {
377
+ const projectName = proj.split("/").pop();
378
+ return projectName === project.name &&
379
+ (existsSync(join(proj, "CLAUDE.md")) || existsSync(join(proj, ".jfl")));
380
+ });
381
+ const commonPaths = [
382
+ join(process.env.HOME || "", "Projects", project.name),
383
+ join(process.env.HOME || "", project.name),
384
+ join(process.cwd(), project.name),
385
+ ];
386
+ const existingAtCommonPath = commonPaths.find((proj) => existsSync(proj) && (existsSync(join(proj, "CLAUDE.md")) || existsSync(join(proj, ".jfl"))));
387
+ const alreadyCloned = existingLocal || existingAtCommonPath;
388
+ if (alreadyCloned) {
389
+ console.log(chalk.green(`\n✓ Already have ${project.name} at ${alreadyCloned}\n`));
390
+ const openExisting = await p.confirm({
391
+ message: "Open it?",
392
+ initialValue: true,
393
+ });
394
+ if (!p.isCancel(openExisting) && openExisting) {
395
+ if (!trackedProjects.includes(alreadyCloned)) {
396
+ trackedProjects.push(alreadyCloned);
397
+ config.set("projects", trackedProjects);
398
+ }
399
+ process.chdir(alreadyCloned);
400
+ const available = detectAICLIs();
401
+ if (available.length > 0) {
402
+ await launchCLI(available[0], alreadyCloned);
403
+ }
404
+ else {
405
+ await onboardAICLI();
406
+ }
407
+ }
408
+ return;
409
+ }
410
+ // Show project info
411
+ console.log();
412
+ console.log(chalk.bold(`Project: ${project.fullName}`));
413
+ if (project.description) {
414
+ console.log(chalk.gray(project.description));
415
+ }
416
+ if (project.projectConfig?.wallet) {
417
+ console.log(chalk.gray(`Wallet: ${project.projectConfig.wallet.slice(0, 10)}...`));
418
+ }
419
+ if (project.hasUserSuggestions) {
420
+ console.log(chalk.green(`✓ Your suggestions file exists (suggestions/${username}.md)`));
421
+ }
422
+ console.log();
423
+ const defaultPath = join(process.env.HOME || "", "Projects", project.name);
424
+ const clonePath = await p.text({
425
+ message: "Where to clone?",
426
+ defaultValue: defaultPath,
427
+ placeholder: defaultPath,
428
+ });
429
+ if (p.isCancel(clonePath)) {
430
+ p.cancel("Cancelled.");
431
+ return;
432
+ }
433
+ const expandedPath = clonePath.replace(/^~/, process.env.HOME || "");
434
+ let clonedPath;
435
+ try {
436
+ clonedPath = await cloneRepository(project, expandedPath);
437
+ }
438
+ catch (error) {
439
+ console.error(chalk.red("\nClone failed"));
440
+ console.error(chalk.gray(error instanceof Error ? error.message : String(error)));
441
+ return;
442
+ }
443
+ // Track this project
444
+ const allProjects = config.get("projects") || [];
445
+ if (!allProjects.includes(clonedPath)) {
446
+ allProjects.push(clonedPath);
447
+ config.set("projects", allProjects);
448
+ }
449
+ config.set("hasOnboarded", true);
450
+ console.log(chalk.green(`\n✓ Joined ${project.name}!\n`));
451
+ if (project.projectConfig?.wallet) {
452
+ console.log(chalk.gray("Project Configuration:"));
453
+ console.log(chalk.gray(` Owner: ${project.projectConfig.walletOwner || project.owner}`));
454
+ console.log(chalk.gray(` Wallet: ${project.projectConfig.wallet} (configured)`));
455
+ console.log(chalk.gray(` Your role: Contributor`));
456
+ console.log();
457
+ }
458
+ console.log(chalk.gray(`Location: ${clonedPath}`));
459
+ console.log(chalk.cyan(`\nTo start working:\n`));
460
+ console.log(chalk.white(` cd ${clonedPath}`));
461
+ console.log(chalk.white(` jfl\n`));
462
+ const launchNow = await p.confirm({
463
+ message: "Open project now?",
464
+ initialValue: true,
465
+ });
466
+ if (!p.isCancel(launchNow) && launchNow) {
467
+ process.chdir(clonedPath);
468
+ const available = detectAICLIs();
469
+ if (available.length > 0) {
470
+ await launchCLI(available[0], clonedPath);
471
+ }
472
+ else {
473
+ await onboardAICLI();
474
+ }
475
+ }
476
+ }
477
+ async function onboardAICLI() {
478
+ console.log(chalk.bold("\n🤖 JFL - Setup AI Assistant\n"));
479
+ console.log(chalk.gray("JFL works with your AI of choice. Let's get you set up.\n"));
480
+ const experience = await p.select({
481
+ message: "How technical are you?",
482
+ options: [
483
+ { label: "I'm a developer - comfortable with terminal", value: "dev" },
484
+ { label: "Somewhat technical - can follow instructions", value: "some" },
485
+ { label: "Not technical - need the easy path", value: "none" },
486
+ ],
487
+ });
488
+ if (p.isCancel(experience))
489
+ return;
490
+ if (experience === "none") {
491
+ console.log(chalk.cyan("\n📱 Easiest options for you:\n"));
492
+ console.log(chalk.bold("1. Claude.ai (browser)"));
493
+ console.log(chalk.gray(" Go to claude.ai, sign up, and chat directly"));
494
+ console.log(chalk.gray(" You can paste your project files into the chat\n"));
495
+ console.log(chalk.bold("2. Claude Desktop App"));
496
+ console.log(chalk.gray(" Download from claude.ai/download"));
497
+ console.log(chalk.gray(" Works like ChatGPT but with Claude\n"));
498
+ console.log(chalk.bold("3. Cursor (AI-powered code editor)"));
499
+ console.log(chalk.gray(" Download from cursor.com"));
500
+ console.log(chalk.gray(" Like VS Code but with AI built in\n"));
501
+ console.log(chalk.yellow("For the full JFL experience, Claude Code is best."));
502
+ console.log(chalk.gray("But start with what's comfortable.\n"));
503
+ return;
504
+ }
505
+ console.log(chalk.yellow("\nNo AI CLI detected.\n"));
506
+ const choice = await p.select({
507
+ message: "Which AI do you want to use?",
508
+ options: [
509
+ { label: "Claude Code (recommended for JFL)", value: "claude" },
510
+ { label: "Codex CLI (OpenAI)", value: "codex" },
511
+ { label: "Aider (works with multiple models)", value: "aider" },
512
+ { label: "I'll set it up myself", value: "manual" },
513
+ ],
514
+ });
515
+ if (p.isCancel(choice))
516
+ return;
517
+ if (choice === "manual") {
518
+ console.log(chalk.gray("\nSupported AI CLIs:"));
519
+ console.log(" • Claude Code: npm install -g @anthropic-ai/claude-code");
520
+ console.log(" • Codex CLI: npm install -g @openai/codex");
521
+ console.log(" • Aider: pip install aider-chat");
522
+ console.log(chalk.gray("\nRun 'jfl' again after installing.\n"));
523
+ return;
524
+ }
525
+ const installCommands = {
526
+ claude: { cmd: "npm install -g @anthropic-ai/claude-code", name: "Claude Code" },
527
+ codex: { cmd: "npm install -g @openai/codex", name: "Codex CLI" },
528
+ aider: { cmd: "pip install aider-chat", name: "Aider" },
529
+ };
530
+ const install = installCommands[choice];
531
+ console.log(chalk.cyan(`\nInstalling ${install.name}...\n`));
532
+ console.log(chalk.gray(`$ ${install.cmd}\n`));
533
+ const proceed = await p.confirm({
534
+ message: "Run this command?",
535
+ initialValue: true,
536
+ });
537
+ if (p.isCancel(proceed) || !proceed) {
538
+ console.log(chalk.gray(`\nRun manually: ${install.cmd}`));
539
+ console.log(chalk.gray("Then run 'jfl' again.\n"));
540
+ return;
541
+ }
542
+ try {
543
+ execSync(install.cmd, { stdio: "inherit" });
544
+ console.log(chalk.green(`\n✓ ${install.name} installed!\n`));
545
+ if (choice === "claude") {
546
+ console.log(chalk.gray("Set your Anthropic API key:"));
547
+ console.log(chalk.white(" export ANTHROPIC_API_KEY=your-key-here\n"));
548
+ console.log(chalk.gray("Or run 'claude' to authenticate interactively.\n"));
549
+ }
550
+ else if (choice === "codex") {
551
+ console.log(chalk.gray("Set your OpenAI API key:"));
552
+ console.log(chalk.white(" export OPENAI_API_KEY=your-key-here\n"));
553
+ }
554
+ else if (choice === "aider") {
555
+ console.log(chalk.gray("Set your API key (Anthropic or OpenAI):"));
556
+ console.log(chalk.white(" export ANTHROPIC_API_KEY=your-key-here"));
557
+ console.log(chalk.white(" # or"));
558
+ console.log(chalk.white(" export OPENAI_API_KEY=your-key-here\n"));
559
+ }
560
+ console.log(chalk.cyan("Run 'jfl' to start your AI session.\n"));
561
+ }
562
+ catch {
563
+ console.error(chalk.red("\nInstallation failed."));
564
+ console.log(chalk.gray(`\nTry manually: ${install.cmd}\n`));
565
+ }
566
+ }
567
+ export { showGatewayDashboard };
121
568
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuLH,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,iBA2NxF"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8LH,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,iBAuOxF"}