moderado 0.4.34 → 0.4.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/commands/chat.d.ts +7 -70
  2. package/dist/commands/chat.d.ts.map +1 -1
  3. package/dist/commands/chat.js +279 -453
  4. package/dist/commands/chat.js.map +1 -1
  5. package/dist/commands/chat_meta.d.ts +36 -0
  6. package/dist/commands/chat_meta.d.ts.map +1 -0
  7. package/dist/commands/chat_meta.js +102 -0
  8. package/dist/commands/chat_meta.js.map +1 -0
  9. package/dist/commands/chat_outcome.d.ts +31 -0
  10. package/dist/commands/chat_outcome.d.ts.map +1 -0
  11. package/dist/commands/chat_outcome.js +70 -0
  12. package/dist/commands/chat_outcome.js.map +1 -0
  13. package/dist/commands/chat_search.d.ts +24 -0
  14. package/dist/commands/chat_search.d.ts.map +1 -0
  15. package/dist/commands/chat_search.js +61 -0
  16. package/dist/commands/chat_search.js.map +1 -0
  17. package/dist/commands/chat_slash.d.ts +17 -0
  18. package/dist/commands/chat_slash.d.ts.map +1 -0
  19. package/dist/commands/chat_slash.js +109 -0
  20. package/dist/commands/chat_slash.js.map +1 -0
  21. package/dist/commands/run.d.ts.map +1 -1
  22. package/dist/commands/run.js +25 -1
  23. package/dist/commands/run.js.map +1 -1
  24. package/dist/config.d.ts +1 -1
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js +18 -2
  27. package/dist/config.js.map +1 -1
  28. package/dist/diagnostic_log.d.ts.map +1 -1
  29. package/dist/diagnostic_log.js +1 -0
  30. package/dist/diagnostic_log.js.map +1 -1
  31. package/dist/sessions.d.ts.map +1 -1
  32. package/dist/sessions.js +5 -1
  33. package/dist/sessions.js.map +1 -1
  34. package/dist/transcript.d.ts +19 -0
  35. package/dist/transcript.d.ts.map +1 -0
  36. package/dist/transcript.js +76 -0
  37. package/dist/transcript.js.map +1 -0
  38. package/dist/turn_summary.d.ts +76 -0
  39. package/dist/turn_summary.d.ts.map +1 -0
  40. package/dist/turn_summary.js +305 -0
  41. package/dist/turn_summary.js.map +1 -0
  42. package/dist/ui/box.d.ts +19 -0
  43. package/dist/ui/box.d.ts.map +1 -1
  44. package/dist/ui/box.js +119 -12
  45. package/dist/ui/box.js.map +1 -1
  46. package/dist/ui/chart.d.ts +2 -0
  47. package/dist/ui/chart.d.ts.map +1 -0
  48. package/dist/ui/chart.js +97 -0
  49. package/dist/ui/chart.js.map +1 -0
  50. package/dist/ui/composer.d.ts +80 -0
  51. package/dist/ui/composer.d.ts.map +1 -0
  52. package/dist/ui/composer.js +883 -0
  53. package/dist/ui/composer.js.map +1 -0
  54. package/dist/ui/help_content.d.ts +2 -2
  55. package/dist/ui/help_content.d.ts.map +1 -1
  56. package/dist/ui/help_content.js +5 -3
  57. package/dist/ui/help_content.js.map +1 -1
  58. package/dist/ui/model_selector.d.ts +1 -0
  59. package/dist/ui/model_selector.d.ts.map +1 -1
  60. package/dist/ui/model_selector.js +61 -18
  61. package/dist/ui/model_selector.js.map +1 -1
  62. package/dist/ui/popup.d.ts.map +1 -1
  63. package/dist/ui/popup.js +7 -0
  64. package/dist/ui/popup.js.map +1 -1
  65. package/dist/ui/provider_connect.d.ts +8 -0
  66. package/dist/ui/provider_connect.d.ts.map +1 -1
  67. package/dist/ui/provider_connect.js +81 -23
  68. package/dist/ui/provider_connect.js.map +1 -1
  69. package/dist/ui/renderer.d.ts +49 -4
  70. package/dist/ui/renderer.d.ts.map +1 -1
  71. package/dist/ui/renderer.js +167 -31
  72. package/dist/ui/renderer.js.map +1 -1
  73. package/dist/ui/terminal_approval.d.ts +21 -0
  74. package/dist/ui/terminal_approval.d.ts.map +1 -1
  75. package/dist/ui/terminal_approval.js +145 -47
  76. package/dist/ui/terminal_approval.js.map +1 -1
  77. package/dist/ui/welcome.d.ts +274 -69
  78. package/dist/ui/welcome.d.ts.map +1 -1
  79. package/dist/ui/welcome.js +729 -700
  80. package/dist/ui/welcome.js.map +1 -1
  81. package/dist/vendor/providers/presets.d.ts +16 -0
  82. package/dist/vendor/providers/presets.d.ts.map +1 -1
  83. package/dist/vendor/providers/presets.js +13 -0
  84. package/dist/vendor/providers/presets.js.map +1 -1
  85. package/dist/vendor/tools/checkpoints.js +5 -5
  86. package/dist/vendor/tools/checkpoints.js.map +1 -1
  87. package/dist/vendor/tools/jail.d.ts +8 -0
  88. package/dist/vendor/tools/jail.d.ts.map +1 -1
  89. package/dist/vendor/tools/jail.js +13 -2
  90. package/dist/vendor/tools/jail.js.map +1 -1
  91. package/dist/vendor/tools/tools/apply_patch.d.ts.map +1 -1
  92. package/dist/vendor/tools/tools/apply_patch.js +6 -3
  93. package/dist/vendor/tools/tools/apply_patch.js.map +1 -1
  94. package/dist/vendor/tools/tools/git_diff.d.ts.map +1 -1
  95. package/dist/vendor/tools/tools/git_diff.js +5 -3
  96. package/dist/vendor/tools/tools/git_diff.js.map +1 -1
  97. package/package.json +1 -1
@@ -12,9 +12,19 @@ export interface WelcomeLayoutOptions {
12
12
  input?: string;
13
13
  inputCaret?: number;
14
14
  width?: number;
15
+ /** Input rows the composer may paint before it scrolls; defaults to the terminal height. */
16
+ maxInputRows?: number;
15
17
  /** When set, render the full chat window (question row 1 + answer) instead of the logo header. */
16
18
  chatQuestion?: string;
17
19
  chatAnswer?: string;
20
+ /** Rows the answer is scrolled up from its tail; 0 is the live view. */
21
+ chatAnswerOffset?: number;
22
+ /**
23
+ * Live activity for this turn. When set, the status row carries the current
24
+ * phase and the transcript below it starts with the activity log, so a full
25
+ * frame repaint shows the same thing the incremental paints do.
26
+ */
27
+ chatActivity?: ChatActivityBlock;
18
28
  chatThoughtTime?: number;
19
29
  /** Settled turn completed successfully — render the "✔ Done" status marker. */
20
30
  chatTaskDone?: boolean;
@@ -31,8 +41,70 @@ export interface WelcomeLayoutOptions {
31
41
  export declare const MODERADO_ASCII_LOGO: string[];
32
42
  export declare const COMMAND_HINT = "\u001B[38;5;242mUse \u001B[38;5;75m/\u001B[38;5;242m for slash commands, \u001B[38;5;75m@\u001B[38;5;242m for file mentions\u001B[0m";
33
43
  export declare function stripAnsi(str: string): string;
44
+ /**
45
+ * SGR mouse report, e.g. "\x1b[<0;12;5M" for a primary-button press on column 12
46
+ * of row 5. readline splits that escape into several keypress events ("0", ";",
47
+ * "5", "M"), so the raw data chunk is parsed instead of the derived keystrokes.
48
+ *
49
+ * These live here rather than in the composer because enabling and disabling
50
+ * mouse reporting is terminal state: `exitCleanly` has to turn it off too.
51
+ */
52
+ export declare const MOUSE_REPORT_PATTERN: RegExp;
53
+ export declare const MOUSE_REPORT_ON = "\u001B[?1000h\u001B[?1006h";
54
+ export declare const MOUSE_REPORT_OFF = "\u001B[?1000l\u001B[?1006l";
55
+ /**
56
+ * Ask the terminal to report keys whose legacy encoding is ambiguous
57
+ * (XTMODKEYS level 1), which is the only way Shift+Enter can be told apart from
58
+ * Enter. Level 1 leaves unambiguous keys — plain Ctrl+C, Shift+Tab, shifted
59
+ * letters — on their legacy bytes, so nothing else changes behaviour.
60
+ */
61
+ export declare const KEY_MODIFIER_REPORT_ON = "\u001B[>4;1m";
62
+ export declare const KEY_MODIFIER_REPORT_OFF = "\u001B[>4;0m";
63
+ /**
64
+ * One visual row of the composer input, as a slice of the raw text. Keeping the
65
+ * offsets means the caret, a click, and a repaint all address the same string
66
+ * instead of a re-flowed copy of it.
67
+ */
68
+ export interface ComposerRow {
69
+ text: string;
70
+ /** Index in the raw input where the row starts. */
71
+ start: number;
72
+ /** Index where the row ends (exclusive). */
73
+ end: number;
74
+ }
75
+ /** Split the composer text into the rows the card paints, wrapping at words. */
76
+ export declare function wrapComposerInput(input: string, width: number): ComposerRow[];
77
+ export interface ComposerView {
78
+ /** Rows to paint, already windowed to the rows the terminal can spare. */
79
+ rows: ComposerRow[];
80
+ /** Row index of the caret inside `rows`. */
81
+ caretRow: number;
82
+ /** Cell offset of the caret inside its row, 0 being the first text cell. */
83
+ caretColumn: number;
84
+ /** Rows scrolled out of view above and below the window. */
85
+ hiddenAbove: number;
86
+ hiddenBelow: number;
87
+ }
88
+ /**
89
+ * Resolve the composer text into painted rows plus the caret's place in them.
90
+ * The window follows the caret, so a long prompt scrolls inside the box instead
91
+ * of growing the card past the bottom of the terminal.
92
+ */
93
+ export declare function composerView(input: string, caret: number, width: number, maxRows?: number): ComposerView;
94
+ /** Caret index for a click `cells` into a painted row. */
95
+ export declare function composerCaretIndex(input: string, rows: ComposerRow[], rowOffset: number, cells: number): number;
96
+ /**
97
+ * Input rows the composer may show before it scrolls in place.
98
+ *
99
+ * The chat frame needs eight rows above the card (header, question, status,
100
+ * answer) and the card keeps four rows of its own furniture, so anything taller
101
+ * than this would scroll the composer off the screen.
102
+ */
103
+ export declare function getComposerInputMaxRows(height?: number): number;
34
104
  /** Card width: nearly full terminal width, like OpenCode/Cline. */
35
105
  export declare function getWelcomeCardWidth(width?: number): number;
106
+ /** Chat fills the available columns; the startup Welcome card keeps its own width. */
107
+ export declare function getChatCardWidth(width?: number): number;
36
108
  /** Left indent that centers a block of `blockWidth` visible columns on the terminal. */
37
109
  export declare function getWelcomeIndent(blockWidth: number, width?: number): number;
38
110
  /**
@@ -47,6 +119,59 @@ export declare function getChatAnswerArea(width?: number): {
47
119
  startColumn: number;
48
120
  wrapWidth: number;
49
121
  };
122
+ /** The chat header is a single compact brand row. */
123
+ export declare const CHAT_HEADER_ROWS = 1;
124
+ /** Rows the composer card occupies: blank surface, input, blank surface, mode, workspace. */
125
+ export declare const CHAT_COMPOSER_ROWS = 5;
126
+ export interface ChatLayout {
127
+ area: ReturnType<typeof getChatAnswerArea>;
128
+ questionTop: number;
129
+ questionRows: number;
130
+ statusRow: number;
131
+ answerTop: number;
132
+ answerRows: number;
133
+ composerTop: number;
134
+ /** Real viewport width used to size the chat card. */
135
+ terminalWidth: number;
136
+ }
137
+ /**
138
+ * Fixed row geometry for the chat window. The answer area is bounded by the
139
+ * composer: a long answer is windowed instead of pushing the input card, the
140
+ * mode row, and the workspace row off screen (or painting over them).
141
+ */
142
+ export declare function getChatLayout(width?: number, height?: number, question?: string, composerRows?: number): ChatLayout;
143
+ /** Rows the composer card occupies for a given layout, including any queued-commands box. */
144
+ export declare function getChatComposerRows(options: WelcomeLayoutOptions): number;
145
+ /**
146
+ * Wrap an answer for the card, marking the turn summary as it goes.
147
+ *
148
+ * The fence has to be resolved *before* wrapping, not after: a summary line that
149
+ * wraps would lose its marker on the continuation, and a block whose opening
150
+ * marker scrolled off the top would stop being styled exactly when it is
151
+ * longest. Every wrapped line inside the fence carries `SUMMARY_MARK`, so the
152
+ * renderer can tint any row on its own.
153
+ */
154
+ export declare function wrapAnswerLines(text: string, textWidth: number): string[];
155
+ /**
156
+ * Window the answer around an offset, measured in rows scrolled up from the
157
+ * tail. `offset = 0` is the live view (newest rows). One row is reserved for the
158
+ * "earlier lines hidden" note whenever anything is above the window.
159
+ */
160
+ export declare function windowChatAnswerAt(text: string, maxRows: number, textWidth: number, offsetFromBottom?: number): {
161
+ lines: string[];
162
+ hiddenAbove: number;
163
+ hiddenBelow: number;
164
+ };
165
+ /**
166
+ * Style one answer row.
167
+ *
168
+ * Inside the turn-summary fence every row becomes a band: a rail in the accent
169
+ * colour, a tinted background that reaches the right edge of the card, and
170
+ * headings in warm bold. This is what makes the report read as a different kind
171
+ * of thing from the prose above it, rather than three more paragraphs.
172
+ */
173
+ export declare function renderAnswerLine(line: string, textWidth: number): string;
174
+ export declare function chatAnswerOverflowNote(hidden: number): string;
50
175
  export declare function renderQueuedCommandsBox(commands: readonly string[], width: number): string[];
51
176
  export declare function renderWelcomeCard(options: WelcomeLayoutOptions): string;
52
177
  export interface SlashCommand {
@@ -59,6 +184,8 @@ export declare function selectCommandCandidate(input: string, currentIndex: numb
59
184
  export declare function renderSuggestionsBox(commands: SlashCommand[], width?: number, selectedIndex?: number): string[];
60
185
  export declare function renderMentionSuggestionsBox(files: string[], selectedIndex?: number, width?: number): string[];
61
186
  export declare function renderModeradoHeader(width?: number): string;
187
+ /** Compact wordmark used after the welcome screen transitions into chat. */
188
+ export declare function renderChatHeader(width?: number): string;
62
189
  /** Word-wrap plain text to `maxWidth` visible columns, hard-breaking long words. */
63
190
  export declare function wrapText(text: string, maxWidth: number): string[];
64
191
  /**
@@ -67,8 +194,13 @@ export declare function wrapText(text: string, maxWidth: number): string[];
67
194
  * same input card as the welcome window at the bottom.
68
195
  */
69
196
  export declare function renderChatScreen(options: WelcomeLayoutOptions, height?: number): string;
70
- /** Place the terminal cursor on the first row of the bottom composer. */
71
- export declare function renderChatComposerCursor(options: Pick<WelcomeLayoutOptions, 'width'>, inputLength: number): string;
197
+ /**
198
+ * Place the terminal cursor on the caret's row inside the input box. Passing
199
+ * the layout's `composerTop` addresses the row absolutely, which stays correct
200
+ * when the card grows (a queued-commands box or a wrapped prompt); the relative
201
+ * form is the legacy path.
202
+ */
203
+ export declare function renderChatComposerCursor(options: Pick<WelcomeLayoutOptions, 'width'>, input: string, composerTop?: number): string;
72
204
  export declare function navigateQuestionHistory(history: string[], direction: -1 | 1, index: number, draft: string): {
73
205
  input: string;
74
206
  index: number;
@@ -77,37 +209,163 @@ export declare function navigateQuestionHistory(history: string[], direction: -1
77
209
  export interface ChatActivity {
78
210
  /** Leading glyph: a spinner frame while the turn runs, a check when it settles. */
79
211
  glyph: string;
80
- /** What the agent is doing right now, for example `Running run_command`. */
212
+ /** What the agent is doing right now, for example `Editing src/app.ts`. */
213
+ label: string;
214
+ /**
215
+ * The newest reasoning text, already collapsed to one line. Only the tail is
216
+ * painted — enough to show the model is working through something, without
217
+ * turning the status row into a transcript.
218
+ */
219
+ reasoning?: string;
220
+ /**
221
+ * Replaces the turn clock on the row. Used while waiting on the model, where
222
+ * "no output for 30s" says more than the total turn time.
223
+ */
224
+ elapsedLabel?: string;
225
+ }
226
+ /** Silence before the row admits it is waiting on the model. */
227
+ export declare const WAIT_NOTICE_AFTER_MS = 10000;
228
+ /** How often that notice is refreshed while the wait continues. */
229
+ export declare const WAIT_NOTICE_REPEAT_MS = 20000;
230
+ export interface WaitNotice {
231
+ /** Phase label for the row. */
81
232
  label: string;
233
+ /** Clock replacement; only set once the wait has been re-announced. */
234
+ elapsedLabel?: string;
82
235
  }
236
+ /**
237
+ * What to say while the model has produced nothing.
238
+ *
239
+ * Silent for the first ten seconds — that is normal inference. After that the
240
+ * row says it is waiting, and re-announces every twenty seconds with the length
241
+ * of the silence, so a long wait never looks like a hung process. The bucket is
242
+ * quantised so the line changes on that cadence instead of every second.
243
+ */
244
+ export declare function describeWait(silentForMs: number): WaitNotice | undefined;
245
+ /**
246
+ * Elapsed time as a short label: `8s`, `1m 04s`.
247
+ *
248
+ * This replaced the step counter. `Step 1/25` was true for minutes at a time
249
+ * while one inference ran, so it measured the engine's internal loop rather
250
+ * than anything the person waiting could act on.
251
+ */
252
+ export declare function formatElapsed(seconds: number): string;
253
+ /**
254
+ * Shorten the middle of a label, keeping the head (the verb) and the tail (the
255
+ * filename, which is the part a person actually reads). Measured in terminal
256
+ * cells, not code units, so a CJK path cannot overflow the card.
257
+ */
258
+ export declare function elideMiddle(text: string, max: number): string;
259
+ /**
260
+ * Shorten the engine's progress sentence into a phase the user can follow.
261
+ *
262
+ * The status row is the only thing moving during a long, silent inference — the
263
+ * reasoning stream is deliberately not displayed — so it names what the agent is
264
+ * doing instead of repeating the step counter.
265
+ */
266
+ export declare function describeActivity(status: string): string;
267
+ /**
268
+ * Name the work a tool call is about to do, from its parameters.
269
+ *
270
+ * `Running read_file` told the person nothing they could not already see; the
271
+ * path does. This is the part of the status row that keeps moving during a long
272
+ * coding turn, so it carries the real target.
273
+ */
274
+ export declare function describeToolActivity(toolName: string, parameters?: Record<string, unknown>): string;
83
275
  /**
84
276
  * Update the fixed chat elapsed-time row without repainting the terminal.
85
277
  * With an activity, the row is a live "still running" indicator that stays
86
278
  * visible after text starts streaming and during silent tool execution.
87
279
  */
88
- export declare function renderChatThoughtTimeUpdate(thoughtTime: number, taskStep?: {
89
- step: number;
90
- maxSteps: number;
91
- }, width?: number, activity?: ChatActivity): string;
92
- export interface ChatAnswerPosition {
93
- row: number;
94
- column: number;
280
+ export declare function renderChatThoughtTimeUpdate(thoughtTime: number, width?: number, activity?: ChatActivity, row?: number): string;
281
+ /** One tool call in the live activity log. */
282
+ export interface ActivityEntry {
283
+ /** `⠼` while running, `✔` done, `✖` failed, `⊘` denied. */
284
+ glyph: string;
285
+ /** Already humanised: `Reading src/ui/welcome.ts`, not `read_file`. */
286
+ label: string;
287
+ tone: 'active' | 'done' | 'failed';
288
+ }
289
+ /** Everything the live activity block needs for one frame. */
290
+ export interface ChatActivityBlock {
291
+ glyph: string;
292
+ label: string;
293
+ /** Newest reasoning tail, wrapped over as many rows as it can fill. */
294
+ reasoning?: string;
295
+ /** Replaces the turn clock while waiting on the model. */
296
+ elapsedLabel?: string;
297
+ /** Oldest first; the newest entry sits closest to the current phase. */
298
+ history?: ActivityEntry[];
95
299
  }
96
300
  /**
97
- * Write one streamed fragment into the answer area without repainting the chat
98
- * frame. Wrapped lines return to `startColumn` so the answer keeps the same
99
- * columns as the composer card instead of stretching across the terminal.
301
+ * Cells the transcript may use on this layout.
302
+ *
303
+ * The card has a 70-column floor, the terminal does not: on a narrow window the
304
+ * transcript still has to stop at the screen edge, not at the card's. Wrapping
305
+ * to the card width and painting anyway is what let a long row spill past the
306
+ * right border of the frame, so the wrap width is the narrower of the two and
307
+ * every row is clamped to it.
100
308
  */
101
- export declare function renderChatAnswerDelta(delta: string, start: ChatAnswerPosition, width: number, startColumn?: number): ChatAnswerPosition & {
102
- sequence: string;
309
+ export declare function getChatTranscriptWidth(layout: ChatLayout): number;
310
+ /**
311
+ * Rows of the live turn transcript: the activity log first, the answer after.
312
+ *
313
+ * This is the Cline model. Cline keeps one scrollable list where every action
314
+ * and every message is a row, the newest pinned to the bottom and the rest
315
+ * reachable by scrolling. Merging the two here is what fixes "the output
316
+ * becomes one line again": the activity log used to be a separate block that
317
+ * handed its rows back the moment the first token streamed, so a long fix
318
+ * explanation left nothing on screen but a single clipped status row — exactly
319
+ * when there was most to read.
320
+ *
321
+ * The log and the answer now share the window, so the record of what the agent
322
+ * did and the answer it produced are read in one place and scroll together.
323
+ */
324
+ export declare function buildChatTranscriptRows(activity: ChatActivityBlock | undefined, answer: string, textWidth: number): {
325
+ rows: string[];
326
+ answerStart: number;
103
327
  };
328
+ /**
329
+ * Window the transcript around an offset, measured in rows scrolled up from the
330
+ * tail. `offset = 0` is the live view (newest rows). One row is reserved for
331
+ * the "earlier lines hidden" note whenever anything is above the window.
332
+ */
333
+ export declare function windowChatTranscriptAt(rows: readonly string[], maxRows: number, offsetFromBottom?: number): {
334
+ lines: string[];
335
+ hiddenAbove: number;
336
+ hiddenBelow: number;
337
+ };
338
+ /** Rows the transcript occupies for a layout; 0 when the viewport is tiny. */
339
+ export declare function getChatTranscriptRows(layout: ChatLayout): number;
340
+ /**
341
+ * Paint the pinned phase header on the status row.
342
+ *
343
+ * One row, always: the phase and its clock. Everything it used to squeeze into
344
+ * that row now lives in the transcript below it.
345
+ */
346
+ export declare function renderChatTranscriptHeader(activity: ChatActivityBlock, layout: ChatLayout, thoughtTime: number): string;
347
+ /**
348
+ * Repaint the transcript in place: exactly the rows the layout reserves,
349
+ * between the status row and the composer. The window scrolls (oldest rows
350
+ * leave first) instead of writing over the composer, so a long turn can never
351
+ * damage the bottom rows. The cursor is saved and restored, so the caller keeps
352
+ * its position on the input line.
353
+ *
354
+ * Unlike the answer window it replaced, this never gives its rows up: the log
355
+ * and the answer are one list, so the newest rows stay on screen and the rest
356
+ * is one PgUp away. Every row is clamped to the card in terminal cells, so a
357
+ * wide CJK glyph or a long path cannot push a row past the right border.
358
+ */
359
+ export declare function renderChatTranscriptWindow(activity: ChatActivityBlock | undefined, answer: string, layout: ChatLayout, offsetFromBottom?: number): string;
104
360
  export declare function renderFullWelcomeScreen(options: WelcomeLayoutOptions, height?: number): string;
105
361
  /** Keep the initial welcome screen centered as the terminal viewport changes. */
106
362
  export declare function getWelcomeBottomPadding(options: WelcomeLayoutOptions, height?: number): number;
107
363
  export declare function renderCenteredWelcomeScreen(options: WelcomeLayoutOptions, height?: number): string;
108
364
  /** Compose an OpenCode-style popup layer without losing the welcome background. */
109
365
  export declare function renderWelcomePopupLayer(options: WelcomeLayoutOptions, popupLines: string[], width?: number, height?: number): string;
110
- export declare function renderHelpPopupBox(version: string, workspace: string, width?: number): string[];
366
+ export declare function renderHelpPopupBox(_version: string, workspace: string, width?: number): string[];
367
+ /** Render a centered "About" popup with version and copyright info. */
368
+ export declare function renderAboutPopupBox(version: string): string[];
111
369
  export declare let terminalCleanExitDone: boolean;
112
370
  /** Mark that a clean exit already restored + cleared the terminal (guards the process 'exit' hook). */
113
371
  export declare function notifyCleanExit(): void;
@@ -128,59 +386,6 @@ export declare function renderExitMessage(message: string): string;
128
386
  * settles so callers stop while the event loop drains.
129
387
  */
130
388
  export declare function exitCleanly(message: string): Promise<never>;
131
- export interface InteractiveTurnResult {
132
- text: string;
133
- mode: 'Plan' | 'Execute';
134
- autoApprove: boolean;
135
- workflowAction?: 'build';
136
- }
137
- export interface PromptInteractiveTurnOptions {
138
- model: string;
139
- getProviderName?: () => string | undefined;
140
- tokens: number;
141
- cost: string;
142
- usageAvailable?: boolean;
143
- usageEstimated?: boolean;
144
- workspace: string;
145
- version?: string;
146
- initialMode?: 'Plan' | 'Execute';
147
- initialAutoApprove?: boolean;
148
- isFirstTurn?: boolean;
149
- signal?: AbortSignal;
150
- /** Previous turn's question/answer — when question is set, render the full chat window (no logo). */
151
- chatQuestion?: string;
152
- chatAnswer?: string;
153
- chatThoughtTime?: number;
154
- chatTaskDone?: boolean;
155
- outputTokenRate?: number;
156
- tokenUsage?: UsageEvent;
157
- questionHistory?: string[];
158
- /**
159
- * Called when user selects a model via /model. Receives a `drawFrame`
160
- * callback that composites popup content as a floating layer on top of the
161
- * main TUI window (background stays as-is). The callback owns the selection
162
- * UI and returns the new model id, or undefined if cancelled.
163
- */
164
- onModelSelect?: (drawFrame: (popupLines: string[]) => void) => Promise<string | undefined>;
165
- /** Returns a queued prompt that should start immediately after a popup closes. */
166
- takeAutoContinuePrompt?: () => string | undefined;
167
- /** Called when user issues /connect. Returns the model label to display. */
168
- onConnect?: (drawFrame: (popupLines: string[]) => void) => Promise<string | undefined>;
169
- /** Called when user issues /clear so caller can reset conversation history. */
170
- onClear?: () => void;
171
- onExit?: () => string;
172
- onMcp?: (command: string, drawFrame: (popupLines: string[]) => void) => Promise<void>;
173
- onSession?: (command: string, drawFrame: (popupLines: string[]) => void) => Promise<void>;
174
- onQueue?: (command: string, drawFrame: (popupLines: string[]) => void) => Promise<void>;
175
- onBtw?: (command: string, drawFrame: (popupLines: string[], options?: {
176
- waitDismiss?: boolean;
177
- }) => void | Promise<void>, signal?: AbortSignal) => Promise<void>;
178
- onWorkflow?: (command: string, drawFrame: (popupLines: string[]) => void) => Promise<'build' | undefined>;
179
- onInit?: (drawFrame: (popupLines: string[]) => void) => Promise<void>;
180
- onMentionComplete?: (token: string) => Promise<string[]>;
181
- queuedCommands?: readonly string[];
182
- }
183
- export declare function promptInteractiveTurn(options: PromptInteractiveTurnOptions): Promise<InteractiveTurnResult>;
184
389
  /** A cumulative task snapshot; a request ending does not mean the task ended. */
185
390
  export declare function formatTokenUsage(event: UsageEvent): string;
186
391
  /** Update only the chat status row, preserving the answer/composer cursor. */
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/ui/welcome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/ui/welcome.ts"],"names":[],"mappings":"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"}