@aiwayds/dsh-tui-pi 0.9.4 → 0.10.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/selectors.js CHANGED
@@ -1,20 +1,39 @@
1
1
  /**
2
- * TUI overlays (pi SelectList style). Currently: the `/model` picker and the
3
- * reasoning effort picker — the terminal counterparts of the web UI's "model"
4
- * client contribution — plus the `/theme` preference picker and the
5
- * `/permission` preset picker.
2
+ * TUI overlays for the pickers — the `/model` picker (two-stage), the
3
+ * reasoning effort picker, the `/theme` preference picker, the `/permission`
4
+ * preset picker and the skill picker. Every picker is the same FW table:
5
+ * `●` title, uppercase header row, the ─┼─ rule under it, `│`-separated
6
+ * aligned columns — one visual language across every slash-command panel.
6
7
  */
7
- import { SelectList } from '@earendil-works/pi-tui';
8
8
  import { wrapFramedOverlay } from "./frame.js";
9
9
  import { permissionItems } from "./permission.js";
10
+ import { fitColumnWidth, TablePanel } from "./panels.js";
10
11
  /** First row of the effort picker: explicitly no effort override. */
11
- const DEFAULT_EFFORT_ITEM = {
12
+ const DEFAULT_EFFORT_ROW = {
12
13
  value: 'default',
13
14
  label: '(provider default)',
14
15
  description: 'adapter default behavior — clears the effort override',
15
16
  };
17
+ /** The standard framed-overlay mount every picker here uses. */
18
+ function mountPicker(tui, theme, panel) {
19
+ // The framed overlay adds 4 rows (borders + spacers) on top of the table
20
+ // (title + header + rule + rows + footer); the 75% cap keeps the bottom
21
+ // border intact on small terminals.
22
+ return tui.showOverlay(wrapFramedOverlay(theme, panel), { width: '80%', maxHeight: '75%' });
23
+ }
24
+ /** Columns of a label + description table: fitted label column, flex description. */
25
+ function labelDescriptionColumns(title, labels, cap = 28) {
26
+ return [
27
+ { key: 'label', title, width: fitColumnWidth(title, labels, cap) },
28
+ { key: 'description', title: 'Description', flex: true },
29
+ ];
30
+ }
31
+ /** renderCell for a `{ value, label, description }` row keyed by column. */
32
+ function itemCell(row, column) {
33
+ return column.key === 'description' ? row.description ?? '' : row.label;
34
+ }
16
35
  /**
17
- * Run the reasoning effort SelectList overlay over the given efforts. Resolves
36
+ * Run the reasoning effort table overlay over the given efforts. Resolves
18
37
  * with the chosen effort (`'default'` meaning no override), or `undefined`
19
38
  * when cancelled. The row matching `selectedEffort` is preselected when
20
39
  * present. `afterShow` runs once the overlay is up (used by the two-stage
@@ -22,33 +41,34 @@ const DEFAULT_EFFORT_ITEM = {
22
41
  * focus returns to `restoreFocus` on close.
23
42
  */
24
43
  export function openEffortPicker(tui, theme, efforts, selectedEffort, restoreFocus, afterShow) {
25
- const items = [
26
- DEFAULT_EFFORT_ITEM,
44
+ const rows = [
45
+ DEFAULT_EFFORT_ROW,
27
46
  ...efforts.map(effort => ({
28
47
  value: effort.id,
29
48
  label: effort.name,
30
- ...(effort.description !== undefined ? { description: effort.description } : {}),
49
+ description: effort.description ?? '',
31
50
  })),
32
51
  ];
33
52
  return new Promise(resolve => {
34
- const list = new SelectList(items, 12, theme.selectList);
35
- if (selectedEffort !== undefined) {
36
- const index = items.findIndex(item => item.value === selectedEffort);
37
- if (index >= 0)
38
- list.setSelectedIndex(index);
39
- }
40
- // The framed overlay adds 4 rows (borders + spacers) on top of the list;
41
- // the cap must leave them room or the bottom border is sliced off on
42
- // small terminals (13 list rows + 4 frame rows = 17 ≤ 18 at 24 rows).
43
- const overlay = tui.showOverlay(wrapFramedOverlay(theme, list), { width: '80%', maxHeight: '75%' });
53
+ const preselect = selectedEffort === undefined
54
+ ? undefined
55
+ : rows.findIndex(row => row.value === selectedEffort);
56
+ const list = new TablePanel(theme, {
57
+ title: '● Reasoning effort',
58
+ columns: labelDescriptionColumns('Effort', rows.map(row => row.label), 24),
59
+ rows,
60
+ renderCell: itemCell,
61
+ preselect: preselect !== undefined && preselect >= 0 ? preselect : undefined,
62
+ onSelect: row => finish(row.value),
63
+ onCancel: () => finish(undefined),
64
+ });
65
+ const overlay = mountPicker(tui, theme, list);
44
66
  afterShow?.();
45
- const finish = (effort) => {
67
+ function finish(effort) {
46
68
  overlay.hide();
47
69
  restoreFocus();
48
70
  resolve(effort === undefined ? undefined : { effort });
49
- };
50
- list.onSelect = item => finish(item.value);
51
- list.onCancel = () => finish(undefined);
71
+ }
52
72
  });
53
73
  }
54
74
  /**
@@ -77,7 +97,7 @@ export async function pickEffort(ctx, tui, theme, current, restoreFocus) {
77
97
  return { kind: 'effort', effort: picked.effort };
78
98
  }
79
99
  /** Theme preference rows of the picker, matching the settings schema vocabulary. */
80
- const THEME_ITEMS = [
100
+ const THEME_ROWS = [
81
101
  { value: 'auto', label: 'auto (terminal detection)', description: 'follow the terminal light/dark signal' },
82
102
  { value: 'light', label: 'light', description: 'GitHub light palette' },
83
103
  { value: 'dark', label: 'dark', description: 'GitHub dark palette' },
@@ -89,19 +109,21 @@ const THEME_ITEMS = [
89
109
  */
90
110
  export function pickTheme(tui, theme, current, restoreFocus) {
91
111
  return new Promise(resolve => {
92
- const list = new SelectList(THEME_ITEMS, 12, theme.selectList);
93
- const index = THEME_ITEMS.findIndex(item => item.value === current);
94
- if (index >= 0)
95
- list.setSelectedIndex(index);
96
- // Framed overlay: 13 list rows + 4 frame rows fit inside 75% of 24 rows.
97
- const overlay = tui.showOverlay(wrapFramedOverlay(theme, list), { width: '80%', maxHeight: '75%' });
98
- const finish = (picked) => {
112
+ const list = new TablePanel(theme, {
113
+ title: '● Theme',
114
+ columns: labelDescriptionColumns('Theme', THEME_ROWS.map(row => row.label)),
115
+ rows: THEME_ROWS,
116
+ renderCell: itemCell,
117
+ preselect: THEME_ROWS.findIndex(row => row.value === current),
118
+ onSelect: row => finish(row.value),
119
+ onCancel: () => finish(undefined),
120
+ });
121
+ const overlay = mountPicker(tui, theme, list);
122
+ function finish(picked) {
99
123
  overlay.hide();
100
124
  restoreFocus();
101
125
  resolve(picked);
102
- };
103
- list.onSelect = item => finish(item.value);
104
- list.onCancel = () => finish(undefined);
126
+ }
105
127
  });
106
128
  }
107
129
  /**
@@ -117,16 +139,20 @@ export function pickPermission(ctx, tui, theme, current, restoreFocus) {
117
139
  return Promise.resolve(undefined);
118
140
  const items = permissionItems(presets, current);
119
141
  return new Promise((resolve, reject) => {
120
- const list = new SelectList(items, 12, theme.selectList);
121
- if (current !== undefined) {
122
- const index = items.findIndex(item => item.value === current);
123
- if (index >= 0)
124
- list.setSelectedIndex(index);
125
- }
126
- // Framed overlay: 13 list rows + 4 frame rows fit inside 75% of 24 rows.
142
+ const list = new TablePanel(theme, {
143
+ title: '● Permission preset',
144
+ columns: labelDescriptionColumns('Preset', items.map(item => item.label)),
145
+ rows: items,
146
+ renderCell: itemCell,
147
+ preselect: current === undefined
148
+ ? undefined
149
+ : Math.max(0, items.findIndex(item => item.value === current)),
150
+ onSelect: item => finish(item.value),
151
+ onCancel: () => finish(undefined),
152
+ });
127
153
  let overlay;
128
154
  try {
129
- overlay = tui.showOverlay(wrapFramedOverlay(theme, list), { width: '80%', maxHeight: '75%' });
155
+ overlay = mountPicker(tui, theme, list);
130
156
  }
131
157
  catch (error) {
132
158
  // Never strand the keyboard on a half-mounted picker: the rejection
@@ -136,13 +162,11 @@ export function pickPermission(ctx, tui, theme, current, restoreFocus) {
136
162
  reject(error);
137
163
  return;
138
164
  }
139
- const finish = (picked) => {
165
+ function finish(picked) {
140
166
  overlay.hide();
141
167
  restoreFocus();
142
168
  resolve(picked);
143
- };
144
- list.onSelect = item => finish(item.value);
145
- list.onCancel = () => finish(undefined);
169
+ }
146
170
  });
147
171
  }
148
172
  /**
@@ -167,26 +191,29 @@ export async function pickModel(ctx, tui, theme, current, restoreFocus) {
167
191
  }));
168
192
  if (models.length === 0)
169
193
  return undefined;
170
- const key = (m) => `${m.provider}/${m.id}`;
171
- const items = models.map(model => ({
172
- value: key(model),
173
- label: model.name === '' ? model.id : model.name,
174
- description: model.provider,
175
- }));
176
194
  return new Promise(resolve => {
177
- const list = new SelectList(items, 12, theme.selectList);
178
- const currentIndex = items.findIndex(item => item.value === `${current?.provider}/${current?.model}`);
179
- if (currentIndex >= 0)
180
- list.setSelectedIndex(currentIndex);
181
- // Framed overlay: 13 list rows + 4 frame rows fit inside 75% of 24 rows.
182
- const overlay = tui.showOverlay(wrapFramedOverlay(theme, list), { width: '80%', maxHeight: '75%' });
183
- const finish = (picked) => {
184
- // Detach the stage-1 input handlers on first settle: while the model
185
- // info resolves (stage 2 not up yet), a stray Esc would otherwise fire
186
- // a ghost settle AFTER this promise already settled, and a second
187
- // Enter would run two concurrent stage-2s.
188
- list.onSelect = () => { };
189
- list.onCancel = () => { };
195
+ const columns = [
196
+ { key: 'model', title: 'Model', flex: true },
197
+ { key: 'provider', title: 'Provider', width: fitColumnWidth('Provider', models.map(model => model.provider), 18) },
198
+ ];
199
+ const list = new TablePanel(theme, {
200
+ title: '● Model',
201
+ columns,
202
+ rows: models,
203
+ renderCell: (model, column) => (column.key === 'provider' ? model.provider : model.name === '' ? model.id : model.name),
204
+ preselect: Math.max(0, models.findIndex(model => model.provider === current?.provider && model.id === current?.model)),
205
+ onSelect: model => settle(model),
206
+ onCancel: () => settle(undefined),
207
+ });
208
+ const overlay = mountPicker(tui, theme, list);
209
+ // Enter settles stage 1 once; while the model info resolves (stage 2 not
210
+ // up yet), a stray Esc or a second Enter must not run two concurrent
211
+ // stage-2s — settle guards itself.
212
+ let settled = false;
213
+ const settle = (picked) => {
214
+ if (settled)
215
+ return;
216
+ settled = true;
190
217
  if (picked === undefined) {
191
218
  overlay.hide();
192
219
  restoreFocus();
@@ -255,10 +282,6 @@ export async function pickModel(ctx, tui, theme, current, restoreFocus) {
255
282
  }
256
283
  resolve({ provider: picked.provider, model: picked.id, reasoningEffort: chosen.effort });
257
284
  };
258
- list.onSelect = item => {
259
- finish(models.find(model => key(model) === item.value));
260
- };
261
- list.onCancel = () => finish(undefined);
262
285
  });
263
286
  }
264
287
  /**
@@ -284,29 +307,33 @@ export async function pickSkill(ctx, tui, theme, agent, restoreFocus) {
284
307
  }
285
308
  if (userSkills.length === 0)
286
309
  return undefined;
287
- const items = userSkills.map(skill => ({
310
+ const rows = userSkills.map(skill => ({
288
311
  value: skill.name,
289
312
  label: skill.name,
290
313
  description: skill.description === '' ? undefined : skill.description,
291
314
  }));
292
315
  return new Promise(resolve => {
293
- const list = new SelectList(items, 12, theme.selectList);
294
- // Framed overlay: 13 list rows + 4 frame rows fit inside 75% of 24 rows.
316
+ const list = new TablePanel(theme, {
317
+ title: '● Skill',
318
+ columns: labelDescriptionColumns('Skill', rows.map(row => row.label)),
319
+ rows,
320
+ renderCell: itemCell,
321
+ onSelect: row => finish(row.value),
322
+ onCancel: () => finish(undefined),
323
+ });
295
324
  let overlay;
296
325
  try {
297
- overlay = tui.showOverlay(wrapFramedOverlay(theme, list), { width: '80%', maxHeight: '75%' });
326
+ overlay = mountPicker(tui, theme, list);
298
327
  }
299
328
  catch (error) {
300
329
  restoreFocus();
301
330
  throw error;
302
331
  }
303
- const finish = (picked) => {
332
+ function finish(picked) {
304
333
  overlay.hide();
305
334
  restoreFocus();
306
335
  resolve(picked);
307
- };
308
- list.onSelect = item => finish(item.value);
309
- list.onCancel = () => finish(undefined);
336
+ }
310
337
  });
311
338
  }
312
339
  //# sourceMappingURL=selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,UAAU,EAAiD,MAAM,wBAAwB,CAAA;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAejD,qEAAqE;AACrE,MAAM,mBAAmB,GAAe;IACtC,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,uDAAuD;CACrE,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,KAAe,EACf,OAA0C,EAC1C,cAA6C,EAC7C,YAAwB,EACxB,SAAsB;IAEtB,MAAM,KAAK,GAAiB;QAC1B,mBAAmB;QACnB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAC,CAAC;KACJ,CAAA;IAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACxD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAA;YACpE,IAAI,KAAK,IAAI,CAAC;gBAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,yEAAyE;QACzE,qEAAqE;QACrE,sEAAsE;QACtE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACnG,SAAS,EAAE,EAAE,CAAA;QAEb,MAAM,MAAM,GAAG,CAAC,MAAiD,EAAQ,EAAE;YACzE,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACxD,CAAC,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAsC,CAAC,CAAA;QAC3E,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,OAAuB,EACvB,YAAwB;IAExB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAErD,IAAI,IAA0B,CAAA;IAC9B,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAA;IACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAEjF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;IACjG,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAClD,CAAC;AAED,oFAAoF;AACpF,MAAM,WAAW,GAAiB;IAChC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,uCAAuC,EAAE;IAC3G,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACvE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;CACrE,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,GAAQ,EACR,KAAe,EACf,OAAwB,EACxB,YAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAA;QACnE,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAE5C,yEAAyE;QACzE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QAEnG,MAAM,MAAM,GAAG,CAAC,MAAmC,EAAQ,EAAE;YAC3D,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAwB,CAAC,CAAA;QAC7D,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,OAA2B,EAC3B,YAAwB;IAExB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC5C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAE5D,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACxD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAA;YAC7D,IAAI,KAAK,IAAI,CAAC;gBAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,yEAAyE;QACzE,IAAI,OAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,sEAAsE;YACtE,iCAAiC;YACjC,YAAY,EAAE,CAAA;YACd,MAAM,CAAC,KAAK,CAAC,CAAA;YACb,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAA0B,EAAQ,EAAE;YAClD,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,OAAmC,EACnC,YAAwB;IAExB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;IACrC,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;QAC/C,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC,CAAA;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEzC,MAAM,GAAG,GAAG,CAAC,CAAc,EAAU,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE,CAAA;IAC/D,MAAM,KAAK,GAAiB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;QAChD,WAAW,EAAE,KAAK,CAAC,QAAQ;KAC5B,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,OAAO,CAA6B,OAAO,CAAC,EAAE;QACvD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACxD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACrG,IAAI,YAAY,IAAI,CAAC;YAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAE1D,yEAAyE;QACzE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QAEnG,MAAM,MAAM,GAAG,CAAC,MAA+B,EAAQ,EAAE;YACvD,qEAAqE;YACrE,uEAAuE;YACvE,kEAAkE;YAClE,2CAA2C;YAC3C,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;YACxB,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;YACxB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,EAAE,CAAA;gBACd,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC,SAAS,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YACD,uEAAuE;YACvE,kEAAkE;YAClE,gDAAgD;YAChD,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAA;QAED;;;;;WAKG;QACH,MAAM,eAAe,GAAG,KAAK,EAAE,MAAmB,EAAiB,EAAE;YACnE,sEAAsE;YACtE,qDAAqD;YACrD,MAAM,UAAU,GACd,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;gBAC3D,CAAC,CAAC,OAAO,CAAC,eAAe;gBACzB,CAAC,CAAC,SAAS,CAAA;YAEf,IAAI,OAAsD,CAAA;YAC1D,IAAI,CAAC;gBACH,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAA;YACvF,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;gBACpE,uCAAuC;gBACvC,OAAO,CAAC,IAAI,EAAE,CAAA;gBACd,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC;oBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,EAAE;oBAChB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YAED,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,+DAA+D;gBAC/D,OAAO,CAAC,IAAI,EAAE,CAAA;gBACd,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC;oBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,EAAE;oBAChB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YAED,uEAAuE;YACvE,wEAAwE;YACxE,yDAAyD;YACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,IAAK,MAA4B,EAAE,YAAY;YAC9E,8CAA8C;YAC9C,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CACrB,CAAA;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,8DAA8D;gBAC9D,OAAO,CAAC,SAAS,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,sDAAsD;gBACtD,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxD,OAAM;YACR,CAAC;YACD,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,CAAC,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACzD,CAAC,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,KAA4D,EAC5D,YAAwB;IAExB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC1C,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEtD,IAAI,UAAwD,CAAA;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACvD,UAAU,GAAG,MAAM;aAChB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;aAC/C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE7C,MAAM,KAAK,GAAiB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;KACtE,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,OAAO,CAAqB,OAAO,CAAC,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QAExD,yEAAyE;QACzE,IAAI,OAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,EAAE,CAAA;YACd,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAA0B,EAAQ,EAAE;YAClD,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAe1E,qEAAqE;AACrE,MAAM,kBAAkB,GAAe;IACrC,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,uDAAuD;CACrE,CAAA;AAED,gEAAgE;AAChE,SAAS,WAAW,CAAI,GAAQ,EAAE,KAAe,EAAE,KAAoB;IACrE,yEAAyE;IACzE,wEAAwE;IACxE,oCAAoC;IACpC,OAAO,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;AAC7F,CAAC;AASD,qFAAqF;AACrF,SAAS,uBAAuB,CAAC,KAAa,EAAE,MAAyB,EAAE,GAAG,GAAG,EAAE;IACjF,OAAO;QACL,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAClE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;KACzD,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,GAAe,EAAE,MAAmB;IACpD,OAAO,MAAM,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA;AACzE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,KAAe,EACf,OAA0C,EAC1C,cAA6C,EAC7C,YAAwB,EACxB,SAAsB;IAEtB,MAAM,IAAI,GAAiB;QACzB,kBAAkB;QAClB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;SACtC,CAAC,CAAC;KACJ,CAAA;IAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,SAAS,GAAG,cAAc,KAAK,SAAS;YAC5C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,cAAc,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YAC1E,IAAI;YACJ,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC5E,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAsC,CAAC;YACnE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAC7C,SAAS,EAAE,EAAE,CAAA;QAEb,SAAS,MAAM,CAAC,MAAiD;YAC/D,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,OAAuB,EACvB,YAAwB;IAExB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAErD,IAAI,IAA0B,CAAA;IAC9B,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAA;IACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAEjF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;IACjG,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAClD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,GAAiB;IAC/B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,uCAAuC,EAAE;IAC3G,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACvE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;CACrE,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,GAAQ,EACR,KAAe,EACf,OAAwB,EACxB,YAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3E,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;YAC7D,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAwB,CAAC;YACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAE7C,SAAS,MAAM,CAAC,MAAmC;YACjD,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,OAA2B,EAC3B,YAAwB;IAExB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC5C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAE5D,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,OAAO,KAAK,SAAS;gBAC9B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YAChE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC,CAAA;QACF,IAAI,OAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,sEAAsE;YACtE,iCAAiC;YACjC,YAAY,EAAE,CAAA;YACd,MAAM,CAAC,KAAK,CAAC,CAAA;YACb,OAAM;QACR,CAAC;QAED,SAAS,MAAM,CAAC,MAA0B;YACxC,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,OAAmC,EACnC,YAAwB;IAExB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;IACrC,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;QAC/C,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC,CAAA;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEzC,OAAO,IAAI,OAAO,CAA6B,OAAO,CAAC,EAAE;QACvD,MAAM,OAAO,GAA2B;YACtC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5C,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE;SACnH,CAAA;QACD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAc,KAAK,EAAE;YAC9C,KAAK,EAAE,SAAS;YAChB,OAAO;YACP,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACvH,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC;YACtH,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAE7C,yEAAyE;QACzE,qEAAqE;QACrE,mCAAmC;QACnC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,MAAM,GAAG,CAAC,MAA+B,EAAQ,EAAE;YACvD,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,EAAE,CAAA;gBACd,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC,SAAS,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YACD,uEAAuE;YACvE,kEAAkE;YAClE,gDAAgD;YAChD,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAA;QAED;;;;;WAKG;QACH,MAAM,eAAe,GAAG,KAAK,EAAE,MAAmB,EAAiB,EAAE;YACnE,sEAAsE;YACtE,qDAAqD;YACrD,MAAM,UAAU,GACd,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;gBAC3D,CAAC,CAAC,OAAO,CAAC,eAAe;gBACzB,CAAC,CAAC,SAAS,CAAA;YAEf,IAAI,OAAsD,CAAA;YAC1D,IAAI,CAAC;gBACH,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAA;YACvF,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;gBACpE,uCAAuC;gBACvC,OAAO,CAAC,IAAI,EAAE,CAAA;gBACd,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC;oBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,EAAE;oBAChB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YAED,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,+DAA+D;gBAC/D,OAAO,CAAC,IAAI,EAAE,CAAA;gBACd,YAAY,EAAE,CAAA;gBACd,OAAO,CAAC;oBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,EAAE;oBAChB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YAED,uEAAuE;YACvE,wEAAwE;YACxE,yDAAyD;YACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,IAAK,MAA4B,EAAE,YAAY;YAC9E,8CAA8C;YAC9C,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CACrB,CAAA;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,8DAA8D;gBAC9D,OAAO,CAAC,SAAS,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,sDAAsD;gBACtD,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxD,OAAM;YACR,CAAC;YACD,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,KAA4D,EAC5D,YAAwB;IAExB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC1C,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEtD,IAAI,UAAwD,CAAA;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACvD,UAAU,GAAG,MAAM;aAChB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;aAC/C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE7C,MAAM,IAAI,GAAiB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;KACtE,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,OAAO,CAAqB,OAAO,CAAC,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI;YACJ,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAClC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC,CAAA;QACF,IAAI,OAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,EAAE,CAAA;YACd,MAAM,KAAK,CAAA;QACb,CAAC;QAED,SAAS,MAAM,CAAC,MAA0B;YACxC,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,YAAY,EAAE,CAAA;YACd,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/lib/sessions.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Session TUI overlays: the `/session` info panel and the `/resume`
3
3
  * persisted-session picker — terminal counterparts of the web surface's
4
- * session management. Both follow the pi SelectList overlay pattern
5
- * (`showOverlay` + `restoreFocus` on close); the info panel is a one-shot
4
+ * session management. The picker is the FW table (TablePanel in a framed
5
+ * overlay + `restoreFocus` on close); the info panel is a one-shot
6
6
  * read-only component in the style of settings' ReadOnlyViewer.
7
7
  */
8
8
  import type { Context } from '@deepseek-ai/cordis';
package/lib/sessions.js CHANGED
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Session TUI overlays: the `/session` info panel and the `/resume`
3
3
  * persisted-session picker — terminal counterparts of the web surface's
4
- * session management. Both follow the pi SelectList overlay pattern
5
- * (`showOverlay` + `restoreFocus` on close); the info panel is a one-shot
4
+ * session management. The picker is the FW table (TablePanel in a framed
5
+ * overlay + `restoreFocus` on close); the info panel is a one-shot
6
6
  * read-only component in the style of settings' ReadOnlyViewer.
7
7
  */
8
- import { getKeybindings, SelectList, } from '@earendil-works/pi-tui';
8
+ import { getKeybindings } from '@earendil-works/pi-tui';
9
9
  import { basename } from 'node:path';
10
10
  import { wrapFramedOverlay } from "./frame.js";
11
+ import { fitColumnWidth, TablePanel } from "./panels.js";
11
12
  import { ansiFg, BOLD, RESET } from "./theme/index.js";
12
13
  import { clipToWidth, visibleWidth } from "./text.js";
13
14
  /** Label column width for the key-value rows (longest: "cache read/write"). */
@@ -236,33 +237,42 @@ export async function pickPersistedSession(ctx, tui, theme, excludeSessionId, re
236
237
  // rows are distinguishable at a glance; older ones fall back to the header
237
238
  // label (cwd + short id).
238
239
  const previews = await loadSessionPreviews(persistence, candidates.slice(0, PREVIEW_SESSION_CAP).map(header => header.id));
239
- const items = candidates.map(header => {
240
+ const rows = candidates.map(header => {
240
241
  const id = String(header.id);
241
242
  const preview = previews.get(id);
242
243
  return {
243
244
  value: id,
244
- label: preview ?? `${basename(header.cwd ?? '?')} · ${clipToWidth(id, 8)}`,
245
- description: `${new Date(header.createdAt).toLocaleString()} · ${clipToWidth(id, 8)} · ${header.cwd ?? 'no cwd'}`,
245
+ header,
246
+ session: preview ?? `${basename(header.cwd ?? '?')} · ${clipToWidth(id, 8)}`,
247
+ when: new Date(header.createdAt).toLocaleString(),
248
+ dir: header.cwd ?? 'no cwd',
246
249
  };
247
250
  });
248
251
  return new Promise(resolve => {
249
- // Wide primary column so previews (often CJK) get room before the time/cwd
250
- // description column starts.
251
- const list = new SelectList(items, 12, theme.selectList, { minPrimaryColumnWidth: 24, maxPrimaryColumnWidth: 60 });
252
- list.setSelectedIndex(0);
252
+ // The FW picker table: flex preview column, then fitted WHEN/DIR columns
253
+ // (previews are often CJK, so the flex column carries them).
254
+ const columns = [
255
+ { key: 'session', title: 'Session', flex: true },
256
+ { key: 'when', title: 'When', width: fitColumnWidth('When', rows.map(row => row.when), 26) },
257
+ { key: 'dir', title: 'Dir', width: fitColumnWidth('Dir', rows.map(row => row.dir), 28) },
258
+ ];
259
+ const list = new TablePanel(theme, {
260
+ title: '● Resume session',
261
+ columns,
262
+ rows,
263
+ renderCell: (row, column) => row[column.key],
264
+ onSelect: row => finish(row.header),
265
+ onCancel: () => finish(undefined),
266
+ });
253
267
  // Framed overlay: 13 list rows + 4 frame rows fit inside 75% of 24 rows.
254
268
  const overlay = tui.showOverlay(wrapFramedOverlay(theme, list), { width: '80%', maxHeight: '75%' });
255
- const finish = (picked) => {
269
+ function finish(picked) {
256
270
  overlay.hide();
257
271
  restoreFocus();
258
272
  resolve(picked === undefined
259
273
  ? { kind: 'cancelled' }
260
274
  : { kind: 'picked', id: picked.id, header: picked });
261
- };
262
- list.onSelect = item => {
263
- finish(candidates.find(header => String(header.id) === item.value));
264
- };
265
- list.onCancel = () => finish(undefined);
275
+ }
266
276
  });
267
277
  }
268
278
  //# sourceMappingURL=sessions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
package/lib/settings.js CHANGED
@@ -36,12 +36,12 @@
36
36
  import { getPath, nodeAtPath, rehydrateSchema } from "./schema-model.js";
37
37
  import { settingsNamespace } from '@deepseek-ai/dsh-settings';
38
38
  import { getKeybindings, Input, matchesKey, } from '@earendil-works/pi-tui';
39
- import { panelThemeFns, SettingsListPanel, ViewerPanel, } from "./panels.js";
39
+ import { columnWidths, MARKER_W, padCell, panelThemeFns, SettingsListPanel, TABLE_SEP, tableHeaderLine, tableRuleLine, ViewerPanel, } from "./panels.js";
40
40
  import { ansiFg, BOLD, RESET } from "./theme/index.js";
41
41
  import { clipToWidth, visibleWidth } from "./text.js";
42
42
  import { wrapFramedOverlay } from "./frame.js";
43
43
  import { catalogEntry, deriveKeyRef, directoryProviderEntries, providerProfileFor, providerRowView, unconfiguredCatalogEntries, } from "./provider-catalog.js";
44
- import { applySkillFrontmatter, BADGE_WIDTH, clampScrollOffset, clampSkillCursor, filterSkillRows, isPrintableInput, readSkillToggle, skillDisableUpdates, skillEnableUpdates, skillEnabled, skillJumpCursor, skillPanelRowLine, SKILL_INDEX_WIDTH, SKILL_STATE_WIDTH, skillToggleEnabled, } from "./skills.js";
44
+ import { applySkillFrontmatter, clampScrollOffset, clampSkillCursor, filterSkillRows, isPrintableInput, readSkillToggle, skillDisableUpdates, skillEnableUpdates, skillEnabled, skillJumpCursor, skillPanelRowLine, skillToggleEnabled, } from "./skills.js";
45
45
  /**
46
46
  * Static namespace→category mapping, mirroring the web settings page's
47
47
  * client-side slot structure (see the module header): the data plane carries
@@ -443,10 +443,10 @@ class SkillsPanel {
443
443
  filterQuery = '';
444
444
  /** The overlay renders at `maxHeight` of terminal rows; FramedOverlay adds
445
445
  * 4 chrome rows (top border + spacer + bottom spacer + border); the child
446
- * adds 5 tail rows after the skill list (title + spacer + description +
447
- * spacer + footer). */
446
+ * adds 7 rows around the skill list (title + spacer + header + rule above,
447
+ * description + spacer + footer below). */
448
448
  static FRAME_OVERHEAD = 4;
449
- static TAIL_ROWS = 5;
449
+ static TAIL_ROWS = 7;
450
450
  constructor(tui, theme, onToggle, onExit) {
451
451
  this.tui = tui;
452
452
  this.theme = theme;
@@ -492,29 +492,37 @@ class SkillsPanel {
492
492
  }
493
493
  // Calculate how many skill rows fit. The overlay is capped at 80% of
494
494
  // terminal rows (SettingsBrowser's maxHeight); FramedOverlay adds 4 chrome
495
- // rows; the child appends TAIL_ROWS (title + spacer + description +
496
- // spacer + footer) after the skill list.
495
+ // rows; the child adds TAIL_ROWS around the skill list (see the constant).
497
496
  const maxVisibleRows = this.maxVisibleRows();
498
497
  // Ensure the cursor is in the visible window.
499
498
  this.scrollToCursor(maxVisibleRows, filtered.length);
500
499
  const visibleRows = filtered.slice(this.scrollOffset, this.scrollOffset + maxVisibleRows);
501
- // Fixed-width prefix segments: marker(2) + index(4) + state(6) + badge(4) = 16.
502
- const prefixCols = 2 + (SKILL_INDEX_WIDTH + 1) + (SKILL_STATE_WIDTH + 1) + (BADGE_WIDTH + 1);
500
+ // The FW table: ON icon column │ SKILL name (flex). No index column, no
501
+ // state text — ●/○ carries the toggle state, colored on unselected rows.
502
+ const columns = [
503
+ { key: 'on', title: 'On', width: 2 },
504
+ { key: 'name', title: 'Skill', flex: true },
505
+ ];
506
+ const widths = columnWidths(wrap - MARKER_W, columns);
507
+ lines.push(fns.subtle(clipToWidth(tableHeaderLine(columns, widths), wrap)));
508
+ lines.push(fns.subtle(clipToWidth(tableRuleLine(widths), wrap)));
509
+ // Fixed-width prefix before the separator: marker(2) + icon(2) = 4.
510
+ const prefixCols = 2 + 2;
503
511
  for (let vi = 0; vi < visibleRows.length; vi++) {
504
512
  const i = this.scrollOffset + vi;
505
513
  const row = filtered[i];
506
514
  const selected = i === this.cursor;
507
- // One plain-text row (marker+space, index+space, state+space,
508
- // badge+space+name), clipped once to width, then colored per
509
- // fixed-width segment. The prefix segments are fixed ASCII width so
510
- // slicing the clipped line by index is column-exact; the name tail
511
- // takes the rest, and clipToWidth guarantees no row ever exceeds
512
- // `width`.
513
- const plain = clipToWidth(skillPanelRowLine(selected, row.enabled, row.name, i + 1), width);
514
- lines.push(fns[selected ? 'accent' : 'muted'](plain.slice(0, 2))
515
- + fns.subtle(plain.slice(2, 2 + SKILL_INDEX_WIDTH + 1))
516
- + fns[row.enabled ? 'success' : 'muted'](plain.slice(2 + SKILL_INDEX_WIDTH + 1, prefixCols))
517
- + fns[selected ? 'accent' : 'muted'](plain.slice(prefixCols)));
515
+ // One plain-text row (marker + on-icon + separator + padded name),
516
+ // clipped once to width, then colored per fixed-width segment — the
517
+ // prefix is fixed width so slicing the clipped line is column-exact.
518
+ const plain = clipToWidth(skillPanelRowLine(selected, row.enabled, padCell(row.name, widths[1])), width);
519
+ if (selected) {
520
+ lines.push(fns.accent(BOLD + plain + RESET));
521
+ }
522
+ else {
523
+ lines.push(fns[row.enabled ? 'success' : 'subtle'](plain.slice(0, prefixCols))
524
+ + fns.muted(plain.slice(prefixCols)));
525
+ }
518
526
  }
519
527
  const sel = filtered[this.cursor];
520
528
  if (sel !== undefined && sel.description !== '') {