@wrongstack/tui 0.295.0 → 0.296.2

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 (288) hide show
  1. package/dist/app-action-type.d.ts +987 -0
  2. package/dist/app-action-type.d.ts.map +1 -0
  3. package/dist/app-initial-state.d.ts +4 -2
  4. package/dist/app-initial-state.d.ts.map +1 -1
  5. package/dist/app-key-handler.d.ts +12 -4
  6. package/dist/app-key-handler.d.ts.map +1 -1
  7. package/dist/app-props.d.ts +4 -2
  8. package/dist/app-props.d.ts.map +1 -1
  9. package/dist/app-reducer.d.ts +4 -2
  10. package/dist/app-reducer.d.ts.map +1 -1
  11. package/dist/app-settings-type.d.ts +73 -0
  12. package/dist/app-settings-type.d.ts.map +1 -0
  13. package/dist/app-state-core-types.d.ts +52 -0
  14. package/dist/app-state-core-types.d.ts.map +1 -0
  15. package/dist/app-state-fleet.d.ts +44 -0
  16. package/dist/app-state-fleet.d.ts.map +1 -0
  17. package/dist/app-state.d.ts +46 -1179
  18. package/dist/app-state.d.ts.map +1 -1
  19. package/dist/app-status-region.d.ts +1 -1
  20. package/dist/app-status-region.d.ts.map +1 -1
  21. package/dist/app-ui-state.d.ts +5 -0
  22. package/dist/app-ui-state.d.ts.map +1 -0
  23. package/dist/app-view-contract.d.ts +8 -1
  24. package/dist/app-view-contract.d.ts.map +1 -1
  25. package/dist/app-view.d.ts.map +1 -1
  26. package/dist/app.d.ts.map +1 -1
  27. package/dist/brain-panel-model.d.ts +8 -0
  28. package/dist/brain-panel-model.d.ts.map +1 -1
  29. package/dist/clipboard.d.ts +1 -1
  30. package/dist/clipboard.d.ts.map +1 -1
  31. package/dist/components/agents-monitor-constants.d.ts +12 -0
  32. package/dist/components/agents-monitor-constants.d.ts.map +1 -0
  33. package/dist/components/agents-monitor.d.ts +1 -7
  34. package/dist/components/agents-monitor.d.ts.map +1 -1
  35. package/dist/components/auth-panel.d.ts +2 -0
  36. package/dist/components/auth-panel.d.ts.map +1 -1
  37. package/dist/components/brain-panel.d.ts.map +1 -1
  38. package/dist/components/connections-panel.d.ts +7 -0
  39. package/dist/components/connections-panel.d.ts.map +1 -0
  40. package/dist/components/entry-error-boundary.d.ts +37 -0
  41. package/dist/components/entry-error-boundary.d.ts.map +1 -0
  42. package/dist/components/f-key-picker.d.ts.map +1 -1
  43. package/dist/components/history/banner.d.ts +1 -1
  44. package/dist/components/history/banner.d.ts.map +1 -1
  45. package/dist/components/history/basic-format.d.ts +19 -0
  46. package/dist/components/history/basic-format.d.ts.map +1 -0
  47. package/dist/components/history/code-block-diff-helpers.d.ts +28 -0
  48. package/dist/components/history/code-block-diff-helpers.d.ts.map +1 -0
  49. package/dist/components/history/code-block.d.ts +1 -1
  50. package/dist/components/history/code-block.d.ts.map +1 -1
  51. package/dist/components/history/copy-icon.d.ts +25 -0
  52. package/dist/components/history/copy-icon.d.ts.map +1 -0
  53. package/dist/components/history/entry.d.ts +1 -1
  54. package/dist/components/history/entry.d.ts.map +1 -1
  55. package/dist/components/history/index.d.ts +5 -6
  56. package/dist/components/history/index.d.ts.map +1 -1
  57. package/dist/components/history/replay.d.ts +12 -0
  58. package/dist/components/history/replay.d.ts.map +1 -1
  59. package/dist/components/history/sage-output-format.d.ts +20 -0
  60. package/dist/components/history/sage-output-format.d.ts.map +1 -0
  61. package/dist/components/history/stream-box.d.ts +23 -0
  62. package/dist/components/history/stream-box.d.ts.map +1 -0
  63. package/dist/components/history/tool-arg-format.d.ts +5 -0
  64. package/dist/components/history/tool-arg-format.d.ts.map +1 -0
  65. package/dist/components/history/tool-group.d.ts.map +1 -1
  66. package/dist/components/history/tool-output-summary.d.ts +4 -0
  67. package/dist/components/history/tool-output-summary.d.ts.map +1 -0
  68. package/dist/components/history/tool-visual-command.d.ts +3 -0
  69. package/dist/components/history/tool-visual-command.d.ts.map +1 -0
  70. package/dist/components/history/tool-visual-domain.d.ts +8 -0
  71. package/dist/components/history/tool-visual-domain.d.ts.map +1 -0
  72. package/dist/components/history/tool-visual-format.d.ts +13 -0
  73. package/dist/components/history/tool-visual-format.d.ts.map +1 -0
  74. package/dist/components/history/tool-visual-lsp.d.ts +4 -0
  75. package/dist/components/history/tool-visual-lsp.d.ts.map +1 -0
  76. package/dist/components/history/tool-visual-misc.d.ts +7 -0
  77. package/dist/components/history/tool-visual-misc.d.ts.map +1 -0
  78. package/dist/components/history/tool-visual-mode-workdir.d.ts +4 -0
  79. package/dist/components/history/tool-visual-mode-workdir.d.ts.map +1 -0
  80. package/dist/components/history/tool-visual-types.d.ts +9 -0
  81. package/dist/components/history/tool-visual-types.d.ts.map +1 -0
  82. package/dist/components/history/utils.d.ts +14 -54
  83. package/dist/components/history/utils.d.ts.map +1 -1
  84. package/dist/components/history/visual-lines.d.ts +7 -0
  85. package/dist/components/history/visual-lines.d.ts.map +1 -0
  86. package/dist/components/history/visual-memory-logs.d.ts +4 -0
  87. package/dist/components/history/visual-memory-logs.d.ts.map +1 -0
  88. package/dist/components/input.d.ts.map +1 -1
  89. package/dist/components/kanban-panel.d.ts.map +1 -1
  90. package/dist/components/key-hint-bar.d.ts +11 -0
  91. package/dist/components/key-hint-bar.d.ts.map +1 -1
  92. package/dist/components/powerline-rail.d.ts +11 -4
  93. package/dist/components/powerline-rail.d.ts.map +1 -1
  94. package/dist/components/provider-colors.d.ts.map +1 -1
  95. package/dist/components/refine-countdown-panel.d.ts +25 -0
  96. package/dist/components/refine-countdown-panel.d.ts.map +1 -0
  97. package/dist/components/refine-failure-panel.d.ts +1 -0
  98. package/dist/components/refine-failure-panel.d.ts.map +1 -1
  99. package/dist/components/resume-picker.d.ts.map +1 -1
  100. package/dist/components/scrollable-history.d.ts +96 -17
  101. package/dist/components/scrollable-history.d.ts.map +1 -1
  102. package/dist/components/settings-picker-filter.d.ts +20 -0
  103. package/dist/components/settings-picker-filter.d.ts.map +1 -0
  104. package/dist/components/settings-picker-jumps.d.ts +16 -0
  105. package/dist/components/settings-picker-jumps.d.ts.map +1 -0
  106. package/dist/components/settings-picker-model.d.ts +270 -0
  107. package/dist/components/settings-picker-model.d.ts.map +1 -0
  108. package/dist/components/settings-picker-row-list.d.ts +21 -0
  109. package/dist/components/settings-picker-row-list.d.ts.map +1 -0
  110. package/dist/components/settings-picker.d.ts +6 -313
  111. package/dist/components/settings-picker.d.ts.map +1 -1
  112. package/dist/components/status-bar-format.d.ts +65 -0
  113. package/dist/components/status-bar-format.d.ts.map +1 -0
  114. package/dist/components/status-bar-helpers.d.ts +19 -0
  115. package/dist/components/status-bar-helpers.d.ts.map +1 -0
  116. package/dist/components/status-bar-types.d.ts +350 -0
  117. package/dist/components/status-bar-types.d.ts.map +1 -0
  118. package/dist/components/status-bar.d.ts +4 -444
  119. package/dist/components/status-bar.d.ts.map +1 -1
  120. package/dist/components/statusline-detail-panel.d.ts.map +1 -1
  121. package/dist/components/statusline-picker.d.ts +5 -3
  122. package/dist/components/statusline-picker.d.ts.map +1 -1
  123. package/dist/components/tools-picker.d.ts.map +1 -1
  124. package/dist/connections-health.d.ts +39 -0
  125. package/dist/connections-health.d.ts.map +1 -0
  126. package/dist/connections-slash.d.ts +12 -0
  127. package/dist/connections-slash.d.ts.map +1 -0
  128. package/dist/esc-close-panels.d.ts.map +1 -1
  129. package/dist/f-key-panels.d.ts +4 -2
  130. package/dist/f-key-panels.d.ts.map +1 -1
  131. package/dist/heap-watchdog.d.ts.map +1 -1
  132. package/dist/height-cache.d.ts.map +1 -1
  133. package/dist/history-archive.d.ts +69 -0
  134. package/dist/history-archive.d.ts.map +1 -0
  135. package/dist/history-entry.d.ts +2 -0
  136. package/dist/history-entry.d.ts.map +1 -1
  137. package/dist/hit-test.d.ts +3 -4
  138. package/dist/hit-test.d.ts.map +1 -1
  139. package/dist/hooks/use-app-picker-keys.d.ts +3 -2
  140. package/dist/hooks/use-app-picker-keys.d.ts.map +1 -1
  141. package/dist/hooks/use-app-runtime-refs.d.ts +38 -0
  142. package/dist/hooks/use-app-runtime-refs.d.ts.map +1 -0
  143. package/dist/hooks/use-app-session-state.d.ts +28 -0
  144. package/dist/hooks/use-app-session-state.d.ts.map +1 -0
  145. package/dist/hooks/use-autonomy-drivers.d.ts +1 -1
  146. package/dist/hooks/use-autonomy-drivers.d.ts.map +1 -1
  147. package/dist/hooks/use-brain-panel.d.ts +1 -1
  148. package/dist/hooks/use-brain-panel.d.ts.map +1 -1
  149. package/dist/hooks/use-brain-risk-sync.d.ts +11 -0
  150. package/dist/hooks/use-brain-risk-sync.d.ts.map +1 -0
  151. package/dist/hooks/use-client-telemetry.d.ts +1 -1
  152. package/dist/hooks/use-client-telemetry.d.ts.map +1 -1
  153. package/dist/hooks/use-core-tui-commands.d.ts +2 -1
  154. package/dist/hooks/use-core-tui-commands.d.ts.map +1 -1
  155. package/dist/hooks/use-director-fleet-bridge.d.ts.map +1 -1
  156. package/dist/hooks/use-enhance-runtime-state.d.ts +23 -0
  157. package/dist/hooks/use-enhance-runtime-state.d.ts.map +1 -0
  158. package/dist/hooks/use-help-panel.d.ts +6 -0
  159. package/dist/hooks/use-help-panel.d.ts.map +1 -0
  160. package/dist/hooks/use-history-copy-notice.d.ts +4 -0
  161. package/dist/hooks/use-history-copy-notice.d.ts.map +1 -0
  162. package/dist/hooks/use-history-viewport-sync.d.ts +13 -0
  163. package/dist/hooks/use-history-viewport-sync.d.ts.map +1 -0
  164. package/dist/hooks/use-initial-prompt.d.ts +1 -1
  165. package/dist/hooks/use-initial-prompt.d.ts.map +1 -1
  166. package/dist/hooks/use-interrupt-ladder.d.ts +2 -1
  167. package/dist/hooks/use-interrupt-ladder.d.ts.map +1 -1
  168. package/dist/hooks/use-kanban-board-focus.d.ts +8 -0
  169. package/dist/hooks/use-kanban-board-focus.d.ts.map +1 -0
  170. package/dist/hooks/use-live-settings-state.d.ts +20 -0
  171. package/dist/hooks/use-live-settings-state.d.ts.map +1 -0
  172. package/dist/hooks/use-mailbox-view-model.d.ts.map +1 -1
  173. package/dist/hooks/use-model-pick.d.ts +1 -1
  174. package/dist/hooks/use-model-pick.d.ts.map +1 -1
  175. package/dist/hooks/use-mouse-tracking.d.ts +15 -0
  176. package/dist/hooks/use-mouse-tracking.d.ts.map +1 -0
  177. package/dist/hooks/use-next-steps-auto-submit.d.ts +2 -1
  178. package/dist/hooks/use-next-steps-auto-submit.d.ts.map +1 -1
  179. package/dist/hooks/use-panel-controllers.d.ts +2 -1
  180. package/dist/hooks/use-panel-controllers.d.ts.map +1 -1
  181. package/dist/hooks/use-picker-keys-types.d.ts +56 -0
  182. package/dist/hooks/use-picker-keys-types.d.ts.map +1 -0
  183. package/dist/hooks/use-picker-keys.d.ts +2 -64
  184. package/dist/hooks/use-picker-keys.d.ts.map +1 -1
  185. package/dist/hooks/use-provider-event-bridge.d.ts +1 -1
  186. package/dist/hooks/use-provider-event-bridge.d.ts.map +1 -1
  187. package/dist/hooks/use-session-interrupt-controller.d.ts +6 -1
  188. package/dist/hooks/use-session-interrupt-controller.d.ts.map +1 -1
  189. package/dist/hooks/use-settings-auto-save.d.ts +2 -1
  190. package/dist/hooks/use-settings-auto-save.d.ts.map +1 -1
  191. package/dist/hooks/use-shadow-panel.d.ts +17 -0
  192. package/dist/hooks/use-shadow-panel.d.ts.map +1 -0
  193. package/dist/hooks/use-slash-picker.d.ts +2 -1
  194. package/dist/hooks/use-slash-picker.d.ts.map +1 -1
  195. package/dist/hooks/use-stable-key-handler.d.ts +5 -0
  196. package/dist/hooks/use-stable-key-handler.d.ts.map +1 -0
  197. package/dist/hooks/use-subagent-events.d.ts.map +1 -1
  198. package/dist/hooks/use-terminal-render-lifecycle.d.ts.map +1 -1
  199. package/dist/hooks/use-todos-auto-clear.d.ts +3 -0
  200. package/dist/hooks/use-todos-auto-clear.d.ts.map +1 -0
  201. package/dist/hooks/use-tui-activity.d.ts +7 -1
  202. package/dist/hooks/use-tui-activity.d.ts.map +1 -1
  203. package/dist/hooks/use-tui-environment-state.d.ts +1 -0
  204. package/dist/hooks/use-tui-environment-state.d.ts.map +1 -1
  205. package/dist/hooks/use-tui-slash-commands.d.ts +2 -1
  206. package/dist/hooks/use-tui-slash-commands.d.ts.map +1 -1
  207. package/dist/index.d.ts +1 -1
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +19532 -17672
  210. package/dist/index.js.map +4 -4
  211. package/dist/input-validation/action-helpers.d.ts +12 -0
  212. package/dist/input-validation/action-helpers.d.ts.map +1 -0
  213. package/dist/input-validation/action-types.d.ts +4 -0
  214. package/dist/input-validation/action-types.d.ts.map +1 -0
  215. package/dist/input-validation/allow-lists.d.ts +29 -0
  216. package/dist/input-validation/allow-lists.d.ts.map +1 -0
  217. package/dist/input-validation/limits.d.ts +27 -0
  218. package/dist/input-validation/limits.d.ts.map +1 -0
  219. package/dist/input-validation/result.d.ts +10 -0
  220. package/dist/input-validation/result.d.ts.map +1 -0
  221. package/dist/input-validation/state-entries.d.ts +22 -0
  222. package/dist/input-validation/state-entries.d.ts.map +1 -0
  223. package/dist/input-validation/terminal.d.ts +69 -0
  224. package/dist/input-validation/terminal.d.ts.map +1 -0
  225. package/dist/input-validation.d.ts +10 -179
  226. package/dist/input-validation.d.ts.map +1 -1
  227. package/dist/layout-engine.d.ts +1 -1
  228. package/dist/layout-engine.d.ts.map +1 -1
  229. package/dist/layout-store.d.ts +8 -1
  230. package/dist/layout-store.d.ts.map +1 -1
  231. package/dist/mailbox-view-model-types.d.ts +19 -0
  232. package/dist/mailbox-view-model-types.d.ts.map +1 -0
  233. package/dist/memory-context-monitor.d.ts.map +1 -1
  234. package/dist/memory-slash-format.d.ts +10 -0
  235. package/dist/memory-slash-format.d.ts.map +1 -0
  236. package/dist/memory-slash.d.ts.map +1 -1
  237. package/dist/mouse.d.ts +11 -4
  238. package/dist/mouse.d.ts.map +1 -1
  239. package/dist/on-panel-open.d.ts +1 -1
  240. package/dist/on-panel-open.d.ts.map +1 -1
  241. package/dist/overlay-key-router.d.ts.map +1 -1
  242. package/dist/reducers/activity.d.ts +2 -1
  243. package/dist/reducers/activity.d.ts.map +1 -1
  244. package/dist/reducers/composer.d.ts +2 -1
  245. package/dist/reducers/composer.d.ts.map +1 -1
  246. package/dist/reducers/conversation.d.ts +3 -2
  247. package/dist/reducers/conversation.d.ts.map +1 -1
  248. package/dist/reducers/dialogs.d.ts +3 -2
  249. package/dist/reducers/dialogs.d.ts.map +1 -1
  250. package/dist/reducers/fleet.d.ts +2 -1
  251. package/dist/reducers/fleet.d.ts.map +1 -1
  252. package/dist/reducers/helpers.d.ts +1 -1
  253. package/dist/reducers/helpers.d.ts.map +1 -1
  254. package/dist/reducers/panel-pickers.d.ts +2 -1
  255. package/dist/reducers/panel-pickers.d.ts.map +1 -1
  256. package/dist/reducers/settings-panel.d.ts +2 -1
  257. package/dist/reducers/settings-panel.d.ts.map +1 -1
  258. package/dist/reducers/settings-values.d.ts +2 -1
  259. package/dist/reducers/settings-values.d.ts.map +1 -1
  260. package/dist/reducers/workspace-panels.d.ts +3 -2
  261. package/dist/reducers/workspace-panels.d.ts.map +1 -1
  262. package/dist/run-tui-client-registration.d.ts +18 -0
  263. package/dist/run-tui-client-registration.d.ts.map +1 -0
  264. package/dist/run-tui-options.d.ts +569 -0
  265. package/dist/run-tui-options.d.ts.map +1 -0
  266. package/dist/run-tui-title-controller.d.ts +16 -0
  267. package/dist/run-tui-title-controller.d.ts.map +1 -0
  268. package/dist/run-tui.d.ts +5 -572
  269. package/dist/run-tui.d.ts.map +1 -1
  270. package/dist/scroll-anchor.d.ts +10 -14
  271. package/dist/scroll-anchor.d.ts.map +1 -1
  272. package/dist/settings-contracts.d.ts +1 -1
  273. package/dist/settings-contracts.d.ts.map +1 -1
  274. package/dist/submit-controller.d.ts +4 -0
  275. package/dist/submit-controller.d.ts.map +1 -1
  276. package/dist/submit-prompt-refinement.d.ts +2 -0
  277. package/dist/submit-prompt-refinement.d.ts.map +1 -1
  278. package/dist/terminal-modes.d.ts +3 -0
  279. package/dist/terminal-modes.d.ts.map +1 -0
  280. package/dist/terminal-silence.d.ts +3 -0
  281. package/dist/terminal-silence.d.ts.map +1 -0
  282. package/dist/terminal-title.d.ts +7 -1
  283. package/dist/terminal-title.d.ts.map +1 -1
  284. package/dist/tui-host-capabilities.d.ts +1 -1
  285. package/dist/tui-host-capabilities.d.ts.map +1 -1
  286. package/dist/ui-contracts.d.ts +2 -1
  287. package/dist/ui-contracts.d.ts.map +1 -1
  288. package/package.json +11 -12
@@ -21,7 +21,75 @@ export interface HistoryScrollController {
21
21
  scrollToTrackCell(cell: number): void;
22
22
  /** True while the viewport is scrolled away from the newest output. */
23
23
  isScrolled(): boolean;
24
+ /**
25
+ * True when the viewport cell lands on a copyable card's copy icon. Lets the
26
+ * mouse handler decide synchronously whether to consume the click before
27
+ * firing the async copy. See {@link copyAtViewportCell} for the `row`/`col`
28
+ * coordinate contract.
29
+ */
30
+ hasCopyTargetAt(row: number, col: number): boolean;
31
+ /**
32
+ * Handle a left-click inside the history viewport. `row` is 0-based from the
33
+ * viewport top; `col` is 0-based from the LEFT EDGE OF THE HISTORY BAND, not
34
+ * the raw terminal column. In the interactive mount the band renders flush at
35
+ * terminal column 0 (the scrollbar occupies the rightmost columns), so the
36
+ * caller passes the terminal column directly; a band that is inset from the
37
+ * left must subtract its left offset first. When the cell lands on a copyable
38
+ * card's copy icon, its content is written to the system clipboard and the
39
+ * entry id is returned; otherwise returns null.
40
+ */
41
+ copyAtViewportCell(row: number, col: number): Promise<number | null>;
24
42
  }
43
+ /**
44
+ * A clickable copy-icon target resolved in viewport coordinates during the
45
+ * post-render measurement pass. `entryId` identifies a single card or the first
46
+ * member of a compact tool group; `entryIds` contains every group member when
47
+ * present. `startRow`/`endRow` bound the box's visible rows (0-based from the
48
+ * viewport top, `endRow` exclusive); `iconCol` is the 0-based terminal column
49
+ * the icon renders at on the box's first visible row.
50
+ */
51
+ export interface CopyHit {
52
+ entryId: number;
53
+ entryIds?: readonly number[] | undefined;
54
+ startRow: number;
55
+ endRow: number;
56
+ iconCol: number;
57
+ }
58
+ /** Sentinel returned after copying the active, non-retained tool-stream box. */
59
+ export declare const LIVE_TOOL_STREAM_COPY_ID = -1;
60
+ /**
61
+ * Resolve the copy target under a viewport cell, or null. A cell matches when
62
+ * its `row` is within the card's visible rows and its `col` is within the
63
+ * icon's cell span. Iterates newest-first so overlapping row estimates favor
64
+ * the most recently rendered card. Exported-shape pure helper for unit tests.
65
+ */
66
+ export declare function findCopyHit(hits: readonly CopyHit[], row: number, col: number): CopyHit | null;
67
+ /** Resolve a hit to the complete current clipboard payload without performing I/O. */
68
+ export declare function resolveCopyPayload(hit: CopyHit, entriesById: ReadonlyMap<number, HistoryEntry>, liveToolText?: string | undefined): {
69
+ entryId: number;
70
+ text: string;
71
+ } | null;
72
+ /**
73
+ * Rows clipped from the top of the mounted history stack before it appears in
74
+ * the viewport. Scrolled frames clip by the anchor's row offset; pinned frames
75
+ * rely on Ink flex-end clipping, which hides top overflow from mounted groups
76
+ * plus the live tool tail.
77
+ */
78
+ export declare function copyRegistryVisibleClip(opts: {
79
+ scrolled: boolean;
80
+ clip: number;
81
+ mountedRows: number;
82
+ tailRows: number;
83
+ viewportRows: number;
84
+ }): number;
85
+ /** Build the live tool-stream header hit, accounting for ToolStreamBox's top margin. */
86
+ export declare function liveToolStreamCopyHit(opts: {
87
+ visible: boolean;
88
+ mountedRows: number;
89
+ visibleClip: number;
90
+ viewportRows: number;
91
+ iconCol: number;
92
+ }): CopyHit | null;
25
93
  export interface ScrollableHistoryProps extends HistoryProps {
26
94
  /** Height of the viewport in rows, computed by App from the bottom region. */
27
95
  viewportRows: number;
@@ -40,6 +108,19 @@ export interface ScrollableHistoryProps extends HistoryProps {
40
108
  * store's persisted measurements and marks entries as measured after render,
41
109
  * eliminating estimate-vs-actual scroll jumps on re-render. */
42
110
  layoutStore?: import('../layout-store.js').LayoutStore | undefined;
111
+ /**
112
+ * Entry id of the card whose copy icon was just clicked. That card's icon
113
+ * renders in the success color for the brief window the host keeps this set,
114
+ * giving per-card visual feedback alongside the status-line "Copied" notice.
115
+ * `null` / undefined = no card highlighted.
116
+ */
117
+ copiedEntryId?: number | null | undefined;
118
+ /**
119
+ * Called when the user scrolls near the top of the currently loaded
120
+ * entries. The host should respond by loading older entries from the
121
+ * history archive and dispatching `archiveLoaded` to prepend them.
122
+ */
123
+ onRequestOlderEntries?: (() => void) | undefined;
43
124
  }
44
125
  /** Pure thumb geometry for the scrollbar: where the thumb starts and how many
45
126
  * cells it spans, given the track height, scroll offset, and total content
@@ -55,34 +136,32 @@ export declare function scrollbarThumb(rows: number, offset: number, total: numb
55
136
  * offset); cell rows-1 (bottom) → newest (offset 0). Exported for testing. */
56
137
  export declare function scrollOffsetForTrackRow(rows: number, total: number, cell: number): number;
57
138
  /**
58
- * Bounded history viewport with anchor-based virtual scrolling.
139
+ * Bounded history viewport with stable-anchor virtual scrolling.
59
140
  *
60
141
  * Instead of streaming entries into the terminal's native scrollback via
61
142
  * `<Static>`, retained entries render into a fixed-height `overflowY:'hidden'`
62
- * viewport the app scrolls itself. PageUp/PageDown always scroll it; mouse
63
- * mode additionally captures wheel and scrollbar interactions — both through
64
- * the {@link HistoryScrollController} this component owns.
143
+ * viewport the app scrolls itself. Wheel, PageUp/PageDown, and Ctrl+U/D scroll
144
+ * it in every mode; full mouse mode additionally enables scrollbar interaction.
145
+ * All paths use the {@link HistoryScrollController} this component owns.
65
146
  *
66
147
  * Positioning model (Ink-7 verified against real yoga layout):
67
- * - Pinned (anchor `null`): `justifyContent:'flex-end'` + enough trailing
148
+ * - Pinned (`anchor:null`): `justifyContent:'flex-end'` + enough trailing
68
149
  * groups mounted to overfill the viewport. Ink clips the overflow at the
69
150
  * TOP, so the newest output hugs the input line with zero position math.
70
- * - Scrolled (anchor set): `justifyContent:'flex-start'`; groups mount from
71
- * the anchor downward and the inner column gets `marginTop:-clip`, hiding
72
- * exactly the anchor rows above the viewport. Ink clips the excess at the
73
- * BOTTOM. What is on screen therefore depends ONLY on the anchor and the
74
- * real heights of mounted groups — estimated heights of off-window content
75
- * cannot move anything. There are no spacer elements to misalign.
151
+ * - Scrolled: wheel, page keys, and scrollbar gestures all resolve to the
152
+ * render-group id at the viewport top plus a row clipped inside that group.
153
+ * Groups mount from that stable anchor and `marginTop:-clip` hides preceding
154
+ * rows. Height corrections above the anchor can refine the scrollbar extent
155
+ * without changing which content is visible.
76
156
  *
77
- * Height estimates are still kept (in the {@link EntryHeightCache}) but are
78
- * demoted to two harmless jobs: deciding how many groups to mount (overfill is
79
- * clipped; underfill self-corrects after measurement) and sizing the scrollbar
80
- * thumb. A post-render `measureElement` pass promotes every mounted group to
81
- * its real height and persists it via the layout store.
157
+ * The {@link EntryHeightCache} seeds the global row space and decides how many
158
+ * groups to mount. A post-render `measureElement` pass promotes mounted groups
159
+ * to real heights and persists them. Only the mounted virtual window is
160
+ * measured; a long transcript is never mounted wholesale for calibration.
82
161
  *
83
162
  * Wrapped in `React.memo` so keystrokes in the input buffer don't trigger a
84
163
  * full managed-viewport re-layout.
85
164
  */
86
- export declare const ScrollableHistory: React.MemoExoticComponent<({ entries, toolStream, viewportRows, controllerRef, onScrollInfo, maxWidth, setSuggestions, autonomyMode, multiDiffSummaryThreshold, todos, showModelReasoning, layoutStore, }: ScrollableHistoryProps) => React.ReactElement>;
165
+ export declare const ScrollableHistory: React.MemoExoticComponent<({ entries, toolStream, viewportRows, controllerRef, onScrollInfo, maxWidth, setSuggestions, autonomyMode, multiDiffSummaryThreshold, todos, showModelReasoning, layoutStore, copiedEntryId, onRequestOlderEntries, }: ScrollableHistoryProps) => React.ReactElement>;
87
166
  export type { HistoryEntry };
88
167
  //# sourceMappingURL=scrollable-history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scrollable-history.d.ts","sourceRoot":"","sources":["../../src/components/scrollable-history.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,gBAAgB,EAOtB,MAAM,OAAO,CAAC;AA0Bf,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,YAAY,EAKlB,MAAM,cAAc,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mCAAmC;IACnC,UAAU,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC,yCAAyC;IACzC,WAAW,IAAI,IAAI,CAAC;IACpB,mCAAmC;IACnC,cAAc,IAAI,IAAI,CAAC;IACvB,qEAAqE;IACrE,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uEAAuE;IACvE,UAAU,IAAI,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB;wEACoE;IACpE,aAAa,CAAC,EAAE,gBAAgB,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7E;2DACuD;IACvD,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;oEAGgE;IAChE,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,WAAW,GAAG,SAAS,CAAC;CACpE;AAED;;oCAEoC;AACpC,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CASpD;AAED;;;+EAG+E;AAC/E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzF;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,iBAAiB,6MAa3B,sBAAsB,KAAG,KAAK,CAAC,YAAY,CAyY5C,CAAC;AAGH,YAAY,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"scrollable-history.d.ts","sourceRoot":"","sources":["../../src/components/scrollable-history.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { SettingsPickerJumpChord } from './settings-picker-jumps.js';
2
+ export type SettingsHighlightSegment = {
3
+ text: string;
4
+ match: boolean;
5
+ };
6
+ export type SettingsFilterResult = {
7
+ chord: SettingsPickerJumpChord;
8
+ contiguous: boolean;
9
+ fuzzyIdx: number[] | undefined;
10
+ score: number;
11
+ };
12
+ export interface SettingsFilterState {
13
+ filterActive: boolean;
14
+ filterQuery: string;
15
+ rankedResults: SettingsFilterResult[];
16
+ filteredFieldIndices: number[];
17
+ highlightSegments: (label: string) => SettingsHighlightSegment[];
18
+ }
19
+ export declare function buildSettingsFilterState(filter: string | undefined, chords: readonly SettingsPickerJumpChord[]): SettingsFilterState;
20
+ //# sourceMappingURL=settings-picker-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-picker-filter.d.ts","sourceRoot":"","sources":["../../src/components/settings-picker-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,wBAAwB,EAAE,CAAC;CAClE;AAkFD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,SAAS,uBAAuB,EAAE,GACzC,mBAAmB,CAsCrB"}
@@ -0,0 +1,16 @@
1
+ export type SettingsPickerJumpMod = 'ctrl' | 'alt' | 'alt-shift';
2
+ export interface SettingsPickerJumpChord {
3
+ /** The modifier that, combined with the letter, triggers the jump. */
4
+ mod: SettingsPickerJumpMod;
5
+ /** The lowercase letter that triggers the jump. */
6
+ letter: string;
7
+ /** Target row index. Must match the picker's actual field order. */
8
+ field: number;
9
+ /** Short label for the help overlay and any debug surfaces. */
10
+ label: string;
11
+ }
12
+ export declare const SETTINGS_PICKER_JUMP_CHORDS: ReadonlyArray<SettingsPickerJumpChord>;
13
+ export declare function settingsPickerJumpField(mod: SettingsPickerJumpMod, letter: string): number | undefined;
14
+ export declare function settingsPickerJumpByName(name: string): number | undefined;
15
+ export declare function settingsPickerJumpNames(): string[];
16
+ //# sourceMappingURL=settings-picker-jumps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-picker-jumps.d.ts","sourceRoot":"","sources":["../../src/components/settings-picker-jumps.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,GAAG,EAAE,qBAAqB,CAAC;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,uBAAuB,CAsB7E,CAAC;AAEH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,qBAAqB,EAC1B,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAIpB;AAMD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuBzE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD"}
@@ -0,0 +1,270 @@
1
+ /** Selectable presets for the auto-proceed delay, so the field is fully
2
+ * keyboard-cyclable (←/→) instead of needing typed numeric input. */
3
+ export declare const DELAY_PRESETS_MS: number[];
4
+ export declare const SETTINGS_MODES: readonly ['off', 'suggest', 'auto'];
5
+ export type SettingsMode = (typeof SETTINGS_MODES)[number];
6
+ export declare const LOG_LEVELS: readonly ['error', 'warn', 'info', 'debug', 'trace'];
7
+ export type LogLevel = (typeof LOG_LEVELS)[number];
8
+ export declare const AUDIT_LEVELS: readonly ['minimal', 'standard', 'full'];
9
+ export type AuditLevel = (typeof AUDIT_LEVELS)[number];
10
+ export declare const COMPACTOR_STRATEGIES: readonly ['hybrid', 'intelligent', 'selective'];
11
+ export type CompactorStrategy = (typeof COMPACTOR_STRATEGIES)[number];
12
+ /** Context window mode options — cyclable via ←/→. */
13
+ export declare const CONTEXT_MODES: readonly ['balanced', 'frugal', 'deep'];
14
+ export type ContextMode = (typeof CONTEXT_MODES)[number];
15
+ export declare const CONTEXT_MODE_DESCS: Record<ContextMode, string>;
16
+ export declare const STATUSLINE_MODES: readonly ['minimum', 'detailed', 'no-color'];
17
+ export type StatuslineMode = (typeof STATUSLINE_MODES)[number];
18
+ export declare const REASONING_MODES: readonly ['auto', 'on', 'off'];
19
+ export type ReasoningMode = (typeof REASONING_MODES)[number];
20
+ export declare const REASONING_EFFORTS: readonly ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'];
21
+ export type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
22
+ export declare const CACHE_TTLS: readonly ['default', '5m', '1h'];
23
+ export type CacheTtl = (typeof CACHE_TTLS)[number];
24
+ export declare const STATUSLINE_MODE_DESCS: Record<StatuslineMode, string>;
25
+ /** Presets for max iterations — cyclable via ←/→. 0 = unlimited. */
26
+ export declare const MAX_ITERATIONS_PRESETS: number[];
27
+ /** Presets for max concurrent subagents. 0 = runtime default. */
28
+ export declare const MAX_CONCURRENT_PRESETS: number[];
29
+ /** Presets for auto-proceed max iterations. 0 = unlimited, 50 default. */
30
+ export declare const AUTO_PROCEED_MAX_PRESETS: number[];
31
+ /** Presets for prompt refinement preview countdown. */
32
+ export declare const ENHANCE_DELAY_PRESETS: number[];
33
+ /** Presets for pre-refine grace countdown (seconds). 0 = skip. */
34
+ export declare const PRE_REFINE_SECONDS_PRESETS: number[];
35
+ /** Presets for the circuit-breaker auto kill/reset delay. 0 = manual recovery. */
36
+ export declare const BREAKER_TIMEOUT_PRESETS: number[];
37
+ export declare function formatBreakerTimeout(ms: number): string;
38
+ /**
39
+ * Presets for the multi-file diff summary footer cutoff. Each value is the
40
+ * minimum number of files before the aggregate `N files · +X -Y · …`
41
+ * line is rendered above the per-file blocks. `0` suppresses the footer
42
+ * entirely; `5` is the package default; values up to 15 are useful for
43
+ * very wide terminals where per-file footers are cheap.
44
+ */
45
+ export declare const MULTI_DIFF_SUMMARY_THRESHOLD_PRESETS: number[];
46
+ /** Language options for prompt refinement. */
47
+ export declare const ENHANCE_LANGUAGES: readonly ['original', 'english'];
48
+ export type EnhanceLanguage = (typeof ENHANCE_LANGUAGES)[number];
49
+ /** Token-saving tier options — cyclable via ←/→ in the settings picker.
50
+ * `auto` is the default: it keeps all tools and picks a leaner PROMPT only on
51
+ * small context windows (cache-safe). The concrete tiers below force a fixed
52
+ * level regardless of window. */
53
+ export declare const TOKEN_SAVING_TIERS: readonly ['auto', 'off', 'minimal', 'light', 'medium', 'aggressive'];
54
+ export type TokenSavingTierTui = (typeof TOKEN_SAVING_TIERS)[number];
55
+ export declare const TOKEN_SAVING_TIER_DESCS: Record<TokenSavingTierTui, string>;
56
+ /**
57
+ * Fleet-chat verbosity options — cyclable via ←/→ in the settings picker.
58
+ * Values MUST match core's `FleetChatVerbosity` union (config schema).
59
+ */
60
+ export declare const FLEET_CHAT_MODES: readonly ['off', 'full'];
61
+ export type FleetChatVerbosityTui = (typeof FLEET_CHAT_MODES)[number];
62
+ export declare const FLEET_CHAT_MODE_DESCS: Record<FleetChatVerbosityTui, string>;
63
+ export declare function formatSettingsDelay(ms: number): string;
64
+ export declare function formatMaxIterations(n: number): string;
65
+ export declare function formatMultiDiffSummaryThreshold(n: number): string;
66
+ export declare function formatEnhanceDelay(ms: number): string;
67
+ export declare function formatPreRefineSeconds(s: number): string;
68
+ /** Animation style choices for the settings picker — all AnimationStyles plus 'cycle'. */
69
+ export declare const ANIMATION_STYLE_CHOICES: readonly ["rainbow", "wave", "pulse", "dots", "breathe", "cycle"];
70
+ export type AnimationStyleChoice = (typeof ANIMATION_STYLE_CHOICES)[number];
71
+ /** Human-readable label for an animation style choice (including cycle). */
72
+ export declare function formatAnimationStyle(style: AnimationStyleChoice): string;
73
+ export declare const MODE_DESC: Record<SettingsMode, string>;
74
+ /** Total number of settings rows (used for wrap-around navigation). */
75
+ export declare const SETTINGS_FIELD_COUNT = 42;
76
+ /**
77
+ * Field index of the "Thinking word" row. The reducer's per-field switch and
78
+ * the app.tsx key handler both branch on this, so it lives next to the row
79
+ * definitions to keep the three in sync. If the row order changes, update this.
80
+ */
81
+ export declare const THINKING_WORD_FIELD = 22;
82
+ /**
83
+ * Field index of the "Multi-diff summary" row. Same rationale as
84
+ * {@link THINKING_WORD_FIELD}: the keyboard handler in app.tsx dispatches
85
+ * `settingsFieldSet` to this index when the user presses Ctrl+M inside the
86
+ * picker, so any reorder of the Tools section must update this constant.
87
+ */
88
+ export declare const MULTI_DIFF_SUMMARY_THRESHOLD_FIELD = 21;
89
+ /**
90
+ * Map of modifier+<letter> chords to settings-picker rows. While the picker
91
+ * is open, pressing a chord jumps the cursor straight to the target row so
92
+ * the user can immediately cycle its value with ←/→ (or, for the thinking
93
+ * word, Enter to open the free-text editor).
94
+ *
95
+ * Ctrl chords must NOT collide with global bindings:
96
+ * Ctrl+S = close picker · Ctrl+G = F3 agents monitor · Ctrl+F = F2 fleet
97
+ * monitor · Ctrl+P = PhaseMonitor · Ctrl+T = F4 worktree · Ctrl+A = F5 plan
98
+ * panel · Ctrl+K = F9 goal panel.
99
+ *
100
+ * Alt chords must NOT collide with:
101
+ * Alt+V = paste image from clipboard (chat input).
102
+ *
103
+ * Alt+Shift chords (mod+Alt in the user's framing) reuse the same letter as
104
+ * plain Alt or Ctrl when the plain variants are already taken — the
105
+ * composition distinguishes them at the keyboard level. For example, the
106
+ * Ctrl and Alt+Shift sets both use 'L' for the Logging rows, but Alt+L and
107
+ * Alt+Shift+L land on different fields.
108
+ *
109
+ * Each entry's `field` must match the actual row index at render time — the
110
+ * `settingsFieldSet` action clamps out-of-range values to 0, so a drift
111
+ * between this map and the picker row order would silently land the user on
112
+ * row 0 instead of jumping them to the intended target.
113
+ */
114
+ /**
115
+ * Curated words the "Thinking word" field cycles through with ←/→. The user's
116
+ * own custom word (set via Enter free-text edit or config) is folded into this
117
+ * list at runtime so cycling never drops it. All entries must satisfy
118
+ * `normalizeTuiThinkingWord` (single short word, ≤16 chars).
119
+ *
120
+ * `'thinking'` (the default) and `'random'` both surface a fresh fun word from
121
+ * the pool on each working spell — see `isRandomTuiThinkingWord`.
122
+ */
123
+ export declare const THINKING_WORD_PRESETS: readonly ['thinking', 'random', 'working', 'cooking', 'vibing', 'pondering', 'brewing', 'crunching', 'computing', 'grinding', 'noodling', 'churning', 'hacking'];
124
+ export declare const CONFIG_SCOPES: readonly ['global', 'project'];
125
+ export type ConfigScope = (typeof CONFIG_SCOPES)[number];
126
+ /**
127
+ * Partial patch for the configurable keys of the settings-picker state.
128
+ * Excludes non-configurable keys (open, field, lastSettingsField, filter,
129
+ * hint, thinkingWordEditing, thinkingWordDraft).
130
+ */
131
+ export type SettingsPickerPatch = Partial<{
132
+ mode: SettingsMode;
133
+ delayMs: number;
134
+ titleAnimation: boolean;
135
+ yolo: boolean;
136
+ fleetChat: FleetChatVerbosityTui;
137
+ chime: boolean;
138
+ confirmExit: boolean;
139
+ nextPrediction: boolean;
140
+ featureMcp: boolean;
141
+ featurePlugins: boolean;
142
+ featureMemory: boolean;
143
+ featureSkills: boolean;
144
+ featureModelsRegistry: boolean;
145
+ tokenSavingTier: TokenSavingTierTui;
146
+ allowOutsideProjectRoot: boolean;
147
+ contextAutoCompact: boolean;
148
+ contextStrategy: CompactorStrategy;
149
+ contextMode: ContextMode;
150
+ maxConcurrent: number;
151
+ logLevel: LogLevel;
152
+ auditLevel: AuditLevel;
153
+ indexOnStart: boolean;
154
+ multiDiffSummaryThreshold: number;
155
+ maxIterations: number;
156
+ autoProceedMaxIterations: number;
157
+ enhanceDelayMs: number;
158
+ preRefineSeconds: number;
159
+ enhanceEnabled: boolean;
160
+ enhanceLanguage: EnhanceLanguage;
161
+ debugStream: boolean;
162
+ statuslineMode: StatuslineMode;
163
+ reasoningMode: ReasoningMode;
164
+ reasoningEffort: ReasoningEffort;
165
+ reasoningPreserve: boolean;
166
+ thinkingWord: string;
167
+ cacheTtl: CacheTtl;
168
+ configScope: ConfigScope;
169
+ animationStyle: AnimationStyleChoice;
170
+ breakerEnabled: boolean;
171
+ breakerAutoKillResetMs: number;
172
+ showModelReasoning: boolean;
173
+ showAgentSwarmPanel: boolean;
174
+ }>;
175
+ /**
176
+ * Human-readable labels for all settings fields (0–SETTINGS_FIELD_COUNT-1),
177
+ * in picker row order. Used by `resolveSettingsFieldValue` for confirmation
178
+ * and error messages, and by the `/settings` help text.
179
+ */
180
+ export declare const SETTINGS_FIELD_LABELS: readonly string[];
181
+ /**
182
+ * Resolve a free-text value for a given settings field into a typed
183
+ * state patch. Used by the `/settings <chord> <value>` slash command.
184
+ *
185
+ * Value parsing rules:
186
+ * - **Boolean fields**: "on"/"off", "true"/"false", "yes"/"no",
187
+ * "1"/"0" (case-insensitive).
188
+ * - **Enum fields**: case-insensitive match against the allowed values.
189
+ * - **Preset fields**: either the raw number (e.g. "500") or the
190
+ * display name (e.g. "unlimited" for 0, "off" for 0, "1m" for 60000).
191
+ * - **Text fields** (thinking word): accepted as-is, validated by
192
+ * `normalizeTuiThinkingWord`.
193
+ *
194
+ * Returns `{ ok: true, patch, label, displayValue }` on success, or
195
+ * `{ ok: false, error }` with a helpful message listing valid options.
196
+ */
197
+ export declare function resolveSettingsFieldValue(field: number, input: string): {
198
+ ok: true;
199
+ patch: SettingsPickerPatch;
200
+ label: string;
201
+ displayValue: string;
202
+ } | {
203
+ ok: false;
204
+ error: string;
205
+ };
206
+ /**
207
+ * Read-only counterpart to {@link resolveSettingsFieldValue}. Given the
208
+ * current settings-picker values and a field index, returns the value
209
+ * formatted for display (e.g. `30s`, `unlimited`, `off`, `high`).
210
+ *
211
+ * Used by the `/settings-get <chord>` slash command so the user can
212
+ * query a setting without opening the picker.
213
+ *
214
+ * The input type is `SettingsPickerValues` — all keys of
215
+ * {@link SettingsPickerPatch} made required — which matches the
216
+ * settingsPicker state slice from app-state.ts (minus non-configurable
217
+ * keys like `open`, `field`, `filter`).
218
+ */
219
+ export type SettingsPickerValues = {
220
+ [K in keyof SettingsPickerPatch]-?: SettingsPickerPatch[K];
221
+ };
222
+ export declare function getSettingsFieldValue(values: SettingsPickerValues, field: number): {
223
+ ok: true;
224
+ label: string;
225
+ displayValue: string;
226
+ } | {
227
+ ok: false;
228
+ error: string;
229
+ };
230
+ /**
231
+ * Produce a compact, section-grouped text summary of ALL settings values.
232
+ * Used by the `/settings-get` command when called with no arguments, so
233
+ * the user can see their full configuration at a glance without opening
234
+ * the picker overlay.
235
+ *
236
+ * Format (one line per field):
237
+ * ```
238
+ * ── Autonomy ──
239
+ * Default autonomy mode auto
240
+ * Auto-proceed delay 30s
241
+ * ── UX ──
242
+ * YOLO mode off
243
+ * ...
244
+ * ```
245
+ */
246
+ export declare function formatAllSettingsSummary(values: SettingsPickerValues): string;
247
+ /**
248
+ * Default values for all configurable settings fields, in the same
249
+ * shape as {@link SettingsPickerValues}. Extracted from the reducer's
250
+ * initial state so there is a single source of truth for "factory
251
+ * defaults". Used by {@link resetSettingsFieldValue}.
252
+ */
253
+ export declare const SETTINGS_DEFAULTS: Readonly<SettingsPickerValues>;
254
+ /**
255
+ * Reset a single settings field to its factory default. Returns the
256
+ * same shape as {@link resolveSettingsFieldValue} so the command
257
+ * handler can use the same dispatch + persist logic.
258
+ *
259
+ * Used by the `/settings reset <chord>` slash command.
260
+ */
261
+ export declare function resetSettingsFieldValue(field: number): {
262
+ ok: true;
263
+ patch: SettingsPickerPatch;
264
+ label: string;
265
+ displayValue: string;
266
+ } | {
267
+ ok: false;
268
+ error: string;
269
+ };
270
+ //# sourceMappingURL=settings-picker-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-picker-model.d.ts","sourceRoot":"","sources":["../../src/components/settings-picker-model.ts"],"names":[],"mappings":"AAGA;sEACsE;AACtE,eAAO,MAAM,gBAAgB,UAA+C,CAAC;AAC7E,eAAO,MAAM,cAAc,YAAI,KAAK,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,UAAU,YAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAC/E,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,UAAU,EAAE,MAAM,CAAU,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,oBAAoB,YAAI,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAU,CAAC;AACpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,sDAAsD;AACtD,eAAO,MAAM,aAAa,YAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAI1D,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAAI,SAAS,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAC7E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,eAAe,YAAI,MAAM,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,iBAAiB,YAAI,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AACvG,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,UAAU,YAAI,SAAS,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAC3D,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAIhE,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,UAA2B,CAAC;AAE/D,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,UAA8B,CAAC;AAElE,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,UAA4B,CAAC;AAElE,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,UAAoD,CAAC;AAEvF,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,UAAsB,CAAC;AAE9D,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,UAAwC,CAAC;AAE7E,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,UAAuB,CAAC;AAEzE,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,YAAI,UAAU,EAAE,SAAS,CAAU,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE;;;kCAGkC;AAClC,eAAO,MAAM,kBAAkB,YAAI,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AACvG,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAOtE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAI,KAAK,EAAE,MAAM,CAAU,CAAC;AACzD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAGvE,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,mEAA0C,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAGxE;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAIlD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,YAChC,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,CACD,CAAC;AAEX,eAAO,MAAM,aAAa,YAAI,QAAQ,EAAE,SAAS,CAAU,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAUzD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,kBAAkB,CAAC;IACpC,uBAAuB,EAAE,OAAO,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,iBAAiB,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,yBAAyB,EAAE,MAAM,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EA2ClD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA8H9G;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,oBAAoB,GAAG;KAChC,CAAC,IAAI,MAAM,mBAAmB,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;CAC3D,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsDlF;AAsDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAY7E;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CA8ClD,CAAC;AAEZ;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAO9G"}
@@ -0,0 +1,21 @@
1
+ import type React from 'react';
2
+ import type { SettingsFilterResult, SettingsHighlightSegment } from './settings-picker-filter.js';
3
+ export interface SettingsPickerRowData {
4
+ section?: string | undefined;
5
+ label?: string | undefined;
6
+ value?: string | undefined;
7
+ detail?: string | undefined;
8
+ }
9
+ interface SettingsPickerRowListProps {
10
+ rows: readonly SettingsPickerRowData[];
11
+ field: number;
12
+ fieldRowIndex: readonly number[];
13
+ filterActive: boolean;
14
+ rankedResults: readonly SettingsFilterResult[];
15
+ highlightSegments: (label: string) => readonly SettingsHighlightSegment[];
16
+ windowStart: number;
17
+ windowEnd: number;
18
+ }
19
+ export declare function SettingsPickerRowList({ rows, field, fieldRowIndex, filterActive, rankedResults, highlightSegments, windowStart, windowEnd, }: SettingsPickerRowListProps): React.ReactElement;
20
+ export {};
21
+ //# sourceMappingURL=settings-picker-row-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-picker-row-list.d.ts","sourceRoot":"","sources":["../../src/components/settings-picker-row-list.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAElG,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,UAAU,0BAA0B;IAClC,IAAI,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,wBAAwB,EAAE,CAAC;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AA6DD,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAiCjD"}