groundcrew-cli 0.13.0 → 0.14.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.
Files changed (3) hide show
  1. package/dist/index.js +24 -21
  2. package/package.json +1 -1
  3. package/src/index.ts +27 -24
package/dist/index.js CHANGED
@@ -479,30 +479,33 @@ async function chat(explicitSession) {
479
479
  }
480
480
  }
481
481
  const projectName = path.basename(current.cwd);
482
- const W = 52;
483
- const br = dim(" \u2502 ");
484
- const er = dim(" \u2502");
485
- const sp = (n) => " ".repeat(Math.max(0, n));
486
- const sessionText = `Session ${current.id} ${projectName}`;
487
- const hintText = `Type tasks to queue. / for commands.`;
482
+ const banner = [
483
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588 ",
484
+ "\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
485
+ "\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
486
+ "\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 ",
487
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588 ",
488
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 ",
489
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
490
+ " \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
491
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 ",
492
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 "
493
+ ];
494
+ const W = 56;
495
+ const sess = ` Session ${current.id} ${projectName}`;
496
+ const hint = " Type tasks to queue. / for commands.";
497
+ const pad = (s, w) => s + " ".repeat(Math.max(0, w - s.length));
488
498
  console.log();
489
499
  console.log(dim(" \u256D" + "\u2500".repeat(W) + "\u256E"));
490
- console.log(dim(" \u2502") + sp(W) + dim("\u2502"));
491
- console.log(br + bold(cyan(" \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 ")) + er);
492
- console.log(br + bold(cyan("\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ")) + er);
493
- console.log(br + bold(cyan("\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ")) + er);
494
- console.log(br + bold(cyan("\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ")) + er);
495
- console.log(br + bold(cyan(" \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 ")) + er);
496
- console.log(br + sp(14) + bold(cyan("\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588")) + sp(7) + er);
497
- console.log(br + sp(14) + bold(cyan("\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588")) + sp(7) + er);
498
- console.log(br + sp(14) + bold(cyan("\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588 \u2588\u2588")) + sp(7) + er);
499
- console.log(br + sp(14) + bold(cyan("\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588 \u2588\u2588")) + sp(7) + er);
500
- console.log(br + sp(14) + bold(cyan("\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 ")) + sp(7) + er);
501
- console.log(dim(" \u2502") + sp(W) + dim("\u2502"));
500
+ console.log(dim(" \u2502") + " ".repeat(W) + dim("\u2502"));
501
+ for (const line of banner) {
502
+ console.log(dim(" \u2502") + bold(cyan(pad(line, W))) + dim("\u2502"));
503
+ }
504
+ console.log(dim(" \u2502") + " ".repeat(W) + dim("\u2502"));
502
505
  console.log(dim(" \u251C" + "\u2500".repeat(W) + "\u2524"));
503
- console.log(br + " " + sessionText + sp(W - sessionText.length - 2) + er);
504
- console.log(br + " " + hintText + sp(W - hintText.length - 2) + er);
505
- console.log(dim(" \u2502") + sp(W) + dim("\u2502"));
506
+ console.log(dim(" \u2502") + pad(sess, W) + dim("\u2502"));
507
+ console.log(dim(" \u2502") + pad(hint, W) + dim("\u2502"));
508
+ console.log(dim(" \u2502") + " ".repeat(W) + dim("\u2502"));
506
509
  console.log(dim(" \u2570" + "\u2500".repeat(W) + "\u256F"));
507
510
  console.log();
508
511
  let continuationBuffer = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "groundcrew-cli",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "CLI companion for Groundcrew — queue tasks, send feedback, monitor your Copilot agent from another terminal.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/index.ts CHANGED
@@ -626,31 +626,34 @@ async function chat(explicitSession?: string): Promise<void> {
626
626
  }
627
627
 
628
628
  const projectName = path.basename(current.cwd);
629
- const W = 52;
630
- const br = dim(" │ ");
631
- const er = dim(" │");
632
- const sp = (n: number) => " ".repeat(Math.max(0, n));
633
- const sessionText = `Session ${current.id} ${projectName}`;
634
- const hintText = `Type tasks to queue. / for commands.`;
629
+ const banner = [
630
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588 ",
631
+ "\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
632
+ "\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
633
+ "\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 ",
634
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588 ",
635
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 ",
636
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
637
+ " \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 ",
638
+ " \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 ",
639
+ " \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588 ",
640
+ ];
641
+ const W = 56;
642
+ const sess = ` Session ${current.id} ${projectName}`;
643
+ const hint = " Type tasks to queue. / for commands.";
644
+ const pad = (s: string, w: number) => s + " ".repeat(Math.max(0, w - s.length));
635
645
  console.log();
636
- console.log(dim(" " + "".repeat(W) + ""));
637
- console.log(dim(" ") + sp(W) + dim(""));
638
- console.log(br + bold(cyan(" ██████ ██████ ██████ ██ ██ ███ ██ ██████ ")) + er);
639
- console.log(br + bold(cyan("██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ")) + er);
640
- console.log(br + bold(cyan("██ ███ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ")) + er);
641
- console.log(br + bold(cyan("██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ")) + er);
642
- console.log(br + bold(cyan(" ██████ ██ ██ ██████ ██████ ██ ████ ██████ ")) + er);
643
- console.log(br + sp(14) + bold(cyan("██████ ██████ ███████ ██ ██")) + sp(7) + er);
644
- console.log(br + sp(14) + bold(cyan("██ ██ ██ ██ ██ ██")) + sp(7) + er);
645
- console.log(br + sp(14) + bold(cyan("██ ██████ █████ ██ █ ██")) + sp(7) + er);
646
- console.log(br + sp(14) + bold(cyan("██ ██ ██ ██ ██ ███ ██")) + sp(7) + er);
647
- console.log(br + sp(14) + bold(cyan("██████ ██ ██ ███████ ███ ███ ")) + sp(7) + er);
648
- console.log(dim(" │") + sp(W) + dim("│"));
649
- console.log(dim(" ├" + "─".repeat(W) + "┤"));
650
- console.log(br + " " + sessionText + sp(W - sessionText.length - 2) + er);
651
- console.log(br + " " + hintText + sp(W - hintText.length - 2) + er);
652
- console.log(dim(" │") + sp(W) + dim("│"));
653
- console.log(dim(" ╰" + "─".repeat(W) + "╯"));
646
+ console.log(dim(" \u256d" + "\u2500".repeat(W) + "\u256e"));
647
+ console.log(dim(" \u2502") + " ".repeat(W) + dim("\u2502"));
648
+ for (const line of banner) {
649
+ console.log(dim(" \u2502") + bold(cyan(pad(line, W))) + dim("\u2502"));
650
+ }
651
+ console.log(dim(" \u2502") + " ".repeat(W) + dim("\u2502"));
652
+ console.log(dim(" \u251c" + "\u2500".repeat(W) + "\u2524"));
653
+ console.log(dim(" \u2502") + pad(sess, W) + dim("\u2502"));
654
+ console.log(dim(" \u2502") + pad(hint, W) + dim("\u2502"));
655
+ console.log(dim(" \u2502") + " ".repeat(W) + dim("\u2502"));
656
+ console.log(dim(" \u2570" + "\u2500".repeat(W) + "\u256f"));
654
657
  console.log();
655
658
 
656
659
  let continuationBuffer: string[] = [];