@kenkaiiii/gg-boss 4.3.159 → 4.3.161

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 CHANGED
@@ -49,7 +49,7 @@ import {
49
49
  use_app_default,
50
50
  use_input_default,
51
51
  use_stdout_default
52
- } from "./chunk-AUC6S26K.js";
52
+ } from "./chunk-3O74GM4F.js";
53
53
  import "./chunk-RMSZMSH5.js";
54
54
  import "./chunk-EZYGVECW.js";
55
55
  import "./chunk-QT366Y52.js";
@@ -344,7 +344,7 @@ init_esm_shims();
344
344
  // package.json
345
345
  var package_default = {
346
346
  name: "@kenkaiiii/gg-boss",
347
- version: "4.3.159",
347
+ version: "4.3.161",
348
348
  type: "module",
349
349
  description: "Orchestrator agent that drives multiple ggcoder sessions across projects from a single chat",
350
350
  license: "MIT",
@@ -357,10 +357,7 @@ var package_default = {
357
357
  ggboss: "./dist/cli.js"
358
358
  },
359
359
  exports: {
360
- ".": {
361
- import: "./dist/index.js",
362
- types: "./dist/index.d.ts"
363
- }
360
+ ".": "./dist/index.js"
364
361
  },
365
362
  files: [
366
363
  "dist"
@@ -455,7 +452,7 @@ var COLORS = {
455
452
  error: "#f87171"
456
453
  };
457
454
  function clearScreen() {
458
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
455
+ process.stdout.write("\x1B[2J\x1B[H");
459
456
  }
460
457
 
461
458
  // src/banner.tsx
@@ -1344,7 +1341,7 @@ ${lines.join("\n")}`);
1344
1341
  await bot.send(chatId, `_Voice transcription failed: ${message}_${hint}`);
1345
1342
  }
1346
1343
  });
1347
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
1344
+ process.stdout.write("\x1B[2J\x1B[H");
1348
1345
  printBanner({
1349
1346
  bossModel: options.bossModel,
1350
1347
  workerModel: options.workerModel,
@@ -1448,7 +1445,7 @@ function printBanner(opts) {
1448
1445
  init_esm_shims();
1449
1446
  import readline2 from "readline/promises";
1450
1447
  async function runBossTelegramSetup() {
1451
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
1448
+ process.stdout.write("\x1B[2J\x1B[H");
1452
1449
  printSetupBanner();
1453
1450
  const existing = await loadBossTelegramConfig();
1454
1451
  if (existing) {
@@ -1536,7 +1533,7 @@ function printSetupBanner() {
1536
1533
 
1537
1534
  // src/orchestrator-app.tsx
1538
1535
  init_esm_shims();
1539
- var import_react11 = __toESM(require_react(), 1);
1536
+ var import_react10 = __toESM(require_react(), 1);
1540
1537
 
1541
1538
  // ../ggcoder/dist/ui/components/index.js
1542
1539
  init_esm_shims();
@@ -1561,15 +1558,10 @@ init_esm_shims();
1561
1558
  var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
1562
1559
  var import_react6 = __toESM(require_react(), 1);
1563
1560
 
1564
- // ../ggcoder/dist/ui/components/ThinkingIndicator.js
1565
- init_esm_shims();
1566
- var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
1567
- var import_react7 = __toESM(require_react(), 1);
1568
-
1569
1561
  // src/boss-footer.tsx
1570
1562
  init_esm_shims();
1571
- var import_react8 = __toESM(require_react(), 1);
1572
- var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
1563
+ var import_react7 = __toESM(require_react(), 1);
1564
+ var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
1573
1565
  var PARTIAL_BLOCKS = [" ", "\u258F", "\u258E", "\u258D", "\u258C", "\u258B", "\u258A", "\u2589", "\u2588"];
1574
1566
  var LIGHT_SHADE = "\u2591";
1575
1567
  var SHORT_MODELS = {
@@ -1608,11 +1600,11 @@ function BossFooter({
1608
1600
  const theme = useTheme();
1609
1601
  const { columns } = useTerminalSize();
1610
1602
  if (exitPending) {
1611
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.warning, children: "Press Ctrl+C again to exit" }) });
1603
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box_default, { paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: theme.warning, children: "Press Ctrl+C again to exit" }) });
1612
1604
  }
1613
1605
  const contextPct = getContextPercent(bossModel, tokensIn);
1614
1606
  const contextColor = contextPct >= 80 ? theme.error : contextPct >= 50 ? theme.warning : theme.success;
1615
- const sep = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.border, children: " \u2502 " });
1607
+ const sep = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: theme.border, children: " \u2502 " });
1616
1608
  const barWidth = 8;
1617
1609
  const fillFloat = Math.min(contextPct / 100 * barWidth, barWidth);
1618
1610
  const barChars = [];
@@ -1621,15 +1613,15 @@ function BossFooter({
1621
1613
  const eighths = Math.round(cellFill * 8);
1622
1614
  if (eighths === 8) {
1623
1615
  barChars.push(
1624
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: contextColor, children: PARTIAL_BLOCKS[8] }, i)
1616
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: contextColor, children: PARTIAL_BLOCKS[8] }, i)
1625
1617
  );
1626
1618
  } else if (eighths > 0) {
1627
1619
  barChars.push(
1628
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: contextColor, children: PARTIAL_BLOCKS[eighths] }, i)
1620
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: contextColor, children: PARTIAL_BLOCKS[eighths] }, i)
1629
1621
  );
1630
1622
  } else {
1631
1623
  barChars.push(
1632
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: LIGHT_SHADE }, i)
1624
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: theme.textDim, children: LIGHT_SHADE }, i)
1633
1625
  );
1634
1626
  }
1635
1627
  }
@@ -1645,35 +1637,35 @@ function BossFooter({
1645
1637
  const dropLabels = estFull > columns;
1646
1638
  const dropThinking = estFull > columns + 14;
1647
1639
  const useShortUpdate = updatePending && estFull > columns + 6;
1648
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box_default, { paddingX: 1, width: columns, children: [
1649
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { flexGrow: 1 }),
1650
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box_default, { flexShrink: 0, children: [
1651
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { children: barChars }),
1652
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: contextColor, children: [
1640
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Box_default, { paddingX: 1, width: columns, children: [
1641
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box_default, { flexGrow: 1 }),
1642
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Box_default, { flexShrink: 0, children: [
1643
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { children: barChars }),
1644
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Text, { color: contextColor, children: [
1653
1645
  " ",
1654
1646
  contextPct,
1655
1647
  "%"
1656
1648
  ] }),
1657
1649
  sep,
1658
- !dropLabels && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: "boss " }),
1659
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: COLORS.primary, bold: true, children: bossM }),
1650
+ !dropLabels && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: theme.textDim, children: "boss " }),
1651
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: COLORS.primary, bold: true, children: bossM }),
1660
1652
  sep,
1661
- !dropLabels && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: "workers " }),
1662
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: COLORS.accent, bold: true, children: wkrM }),
1663
- !dropThinking && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1653
+ !dropLabels && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: theme.textDim, children: "workers " }),
1654
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: COLORS.accent, bold: true, children: wkrM }),
1655
+ !dropThinking && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1664
1656
  sep,
1665
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: bossThinkingLevel ? theme.accent : theme.textDim, children: bossThinkingLevel ? "Thinking on" : "Thinking off" })
1657
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: bossThinkingLevel ? theme.accent : theme.textDim, children: bossThinkingLevel ? "Thinking on" : "Thinking off" })
1666
1658
  ] }),
1667
- radioName && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1659
+ radioName && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1668
1660
  sep,
1669
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.secondary ?? theme.accent, children: [
1661
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Text, { color: theme.secondary ?? theme.accent, children: [
1670
1662
  "\u266A ",
1671
1663
  radioName
1672
1664
  ] })
1673
1665
  ] }),
1674
- updatePending && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1666
+ updatePending && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1675
1667
  sep,
1676
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.success, bold: true, wrap: "truncate", children: useShortUpdate ? "Update ready" : "Update ready. Restart GG Boss." })
1668
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Text, { color: theme.success, bold: true, wrap: "truncate", children: useShortUpdate ? "Update ready" : "Update ready. Restart GG Boss." })
1677
1669
  ] })
1678
1670
  ] })
1679
1671
  ] });
@@ -1936,8 +1928,8 @@ var BOSS_PHRASES = {
1936
1928
 
1937
1929
  // src/boss-tasks-overlay.tsx
1938
1930
  init_esm_shims();
1939
- var import_react9 = __toESM(require_react(), 1);
1940
- var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
1931
+ var import_react8 = __toESM(require_react(), 1);
1932
+ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
1941
1933
  function statusGlyph(status) {
1942
1934
  switch (status) {
1943
1935
  case "done":
@@ -1960,10 +1952,10 @@ function BossTasksOverlay({
1960
1952
  const theme = useTheme();
1961
1953
  const tasksState = useTasksState();
1962
1954
  const tasks = tasksState.tasks;
1963
- const [selectedIndex, setSelectedIndex] = (0, import_react9.useState)(0);
1964
- const [status, setStatusMsg] = (0, import_react9.useState)("");
1965
- const statusTimer = (0, import_react9.useRef)(null);
1966
- const showStatus = (0, import_react9.useCallback)((msg) => {
1955
+ const [selectedIndex, setSelectedIndex] = (0, import_react8.useState)(0);
1956
+ const [status, setStatusMsg] = (0, import_react8.useState)("");
1957
+ const statusTimer = (0, import_react8.useRef)(null);
1958
+ const showStatus = (0, import_react8.useCallback)((msg) => {
1967
1959
  setStatusMsg(msg);
1968
1960
  if (statusTimer.current) clearTimeout(statusTimer.current);
1969
1961
  statusTimer.current = setTimeout(() => setStatusMsg(""), 2500);
@@ -1973,7 +1965,7 @@ function BossTasksOverlay({
1973
1965
  tasks: tasks.filter((t) => t.project === w.name).sort((a, b) => a.createdAt.localeCompare(b.createdAt))
1974
1966
  }));
1975
1967
  const flatTasks = groupedTasks.flatMap((g) => g.tasks);
1976
- (0, import_react9.useEffect)(() => {
1968
+ (0, import_react8.useEffect)(() => {
1977
1969
  if (flatTasks.length === 0) {
1978
1970
  setSelectedIndex(0);
1979
1971
  } else if (selectedIndex >= flatTasks.length) {
@@ -2033,11 +2025,11 @@ function BossTasksOverlay({
2033
2025
  const inProgressCount = tasks.filter((t) => t.status === "in_progress").length;
2034
2026
  const pendingCount = tasks.filter((t) => t.status === "pending").length;
2035
2027
  const blockedCount = tasks.filter((t) => t.status === "blocked").length;
2036
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, paddingX: 1, children: [
2037
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Box_default, { children: [
2038
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: COLORS.primary, bold: true, children: "Tasks" }),
2039
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: ` \xB7 ${tasks.length} total \xB7 ` }),
2040
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2028
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, paddingX: 1, children: [
2029
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box_default, { children: [
2030
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: COLORS.primary, bold: true, children: "Tasks" }),
2031
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: ` \xB7 ${tasks.length} total \xB7 ` }),
2032
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2041
2033
  CountsRow,
2042
2034
  {
2043
2035
  theme,
@@ -2048,20 +2040,20 @@ function BossTasksOverlay({
2048
2040
  }
2049
2041
  )
2050
2042
  ] }),
2051
- flatTasks.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color: theme.textDim, children: [
2043
+ flatTasks.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.textDim, children: [
2052
2044
  " No tasks yet. Ask the boss to plan some \u2014 e.g. ",
2053
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.text, children: '"plan some work"' }),
2045
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.text, children: '"plan some work"' }),
2054
2046
  "."
2055
2047
  ] }) }),
2056
- showingTop && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: ` \u2191 ${startIdx} more above` }),
2048
+ showingTop && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: ` \u2191 ${startIdx} more above` }),
2057
2049
  groupedTasks.map((group, gIdx) => {
2058
2050
  const startInFlat = groupedTasks.slice(0, gIdx).reduce((acc, g) => acc + g.tasks.length, 0);
2059
2051
  const visibleInSection = group.tasks.filter((t) => visibleIdSet.has(t.id));
2060
2052
  if (visibleInSection.length === 0) return null;
2061
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
2062
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { children: [
2063
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: projectColor(group.project), bold: true, children: group.project }),
2064
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: ` \xB7 ${group.tasks.length}` })
2053
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
2054
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { children: [
2055
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: projectColor(group.project), bold: true, children: group.project }),
2056
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: ` \xB7 ${group.tasks.length}` })
2065
2057
  ] }),
2066
2058
  visibleInSection.map((task) => {
2067
2059
  const realIdx = startInFlat + group.tasks.indexOf(task);
@@ -2069,7 +2061,7 @@ function BossTasksOverlay({
2069
2061
  const prefix = isSelected ? "\u276F " : " ";
2070
2062
  const glyph = statusGlyph(task.status);
2071
2063
  const color = isSelected ? theme.primary : task.status === "done" ? theme.success : task.status === "in_progress" ? theme.warning : task.status === "blocked" ? theme.error : theme.text;
2072
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color, bold: isSelected, children: [
2064
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color, bold: isSelected, children: [
2073
2065
  prefix,
2074
2066
  "[",
2075
2067
  glyph,
@@ -2079,16 +2071,16 @@ function BossTasksOverlay({
2079
2071
  })
2080
2072
  ] }, group.project);
2081
2073
  }),
2082
- showingBottom && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: ` \u2193 ${flatTasks.length - endIdx} more below` }),
2083
- status && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.success, children: " " + status }) }),
2084
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color: theme.textDim, children: [
2085
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.primary, children: "\u2191\u2193" }),
2074
+ showingBottom && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: ` \u2193 ${flatTasks.length - endIdx} more below` }),
2075
+ status && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.success, children: " " + status }) }),
2076
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.textDim, children: [
2077
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.primary, children: "\u2191\u2193" }),
2086
2078
  " move \xB7 (",
2087
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.primary, children: "d" }),
2079
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.primary, children: "d" }),
2088
2080
  ")elete \xB7 (",
2089
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.primary, children: "r" }),
2081
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.primary, children: "r" }),
2090
2082
  ")un pending \xB7 ",
2091
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.primary, children: "ESC" }),
2083
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.primary, children: "ESC" }),
2092
2084
  " close"
2093
2085
  ] }) })
2094
2086
  ] });
@@ -2100,24 +2092,24 @@ function CountsRow({
2100
2092
  pending,
2101
2093
  blocked
2102
2094
  }) {
2103
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { children: [
2104
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color: theme.success, children: [
2095
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { children: [
2096
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.success, children: [
2105
2097
  done,
2106
2098
  " done"
2107
2099
  ] }),
2108
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
2109
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color: theme.warning, children: [
2100
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
2101
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.warning, children: [
2110
2102
  active,
2111
2103
  " active"
2112
2104
  ] }),
2113
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
2114
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color: theme.text, children: [
2105
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
2106
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.text, children: [
2115
2107
  pending,
2116
2108
  " pending"
2117
2109
  ] }),
2118
- blocked > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2119
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
2120
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Text, { color: theme.error, children: [
2110
+ blocked > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
2111
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
2112
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { color: theme.error, children: [
2121
2113
  blocked,
2122
2114
  " blocked"
2123
2115
  ] })
@@ -2127,7 +2119,7 @@ function CountsRow({
2127
2119
 
2128
2120
  // src/radio-picker.tsx
2129
2121
  init_esm_shims();
2130
- var import_react10 = __toESM(require_react(), 1);
2122
+ var import_react9 = __toESM(require_react(), 1);
2131
2123
 
2132
2124
  // src/radio.ts
2133
2125
  init_esm_shims();
@@ -2295,7 +2287,7 @@ function buildInstallHint() {
2295
2287
  }
2296
2288
 
2297
2289
  // src/radio-picker.tsx
2298
- var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
2290
+ var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
2299
2291
  function RadioPicker({
2300
2292
  currentStationId: currentStationId2,
2301
2293
  onSelect,
@@ -2317,7 +2309,7 @@ function RadioPicker({
2317
2309
  0,
2318
2310
  items.findIndex((i) => i.value === (currentStationId2 ?? "off"))
2319
2311
  );
2320
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2312
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2321
2313
  SelectList,
2322
2314
  {
2323
2315
  items,
@@ -2497,29 +2489,29 @@ function stopPeriodicUpdateCheck() {
2497
2489
  }
2498
2490
 
2499
2491
  // src/orchestrator-app.tsx
2500
- var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
2492
+ var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
2501
2493
  function BossApp(props) {
2502
2494
  const theme = loadTheme("dark");
2503
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TerminalSizeProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ThemeContext.Provider, { value: theme, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AnimationProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(BossAppInner, { ...props }) }) }) });
2495
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TerminalSizeProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ThemeContext.Provider, { value: theme, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AnimationProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BossAppInner, { ...props }) }) }) });
2504
2496
  }
2505
2497
  function BossAppInner({ boss, resetUI }) {
2506
2498
  const state = useBossState();
2507
2499
  const { exit } = use_app_default();
2508
2500
  const { stdout } = use_stdout_default();
2509
2501
  const { resizeKey, columns, rows } = useTerminalSize();
2510
- const runStartRef = (0, import_react11.useRef)(null);
2502
+ const runStartRef = (0, import_react10.useRef)(null);
2511
2503
  runStartRef.current = state.runStartMs;
2512
- const charCountRef = (0, import_react11.useRef)(0);
2504
+ const charCountRef = (0, import_react10.useRef)(0);
2513
2505
  charCountRef.current = state.streaming?.text.length ?? 0;
2514
- const realTokensAccumRef = (0, import_react11.useRef)(0);
2506
+ const realTokensAccumRef = (0, import_react10.useRef)(0);
2515
2507
  realTokensAccumRef.current = state.bossInputTokens;
2516
- const [lastUserMessage, setLastUserMessage] = (0, import_react11.useState)("");
2508
+ const [lastUserMessage, setLastUserMessage] = (0, import_react10.useState)("");
2517
2509
  const overlay = state.overlay;
2518
- const [currentRadio, setCurrentRadio] = (0, import_react11.useState)(() => getCurrentStation());
2519
- const [updatePending, setUpdatePending] = (0, import_react11.useState)(
2510
+ const [currentRadio, setCurrentRadio] = (0, import_react10.useState)(() => getCurrentStation());
2511
+ const [updatePending, setUpdatePending] = (0, import_react10.useState)(
2520
2512
  () => getPendingUpdate(VERSION) !== null
2521
2513
  );
2522
- (0, import_react11.useEffect)(() => {
2514
+ (0, import_react10.useEffect)(() => {
2523
2515
  startPeriodicUpdateCheck(VERSION, (msg) => {
2524
2516
  bossStore.appendUpdateNotice(msg);
2525
2517
  setUpdatePending(true);
@@ -2527,8 +2519,8 @@ function BossAppInner({ boss, resetUI }) {
2527
2519
  return () => stopPeriodicUpdateCheck();
2528
2520
  }, []);
2529
2521
  const workersRunning = state.workers.filter((w) => w.status === "working").length;
2530
- const titlePrevRef = (0, import_react11.useRef)("");
2531
- (0, import_react11.useEffect)(() => {
2522
+ const titlePrevRef = (0, import_react10.useRef)("");
2523
+ (0, import_react10.useEffect)(() => {
2532
2524
  if (!stdout) return;
2533
2525
  let title;
2534
2526
  if (workersRunning > 0) {
@@ -2544,23 +2536,23 @@ function BossAppInner({ boss, resetUI }) {
2544
2536
  stdout.write(`\x1B]0;${title}\x1B\\`);
2545
2537
  }
2546
2538
  }, [stdout, workersRunning, state.phase]);
2547
- (0, import_react11.useEffect)(() => {
2539
+ (0, import_react10.useEffect)(() => {
2548
2540
  return () => {
2549
2541
  stdout?.write(`\x1B]0;GG Boss\x1B\\`);
2550
2542
  };
2551
2543
  }, [stdout]);
2552
- const staticItems = (0, import_react11.useMemo)(
2544
+ const staticItems = (0, import_react10.useMemo)(
2553
2545
  () => [{ kind: "banner", id: "banner" }, ...state.history],
2554
2546
  [state.history]
2555
2547
  );
2556
- const openOverlay = (0, import_react11.useCallback)(
2548
+ const openOverlay = (0, import_react10.useCallback)(
2557
2549
  (next) => {
2558
2550
  bossStore.setOverlay(next);
2559
2551
  if (resetUI) resetUI();
2560
2552
  },
2561
2553
  [resetUI]
2562
2554
  );
2563
- const closeOverlay = (0, import_react11.useCallback)(() => {
2555
+ const closeOverlay = (0, import_react10.useCallback)(() => {
2564
2556
  bossStore.setOverlay(null);
2565
2557
  if (resetUI) resetUI();
2566
2558
  }, [resetUI]);
@@ -2569,7 +2561,7 @@ function BossAppInner({ boss, resetUI }) {
2569
2561
  (pending) => bossStore.setExitPending(pending),
2570
2562
  () => exit()
2571
2563
  );
2572
- (0, import_react11.useEffect)(() => {
2564
+ (0, import_react10.useEffect)(() => {
2573
2565
  if (state.pendingFlush.length > 0) {
2574
2566
  bossStore.commitPendingFlush();
2575
2567
  }
@@ -2657,16 +2649,16 @@ function BossAppInner({ boss, resetUI }) {
2657
2649
  handleDoubleExit();
2658
2650
  };
2659
2651
  if (rows < 14) {
2660
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", width: columns, paddingX: 1, marginTop: 1, children: [
2661
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { bold: true, color: COLORS.accent, children: "Terminal too small" }),
2662
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.primary, children: `Resize to at least 14 rows to use GG Boss (currently ${rows}).` })
2652
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "column", width: columns, paddingX: 1, marginTop: 1, children: [
2653
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { bold: true, color: COLORS.accent, children: "Terminal too small" }),
2654
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: COLORS.primary, children: `Resize to at least 14 rows to use GG Boss (currently ${rows}).` })
2663
2655
  ] });
2664
2656
  }
2665
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", width: columns, children: [
2666
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Static, { items: staticItems, style: { width: "100%" }, children: (item) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { flexDirection: "column", paddingRight: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(StaticRowView, { row: item }) }, item.id) }, resizeKey),
2667
- overlay === "tasks" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(BossTasksOverlay, { boss, workers: state.workers, onClose: closeOverlay }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
2668
- state.streaming && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(StreamingTurnView, { turn: state.streaming, isRunning: state.phase === "working" }),
2669
- state.phase === "working" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2657
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "column", width: columns, children: [
2658
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Static, { items: staticItems, style: { width: "100%" }, children: (item) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { flexDirection: "column", paddingRight: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(StaticRowView, { row: item }) }, item.id) }, resizeKey),
2659
+ overlay === "tasks" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BossTasksOverlay, { boss, workers: state.workers, onClose: closeOverlay }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
2660
+ state.streaming && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(StreamingTurnView, { turn: state.streaming, isRunning: state.phase === "working" }),
2661
+ state.phase === "working" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2670
2662
  ActivityIndicator,
2671
2663
  {
2672
2664
  phase: state.activityPhase,
@@ -2684,8 +2676,8 @@ function BossAppInner({ boss, resetUI }) {
2684
2676
  pulseColors: PULSE_COLORS
2685
2677
  }
2686
2678
  ) }),
2687
- state.compaction?.state === "running" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CompactionSpinner, {}),
2688
- state.compaction?.state === "done" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2679
+ state.compaction?.state === "running" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CompactionSpinner, {}),
2680
+ state.compaction?.state === "done" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2689
2681
  CompactionDone,
2690
2682
  {
2691
2683
  originalCount: state.compaction.originalCount,
@@ -2694,7 +2686,7 @@ function BossAppInner({ boss, resetUI }) {
2694
2686
  tokensAfter: state.compaction.tokensAfter
2695
2687
  }
2696
2688
  ),
2697
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2689
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2698
2690
  InputArea,
2699
2691
  {
2700
2692
  onSubmit: handleSubmit,
@@ -2703,7 +2695,7 @@ function BossAppInner({ boss, resetUI }) {
2703
2695
  isActive: !overlay,
2704
2696
  cwd: process.cwd(),
2705
2697
  commands: BOSS_SLASH_COMMANDS,
2706
- scopeBadge: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ScopePill, { scope: state.scope }),
2698
+ scopeBadge: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ScopePill, { scope: state.scope }),
2707
2699
  disableMouseTracking: true,
2708
2700
  onTab: () => bossStore.cycleScope(),
2709
2701
  onShiftTab: () => {
@@ -2712,7 +2704,7 @@ function BossAppInner({ boss, resetUI }) {
2712
2704
  }
2713
2705
  }
2714
2706
  ),
2715
- overlay === "model-boss" || overlay === "model-workers" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2707
+ overlay === "model-boss" || overlay === "model-workers" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2716
2708
  ModelSelector,
2717
2709
  {
2718
2710
  onSelect: handleModelSelect,
@@ -2721,7 +2713,7 @@ function BossAppInner({ boss, resetUI }) {
2721
2713
  currentModel: overlay === "model-boss" ? state.bossModel : state.workerModel,
2722
2714
  currentProvider: overlay === "model-boss" ? state.bossProvider : state.workerProvider
2723
2715
  }
2724
- ) : overlay === "radio" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2716
+ ) : overlay === "radio" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2725
2717
  RadioPicker,
2726
2718
  {
2727
2719
  currentStationId: currentRadio,
@@ -2744,8 +2736,8 @@ function BossAppInner({ boss, resetUI }) {
2744
2736
  closeOverlay();
2745
2737
  }
2746
2738
  }
2747
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
2748
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2739
+ ) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
2740
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2749
2741
  BossFooter,
2750
2742
  {
2751
2743
  bossModel: state.bossModel,
@@ -2757,7 +2749,7 @@ function BossAppInner({ boss, resetUI }) {
2757
2749
  currentRadioStationId: currentRadio
2758
2750
  }
2759
2751
  ),
2760
- !state.exitPending && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2752
+ !state.exitPending && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2761
2753
  WorkerStatusBar,
2762
2754
  {
2763
2755
  workers: state.workers,
@@ -2773,12 +2765,12 @@ function ScopePill({ scope }) {
2773
2765
  const isAll = scope === "all";
2774
2766
  const bg = isAll ? COLORS.accent : projectColor(scope);
2775
2767
  const label = isAll ? "All" : scope;
2776
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { children: [
2777
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: "Project " }),
2778
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: "black", backgroundColor: bg, bold: true, children: ` ${label} ` }),
2779
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: theme.textDim, children: [
2768
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { children: [
2769
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: "Project " }),
2770
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: "black", backgroundColor: bg, bold: true, children: ` ${label} ` }),
2771
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: theme.textDim, children: [
2780
2772
  " ",
2781
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.primary, children: "Tab" }),
2773
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.primary, children: "Tab" }),
2782
2774
  " to switch"
2783
2775
  ] })
2784
2776
  ] });
@@ -2805,9 +2797,9 @@ function ShimmerName({
2805
2797
  }) {
2806
2798
  const cycle = name.length + SHIMMER_WIDTH * 2;
2807
2799
  const shimmerPos = tick % cycle - SHIMMER_WIDTH;
2808
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { children: name.split("").map((ch, i) => {
2800
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { children: name.split("").map((ch, i) => {
2809
2801
  const isBright = Math.abs(i - shimmerPos) <= SHIMMER_WIDTH;
2810
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color, bold: isBright, dimColor: !isBright, children: ch }, i);
2802
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color, bold: isBright, dimColor: !isBright, children: ch }, i);
2811
2803
  }) });
2812
2804
  }
2813
2805
  function WorkerStatusBar({
@@ -2828,9 +2820,9 @@ function WorkerStatusBar({
2828
2820
  const projectHue = projectColor(w.name);
2829
2821
  const elapsed = w.workStartedAt ? formatElapsed(now - w.workStartedAt) : null;
2830
2822
  slots.push(
2831
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react11.default.Fragment, { children: [
2832
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ShimmerName, { name: w.name, color: projectHue, tick }),
2833
- elapsed && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: theme.textDim, children: [
2823
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_react10.default.Fragment, { children: [
2824
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ShimmerName, { name: w.name, color: projectHue, tick }),
2825
+ elapsed && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: theme.textDim, children: [
2834
2826
  " ",
2835
2827
  elapsed
2836
2828
  ] })
@@ -2839,7 +2831,7 @@ function WorkerStatusBar({
2839
2831
  }
2840
2832
  for (const w of errored) {
2841
2833
  slots.push(
2842
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react11.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: theme.error, children: [
2834
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react10.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: theme.error, children: [
2843
2835
  "\u2717 ",
2844
2836
  w.name
2845
2837
  ] }) }, `e-${w.name}`)
@@ -2847,23 +2839,23 @@ function WorkerStatusBar({
2847
2839
  }
2848
2840
  if (idleCount > 0) {
2849
2841
  slots.push(
2850
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react11.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: theme.textDim, children: [
2842
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react10.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: theme.textDim, children: [
2851
2843
  "\u25CB ",
2852
2844
  idleCount,
2853
2845
  " idle"
2854
2846
  ] }) }, "idle")
2855
2847
  );
2856
2848
  }
2857
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { paddingX: 1, width: columns, flexShrink: 1, children: [
2858
- anyWorking && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AnimationActiveSentinel, {}),
2859
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { wrap: "truncate", children: [
2860
- slots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react11.default.Fragment, { children: [
2861
- i > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.border, children: " \u2502 " }),
2849
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { paddingX: 1, width: columns, flexShrink: 1, children: [
2850
+ anyWorking && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AnimationActiveSentinel, {}),
2851
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { wrap: "truncate", children: [
2852
+ slots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_react10.default.Fragment, { children: [
2853
+ i > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.border, children: " \u2502 " }),
2862
2854
  slot
2863
2855
  ] }, i)),
2864
- pendingMessages > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
2865
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: " " }),
2866
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: theme.warning, children: [
2856
+ pendingMessages > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
2857
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: " " }),
2858
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: theme.warning, children: [
2867
2859
  pendingMessages,
2868
2860
  " message",
2869
2861
  pendingMessages === 1 ? "" : "s",
@@ -2875,22 +2867,22 @@ function WorkerStatusBar({
2875
2867
  }
2876
2868
  function StaticRowView({ row }) {
2877
2869
  if (row.kind === "banner") {
2878
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(BossBanner, { subtitle: "Orchestrator", showShortcuts: true }) });
2879
- }
2880
- if (row.kind === "user") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(UserMessage, { text: row.text });
2881
- if (row.kind === "assistant") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AssistantRow, { item: row });
2882
- if (row.kind === "tool") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ToolHistoryRow, { item: row });
2883
- if (row.kind === "worker_event") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(WorkerEventRow, { item: row });
2884
- if (row.kind === "worker_error") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(WorkerErrorRow, { item: row });
2885
- if (row.kind === "info") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(InfoRow, { text: row.text, level: row.level ?? "info" });
2886
- if (row.kind === "task_dispatch") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TaskDispatchRow, { tasks: row.tasks });
2887
- if (row.kind === "update_notice") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(UpdateNoticeRow, { text: row.text });
2870
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BossBanner, { subtitle: "Orchestrator", showShortcuts: true }) });
2871
+ }
2872
+ if (row.kind === "user") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(UserMessage, { text: row.text });
2873
+ if (row.kind === "assistant") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AssistantRow, { item: row });
2874
+ if (row.kind === "tool") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ToolHistoryRow, { item: row });
2875
+ if (row.kind === "worker_event") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(WorkerEventRow, { item: row });
2876
+ if (row.kind === "worker_error") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(WorkerErrorRow, { item: row });
2877
+ if (row.kind === "info") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(InfoRow, { text: row.text, level: row.level ?? "info" });
2878
+ if (row.kind === "task_dispatch") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TaskDispatchRow, { tasks: row.tasks });
2879
+ if (row.kind === "update_notice") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(UpdateNoticeRow, { text: row.text });
2888
2880
  return null;
2889
2881
  }
2890
2882
  function UpdateNoticeRow({ text }) {
2891
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { marginTop: 1, flexShrink: 1, borderStyle: "round", borderColor: COLORS.accent, paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { wrap: "wrap", children: [
2892
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.accent, bold: true, children: "\u2728 " }),
2893
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.primary, bold: true, children: text })
2883
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { marginTop: 1, flexShrink: 1, borderStyle: "round", borderColor: COLORS.accent, paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { wrap: "wrap", children: [
2884
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: COLORS.accent, bold: true, children: "\u2728 " }),
2885
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: COLORS.primary, bold: true, children: text })
2894
2886
  ] }) });
2895
2887
  }
2896
2888
  function TaskDispatchRow({
@@ -2898,10 +2890,10 @@ function TaskDispatchRow({
2898
2890
  }) {
2899
2891
  const theme = useTheme();
2900
2892
  const count = tasks.length;
2901
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [
2902
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { children: [
2903
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.primary, bold: true, children: "\u23FA " }),
2904
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: theme.text, bold: true, children: [
2893
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "column", paddingX: 1, marginTop: 1, children: [
2894
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { children: [
2895
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: COLORS.primary, bold: true, children: "\u23FA " }),
2896
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: theme.text, bold: true, children: [
2905
2897
  "Running ",
2906
2898
  count,
2907
2899
  " task",
@@ -2909,11 +2901,11 @@ function TaskDispatchRow({
2909
2901
  ":"
2910
2902
  ] })
2911
2903
  ] }),
2912
- tasks.map((t, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { children: [
2913
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: " \u2022 " }),
2914
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: projectColor(t.project), bold: true, children: t.project }),
2915
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: ": " }),
2916
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.text, children: t.title })
2904
+ tasks.map((t, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { children: [
2905
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: " \u2022 " }),
2906
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: projectColor(t.project), bold: true, children: t.project }),
2907
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: ": " }),
2908
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.text, children: t.title })
2917
2909
  ] }, `${t.project}-${i}`))
2918
2910
  ] });
2919
2911
  }
@@ -2940,7 +2932,7 @@ function highlightShortcuts(text) {
2940
2932
  );
2941
2933
  }
2942
2934
  function AssistantRow({ item }) {
2943
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2935
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2944
2936
  AssistantMessage,
2945
2937
  {
2946
2938
  text: highlightShortcuts(item.text),
@@ -2950,7 +2942,7 @@ function AssistantRow({ item }) {
2950
2942
  );
2951
2943
  }
2952
2944
  function ToolHistoryRow({ item }) {
2953
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2945
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2954
2946
  ToolExecution,
2955
2947
  {
2956
2948
  status: "done",
@@ -3033,22 +3025,22 @@ function WorkerEventRow({ item }) {
3033
3025
  const trailer = parseWorkerTrailer(item.finalText);
3034
3026
  const hasTrailer = !!(trailer.changed || trailer.skipped || trailer.verified || trailer.notes);
3035
3027
  const fallbackSummary = hasTrailer ? "" : summarizeFinalText(item.finalText, fieldMaxLen);
3036
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
3037
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "row", children: [
3038
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ToolUseLoader, { status: loaderStatus }),
3039
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { wrap: "wrap", children: [
3040
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: headerColor, bold: true, children: item.project }),
3041
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.text, children: ` turn ${item.turnIndex}` }),
3042
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: ` \xB7 ${toolSummary}` }),
3043
- grade && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3044
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
3045
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: statusGradeColor(grade, theme), bold: true, children: grade })
3028
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
3029
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "row", children: [
3030
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ToolUseLoader, { status: loaderStatus }),
3031
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { wrap: "wrap", children: [
3032
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: headerColor, bold: true, children: item.project }),
3033
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.text, children: ` turn ${item.turnIndex}` }),
3034
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: ` \xB7 ${toolSummary}` }),
3035
+ grade && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
3036
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: " \xB7 " }),
3037
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: statusGradeColor(grade, theme), bold: true, children: grade })
3046
3038
  ] })
3047
3039
  ] }) })
3048
3040
  ] }),
3049
- hasTrailer ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3050
- trailer.changed && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TrailerLine, { label: "Changed", value: trailer.changed, maxLen: fieldMaxLen }),
3051
- trailer.verified && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3041
+ hasTrailer ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
3042
+ trailer.changed && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TrailerLine, { label: "Changed", value: trailer.changed, maxLen: fieldMaxLen }),
3043
+ trailer.verified && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3052
3044
  TrailerLine,
3053
3045
  {
3054
3046
  label: "Verified",
@@ -3057,7 +3049,7 @@ function WorkerEventRow({ item }) {
3057
3049
  labelColor: theme.success
3058
3050
  }
3059
3051
  ),
3060
- trailer.skipped && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3052
+ trailer.skipped && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3061
3053
  TrailerLine,
3062
3054
  {
3063
3055
  label: "Skipped",
@@ -3066,8 +3058,8 @@ function WorkerEventRow({ item }) {
3066
3058
  labelColor: theme.warning
3067
3059
  }
3068
3060
  ),
3069
- trailer.notes && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TrailerLine, { label: "Notes", value: trailer.notes, maxLen: fieldMaxLen })
3070
- ] }) : fallbackSummary && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(MessageResponse, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, wrap: "truncate", children: fallbackSummary }) })
3061
+ trailer.notes && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TrailerLine, { label: "Notes", value: trailer.notes, maxLen: fieldMaxLen })
3062
+ ] }) : fallbackSummary && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MessageResponse, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, wrap: "truncate", children: fallbackSummary }) })
3071
3063
  ] });
3072
3064
  }
3073
3065
  function TrailerLine({
@@ -3077,45 +3069,45 @@ function TrailerLine({
3077
3069
  labelColor
3078
3070
  }) {
3079
3071
  const theme = useTheme();
3080
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(MessageResponse, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { wrap: "truncate", children: [
3081
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: labelColor ?? theme.textDim, bold: true, children: [
3072
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MessageResponse, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { wrap: "truncate", children: [
3073
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { color: labelColor ?? theme.textDim, bold: true, children: [
3082
3074
  label,
3083
3075
  ":"
3084
3076
  ] }),
3085
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.text, children: ` ${clip(value, maxLen - label.length - 2)}` })
3077
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.text, children: ` ${clip(value, maxLen - label.length - 2)}` })
3086
3078
  ] }) });
3087
3079
  }
3088
3080
  function WorkerErrorRow({ item }) {
3089
3081
  const theme = useTheme();
3090
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
3091
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "row", children: [
3092
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ToolUseLoader, { status: "error" }),
3093
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { wrap: "wrap", children: [
3094
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.toolError, bold: true, children: item.project }),
3095
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.textDim, children: " worker error" })
3082
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "column", marginTop: 1, children: [
3083
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "row", children: [
3084
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ToolUseLoader, { status: "error" }),
3085
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Text, { wrap: "wrap", children: [
3086
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.toolError, bold: true, children: item.project }),
3087
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.textDim, children: " worker error" })
3096
3088
  ] }) })
3097
3089
  ] }),
3098
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(MessageResponse, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: theme.error, wrap: "wrap", children: item.message }) })
3090
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MessageResponse, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color: theme.error, wrap: "wrap", children: item.message }) })
3099
3091
  ] });
3100
3092
  }
3101
3093
  function InfoRow({
3102
3094
  text,
3103
3095
  level
3104
3096
  }) {
3105
- if (level === "info") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AssistantMessage, { text });
3097
+ if (level === "info") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AssistantMessage, { text });
3106
3098
  const theme = useTheme();
3107
3099
  const color = level === "error" ? theme.error : theme.warning;
3108
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { marginTop: 1, flexDirection: "row", children: [
3109
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ToolUseLoader, { status: level === "error" ? "error" : "queued" }),
3110
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color, wrap: "wrap", children: text }) })
3100
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { marginTop: 1, flexDirection: "row", children: [
3101
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ToolUseLoader, { status: level === "error" ? "error" : "queued" }),
3102
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box_default, { flexGrow: 1, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Text, { color, wrap: "wrap", children: text }) })
3111
3103
  ] });
3112
3104
  }
3113
3105
  function StreamingTurnView({
3114
3106
  turn,
3115
3107
  isRunning
3116
3108
  }) {
3117
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", children: [
3118
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3109
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Box_default, { flexDirection: "column", children: [
3110
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3119
3111
  StreamingArea,
3120
3112
  {
3121
3113
  isRunning,
@@ -3124,12 +3116,12 @@ function StreamingTurnView({
3124
3116
  thinkingMs: turn.thinkingMs
3125
3117
  }
3126
3118
  ),
3127
- turn.tools.map((t) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(StreamingToolRow, { tool: t }, t.toolCallId))
3119
+ turn.tools.map((t) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(StreamingToolRow, { tool: t }, t.toolCallId))
3128
3120
  ] });
3129
3121
  }
3130
3122
  function StreamingToolRow({ tool }) {
3131
3123
  if (tool.status === "running") {
3132
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3124
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3133
3125
  ToolExecution,
3134
3126
  {
3135
3127
  status: "running",
@@ -3139,7 +3131,7 @@ function StreamingToolRow({ tool }) {
3139
3131
  }
3140
3132
  );
3141
3133
  }
3142
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3134
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3143
3135
  ToolExecution,
3144
3136
  {
3145
3137
  status: "done",
@@ -3157,13 +3149,13 @@ function renderBossApp(opts) {
3157
3149
  const resetUI = () => {
3158
3150
  const old = ref.instance;
3159
3151
  if (!old) return;
3160
- process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
3152
+ process.stdout.write("\x1B[2J\x1B[H");
3161
3153
  old.unmount();
3162
- ref.instance = render_default(/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(BossApp, { boss: opts.boss, resetUI }), {
3154
+ ref.instance = render_default(/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BossApp, { boss: opts.boss, resetUI }), {
3163
3155
  exitOnCtrlC: false
3164
3156
  });
3165
3157
  };
3166
- const instance = render_default(/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(BossApp, { boss: opts.boss, resetUI }), {
3158
+ const instance = render_default(/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BossApp, { boss: opts.boss, resetUI }), {
3167
3159
  // Disable Ink's built-in exit-on-Ctrl+C — we need our own double-press
3168
3160
  // handler in BossApp to drive the "Press Ctrl+C again to exit" footer
3169
3161
  // message. With this flag true (the default), Ink kills the process on
@@ -3213,8 +3205,8 @@ function renderBossApp(opts) {
3213
3205
 
3214
3206
  // src/splash.tsx
3215
3207
  init_esm_shims();
3216
- var import_react12 = __toESM(require_react(), 1);
3217
- var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
3208
+ var import_react11 = __toESM(require_react(), 1);
3209
+ var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
3218
3210
  var SPLASH_LINES = [
3219
3211
  " \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 ",
3220
3212
  " \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 ",
@@ -3232,7 +3224,7 @@ function colorForLine(lineIdx, totalLines, offset) {
3232
3224
  return GRADIENT[idx];
3233
3225
  }
3234
3226
  function SplashLogo({ offset }) {
3235
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box_default, { flexDirection: "column", children: SPLASH_LINES.map((line, i) => {
3227
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { flexDirection: "column", children: SPLASH_LINES.map((line, i) => {
3236
3228
  const hue = colorForLine(i, SPLASH_LINES.length, offset);
3237
3229
  const segments = [];
3238
3230
  let buf = "";
@@ -3253,12 +3245,12 @@ function SplashLogo({ offset }) {
3253
3245
  }
3254
3246
  }
3255
3247
  if (buf) segments.push({ text: buf, dim: bufDim });
3256
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Text, { children: segments.map((seg, j) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Text, { color: hue, dimColor: seg.dim, children: seg.text }, j)) }, i);
3248
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { children: segments.map((seg, j) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: hue, dimColor: seg.dim, children: seg.text }, j)) }, i);
3257
3249
  }) });
3258
3250
  }
3259
3251
  function SplashScreen({ caption }) {
3260
- const [offset, setOffset] = (0, import_react12.useState)(0);
3261
- (0, import_react12.useEffect)(() => {
3252
+ const [offset, setOffset] = (0, import_react11.useState)(0);
3253
+ (0, import_react11.useEffect)(() => {
3262
3254
  const timer = setInterval(() => {
3263
3255
  setOffset((o) => o + 1);
3264
3256
  }, 120);
@@ -3266,11 +3258,11 @@ function SplashScreen({ caption }) {
3266
3258
  clearInterval(timer);
3267
3259
  };
3268
3260
  }, []);
3269
- const [size, setSize] = (0, import_react12.useState)(() => ({
3261
+ const [size, setSize] = (0, import_react11.useState)(() => ({
3270
3262
  columns: process.stdout.columns ?? 80,
3271
3263
  rows: process.stdout.rows ?? 24
3272
3264
  }));
3273
- (0, import_react12.useEffect)(() => {
3265
+ (0, import_react11.useEffect)(() => {
3274
3266
  const handler = () => setSize({
3275
3267
  columns: process.stdout.columns ?? 80,
3276
3268
  rows: process.stdout.rows ?? 24
@@ -3282,27 +3274,27 @@ function SplashScreen({ caption }) {
3282
3274
  }, []);
3283
3275
  const SPLASH_BLOCK_HEIGHT = SPLASH_LINES.length + 3;
3284
3276
  const verticalPad = Math.max(0, Math.floor((size.rows - SPLASH_BLOCK_HEIGHT) / 2));
3285
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Box_default, { flexDirection: "column", width: size.columns, height: size.rows, alignItems: "center", children: [
3286
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box_default, { height: verticalPad, flexShrink: 0 }),
3287
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Box_default, { flexDirection: "column", alignItems: "flex-start", flexShrink: 0, children: [
3288
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SplashLogo, { offset }),
3289
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box_default, { width: SPLASH_WIDTH, marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Text, { children: [
3290
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Text, { color: COLORS.text, bold: true, children: BRAND }),
3291
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Text, { color: COLORS.textDim, children: [
3277
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", width: size.columns, height: size.rows, alignItems: "center", children: [
3278
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { height: verticalPad, flexShrink: 0 }),
3279
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box_default, { flexDirection: "column", alignItems: "flex-start", flexShrink: 0, children: [
3280
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SplashLogo, { offset }),
3281
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { width: SPLASH_WIDTH, marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { children: [
3282
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.text, bold: true, children: BRAND }),
3283
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Text, { color: COLORS.textDim, children: [
3292
3284
  " v",
3293
3285
  VERSION
3294
3286
  ] }),
3295
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Text, { color: COLORS.textDim, children: " \xB7 By " }),
3296
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Text, { color: COLORS.text, bold: true, children: AUTHOR })
3287
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.textDim, children: " \xB7 By " }),
3288
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.text, bold: true, children: AUTHOR })
3297
3289
  ] }) }),
3298
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box_default, { width: SPLASH_WIDTH, justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Text, { color: COLORS.textDim, children: caption ?? "Spinning up the orchestrator\u2026" }) })
3290
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box_default, { width: SPLASH_WIDTH, justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Text, { color: COLORS.textDim, children: caption ?? "Spinning up the orchestrator\u2026" }) })
3299
3291
  ] })
3300
3292
  ] });
3301
3293
  }
3302
3294
  function showSplash(opts) {
3303
3295
  const start = Date.now();
3304
3296
  void playSplashAudio();
3305
- const instance = render_default(/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SplashScreen, { caption: opts.caption }));
3297
+ const instance = render_default(/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SplashScreen, { caption: opts.caption }));
3306
3298
  const audioDurationMs = getSplashAudioDurationMs();
3307
3299
  const defaultMinMs = audioDurationMs + 200;
3308
3300
  return {