@easbot/terminal 0.3.11 → 0.3.13

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/index.d.ts CHANGED
@@ -14,6 +14,8 @@ declare const LOBSTER_PALETTE: {
14
14
  readonly error: "#E23D2D";
15
15
  readonly muted: "#8B7F77";
16
16
  };
17
+ type LobsterPalette = typeof LOBSTER_PALETTE;
18
+ type LobsterPaletteKey = keyof LobsterPalette;
17
19
 
18
20
  declare const theme: {
19
21
  readonly accent: chalk.ChalkInstance;
@@ -39,7 +41,8 @@ declare function formatHeading(title: string): string;
39
41
  declare function formatKeyValue(key: string, value: string, keyWidth?: number): string;
40
42
  declare function formatCommandExample(command: string, description?: string): string;
41
43
  declare function formatListItem(icon: string, text: string, description?: string): string;
42
- declare function formatStatus(status: 'pending' | 'running' | 'success' | 'error' | 'skipped', message: string): string;
44
+ type StatusKind = 'pending' | 'running' | 'success' | 'error' | 'skipped';
45
+ declare function formatStatus(status: StatusKind, message: string): string;
43
46
  declare function formatSeparator(width?: number, char?: string): string;
44
47
  declare function formatEmptyMessage(message: string): string;
45
48
  declare function formatCount(count: number, singular: string, plural?: string): string;
@@ -51,10 +54,11 @@ declare function shortenHomePath(input: string): string;
51
54
  declare function shortenHomeInString(input: string): string;
52
55
  declare function displayPath(input: string): string;
53
56
  declare function displayString(input: string): string;
54
- declare function formatTerminalLink(label: string, url: string, opts?: {
57
+ type FormatTerminalLinkOptions = {
55
58
  fallback?: string;
56
59
  force?: boolean;
57
- }): string;
60
+ };
61
+ declare function formatTerminalLink(label: string, url: string, opts?: FormatTerminalLinkOptions, isTTY?: boolean): string;
58
62
 
59
63
  declare function resolveEffectiveHomeDir(env?: NodeJS.ProcessEnv, homedir?: () => string): string | undefined;
60
64
  declare function resolveRequiredHomeDir(env?: NodeJS.ProcessEnv, homedir?: () => string): string;
@@ -64,21 +68,220 @@ declare function expandHomePrefix(input: string, opts?: {
64
68
  homedir?: () => string;
65
69
  }): string;
66
70
 
67
- declare const DOCS_ROOT = "https://docs.openclaw.ai";
68
- declare function formatDocsLink(path: string, label?: string, opts?: {
71
+ declare function formatRootedLink(root: string, path: string, label?: string, opts?: {
69
72
  fallback?: string;
70
73
  force?: boolean;
71
- }): string;
72
- declare function formatDocsRootLink(label?: string): string;
74
+ }, isTTY?: boolean): string;
75
+ declare function formatRootLink(root: string, label?: string, isTTY?: boolean): string;
73
76
 
77
+ interface JsonEnvelope<T> {
78
+ ok: boolean;
79
+ data: T;
80
+ meta?: Record<string, unknown>;
81
+ }
82
+ declare function wrapJson<T>(data: T, meta?: Record<string, unknown>, ok?: boolean): JsonEnvelope<T>;
83
+ declare function wrapError<T = {
84
+ reason: string;
85
+ }>(data: T, meta?: Record<string, unknown>): JsonEnvelope<T>;
86
+ declare function emitJson<T>(envelope: JsonEnvelope<T>, indent?: number): void;
87
+ declare function emitCommandJson<T>(envelope: JsonEnvelope<T>): void;
74
88
  declare function emitJsonOk(data: unknown, meta?: Record<string, unknown>): void;
75
89
  declare function emitJsonError(code: string, message: string): void;
76
90
 
77
- declare function wrapNoteMessage(message: string, options?: {
91
+ type WrapNoteMessageOptions = {
78
92
  maxWidth?: number;
79
93
  columns?: number;
80
- }): string;
81
- declare function note(message: string, title?: string): void;
94
+ };
95
+ declare function wrapNoteMessage(message: string, options?: WrapNoteMessageOptions): string;
96
+ type NoteOptions = {
97
+ columns?: number;
98
+ maxWidth?: number;
99
+ };
100
+ declare function note(message: string, title?: string, options?: NoteOptions): void;
101
+
102
+ interface PrintHumanOptions {
103
+ boxed?: boolean;
104
+ title?: string;
105
+ outro?: string;
106
+ skipOutro?: boolean;
107
+ empty?: string;
108
+ emptyTitle?: string;
109
+ }
110
+ declare function printHuman(lines: string[], opts?: PrintHumanOptions): void;
111
+ declare function formatPrintHuman(lines: string[], opts?: PrintHumanOptions): string;
112
+ interface RenderLinesGroup {
113
+ key?: string;
114
+ rows: string[];
115
+ detail?: string;
116
+ }
117
+ interface RenderLinesOptions {
118
+ title: string;
119
+ groups?: RenderLinesGroup[];
120
+ footer?: string[];
121
+ flat?: string[];
122
+ }
123
+ declare function renderLines(opts: RenderLinesOptions): string;
124
+ declare function printRenderLines(opts: RenderLinesOptions): void;
125
+ declare function formatListTruncated(items: string[], maxShow?: number): string;
126
+ declare const formatList: typeof formatListTruncated;
127
+
128
+ type ColorFn$2 = (text: string) => string;
129
+ declare namespace Loader {
130
+ interface IndicatorOptions {
131
+ frames?: string[];
132
+ intervalMs?: number;
133
+ }
134
+ interface Options {
135
+ message?: string;
136
+ spinnerColor?: ColorFn$2;
137
+ messageColor?: ColorFn$2;
138
+ indicator?: IndicatorOptions;
139
+ }
140
+ interface Instance {
141
+ start(): void;
142
+ stop(): void;
143
+ isRunning(): boolean;
144
+ line(): string;
145
+ setMessage(message: string): void;
146
+ setIndicator(indicator?: IndicatorOptions): void;
147
+ }
148
+ function create(options?: Options): Instance;
149
+ }
150
+
151
+ declare namespace Search$1 {
152
+ interface Item<T> {
153
+ value: T;
154
+ label: string;
155
+ hint?: string;
156
+ }
157
+ interface LockedSection<T> {
158
+ title: string;
159
+ items: Item<T>[];
160
+ hiddenCount?: number;
161
+ }
162
+ interface MultiselectOptions<T> {
163
+ message: string;
164
+ items: Item<T>[];
165
+ maxVisible?: number;
166
+ initialSelected?: T[];
167
+ required?: boolean;
168
+ lockedSection?: LockedSection<T>;
169
+ isTTY?: boolean;
170
+ }
171
+ const cancelSymbol: unique symbol;
172
+ function approxStringWidth(plain: string): number;
173
+ function visualRowsForLine(line: string, columns: number): number;
174
+ function countVisualRowsForLines(lines: string[], columns: number | undefined): number;
175
+ function multiselect<T>(options: MultiselectOptions<T>): Promise<T[] | typeof cancelSymbol>;
176
+ }
177
+
178
+ declare namespace Prompt {
179
+ const cancelSymbol: typeof Search$1.cancelSymbol;
180
+ type Cancel = typeof cancelSymbol;
181
+ function isCancel(value: unknown): value is Cancel;
182
+ interface SelectOption<T> {
183
+ value: T;
184
+ label: string;
185
+ hint?: string;
186
+ }
187
+ interface SelectOptions<T> {
188
+ message: string;
189
+ options: SelectOption<T>[];
190
+ initialValue?: T;
191
+ isTTY?: boolean;
192
+ }
193
+ function select<T>(opts: SelectOptions<T>): Promise<T | Cancel>;
194
+ interface GroupMultiselectOptions<T> {
195
+ message: string;
196
+ options: Record<string, SelectOption<T>[]>;
197
+ initialValues?: T[];
198
+ required?: boolean;
199
+ isTTY?: boolean;
200
+ }
201
+ function groupMultiselect<T>(opts: GroupMultiselectOptions<T>): Promise<T[] | Cancel>;
202
+ interface TextOptions {
203
+ message: string;
204
+ placeholder?: string;
205
+ defaultValue?: string;
206
+ validate?: (value: string) => string | undefined;
207
+ isTTY?: boolean;
208
+ }
209
+ function text(opts: TextOptions): Promise<string | Cancel>;
210
+ interface PasswordOptions {
211
+ message: string;
212
+ mask?: string;
213
+ isTTY?: boolean;
214
+ }
215
+ function password(opts: PasswordOptions): Promise<string | Cancel>;
216
+ interface ConfirmOptions {
217
+ message: string;
218
+ initialValue?: boolean;
219
+ isTTY?: boolean;
220
+ }
221
+ function confirm(opts: ConfirmOptions): Promise<boolean | Cancel>;
222
+ interface MultiselectItem<T> {
223
+ value: T;
224
+ label: string;
225
+ hint?: string;
226
+ }
227
+ interface LockedSection<T> {
228
+ title: string;
229
+ items: MultiselectItem<T>[];
230
+ hiddenCount?: number;
231
+ }
232
+ interface MultiselectOptions<T> {
233
+ message: string;
234
+ options: MultiselectItem<T>[];
235
+ initialValues?: T[];
236
+ required?: boolean;
237
+ lockedSection?: LockedSection<T>;
238
+ maxVisible?: number;
239
+ isTTY?: boolean;
240
+ withGuide?: boolean;
241
+ guideLines?: string[];
242
+ }
243
+ function multiselect<T>(opts: MultiselectOptions<T>): Promise<T[] | Cancel>;
244
+ function intro(title: string): void;
245
+ function outro(message?: string, opts?: {
246
+ success?: boolean;
247
+ }): void;
248
+ function cancel(message?: string): never;
249
+ namespace Log {
250
+ function info(message: string, detail?: string): void;
251
+ function warn(message: string, detail?: string): void;
252
+ function error(message: string, detail?: string): void;
253
+ function success(message: string): void;
254
+ function step(message: string): void;
255
+ function message(message: string): void;
256
+ }
257
+ interface SpinnerInstance {
258
+ start(message?: string): void;
259
+ stop(finalMessage?: string): void;
260
+ update(message: string): void;
261
+ line(): string;
262
+ }
263
+ function spinner(options?: {
264
+ frames?: string[];
265
+ color?: ColorFn$2;
266
+ }): SpinnerInstance;
267
+ }
268
+
269
+ type SymbolKind = 'success' | 'error' | 'warning' | 'info' | 'accent' | 'muted' | 'heading' | 'active' | 'submit' | 'cancel' | 'locked' | 'pending' | 'radioActive' | 'radioInactive' | 'skipped' | 'cursor' | 'accentBright';
270
+ declare namespace Symbol {
271
+ const icons: Readonly<Record<SymbolKind, string>>;
272
+ const bar: {
273
+ readonly vertical: "│";
274
+ readonly horizontal: "─";
275
+ readonly cornerBottom: "└";
276
+ readonly cornerBottomRight: "┘";
277
+ readonly teeRight: "├";
278
+ readonly stepActive: "◆";
279
+ readonly bullet: "•";
280
+ };
281
+ function colorize(char: string, kind: SymbolKind): string;
282
+ function statusIcon(kind: SymbolKind): string;
283
+ function prefixed(kind: SymbolKind, text: string): string;
284
+ }
82
285
 
83
286
  declare function registerActiveProgressLine(stream: NodeJS.WriteStream): void;
84
287
  declare function clearActiveProgressLine(): void;
@@ -128,4 +331,43 @@ declare function renderTable(opts: RenderTableOptions): string;
128
331
 
129
332
  declare function styleHealthChannelLine(line: string, rich: boolean): string;
130
333
 
131
- export { DOCS_ROOT, LOBSTER_PALETTE, type RenderTableOptions, type SafeStreamWriter, type SafeStreamWriterOptions, type TableColumn, clearActiveProgressLine, colorize, createSafeStreamWriter, displayPath, displayString, emitJsonError, emitJsonOk, expandHomePrefix, formatCommandExample, formatCount, formatDocsLink, formatDocsRootLink, formatEmptyMessage, formatError, formatHeading, formatInfo, formatKeyValue, formatListItem, formatSeparator, formatStatus, formatSuccess, formatTerminalLink, formatWarning, isRich, note, registerActiveProgressLine, renderTable, resolveConfigDir, resolveEffectiveHomeDir, resolveHomeDir, resolveRequiredHomeDir, resolveUserPath, restoreTerminalState, selectStyled, shortenHomeInString, shortenHomePath, stripAnsi, styleHealthChannelLine, stylePromptHint, stylePromptMessage, stylePromptTitle, theme, unregisterActiveProgressLine, visibleWidth, wrapNoteMessage };
334
+ type ColorFn$1 = (text: string) => string;
335
+ declare namespace Input {
336
+ interface ReadTextBaseOptions {
337
+ message: string;
338
+ hint?: string;
339
+ defaultValue?: string;
340
+ hidden?: boolean;
341
+ messageColor?: ColorFn$1;
342
+ hintColor?: ColorFn$1;
343
+ input?: NodeJS.ReadStream;
344
+ output?: NodeJS.WritableStream;
345
+ }
346
+ interface ReadConfirmOptions {
347
+ message: string;
348
+ hint?: string;
349
+ defaultValue?: boolean;
350
+ messageColor?: ColorFn$1;
351
+ hintColor?: ColorFn$1;
352
+ input?: NodeJS.ReadStream;
353
+ output?: NodeJS.WritableStream;
354
+ }
355
+ function readText(options: ReadTextBaseOptions): Promise<string>;
356
+ function readConfirm(options: ReadConfirmOptions): Promise<boolean>;
357
+ function readPassword(options: Omit<ReadTextBaseOptions, 'hidden'>): Promise<string>;
358
+ }
359
+
360
+ type ColorFn = (text: string) => string;
361
+ interface RenderMarkdownOptions {
362
+ headingColor?: ColorFn;
363
+ boldColor?: ColorFn;
364
+ italicColor?: ColorFn;
365
+ codeColor?: ColorFn;
366
+ linkColor?: ColorFn;
367
+ }
368
+ declare function renderMarkdown(md: string, opts?: RenderMarkdownOptions): string[];
369
+
370
+ declare const Search: typeof Search$1;
371
+ declare const cancelSymbol: symbol;
372
+
373
+ export { type ColorFn$2 as ColorFn, type FormatTerminalLinkOptions, Input, type ColorFn$1 as InputColorFn, type JsonEnvelope, LOBSTER_PALETTE, Loader, type LobsterPalette, type LobsterPaletteKey, type ColorFn as MarkdownColorFn, type NoteOptions, type PrintHumanOptions, Prompt, type RenderLinesGroup, type RenderLinesOptions, type RenderMarkdownOptions, type RenderTableOptions, type RestoreTerminalStateOptions, type SafeStreamWriter, type SafeStreamWriterOptions, Search, type StatusKind, Symbol, type SymbolKind, type TableColumn, type WrapNoteMessageOptions, cancelSymbol, clearActiveProgressLine, colorize, createSafeStreamWriter, displayPath, displayString, emitCommandJson, emitJson, emitJsonError, emitJsonOk, expandHomePrefix, formatCommandExample, formatCount, formatEmptyMessage, formatError, formatHeading, formatInfo, formatKeyValue, formatList, formatListItem, formatListTruncated, formatPrintHuman, formatRootLink, formatRootedLink, formatSeparator, formatStatus, formatSuccess, formatTerminalLink, formatWarning, isRich, note, printHuman, printRenderLines, registerActiveProgressLine, renderLines, renderMarkdown, renderTable, resolveConfigDir, resolveEffectiveHomeDir, resolveHomeDir, resolveRequiredHomeDir, resolveUserPath, restoreTerminalState, selectStyled, shortenHomeInString, shortenHomePath, stripAnsi, styleHealthChannelLine, stylePromptHint, stylePromptMessage, stylePromptTitle, theme, unregisterActiveProgressLine, visibleWidth, wrapError, wrapJson, wrapNoteMessage };
package/dist/index.mjs CHANGED
@@ -1,11 +1,32 @@
1
- import be,{Chalk}from'chalk';import Ae from'fs';import J from'os';import q from'path';import {Filesystem}from'@easbot/utils';import {note,select}from'@clack/prompts';var pe="\\x1b\\[[0-9;]*m",he="\\x1b\\]8;;.*?\\x1b\\\\|\\x1b\\]8;;\\x1b\\\\",ge=new RegExp(pe,"g"),xe=new RegExp(he,"g");function te(e){return !e||e.length===0?"":e.replace(xe,"").replace(ge,"")}function R(e){return !e||e.length===0?0:Array.from(te(e)).length}var y={accent:"#FF5A2D",accentBright:"#FF7A3D",accentDim:"#D14A22",info:"#FF8A5B",success:"#2FBF71",warn:"#FFB020",error:"#E23D2D",muted:"#8B7F77"};var Ee=typeof process.env.FORCE_COLOR=="string"&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!=="0",U=process.env.NO_COLOR&&!Ee?new Chalk({level:0}):be,L=e=>U.hex(e),m={accent:L(y.accent),accentBright:L(y.accentBright),accentDim:L(y.accentDim),info:L(y.info),success:L(y.success),warn:L(y.warn),error:L(y.error),muted:L(y.muted),heading:U.bold.hex(y.accent),command:L(y.accentBright),option:L(y.warn)},S=()=>U.level>0,E=(e,r,n)=>e?r(n):n;function ke(e){let r=S();return E(r,m.success,"\u2713")+` ${e}`}function ve(e){let r=S();return E(r,m.error,"\u2717")+` ${e}`}function $e(e){let r=S();return E(r,m.warn,"\u26A0")+` ${e}`}function We(e){let r=S();return E(r,m.info,"\u2139")+` ${e}`}function we(e){let r=S();return E(r,m.heading,e)}function Te(e,r,n=15){let i=S(),o=e.padEnd(n);return `${E(i,m.muted,o)} ${r}`}function ye(e,r){let n=S(),i=E(n,m.command,e);if(!r)return ` ${i}`;let o=E(n,m.muted,`# ${r}`);return ` ${i} ${o}`}function Pe(e,r,n){let i=S(),o=E(i,m.info,e),l=E(i,m.command,r),d=n?` ${E(i,m.muted,n)}`:"";return `${o} ${l}${d}`}function Oe(e,r){let n=S(),i,o;switch(e){case "pending":i="\u25CB",o=m.muted;break;case "running":i="\u25CF",o=m.info;break;case "success":i="\u2713",o=m.success;break;case "error":i="\u2717",o=m.error;break;case "skipped":i="\u25CB",o=m.muted;break}return E(n,o,i)+` ${r}`}function Re(e=80,r="\u2500"){let n=S();return E(n,m.muted,r.repeat(e))}function Le(e){let r=S();return E(r,m.muted,e)}function Ce(e,r,n){let i=S(),o=e===1?r:n||`${r}s`;return `${E(i,m.accent,String(e))} ${o}`}function C(e){let r=e?.trim();return r?Filesystem.toUnixPath(r):void 0}function D(e=process.env,r=J.homedir){let n=Ne(e,r);return n?Filesystem.resolve(n):void 0}function Ne(e,r){let n=C(e.EASBOT_HOME);if(n){if(n==="~"||n.startsWith("~/")||n.startsWith("~\\")){let l=C(e.HOME)??C(e.USERPROFILE)??ne(r);return l?n.replace(/^~(?=$|[\\/])/,l):void 0}return n}let i=C(e.HOME);if(i)return i;let o=C(e.USERPROFILE);return o||ne(r)}function ne(e){try{return C(e())}catch{return}}function B(e=process.env,r=J.homedir){return D(e,r)??Filesystem.resolve(process.cwd())}function K(e,r){if(!e.startsWith("~"))return C(e);let n=process.env.EASBOT_TEST_HOME?.trim();return n||(n=C(r?.home)??D(r?.env??process.env,r?.homedir??J.homedir)),n?e.replace(/^~(?=$|[\\/])/,n):C(e)}function oe(e){if(!e)return "";let r=e.trim();if(!r)return r;if(r.startsWith("~")){let n=K(r,{home:B(process.env,J.homedir),env:process.env,homedir:J.homedir});return q.resolve(n)}return q.resolve(r)}function Ie(e=process.env,r=J.homedir){let n=e.OPENCLAW_STATE_DIR?.trim()||e.CLAWDBOT_STATE_DIR?.trim();if(n)return oe(n);let i=q.join(B(e,r),".openclaw");try{if(Ae.existsSync(i))return i}catch{}return i}function ie(){return D(process.env,J.homedir)}function se(){let e=ie();return e?process.env.EASBOT_HOME?.trim()?{home:e,prefix:"$EASBOT_HOME"}:{home:e,prefix:"~"}:void 0}function ce(e){if(!e)return e;let r=se();if(!r)return e;let{home:n,prefix:i}=r;return e===n?i:e.startsWith(`${n}/`)||e.startsWith(`${n}\\`)?`${i}${e.slice(n.length)}`:e}function ae(e){if(!e)return e;let r=se();return r?e.split(r.home).join(r.prefix):e}function _e(e){return ce(e)}function G(e){return ae(e)}function j(e,r,n){let o=e.replaceAll("\x1B",""),l=r.replaceAll("\x1B","");return (n?.force===true?true:n?.force===false?false:!!process.stdout.isTTY)?`\x1B]8;;${l}\x07${o}\x1B]8;;\x07`:n?.fallback??`${o} (${l})`}var F="https://docs.openclaw.ai";function He(e,r,n){let i=e.trim(),o=i.startsWith("http")?i:`${F}${i.startsWith("/")?i:`/${i}`}`;return j(r??o,o,{fallback:n?.fallback??o,force:n?.force})}function Me(e){return j(e??F,F,{fallback:F})}function De(e,r){let n={ok:true,data:e};r!==void 0&&(n.meta=r),console.log(JSON.stringify(n,null,2));}function Fe(e,r){console.log(JSON.stringify({ok:false,error:{code:e,message:r}},null,2));}var X=e=>S()?m.accent(e):e,Z=e=>e&&S()?m.heading(e):e,Q=e=>e&&S()?m.muted(e):e;var Je=/^(https?:\/\/|file:\/\/)/i,je=/^[a-zA-Z]:[\\/]/,ze=/^[a-zA-Z0-9._-]+$/;function fe(e,r){if(r<=0)return [e];let n=Array.from(e),i=[];for(let o=0;o<n.length;o+=r)i.push(n.slice(o,o+r).join(""));return i.length>0?i:[e]}function ue(e){return e?Je.test(e)||e.startsWith("/")||e.startsWith("~/")||e.startsWith("./")||e.startsWith("../")||je.test(e)||e.startsWith("\\\\")||e.includes("/")||e.includes("\\")?true:e.includes("_")&&ze.test(e):false}function Ue(e,r){if(e.trim().length===0)return [e];if(r<=0)return [e];let n=e.match(/^(\s*)([-*\u2022]\s+)?(.*)$/),i=n?.[1]??"",o=n?.[2]??"",l=n?.[3]??"",d=`${i}${o}`,g=`${i}${o?" ".repeat(o.length):""}`,W=Math.max(10,r-R(d)),w=Math.max(10,r-R(g)),I=l.split(/\s+/).filter(Boolean),P=[],p="",x=d,k=W;for(let b of I){if(!p){if(R(b)>k){if(ue(b)){p=b;continue}let T=fe(b,k),f=T.shift()??"";P.push(x+f),x=g,k=w;for(let u of T)P.push(x+u);continue}p=b;continue}let N=`${p} ${b}`;if(R(N)<=k){p=N;continue}if(P.push(x+p),x=g,k=w,R(b)>k){if(ue(b)){p=b;continue}let T=fe(b,k),f=T.shift()??"";P.push(x+f);for(let u of T)P.push(x+u);p="";continue}p=b;}return (p||I.length===0)&&P.push(x+p),P}function le(e,r={}){let n=r.columns??process.stdout.columns??80,i=r.maxWidth??Math.max(40,Math.min(88,n-10));return e.split(`
2
- `).flatMap(o=>Ue(o,i)).join(`
3
- `)}function Ve(e,r){note(le(e),Z(r));}var H=null;function Ye(e){e.isTTY&&(H=e);}function ee(){H?.isTTY&&H.write("\r\x1B[2K");}function Ke(e){H&&(e&&H!==e||(H=null));}function Ge(e){return select({...e,message:X(e.message),options:e.options.map(r=>r.hint===void 0?r:{...r,hint:Q(r.hint)})})}var Xe="\x1B[0m\x1B[?25h\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l";function z(e,r,n){let i=n?` (${n})`:"",o=`[terminal] restore ${e} failed${i}: ${String(r)}`;try{process.stderr.write(`${o}
4
- `);}catch(l){console.error(`[terminal] restore reporting failed${i}: ${String(l)}`);}}function Ze(e,r={}){let n=r.resumeStdinIfPaused??r.resumeStdin??false;try{ee();}catch(o){z("progress line",o,e);}let i=process.stdin;if(i.isTTY&&typeof i.setRawMode=="function"){try{i.setRawMode(!1);}catch(o){z("raw mode",o,e);}if(n&&typeof i.isPaused=="function"&&i.isPaused())try{i.resume();}catch(o){z("stdin resume",o,e);}}if(process.stdout.isTTY)try{process.stdout.write(Xe);}catch(o){z("stdout reset",o,e);}}function Qe(e){let r=e?.code;return r==="EPIPE"||r==="EIO"}function er(e={}){let r=false,n=false,i=(g,W)=>{n||(n=true,e.onBrokenPipe?.(g,W));},o=(g,W)=>{if(!Qe(g))throw g;return r=true,i(g,W),false},l=(g,W)=>{if(r)return false;try{e.beforeWrite?.();}catch(w){return o(w,process.stderr)}try{return g.write(W),!r}catch(w){return o(w,g)}};return {write:l,writeLine:(g,W)=>l(g,`${W}
5
- `),reset:()=>{r=false,n=false;},isClosed:()=>r}}function M(e,r){return !Number.isFinite(r)||r<=0?"":e.repeat(r)}function rr(e,r,n){let i=R(e);if(i>=r)return e;let o=r-i;if(n==="right")return `${M(" ",o)}${e}`;if(n==="center"){let l=Math.floor(o/2),d=o-l;return `${M(" ",l)}${e}${M(" ",d)}`}return `${e}${M(" ",o)}`}function tr(e,r){if(!e||e.length===0)return [""];if(!Number.isFinite(r)||r<=0)return [e];let n="\x1B",i=[];for(let t=0;t<e.length;){if(e[t]===n){if(e[t+1]==="["){let a=t+2;for(;a<e.length;){let h=e[a];if(h==="m")break;if(h&&h>="0"&&h<="9"){a+=1;continue}if(h===";"){a+=1;continue}break}if(e[a]==="m"){i.push({kind:"ansi",value:e.slice(t,a+1)}),t=a+1;continue}}if(e[t+1]==="]"&&e.slice(t+2,t+5)==="8;;"){let a=e.indexOf(`${n}\\`,t+5);if(a>=0){i.push({kind:"ansi",value:e.slice(t,a+2)}),t=a+2;continue}}}let s=e.codePointAt(t);if(!s)break;let c=String.fromCodePoint(s);i.push({kind:"char",value:c}),t+=c.length;}let o=i.findIndex(t=>t.kind==="char");if(o<0)return [e];let l=-1;for(let t=i.length-1;t>=0;t-=1){let s=i[t];if(s&&s.kind==="char"){l=t;break}}let d=i.slice(0,o).filter(t=>t.kind==="ansi").map(t=>t.value).join(""),g=i.slice(l+1).filter(t=>t.kind==="ansi").map(t=>t.value).join(""),W=i.slice(o,l+1),w=[],I=t=>t===" "||t===" "||t==="/"||t==="-"||t==="_"||t===".",P=t=>t===" "||t===" ",p=false,x=[],k=0,b=null,N=t=>(t??x).map(s=>s.value).join(""),T=t=>t.reduce((s,c)=>s+(c.kind==="char"?1:0),0),f=t=>{let s=t.replace(/\s+$/,"");s.trim().length!==0&&w.push(s);},u=t=>{if(x.length===0)return;if(t==null||t<=0){f(N()),x.length=0,k=0,b=null;return}let s=x.slice(0,t),c=x.slice(t);for(f(N(s));c.length>0;){let a=c[0];if(a?.kind!=="char"||!P(a.value))break;c.shift();}x.length=0,x.push(...c),k=T(x),b=null;};for(let t of W){if(t.kind==="ansi"){x.push(t);continue}let s=t.value;if(!(p&&(p=false,s===`
6
- `))){if(s===`
7
- `||s==="\r"){u(x.length),s==="\r"&&(p=true);continue}k+1>r&&k>0&&u(b),x.push(t),k+=1,I(s)&&(b=x.length);}}return u(x.length),w.length===0?[""]:!d&&!g?w:w.map(t=>t&&`${d}${t}${g}`)}function nr(e){if(e!=null&&!(!Number.isFinite(e)||e<=0))return Math.floor(e)}function or(e){let r=e.rows.map(f=>{let u={};for(let[t,s]of Object.entries(f))u[t]=G(s);return u}),n=e.border??"unicode";if(n==="none"){let f=e.columns;return `${[f.map(s=>s.header).join(" | "),...r.map(s=>f.map(c=>s[c.key]??"").join(" | "))].join(`
1
+ import pe,{Chalk}from'chalk';import me from'os';import we from'path';import {Filesystem}from'@easbot/utils';import*as G from'@clack/prompts';import {note,select}from'@clack/prompts';import*as ge from'readline';import {stripVTControlCharacters}from'util';import {Writable}from'stream';import xe from'process';var Et="\\x1b\\[[0-9;]*m",Rt="\\x1b\\]8;;.*?\\x1b\\\\|\\x1b\\]8;;\\x1b\\\\",It=new RegExp(Et,"g"),Ot=new RegExp(Rt,"g");function ee(e){return e?e.replace(Ot,"").replace(It,""):""}function j(e){return e?Array.from(ee(e)).length:0}var D={accent:"#FF5A2D",accentBright:"#FF7A3D",accentDim:"#D14A22",info:"#FF8A5B",success:"#2FBF71",warn:"#FFB020",error:"#E23D2D",muted:"#8B7F77"};var Pt=typeof process.env.FORCE_COLOR=="string"&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!=="0",Te=process.env.NO_COLOR&&!Pt?new Chalk({level:0}):pe,z=e=>Te.hex(e),u={accent:z(D.accent),accentBright:z(D.accentBright),accentDim:z(D.accentDim),info:z(D.info),success:z(D.success),warn:z(D.warn),error:z(D.error),muted:z(D.muted),heading:Te.bold.hex(D.accent),command:z(D.accentBright),option:z(D.warn)},k=()=>Te.level>0,$=(e,t,o)=>e?t(o):o;var F;(d=>{d.icons={success:"\u2713",error:"\u2717",warning:"\u26A0",info:"\u2139",accent:"\u25C6",muted:"\u25CB",heading:"\u25C6",active:"\u25C6",submit:"\u25C7",cancel:"\u25A0",locked:"\u2713",pending:"\u25CB",radioActive:"\u25CF",radioInactive:"\u25CB",skipped:"\u21A1",cursor:"\u276F",accentBright:"\u276F"},d.bar={vertical:"\u2502",horizontal:"\u2500",cornerBottom:"\u2514",cornerBottomRight:"\u2518",teeRight:"\u251C",stepActive:"\u25C6",bullet:"\u2022"};function o(l,f){let y=Wt(f);return $(k(),y,l)}d.colorize=o;function s(l){return o(d.icons[l],l)}d.statusIcon=s;function c(l,f){return `${s(l)} ${f}`}d.prefixed=c;})(F||(F={}));function Wt(e){switch(e){case "success":case "locked":case "submit":return u.success;case "error":case "cancel":return u.error;case "warning":return u.warn;case "info":return u.info;case "accent":case "active":case "radioActive":return u.accent;case "muted":case "pending":case "radioInactive":return u.muted;case "skipped":return u.muted;case "heading":return u.heading;case "cursor":case "accentBright":return u.accentBright}}function Ft(e){return F.prefixed("success",e)}function At(e){return F.prefixed("error",e)}function Nt(e){return F.prefixed("warning",e)}function Ht(e){return F.prefixed("info",e)}function _t(e){return $(k(),u.heading,e)}function Bt(e,t,o=15){let s=e.padEnd(o);return `${$(k(),u.muted,s)} ${t}`}function Jt(e,t){let o=k(),s=$(o,u.command,e);if(!t)return ` ${s}`;let c=$(o,u.muted,`# ${t}`);return ` ${s} ${c}`}function Vt(e,t,o){let s=k(),c=F.colorize(e,"info"),d=$(s,u.command,t),l=o?` ${$(s,u.muted,o)}`:"";return `${c} ${d}${l}`}var Dt={pending:"pending",running:"active",success:"success",error:"error",skipped:"skipped"};function Kt(e,t){return F.prefixed(Dt[e],t)}function jt(e=80,t="\u2500"){return $(k(),u.muted,t.repeat(e))}function zt(e){return $(k(),u.muted,e)}function Yt(e,t,o){let s=e===1?t:o||`${t}s`;return `${$(k(),u.accent,String(e))} ${s}`}function Y(e){let t=e?.trim();return t?Filesystem.toUnixPath(t):void 0}function De(e){try{return Y(e())}catch{return}}function Gt(e,t){let o=Y(e.EASBOT_TEST_HOME);if(o)return o;let s=Y(e.EASBOT_HOME);if(s){if(s==="~"||s.startsWith("~/")||s.startsWith("~\\")){let l=Y(e.HOME)??Y(e.USERPROFILE)??De(t);return l?s.replace(/^~(?=$|[\\/])/,l):void 0}return s}let c=Y(e.HOME);if(c)return c;let d=Y(e.USERPROFILE);return d||De(t)}function ne(e=process.env,t=me.homedir){let o=Gt(e,t);if(o)return o}function $e(e=process.env,t=me.homedir){return ne(e,t)??Filesystem.resolve(process.cwd())}function ye(e,t){if(!e.startsWith("~"))return Y(e);let o=process.env.EASBOT_TEST_HOME?.trim();return o||(o=Y(t?.home)??ne(t?.env??process.env,t?.homedir??me.homedir)),o?e.replace(/^~(?=$|[\\/])/,o):Y(e)}function je(e){if(!e)return "";let t=e.trim();if(!t)return t;if(t.startsWith("~")){let o=ye(t,{home:$e(process.env,me.homedir),env:process.env,homedir:me.homedir});return we.resolve(o)}return we.resolve(t)}function Ut(e=process.env,t=me.homedir){let o=e.EASBOT_STATE_DIR?.trim();if(o)return je(o);let c=ne(e,t)??process.cwd();return we.join(c,".config","easbot")}function ze(){return ne(process.env,me.homedir)}function Ye(){let e=ze();return e?process.env.EASBOT_TEST_HOME?.trim()?{home:e,prefix:"~"}:process.env.EASBOT_HOME?.trim()?{home:e,prefix:"$EASBOT_HOME"}:{home:e,prefix:"~"}:void 0}function Ge(e){if(!e)return e;let t=Ye();if(!t)return e;let{home:o,prefix:s}=t;return e===o?s:e.startsWith(`${o}/`)||e.startsWith(`${o}\\`)?`${s}${e.slice(o.length)}`:e}function Ue(e){if(!e)return e;let t=Ye();return t?e.split(t.home).join(t.prefix):e}function qt(e){return Ge(e)}function Ce(e){return Ue(e)}function Qt(e,t){return e?.force===true?true:e?.force===false?false:!!(t??process.stdout?.isTTY)}function ae(e,t,o,s){let c=ee(e??""),d=ee(t??"");return Qt(o,s)?`\x1B]8;;${d}\x07${c}\x1B]8;;\x07`:o?.fallback??`${c} (${d})`}function Xt(e,t,o,s,c){let d=t.trim();if(!e)return ae(o??d,d,s,c);let l=/^[a-z]+:\/\//i.test(d)?d:`${e}${d.startsWith("/")?d:`/${d}`}`;return ae(o??l,l,s,c)}function Zt(e,t,o){return ae(t??e,e,void 0,o)}function qe(e,t,o=true){return t===void 0?{ok:o,data:e}:{ok:o,data:e,meta:t}}function en(e,t){return qe(e,t,false)}function Qe(e,t=2){console.log(JSON.stringify(e,null,t));}function tn(e){Qe(e);}function nn(e,t){let o={ok:true,data:e};t!==void 0&&(o.meta=t),console.log(JSON.stringify(o,null,2));}function rn(e,t){console.log(JSON.stringify({ok:false,error:{code:e,message:t}},null,2));}var ke=e=>k()?u.accent(e):e,Ee=e=>e&&k()?u.heading(e):e,Re=e=>e&&k()?u.muted(e):e;var sn=/^(https?:\/\/|file:\/\/)/i,an=/^[a-zA-Z]:[\\/]/,cn=/^[a-zA-Z0-9._-]+$/;function Xe(e,t){if(t<=0)return [e];let o=Array.from(e),s=[];for(let c=0;c<o.length;c+=t)s.push(o.slice(c,c+t).join(""));return s.length>0?s:[e]}function Ze(e){return e?sn.test(e)||e.startsWith("/")||e.startsWith("~/")||e.startsWith("./")||e.startsWith("../")||an.test(e)||e.startsWith("\\\\")||e.includes("/")||e.includes("\\")?true:e.includes("_")&&cn.test(e):false}function ln(e,t){if(e.trim().length===0)return [e];if(t<=0)return [e];let o=e.match(/^(\s*)([-*\u2022]\s+)?(.*)$/),s=o?.[1]??"",c=o?.[2]??"",d=o?.[3]??"",l=`${s}${c}`,f=`${s}${c?" ".repeat(c.length):""}`,y=Math.max(10,t-j(l)),w=Math.max(10,t-j(f)),E=d.split(/\s+/).filter(Boolean),L=[],S="",a=l,r=y;for(let x of E){if(!S){if(j(x)>r){if(Ze(x)){S=x;continue}let T=Xe(x,r),b=T.shift()??"";L.push(a+b),a=f,r=w;for(let g of T)L.push(a+g);continue}S=x;continue}let n=`${S} ${x}`;if(j(n)<=r){S=n;continue}if(L.push(a+S),a=f,r=w,j(x)>r){if(Ze(x)){S=x;continue}let T=Xe(x,r),b=T.shift()??"";L.push(a+b);for(let g of T)L.push(a+g);S="";continue}S=x;}return (S||E.length===0)&&L.push(a+S),L}function et(e,t={}){let o=process.stdout?.columns??80,s=t.columns??o,c=t.maxWidth??Math.max(40,Math.min(88,s-10));return e.split(`
2
+ `).flatMap(d=>ln(d,c)).join(`
3
+ `)}function ce(e,t,o={}){let s=o.columns??process.stdout?.columns,c=et(e,{columns:s,maxWidth:o.maxWidth});note(c,Ee(t));}function un(e,t={}){if(t.boxed===true){fn(e,t);return}console.log(tt(e,t));}function tt(e,t={}){let o=k(),s=e.length>0,c=s?e:[t.empty??"No results."],d=s?t.title:t.emptyTitle??t.title,l=[];d&&l.push($(o,u.heading,d));for(let f of c)l.push(` ${f}`);if(!t.skipOutro){let f=t.outro!==void 0?t.outro:"Done!";f&&l.push($(o,u.success,f));}return l.join(`
4
+ `)}function fn(e,t){let o=k(),s=e.length>0,c=s?e.join(`
5
+ `):t.empty??"No results.",d=s?t.title:t.emptyTitle??t.title;if(d?ce(c,d):console.log(c),!t.skipOutro){let l=t.outro!==void 0?t.outro:"Done!";l&&console.log($(o,u.success,l));}}function nt(e){let t=k(),o=[];if(o.push($(t,u.heading,e.title)),e.flat&&e.flat.length>0)for(let s of e.flat)o.push(` ${s}`);if(e.groups&&e.groups.length>0)for(let s of e.groups){if(s.key){let c=s.detail?` ${$(t,u.muted,s.detail)}`:"";o.push($(t,u.heading,s.key)+c);}for(let c of s.rows)o.push(` ${c}`);}if(e.footer&&e.footer.length>0)for(let s of e.footer)o.push($(t,u.muted,s));return o.join(`
6
+ `)}function dn(e){console.log(nt(e));}function rt(e,t=5){if(e.length<=t)return e.join(", ");let o=e.slice(0,t).join(", "),s=e.length-t;return `${o} +${s} more`}var mn=rt;var ot=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],it=80,le;(t=>{function e(o={}){let s=[...ot],c=it,d=0,l=null,f=o.message??"Loading...",y=o.spinnerColor??(a=>$(k(),u.accent,a)),w=o.messageColor??(a=>$(k(),u.muted,a)),E=a=>{s=a.frames!==void 0?[...a.frames]:[...ot],c=a.intervalMs!==void 0&&a.intervalMs>0?a.intervalMs:it,d=0;};o.indicator&&E(o.indicator);function L(){S(),!(s.length<=1)&&(l=setInterval(()=>{d=(d+1)%s.length;},c));}function S(){l!==null&&(clearInterval(l),l=null);}return {start:L,stop:S,isRunning(){return l!==null},line(){let a=s[d]??"";return `${(a.length>0?ee(y(a)).length:0)>0?`${y(a)} `:""}${w(f)}`},setMessage(a){f=a;},setIndicator(a){E(a??{}),L();}}}t.create=e;})(le||(le={}));var hn=new Writable({write(e,t,o){o();}}),Q;(S=>{S.cancelSymbol=Symbol("Search.cancel");function t(a){let r=0;for(let x of a){let n=x.codePointAt(0);if(n===void 0||n===0)continue;let T=n>=4352&&n<=4447||n>=8986&&n<=8987||n>=9001&&n<=9002||n>=9193&&n<=9196||n===9200||n===9203||n>=9725&&n<=9726||n>=9748&&n<=9749||n>=9800&&n<=9811||n===9855||n===9875||n===9889||n>=9898&&n<=9899||n>=9917&&n<=9918||n>=9924&&n<=9925||n===9934||n===9940||n===9962||n>=9970&&n<=9971||n===9973||n===9978||n===9981||n===9989||n>=9994&&n<=9995||n===10024||n===10060||n===10062||n>=10067&&n<=10069||n===10071||n>=10133&&n<=10135||n===10160||n===10175||n>=11035&&n<=11036||n===11088||n===11093||n>=11904&&n<=42191&&n!==12351||n>=43360&&n<=43388||n>=44032&&n<=55203||n>=63744&&n<=64255||n>=65040&&n<=65049||n>=65072&&n<=65135||n>=65280&&n<=65376||n>=65504&&n<=65510||n>=126976&&n<=129535;r+=T?2:1;}return r}S.approxStringWidth=t;function o(a,r){let x=stripVTControlCharacters(a),n=Math.max(1,r),T=t(x);return Math.max(1,Math.ceil(T/n))}S.visualRowsForLine=o;function s(a,r){let x=r!==void 0&&r>0?r:process.stdout.columns&&process.stdout.columns>0?process.stdout.columns:80,n=0;for(let T of a)n+=o(T,x);return n}S.countVisualRowsForLines=s;function c(a){let r=new Array(a.length);for(let x=0;x<a.length;x++){let n=a[x],T=n.value===null||n.value===void 0?"":String(n.value);r[x]={...n,searchKey:`${n.label}
7
+ ${T}`.toLowerCase()};}return r}function d(a,r){return r===""||a.searchKey.includes(r)}function l(a,r){return r<=0||a<0?0:a>=r?r-1:a}function f(a){if(a?.length!==1)return false;let r=a.codePointAt(0);return !(r===void 0||r<32||r===127||r===27)}function y(){let a=process.stdout.rows;if(!a||a<=0)return 8;let r=Math.floor((a-8)/2);return Math.max(5,Math.min(15,r))}function w(a,r){try{a.write(r);}catch{}}function E(a){if(a&&a.isTTY&&typeof a.setRawMode=="function")try{a.setRawMode(!1);}catch{}}function L(a){let r=a.message,x=c(a.items),n=Math.max(1,a.maxVisible??y()),T=a.initialSelected??[],b=a.required??false,g=a.lockedSection,i=a.isTTY;i??!!process.stdout?.isTTY;return new Promise(m=>{let p=process.stdin,C=process.stdout,B=ge.createInterface({input:p,output:hn,terminal:false});try{(i===!0||i===void 0&&p.isTTY)&&p.setRawMode?.(!0);}catch{}ge.emitKeypressEvents(p,B);let P="",W="",I=0,M=new Set(T),J=0,K=false,X=g?g.items.map(R=>R.value):[],at=g?g.items.map(R=>R.label):[],ue=[],Me=()=>{if(ue.length=0,W==="")for(let R=0;R<x.length;R++){let v=x[R];ue.push(v);}else for(let R=0;R<x.length;R++){let v=x[R];d(v,W)&&ue.push(v);}return ue},ct=()=>{if(J>0){w(C,`\x1B[${J}A`);for(let R=0;R<J;R++)w(C,"\x1B[2K\x1B[1B");w(C,`\x1B[${J}A`);}},Pe=()=>{let R=at.slice();for(let v=0;v<x.length;v++){let H=x[v];M.has(H.value)&&R.push(H.label);}return R},V=(R="active")=>{ct();let v=[],H=Me(),U=i===false?false:i===true?true:k(),_e=_=>$(U,u.error,_),de=_=>$(U,u.success,_),O=_=>$(U,u.muted,_),be=_=>$(U,u.heading,_),pt=_=>$(U,pe.bold,_),gt=_=>$(U,pe.underline,_),ht=_=>$(U,pe.inverse,_),xt=_=>$(U,pe.strikethrough,_),bt=O(F.bar.vertical);F.bar.horizontal;de(F.bar.bullet);let Be=R==="active"||R==="error"?F.icons.active:R==="cancel"?F.icons.cancel:F.icons.submit,vt=R==="cancel"||R==="error"?_e(Be):de(Be);if(v.push(`${vt} ${pt(r)}`),R==="active"||R==="error"){if(g&&g.items.length>0){v.push(bt);let Z=`${be(g.title)} ${O("\u2500\u2500 always included")}`;v.push(`${O("\u2502")} ${O("\u2500\u2500")} ${Z} ${O("\u2500".repeat(12))}`);for(let ie of g.items)v.push(`${O("\u2502")} ${de("\u2022")} ${be(ie.label)}`);g.hiddenCount&&g.hiddenCount>0&&v.push(`${O("\u2502")} ${O(`...and ${g.hiddenCount} more`)}`),v.push(O("\u2502")),v.push(`${O("\u2502")} ${O("\u2500\u2500")} ${be("Additional agents")} ${O("\u2500".repeat(29))}`);}let _=`${O("\u2502")} ${O("Search:")} ${P}${ht(" ")}`;v.push(_),v.push(`${O("\u2502")} ${O("\u2191\u2193 move \xB7 space select \xB7 enter confirm")}`),v.push(O("\u2502"));let Tt=Math.max(0,H.length-n),St=I-Math.floor(n/2),ve=Math.max(0,Math.min(St,Tt)),Je=Math.min(H.length,ve+n);if(H.length===0)v.push(`${O("\u2502")} ${O("No matches found")}`);else {for(let q=ve;q<Je;q++){let se=H[q],$t=M.has(se.value),Ve=q===I,yt=$t?F.statusIcon("radioActive"):F.colorize(F.icons.radioInactive,"radioInactive"),wt=Ve?gt(se.label):se.label,Ct=se.hint?O(` (${se.hint})`):"",kt=Ve?F.colorize(F.icons.cursor,"cursor"):" ";v.push(`${O("\u2502")} ${kt} ${yt} ${wt}${Ct}`);}let Z=ve,ie=H.length-Je;if(Z>0||ie>0){let q=[];Z>0&&q.push(`\u2191 ${Z} more`),ie>0&&q.push(`\u2193 ${ie} more`),v.push(`${O("\u2502")} ${O(q.join(" "))}`);}}v.push(O("\u2502"));let oe=Pe();if(oe.length===0)v.push(`${O("\u2502")} ${O("Selected: (none)")}`);else {let Z=oe.length<=3?oe.join(", "):`${oe.slice(0,3).join(", ")} +${oe.length-3} more`;v.push(`${O("\u2502")} ${de("Selected:")} ${Z}`);}R==="error"&&v.push(`${O("\u2502")} ${_e("\u26A0 Please select at least one item before submitting")}`),v.push(`${O("\u2514")}`);}else if(R==="submit"){let _=Pe();v.push(`${O("\u2502")} ${O(_.join(", "))}`);}else v.push(`${O("\u2502")} ${xt(O("Cancelled"))}`);w(C,`${v.join(`
8
8
  `)}
9
- `}let i=Math.max(0,e.padding??1),o=e.columns,l=o.map(f=>{let u=R(f.header),t=Math.max(0,...r.map(s=>R(s[f.key]??"")));return {headerW:u,cellW:t}}),d=o.map((f,u)=>{let t=l[u];if(!t)throw new Error(`Internal error: metrics[${u}] is undefined`);let s=Math.max(t.headerW,t.cellW)+i*2,c=f.maxWidth?Math.min(s,f.maxWidth):s;return Math.max(f.minWidth??3,c)}),g=nr(e.width),W=o.length+1,w=d.reduce((f,u)=>f+u,0)+W,I=o.map((f,u)=>{let t=l[u];if(!t)throw new Error(`Internal error: metrics[${u}] is undefined`);return Math.max(f.minWidth??3,t.headerW+i*2,3)}),P=o.map((f,u)=>{let t=l[u];if(!t)throw new Error(`Internal error: metrics[${u}] is undefined`);return Math.max(t.headerW+i*2,3)});if(g&&w>g){let f=w-g,u=o.map((c,a)=>{let h=d[a];if(h===void 0)throw new Error(`Internal error: widths[${a}] is undefined`);return {i:a,w:h}}).filter(({i:c})=>!!o[c]?.flex).toSorted((c,a)=>a.w-c.w).map(c=>c.i),t=o.map((c,a)=>{let h=d[a];if(h===void 0)throw new Error(`Internal error: widths[${a}] is undefined`);return {i:a,w:h}}).filter(({i:c})=>!o[c]?.flex).toSorted((c,a)=>a.w-c.w).map(c=>c.i),s=(c,a)=>{for(;f>0;){let h=false;for(let O of c){let A=d[O],_=a[O];if(!(A===void 0||_===void 0)&&!(A<=_)&&(d[O]=A-1,f-=1,h=true,f<=0))break}if(!h)break}};s(u,I),s(u,P),s(t,I),s(t,P);}if(g){let f=o.length+1,u=d.reduce((s,c)=>s+c,0)+f,t=g-u;if(t>0){let s=o.map((c,a)=>({c,i:a})).filter(({c})=>!!c.flex).map(({i:c})=>c);if(s.length>0){let c=o.map(a=>typeof a.maxWidth=="number"&&a.maxWidth>0?Math.floor(a.maxWidth):Number.POSITIVE_INFINITY);for(;t>0;){let a=false;for(let h of s){let O=d[h],A=c[h];if(!(O===void 0||A===void 0)&&!(O>=A)&&(d[h]=O+1,t-=1,a=true,t<=0))break}if(!a)break}}}}let p=n==="ascii"?{tl:"+",tr:"+",bl:"+",br:"+",h:"-",v:"|",t:"+",ml:"+",m:"+",mr:"+",b:"+"}:{tl:"\u250C",tr:"\u2510",bl:"\u2514",br:"\u2518",h:"\u2500",v:"\u2502",t:"\u252C",ml:"\u251C",m:"\u253C",mr:"\u2524",b:"\u2534"},x=(f,u,t)=>`${f}${d.map(s=>{if(s===void 0)throw new Error("Internal error: width is undefined");return M(p.h,s)}).join(u)}${t}`,k=f=>{let u=d[f];if(u===void 0)throw new Error(`Internal error: widths[${f}] is undefined`);return Math.max(1,u-i*2)},b=M(" ",i),N=(f,u=false)=>{let s=o.map(h=>u?h.header:f[h.key]??"").map((h,O)=>tr(h,k(O))),c=Math.max(...s.map(h=>h.length)),a=[];for(let h=0;h<c;h+=1){let O=s.map((A,_)=>{let me=A[h]??"",re=o[_];if(!re)throw new Error(`Internal error: columns[${_}] is undefined`);let de=rr(me,k(_),re.align??"left");return `${b}${de}${b}`});a.push(`${p.v}${O.join(p.v)}${p.v}`);}return a},T=[];T.push(x(p.tl,p.t,p.tr)),T.push(...N({},true)),T.push(x(p.ml,p.m,p.mr));for(let f of r)T.push(...N(f,false));return T.push(x(p.bl,p.b,p.br)),`${T.join(`
9
+ `);try{J=s(v,C.columns);}catch{J=v.length;}},We=false,lt=()=>{if(!We){We=true;try{p.removeListener("keypress",He),p.removeListener("end",Ne);}catch{}try{process.removeListener("SIGINT",fe),process.removeListener("SIGTERM",fe);}catch{}E(p);try{B.close();}catch{}}},Fe=R=>{K||(K=true,lt(),m(R));},ut=()=>{if(b&&M.size===0&&X.length===0){V("error");return}V("submit"),Fe([...X,...Array.from(M)]);},Ae=()=>{V("cancel"),Fe(S.cancelSymbol);},Ne=()=>{Ae();},fe=()=>{E(p);},ft=R=>{let v=R[I];v&&(M.has(v.value)?M.delete(v.value):M.add(v.value));},dt=R=>{P+=R,W+=R.toLowerCase();},mt=()=>{P.length!==0&&(P=P.slice(0,-1),W=W.slice(0,-1));},He=(R,v)=>{if(!v)return;let H=Me();if(I=l(I,H.length),v.name==="return"){ut();return}if(v.name==="escape"||v.ctrl&&v.name==="c"){Ae();return}if(v.name==="up"||v.name==="left"){H.length>0&&(I=l(I-1,H.length),V());return}if(v.name==="down"||v.name==="right"){H.length>0&&(I=l(I+1,H.length),V());return}if(v.name==="pageup"){H.length>0&&(I=l(I-n,H.length),V());return}if(v.name==="pagedown"){H.length>0&&(I=l(I+n,H.length),V());return}if(v.name==="home"){H.length>0&&(I=0,V());return}if(v.name==="end"){H.length>0&&(I=H.length-1,V());return}if(v.name==="space"){ft(H),V();return}if(v.name==="backspace"){P.length>0&&(mt(),I=0,V());return}!v.ctrl&&!v.meta&&f(v.sequence)&&(dt(v.sequence),I=0,V());};p.on("keypress",He),p.once("end",Ne),process.on("SIGINT",fe),process.on("SIGTERM",fe),V();})}S.multiselect=L;})(Q||(Q={}));var Ie;(a=>{a.cancelSymbol=Q.cancelSymbol;function t(r){return r===a.cancelSymbol||typeof r=="symbol"}a.isCancel=t;async function o(r){return await G.select({message:r.message,options:r.options,...r.initialValue!==void 0?{initialValue:r.initialValue}:{}})}a.select=o;async function s(r){return await G.groupMultiselect({message:r.message,options:r.options,...r.initialValues!==void 0?{initialValues:r.initialValues}:{},...r.required!==void 0?{required:r.required}:{}})}a.groupMultiselect=s;async function c(r){return await G.text({message:r.message,...r.placeholder!==void 0?{placeholder:r.placeholder}:{},...r.defaultValue!==void 0?{defaultValue:r.defaultValue}:{},...r.validate!==void 0?{validate:r.validate}:{}})}a.text=c;async function d(r){return await G.password({message:r.message,...r.mask!==void 0?{mask:r.mask}:{}})}a.password=d;async function l(r){return await G.confirm({message:r.message,...r.initialValue!==void 0?{initialValue:r.initialValue}:{}})}a.confirm=l;async function f(r){if(r.withGuide===true){let n=r.guideLines??["Use \u2191 / \u2193 to navigate","Press Space to toggle selection","Press a to toggle all","Press i to invert selection","Press Enter to submit"];ce(n.join(`
10
+ `),"\u64CD\u4F5C\u63D0\u793A");}return await Q.multiselect({message:r.message,items:r.options,...r.initialValues!==void 0?{initialSelected:r.initialValues}:{},...r.required!==void 0?{required:r.required}:{},...r.lockedSection!==void 0?{lockedSection:r.lockedSection}:{},...r.maxVisible!==void 0?{maxVisible:r.maxVisible}:{},...r.isTTY!==void 0?{isTTY:r.isTTY}:{}})}a.multiselect=f;function y(r){let x=k(),n=$(x,u.heading,r),T=$(x,u.muted,"\u2500".repeat(Math.max(8,r.length*2)));process.stdout.write(`${n}
11
+ ${T}
12
+ `);}a.intro=y;function w(r,x){let n=k(),T=x?.success!==false,b=r??"Done!",g=T?u.success:u.error,i=$(n,g,b),h=$(n,u.muted,"\u2500".repeat(Math.max(8,b.length*2)));process.stdout.write(`${i}
13
+ ${h}
14
+ `);}a.outro=w;function E(r){let x=k(),n=r??"Cancelled.",T=`${F.statusIcon("cancel")} ${n}`,b=$(x,u.muted,"\u2500".repeat(Math.max(8,n.length*2)));process.stdout.write(`${T}
15
+ ${b}
16
+ `),process.exit(0);}a.cancel=E;(h=>{function r(m,p){i("info",m,p);}h.info=r;function x(m,p){i("warning",m,p);}h.warn=x;function n(m,p){i("error",m,p);}h.error=n;function T(m){i("success",m);}h.success=T;function b(m){let p=`${F.statusIcon("active")} ${m}`;process.stdout.write(`${p}
17
+ `);}h.step=b;function g(m){process.stdout.write(`${m}
18
+ `);}h.message=g;function i(m,p,C){let B=k(),P=`${F.statusIcon(m)} ${p}`;if(C){let W=$(B,u.muted,C);process.stdout.write(`${P}
19
+ ${W}
20
+ `);}else process.stdout.write(`${P}
21
+ `);}})(a.Log||(a.Log={}));function S(r){let x=r?.color??(i=>$(k(),u.accent,i)),n=i=>$(k(),u.muted,i),T=le.create({...r?.frames!==void 0?{message:""}:{},spinnerColor:x,messageColor:n,indicator:{frames:r?.frames??[],intervalMs:80}}),b=null,g=false;return {start(i){i!==void 0&&T.setMessage(i),!g&&(g=true,T.start(),b=setInterval(()=>{process.stdout.write(`\r${T.line()}\x1B[K`);},80));},stop(i){b!==null&&(clearInterval(b),b=null),i!==void 0&&T.setMessage(i),T.stop(),process.stdout.write(`\r${T.line()}\x1B[K
22
+ `),g=false;},update(i){T.setMessage(i);},line(){return T.line()}}}a.spinner=S;})(Ie||(Ie={}));var re=null;function xn(e,t){try{e.write(t);}catch{}}function bn(e){e.isTTY&&(re=e);}function Oe(){re?.isTTY&&xn(re,"\r\x1B[2K");}function vn(e){re&&(e&&re!==e||(re=null));}function Sn(e){return select({...e,message:ke(e.message),options:e.options.map(t=>t.hint===void 0?t:{...t,hint:Re(t.hint)})})}var $n="\x1B[0m\x1B[?25h\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l";function he(e,t,o){let s=o?` (${o})`:"",c=`[terminal] restore ${e} failed${s}: ${String(t)}`;try{xe.stderr.write(`${c}
23
+ `);}catch(d){console.error(`[terminal] restore reporting failed${s}: ${String(d)}`);}}function yn(e,t={}){let o=t.resumeStdinIfPaused??t.resumeStdin??false;try{Oe();}catch(c){he("progress line",c,e);}let s=xe.stdin;if(s?.isTTY&&typeof s.setRawMode=="function"){try{s.setRawMode(!1);}catch(c){he("raw mode",c,e);}if(o&&typeof s.isPaused=="function"&&s.isPaused())try{s.resume();}catch(c){he("stdin resume",c,e);}}if(xe.stdout?.isTTY)try{xe.stdout.write($n);}catch(c){he("stdout reset",c,e);}}function Cn(e){let t=e?.code;return t==="EPIPE"||t==="EIO"}function kn(e={}){let t=false,o=false,s=(f,y)=>{o||(o=true,e.onBrokenPipe?.(f,y));},c=(f,y)=>{if(!Cn(f))throw f;return t=true,s(f,y),false},d=(f,y)=>{if(t)return false;try{e.beforeWrite?.();}catch(w){return c(w,xe.stderr)}try{return f.write(y),!t}catch(w){return c(w,f)}};return {write:d,writeLine:(f,y)=>d(f,`${y}
24
+ `),reset:()=>{t=false,o=false;},isClosed:()=>t}}function te(e,t){return !Number.isFinite(t)||t<=0?"":e.repeat(t)}function En(e,t,o){let s=j(e);if(s>=t)return e;let c=t-s;if(o==="right")return `${te(" ",c)}${e}`;if(o==="center"){let d=Math.floor(c/2),l=c-d;return `${te(" ",d)}${e}${te(" ",l)}`}return `${e}${te(" ",c)}`}function Rn(e,t){if(!e||e.length===0)return [""];if(!Number.isFinite(t)||t<=0)return [e];let o="\x1B",s=[];for(let i=0;i<e.length;){if(e[i]===o){if(e[i+1]==="["){let p=i+2;for(;p<e.length;){let C=e[p];if(C==="m")break;if(C&&C>="0"&&C<="9"){p+=1;continue}if(C===";"){p+=1;continue}break}if(e[p]==="m"){s.push({kind:"ansi",value:e.slice(i,p+1)}),i=p+1;continue}}if(e[i+1]==="]"&&e.slice(i+2,i+5)==="8;;"){let p=e.indexOf(`${o}\\`,i+5);if(p>=0){s.push({kind:"ansi",value:e.slice(i,p+2)}),i=p+2;continue}}}let h=e.codePointAt(i);if(!h)break;let m=String.fromCodePoint(h);s.push({kind:"char",value:m}),i+=m.length;}let c=s.findIndex(i=>i.kind==="char");if(c<0)return [e];let d=-1;for(let i=s.length-1;i>=0;i-=1){let h=s[i];if(h&&h.kind==="char"){d=i;break}}let l=s.slice(0,c).filter(i=>i.kind==="ansi").map(i=>i.value).join(""),f=s.slice(d+1).filter(i=>i.kind==="ansi").map(i=>i.value).join(""),y=s.slice(c,d+1),w=[],E=i=>i===" "||i===" "||i==="/"||i==="-"||i==="_"||i===".",L=i=>i===" "||i===" ",S=false,a=[],r=0,x=null,n=i=>(i??a).map(h=>h.value).join(""),T=i=>i.reduce((h,m)=>h+(m.kind==="char"?1:0),0),b=i=>{let h=i.replace(/\s+$/,"");h.trim().length!==0&&w.push(h);},g=i=>{if(a.length===0)return;if(i==null||i<=0){b(n()),a.length=0,r=0,x=null;return}let h=a.slice(0,i),m=a.slice(i);for(b(n(h));m.length>0;){let p=m[0];if(p?.kind!=="char"||!L(p.value))break;m.shift();}a.length=0,a.push(...m),r=T(a),x=null;};for(let i of y){if(i.kind==="ansi"){a.push(i);continue}let h=i.value;if(!(S&&(S=false,h===`
25
+ `))){if(h===`
26
+ `||h==="\r"){g(a.length),h==="\r"&&(S=true);continue}r+1>t&&r>0&&g(x),a.push(i),r+=1,E(h)&&(x=a.length);}}return g(a.length),w.length===0?[""]:!l&&!f?w:w.map(i=>i&&`${l}${i}${f}`)}function In(e){if(e!=null&&!(!Number.isFinite(e)||e<=0))return Math.floor(e)}function On(e){let t=e.rows.map(b=>{let g={};for(let[i,h]of Object.entries(b))g[i]=Ce(h);return g}),o=e.border??"unicode";if(o==="none"){let b=e.columns;return `${[b.map(h=>h.header).join(" | "),...t.map(h=>b.map(m=>h[m.key]??"").join(" | "))].join(`
10
27
  `)}
11
- `}function ir(e,r){if(!r)return e;let n=e.indexOf(":");if(n===-1)return e;let i=e.slice(0,n+1),o=e.slice(n+1).trimStart(),l=o.toLowerCase(),d=(g,W)=>`${i} ${W(o.slice(0,g.length))}${o.slice(g.length)}`;return l.startsWith("failed")?d("failed",m.error):l.startsWith("ok")?d("ok",m.success):l.startsWith("linked")?d("linked",m.success):l.startsWith("configured")?d("configured",m.success):l.startsWith("not linked")?d("not linked",m.warn):l.startsWith("not configured")?d("not configured",m.muted):l.startsWith("unknown")?d("unknown",m.warn):e}export{F as DOCS_ROOT,y as LOBSTER_PALETTE,ee as clearActiveProgressLine,E as colorize,er as createSafeStreamWriter,_e as displayPath,G as displayString,Fe as emitJsonError,De as emitJsonOk,K as expandHomePrefix,ye as formatCommandExample,Ce as formatCount,He as formatDocsLink,Me as formatDocsRootLink,Le as formatEmptyMessage,ve as formatError,we as formatHeading,We as formatInfo,Te as formatKeyValue,Pe as formatListItem,Re as formatSeparator,Oe as formatStatus,ke as formatSuccess,j as formatTerminalLink,$e as formatWarning,S as isRich,Ve as note,Ye as registerActiveProgressLine,or as renderTable,Ie as resolveConfigDir,D as resolveEffectiveHomeDir,ie as resolveHomeDir,B as resolveRequiredHomeDir,oe as resolveUserPath,Ze as restoreTerminalState,Ge as selectStyled,ae as shortenHomeInString,ce as shortenHomePath,te as stripAnsi,ir as styleHealthChannelLine,Q as stylePromptHint,X as stylePromptMessage,Z as stylePromptTitle,m as theme,Ke as unregisterActiveProgressLine,R as visibleWidth,le as wrapNoteMessage};
28
+ `}let s=Math.max(0,e.padding??1),c=e.columns,d=c.map(b=>{let g=j(b.header),i=Math.max(0,...t.map(h=>j(h[b.key]??"")));return {headerW:g,cellW:i}}),l=c.map((b,g)=>{let i=d[g];if(!i)throw new Error(`Internal error: metrics[${g}] is undefined`);let h=Math.max(i.headerW,i.cellW)+s*2,m=b.maxWidth?Math.min(h,b.maxWidth):h;return Math.max(b.minWidth??3,m)}),f=In(e.width),y=c.length+1,w=l.reduce((b,g)=>b+g,0)+y,E=c.map((b,g)=>{let i=d[g];if(!i)throw new Error(`Internal error: metrics[${g}] is undefined`);return Math.max(b.minWidth??3,i.headerW+s*2,3)}),L=c.map((b,g)=>{let i=d[g];if(!i)throw new Error(`Internal error: metrics[${g}] is undefined`);return Math.max(i.headerW+s*2,3)});if(f&&w>f){let b=w-f,g=c.map((m,p)=>{let C=l[p];if(C===void 0)throw new Error(`Internal error: widths[${p}] is undefined`);return {i:p,w:C}}).filter(({i:m})=>!!c[m]?.flex).toSorted((m,p)=>p.w-m.w).map(m=>m.i),i=c.map((m,p)=>{let C=l[p];if(C===void 0)throw new Error(`Internal error: widths[${p}] is undefined`);return {i:p,w:C}}).filter(({i:m})=>!c[m]?.flex).toSorted((m,p)=>p.w-m.w).map(m=>m.i),h=(m,p)=>{let C=[],B=0;for(let W of m){let I=l[W],M=p[W];if(I===void 0||M===void 0)continue;let J=I-M;J<=0||(C.push({i:W,free:J}),B+=J);}if(C.length===0)return;let P=b;for(let{i:W,free:I}of C){if(P<=0)break;let M=l[W],J=p[W];if(M===void 0||J===void 0)continue;let K=Math.min(I,Math.floor(I*P/B)),X=Math.min(K,P);l[W]=M-X,P-=X;}for(let{i:W}of C){if(P<=0)break;let I=l[W],M=p[W];I===void 0||M===void 0||I<=M||(l[W]=I-1,P-=1);}b=P;};h(g,E),h(g,L),h(i,E),h(i,L);}if(f){let b=c.length+1,g=l.reduce((h,m)=>h+m,0)+b,i=f-g;if(i>0){let h=c.map((m,p)=>({c:m,i:p})).filter(({c:m})=>!!m.flex).map(({i:m})=>m);if(h.length>0){let m=c.map(p=>typeof p.maxWidth=="number"&&p.maxWidth>0?Math.floor(p.maxWidth):Number.POSITIVE_INFINITY);for(;i>0;){let p=false;for(let C of h){let B=l[C],P=m[C];if(!(B===void 0||P===void 0)&&!(B>=P)&&(l[C]=B+1,i-=1,p=true,i<=0))break}if(!p)break}}}}let S=o==="ascii"?{tl:"+",tr:"+",bl:"+",br:"+",h:"-",v:"|",t:"+",ml:"+",m:"+",mr:"+",b:"+"}:{tl:"\u250C",tr:"\u2510",bl:"\u2514",br:"\u2518",h:"\u2500",v:"\u2502",t:"\u252C",ml:"\u251C",m:"\u253C",mr:"\u2524",b:"\u2534"},a=(b,g,i)=>`${b}${l.map(h=>{if(h===void 0)throw new Error("Internal error: width is undefined");return te(S.h,h)}).join(g)}${i}`,r=b=>{let g=l[b];if(g===void 0)throw new Error(`Internal error: widths[${b}] is undefined`);return Math.max(1,g-s*2)},x=te(" ",s),n=(b,g=false)=>{let h=c.map(C=>g?C.header:b[C.key]??"").map((C,B)=>Rn(C,r(B))),m=Math.max(...h.map(C=>C.length)),p=[];for(let C=0;C<m;C+=1){let B=h.map((P,W)=>{let I=P[C],M=c[W];if(!M)throw new Error(`Internal error: columns[${W}] is undefined`);let J=r(W);if(I===void 0)return `${x}${te(" ",J)}${x}`;let K=En(I,J,M.align??"left");return `${x}${K}${x}`});p.push(`${S.v}${B.join(S.v)}${S.v}`);}return p},T=[];T.push(a(S.tl,S.t,S.tr)),T.push(...n({},true)),T.push(a(S.ml,S.m,S.mr));for(let b of t)T.push(...n(b,false));return T.push(a(S.bl,S.b,S.br)),`${T.join(`
29
+ `)}
30
+ `}var Ln=[{prefix:"failed",color:u.error},{prefix:"ok",color:u.success},{prefix:"linked",color:u.success},{prefix:"configured",color:u.success},{prefix:"not linked",color:u.warn},{prefix:"not configured",color:u.muted},{prefix:"unknown",color:u.warn}];function Mn(e,t){if(!t)return e;let o=e.indexOf(":");if(o===-1)return e;let s=e.slice(0,o+1),c=e.slice(o+1).trimStart(),d=c.toLowerCase();for(let{prefix:l,color:f}of Ln)if(d.startsWith(l))return `${s} ${f(c.slice(0,l.length))}${c.slice(l.length)}`;return e}var Pn=e=>$(k(),u.accent,e),Wn=e=>$(k(),u.muted,e),Le;(l=>{function e(f){let y=f;typeof y.resume=="function"&&y.resume();}function t(f,y){try{f.write(y);}catch{}}function o(f,y,w){let E=f;for(let L=0;L<y.length;L+=1){let S=y[L],a=S.charCodeAt(0);if(a===3)return {buffer:E,done:true,line:""};if(a===4)return {buffer:E,done:true,line:E};if(a===10||a===13)return {buffer:"",done:true,line:E};if((a===8||a===127)){E=E.slice(0,-1);continue}E+=S;}return {buffer:E,done:false,line:""}}function s(f){return new Promise((y,w)=>{let{message:E,hint:L,defaultValue:S,hidden:a,input:r,output:x,messageColor:n,hintColor:T}=f,b=(n??Pn)(E),g=L?` ${(T??Wn)(`(${L})`)}`:"",i=S?` [${S}]`:"",h=a?`${b}${g}: `:`${b}${g}${i}: `,m=r??xe.stdin,p=x??xe.stdout;t(p,h);let C="",B=false,P=M=>{B||(B=true,M(),m.off("data",W),m.off("end",I));},W=M=>{let J=typeof M=="string"?M:M.toString("utf8");if(J.includes("")){P(()=>w(new Error("Input canceled")));return}let K=o(C,J);if(C=K.buffer,!K.done)return;let X=K.line.length===0&&S!==void 0?S:K.line;P(()=>y(X));},I=()=>{if(B)return;let M=C.length===0&&S!==void 0?S:C;P(()=>y(M));};m.on("data",W),m.once("end",I),e(m);})}l.readText=s;async function c(f){let y=f.defaultValue!==false,E=(await s({message:f.message,hint:f.hint??`y/n, default ${y?"y":"n"}`,defaultValue:y?"y":"n",messageColor:f.messageColor,hintColor:f.hintColor,input:f.input,output:f.output})).trim().toLowerCase();return E===""?y:E==="y"||E==="yes"?true:E==="n"||E==="no"?false:c(f)}l.readConfirm=c;function d(f){return s({...f,hidden:true})}l.readPassword=d;})(Le||(Le={}));var Fn=e=>$(k(),u.heading,e),An=e=>$(k(),u.command,e),Nn=e=>$(k(),u.muted,e),Hn=e=>$(k(),u.warn,e),_n=e=>$(k(),u.accent,e);function Bn(e,t,o,s,c,d){let l=e;return l=l.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(f,y,w)=>`${d(y)} (${w})`),l=l.replace(/`([^`]+)`/g,(f,y)=>c(y)),l=l.replace(/\*\*([^*]+)\*\*/g,(f,y)=>o(y)),l=l.replace(/(^|[^*])\*([^*]+)\*(?!\*)/g,(f,y,w)=>`${y}${s(w)}`),l}function Jn(e,t={}){if(!e)return [];let o=t.headingColor??Fn,s=t.boldColor??An,c=t.italicColor??Nn,d=t.codeColor??Hn,l=t.linkColor??_n,f=n=>Bn(n,o,s,c,d,l),y=e.replace(/\r\n/g,`
31
+ `).split(`
32
+ `),w=[],E=false,L=[],S="",a=0,r=true,x=()=>{if(L.length!==0){w.push(d(`\`\`\`${S}`));for(let n of L)w.push(d(n));w.push(d("```")),L=[],S="";}};for(let n of y){let T=n;if(T.trim().startsWith("```")){if(!E){x(),E=true,S=T.trim().slice(3).trim(),w.push(d(`\`\`\`${S}`)),r=false;continue}for(let h of L)w.push(d(h));L=[],w.push(d("```")),E=false,S="",r=false;continue}if(E){L.push(T);continue}let b=/^(#{1,3})\s+(.+)$/.exec(T);if(b){let h=b[1]??"#",m=b[2]??"";w.push(o(`${h} ${f(m)}`)),r=false;continue}if(/^(\s*[-*_])\s*\1\s*\1[-*_\s]*$/.test(T)||/^---\s*$/.test(T)||/^\*\*\*\s*$/.test(T)){w.push(d("\u2500".repeat(40))),r=true;continue}let g=/^\s*[-*]\s+(.+)$/.exec(T),i=/^\s*\d+\.\s+(.+)$/.exec(T);if(g){let h=g[1]??"";w.push(` \u2022 ${f(h)}`),a=0,r=false;continue}if(i){let h=i[1]??"";a+=1,w.push(` ${a}. ${f(h)}`),r=false;continue}if(T.trim()===""){r||w.push(""),r=true,a=0;continue}w.push(f(T)),r=false,a=0;}return E&&x(),w}var ko=Q,Eo=Q.cancelSymbol;export{Le as Input,D as LOBSTER_PALETTE,le as Loader,Ie as Prompt,ko as Search,F as Symbol,Eo as cancelSymbol,Oe as clearActiveProgressLine,$ as colorize,kn as createSafeStreamWriter,qt as displayPath,Ce as displayString,tn as emitCommandJson,Qe as emitJson,rn as emitJsonError,nn as emitJsonOk,ye as expandHomePrefix,Jt as formatCommandExample,Yt as formatCount,zt as formatEmptyMessage,At as formatError,_t as formatHeading,Ht as formatInfo,Bt as formatKeyValue,mn as formatList,Vt as formatListItem,rt as formatListTruncated,tt as formatPrintHuman,Zt as formatRootLink,Xt as formatRootedLink,jt as formatSeparator,Kt as formatStatus,Ft as formatSuccess,ae as formatTerminalLink,Nt as formatWarning,k as isRich,ce as note,un as printHuman,dn as printRenderLines,bn as registerActiveProgressLine,nt as renderLines,Jn as renderMarkdown,On as renderTable,Ut as resolveConfigDir,ne as resolveEffectiveHomeDir,ze as resolveHomeDir,$e as resolveRequiredHomeDir,je as resolveUserPath,yn as restoreTerminalState,Sn as selectStyled,Ue as shortenHomeInString,Ge as shortenHomePath,ee as stripAnsi,Mn as styleHealthChannelLine,Re as stylePromptHint,ke as stylePromptMessage,Ee as stylePromptTitle,u as theme,vn as unregisterActiveProgressLine,j as visibleWidth,en as wrapError,qe as wrapJson,et as wrapNoteMessage};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easbot/terminal",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "description": "Terminal interaction toolkit for the EASBOT ecosystem — themed colors, ANSI utilities, OSC-8 hyperlinks, command formatting, table rendering, styled prompts, safe stream writes, and terminal-state recovery",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -47,9 +47,8 @@
47
47
  "dependencies": {
48
48
  "@clack/prompts": "^1.7.0",
49
49
  "chalk": "^6.0.0",
50
- "picocolors": "^1.1.1",
51
- "@easbot/types": "0.3.11",
52
- "@easbot/utils": "0.3.11"
50
+ "@easbot/utils": "0.3.13",
51
+ "@easbot/types": "0.3.13"
53
52
  },
54
53
  "devDependencies": {
55
54
  "@types/node": "^25.6.2",