@simonfestl/husky-cli 1.18.0 → 1.19.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.
@@ -287,6 +287,8 @@ const ROLE_EMOJI = {
287
287
  worker: "\uD83D\uDD27", // Wrench emoji for worker
288
288
  reviewer: "\uD83D\uDCDD", // Memo emoji for reviewer
289
289
  support: "\uD83C\uDFA7", // Headphones emoji for support
290
+ e2e_agent: "\uD83E\uDDEA", // Test tube emoji for e2e agent
291
+ pr_agent: "\uD83D\uDE80", // Rocket emoji for pr agent
290
292
  };
291
293
  // husky agent message
292
294
  agentCommand
@@ -436,7 +438,7 @@ agentCommand
436
438
  process.exit(1);
437
439
  }
438
440
  // Validate role
439
- const validRoles = ["supervisor", "worker", "reviewer", "support"];
441
+ const validRoles = ["supervisor", "worker", "reviewer", "support", "e2e_agent", "pr_agent"];
440
442
  if (!validRoles.includes(options.role)) {
441
443
  console.error(`Error: Invalid role '${options.role}'.`);
442
444
  console.error(` Valid roles: ${validRoles.join(", ")}`);
@@ -527,11 +529,11 @@ agentCommand
527
529
  for (const agent of agents) {
528
530
  const statusIcon = agent.status === "online" ? "\u2714" :
529
531
  agent.status === "busy" ? "\u231B" : "\u2717";
530
- const lastSeen = agent.lastHeartbeat
531
- ? new Date(agent.lastHeartbeat).toLocaleString()
532
+ const lastSeenDisplay = agent.lastSeen
533
+ ? new Date(agent.lastSeen).toLocaleString()
532
534
  : "never";
533
535
  console.log(` ${statusIcon} ${agent.emoji} ${agent.name} (${agent.id})`);
534
- console.log(` Role: ${agent.role} | Status: ${agent.status} | Last seen: ${lastSeen}`);
536
+ console.log(` Role: ${agent.role} | Status: ${agent.status} | Last seen: ${lastSeenDisplay}`);
535
537
  if (agent.tmuxSession) {
536
538
  console.log(` Tmux: ${agent.tmuxSession}`);
537
539
  }
@@ -311,13 +311,20 @@ authCommand
311
311
  process.exit(1);
312
312
  }
313
313
  const session = await res.json();
314
- setSessionConfig(session);
314
+ // Extract agent id for storage (API returns object with id, name, emoji)
315
+ setSessionConfig({
316
+ token: session.token,
317
+ expiresAt: session.expiresAt,
318
+ role: session.role,
319
+ agent: session.agent.id,
320
+ });
315
321
  // Fetch and cache permissions for the new session role
316
322
  await fetchAndCacheRole();
317
323
  if (options.json) {
318
324
  console.log(JSON.stringify({
319
325
  success: true,
320
- agent: session.agent,
326
+ agent: session.agent.id,
327
+ agentName: session.agent.name,
321
328
  role: session.role,
322
329
  expiresAt: session.expiresAt,
323
330
  }, null, 2));
@@ -326,7 +333,7 @@ authCommand
326
333
  const expiresAt = new Date(session.expiresAt);
327
334
  console.log("\n✅ Session created");
328
335
  console.log("─".repeat(40));
329
- console.log(`Agent: ${session.agent}`);
336
+ console.log(`Agent: ${session.agent.name} (${session.agent.id})`);
330
337
  console.log(`Role: ${session.role}`);
331
338
  console.log(`Expires: ${expiresAt.toLocaleString()}`);
332
339
  console.log("");
@@ -438,20 +445,27 @@ authCommand
438
445
  process.exit(1);
439
446
  }
440
447
  const session = await res.json();
441
- setSessionConfig(session);
448
+ // Extract agent id for storage (API returns object with id, name, emoji)
449
+ setSessionConfig({
450
+ token: session.token,
451
+ expiresAt: session.expiresAt,
452
+ role: session.role,
453
+ agent: session.agent.id,
454
+ });
442
455
  // Refresh permissions for the session role
443
456
  await fetchAndCacheRole();
444
457
  if (options.json) {
445
458
  console.log(JSON.stringify({
446
459
  success: true,
447
- agent: session.agent,
460
+ agent: session.agent.id,
461
+ agentName: session.agent.name,
448
462
  role: session.role,
449
463
  expiresAt: session.expiresAt,
450
464
  }, null, 2));
451
465
  return;
452
466
  }
453
467
  const expiresAt = new Date(session.expiresAt);
454
- console.log(`✅ Session refreshed for '${session.agent}' (expires: ${expiresAt.toLocaleString()})`);
468
+ console.log(`✅ Session refreshed for '${session.agent.name}' (expires: ${expiresAt.toLocaleString()})`);
455
469
  }
456
470
  catch (error) {
457
471
  console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
@@ -28,7 +28,13 @@ async function doRefresh(agentName) {
28
28
  if (!res.ok)
29
29
  return null;
30
30
  const session = await res.json();
31
- setSessionConfig(session);
31
+ // Extract agent id for storage (API returns object with id, name, emoji)
32
+ setSessionConfig({
33
+ token: session.token,
34
+ expiresAt: session.expiresAt,
35
+ role: session.role,
36
+ agent: session.agent.id,
37
+ });
32
38
  return session;
33
39
  }
34
40
  catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simonfestl/husky-cli",
3
- "version": "1.18.0",
3
+ "version": "1.19.1",
4
4
  "description": "CLI for Huskyv0 Task Orchestration with Claude Agent SDK",
5
5
  "type": "module",
6
6
  "bin": {