@byfriends/cli 0.2.3 → 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.
- package/dist/main.mjs +60 -61
- package/package.json +23 -23
- 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
|
|
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)(`${
|
|
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) %
|
|
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] : [...
|
|
134672
|
-
this.interval = style === "moon" ?
|
|
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
|
-
|
|
138894
|
-
|
|
138895
|
-
|
|
138896
|
-
|
|
138897
|
-
|
|
138898
|
-
|
|
138899
|
-
|
|
138900
|
-
green400: "#
|
|
138901
|
-
green300: "#
|
|
138902
|
-
red400: "#
|
|
138903
|
-
red300: "#
|
|
138904
|
-
amber400: "#
|
|
138905
|
-
orange300: "#
|
|
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: "#
|
|
138909
|
-
cyan700: "#
|
|
138910
|
-
gray900: "#
|
|
138911
|
-
gray700: "#
|
|
138912
|
-
gray600: "#
|
|
138913
|
-
gray500: "#
|
|
138914
|
-
green700: "#
|
|
138915
|
-
red700: "#
|
|
138916
|
-
amber800: "#
|
|
138917
|
-
orange700: "#
|
|
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.
|
|
138921
|
-
accent: dark.
|
|
138922
|
-
text: dark.
|
|
138923
|
-
textStrong: dark.
|
|
138924
|
-
textDim: dark.
|
|
138925
|
-
textMuted: dark.
|
|
138926
|
-
border: dark.
|
|
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.
|
|
138936
|
-
diffMeta: dark.
|
|
138934
|
+
diffGutter: dark.gray500,
|
|
138935
|
+
diffMeta: dark.gray400,
|
|
138937
138936
|
roleUser: dark.orange300,
|
|
138938
|
-
roleAssistant: dark.
|
|
138939
|
-
roleThinking: dark.
|
|
138937
|
+
roleAssistant: dark.gray60,
|
|
138938
|
+
roleThinking: dark.gray400,
|
|
138940
138939
|
roleTool: dark.amber400,
|
|
138941
|
-
status: dark.
|
|
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, "
|
|
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, "
|
|
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("
|
|
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.
|
|
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.3"
|
|
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
|