@pentoshi/clai 4.6.2 → 4.7.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.
Files changed (37) hide show
  1. package/README.md +4 -1
  2. package/dist/app/controllers/session-controller.d.ts +1 -0
  3. package/dist/app/controllers/session-controller.js +9 -7
  4. package/dist/app/controllers/session-controller.js.map +1 -1
  5. package/dist/app/controllers/session-persistence.d.ts +6 -0
  6. package/dist/app/controllers/session-persistence.js +9 -0
  7. package/dist/app/controllers/session-persistence.js.map +1 -1
  8. package/dist/classic/bootstrap/start-classic.d.ts +2 -0
  9. package/dist/classic/bootstrap/start-classic.js +15 -0
  10. package/dist/classic/bootstrap/start-classic.js.map +1 -1
  11. package/dist/index.js +15 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +2 -0
  14. package/dist/tui-v2/bootstrap/start-tui-v2.js +22 -0
  15. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  16. package/dist/ui-core/bootstrap/exit-epilogue.d.ts +22 -0
  17. package/dist/ui-core/bootstrap/exit-epilogue.js +43 -0
  18. package/dist/ui-core/bootstrap/exit-epilogue.js.map +1 -0
  19. package/dist/ui-core/bootstrap/lifecycle.d.ts +9 -0
  20. package/dist/ui-core/bootstrap/lifecycle.js +16 -0
  21. package/dist/ui-core/bootstrap/lifecycle.js.map +1 -1
  22. package/dist/ui-core/bootstrap/session-resume.d.ts +28 -0
  23. package/dist/ui-core/bootstrap/session-resume.js +163 -0
  24. package/dist/ui-core/bootstrap/session-resume.js.map +1 -0
  25. package/dist/ui-core/commands/picker-commands.js +4 -60
  26. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  27. package/dist/ui-core/rendering/exit-summary.d.ts +16 -0
  28. package/dist/ui-core/rendering/exit-summary.js +466 -0
  29. package/dist/ui-core/rendering/exit-summary.js.map +1 -0
  30. package/dist/ui-core/rendering/intro-header.js +6 -2
  31. package/dist/ui-core/rendering/intro-header.js.map +1 -1
  32. package/dist/ui-core/rendering/wordmark.d.ts +14 -8
  33. package/dist/ui-core/rendering/wordmark.js +206 -36
  34. package/dist/ui-core/rendering/wordmark.js.map +1 -1
  35. package/dist/version.generated.d.ts +2 -2
  36. package/dist/version.generated.js +2 -2
  37. package/package.json +1 -1
@@ -1,47 +1,217 @@
1
1
  import chalk from "chalk";
2
- // A 5x7 dot-matrix rendering of "CLAI", kept as plain glyph data so no
3
- // figlet/gradient-string dependency is needed just for a startup banner.
4
- const GLYPHS = {
5
- C: [" ███ ", "█ █", "█ ", "█ ", "█ ", "█ █", " ███ "],
6
- L: ["█ ", "█ ", "█ ", "█ ", "█ ", "█ ", "█████"],
7
- A: [" ███ ", "█ █", "█ █", "█████", "█ █", "█ █", "█ █"],
8
- I: ["█████", " █ ", " █ ", " █ ", " █ ", " █ ", "█████"],
9
- };
10
2
  /**
11
- * Truecolor hex for the top row of the wordmark (chalk.magentaBright) the
12
- * top of the "I". Shared by intro-card + plan/task pane borders.
3
+ * Glyphs are drawn on a square pixel grid and printed two pixel rows per
4
+ * terminal row with half blocks. A terminal cell is about twice as tall as it
5
+ * is wide, so this is what makes a vertical stem and a horizontal bar read as
6
+ * the same weight; one cell per pixel would print bars twice as thick as stems.
7
+ *
8
+ * Two sizes share the design: `compact` (two-pixel strokes, four rows) for
9
+ * inline use, and `large` (three-pixel strokes, six rows) for the intro card,
10
+ * which has a pane to fill.
13
11
  */
12
+ const COMPACT_I = [
13
+ "######",
14
+ "######",
15
+ "..##..",
16
+ "..##..",
17
+ "..##..",
18
+ "..##..",
19
+ "######",
20
+ "######",
21
+ ];
22
+ const COMPACT_GLYPHS = {
23
+ C: [
24
+ ".####.",
25
+ "######",
26
+ "##....",
27
+ "##....",
28
+ "##....",
29
+ "##....",
30
+ "######",
31
+ ".####.",
32
+ ],
33
+ L: ["##...", "##...", "##...", "##...", "##...", "##...", "#####", "#####"],
34
+ A: [
35
+ ".####.",
36
+ "######",
37
+ "##..##",
38
+ "##..##",
39
+ "######",
40
+ "######",
41
+ "##..##",
42
+ "##..##",
43
+ ],
44
+ I: COMPACT_I,
45
+ };
46
+ const LARGE_I = [
47
+ "#########",
48
+ "#########",
49
+ "#########",
50
+ "...###...",
51
+ "...###...",
52
+ "...###...",
53
+ "...###...",
54
+ "...###...",
55
+ "...###...",
56
+ "#########",
57
+ "#########",
58
+ "#########",
59
+ ];
60
+ const LARGE_GLYPHS = {
61
+ C: [
62
+ ".#######.",
63
+ "#########",
64
+ "#########",
65
+ "###......",
66
+ "###......",
67
+ "###......",
68
+ "###......",
69
+ "###......",
70
+ "###......",
71
+ "#########",
72
+ "#########",
73
+ ".#######.",
74
+ ],
75
+ L: [
76
+ "###.....",
77
+ "###.....",
78
+ "###.....",
79
+ "###.....",
80
+ "###.....",
81
+ "###.....",
82
+ "###.....",
83
+ "###.....",
84
+ "###.....",
85
+ "########",
86
+ "########",
87
+ "########",
88
+ ],
89
+ A: [
90
+ ".#######.",
91
+ "#########",
92
+ "#########",
93
+ "###...###",
94
+ "###...###",
95
+ "###...###",
96
+ "#########",
97
+ "#########",
98
+ "#########",
99
+ "###...###",
100
+ "###...###",
101
+ "###...###",
102
+ ],
103
+ I: LARGE_I,
104
+ };
105
+ const SPECS = {
106
+ compact: { rows: 4, gap: 2, glyphs: COMPACT_GLYPHS, fallback: COMPACT_I },
107
+ large: { rows: 6, gap: 2, glyphs: LARGE_GLYPHS, fallback: LARGE_I },
108
+ };
109
+ const ON = "#";
110
+ /** First stop of the wordmark ramp (also the plan/task pane accent). */
14
111
  export const WORDMARK_TOP_HEX = "#FF55FF";
15
- /** Per-row colors, applied top-to-bottom for a subtle vertical gradient. */
16
- const GRADIENT = [
17
- chalk.hex(WORDMARK_TOP_HEX), // top of "I"
18
- chalk.magenta,
19
- chalk.blueBright,
20
- chalk.cyanBright,
21
- chalk.cyan,
22
- chalk.blueBright,
23
- chalk.magenta,
112
+ /**
113
+ * A cool analogous ramp — magenta through violet and blue into the brand cyan.
114
+ * Applied left to right so every cell holds a single hue, which is what lets
115
+ * half blocks carry a gradient at all.
116
+ */
117
+ const RAMP = [
118
+ WORDMARK_TOP_HEX,
119
+ "#A96BFF",
120
+ "#5B8CFF",
121
+ "#2EEBFF",
24
122
  ];
123
+ const RAMP_STEPS = 12;
124
+ function glyphsOf(word, spec) {
125
+ return [...word.toUpperCase()].map((char) => [
126
+ ...(spec.glyphs[char] ?? spec.fallback),
127
+ ]);
128
+ }
25
129
  /** Width (in columns, uncolored) of the rendered wordmark for a given word. */
26
- export function wordmarkWidth(word) {
27
- const letters = word.toUpperCase().split("");
28
- return letters.reduce((w, ch) => w + (GLYPHS[ch]?.[0]?.length ?? 5), 0) +
29
- Math.max(0, letters.length - 1) * 2;
130
+ export function wordmarkWidth(word, size = "compact") {
131
+ const spec = SPECS[size];
132
+ const glyphs = glyphsOf(word, spec);
133
+ const letters = glyphs.reduce((total, glyph) => total + (glyph[0]?.length ?? 0), 0);
134
+ return letters + Math.max(0, glyphs.length - 1) * spec.gap;
135
+ }
136
+ function cell(top, bottom, style) {
137
+ if (style === "ascii")
138
+ return bottom ? ON : " ";
139
+ if (top && bottom)
140
+ return "█";
141
+ if (top)
142
+ return "▀";
143
+ if (bottom)
144
+ return "▄";
145
+ return " ";
146
+ }
147
+ function plainRows(word, style, spec) {
148
+ const glyphs = glyphsOf(word, spec);
149
+ const rows = [];
150
+ for (let row = 0; row < spec.rows; row += 1) {
151
+ const cells = glyphs.map((glyph) => {
152
+ const upper = glyph[row * 2] ?? "";
153
+ const lower = glyph[row * 2 + 1] ?? "";
154
+ const width = Math.max(upper.length, lower.length);
155
+ let out = "";
156
+ for (let column = 0; column < width; column += 1) {
157
+ out += cell(upper[column] === ON, lower[column] === ON, style);
158
+ }
159
+ return out;
160
+ });
161
+ rows.push(cells.join(" ".repeat(spec.gap)));
162
+ }
163
+ return rows;
164
+ }
165
+ function channels(hex) {
166
+ return [1, 3, 5].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16));
167
+ }
168
+ function rampHex(position) {
169
+ const clamped = Math.min(1, Math.max(0, position));
170
+ const span = (RAMP.length - 1) * clamped;
171
+ const index = Math.min(RAMP.length - 2, Math.floor(span));
172
+ const from = channels(RAMP[index] ?? WORDMARK_TOP_HEX);
173
+ const to = channels(RAMP[index + 1] ?? WORDMARK_TOP_HEX);
174
+ const local = span - index;
175
+ const mixed = from.map((value, channel) => Math.round(value + ((to[channel] ?? value) - value) * local));
176
+ return `#${mixed.map((value) => value.toString(16).padStart(2, "0")).join("")}`;
177
+ }
178
+ function columnHex(column, width) {
179
+ if (width <= 1)
180
+ return rampHex(0);
181
+ const step = Math.round((column / (width - 1)) * (RAMP_STEPS - 1));
182
+ return rampHex(step / (RAMP_STEPS - 1));
183
+ }
184
+ function paintRow(row, width) {
185
+ let out = "";
186
+ let run = "";
187
+ let runHex = "";
188
+ const flush = () => {
189
+ if (run.length === 0)
190
+ return;
191
+ out += runHex.length > 0 ? chalk.hex(runHex)(run) : run;
192
+ run = "";
193
+ };
194
+ for (let column = 0; column < row.length; column += 1) {
195
+ const char = row[column] ?? " ";
196
+ const hex = char === " " ? "" : columnHex(column, width);
197
+ if (hex !== runHex) {
198
+ flush();
199
+ runHex = hex;
200
+ }
201
+ run += char;
202
+ }
203
+ flush();
204
+ return out;
30
205
  }
31
206
  /**
32
- * Render `word` as a gradient-colored dot-matrix wordmark, one string per
33
- * row, joined with newlines. Each line is prefixed by `indent` spaces.
207
+ * Render `word` as a gradient pixel wordmark, one string per row, joined with
208
+ * newlines. Each line is prefixed by `indent`.
34
209
  */
35
- export function renderWordmark(word, indent = " ") {
36
- const letters = word.toUpperCase().split("");
37
- const rows = 7;
38
- const lines = [];
39
- for (let r = 0; r < rows; r++) {
40
- const cells = letters
41
- .map((ch) => GLYPHS[ch] ?? GLYPHS.I ?? [])
42
- .map((g) => g[r] ?? "");
43
- lines.push(GRADIENT[r]?.(cells.join(" ")) ?? cells.join(" "));
44
- }
45
- return lines.map((l) => `${indent}${l}`).join("\n");
210
+ export function renderWordmark(word, options = {}) {
211
+ const { indent = " ", style = "block", size = "compact" } = options;
212
+ const width = wordmarkWidth(word, size);
213
+ return plainRows(word, style, SPECS[size])
214
+ .map((row) => `${indent}${paintRow(row, width)}`)
215
+ .join("\n");
46
216
  }
47
217
  //# sourceMappingURL=wordmark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wordmark.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/wordmark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,uEAAuE;AACvE,yEAAyE;AACzE,MAAM,MAAM,GAA6B;IACvC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IAClE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IAClE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IAClE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;CACnE,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,4EAA4E;AAC5E,MAAM,QAAQ,GAAG;IACf,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,aAAa;IAC1C,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,UAAU;IAChB,KAAK,CAAC,UAAU;IAChB,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,UAAU;IAChB,KAAK,CAAC,OAAO;CACd,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAM,GAAG,IAAI;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO;aAClB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"wordmark.js","sourceRoot":"","sources":["../../../src/ui-core/rendering/wordmark.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@
2
2
  * AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
3
3
  * Source of truth: package.json "version".
4
4
  */
5
- export declare const VERSION: "4.6.2";
6
- export declare const VERSION_TAG: "v4.6.2";
5
+ export declare const VERSION: "4.7.0";
6
+ export declare const VERSION_TAG: "v4.7.0";
@@ -2,6 +2,6 @@
2
2
  * AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
3
3
  * Source of truth: package.json "version".
4
4
  */
5
- export const VERSION = "4.6.2";
6
- export const VERSION_TAG = "v4.6.2";
5
+ export const VERSION = "4.7.0";
6
+ export const VERSION_TAG = "v4.7.0";
7
7
  //# sourceMappingURL=version.generated.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pentoshi/clai",
3
- "version": "4.6.2",
3
+ "version": "4.7.0",
4
4
  "description": "A fast, cross-platform AI CLI assistant with ask and agent modes for shell tasks, file operations, and cybersecurity workflows.",
5
5
  "type": "module",
6
6
  "license": "MIT",