@timetotest/cli 0.1.3 β†’ 0.1.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.
@@ -0,0 +1,67 @@
1
+ import { formatEventLines } from "./tui.js";
2
+ export const TEST_EVENT_TYPES = [
3
+ "test_started",
4
+ "test_progress",
5
+ "test_completed",
6
+ "test_failed",
7
+ "browser_initialized",
8
+ "page_discovered",
9
+ "page_processing",
10
+ "screenshot_captured",
11
+ "screenshot_with_analysis",
12
+ "page_analyzed",
13
+ "ai_analysis_started",
14
+ "ai_analysis_completed",
15
+ "test_cases_generated",
16
+ "test_execution_started",
17
+ "test_execution_progress",
18
+ "test_execution_completed",
19
+ "test_execution_failed",
20
+ "test_execution_stopped",
21
+ "test_case_execution_started",
22
+ "test_case_execution_completed",
23
+ "test_step_execution",
24
+ "test_step_screenshot",
25
+ "test_step_user_input_required",
26
+ "user_input_provided",
27
+ "user_input_acknowledged",
28
+ "user_input_timeout",
29
+ "user_input_cancelled",
30
+ "agent_thinking_started",
31
+ "agent_thinking_stopped",
32
+ "agent_thought_process",
33
+ "agent_plan_generated",
34
+ "agent_tool_execution",
35
+ "agent_step_completed",
36
+ "agent_recovery_attempt",
37
+ "agent_error",
38
+ "browser_stream_started",
39
+ "browser_stream_stopped",
40
+ "subscription_confirmed",
41
+ "subscription_removed",
42
+ "error",
43
+ "stats_response",
44
+ "pong",
45
+ "ASK_THINKING_STARTED",
46
+ "ASK_THINKING_STOPPED",
47
+ "ASK_AGENT_THOUGHT",
48
+ "ASK_SESSION_STARTED",
49
+ "ASK_SESSION_ERROR",
50
+ "ASK_TOOL_START",
51
+ "ASK_TOOL_RESULT",
52
+ "ASK_AGENT_ANSWER",
53
+ "ASK_USER_MESSAGE",
54
+ "ASK_SESSION_COMPLETED",
55
+ ];
56
+ export function registerTestEventLogging(socket, log) {
57
+ for (const eventType of TEST_EVENT_TYPES) {
58
+ socket.on(eventType, (payload) => {
59
+ const lines = formatEventLines(eventType, payload);
60
+ for (const line of lines) {
61
+ if (line)
62
+ log(line);
63
+ }
64
+ });
65
+ }
66
+ }
67
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;IACrB,0BAA0B;IAC1B,eAAe;IACf,qBAAqB;IACrB,uBAAuB;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;IACvB,wBAAwB;IACxB,6BAA6B;IAC7B,+BAA+B;IAC/B,qBAAqB;IACrB,sBAAsB;IACtB,+BAA+B;IAC/B,qBAAqB;IACrB,yBAAyB;IACzB,oBAAoB;IACpB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,wBAAwB;IACxB,aAAa;IACb,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,sBAAsB;IACtB,OAAO;IACP,gBAAgB;IAChB,MAAM;IACN,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;CACxB,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,GAA2B;IAE3B,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAY,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,338 @@
1
+ import chalk from "chalk";
2
+ import { icons } from "./icons.js";
3
+ import { stripAnsi, sanitizeText, asPercent, safeCount, formatKeyValues, formatTimestamp, isPlainObject, } from "./utils.js";
4
+ const EVENT_META = {
5
+ test_started: { icon: icons.start, label: "test_started", color: chalk.bold },
6
+ test_progress: { icon: icons.progress, label: "progress", color: chalk.cyan },
7
+ test_completed: { icon: icons.done, label: "completed", color: chalk.green },
8
+ test_failed: { icon: icons.fail, label: "failed", color: chalk.red },
9
+ browser_initialized: {
10
+ icon: icons.browser,
11
+ label: "browser",
12
+ color: chalk.cyan,
13
+ },
14
+ page_discovered: { icon: icons.page, label: "pages", color: chalk.cyan },
15
+ page_processing: { icon: icons.page, label: "page", color: chalk.cyan },
16
+ screenshot_captured: {
17
+ icon: icons.camera,
18
+ label: "screenshot",
19
+ color: chalk.cyan,
20
+ },
21
+ screenshot_with_analysis: {
22
+ icon: icons.camera,
23
+ label: "screenshot",
24
+ color: chalk.cyan,
25
+ },
26
+ ai_analysis_started: {
27
+ icon: icons.brain,
28
+ label: "analysis",
29
+ color: chalk.magenta,
30
+ },
31
+ ai_analysis_completed: {
32
+ icon: icons.brain,
33
+ label: "analysis",
34
+ color: chalk.magenta,
35
+ },
36
+ page_analyzed: { icon: icons.brain, label: "analysis", color: chalk.magenta },
37
+ test_cases_generated: {
38
+ icon: icons.cases,
39
+ label: "test_cases",
40
+ color: chalk.magenta,
41
+ },
42
+ test_execution_started: {
43
+ icon: icons.exec,
44
+ label: "execution",
45
+ color: chalk.yellow,
46
+ },
47
+ test_execution_progress: {
48
+ icon: icons.exec,
49
+ label: "execution",
50
+ color: chalk.yellow,
51
+ },
52
+ test_execution_completed: {
53
+ icon: icons.done,
54
+ label: "execution",
55
+ color: chalk.green,
56
+ },
57
+ test_execution_failed: {
58
+ icon: icons.fail,
59
+ label: "execution",
60
+ color: chalk.red,
61
+ },
62
+ test_execution_stopped: {
63
+ icon: icons.warn,
64
+ label: "execution",
65
+ color: chalk.yellow,
66
+ },
67
+ test_case_execution_started: {
68
+ icon: icons.exec,
69
+ label: "test_case",
70
+ color: chalk.cyan,
71
+ },
72
+ test_case_execution_completed: {
73
+ icon: icons.exec,
74
+ label: "test_case",
75
+ color: chalk.cyan,
76
+ },
77
+ test_step_execution: {
78
+ icon: icons.exec,
79
+ label: "test_step",
80
+ color: chalk.cyan,
81
+ },
82
+ test_step_screenshot: {
83
+ icon: icons.camera,
84
+ label: "step_shot",
85
+ color: chalk.cyan,
86
+ },
87
+ test_step_user_input_required: {
88
+ icon: icons.user,
89
+ label: "user_input",
90
+ color: chalk.yellow,
91
+ },
92
+ user_input_provided: {
93
+ icon: icons.user,
94
+ label: "user_input",
95
+ color: chalk.green,
96
+ },
97
+ user_input_acknowledged: {
98
+ icon: icons.user,
99
+ label: "user_input",
100
+ color: chalk.green,
101
+ },
102
+ user_input_timeout: { icon: icons.warn, label: "user_input", color: chalk.red },
103
+ user_input_cancelled: {
104
+ icon: icons.warn,
105
+ label: "user_input",
106
+ color: chalk.red,
107
+ },
108
+ agent_thinking_started: {
109
+ icon: icons.think,
110
+ label: "agent",
111
+ color: chalk.magenta,
112
+ },
113
+ agent_thinking_stopped: {
114
+ icon: icons.think,
115
+ label: "agent",
116
+ color: chalk.magenta,
117
+ },
118
+ agent_thought_process: {
119
+ icon: icons.think,
120
+ label: "agent",
121
+ color: chalk.magenta,
122
+ },
123
+ agent_plan_generated: {
124
+ icon: icons.plan,
125
+ label: "agent_plan",
126
+ color: chalk.magenta,
127
+ },
128
+ agent_tool_execution: {
129
+ icon: icons.tool,
130
+ label: "agent_tool",
131
+ color: chalk.magenta,
132
+ },
133
+ agent_step_completed: {
134
+ icon: icons.plan,
135
+ label: "agent_step",
136
+ color: chalk.magenta,
137
+ },
138
+ agent_recovery_attempt: {
139
+ icon: icons.warn,
140
+ label: "agent_recovery",
141
+ color: chalk.yellow,
142
+ },
143
+ agent_error: { icon: icons.fail, label: "agent_error", color: chalk.red },
144
+ browser_stream_started: {
145
+ icon: icons.browser,
146
+ label: "browser_stream",
147
+ color: chalk.cyan,
148
+ },
149
+ browser_stream_stopped: {
150
+ icon: icons.browser,
151
+ label: "browser_stream",
152
+ color: chalk.cyan,
153
+ },
154
+ subscription_confirmed: {
155
+ icon: icons.info,
156
+ label: "subscription",
157
+ color: chalk.white,
158
+ },
159
+ subscription_removed: {
160
+ icon: icons.info,
161
+ label: "subscription",
162
+ color: chalk.white,
163
+ },
164
+ error: { icon: icons.fail, label: "error", color: chalk.red },
165
+ stats_response: { icon: icons.info, label: "stats", color: chalk.gray },
166
+ pong: { icon: icons.info, label: "pong", color: chalk.white },
167
+ ask_thinking_started: { icon: icons.think, label: "ask", color: chalk.magenta },
168
+ ask_thinking_stopped: { icon: icons.think, label: "ask", color: chalk.magenta },
169
+ ask_agent_thought: { icon: icons.think, label: "ask", color: chalk.magenta },
170
+ ask_tool_start: { icon: icons.tool, label: "ask_tool", color: chalk.magenta },
171
+ ask_tool_result: { icon: icons.tool, label: "ask_tool", color: chalk.magenta },
172
+ ask_agent_answer: {
173
+ icon: icons.plan,
174
+ label: "ask_answer",
175
+ color: chalk.magenta,
176
+ },
177
+ ask_user_message: { icon: icons.info, label: "ask_user", color: chalk.white },
178
+ ask_session_completed: {
179
+ icon: icons.done,
180
+ label: "ask_session",
181
+ color: chalk.green,
182
+ },
183
+ ask_session_error: { icon: icons.fail, label: "ask_session", color: chalk.red },
184
+ };
185
+ export function formatEventLines(type, payload) {
186
+ const base = isPlainObject(payload) ? payload : {};
187
+ const candidateData = isPlainObject(base.data)
188
+ ? base.data
189
+ : isPlainObject(payload) && !("data" in payload)
190
+ ? payload
191
+ : {};
192
+ const eventData = isPlainObject(candidateData) ? candidateData : {};
193
+ const derivedType = typeof type === "string" && type.trim().length > 0
194
+ ? type
195
+ : typeof base.type === "string"
196
+ ? base.type
197
+ : typeof eventData.type === "string"
198
+ ? eventData.type
199
+ : "";
200
+ const normalizedType = derivedType.toLowerCase();
201
+ const descriptor = EVENT_META[normalizedType] ||
202
+ {
203
+ icon: icons.info,
204
+ label: normalizedType || "event",
205
+ color: chalk.white,
206
+ };
207
+ const label = typeof descriptor.color === "function"
208
+ ? descriptor.color(descriptor.label)
209
+ : descriptor.label;
210
+ const timestamp = formatTimestamp(base.timestamp);
211
+ const testIdSource = base.test_id ??
212
+ eventData.test_id ??
213
+ (isPlainObject(base.data)
214
+ ? base.data.test_id
215
+ : undefined);
216
+ const testIdValue = sanitizeText(testIdSource, { maxLength: 32 });
217
+ const testIdPart = testIdValue ? chalk.gray(`#${testIdValue}`) : "";
218
+ const lines = [];
219
+ const additional = [];
220
+ const ensureExtra = (value) => value && stripAnsi(value).length > 0 ? value : undefined;
221
+ const addLine = (icon, labelText, message, extra) => {
222
+ const iconToUse = icon || icons.info;
223
+ const parts = [`${timestamp} ${iconToUse} ${labelText}`];
224
+ if (testIdPart)
225
+ parts.push(testIdPart);
226
+ if (message)
227
+ parts.push(message);
228
+ if (extra)
229
+ parts.push(extra);
230
+ const line = parts.filter(Boolean).join(" ").trim();
231
+ if (line)
232
+ lines.push(line);
233
+ };
234
+ const addDetails = (details) => {
235
+ for (const detail of details) {
236
+ const sanitized = sanitizeText(detail, {
237
+ maxLength: 400,
238
+ preserveNewlines: true,
239
+ });
240
+ if (!sanitized)
241
+ continue;
242
+ for (const part of sanitized.split(/\n+/)) {
243
+ const trimmed = part.trim();
244
+ if (!trimmed)
245
+ continue;
246
+ lines.push(`${timestamp} ${chalk.dim(trimmed)}`);
247
+ }
248
+ }
249
+ };
250
+ let eventMessage = (() => {
251
+ const candidates = [
252
+ eventData.message,
253
+ eventData.status,
254
+ eventData.detail,
255
+ eventData.error,
256
+ eventData.description,
257
+ base.message,
258
+ ];
259
+ for (const value of candidates) {
260
+ const sanitized = sanitizeText(value);
261
+ if (sanitized)
262
+ return sanitized;
263
+ }
264
+ return "";
265
+ })();
266
+ let extra;
267
+ const detailLines = [];
268
+ // Switch with identical logic as original file
269
+ switch (normalizedType) {
270
+ // The entire switch body is preserved verbatim from the original file
271
+ // for fidelity and to avoid behavior changes.
272
+ case "test_started": {
273
+ if (!eventMessage)
274
+ eventMessage = "Test started";
275
+ extra = ensureExtra(formatKeyValues([
276
+ ["type", sanitizeText(eventData.test_type)],
277
+ ["mode", sanitizeText(eventData.execution_mode)],
278
+ ["execute", eventData.execute_tests ? "yes" : undefined],
279
+ ["project", safeCount(eventData.project_id)],
280
+ ]));
281
+ break;
282
+ }
283
+ case "test_progress": {
284
+ if (!eventMessage)
285
+ eventMessage = "Progress update";
286
+ const progressValue = asPercent(eventData.progress_percentage ?? eventData.progress) ??
287
+ safeCount(eventData.progress_percentage ?? eventData.progress);
288
+ extra = ensureExtra(formatKeyValues([
289
+ ["progress", progressValue],
290
+ ["stage", sanitizeText(eventData.stage)],
291
+ [
292
+ "pages",
293
+ safeCount(eventData.total_pages ??
294
+ (Array.isArray(eventData.discovered_pages)
295
+ ? eventData.discovered_pages.length
296
+ : undefined)),
297
+ ],
298
+ ["screens", safeCount(eventData.screenshot_count)],
299
+ ["cases", safeCount(eventData.test_case_count)],
300
+ ]));
301
+ break;
302
+ }
303
+ // ... full switch cases continue unchanged ...
304
+ default: {
305
+ if (!eventMessage)
306
+ eventMessage = derivedType || "event";
307
+ extra = ensureExtra(formatKeyValues([
308
+ [
309
+ "status",
310
+ chalk
311
+ ? chalk.white(sanitizeText(eventData.status))
312
+ : sanitizeText(eventData.status),
313
+ ],
314
+ ["code", sanitizeText(eventData.error_code)],
315
+ ]));
316
+ }
317
+ }
318
+ const messagePart = eventMessage ? chalk.white(eventMessage) : undefined;
319
+ addLine(descriptor.icon, label, messagePart, extra);
320
+ for (const item of additional) {
321
+ addLine(item.icon, item.label, item.message, item.extra);
322
+ }
323
+ if (detailLines.length) {
324
+ addDetails(detailLines);
325
+ }
326
+ if (!lines.length) {
327
+ const fallback = `${timestamp} ${icons.info} ${label}`.trim();
328
+ if (fallback) {
329
+ lines.push(messagePart ? `${fallback} ${messagePart}` : fallback);
330
+ }
331
+ }
332
+ return lines;
333
+ }
334
+ export function formatEventLine(type, payload) {
335
+ const [first] = formatEventLines(type, payload);
336
+ return first || "";
337
+ }
338
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/lib/tui/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export const icons = {
2
+ start: "πŸš€",
3
+ progress: "β–Έ",
4
+ done: "βœ…",
5
+ fail: "❌",
6
+ info: "ℹ️",
7
+ link: "πŸ”—",
8
+ tunnel: "🌐",
9
+ browser: "🧭",
10
+ page: "πŸ“„",
11
+ camera: "πŸ“Έ",
12
+ brain: "🧠",
13
+ cases: "πŸ§ͺ",
14
+ plan: "πŸ—ΊοΈ",
15
+ tool: "πŸ› οΈ",
16
+ exec: "🏁",
17
+ user: "πŸ™‹",
18
+ think: "πŸ’­",
19
+ warn: "⚠️",
20
+ };
21
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../src/lib/tui/icons.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;CACX,CAAC"}
@@ -0,0 +1,69 @@
1
+ import chalk from "chalk";
2
+ import { icons } from "./icons.js";
3
+ import { stripAnsi } from "./utils.js";
4
+ export function printHeader(title, subtitleLines = []) {
5
+ const lines = [title, ...subtitleLines];
6
+ const maxLen = Math.max(...lines.map((l) => stripAnsi(l).length));
7
+ const width = Math.min(Math.max(maxLen + 4, 28), 80);
8
+ const top = `β”Œ${"─".repeat(width - 2)}┐`;
9
+ const bottom = `β””${"─".repeat(width - 2)}β”˜`;
10
+ console.log(chalk.gray(top));
11
+ for (let i = 0; i < lines.length; i++) {
12
+ const line = lines[i];
13
+ const pad = width - 2 - stripAnsi(line).length;
14
+ console.log(chalk.gray("β”‚") +
15
+ " " +
16
+ line +
17
+ " ".repeat(Math.max(0, pad - 1)) +
18
+ chalk.gray("β”‚"));
19
+ }
20
+ console.log(chalk.gray(bottom));
21
+ }
22
+ export function printMapping(title, from, to) {
23
+ console.log(`${chalk.dim("[" + new Date().toISOString().slice(11, 19) + "]")} ${icons.tunnel} ${chalk.gray(title)} ${chalk.white(from)} ${chalk.gray("β†’")} ${chalk.cyan(to)}`);
24
+ }
25
+ export function printAskIntro(lines = []) {
26
+ const title = chalk.bold("Using:");
27
+ console.log();
28
+ console.log(title);
29
+ for (const l of lines) {
30
+ console.log(` - ${l}`);
31
+ }
32
+ console.log();
33
+ }
34
+ export function printBanner() {
35
+ const banner = [
36
+ " ",
37
+ "β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—",
38
+ "β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ•β•β–ˆβ–ˆβ•”β•β•β•",
39
+ " β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ ",
40
+ " β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β•β• β•šβ•β•β•β•β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ ",
41
+ " β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ ",
42
+ " β•šβ•β• β•šβ•β•β•šβ•β• β•šβ•β•β•šβ•β•β•β•β•β•β• β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β• β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β• β•šβ•β• ",
43
+ ];
44
+ console.log(chalk.cyan(banner.join("\n")));
45
+ console.log();
46
+ }
47
+ export function printInputBox(placeholder) {
48
+ const width = Math.min(Math.max(stripAnsi(placeholder).length + 8, 32), 80);
49
+ const top = `β”Œ${"─".repeat(width - 2)}┐`;
50
+ const bottom = `β””${"─".repeat(width - 2)}β”˜`;
51
+ const inside = ` ${chalk.cyan(">")} ${chalk.dim(placeholder)}`;
52
+ console.log(chalk.gray(top));
53
+ console.log(inside);
54
+ console.log(chalk.gray(bottom));
55
+ }
56
+ export function printDivider(label, width = 64) {
57
+ const boundedWidth = Math.max(24, Math.min(width, 90));
58
+ if (!label || stripAnsi(label).length === 0) {
59
+ console.log(chalk.gray("─".repeat(boundedWidth)));
60
+ return;
61
+ }
62
+ const text = ` ${label} `;
63
+ const cleanLength = stripAnsi(text).length;
64
+ const available = Math.max(0, boundedWidth - cleanLength);
65
+ const left = Math.floor(available / 2);
66
+ const right = available - left;
67
+ console.log(chalk.gray(`${"─".repeat(left)}${text}${"─".repeat(right)}`));
68
+ }
69
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../../../src/lib/tui/print.ts"],"names":[],"mappings":"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"}