@quatcode/agent 0.1.2 → 0.2.1
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/LICENSE +21 -0
- package/README.md +57 -0
- package/dist/args.d.ts +13 -1
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +25 -5
- package/dist/args.js.map +1 -1
- package/dist/cli.js +161 -98
- package/dist/cli.js.map +1 -1
- package/dist/clipboard.d.ts +5 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +82 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +1 -7
- package/dist/gate.js.map +1 -1
- package/dist/input.d.ts +61 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +304 -0
- package/dist/input.js.map +1 -0
- package/dist/keyboard.d.ts +68 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +390 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/logo.d.ts +16 -0
- package/dist/logo.d.ts.map +1 -0
- package/dist/logo.js +131 -0
- package/dist/logo.js.map +1 -0
- package/dist/markdown.d.ts +14 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +244 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mcp.d.ts +19 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +206 -0
- package/dist/mcp.js.map +1 -0
- package/dist/models.d.ts +44 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +310 -0
- package/dist/models.js.map +1 -0
- package/dist/picker.d.ts +40 -0
- package/dist/picker.d.ts.map +1 -0
- package/dist/picker.js +171 -0
- package/dist/picker.js.map +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +3 -1
- package/dist/render.js.map +1 -1
- package/dist/screen.d.ts +30 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +123 -0
- package/dist/screen.js.map +1 -0
- package/dist/skills.d.ts +21 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +173 -0
- package/dist/skills.js.map +1 -0
- package/dist/store.d.ts +41 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +192 -1
- package/dist/store.js.map +1 -1
- package/dist/theme.d.ts +86 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +315 -0
- package/dist/theme.js.map +1 -0
- package/dist/tui.d.ts +22 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +2709 -0
- package/dist/tui.js.map +1 -0
- package/dist/turn.d.ts +45 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +198 -0
- package/dist/turn.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +13 -0
- package/dist/version.js.map +1 -0
- package/package.json +22 -6
package/dist/keyboard.js
ADDED
|
@@ -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
|
package/dist/logo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.js","sourceRoot":"","sources":["../src/logo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYnF,MAAM,QAAQ,GAAG;IACf,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;CACvE,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,MAAM,IAAI,GAAG,CAAC,CAAC;AAEf,SAAS,SAAS;IAChB,OAAO;QACL,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,MAAM;QACd,OAAO,CAAC,MAAM;QACd,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,IAAI;KACb,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAAoB;IAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IAC5C,IAAI,QAAQ,GAAG,GAAG;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IACxC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAID,SAAS,UAAU,CAAC,KAAoB;IACtC,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACjC,MAAM,MAAM,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAC3D,IAAI,KAAK,CAAO,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC;IAEF,MAAM,KAAK,GAAG,CACZ,SAAiB,EACjB,SAAiB,EACjB,OAAuD,EACjD,EAAE;QACR,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACjC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC1C,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAW,CAAC;gBAC9B,IAAI,EAAE,KAAK,GAAG;oBAAE,SAAS;gBACzB,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;gBACvC,MAAM,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;gBAClC,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,KAAK;oBAAE,SAAS;gBACvD,MAAM,CAAC,SAAS,CAAY,CAAC,SAAS,CAAC,GAAG;oBACzC,EAAE;oBACF,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;iBAC9B,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACjC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,IAAI;gBAAE,UAAU,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACtF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAoB;IACpC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAgB,EAChB,KAAa,EACb,KAAK,GAAkB,IAAI;IAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,mCAAmC,CAAC;IAEpE,IAAI,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAChF,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpE,OAAO;QACL,GAAG,QAAQ,CAAC,KAAK,CAAC;QAClB,KAAK,QAAQ,CAAC,YAAY,CAAC,EAAE;QAC7B,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAuB,EAAE,KAAe,EAAE,MAAe;IAC3E,IAAI,MAAM;QAAE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAgB,EAChB,OAAsE;IAEtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,UAAU,GACd,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,CAAC;IAEhF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvD,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAK,GAAG,KAAK,CAAC;YACd,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -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"}
|