@byfriends/cli 0.2.2 → 0.2.4

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/main.mjs +60 -61
  2. package/package.json +23 -23
  3. package/LICENSE +0 -28
package/dist/main.mjs CHANGED
@@ -55235,13 +55235,18 @@ var BackgroundProcessManager = class {
55235
55235
  * restart. Active-only mode never shows ghosts (they're terminal).
55236
55236
  */
55237
55237
  list(activeOnly = true, limit) {
55238
+ const seen = /* @__PURE__ */ new Set();
55238
55239
  const result = [];
55239
55240
  for (const entry of this.processes.values()) {
55240
55241
  if (activeOnly && TERMINAL_STATUSES.has(entry.status)) continue;
55242
+ if (seen.has(entry.taskId)) continue;
55243
+ seen.add(entry.taskId);
55241
55244
  result.push(this.toInfo(entry));
55242
55245
  if (limit !== void 0 && result.length >= limit) return result;
55243
55246
  }
55244
55247
  if (!activeOnly) for (const ghost of this.ghosts.values()) {
55248
+ if (seen.has(ghost.taskId)) continue;
55249
+ seen.add(ghost.taskId);
55245
55250
  result.push(ghost);
55246
55251
  if (limit !== void 0 && result.length >= limit) return result;
55247
55252
  }
@@ -130038,27 +130043,21 @@ function escapeTomlBasicString(value) {
130038
130043
  }
130039
130044
  //#endregion
130040
130045
  //#region src/tui/constant/rendering.ts
130041
- const BRAILLE_SPINNER_FRAMES = [
130042
- "",
130043
- "",
130044
- "",
130045
- "",
130046
- "⠼",
130047
- "⠴",
130048
- "⠦",
130049
- "⠧",
130050
- "⠇",
130051
- "⠏"
130046
+ const SPINNER_FRAMES = [
130047
+ "",
130048
+ "",
130049
+ "",
130050
+ ""
130052
130051
  ];
130053
130052
  const MOON_SPINNER_FRAMES = [
130054
- "🌑",
130055
- "🌒",
130056
- "🌓",
130057
- "🌔",
130058
- "🌕",
130059
- "🌖",
130060
- "🌗",
130061
- "🌘"
130053
+ "😀",
130054
+ "😃",
130055
+ "😄",
130056
+ "😁",
130057
+ "😆",
130058
+ "😂",
130059
+ "🤣",
130060
+ "😂"
130062
130061
  ];
130063
130062
  //#endregion
130064
130063
  //#region src/utils/image/image-mime.ts
@@ -133687,7 +133686,7 @@ var ThinkingComponent = class {
133687
133686
  const visibleLines = contentLines.length > 3 ? contentLines.slice(contentLines.length - 3) : contentLines;
133688
133687
  return [
133689
133688
  "",
133690
- chalk.hex(this.color)(`${BRAILLE_SPINNER_FRAMES[this.spinnerFrame] ?? BRAILLE_SPINNER_FRAMES[0]} `) + chalk.hex(this.color)("thinking..."),
133689
+ chalk.hex(this.color)(`${SPINNER_FRAMES[this.spinnerFrame] ?? SPINNER_FRAMES[0]} `) + chalk.hex(this.color)("thinking..."),
133691
133690
  ...visibleLines.map((line) => " " + line)
133692
133691
  ];
133693
133692
  }
@@ -133705,7 +133704,7 @@ var ThinkingComponent = class {
133705
133704
  startSpinner() {
133706
133705
  if (this.ui === void 0 || this.spinnerInterval !== void 0) return;
133707
133706
  this.spinnerInterval = setInterval(() => {
133708
- this.spinnerFrame = (this.spinnerFrame + 1) % BRAILLE_SPINNER_FRAMES.length;
133707
+ this.spinnerFrame = (this.spinnerFrame + 1) % SPINNER_FRAMES.length;
133709
133708
  this.ui?.requestRender();
133710
133709
  }, 80);
133711
133710
  }
@@ -134668,8 +134667,8 @@ var MoonLoader = class extends Text {
134668
134667
  constructor(ui, style = "moon", colorFn, label = "") {
134669
134668
  super("", 1, 0);
134670
134669
  this.ui = ui;
134671
- this.frames = style === "moon" ? [...MOON_SPINNER_FRAMES] : [...BRAILLE_SPINNER_FRAMES];
134672
- this.interval = style === "moon" ? 120 : 80;
134670
+ this.frames = style === "moon" ? [...MOON_SPINNER_FRAMES] : [...SPINNER_FRAMES];
134671
+ this.interval = style === "moon" ? 160 : 80;
134673
134672
  this.colorFn = colorFn;
134674
134673
  this.label = label;
134675
134674
  this.start();
@@ -138890,40 +138889,40 @@ function adaptQuestionAnswers(event, response) {
138890
138889
  * WCAG AA.
138891
138890
  */
138892
138891
  const dark = {
138893
- blue400: "#4FA8FF",
138894
- cyan400: "#5BC0BE",
138895
- gray50: "#F5F5F5",
138896
- gray100: "#E0E0E0",
138897
- gray500: "#888888",
138898
- gray600: "#6B6B6B",
138899
- gray700: "#5A5A5A",
138900
- green400: "#4EC87E",
138901
- green300: "#7AD99B",
138902
- red400: "#E85454",
138903
- red300: "#F08585",
138904
- amber400: "#E8A838",
138905
- orange300: "#FFCB6B"
138892
+ blue300: "#79C0FF",
138893
+ cyan300: "#7EC8E3",
138894
+ gray40: "#CDCDCD",
138895
+ gray60: "#B8B8B8",
138896
+ gray400: "#8B949E",
138897
+ gray500: "#6E7681",
138898
+ gray600: "#484F58",
138899
+ green400: "#56D364",
138900
+ green300: "#7EE787",
138901
+ red400: "#F78166",
138902
+ red300: "#FFA198",
138903
+ amber400: "#D29922",
138904
+ orange300: "#F0C674"
138906
138905
  };
138907
138906
  const light = {
138908
- blue600: "#1565C0",
138909
- cyan700: "#00838F",
138910
- gray900: "#1A1A1A",
138911
- gray700: "#454545",
138912
- gray600: "#5F5F5F",
138913
- gray500: "#737373",
138914
- green700: "#0E7A38",
138915
- red700: "#B91C1C",
138916
- amber800: "#92660A",
138917
- orange700: "#9A4A00"
138907
+ blue600: "#0969DA",
138908
+ cyan700: "#087E8B",
138909
+ gray900: "#1F2328",
138910
+ gray700: "#424A53",
138911
+ gray600: "#57606A",
138912
+ gray500: "#6E7781",
138913
+ green700: "#116329",
138914
+ red700: "#CF222E",
138915
+ amber800: "#9A6700",
138916
+ orange700: "#953800"
138918
138917
  };
138919
138918
  const darkColors = {
138920
- primary: dark.blue400,
138921
- accent: dark.cyan400,
138922
- text: dark.gray100,
138923
- textStrong: dark.gray50,
138924
- textDim: dark.gray500,
138925
- textMuted: dark.gray600,
138926
- border: dark.gray700,
138919
+ primary: dark.blue300,
138920
+ accent: dark.cyan300,
138921
+ text: dark.gray60,
138922
+ textStrong: dark.gray40,
138923
+ textDim: dark.gray400,
138924
+ textMuted: dark.gray500,
138925
+ border: dark.gray600,
138927
138926
  borderFocus: dark.amber400,
138928
138927
  success: dark.green400,
138929
138928
  warning: dark.amber400,
@@ -138932,13 +138931,13 @@ const darkColors = {
138932
138931
  diffRemoved: dark.red400,
138933
138932
  diffAddedStrong: dark.green300,
138934
138933
  diffRemovedStrong: dark.red300,
138935
- diffGutter: dark.gray600,
138936
- diffMeta: dark.gray500,
138934
+ diffGutter: dark.gray500,
138935
+ diffMeta: dark.gray400,
138937
138936
  roleUser: dark.orange300,
138938
- roleAssistant: dark.gray100,
138939
- roleThinking: dark.gray500,
138937
+ roleAssistant: dark.gray60,
138938
+ roleThinking: dark.gray400,
138940
138939
  roleTool: dark.amber400,
138941
- status: dark.gray500
138940
+ status: dark.gray400
138942
138941
  };
138943
138942
  const lightColors = {
138944
138943
  primary: light.blue600,
@@ -142629,7 +142628,7 @@ var ByfTui = class {
142629
142628
  return;
142630
142629
  }
142631
142630
  const tint = (s) => chalk.hex(this.state.theme.colors.textMuted)(s);
142632
- const spinner = new MoonLoader(this.state.ui, "braille", tint, label);
142631
+ const spinner = new MoonLoader(this.state.ui, "circle", tint, label);
142633
142632
  this.state.transcriptContainer.addChild(spinner);
142634
142633
  this.state.mcpServerStatusSpinners.set(name, spinner);
142635
142634
  this.state.ui.requestRender();
@@ -143136,7 +143135,7 @@ var ByfTui = class {
143136
143135
  }
143137
143136
  showLoginProgressSpinner(label) {
143138
143137
  const tint = (s) => chalk.hex(this.state.theme.colors.primary)(s);
143139
- const spinner = new MoonLoader(this.state.ui, "braille", tint, label);
143138
+ const spinner = new MoonLoader(this.state.ui, "circle", tint, label);
143140
143139
  this.state.transcriptContainer.addChild(new Spacer(1));
143141
143140
  this.state.transcriptContainer.addChild(spinner);
143142
143141
  this.state.ui.requestRender();
@@ -143187,7 +143186,7 @@ var ByfTui = class {
143187
143186
  this.stopActivitySpinner();
143188
143187
  break;
143189
143188
  case "composing": {
143190
- const spinner = this.ensureActivitySpinner("braille", "working...", (s) => chalk.hex(this.state.theme.colors.primary)(s));
143189
+ const spinner = this.ensureActivitySpinner("circle", "working...", (s) => chalk.hex(this.state.theme.colors.primary)(s));
143191
143190
  this.state.activityContainer.addChild(new ActivityPaneComponent({
143192
143191
  mode: "composing",
143193
143192
  spinner
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@byfriends/cli",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "BYF (Be Your Friend), an AI coding agent that runs in your terminal",
5
5
  "license": "Proprietary",
6
6
  "author": "ByronFinn",
@@ -39,27 +39,6 @@
39
39
  "access": "public",
40
40
  "provenance": false
41
41
  },
42
- "dependencies": {
43
- "@earendil-works/pi-tui": "^0.74.0",
44
- "@mariozechner/clipboard": "^0.3.9",
45
- "chalk": "^5.4.1",
46
- "cli-highlight": "^2.1.11",
47
- "commander": "^13.1.0",
48
- "semver": "^7.7.4",
49
- "smol-toml": "^1.6.1",
50
- "zod": "^4.3.6"
51
- },
52
- "devDependencies": {
53
- "@types/semver": "^7.7.0",
54
- "@types/yazl": "^2.4.6",
55
- "postject": "1.0.0-alpha.6",
56
- "tsx": "^4.21.0",
57
- "yazl": "^3.3.1",
58
- "@byfriends/sdk": "^0.2.2"
59
- },
60
- "engines": {
61
- "node": ">=22.19.0"
62
- },
63
42
  "scripts": {
64
43
  "build": "tsdown",
65
44
  "catalog:update": "node scripts/update-catalog.mjs --out dist/built-in-catalog.json",
@@ -79,5 +58,26 @@
79
58
  "e2e": "pnpm -w run build:packages && BYF_E2E=1 vitest run test/e2e",
80
59
  "e2e:real": "pnpm -w run build:packages && BYF_E2E_REAL=1 vitest run test/e2e/real-llm-smoke.e2e.test.ts",
81
60
  "postinstall": "node scripts/postinstall.mjs"
61
+ },
62
+ "dependencies": {
63
+ "@earendil-works/pi-tui": "^0.74.0",
64
+ "@mariozechner/clipboard": "^0.3.9",
65
+ "chalk": "^5.4.1",
66
+ "cli-highlight": "^2.1.11",
67
+ "commander": "^13.1.0",
68
+ "semver": "^7.7.4",
69
+ "smol-toml": "^1.6.1",
70
+ "zod": "^4.3.6"
71
+ },
72
+ "devDependencies": {
73
+ "@byfriends/sdk": "workspace:^",
74
+ "@types/semver": "^7.7.0",
75
+ "@types/yazl": "^2.4.6",
76
+ "postject": "1.0.0-alpha.6",
77
+ "tsx": "^4.21.0",
78
+ "yazl": "^3.3.1"
79
+ },
80
+ "engines": {
81
+ "node": ">=22.19.0"
82
82
  }
83
- }
83
+ }
package/LICENSE DELETED
@@ -1,28 +0,0 @@
1
- BYF PROPRIETARY LICENSE
2
-
3
- Copyright (c) 2026-2027 ByronFinn
4
-
5
- Permission is hereby granted to copy and redistribute this software in its
6
- unmodified form, without charge. This permission does not extend to modified
7
- versions of the software.
8
-
9
- Local modification of this software for personal use is permitted, provided
10
- that such modifications are not distributed to third parties.
11
-
12
- Restrictions:
13
- 1. You may NOT redistribute modified versions of this software.
14
- 2. You may NOT use this software for commercial purposes.
15
- 3. You may NOT sublicense, sell, or offer this software as a service.
16
-
17
- This software is source-available but NOT open source. The source code is
18
- made publicly visible for review purposes only.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
- SOFTWARE.
27
-
28
- For questions about licensing, contact: https://github.com/ByronFinn/byf/issues