@kenkaiiii/gg-boss 4.3.122 → 4.3.124

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.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Duration of the bundled splash audio, in milliseconds. Read once from the
3
+ * actual file so swapping the asset Just Works without anyone having to
4
+ * remember to bump a constant. Falls back to 1500ms if parsing fails.
5
+ */
6
+ export declare function getSplashAudioDurationMs(): number;
7
+ /**
8
+ * Cross-platform fire-and-forget MP3 playback. Tries the most likely binary
9
+ * for the host OS first, then a small chain of common Linux fallbacks.
10
+ *
11
+ * Platform notes:
12
+ * - macOS: `afplay` ships with the OS, always works for MP3.
13
+ * - Windows: PowerShell + WPF MediaPlayer is built-in and supports MP3 via
14
+ * DirectShow / MediaFoundation. Doesn't pop up a window because
15
+ * the script runs sync inside powershell.exe with -NoProfile.
16
+ * - Linux: No single guaranteed binary. Try mpv → ffplay → mpg123 → cvlc.
17
+ * If none are installed, give up silently — Linux desktop audio
18
+ * is fragmented enough that we don't want to bloat the package
19
+ * with a bundled player.
20
+ */
21
+ export declare function playSplashAudio(): Promise<void>;
22
+ //# sourceMappingURL=audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"AA0FA;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAGjD;AA8DD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCrD"}
package/dist/audio.js ADDED
@@ -0,0 +1,215 @@
1
+ import { spawn } from "node:child_process";
2
+ import { fileURLToPath } from "node:url";
3
+ import path from "node:path";
4
+ import fs from "node:fs";
5
+ /**
6
+ * Parse an MP3's duration in milliseconds by walking its frame headers. Pure
7
+ * JS, no native deps. Handles CBR (sums frame sizes vs sample rate) and VBR
8
+ * with a Xing/Info header (reads totalFrames directly). Returns null on any
9
+ * parse failure — caller falls back to a sensible default in that case.
10
+ *
11
+ * Why we do this at runtime: the splash needs to stay visible for the full
12
+ * audio duration so the user isn't dumped into the chat mid-jingle. Bundling
13
+ * a hardcoded constant works until someone swaps the asset and forgets to
14
+ * update the number; reading it from the file is robust to that.
15
+ */
16
+ function readMp3DurationMs(file) {
17
+ try {
18
+ const buf = fs.readFileSync(file);
19
+ // Skip ID3v2 tag if present — first 10 bytes are "ID3" + version + flags
20
+ // + size (synchsafe). Frame headers start after the tag.
21
+ let i = 0;
22
+ if (buf.length >= 10 && buf[0] === 0x49 && buf[1] === 0x44 && buf[2] === 0x33) {
23
+ const tagSize = ((buf[6] & 0x7f) << 21) |
24
+ ((buf[7] & 0x7f) << 14) |
25
+ ((buf[8] & 0x7f) << 7) |
26
+ (buf[9] & 0x7f);
27
+ i = 10 + tagSize;
28
+ }
29
+ // Find first MPEG audio sync (11 bits set: 0xFFE).
30
+ while (i + 4 < buf.length) {
31
+ if (buf[i] === 0xff && (buf[i + 1] & 0xe0) === 0xe0)
32
+ break;
33
+ i++;
34
+ }
35
+ if (i + 4 >= buf.length)
36
+ return null;
37
+ const h1 = buf[i + 1];
38
+ const h2 = buf[i + 2];
39
+ const versionBits = (h1 >> 3) & 0x03; // 11 = MPEG-1, 10 = MPEG-2, 00 = MPEG-2.5
40
+ const layerBits = (h1 >> 1) & 0x03; // 01 = Layer III
41
+ const bitrateIdx = (h2 >> 4) & 0x0f;
42
+ const sampleRateIdx = (h2 >> 2) & 0x03;
43
+ const padding = (h2 >> 1) & 0x01;
44
+ const isMpeg1 = versionBits === 0x03;
45
+ if (layerBits !== 0x01)
46
+ return null; // only Layer III is bundled
47
+ // Bitrate kbps tables for MPEG-1/2 Layer III
48
+ const BR_V1 = [
49
+ 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1,
50
+ ];
51
+ const BR_V2 = [
52
+ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1,
53
+ ];
54
+ const SR_V1 = [44100, 48000, 32000, -1];
55
+ const SR_V2 = [22050, 24000, 16000, -1];
56
+ const SR_V25 = [11025, 12000, 8000, -1];
57
+ const bitrate = (isMpeg1 ? BR_V1 : BR_V2)[bitrateIdx];
58
+ const sampleRate = (isMpeg1 ? SR_V1 : versionBits === 0x02 ? SR_V2 : SR_V25)[sampleRateIdx];
59
+ if (!bitrate || bitrate <= 0 || !sampleRate || sampleRate <= 0)
60
+ return null;
61
+ const samplesPerFrame = isMpeg1 ? 1152 : 576;
62
+ // Look for a Xing/Info header inside the first frame (offset depends on
63
+ // channel mode). If present, totalFrames * samplesPerFrame / sampleRate
64
+ // gives an accurate VBR duration.
65
+ const sideInfoOffset = isMpeg1 ? (((h2 >> 6) & 0x03) === 0x03 ? 17 : 32) : 9;
66
+ const xingTagOffset = i + 4 + sideInfoOffset;
67
+ if (xingTagOffset + 8 < buf.length) {
68
+ const tag = buf.toString("ascii", xingTagOffset, xingTagOffset + 4);
69
+ if (tag === "Xing" || tag === "Info") {
70
+ const flags = buf.readUInt32BE(xingTagOffset + 4);
71
+ if (flags & 0x01) {
72
+ // totalFrames is the next 32-bit BE
73
+ const totalFrames = buf.readUInt32BE(xingTagOffset + 8);
74
+ if (totalFrames > 0) {
75
+ return Math.round((totalFrames * samplesPerFrame * 1000) / sampleRate);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ // CBR fallback: bytes / (bitrate*1000/8) → seconds.
81
+ const audioBytes = buf.length - i;
82
+ const seconds = audioBytes / ((bitrate * 1000) / 8);
83
+ if (!Number.isFinite(seconds) || seconds <= 0)
84
+ return null;
85
+ void padding; // padding affects per-frame size, immaterial at file scale
86
+ return Math.round(seconds * 1000);
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ /**
93
+ * Duration of the bundled splash audio, in milliseconds. Read once from the
94
+ * actual file so swapping the asset Just Works without anyone having to
95
+ * remember to bump a constant. Falls back to 1500ms if parsing fails.
96
+ */
97
+ export function getSplashAudioDurationMs() {
98
+ const ms = readMp3DurationMs(splashAssetPath());
99
+ return ms && ms > 0 ? ms : 1500;
100
+ }
101
+ /**
102
+ * Resolve the bundled splash.mp3. The build script copies the asset from
103
+ * `assets/` to `dist/` so this path lands inside the published tarball when
104
+ * users `npm i -g`. Falls back to the source location during local dev where
105
+ * the build hasn't happened yet (rare — tsc runs every iteration).
106
+ */
107
+ function splashAssetPath() {
108
+ const here = path.dirname(fileURLToPath(import.meta.url));
109
+ const dist = path.join(here, "splash.mp3");
110
+ if (fs.existsSync(dist))
111
+ return dist;
112
+ // Dev fallback: dist/audio.js → ../assets/splash.mp3 in the source tree.
113
+ const dev = path.join(here, "..", "assets", "splash.mp3");
114
+ return dev;
115
+ }
116
+ /**
117
+ * Fire a candidate player as a detached child. Returns true if the spawn
118
+ * actually started successfully (no immediate ENOENT). The audio process
119
+ * outlives the splash unmount so playback can finish on its own. Stdio is
120
+ * redirected to /dev/null so the player can't pollute the TUI.
121
+ */
122
+ function trySpawn(cmd, args) {
123
+ return new Promise((resolve) => {
124
+ let resolved = false;
125
+ try {
126
+ const child = spawn(cmd, args, {
127
+ detached: true,
128
+ stdio: "ignore",
129
+ });
130
+ child.once("error", () => {
131
+ // ENOENT (binary not installed) or permission failure — let the next
132
+ // candidate take a turn. Don't surface to the user.
133
+ if (!resolved) {
134
+ resolved = true;
135
+ resolve(false);
136
+ }
137
+ });
138
+ child.once("spawn", () => {
139
+ if (!resolved) {
140
+ resolved = true;
141
+ // Detach so the parent process exiting doesn't kill the audio.
142
+ child.unref();
143
+ resolve(true);
144
+ }
145
+ });
146
+ // Some Node versions fire neither immediately. After 50ms with no error,
147
+ // assume success — the spawn went through.
148
+ setTimeout(() => {
149
+ if (!resolved) {
150
+ resolved = true;
151
+ child.unref();
152
+ resolve(true);
153
+ }
154
+ }, 50);
155
+ }
156
+ catch {
157
+ resolve(false);
158
+ }
159
+ });
160
+ }
161
+ /**
162
+ * Cross-platform fire-and-forget MP3 playback. Tries the most likely binary
163
+ * for the host OS first, then a small chain of common Linux fallbacks.
164
+ *
165
+ * Platform notes:
166
+ * - macOS: `afplay` ships with the OS, always works for MP3.
167
+ * - Windows: PowerShell + WPF MediaPlayer is built-in and supports MP3 via
168
+ * DirectShow / MediaFoundation. Doesn't pop up a window because
169
+ * the script runs sync inside powershell.exe with -NoProfile.
170
+ * - Linux: No single guaranteed binary. Try mpv → ffplay → mpg123 → cvlc.
171
+ * If none are installed, give up silently — Linux desktop audio
172
+ * is fragmented enough that we don't want to bloat the package
173
+ * with a bundled player.
174
+ */
175
+ export async function playSplashAudio() {
176
+ const file = splashAssetPath();
177
+ if (!fs.existsSync(file))
178
+ return;
179
+ const platform = process.platform;
180
+ if (platform === "darwin") {
181
+ await trySpawn("afplay", [file]);
182
+ return;
183
+ }
184
+ if (platform === "win32") {
185
+ // Escape single quotes in the path for the PowerShell -Command argument.
186
+ const safe = file.replace(/'/g, "''");
187
+ const script = [
188
+ "Add-Type -AssemblyName presentationCore;",
189
+ "$p = New-Object System.Windows.Media.MediaPlayer;",
190
+ `$p.Open([uri]'${safe}');`,
191
+ "$p.Play();",
192
+ // Sleep so the powershell process stays alive long enough to actually
193
+ // play the clip (MediaPlayer is async; if powershell exits the GC
194
+ // tears the player down before sound plays). Match clip length + a beat.
195
+ "Start-Sleep -Seconds 5;",
196
+ ].join(" ");
197
+ await trySpawn("powershell.exe", ["-NoProfile", "-WindowStyle", "Hidden", "-Command", script]);
198
+ return;
199
+ }
200
+ // Linux + everything else: walk the candidates.
201
+ const linuxCandidates = [
202
+ { cmd: "mpv", args: ["--really-quiet", "--no-video", file] },
203
+ { cmd: "ffplay", args: ["-nodisp", "-autoexit", "-loglevel", "quiet", file] },
204
+ { cmd: "mpg123", args: ["-q", file] },
205
+ { cmd: "mpg321", args: ["-q", file] },
206
+ { cmd: "cvlc", args: ["--play-and-exit", "--quiet", file] },
207
+ { cmd: "paplay", args: [file] },
208
+ ];
209
+ for (const c of linuxCandidates) {
210
+ const ok = await trySpawn(c.cmd, c.args);
211
+ if (ok)
212
+ return;
213
+ }
214
+ }
215
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
@@ -1 +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,CAgE/E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IACtE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAiBA"}
1
+ {"version":3,"file":"splash.d.ts","sourceRoot":"","sources":["../src/splash.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAoFnD,UAAU,iBAAiB;IACzB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAgE/E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IACtE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CA2BA"}
package/dist/splash.js CHANGED
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useEffect, useState } from "react";
3
3
  import { Box, Text, render } from "ink";
4
4
  import { AUTHOR, BRAND, COLORS, GRADIENT, VERSION } from "./branding.js";
5
+ import { getSplashAudioDurationMs, playSplashAudio } from "./audio.js";
5
6
  /**
6
7
  * Big ASCII "GG Boss" rendered for the splash. The block characters here are
7
8
  * ANSI Shadow-style figlet output. Whitespace is significant — every line is
@@ -107,10 +108,20 @@ export function SplashScreen({ caption }) {
107
108
  */
108
109
  export function showSplash(opts) {
109
110
  const start = Date.now();
111
+ // Fire-and-forget — never await. If the platform has no working player or
112
+ // the bundled mp3 is missing, this resolves to nothing and the splash just
113
+ // plays silently. Errors are swallowed inside playSplashAudio so the user
114
+ // never sees an audio-related crash on launch.
115
+ void playSplashAudio();
110
116
  const instance = render(_jsx(SplashScreen, { caption: opts.caption }));
117
+ // Default the minimum visible time to the audio duration so the user
118
+ // doesn't get dumped into the chat mid-jingle. A small +200ms tail keeps
119
+ // the last beat from being clipped by terminal-app sound shutdown.
120
+ const audioDurationMs = getSplashAudioDurationMs();
121
+ const defaultMinMs = audioDurationMs + 200;
111
122
  return {
112
123
  dismiss: async () => {
113
- const minMs = opts.minMs ?? 900;
124
+ const minMs = opts.minMs ?? defaultMinMs;
114
125
  const elapsed = Date.now() - start;
115
126
  const remaining = Math.max(0, minMs - elapsed);
116
127
  if (remaining > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"splash.js","sourceRoot":"","sources":["../src/splash.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"splash.js","sourceRoot":"","sources":["../src/splash.tsx"],"names":[],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenkaiiii/gg-boss",
3
- "version": "4.3.122",
3
+ "version": "4.3.124",
4
4
  "type": "module",
5
5
  "description": "Orchestrator agent that drives multiple ggcoder sessions across projects from a single chat",
6
6
  "license": "MIT",
@@ -26,9 +26,9 @@
26
26
  "ink": "^7.0.2",
27
27
  "react": "^19.2.5",
28
28
  "zod": "^4.4.3",
29
- "@kenkaiiii/ggcoder": "4.3.99",
30
29
  "@kenkaiiii/gg-agent": "4.3.96",
31
- "@kenkaiiii/gg-ai": "4.3.96"
30
+ "@kenkaiiii/gg-ai": "4.3.96",
31
+ "@kenkaiiii/ggcoder": "4.3.99"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^25.6.0",
@@ -40,7 +40,7 @@
40
40
  "access": "public"
41
41
  },
42
42
  "scripts": {
43
- "build": "tsc",
43
+ "build": "tsc && cp assets/splash.mp3 dist/splash.mp3",
44
44
  "check": "tsc --noEmit",
45
45
  "test": "vitest run"
46
46
  }