@quatcode/agent 0.1.1 → 0.2.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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/dist/args.d.ts +13 -1
  4. package/dist/args.d.ts.map +1 -1
  5. package/dist/args.js +25 -5
  6. package/dist/args.js.map +1 -1
  7. package/dist/cli.js +130 -98
  8. package/dist/cli.js.map +1 -1
  9. package/dist/clipboard.d.ts +5 -0
  10. package/dist/clipboard.d.ts.map +1 -0
  11. package/dist/clipboard.js +82 -0
  12. package/dist/clipboard.js.map +1 -0
  13. package/dist/gate.d.ts.map +1 -1
  14. package/dist/gate.js +1 -7
  15. package/dist/gate.js.map +1 -1
  16. package/dist/input.d.ts +56 -0
  17. package/dist/input.d.ts.map +1 -0
  18. package/dist/input.js +283 -0
  19. package/dist/input.js.map +1 -0
  20. package/dist/keyboard.d.ts +68 -0
  21. package/dist/keyboard.d.ts.map +1 -0
  22. package/dist/keyboard.js +390 -0
  23. package/dist/keyboard.js.map +1 -0
  24. package/dist/logo.d.ts +16 -0
  25. package/dist/logo.d.ts.map +1 -0
  26. package/dist/logo.js +131 -0
  27. package/dist/logo.js.map +1 -0
  28. package/dist/markdown.d.ts +14 -0
  29. package/dist/markdown.d.ts.map +1 -0
  30. package/dist/markdown.js +244 -0
  31. package/dist/markdown.js.map +1 -0
  32. package/dist/mcp.d.ts +19 -0
  33. package/dist/mcp.d.ts.map +1 -0
  34. package/dist/mcp.js +206 -0
  35. package/dist/mcp.js.map +1 -0
  36. package/dist/models.d.ts +24 -0
  37. package/dist/models.d.ts.map +1 -0
  38. package/dist/models.js +188 -0
  39. package/dist/models.js.map +1 -0
  40. package/dist/picker.d.ts +40 -0
  41. package/dist/picker.d.ts.map +1 -0
  42. package/dist/picker.js +156 -0
  43. package/dist/picker.js.map +1 -0
  44. package/dist/render.d.ts.map +1 -1
  45. package/dist/render.js +3 -1
  46. package/dist/render.js.map +1 -1
  47. package/dist/screen.d.ts +28 -0
  48. package/dist/screen.d.ts.map +1 -0
  49. package/dist/screen.js +114 -0
  50. package/dist/screen.js.map +1 -0
  51. package/dist/skills.d.ts +21 -0
  52. package/dist/skills.d.ts.map +1 -0
  53. package/dist/skills.js +173 -0
  54. package/dist/skills.js.map +1 -0
  55. package/dist/store.d.ts +31 -1
  56. package/dist/store.d.ts.map +1 -1
  57. package/dist/store.js +192 -1
  58. package/dist/store.js.map +1 -1
  59. package/dist/theme.d.ts +86 -0
  60. package/dist/theme.d.ts.map +1 -0
  61. package/dist/theme.js +315 -0
  62. package/dist/theme.js.map +1 -0
  63. package/dist/tui.d.ts +16 -0
  64. package/dist/tui.d.ts.map +1 -0
  65. package/dist/tui.js +2456 -0
  66. package/dist/tui.js.map +1 -0
  67. package/dist/turn.d.ts +45 -0
  68. package/dist/turn.d.ts.map +1 -0
  69. package/dist/turn.js +198 -0
  70. package/dist/turn.js.map +1 -0
  71. package/dist/version.d.ts +2 -0
  72. package/dist/version.d.ts.map +1 -0
  73. package/dist/version.js +13 -0
  74. package/dist/version.js.map +1 -0
  75. package/package.json +22 -6
@@ -0,0 +1,390 @@
1
+ import { StringDecoder } from "node:string_decoder";
2
+ const CSI_RE = /^\u001b\[([0-9;]*)([A-Za-z~])/;
3
+ const SS3_RE = /^\u001bO([A-Za-z])/;
4
+ export class Keyboard {
5
+ input;
6
+ out;
7
+ decoder = new StringDecoder("utf8");
8
+ pending = "";
9
+ pasting = false;
10
+ pasteBuffer = "";
11
+ handler = null;
12
+ queue = [];
13
+ escapeTimer = null;
14
+ active = false;
15
+ constructor(input = process.stdin, out = process.stdout) {
16
+ this.input = input;
17
+ this.out = out;
18
+ }
19
+ start() {
20
+ if (this.active)
21
+ return;
22
+ this.active = true;
23
+ if (typeof this.out.write === "function")
24
+ this.out.write("\u001b[?2004h");
25
+ if (typeof this.input.setRawMode === "function")
26
+ this.input.setRawMode(true);
27
+ this.input.resume();
28
+ this.input.on("data", this.onData);
29
+ this.out.on("resize", this.onResize);
30
+ }
31
+ stop() {
32
+ if (!this.active)
33
+ return;
34
+ this.active = false;
35
+ this.clearEscapeTimer();
36
+ if (typeof this.out.write === "function")
37
+ this.out.write("\u001b[?2004l");
38
+ this.input.off("data", this.onData);
39
+ this.out.off("resize", this.onResize);
40
+ if (typeof this.input.setRawMode === "function")
41
+ this.input.setRawMode(false);
42
+ this.input.pause();
43
+ this.pending = "";
44
+ this.pasting = false;
45
+ this.pasteBuffer = "";
46
+ this.queue = [];
47
+ }
48
+ setHandler(handler) {
49
+ this.handler = handler;
50
+ if (handler === null) {
51
+ this.clearEscapeTimer();
52
+ return;
53
+ }
54
+ if (this.queue.length > 0) {
55
+ const queued = this.queue;
56
+ this.queue = [];
57
+ handler(queued);
58
+ }
59
+ }
60
+ onData = (chunk) => {
61
+ this.clearEscapeTimer();
62
+ this.pending += typeof chunk === "string" ? chunk : this.decoder.write(chunk);
63
+ this.flush(false);
64
+ };
65
+ onResize = () => {
66
+ this.emit([{ type: "resize" }]);
67
+ };
68
+ emit(keys) {
69
+ if (keys.length === 0)
70
+ return;
71
+ if (this.handler) {
72
+ this.handler(keys);
73
+ return;
74
+ }
75
+ this.queue.push(...keys);
76
+ if (this.queue.length > 256)
77
+ this.queue.splice(0, this.queue.length - 256);
78
+ }
79
+ flush(final) {
80
+ const keys = [];
81
+ let progress = true;
82
+ while (progress && this.pending !== "") {
83
+ progress = this.consumeOne(keys, final);
84
+ }
85
+ this.emit(keys);
86
+ }
87
+ consumeOne(keys, final) {
88
+ const p = this.pending;
89
+ if (this.pasting) {
90
+ const end = p.indexOf("\u001b[201~");
91
+ if (end === -1) {
92
+ this.pasteBuffer += p;
93
+ this.pending = "";
94
+ return false;
95
+ }
96
+ this.pasteBuffer += p.slice(0, end);
97
+ this.pending = p.slice(end + 6);
98
+ if (this.pasteBuffer.length > 0)
99
+ keys.push({ type: "text", text: this.pasteBuffer });
100
+ this.pasteBuffer = "";
101
+ this.pasting = false;
102
+ return true;
103
+ }
104
+ const first = p[0];
105
+ if (first === "\u001b") {
106
+ if (p.length === 1) {
107
+ if (final) {
108
+ this.pending = "";
109
+ keys.push({ type: "escape" });
110
+ return true;
111
+ }
112
+ this.armEscapeTimer();
113
+ return false;
114
+ }
115
+ if (p[1] === "[") {
116
+ const mouse = /^\u001b\[<(\d+);(\d+);(\d+)([Mm])/.exec(p);
117
+ if (mouse) {
118
+ this.pending = p.slice(mouse[0].length);
119
+ const code = Number(mouse[1]);
120
+ const x = Number(mouse[2]);
121
+ const y = Number(mouse[3]);
122
+ const pressed = mouse[4] === "M";
123
+ const wheel = (code & 0x40) !== 0;
124
+ const motion = (code & 0x20) !== 0;
125
+ const button = code & 0x03;
126
+ if (wheel) {
127
+ keys.push({ type: "mouse", kind: (code & 0x01) === 0 ? "wheelup" : "wheeldown" });
128
+ }
129
+ else if (motion && button === 3 && pressed) {
130
+ keys.push({ type: "hover", x, y });
131
+ }
132
+ else if (motion && button === 0) {
133
+ keys.push({ type: "mouse", kind: "drag", x, y });
134
+ }
135
+ else if (button === 0 && pressed) {
136
+ keys.push({ type: "mouse", kind: "press", x, y });
137
+ }
138
+ else if (button === 0 && !pressed) {
139
+ keys.push({ type: "mouse", kind: "release", x, y });
140
+ }
141
+ return true;
142
+ }
143
+ const match = CSI_RE.exec(p);
144
+ if (match) {
145
+ this.pending = p.slice(match[0].length);
146
+ this.applyCsi(match[1] ?? "", match[2], keys);
147
+ return true;
148
+ }
149
+ if (final || p.length > 24) {
150
+ const end = findCsiEnd(p);
151
+ this.pending = end === -1 ? "" : p.slice(end + 1);
152
+ return true;
153
+ }
154
+ return false;
155
+ }
156
+ if (p[1] === "O") {
157
+ const match = SS3_RE.exec(p);
158
+ if (match) {
159
+ this.pending = p.slice(match[0].length);
160
+ this.applyCsi("", match[1], keys);
161
+ return true;
162
+ }
163
+ if (final) {
164
+ this.pending = "";
165
+ keys.push({ type: "escape" });
166
+ return true;
167
+ }
168
+ return false;
169
+ }
170
+ const ch = codePointAt(p, 1);
171
+ if (!ch)
172
+ return false;
173
+ this.pending = p.slice(1 + ch.length);
174
+ keys.push({ type: "meta", ch: ch.value });
175
+ return true;
176
+ }
177
+ const code = first.charCodeAt(0);
178
+ if (code === 13) {
179
+ this.pending = p.slice(1);
180
+ keys.push({ type: "enter" });
181
+ return true;
182
+ }
183
+ if (code === 10) {
184
+ this.pending = p.slice(1);
185
+ keys.push({ type: "control", ch: "j" });
186
+ return true;
187
+ }
188
+ if (code === 9) {
189
+ this.pending = p.slice(1);
190
+ keys.push({ type: "tab" });
191
+ return true;
192
+ }
193
+ if (code === 0) {
194
+ this.pending = p.slice(1);
195
+ keys.push({ type: "control", ch: "space" });
196
+ return true;
197
+ }
198
+ if (code === 127 || code === 8) {
199
+ this.pending = p.slice(1);
200
+ if (code === 8 && process.env.WT_SESSION) {
201
+ keys.push({ type: "control", ch: "w" });
202
+ }
203
+ else {
204
+ keys.push({ type: "backspace" });
205
+ }
206
+ return true;
207
+ }
208
+ if (code >= 1 && code <= 26) {
209
+ this.pending = p.slice(1);
210
+ keys.push({ type: "control", ch: String.fromCharCode(96 + code) });
211
+ return true;
212
+ }
213
+ if (code < 32) {
214
+ this.pending = p.slice(1);
215
+ return true;
216
+ }
217
+ const ch = codePointAt(p, 0);
218
+ if (!ch)
219
+ return false;
220
+ this.pending = p.slice(ch.length);
221
+ keys.push({ type: "text", text: ch.value });
222
+ return true;
223
+ }
224
+ applyCsi(params, finalChar, keys) {
225
+ const segments = params.split(";");
226
+ const modifier = segments.length > 1 ? Number(segments[segments.length - 1]) : 0;
227
+ const ctrl = modifier > 1 && ((modifier - 1) & 4) !== 0;
228
+ switch (finalChar) {
229
+ case "u": {
230
+ const code = Number(segments[0] ?? "");
231
+ const mod = segments[1] !== undefined ? Number(segments[1]) : 1;
232
+ if (Number.isFinite(code) && code > 0)
233
+ this.applyModifiedKey(code, mod || 1, keys);
234
+ break;
235
+ }
236
+ case "A":
237
+ keys.push({ type: "nav", dir: "up", ctrl });
238
+ break;
239
+ case "B":
240
+ keys.push({ type: "nav", dir: "down", ctrl });
241
+ break;
242
+ case "C":
243
+ keys.push({ type: "nav", dir: "right", ctrl });
244
+ break;
245
+ case "D":
246
+ keys.push({ type: "nav", dir: "left", ctrl });
247
+ break;
248
+ case "H":
249
+ keys.push({ type: "nav", dir: "home", ctrl });
250
+ break;
251
+ case "F":
252
+ keys.push({ type: "nav", dir: "end", ctrl });
253
+ break;
254
+ case "~": {
255
+ if (segments[0] === "27" && segments.length >= 3) {
256
+ const mod = Number(segments[1]);
257
+ const code = Number(segments[2]);
258
+ if (Number.isFinite(code) && code > 0)
259
+ this.applyModifiedKey(code, mod || 1, keys);
260
+ break;
261
+ }
262
+ const code = Number.parseInt(params.split(";")[0] ?? "", 10);
263
+ if (code === 1 || code === 7)
264
+ keys.push({ type: "nav", dir: "home", ctrl });
265
+ else if (code === 4 || code === 8)
266
+ keys.push({ type: "nav", dir: "end", ctrl });
267
+ else if (code === 3)
268
+ keys.push({ type: "delete" });
269
+ else if (code === 5)
270
+ keys.push({ type: "nav", dir: "pageup", ctrl });
271
+ else if (code === 6)
272
+ keys.push({ type: "nav", dir: "pagedown", ctrl });
273
+ else if (code === 200)
274
+ this.pasting = true;
275
+ break;
276
+ }
277
+ default:
278
+ break;
279
+ }
280
+ }
281
+ applyModifiedKey(code, modifierValue, keys) {
282
+ const mask = modifierValue - 1;
283
+ const shift = (mask & 1) !== 0;
284
+ const alt = (mask & 2) !== 0;
285
+ const ctrl = (mask & 4) !== 0;
286
+ if (code === 13) {
287
+ keys.push(shift || ctrl ? { type: "newline" } : { type: "enter" });
288
+ return;
289
+ }
290
+ if (code === 9) {
291
+ keys.push({ type: "tab" });
292
+ return;
293
+ }
294
+ if (code === 27) {
295
+ keys.push({ type: "escape" });
296
+ return;
297
+ }
298
+ if (code === 127 || code === 8) {
299
+ keys.push(ctrl || alt ? { type: "control", ch: "w" } : { type: "backspace" });
300
+ return;
301
+ }
302
+ if (code === 3) {
303
+ keys.push(ctrl ? { type: "meta", ch: "d" } : { type: "delete" });
304
+ return;
305
+ }
306
+ if (code === 32 && ctrl) {
307
+ keys.push({ type: "control", ch: "space" });
308
+ return;
309
+ }
310
+ if (ctrl) {
311
+ const letter = code >= 1 && code <= 26
312
+ ? String.fromCharCode(96 + code)
313
+ : String.fromCodePoint(code).toLowerCase();
314
+ if (/^[a-z]$/.test(letter))
315
+ keys.push({ type: "control", ch: letter });
316
+ return;
317
+ }
318
+ if (alt) {
319
+ keys.push({ type: "meta", ch: shift ? shiftedChar(code) : String.fromCodePoint(code) });
320
+ return;
321
+ }
322
+ keys.push({ type: "text", text: shift ? shiftedChar(code) : String.fromCodePoint(code) });
323
+ }
324
+ armEscapeTimer() {
325
+ this.clearEscapeTimer();
326
+ this.escapeTimer = setTimeout(() => {
327
+ this.escapeTimer = null;
328
+ if (this.pending === "\u001b") {
329
+ this.pending = "";
330
+ this.emit([{ type: "escape" }]);
331
+ }
332
+ }, 45);
333
+ if (typeof this.escapeTimer.unref === "function")
334
+ this.escapeTimer.unref();
335
+ }
336
+ clearEscapeTimer() {
337
+ if (this.escapeTimer) {
338
+ clearTimeout(this.escapeTimer);
339
+ this.escapeTimer = null;
340
+ }
341
+ }
342
+ }
343
+ function codePointAt(text, index) {
344
+ if (index >= text.length)
345
+ return null;
346
+ const cp = text.codePointAt(index);
347
+ if (cp === undefined)
348
+ return null;
349
+ const value = String.fromCodePoint(cp);
350
+ return { value, length: value.length };
351
+ }
352
+ function findCsiEnd(text) {
353
+ for (let i = 2; i < text.length; i++) {
354
+ const code = text.charCodeAt(i);
355
+ if (code >= 0x40 && code <= 0x7e)
356
+ return i;
357
+ }
358
+ return -1;
359
+ }
360
+ const SHIFT_MAP = {
361
+ "`": "~",
362
+ "1": "!",
363
+ "2": "@",
364
+ "3": "#",
365
+ "4": "$",
366
+ "5": "%",
367
+ "6": "^",
368
+ "7": "&",
369
+ "8": "*",
370
+ "9": "(",
371
+ "0": ")",
372
+ "-": "_",
373
+ "=": "+",
374
+ "[": "{",
375
+ "]": "}",
376
+ "\\": "|",
377
+ ";": ":",
378
+ "'": "\"",
379
+ ",": "<",
380
+ ".": ">",
381
+ "/": "?",
382
+ };
383
+ function shiftedChar(code) {
384
+ const ch = String.fromCodePoint(code);
385
+ const upper = ch.toUpperCase();
386
+ if (upper !== ch)
387
+ return upper;
388
+ return SHIFT_MAP[ch] ?? ch;
389
+ }
390
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"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"}
package/dist/logo.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ export type BannerInfo = {
2
+ version: string;
3
+ provider?: string;
4
+ model?: string;
5
+ effort?: string;
6
+ dir?: string;
7
+ mode?: string;
8
+ tagline?: string;
9
+ };
10
+ export declare function renderBanner(info: BannerInfo, width: number, sweep?: number | null): string[];
11
+ export declare function animateBanner(info: BannerInfo, options: {
12
+ width: number;
13
+ animate: boolean;
14
+ out?: NodeJS.WriteStream;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=logo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../src/logo.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAgGF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,GAAG,IAAW,GAC1B,MAAM,EAAE,CAgBV;AASD,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAAE,GACrE,OAAO,CAAC,IAAI,CAAC,CAwBf"}
package/dist/logo.js ADDED
@@ -0,0 +1,131 @@
1
+ import { bold, colorOn, fg, italic, palette, stringWidth, tone } from "./theme.js";
2
+ const WORD_ART = [
3
+ " ██████╗ ██╗ ██╗ █████╗ ████████╗ ██████╗ ██████╗ ██████╗ ███████╗",
4
+ "██╔═══██╗██║ ██║██╔══██╗╚══██╔══╝██╔════╝██╔═══██╗██╔══██╗██╔════╝",
5
+ "██║ ██║██║ ██║███████║ ██║ ██║ ██║ ██║██║ ██║█████╗ ",
6
+ "██║▄▄ ██║██║ ██║██╔══██║ ██║ ██║ ██║ ██║██║ ██║██╔══╝ ",
7
+ "╚██████╔╝╚██████╔╝██║ ██║ ██║ ╚██████╗╚██████╔╝██████╔╝███████╗",
8
+ " ╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝",
9
+ ];
10
+ const ART_WIDTH = Math.max(...WORD_ART.map((row) => stringWidth(row)));
11
+ const ART_HEIGHT = WORD_ART.length;
12
+ const ECHO = 2;
13
+ function rowShades() {
14
+ return [
15
+ palette.bone,
16
+ palette.bone,
17
+ palette.silver,
18
+ palette.silver,
19
+ palette.mist,
20
+ palette.mist,
21
+ ];
22
+ }
23
+ function sweepShade(rowIndex, colIndex, sweep) {
24
+ const shades = rowShades();
25
+ const base = shades[rowIndex] ?? palette.silver;
26
+ if (sweep === null)
27
+ return base;
28
+ const distance = Math.abs(colIndex - sweep);
29
+ if (distance < 2.5)
30
+ return palette.bone;
31
+ if (distance < 6)
32
+ return palette.silver;
33
+ return base;
34
+ }
35
+ function composeArt(sweep) {
36
+ const width = ART_WIDTH + ECHO;
37
+ const height = ART_HEIGHT + ECHO;
38
+ const canvas = Array.from({ length: height }, () => new Array(width).fill(null));
39
+ const paint = (rowOffset, colOffset, colorAt) => {
40
+ WORD_ART.forEach((row, rowIndex) => {
41
+ for (let col = 0; col < row.length; col++) {
42
+ const ch = row[col];
43
+ if (ch === " ")
44
+ continue;
45
+ const targetRow = rowIndex + rowOffset;
46
+ const targetCol = col + colOffset;
47
+ if (targetRow >= height || targetCol >= width)
48
+ continue;
49
+ canvas[targetRow][targetCol] = {
50
+ ch,
51
+ color: colorAt(rowIndex, col),
52
+ };
53
+ }
54
+ });
55
+ };
56
+ if (colorOn()) {
57
+ paint(ECHO, ECHO, () => palette.graphite);
58
+ paint(ECHO - 1, ECHO - 1, () => palette.steel);
59
+ }
60
+ paint(0, 0, (rowIndex, colIndex) => sweepShade(rowIndex, colIndex, sweep));
61
+ const lines = canvas.map((cells) => {
62
+ let line = "";
63
+ let lastFilled = -1;
64
+ cells.forEach((cell, index) => {
65
+ if (cell)
66
+ lastFilled = index;
67
+ });
68
+ for (let index = 0; index <= lastFilled; index++) {
69
+ const cell = cells[index];
70
+ line += cell ? fg(cell.color, cell.ch) : " ";
71
+ }
72
+ return line;
73
+ });
74
+ while (lines.length > 0 && (lines[lines.length - 1] ?? "").trim() === "")
75
+ lines.pop();
76
+ return lines;
77
+ }
78
+ function hairline(width) {
79
+ return tone.steel("─".repeat(Math.max(8, width)));
80
+ }
81
+ function wordmark(sweep) {
82
+ return composeArt(sweep).map((line) => ` ${line}`);
83
+ }
84
+ export function renderBanner(info, width, sweep = null) {
85
+ const contentWidth = Math.max(40, width - 2);
86
+ const tagline = info.tagline ?? "AI-native development environment";
87
+ if (contentWidth < ART_WIDTH + ECHO + 2) {
88
+ const left = `${bold(tone.bone("quatcode"))} ${italic(tone.silver("/ agent"))}`;
89
+ return [` ${left}`, ` ${tone.silver(tagline)}`];
90
+ }
91
+ const taglineGap = Math.max(1, contentWidth - stringWidth(tagline));
92
+ return [
93
+ ...wordmark(sweep),
94
+ ` ${hairline(contentWidth)}`,
95
+ ` ${" ".repeat(taglineGap)}${tone.silver(tagline)}`,
96
+ ];
97
+ }
98
+ function writeLines(out, lines, redraw) {
99
+ if (redraw)
100
+ out.write(`\u001b[${lines.length}A`);
101
+ for (const line of lines) {
102
+ out.write(`${redraw ? "\r\u001b[2K" : ""}${line}\n`);
103
+ }
104
+ }
105
+ export async function animateBanner(info, options) {
106
+ const out = options.out ?? process.stdout;
107
+ const lines = renderBanner(info, options.width, null);
108
+ const canAnimate = options.animate && Boolean(out.isTTY) && process.env.QUATCODE_NO_ANIM !== "1";
109
+ if (!canAnimate) {
110
+ out.write(`${lines.join("\n")}\n`);
111
+ return;
112
+ }
113
+ out.write("\u001b[?25l");
114
+ try {
115
+ let first = true;
116
+ for (let sweep = -6; sweep <= ART_WIDTH + 6; sweep += 2) {
117
+ const frame = renderBanner(info, options.width, sweep);
118
+ writeLines(out, frame, !first);
119
+ first = false;
120
+ await sleep(20);
121
+ }
122
+ writeLines(out, lines, true);
123
+ }
124
+ finally {
125
+ out.write("\u001b[?25h");
126
+ }
127
+ }
128
+ function sleep(ms) {
129
+ return new Promise((resolve) => setTimeout(resolve, ms));
130
+ }
131
+ //# sourceMappingURL=logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../src/logo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type SegmentKind = "plain" | "code" | "bold" | "italic" | "dim" | "link";
2
+ export type Segment = {
3
+ text: string;
4
+ kind: SegmentKind;
5
+ };
6
+ export declare function parseInline(text: string): Segment[];
7
+ export declare function styleSegment(segment: Segment): string;
8
+ export declare function wrapSegments(segments: Segment[], firstPrefix: string, nextPrefix: string, width: number): string[];
9
+ export type MarkdownOptions = {
10
+ width: number;
11
+ indent?: number;
12
+ };
13
+ export declare function renderMarkdown(text: string, options: MarkdownOptions): string[];
14
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAChF,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAK1D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAiCnD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAerD;AAeD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAwEV;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAwH/E"}