@skein-code/cli 0.3.3 → 0.3.5
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 +39 -7
- package/dist/cli.js.map +1 -1
- package/package.json +3 -3
package/dist/cli.js
CHANGED
|
@@ -220,7 +220,7 @@ function isSqliteBusy(error) {
|
|
|
220
220
|
// package.json
|
|
221
221
|
var package_default = {
|
|
222
222
|
name: "@skein-code/cli",
|
|
223
|
-
version: "0.3.
|
|
223
|
+
version: "0.3.5",
|
|
224
224
|
description: "A context-first, model-agnostic coding agent with an auditable terminal workspace.",
|
|
225
225
|
type: "module",
|
|
226
226
|
license: "MIT",
|
|
@@ -236,8 +236,8 @@ var package_default = {
|
|
|
236
236
|
},
|
|
237
237
|
skein: {
|
|
238
238
|
releaseNotes: [
|
|
239
|
-
'
|
|
240
|
-
"
|
|
239
|
+
'New ANSI Shadow "SKEIN" logotype gives the entry banner a real product wordmark',
|
|
240
|
+
"Wordmark carries a subtle theme-aware gradient; narrow and ASCII terminals fall back cleanly"
|
|
241
241
|
]
|
|
242
242
|
},
|
|
243
243
|
bin: {
|
|
@@ -12680,11 +12680,33 @@ function ThemePreview({ name, width, glyphs }) {
|
|
|
12680
12680
|
] })
|
|
12681
12681
|
] });
|
|
12682
12682
|
}
|
|
12683
|
+
var BRAND_WORDMARK = [
|
|
12684
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557",
|
|
12685
|
+
"\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551",
|
|
12686
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551",
|
|
12687
|
+
"\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551",
|
|
12688
|
+
"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551",
|
|
12689
|
+
"\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D"
|
|
12690
|
+
];
|
|
12691
|
+
var BRAND_WORDMARK_WIDTH = 37;
|
|
12692
|
+
function blendHex(from, to, t) {
|
|
12693
|
+
const parse = (hex) => [
|
|
12694
|
+
parseInt(hex.slice(1, 3), 16),
|
|
12695
|
+
parseInt(hex.slice(3, 5), 16),
|
|
12696
|
+
parseInt(hex.slice(5, 7), 16)
|
|
12697
|
+
];
|
|
12698
|
+
const [ar, ag, ab] = parse(from);
|
|
12699
|
+
const [br, bg, bb] = parse(to);
|
|
12700
|
+
const mix = (a, b) => Math.round(a + (b - a) * t).toString(16).padStart(2, "0");
|
|
12701
|
+
return `#${mix(ar, br)}${mix(ag, bg)}${mix(ab, bb)}`;
|
|
12702
|
+
}
|
|
12683
12703
|
function Banner({ model, engine, workspace, version, width, glyphs }) {
|
|
12684
12704
|
const theme = useTheme();
|
|
12685
12705
|
const rowWidth = safeWidth(width);
|
|
12686
|
-
const wordmark = `${glyphs.brand} ${PRODUCT_NAME.toUpperCase().split("").join(" ")}`;
|
|
12687
12706
|
const innerWidth = Math.max(1, rowWidth - 4);
|
|
12707
|
+
const useAscii = glyphs.borderStyle === "classic";
|
|
12708
|
+
const showLogotype = !useAscii && innerWidth >= BRAND_WORDMARK_WIDTH;
|
|
12709
|
+
const plainWordmark = `${glyphs.brand} ${PRODUCT_NAME.toUpperCase().split("").join(" ")}`;
|
|
12688
12710
|
const tagline = `v${version} ${glyphs.separator} a terminal coding agent you can see through`;
|
|
12689
12711
|
const metaRows = [
|
|
12690
12712
|
{ label: "model", value: sanitizeInlineTerminalText(model) },
|
|
@@ -12703,8 +12725,16 @@ function Banner({ model, engine, workspace, version, width, glyphs }) {
|
|
|
12703
12725
|
borderColor: theme.border,
|
|
12704
12726
|
paddingX: 1,
|
|
12705
12727
|
children: [
|
|
12706
|
-
/* @__PURE__ */ jsx(
|
|
12707
|
-
|
|
12728
|
+
showLogotype ? /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: BRAND_WORDMARK.map((line, index) => /* @__PURE__ */ jsx(
|
|
12729
|
+
Text,
|
|
12730
|
+
{
|
|
12731
|
+
bold: true,
|
|
12732
|
+
color: blendHex(theme.accent, theme.textStrong, index / (BRAND_WORDMARK.length - 1) * 0.55),
|
|
12733
|
+
children: line
|
|
12734
|
+
},
|
|
12735
|
+
index
|
|
12736
|
+
)) }) : /* @__PURE__ */ jsx(Text, { bold: true, color: theme.accent, children: truncateDisplay(plainWordmark, innerWidth) }),
|
|
12737
|
+
/* @__PURE__ */ jsx(Box, { marginTop: showLogotype ? 1 : 0, children: /* @__PURE__ */ jsx(Text, { color: theme.muted, children: truncateDisplay(tagline, innerWidth) }) }),
|
|
12708
12738
|
/* @__PURE__ */ jsx(Box, { marginTop: 1, flexDirection: "column", children: metaRows.map((row) => /* @__PURE__ */ jsxs(Box, { children: [
|
|
12709
12739
|
/* @__PURE__ */ jsx(Text, { color: theme.dim, children: padDisplay(row.label, labelCol) }),
|
|
12710
12740
|
/* @__PURE__ */ jsx(Text, { color: theme.text, children: truncateDisplay(row.value, Math.max(1, innerWidth - labelCol)) })
|
|
@@ -13685,7 +13715,9 @@ function estimateTimelineItemRows(item, { width, compact = false, showToolOutput
|
|
|
13685
13715
|
if (item.kind === "agent" || item.kind === "agent-message") return rowWidth < 64 ? 2 : 1;
|
|
13686
13716
|
if (item.kind === "workflow") return rowWidth < 64 ? 2 : 1;
|
|
13687
13717
|
if (item.kind === "banner") {
|
|
13688
|
-
|
|
13718
|
+
const wide = rowWidth >= 41;
|
|
13719
|
+
const headRows = wide ? 6 + 1 : 1;
|
|
13720
|
+
return 2 + headRows + 1 + 1 + 3 + 1 + 1 + 1;
|
|
13689
13721
|
}
|
|
13690
13722
|
return 1;
|
|
13691
13723
|
}
|