@aiwayds/dsh-tui-pi 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/panels.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Reusable select-panel framework — the shared building blocks behind every
3
3
  * picker/browser overlay in this TUI (agents table, field windows, viewers,
4
- * and future migrations of the /model, /settings and /resume surfaces).
4
+ * the /settings browser, and future migrations of the /model and /resume
5
+ * surfaces).
5
6
  *
6
7
  * What lives here:
7
8
  *
@@ -18,6 +19,10 @@
18
19
  * - `FieldPanel` — a title + read-only content block + editable field rows
19
20
  * (Enter edits the focused row, optional single-key shortcuts).
20
21
  * - `ViewerPanel` — a read-only line viewer with a line cap.
22
+ * - `SettingsListPanel` — a searchable settings-list panel (title header,
23
+ * whole-row selection, optional inline type-to-filter, footer + scroll
24
+ * info, submenus rendered in place): the FW-native replacement for the
25
+ * /settings browser's old pi-tui SettingsList.
21
26
  * - `PanelHost` — overlay lifecycle: swap to a new overlay (show-new-then-
22
27
  * hide-old, no focus flash), teardown on showOverlay failure, one host
23
28
  * per interactive flow.
@@ -74,6 +79,8 @@ export interface PanelThemeFns {
74
79
  muted(text: string): string;
75
80
  subtle(text: string): string;
76
81
  attention(text: string): string;
82
+ /** Success green — e.g. an enabled state in a toggle list. */
83
+ success(text: string): string;
77
84
  }
78
85
  /** Build the standard fg wrappers from a TuiTheme. */
79
86
  export declare function panelThemeFns(theme: TuiTheme): PanelThemeFns;
@@ -157,6 +164,74 @@ export declare class ViewerPanel implements Component {
157
164
  render(width: number): string[];
158
165
  handleInput(data: string): void;
159
166
  }
167
+ /** One row of a SettingsListPanel. */
168
+ export interface SettingsRow {
169
+ id: string;
170
+ /** Display label (left side; also the search text). */
171
+ label: string;
172
+ /** Current value to display (right side). */
173
+ value: string;
174
+ /** Optional description shown under the selected row. */
175
+ description?: string;
176
+ /** Cycle-eligible rows: Enter advances to the next value, then onChange. */
177
+ values?: string[];
178
+ /** Rows with an action: Enter opens the submenu (rendered in place). */
179
+ submenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;
180
+ }
181
+ /** Options for a SettingsListPanel. */
182
+ export interface SettingsListPanelOptions {
183
+ /** Header line, rendered accent BOLD. */
184
+ title: string;
185
+ rows: readonly SettingsRow[];
186
+ /** Called when a cycle row advances (id + new value). */
187
+ onChange?: (id: string, newValue: string) => void;
188
+ onCancel(): void;
189
+ footer?: string;
190
+ /** Inline type-to-filter on the label; Esc clears the filter before popping. */
191
+ enableSearch?: boolean;
192
+ /** Visible rows before scrolling (default 10). */
193
+ maxVisible?: number;
194
+ }
195
+ /**
196
+ * Filter settings rows by a fuzzy query on the label — the same matching the
197
+ * old pi-tui SettingsList used, so search behavior is preserved (case-
198
+ * insensitive, whitespace/slash-separated tokens, best-match-first order).
199
+ * An empty query returns all rows unchanged.
200
+ */
201
+ export declare function filterSettingsRows(rows: readonly SettingsRow[], query: string): SettingsRow[];
202
+ /**
203
+ * A searchable list panel in the FW style — the native replacement for the
204
+ * /settings browser's pi-tui SettingsList. Renders an accent BOLD title, then
205
+ * aligned label/value rows with whole-row selection (accent BOLD when
206
+ * selected, muted otherwise), an optional inline type-to-filter (like the
207
+ * Skills panel), the selected row's description and a footer with scroll
208
+ * info. Submenus render in place (the same nested-overlay model as the old
209
+ * SettingsList), so the browser keeps a single framed overlay for the whole
210
+ * flow. Rows never paint their own background — the FramedOverlay fills the
211
+ * canvasSubtle backdrop.
212
+ */
213
+ export declare class SettingsListPanel implements Component {
214
+ private readonly theme;
215
+ private readonly options;
216
+ private readonly controller;
217
+ private readonly rows;
218
+ private filterQuery;
219
+ private submenu;
220
+ private submenuIndex;
221
+ constructor(theme: TuiTheme, options: SettingsListPanelOptions);
222
+ invalidate(): void;
223
+ /** Update one row's displayed value by id (the browser refreshes after writes). */
224
+ updateValue(id: string, newValue: string): void;
225
+ /** The rows after the active filter query (label-only fuzzy match). */
226
+ private filtered;
227
+ render(width: number): string[];
228
+ handleInput(data: string): void;
229
+ /** Open a row's submenu in place, or advance a cycle row. */
230
+ private activateRow;
231
+ private closeSubmenu;
232
+ /** Base footer hint; swaps to the filter hint while a query is active. */
233
+ private hint;
234
+ }
160
235
  /** Overlay size literal accepted by `TUI.showOverlay`. */
161
236
  export type PanelSize = number | `${number}%`;
162
237
  /**
package/lib/panels.js CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Reusable select-panel framework — the shared building blocks behind every
3
3
  * picker/browser overlay in this TUI (agents table, field windows, viewers,
4
- * and future migrations of the /model, /settings and /resume surfaces).
4
+ * the /settings browser, and future migrations of the /model and /resume
5
+ * surfaces).
5
6
  *
6
7
  * What lives here:
7
8
  *
@@ -18,11 +19,15 @@
18
19
  * - `FieldPanel` — a title + read-only content block + editable field rows
19
20
  * (Enter edits the focused row, optional single-key shortcuts).
20
21
  * - `ViewerPanel` — a read-only line viewer with a line cap.
22
+ * - `SettingsListPanel` — a searchable settings-list panel (title header,
23
+ * whole-row selection, optional inline type-to-filter, footer + scroll
24
+ * info, submenus rendered in place): the FW-native replacement for the
25
+ * /settings browser's old pi-tui SettingsList.
21
26
  * - `PanelHost` — overlay lifecycle: swap to a new overlay (show-new-then-
22
27
  * hide-old, no focus flash), teardown on showOverlay failure, one host
23
28
  * per interactive flow.
24
29
  */
25
- import { getKeybindings, } from '@earendil-works/pi-tui';
30
+ import { fuzzyFilter, getKeybindings, matchesKey, } from '@earendil-works/pi-tui';
26
31
  import { wrapFramedOverlay } from "./frame.js";
27
32
  import { ansiFg, BOLD, RESET } from "./theme/index.js";
28
33
  import { clipToWidth, visibleWidth } from "./text.js";
@@ -110,6 +115,7 @@ export function panelThemeFns(theme) {
110
115
  muted: fg(theme.palette.fgMuted),
111
116
  subtle: fg(theme.palette.fgSubtle),
112
117
  attention: fg(theme.palette.attention),
118
+ success: fg(theme.palette.success),
113
119
  };
114
120
  }
115
121
  /** Shared navigation keys; returns true when `data` was consumed. */
@@ -292,6 +298,176 @@ export class ViewerPanel {
292
298
  }
293
299
  }
294
300
  }
301
+ /**
302
+ * Filter settings rows by a fuzzy query on the label — the same matching the
303
+ * old pi-tui SettingsList used, so search behavior is preserved (case-
304
+ * insensitive, whitespace/slash-separated tokens, best-match-first order).
305
+ * An empty query returns all rows unchanged.
306
+ */
307
+ export function filterSettingsRows(rows, query) {
308
+ return fuzzyFilter([...rows], query, row => row.label);
309
+ }
310
+ /** Single printable keystroke (filter accumulation); excludes DEL/control. */
311
+ function isPrintable(data) {
312
+ return data.length === 1 && data.charCodeAt(0) >= 0x20 && data.charCodeAt(0) !== 0x7f;
313
+ }
314
+ /**
315
+ * A searchable list panel in the FW style — the native replacement for the
316
+ * /settings browser's pi-tui SettingsList. Renders an accent BOLD title, then
317
+ * aligned label/value rows with whole-row selection (accent BOLD when
318
+ * selected, muted otherwise), an optional inline type-to-filter (like the
319
+ * Skills panel), the selected row's description and a footer with scroll
320
+ * info. Submenus render in place (the same nested-overlay model as the old
321
+ * SettingsList), so the browser keeps a single framed overlay for the whole
322
+ * flow. Rows never paint their own background — the FramedOverlay fills the
323
+ * canvasSubtle backdrop.
324
+ */
325
+ export class SettingsListPanel {
326
+ theme;
327
+ options;
328
+ controller;
329
+ rows;
330
+ filterQuery = '';
331
+ submenu;
332
+ submenuIndex = 0;
333
+ constructor(theme, options) {
334
+ this.theme = theme;
335
+ this.options = options;
336
+ this.rows = [...options.rows];
337
+ this.controller = new ListController(() => this.filtered().length, options.maxVisible ?? 10);
338
+ }
339
+ invalidate() {
340
+ this.submenu?.invalidate();
341
+ }
342
+ /** Update one row's displayed value by id (the browser refreshes after writes). */
343
+ updateValue(id, newValue) {
344
+ const row = this.rows.find(row => row.id === id);
345
+ if (row !== undefined)
346
+ row.value = newValue;
347
+ }
348
+ /** The rows after the active filter query (label-only fuzzy match). */
349
+ filtered() {
350
+ return filterSettingsRows(this.rows, this.options.enableSearch === true ? this.filterQuery : '');
351
+ }
352
+ render(width) {
353
+ if (this.submenu !== undefined)
354
+ return this.submenu.render(width);
355
+ const fns = panelThemeFns(this.theme);
356
+ const { title, footer, enableSearch } = this.options;
357
+ const wrap = Math.max(2, width - 2);
358
+ const lines = [
359
+ fns.accent(BOLD + clipToWidth(title, wrap) + RESET),
360
+ '',
361
+ ];
362
+ const rows = this.filtered();
363
+ if (rows.length === 0) {
364
+ lines.push(fns.muted(' No matching settings'));
365
+ lines.push('');
366
+ lines.push(fns.subtle(clipToWidth(this.hint(footer, enableSearch === true), wrap)));
367
+ return lines;
368
+ }
369
+ const controller = this.controller;
370
+ // Align the value column across all rows (stable under filtering); the
371
+ // label column takes what the marker, value and separator leave over.
372
+ const valueWidth = Math.min(28, Math.max(...this.rows.map(row => visibleWidth(row.value)), 0));
373
+ const labelWidth = Math.max(4, wrap - MARKER_W - valueWidth - 2);
374
+ for (let i = controller.scroll; i < Math.min(rows.length, controller.scroll + controller.maxVisible); i++) {
375
+ const row = rows[i];
376
+ const selected = i === controller.index;
377
+ const line = clipToWidth(`${rowMarker(selected)}${padCell(row.label, labelWidth)} ${padCell(row.value, valueWidth)}`, wrap);
378
+ lines.push(selected ? fns.accent(BOLD + line + RESET) : fns.muted(line));
379
+ }
380
+ const selectedRow = rows[controller.index];
381
+ if (selectedRow?.description !== undefined && selectedRow.description !== '') {
382
+ lines.push(fns.subtle(clipToWidth(` ${selectedRow.description}`, wrap)));
383
+ }
384
+ lines.push('');
385
+ lines.push(fns.subtle(clipToWidth(this.hint(footer, enableSearch === true) + scrollInfo(controller, rows.length), wrap)));
386
+ return lines;
387
+ }
388
+ handleInput(data) {
389
+ if (this.submenu !== undefined) {
390
+ this.submenu.handleInput?.(data);
391
+ return;
392
+ }
393
+ const kb = getKeybindings();
394
+ if (kb.matches(data, 'tui.select.cancel')) {
395
+ // Esc with an active filter clears it first; a second Esc pops back.
396
+ if (this.filterQuery !== '') {
397
+ this.filterQuery = '';
398
+ this.controller.setIndex(0);
399
+ return;
400
+ }
401
+ this.options.onCancel();
402
+ return;
403
+ }
404
+ if (handleListKeys(data, this.controller, this.filtered().length))
405
+ return;
406
+ if (kb.matches(data, 'tui.select.confirm')) {
407
+ this.activateRow();
408
+ return;
409
+ }
410
+ // Space confirms like Enter, unless it continues an active search query.
411
+ if (data === ' ') {
412
+ if (this.options.enableSearch === true && this.filterQuery !== '') {
413
+ this.filterQuery += ' ';
414
+ this.controller.setIndex(0);
415
+ return;
416
+ }
417
+ this.activateRow();
418
+ return;
419
+ }
420
+ if (this.options.enableSearch !== true)
421
+ return;
422
+ if (data === '\x7f' || matchesKey(data, 'backspace')) {
423
+ if (this.filterQuery !== '') {
424
+ this.filterQuery = this.filterQuery.slice(0, -1);
425
+ this.controller.setIndex(0);
426
+ }
427
+ return;
428
+ }
429
+ if (isPrintable(data)) {
430
+ this.filterQuery += data;
431
+ this.controller.setIndex(0);
432
+ }
433
+ }
434
+ /** Open a row's submenu in place, or advance a cycle row. */
435
+ activateRow() {
436
+ const rows = this.filtered();
437
+ const row = rows[this.controller.index];
438
+ if (row === undefined)
439
+ return;
440
+ if (row.submenu !== undefined) {
441
+ this.submenuIndex = this.controller.index;
442
+ this.submenu = row.submenu(row.value, selectedValue => {
443
+ if (selectedValue !== undefined) {
444
+ row.value = selectedValue;
445
+ this.options.onChange?.(row.id, selectedValue);
446
+ }
447
+ this.closeSubmenu();
448
+ });
449
+ return;
450
+ }
451
+ if (row.values !== undefined && row.values.length > 0) {
452
+ const current = row.values.indexOf(row.value);
453
+ const next = (current + 1) % row.values.length;
454
+ row.value = row.values[next];
455
+ this.options.onChange?.(row.id, row.value);
456
+ }
457
+ }
458
+ closeSubmenu() {
459
+ this.submenu = undefined;
460
+ this.controller.setIndex(this.submenuIndex);
461
+ }
462
+ /** Base footer hint; swaps to the filter hint while a query is active. */
463
+ hint(footer, searchable) {
464
+ if (this.filterQuery !== '')
465
+ return `Filter: ${this.filterQuery} · Backspace clear · Esc clear filter`;
466
+ return footer ?? (searchable
467
+ ? '↑↓ navigate · Enter select · Type to search · Esc back'
468
+ : '↑↓ navigate · Enter select · Esc back');
469
+ }
470
+ }
295
471
  /**
296
472
  * Overlay lifecycle for one interactive flow: swap overlays (show the next
297
473
  * before hiding the previous — no focus flash), tear down cleanly on a
package/lib/panels.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"panels.js","sourceRoot":"","sources":["../src/panels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,cAAc,GAIf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAiB,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAErD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAA;AAEzB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAA;AAE9B,gDAAgD;AAChD,MAAM,cAAc,GAAG,CAAC,CAAA;AAExB;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,QAA0B,MAAM;IACnF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,OAAO,CAAA;IAC5B,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAClF,CAAC;AAaD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAA+B;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,CAAA;IAChE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACxF,CAAC;AAED,kEAAkE;AAClE,MAAM,OAAO,cAAc;IACzB,KAAK,GAAG,CAAC,CAAA;IACT,MAAM,GAAG,CAAC,CAAA;IACD,UAAU,CAAQ;IACV,MAAM,CAAc;IAErC,YAAY,MAAoB,EAAE,UAAU,GAAG,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,EAAE;QACA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,EAAE,CAAA;QAChC,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,EAAE,CAAA;QAChD,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;QACtD,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QACnF,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;aACjD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;IACtG,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,UAAU,SAAS,CAAC,QAAiB;IACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/B,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,UAA0B,EAAE,MAAc;IACnE,OAAO,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;AACrF,CAAC;AAUD,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,MAAM,EAAE,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA;IACxE,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAChC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAClC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAA;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,UAA0B,EAAE,MAAc;IACrF,MAAM,EAAE,GAAG,cAAc,EAAE,CAAA;IAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;QACtC,UAAU,CAAC,EAAE,EAAE,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,EAAE,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;QAC1C,UAAU,CAAC,MAAM,EAAE,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC5C,UAAU,CAAC,QAAQ,EAAE,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAcD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACJ,KAAK,CAAU;IACf,OAAO,CAAsB;IAC7B,UAAU,CAAgB;IAE3C,YAAY,KAAe,EAAE,OAA6B;QACxD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAClF,CAAC;IAED,UAAU,KAAU,CAAC;IAErB,MAAM,CAAC,KAAa;QAClB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;QAChD,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO;aAC7C,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;aAClE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1G,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,MAAM,QAAQ,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAA;YACvC,MAAM,KAAK,GAAG,OAAO;iBAClB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC7E,IAAI,CAAC,IAAI,CAAC,CAAA;YACb,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAA;YAC7C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,IAAI,uCAAuC,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QACxI,OAAO,KAAK,CAAA;IACd,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAM;QACtE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAA;QAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5D,CAAC;aAAM,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;CACF;AAyBD;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACJ,KAAK,CAAU;IACf,OAAO,CAAmB;IAC1B,UAAU,CAAgB;IAC1B,QAAQ,CAAQ;IAEjC,YAAY,KAAe,EAAE,OAA0B;QACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtF,CAAC;IAED,UAAU,KAAU,CAAC;IAErB,MAAM,CAAC,KAAa;QAClB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACnC,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,QAAQ,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAA;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;YAClC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;YAC3E,MAAM,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAA;YAC9E,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC3E,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;YAClF,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,EAAE,EAAE,CAAA;QAC7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,kCAAkC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAM;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,EAAE,CAAA;YACV,OAAM;QACR,CAAC;QACD,MAAM,EAAE,GAAG,cAAc,EAAE,CAAA;QAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;aAAM,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;CACF;AAYD,kEAAkE;AAClE,MAAM,OAAO,WAAW;IACL,KAAK,CAAU;IACf,OAAO,CAAoB;IAE5C,YAAY,KAAe,EAAE,OAA2B;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,UAAU,KAAU,CAAC;IAErB,MAAM,CAAC,KAAa;QAClB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACnC,MAAM,GAAG,GAAa;YACpB,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YACnD,EAAE;SACH,CAAA;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,QAAQ,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACtF,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACZ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAA;QAChD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,MAAM,EAAE,GAAG,cAAc,EAAE,CAAA;QAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;IACH,CAAC;CACF;AAKD;;;;;GAKG;AACH,MAAM,OAAO,SAAS;IACH,GAAG,CAAK;IACR,KAAK,CAAU;IACf,OAAO,CAAyC;IACzD,OAAO,CAA2B;IAE1C,YAAY,GAAQ,EAAE,KAAe,EAAE,OAAmC;QACxE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,mFAAmF;IACnF,IAAI,CAAC,SAAoB,EAAE,QAAmB,KAAK,EAAE,YAAuB,KAAK;QAC/E,IAAI,IAAmB,CAAA;QACvB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACtE,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"panels.js","sourceRoot":"","sources":["../src/panels.ts"],"names":[],"mappings":"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"}
package/lib/settings.d.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  * settings surface (schema-form driven there, pi-tui overlays here).
4
4
  *
5
5
  * Walks `ctx.settings.describe()` (registered namespaces → serialized
6
- * schemastery schemas → resolved values) and renders it as nested
7
- * SettingsList overlays, one level per schema depth:
6
+ * schemastery schemas → resolved values) and renders it as nested FW list
7
+ * panels (src/panels.ts SettingsListPanel), one level per schema depth:
8
8
  *
9
9
  * level 0 category list (searchable): general / models / plugins / agent,
10
10
  * then `other` for unmapped namespaces. Namespace→category comes
@@ -37,6 +37,7 @@ import type { Context } from '@deepseek-ai/cordis';
37
37
  import { type SchemaNode } from '@deepseek-ai/dsh-client-schema-form';
38
38
  import { type Component, type TUI } from '@earendil-works/pi-tui';
39
39
  import { type TuiTheme } from './theme/index.ts';
40
+ import { type ProviderCatalogEntry } from './provider-catalog.ts';
40
41
  export interface SettingsCategory {
41
42
  id: string;
42
43
  label: string;
@@ -138,6 +139,7 @@ export interface EditOptions {
138
139
  /** Inline value editor: title, current-value line, error/notice line, Input. */
139
140
  export declare class EditField implements Component {
140
141
  private readonly tui;
142
+ private readonly theme;
141
143
  private readonly options;
142
144
  private readonly input;
143
145
  private error;
@@ -147,11 +149,7 @@ export declare class EditField implements Component {
147
149
  private pending;
148
150
  /** Guards onDone: exactly one terminal transition (submit success/keep/escape). */
149
151
  private done;
150
- private readonly fg;
151
- private readonly fgMuted;
152
152
  private readonly fgDanger;
153
- /** Popup-surface background for the secret mask line. */
154
- private readonly maskBg;
155
153
  constructor(tui: TUI, options: EditOptions, theme: TuiTheme);
156
154
  /** Terminal transition — runs the caller's onDone exactly once. */
157
155
  private finish;
@@ -161,11 +159,69 @@ export declare class EditField implements Component {
161
159
  * Masked input line for secret fields: a dot row (one dot per visible
162
160
  * column of the value, capped to the popup width) with a `▎` marker at the
163
161
  * cursor position. The real cursor is not rendered — the marker only hints
164
- * at the editing position; input semantics live in the internal Input.
162
+ * at the editing position; input semantics live in the internal Input. The
163
+ * row needs no background of its own — FramedOverlay fills the canvasSubtle
164
+ * backdrop.
165
165
  */
166
166
  private maskLine;
167
167
  handleInput(data: string): void;
168
168
  }
169
+ /** Commit a provider (profile + key); resolves with an outcome or none. */
170
+ export interface AddProviderOptions {
171
+ /** Catalog entries the picker offers, in directory order. */
172
+ entries: readonly ProviderCatalogEntry[];
173
+ /**
174
+ * When set, skip the picker and open the key editor for this entry
175
+ * directly — the `/login <provider>` fast path. Esc in the editor pops the
176
+ * whole flow.
177
+ */
178
+ initialEntry?: ProviderCatalogEntry;
179
+ /** Commit the provider: write the profile, then store the key. */
180
+ onCommit: (entry: ProviderCatalogEntry, key: string) => Promise<CommitResult | undefined>;
181
+ /** Pop the whole flow (Esc, or right after a successful commit). */
182
+ onExit: () => void;
183
+ /** Error sink for writes that fail after the editor already closed. */
184
+ onError: (message: string) => void;
185
+ }
186
+ /**
187
+ * Add-provider flow for the Models category — the terminal counterpart of
188
+ * pi-agent's /login, trimmed to the information a user actually needs: pick
189
+ * a provider from the built-in directory (searchable FW list panel, accent
190
+ * BOLD title), enter exactly one API key, done. The key editor reuses
191
+ * EditField (pending guard, late-error sink); the picker is a searchable
192
+ * SettingsListPanel of the directory entries. `/login <provider>` reuses this
193
+ * flow through `initialEntry`, which swaps the picker for a direct key
194
+ * editor. Exported because /login instantiates it as a top-level overlay.
195
+ */
196
+ export declare class AddProviderFlow implements Component {
197
+ private readonly tui;
198
+ private readonly theme;
199
+ private readonly list;
200
+ /** Direct-launch key editor (`initialEntry` set); replaces the picker list. */
201
+ private readonly direct;
202
+ private readonly empty;
203
+ private readonly onExit;
204
+ constructor(tui: TUI, theme: TuiTheme, options: AddProviderOptions);
205
+ /** Key editor for one directory entry; commits through the write chain. */
206
+ private keyEditor;
207
+ invalidate(): void;
208
+ render(width: number): string[];
209
+ handleInput(data: string): void;
210
+ }
211
+ /**
212
+ * Commit a provider (profile + key) through the settings + credentials seams —
213
+ * the same two writes the web Models page performs. Shared by the Models
214
+ * category's add flow and the /login command; the caller supplies the profile
215
+ * write (each surface keeps its own serialized settings chain). A missing
216
+ * credentials service still commits the profile (it names the derived ref; the
217
+ * key then has to come from the environment).
218
+ *
219
+ * Outcome surface: a write failure is an `error`; a committed profile whose
220
+ * key could not be stored is an `error` with the manual fallback spelled out
221
+ * (B3); a committed profile with no credentials service at all is a `notice`
222
+ * (success + hint, no ✘ — C11). Resolves `undefined` on a full success.
223
+ */
224
+ export declare function commitProvider(ctx: Context, writeProfile: () => Promise<string | undefined>, entry: ProviderCatalogEntry, key: string): Promise<CommitResult | undefined>;
169
225
  export interface OpenSettingsBrowserOptions {
170
226
  ctx: Context;
171
227
  tui: TUI;