zelari-code 2.48.0 → 2.49.0

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.
@@ -39562,7 +39562,7 @@ var CORE_VERSION;
39562
39562
  var init_version = __esm({
39563
39563
  "packages/core/dist/version.js"() {
39564
39564
  "use strict";
39565
- CORE_VERSION = "2.48.0";
39565
+ CORE_VERSION = "2.49.0";
39566
39566
  }
39567
39567
  });
39568
39568
 
@@ -79652,21 +79652,66 @@ function useInputDraft(store6) {
79652
79652
  return useSyncExternalStore(store6.subscribe, store6.get, store6.get);
79653
79653
  }
79654
79654
 
79655
+ // src/cli/components/tuiPalette.ts
79656
+ var TUI_PALETTE = {
79657
+ /** Primary brand accent — emblem/art, prompt caret, identity chips. */
79658
+ brand: "cyan",
79659
+ /** Secondary brand accent — wordmark, council/kraken chips, queue. */
79660
+ brandAlt: "magenta",
79661
+ /** Positive state — ok, done, build phase, read-only tools. */
79662
+ success: "green",
79663
+ /** Attention / in-progress — plan phase, timers, writes, todos. */
79664
+ warn: "yellow",
79665
+ /** Failure — errors, destructive shell tools, kraken mode. */
79666
+ danger: "red",
79667
+ /** Neutral information — paths, context meter. */
79668
+ info: "blue",
79669
+ /** De-emphasized text — hints, idle state. */
79670
+ muted: "gray",
79671
+ /** Idle border of the input surfaces. */
79672
+ border: "gray",
79673
+ /** Border of the surface that currently owns the keyboard. */
79674
+ borderFocus: "cyan",
79675
+ /** Default foreground for labeled items with no state attached. */
79676
+ text: "white"
79677
+ };
79678
+ function modeColor(mode) {
79679
+ if (mode === "council") return TUI_PALETTE.brandAlt;
79680
+ if (mode === "zelari") return TUI_PALETTE.success;
79681
+ if (mode === "kraken") return TUI_PALETTE.danger;
79682
+ return TUI_PALETTE.brand;
79683
+ }
79684
+
79655
79685
  // src/cli/components/InputBar.tsx
79656
79686
  function InputBarImpl({ draft, onSubmit, disabled }) {
79657
79687
  const value = useInputDraft(draft);
79658
79688
  const onSubmitRef = React.useRef(onSubmit);
79659
79689
  onSubmitRef.current = onSubmit;
79660
79690
  const stableSubmit = React.useCallback((v) => onSubmitRef.current(v), []);
79661
- return /* @__PURE__ */ React.createElement(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "cyan", bold: true }, "\u276F "), /* @__PURE__ */ React.createElement(
79662
- TextInput,
79663
- {
79664
- value,
79665
- onChange: draft.set,
79666
- onSubmit: stableSubmit,
79667
- placeholder: disabled ? "..." : "Prompt, /skills, or @path"
79668
- }
79669
- ));
79691
+ return (
79692
+ // TUI palette: while mounted, this bar is the surface App routes keys to
79693
+ // (the picker swaps in <SelectList> otherwise), so "focus" is the only
79694
+ // signal available here — `disabled`, i.e. a run in flight. No new prop and
79695
+ // no new state is introduced to compute it.
79696
+ /* @__PURE__ */ React.createElement(
79697
+ Box,
79698
+ {
79699
+ borderStyle: "single",
79700
+ borderColor: disabled ? TUI_PALETTE.border : TUI_PALETTE.borderFocus,
79701
+ paddingX: 1
79702
+ },
79703
+ /* @__PURE__ */ React.createElement(Text, { color: TUI_PALETTE.brand, bold: true }, "\u276F "),
79704
+ /* @__PURE__ */ React.createElement(
79705
+ TextInput,
79706
+ {
79707
+ value,
79708
+ onChange: draft.set,
79709
+ onSubmit: stableSubmit,
79710
+ placeholder: disabled ? "..." : "Prompt, /skills, or @path"
79711
+ }
79712
+ )
79713
+ )
79714
+ );
79670
79715
  }
79671
79716
  function inputBarPropsEqual(prev2, next) {
79672
79717
  return prev2.draft === next.draft && prev2.disabled === next.disabled;
@@ -79687,12 +79732,13 @@ import React2 from "react";
79687
79732
  import { Box as Box2, Text as Text2 } from "ink";
79688
79733
  import { useStdout } from "ink";
79689
79734
  function borderColor(toolName, ok) {
79690
- if (ok === false) return "red";
79735
+ if (ok === false) return TUI_PALETTE.danger;
79691
79736
  const lower = toolName.toLowerCase();
79692
- if (lower.includes("read") || lower === "cat" || lower.includes("grep") || lower.includes("search")) return "green";
79693
- if (lower.includes("write") || lower.includes("edit")) return "yellow";
79694
- if (lower === "bash" || lower === "shell" || lower === "exec") return "red";
79695
- return "cyan";
79737
+ if (lower.includes("read") || lower === "cat" || lower.includes("grep") || lower.includes("search"))
79738
+ return TUI_PALETTE.success;
79739
+ if (lower.includes("write") || lower.includes("edit")) return TUI_PALETTE.warn;
79740
+ if (lower === "bash" || lower === "shell" || lower === "exec") return TUI_PALETTE.danger;
79741
+ return TUI_PALETTE.brand;
79696
79742
  }
79697
79743
  function ToolOutputImpl(props) {
79698
79744
  const { toolName, summary, body, ok, durationMs, live = false } = props;
@@ -79751,7 +79797,17 @@ function renderMessage(m, live = false) {
79751
79797
  }
79752
79798
  );
79753
79799
  }
79754
- return /* @__PURE__ */ React3.createElement(Box3, { key: m.id, flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React3.createElement(Text3, { color: m.role === "user" ? "cyan" : m.role === "assistant" ? "green" : "yellow", bold: true }, m.role === "user" ? "\u276F" : m.role === "assistant" ? "\u25C6" : "\u2139", " ", m.role, m.role === "assistant" && m.memberName ? /* @__PURE__ */ React3.createElement(Text3, { color: "magenta" }, " \xB7 ", m.memberName) : null), /* @__PURE__ */ React3.createElement(Box3, { marginLeft: 2 }, /* @__PURE__ */ React3.createElement(Text3, null, m.content)));
79800
+ return /* @__PURE__ */ React3.createElement(Box3, { key: m.id, flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React3.createElement(
79801
+ Text3,
79802
+ {
79803
+ color: m.role === "user" ? TUI_PALETTE.brand : m.role === "assistant" ? TUI_PALETTE.success : TUI_PALETTE.warn,
79804
+ bold: true
79805
+ },
79806
+ m.role === "user" ? "\u276F" : m.role === "assistant" ? "\u25C6" : "\u2139",
79807
+ " ",
79808
+ m.role,
79809
+ m.role === "assistant" && m.memberName ? /* @__PURE__ */ React3.createElement(Text3, { color: TUI_PALETTE.brandAlt }, " \xB7 ", m.memberName) : null
79810
+ ), /* @__PURE__ */ React3.createElement(Box3, { marginLeft: 2 }, /* @__PURE__ */ React3.createElement(Text3, null, m.content)));
79755
79811
  }
79756
79812
  function ChatStreamImpl({ messages }) {
79757
79813
  return /* @__PURE__ */ React3.createElement(Box3, { flexDirection: "column", flexGrow: 1, paddingX: 1 }, messages.length === 0 ? /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Ready. Type a prompt or /skill <name> to invoke a skill.") : messages.map((m) => renderMessage(m)));
@@ -79854,8 +79910,8 @@ function StatusBarImpl({
79854
79910
  }) {
79855
79911
  const ctxLabel = contextLimit > 0 ? `${formatTokens(contextUsed)}/${formatTokens(contextLimit)}` : contextUsed > 0 ? formatTokens(contextUsed) : null;
79856
79912
  const modeLabel = mode === "council" ? "council" : mode === "zelari" ? "zelari" : "kraken";
79857
- const modeColor = mode === "council" ? "magenta" : mode === "zelari" ? "green" : "red";
79858
- return /* @__PURE__ */ React6.createElement(Box5, { paddingX: 1, width: "100%", justifyContent: "space-between", gap: 2 }, /* @__PURE__ */ React6.createElement(Box5, { flexShrink: 2 }, /* @__PURE__ */ React6.createElement(Text6, { wrap: "truncate" }, /* @__PURE__ */ React6.createElement(Text6, { color: sessionActive ? "green" : "gray" }, sessionActive ? "\u25CF" : "\u25CB"), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: phase2 === "plan" ? "yellow" : "green" }, phase2 === "plan" ? "\u25C7 plan" : "\u25C6 build"), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: modeColor }, modeLabel), verify ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: verify.tone }, verify.label)) : null, permissions ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: permissions.tone }, permissions.label)) : null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), jail ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: jail.tone }, jail.label)) : null, /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: "cyan" }, provider), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, null, model), cwd ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { color: "blue" }, cwd)) : null)), /* @__PURE__ */ React6.createElement(Box5, { flexShrink: 1 }, /* @__PURE__ */ React6.createElement(Text6, { wrap: "truncate" }, busy && elapsedMs !== null ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Spinner, { color: "yellow" }), /* @__PURE__ */ React6.createElement(Text6, { color: "yellow" }, " ", formatDuration(elapsedMs)), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : lastMs !== null ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, "last ", formatDuration(lastMs)), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, queueCount > 0 ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: "magenta" }, "queue ", queueCount), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, todoSummary ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: "yellow" }, todoSummary), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, krakenLive ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: "magenta" }, krakenLive), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, krakenGraph ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: "magenta" }, krakenGraph), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, ctxLabel ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: "cyan" }, ctxLabel), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, costUsd > 0 ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: "green" }, formatCost(costUsd)), cachedTokens > 0 ? /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " (", formatTokens(cachedTokens), " cached)") : null, cacheHitRate > 0 ? /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " ", Math.round(cacheHitRate * 100), "% hit") : null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, "session ", sessionId2))));
79913
+ const modeTone = modeColor(modeLabel);
79914
+ return /* @__PURE__ */ React6.createElement(Box5, { paddingX: 1, width: "100%", justifyContent: "space-between", gap: 2 }, /* @__PURE__ */ React6.createElement(Box5, { flexShrink: 2 }, /* @__PURE__ */ React6.createElement(Text6, { wrap: "truncate" }, /* @__PURE__ */ React6.createElement(Text6, { color: sessionActive ? TUI_PALETTE.success : TUI_PALETTE.muted }, sessionActive ? "\u25CF" : "\u25CB"), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: phase2 === "plan" ? TUI_PALETTE.warn : TUI_PALETTE.success }, phase2 === "plan" ? "\u25C7 plan" : "\u25C6 build"), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: modeTone }, modeLabel), verify ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: verify.tone }, verify.label)) : null, permissions ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: permissions.tone }, permissions.label)) : null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), jail ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: jail.tone }, jail.label)) : null, /* @__PURE__ */ React6.createElement(Text6, { bold: true, color: TUI_PALETTE.brand }, provider), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, null, model), cwd ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 "), /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.info }, cwd)) : null)), /* @__PURE__ */ React6.createElement(Box5, { flexShrink: 1 }, /* @__PURE__ */ React6.createElement(Text6, { wrap: "truncate" }, busy && elapsedMs !== null ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Spinner, { color: TUI_PALETTE.warn }), /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.warn }, " ", formatDuration(elapsedMs)), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : lastMs !== null ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, "last ", formatDuration(lastMs)), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, queueCount > 0 ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.brandAlt }, "queue ", queueCount), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, todoSummary ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.warn }, todoSummary), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, krakenLive ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.brandAlt }, krakenLive), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, krakenGraph ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.brandAlt }, krakenGraph), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, ctxLabel ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.brand }, ctxLabel), /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, costUsd > 0 ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(Text6, { color: TUI_PALETTE.success }, formatCost(costUsd)), cachedTokens > 0 ? /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " (", formatTokens(cachedTokens), " cached)") : null, cacheHitRate > 0 ? /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " ", Math.round(cacheHitRate * 100), "% hit") : null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, " \xB7 ")) : null, /* @__PURE__ */ React6.createElement(Text6, { dimColor: true }, "session ", sessionId2))));
79859
79915
  }
79860
79916
  function statusChipPropsEqual(prev2, next) {
79861
79917
  if (prev2 === next) return true;
@@ -79903,10 +79959,23 @@ function SelectList({
79903
79959
  const start = windowStart(index, items.length, maxVisible);
79904
79960
  const visible = items.slice(start, start + maxVisible);
79905
79961
  const below = items.length - (start + visible.length);
79906
- return /* @__PURE__ */ React7.createElement(Box6, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1 }, /* @__PURE__ */ React7.createElement(Text7, { bold: true, color: "cyan" }, title), start > 0 && /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, " \u2191 ", start, " more"), visible.map((item, i) => {
79907
- const selected = start + i === index;
79908
- return /* @__PURE__ */ React7.createElement(Text7, { key: item.value, wrap: "truncate", color: selected ? "cyan" : void 0 }, selected ? "\u276F " : " ", /* @__PURE__ */ React7.createElement(Text7, { bold: selected }, item.label), item.current ? /* @__PURE__ */ React7.createElement(Text7, { color: "green" }, " \u2713") : null, item.hint ? /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, " ", item.hint) : null);
79909
- }), below > 0 && /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, " \u2193 ", below, " more"), /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, "\u2191/\u2193 move \xB7 enter select \xB7 esc cancel"));
79962
+ return /* @__PURE__ */ React7.createElement(
79963
+ Box6,
79964
+ {
79965
+ flexDirection: "column",
79966
+ borderStyle: "round",
79967
+ borderColor: TUI_PALETTE.borderFocus,
79968
+ paddingX: 1
79969
+ },
79970
+ /* @__PURE__ */ React7.createElement(Text7, { bold: true, color: TUI_PALETTE.brand }, title),
79971
+ start > 0 && /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, " \u2191 ", start, " more"),
79972
+ visible.map((item, i) => {
79973
+ const selected = start + i === index;
79974
+ return /* @__PURE__ */ React7.createElement(Text7, { key: item.value, wrap: "truncate", color: selected ? TUI_PALETTE.brand : void 0 }, selected ? "\u276F " : " ", /* @__PURE__ */ React7.createElement(Text7, { bold: selected }, item.label), item.current ? /* @__PURE__ */ React7.createElement(Text7, { color: TUI_PALETTE.success }, " \u2713") : null, item.hint ? /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, " ", item.hint) : null);
79975
+ }),
79976
+ below > 0 && /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, " \u2193 ", below, " more"),
79977
+ /* @__PURE__ */ React7.createElement(Text7, { dimColor: true }, "\u2191/\u2193 move \xB7 enter select \xB7 esc cancel")
79978
+ );
79910
79979
  }
79911
79980
 
79912
79981
  // src/cli/components/Sidebar.tsx
@@ -79954,12 +80023,12 @@ function Sidebar({ version: version2, changes, rows }) {
79954
80023
  flexDirection: "column",
79955
80024
  width: SIDEBAR_WIDTH,
79956
80025
  borderStyle: "single",
79957
- borderColor: "gray",
80026
+ borderColor: TUI_PALETTE.border,
79958
80027
  paddingX: 1,
79959
80028
  flexShrink: 0
79960
80029
  },
79961
- showEmblem && /* @__PURE__ */ React8.createElement(Box7, { justifyContent: "center" }, /* @__PURE__ */ React8.createElement(Text8, { color: "cyan" }, EMBLEM_BRAILLE)),
79962
- /* @__PURE__ */ React8.createElement(Box7, { justifyContent: "center" }, /* @__PURE__ */ React8.createElement(Text8, { bold: true, color: "white" }, "ZELARI CODE")),
80030
+ showEmblem && /* @__PURE__ */ React8.createElement(Box7, { justifyContent: "center" }, /* @__PURE__ */ React8.createElement(Text8, { color: TUI_PALETTE.brand }, EMBLEM_BRAILLE)),
80031
+ /* @__PURE__ */ React8.createElement(Box7, { justifyContent: "center" }, /* @__PURE__ */ React8.createElement(Text8, { bold: true, color: TUI_PALETTE.brandAlt }, "ZELARI CODE")),
79963
80032
  /* @__PURE__ */ React8.createElement(Box7, { justifyContent: "center" }, /* @__PURE__ */ React8.createElement(Text8, { dimColor: true }, "v", version2, changes.branch ? ` \xB7 ${truncatePath(changes.branch, 12)}` : "")),
79964
80033
  /* @__PURE__ */ React8.createElement(Text8, { dimColor: true }, "\u2500".repeat(innerWidth)),
79965
80034
  !changes.isRepo ? /* @__PURE__ */ React8.createElement(Text8, { dimColor: true, italic: true }, "not a git repo") : changes.files.length === 0 ? /* @__PURE__ */ React8.createElement(Text8, { dimColor: true, italic: true }, "no changes") : /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(Text8, { dimColor: true }, "changes (", changes.files.length, ")"), visible.map((f) => /* @__PURE__ */ React8.createElement(FileRow, { key: f.path, file: f, pathWidth: innerWidth - 10 })), hidden > 0 && /* @__PURE__ */ React8.createElement(Text8, { dimColor: true }, " +", hidden, " more\u2026"))
@@ -79967,7 +80036,7 @@ function Sidebar({ version: version2, changes, rows }) {
79967
80036
  }
79968
80037
  function FileRow({ file: file2, pathWidth }) {
79969
80038
  const name = truncatePath(file2.path, Math.max(6, pathWidth));
79970
- return /* @__PURE__ */ React8.createElement(Box7, null, /* @__PURE__ */ React8.createElement(Text8, { wrap: "truncate" }, /* @__PURE__ */ React8.createElement(Text8, { color: file2.untracked ? "yellow" : "white" }, name), file2.untracked ? /* @__PURE__ */ React8.createElement(Text8, { color: "yellow" }, " new") : /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(Text8, { color: "green" }, " +", file2.added ?? "\xB7"), /* @__PURE__ */ React8.createElement(Text8, { color: "red" }, " -", file2.removed ?? "\xB7"))));
80039
+ return /* @__PURE__ */ React8.createElement(Box7, null, /* @__PURE__ */ React8.createElement(Text8, { wrap: "truncate" }, /* @__PURE__ */ React8.createElement(Text8, { color: file2.untracked ? TUI_PALETTE.warn : TUI_PALETTE.text }, name), file2.untracked ? /* @__PURE__ */ React8.createElement(Text8, { color: TUI_PALETTE.warn }, " new") : /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(Text8, { color: TUI_PALETTE.success }, " +", file2.added ?? "\xB7"), /* @__PURE__ */ React8.createElement(Text8, { color: TUI_PALETTE.danger }, " -", file2.removed ?? "\xB7"))));
79971
80040
  }
79972
80041
 
79973
80042
  // src/cli/components/StartupBanner.tsx
@@ -79979,7 +80048,7 @@ function StartupBanner({
79979
80048
  model,
79980
80049
  cwd
79981
80050
  }) {
79982
- return /* @__PURE__ */ React9.createElement(Box8, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React9.createElement(Text9, { color: "cyan" }, "zelari-code v", version2, " \u2014 ", providerId, "/", model), /* @__PURE__ */ React9.createElement(Text9, { dimColor: true }, "cwd: ", cwd), /* @__PURE__ */ React9.createElement(Text9, { dimColor: true }, "/help \xB7 /plan \xB7 /build \xB7 /view-plan \xB7 shift+tab mode"));
80051
+ return /* @__PURE__ */ React9.createElement(Box8, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React9.createElement(Text9, { color: TUI_PALETTE.brand }, "zelari-code ", /* @__PURE__ */ React9.createElement(Text9, { color: TUI_PALETTE.brandAlt }, "v", version2), " \u2014 ", providerId, "/", model), /* @__PURE__ */ React9.createElement(Text9, { dimColor: true }, "cwd: ", cwd), /* @__PURE__ */ React9.createElement(Text9, { dimColor: true }, "/help \xB7 /plan \xB7 /build \xB7 /view-plan \xB7 shift+tab mode"));
79983
80052
  }
79984
80053
 
79985
80054
  // src/cli/app.tsx
@@ -88907,8 +88976,8 @@ function Splash({ onDone, version: version2 }) {
88907
88976
  width: columns,
88908
88977
  height: rows - 1
88909
88978
  },
88910
- /* @__PURE__ */ React11.createElement(Text11, { color: "cyan" }, picked.art),
88911
- /* @__PURE__ */ React11.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React11.createElement(Text11, { bold: true, color: "white" }, "Z E L A R I C O D E")),
88979
+ /* @__PURE__ */ React11.createElement(Text11, { color: TUI_PALETTE.brand }, picked.art),
88980
+ /* @__PURE__ */ React11.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React11.createElement(Text11, { bold: true, color: TUI_PALETTE.brandAlt }, "Z E L A R I C O D E")),
88912
88981
  !picked.compact && /* @__PURE__ */ React11.createElement(Text11, { dimColor: true }, `${version2 ? `v${version2} \u2014 ` : ""}N-THEM Studio`),
88913
88982
  !picked.compact && /* @__PURE__ */ React11.createElement(Text11, { dimColor: true, italic: true }, "press any key to skip")
88914
88983
  );