@kenkaiiii/gg-boss 4.3.119 → 4.3.120
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/cli.js +9 -3
- package/dist/cli.js.map +1 -1
- package/dist/splash.d.ts +21 -0
- package/dist/splash.d.ts.map +1 -0
- package/dist/splash.js +103 -0
- package/dist/splash.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { runLinkCommand } from "./link-command.js";
|
|
|
7
7
|
import { COLORS, clearScreen } from "./branding.js";
|
|
8
8
|
import { renderBossApp } from "./orchestrator-app.js";
|
|
9
9
|
import { loadSettings } from "./settings.js";
|
|
10
|
+
import { showSplash } from "./splash.js";
|
|
10
11
|
function parseProjectSpec(raw) {
|
|
11
12
|
const eq = raw.indexOf("=");
|
|
12
13
|
if (eq > 0) {
|
|
@@ -111,9 +112,13 @@ async function runOrchestrator(args) {
|
|
|
111
112
|
args.projects = links.projects.map((p) => ({ name: p.name, cwd: p.cwd }));
|
|
112
113
|
}
|
|
113
114
|
clearScreen();
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
// Splash — Ink-rendered ASCII logo with shimmering gradient, shown while
|
|
116
|
+
// the boss spins up its workers. dismiss() blocks until min-visible-time
|
|
117
|
+
// has elapsed AND Ink has flushed the unmount, so the chat UI never
|
|
118
|
+
// overlaps with the splash on screen.
|
|
119
|
+
const splash = showSplash({
|
|
120
|
+
caption: `Spinning up ${args.projects.length} worker${args.projects.length === 1 ? "" : "s"}…`,
|
|
121
|
+
});
|
|
117
122
|
// Resolve final boss/worker models: CLI flags > saved settings > defaults.
|
|
118
123
|
// Settings persist user choices made via /model boss / /model workers across
|
|
119
124
|
// restarts so the user doesn't have to re-pick every session.
|
|
@@ -129,6 +134,7 @@ async function runOrchestrator(args) {
|
|
|
129
134
|
resumeSessionId: args.resumeSessionId,
|
|
130
135
|
});
|
|
131
136
|
await boss.initialize();
|
|
137
|
+
await splash.dismiss();
|
|
132
138
|
clearScreen();
|
|
133
139
|
const ink = renderBossApp({ boss });
|
|
134
140
|
// Don't register process.on("SIGINT") here. Ink puts stdin in raw mode, so
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/splash.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface SplashScreenProps {
|
|
3
|
+
/** Optional caption shown under the logo — defaults to a "Loading…" line. */
|
|
4
|
+
caption?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function SplashScreen({ caption }: SplashScreenProps): React.ReactElement;
|
|
7
|
+
/**
|
|
8
|
+
* Render the splash to stdout. Returns a `dismiss()` that holds the splash
|
|
9
|
+
* for at least `minMs` total visible time (so even fast inits get a real
|
|
10
|
+
* flash of branding) before unmounting, and resolves only after the unmount
|
|
11
|
+
* has actually completed — so the caller can safely render the main app
|
|
12
|
+
* next without two Ink trees coexisting on screen.
|
|
13
|
+
*/
|
|
14
|
+
export declare function showSplash(opts: {
|
|
15
|
+
minMs?: number;
|
|
16
|
+
caption?: string;
|
|
17
|
+
}): {
|
|
18
|
+
dismiss: () => Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=splash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splash.d.ts","sourceRoot":"","sources":["../src/splash.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAmFnD,UAAU,iBAAiB;IACzB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAgC/E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAiBnC"}
|
package/dist/splash.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import { Box, Text, render } from "ink";
|
|
4
|
+
import { AUTHOR, BRAND, COLORS, GRADIENT, VERSION } from "./branding.js";
|
|
5
|
+
/**
|
|
6
|
+
* Big ASCII "GG Boss" rendered for the splash. The block characters here are
|
|
7
|
+
* ANSI Shadow-style figlet output. Whitespace is significant — every line is
|
|
8
|
+
* the same width so the gradient striping aligns vertically. Do not reformat.
|
|
9
|
+
*/
|
|
10
|
+
const SPLASH_LINES = [
|
|
11
|
+
" █████████ █████████ ███████████ ",
|
|
12
|
+
" ███░░░░░███ ███░░░░░███ ░░███░░░░░███ ",
|
|
13
|
+
" ███ ░░░ ███ ░░░ ░███ ░███ ██████ █████ █████ ",
|
|
14
|
+
"░███ ░███ ░██████████ ███░░███ ███░░ ███░░ ",
|
|
15
|
+
"░███ █████░███ █████ ░███░░░░░███░███ ░███░░█████ ░░█████ ",
|
|
16
|
+
"░░███ ░░███ ░░███ ░░███ ░███ ░███░███ ░███ ░░░░███ ░░░░███",
|
|
17
|
+
" ░░█████████ ░░█████████ ███████████ ░░██████ ██████ ██████ ",
|
|
18
|
+
" ░░░░░░░░░ ░░░░░░░░░ ░░░░░░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░ ",
|
|
19
|
+
];
|
|
20
|
+
const SPLASH_WIDTH = SPLASH_LINES[0].length;
|
|
21
|
+
/**
|
|
22
|
+
* Vertical gradient stripe — assigns each line a colour from the brand
|
|
23
|
+
* gradient so the logo gets a soft top→bottom hue transition. Filled glyphs
|
|
24
|
+
* (`█`) take the line's hue at full brightness; shadow glyphs (`░`) inherit
|
|
25
|
+
* the same hue but render at lower intensity (via `dimColor`) so they read
|
|
26
|
+
* as a drop-shadow rather than fighting for visual weight with the fill.
|
|
27
|
+
*/
|
|
28
|
+
function colorForLine(lineIdx, totalLines, offset) {
|
|
29
|
+
const t = totalLines <= 1 ? 0 : (lineIdx + offset) % totalLines;
|
|
30
|
+
const idx = Math.floor((t / totalLines) * GRADIENT.length) % GRADIENT.length;
|
|
31
|
+
return GRADIENT[idx];
|
|
32
|
+
}
|
|
33
|
+
function SplashLogo({ offset }) {
|
|
34
|
+
return (_jsx(Box, { flexDirection: "column", children: SPLASH_LINES.map((line, i) => {
|
|
35
|
+
const hue = colorForLine(i, SPLASH_LINES.length, offset);
|
|
36
|
+
// Split into runs so we can dim the shadow glyphs (░) without breaking
|
|
37
|
+
// the line into one Text per char (which Ink would happily handle but
|
|
38
|
+
// is wasteful at this scale).
|
|
39
|
+
const segments = [];
|
|
40
|
+
let buf = "";
|
|
41
|
+
let bufDim = false;
|
|
42
|
+
for (const ch of line) {
|
|
43
|
+
const dim = ch === "░";
|
|
44
|
+
if (segments.length === 0 && buf.length === 0) {
|
|
45
|
+
buf = ch;
|
|
46
|
+
bufDim = dim;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (dim === bufDim) {
|
|
50
|
+
buf += ch;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
segments.push({ text: buf, dim: bufDim });
|
|
54
|
+
buf = ch;
|
|
55
|
+
bufDim = dim;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (buf)
|
|
59
|
+
segments.push({ text: buf, dim: bufDim });
|
|
60
|
+
return (_jsx(Text, { children: segments.map((seg, j) => (_jsx(Text, { color: hue, dimColor: seg.dim, children: seg.text }, j))) }, i));
|
|
61
|
+
}) }));
|
|
62
|
+
}
|
|
63
|
+
export function SplashScreen({ caption }) {
|
|
64
|
+
const [offset, setOffset] = useState(0);
|
|
65
|
+
// Soft shimmer — rotates the gradient through the logo every 120ms. Stops
|
|
66
|
+
// when the component unmounts (the cli swaps the splash out as soon as the
|
|
67
|
+
// boss has finished initialising).
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
const timer = setInterval(() => {
|
|
70
|
+
setOffset((o) => o + 1);
|
|
71
|
+
}, 120);
|
|
72
|
+
return () => {
|
|
73
|
+
clearInterval(timer);
|
|
74
|
+
};
|
|
75
|
+
}, []);
|
|
76
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "flex-start", paddingTop: 1, paddingLeft: 2, children: [_jsx(SplashLogo, { offset: offset }), _jsxs(Box, { width: SPLASH_WIDTH, marginTop: 1, children: [_jsx(Text, { color: COLORS.text, bold: true, children: BRAND }), _jsxs(Text, { color: COLORS.textDim, children: [" v", VERSION] }), _jsx(Text, { color: COLORS.textDim, children: " \u00B7 By " }), _jsx(Text, { color: COLORS.text, bold: true, children: AUTHOR })] }), _jsx(Box, { width: SPLASH_WIDTH, children: _jsx(Text, { color: COLORS.textDim, children: caption ?? "Spinning up the orchestrator…" }) })] }));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Render the splash to stdout. Returns a `dismiss()` that holds the splash
|
|
80
|
+
* for at least `minMs` total visible time (so even fast inits get a real
|
|
81
|
+
* flash of branding) before unmounting, and resolves only after the unmount
|
|
82
|
+
* has actually completed — so the caller can safely render the main app
|
|
83
|
+
* next without two Ink trees coexisting on screen.
|
|
84
|
+
*/
|
|
85
|
+
export function showSplash(opts) {
|
|
86
|
+
const start = Date.now();
|
|
87
|
+
const instance = render(_jsx(SplashScreen, { caption: opts.caption }));
|
|
88
|
+
return {
|
|
89
|
+
dismiss: async () => {
|
|
90
|
+
const minMs = opts.minMs ?? 900;
|
|
91
|
+
const elapsed = Date.now() - start;
|
|
92
|
+
const remaining = Math.max(0, minMs - elapsed);
|
|
93
|
+
if (remaining > 0) {
|
|
94
|
+
await new Promise((r) => setTimeout(r, remaining));
|
|
95
|
+
}
|
|
96
|
+
instance.unmount();
|
|
97
|
+
// Give Ink one tick to flush the unmount writes before the caller
|
|
98
|
+
// starts mounting the next tree.
|
|
99
|
+
await new Promise((r) => setImmediate(r));
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=splash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splash.js","sourceRoot":"","sources":["../src/splash.tsx"],"names":[],"mappings":"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"}
|