@agi-fans/dsh-tui 0.4.0 → 0.5.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.
Files changed (242) hide show
  1. package/README.md +43 -7
  2. package/lib/CHANGELOG.md +33 -1
  3. package/lib/{box.d.ts → chrome/box.d.ts} +2 -0
  4. package/lib/{box.js → chrome/box.js} +26 -16
  5. package/lib/chrome/box.js.map +1 -0
  6. package/lib/chrome/command-output.js.map +1 -0
  7. package/lib/chrome/diff-render.d.ts +39 -0
  8. package/lib/chrome/diff-render.js +274 -0
  9. package/lib/chrome/diff-render.js.map +1 -0
  10. package/lib/chrome/markdown.d.ts +17 -0
  11. package/lib/chrome/markdown.js +537 -0
  12. package/lib/chrome/markdown.js.map +1 -0
  13. package/lib/chrome/path-mentions.js.map +1 -0
  14. package/lib/chrome/relative-time.js.map +1 -0
  15. package/lib/chrome/renderer.js.map +1 -0
  16. package/lib/chrome/status-config.d.ts +70 -0
  17. package/lib/chrome/status-config.js +147 -0
  18. package/lib/chrome/status-config.js.map +1 -0
  19. package/lib/{status-line.d.ts → chrome/status-line.d.ts} +20 -2
  20. package/lib/{status-line.js → chrome/status-line.js} +175 -113
  21. package/lib/chrome/status-line.js.map +1 -0
  22. package/lib/chrome/style.js.map +1 -0
  23. package/lib/{theme.d.ts → chrome/theme.d.ts} +5 -3
  24. package/lib/chrome/theme.js +708 -0
  25. package/lib/chrome/theme.js.map +1 -0
  26. package/lib/{tool-renderers.js → chrome/tool-renderers.js} +25 -20
  27. package/lib/chrome/tool-renderers.js.map +1 -0
  28. package/lib/chrome/tools-list.js.map +1 -0
  29. package/lib/{welcome-tips.js → chrome/welcome-tips.js} +4 -2
  30. package/lib/chrome/welcome-tips.js.map +1 -0
  31. package/lib/chrome/width.js.map +1 -0
  32. package/lib/{command-auth.js → commands/auth.js} +2 -2
  33. package/lib/commands/auth.js.map +1 -0
  34. package/lib/{command-export.js → commands/export.js} +3 -3
  35. package/lib/commands/export.js.map +1 -0
  36. package/lib/{command-integrations.js → commands/integrations.js} +2 -2
  37. package/lib/commands/integrations.js.map +1 -0
  38. package/lib/{command-loop.d.ts → commands/loop.d.ts} +1 -1
  39. package/lib/{command-loop.js → commands/loop.js} +2 -2
  40. package/lib/commands/loop.js.map +1 -0
  41. package/lib/{command-model.js → commands/model.js} +2 -2
  42. package/lib/commands/model.js.map +1 -0
  43. package/lib/{command-permission.js → commands/permission.js} +13 -8
  44. package/lib/commands/permission.js.map +1 -0
  45. package/lib/{command-registration.js → commands/registration.js} +1 -1
  46. package/lib/commands/registration.js.map +1 -0
  47. package/lib/commands/session-configuration.d.ts +5 -0
  48. package/lib/commands/session-configuration.js +108 -0
  49. package/lib/commands/session-configuration.js.map +1 -0
  50. package/lib/{command-session.js → commands/session.js} +10 -7
  51. package/lib/commands/session.js.map +1 -0
  52. package/lib/{command-steer.js → commands/steer.js} +2 -2
  53. package/lib/commands/steer.js.map +1 -0
  54. package/lib/definition.d.ts +6 -1
  55. package/lib/definition.js.map +1 -1
  56. package/lib/index.d.ts +1 -1
  57. package/lib/index.js +1 -1
  58. package/lib/index.js.map +1 -1
  59. package/lib/input/clipboard.js.map +1 -0
  60. package/lib/input/editor.js.map +1 -0
  61. package/lib/input/external-editor.js.map +1 -0
  62. package/lib/{image-paste.d.ts → input/image-paste.d.ts} +1 -1
  63. package/lib/input/image-paste.js.map +1 -0
  64. package/lib/input/keybindings-config.js.map +1 -0
  65. package/lib/input/keys.js.map +1 -0
  66. package/lib/runtime/agent-profile.d.ts +10 -0
  67. package/lib/runtime/agent-profile.js +9 -0
  68. package/lib/runtime/agent-profile.js.map +1 -0
  69. package/lib/{human-interaction.js → runtime/human-interaction.js} +1 -1
  70. package/lib/runtime/human-interaction.js.map +1 -0
  71. package/lib/{provider-local.d.ts → runtime/provider-local.d.ts} +9 -9
  72. package/lib/{provider-local.js → runtime/provider-local.js} +30 -26
  73. package/lib/runtime/provider-local.js.map +1 -0
  74. package/lib/runtime/runner.js.map +1 -0
  75. package/lib/{session-runtime.d.ts → runtime/session-runtime.d.ts} +2 -2
  76. package/lib/{session-runtime.js → runtime/session-runtime.js} +3 -3
  77. package/lib/runtime/session-runtime.js.map +1 -0
  78. package/lib/{startup-notices.js → runtime/startup-notices.js} +6 -6
  79. package/lib/runtime/startup-notices.js.map +1 -0
  80. package/lib/{tool-presentation.d.ts → runtime/tool-presentation.d.ts} +1 -1
  81. package/lib/runtime/tool-presentation.js.map +1 -0
  82. package/lib/{interaction-adapter.d.ts → session/interaction-adapter.d.ts} +1 -1
  83. package/lib/session/interaction-adapter.js.map +1 -0
  84. package/lib/{package-metadata.js → session/package-metadata.js} +1 -1
  85. package/lib/session/package-metadata.js.map +1 -0
  86. package/lib/session/project-context.js.map +1 -0
  87. package/lib/session/project-file-search.js.map +1 -0
  88. package/lib/session/release-notes.js.map +1 -0
  89. package/lib/session/session-configuration.d.ts +25 -0
  90. package/lib/session/session-configuration.js +46 -0
  91. package/lib/session/session-configuration.js.map +1 -0
  92. package/lib/{session-controller.d.ts → session/session-controller.d.ts} +13 -2
  93. package/lib/{session-controller.js → session/session-controller.js} +181 -11
  94. package/lib/session/session-controller.js.map +1 -0
  95. package/lib/{tui-settings.d.ts → session/tui-settings.d.ts} +2 -2
  96. package/lib/session/tui-settings.js +42 -0
  97. package/lib/session/tui-settings.js.map +1 -0
  98. package/lib/session/update-check.js.map +1 -0
  99. package/lib/{autocomplete.d.ts → views/autocomplete.d.ts} +1 -1
  100. package/lib/{autocomplete.js → views/autocomplete.js} +2 -2
  101. package/lib/views/autocomplete.js.map +1 -0
  102. package/lib/{copy-selector.d.ts → views/copy-selector.d.ts} +2 -2
  103. package/lib/{copy-selector.js → views/copy-selector.js} +2 -2
  104. package/lib/views/copy-selector.js.map +1 -0
  105. package/lib/views/copy-targets.js.map +1 -0
  106. package/lib/{event-views.d.ts → views/event-views.d.ts} +8 -8
  107. package/lib/{event-views.js → views/event-views.js} +64 -25
  108. package/lib/views/event-views.js.map +1 -0
  109. package/lib/{history-search.d.ts → views/history-search.d.ts} +2 -2
  110. package/lib/{history-search.js → views/history-search.js} +3 -3
  111. package/lib/views/history-search.js.map +1 -0
  112. package/lib/views/history-store.js.map +1 -0
  113. package/lib/{hotkeys.d.ts → views/hotkeys.d.ts} +1 -1
  114. package/lib/{hotkeys.js → views/hotkeys.js} +1 -1
  115. package/lib/views/hotkeys.js.map +1 -0
  116. package/lib/{path-complete.d.ts → views/path-complete.d.ts} +2 -2
  117. package/lib/{path-complete.js → views/path-complete.js} +1 -1
  118. package/lib/views/path-complete.js.map +1 -0
  119. package/lib/{prompt-selector.d.ts → views/prompt-selector.d.ts} +2 -2
  120. package/lib/{prompt-selector.js → views/prompt-selector.js} +4 -4
  121. package/lib/views/prompt-selector.js.map +1 -0
  122. package/lib/{settings-list.d.ts → views/settings-list.d.ts} +11 -6
  123. package/lib/{settings-list.js → views/settings-list.js} +217 -85
  124. package/lib/views/settings-list.js.map +1 -0
  125. package/lib/views/transcript-export.js.map +1 -0
  126. package/package.json +64 -54
  127. package/lib/autocomplete.js.map +0 -1
  128. package/lib/box.js.map +0 -1
  129. package/lib/clipboard.js.map +0 -1
  130. package/lib/command-auth.js.map +0 -1
  131. package/lib/command-export.js.map +0 -1
  132. package/lib/command-integrations.js.map +0 -1
  133. package/lib/command-loop.js.map +0 -1
  134. package/lib/command-model.js.map +0 -1
  135. package/lib/command-output.js.map +0 -1
  136. package/lib/command-permission.js.map +0 -1
  137. package/lib/command-registration.js.map +0 -1
  138. package/lib/command-session.js.map +0 -1
  139. package/lib/command-steer.js.map +0 -1
  140. package/lib/copy-selector.js.map +0 -1
  141. package/lib/copy-targets.js.map +0 -1
  142. package/lib/editor.js.map +0 -1
  143. package/lib/event-views.js.map +0 -1
  144. package/lib/external-editor.js.map +0 -1
  145. package/lib/history-search.js.map +0 -1
  146. package/lib/history-store.js.map +0 -1
  147. package/lib/hotkeys.js.map +0 -1
  148. package/lib/human-interaction.js.map +0 -1
  149. package/lib/image-paste.js.map +0 -1
  150. package/lib/interaction-adapter.js.map +0 -1
  151. package/lib/keybindings-config.js.map +0 -1
  152. package/lib/keys.js.map +0 -1
  153. package/lib/markdown.d.ts +0 -13
  154. package/lib/markdown.js +0 -453
  155. package/lib/markdown.js.map +0 -1
  156. package/lib/package-metadata.js.map +0 -1
  157. package/lib/path-complete.js.map +0 -1
  158. package/lib/path-mentions.js.map +0 -1
  159. package/lib/project-context.js.map +0 -1
  160. package/lib/project-file-search.js.map +0 -1
  161. package/lib/prompt-selector.js.map +0 -1
  162. package/lib/provider-local.js.map +0 -1
  163. package/lib/relative-time.js.map +0 -1
  164. package/lib/release-notes.js.map +0 -1
  165. package/lib/renderer.js.map +0 -1
  166. package/lib/runner.js.map +0 -1
  167. package/lib/session-controller.js.map +0 -1
  168. package/lib/session-runtime.js.map +0 -1
  169. package/lib/settings-list.js.map +0 -1
  170. package/lib/startup-notices.js.map +0 -1
  171. package/lib/status-config.d.ts +0 -32
  172. package/lib/status-config.js +0 -52
  173. package/lib/status-config.js.map +0 -1
  174. package/lib/status-line.js.map +0 -1
  175. package/lib/style.js.map +0 -1
  176. package/lib/theme.js +0 -317
  177. package/lib/theme.js.map +0 -1
  178. package/lib/tool-presentation.js.map +0 -1
  179. package/lib/tool-renderers.js.map +0 -1
  180. package/lib/tools-list.js.map +0 -1
  181. package/lib/transcript-export.js.map +0 -1
  182. package/lib/tui-settings.js +0 -26
  183. package/lib/tui-settings.js.map +0 -1
  184. package/lib/update-check.js.map +0 -1
  185. package/lib/welcome-tips.js.map +0 -1
  186. package/lib/width.js.map +0 -1
  187. /package/lib/{command-output.d.ts → chrome/command-output.d.ts} +0 -0
  188. /package/lib/{command-output.js → chrome/command-output.js} +0 -0
  189. /package/lib/{path-mentions.d.ts → chrome/path-mentions.d.ts} +0 -0
  190. /package/lib/{path-mentions.js → chrome/path-mentions.js} +0 -0
  191. /package/lib/{relative-time.d.ts → chrome/relative-time.d.ts} +0 -0
  192. /package/lib/{relative-time.js → chrome/relative-time.js} +0 -0
  193. /package/lib/{renderer.d.ts → chrome/renderer.d.ts} +0 -0
  194. /package/lib/{renderer.js → chrome/renderer.js} +0 -0
  195. /package/lib/{style.d.ts → chrome/style.d.ts} +0 -0
  196. /package/lib/{style.js → chrome/style.js} +0 -0
  197. /package/lib/{tool-renderers.d.ts → chrome/tool-renderers.d.ts} +0 -0
  198. /package/lib/{tools-list.d.ts → chrome/tools-list.d.ts} +0 -0
  199. /package/lib/{tools-list.js → chrome/tools-list.js} +0 -0
  200. /package/lib/{welcome-tips.d.ts → chrome/welcome-tips.d.ts} +0 -0
  201. /package/lib/{width.d.ts → chrome/width.d.ts} +0 -0
  202. /package/lib/{width.js → chrome/width.js} +0 -0
  203. /package/lib/{command-auth.d.ts → commands/auth.d.ts} +0 -0
  204. /package/lib/{command-export.d.ts → commands/export.d.ts} +0 -0
  205. /package/lib/{command-integrations.d.ts → commands/integrations.d.ts} +0 -0
  206. /package/lib/{command-model.d.ts → commands/model.d.ts} +0 -0
  207. /package/lib/{command-permission.d.ts → commands/permission.d.ts} +0 -0
  208. /package/lib/{command-registration.d.ts → commands/registration.d.ts} +0 -0
  209. /package/lib/{command-session.d.ts → commands/session.d.ts} +0 -0
  210. /package/lib/{command-steer.d.ts → commands/steer.d.ts} +0 -0
  211. /package/lib/{clipboard.d.ts → input/clipboard.d.ts} +0 -0
  212. /package/lib/{clipboard.js → input/clipboard.js} +0 -0
  213. /package/lib/{editor.d.ts → input/editor.d.ts} +0 -0
  214. /package/lib/{editor.js → input/editor.js} +0 -0
  215. /package/lib/{external-editor.d.ts → input/external-editor.d.ts} +0 -0
  216. /package/lib/{external-editor.js → input/external-editor.js} +0 -0
  217. /package/lib/{image-paste.js → input/image-paste.js} +0 -0
  218. /package/lib/{keybindings-config.d.ts → input/keybindings-config.d.ts} +0 -0
  219. /package/lib/{keybindings-config.js → input/keybindings-config.js} +0 -0
  220. /package/lib/{keys.d.ts → input/keys.d.ts} +0 -0
  221. /package/lib/{keys.js → input/keys.js} +0 -0
  222. /package/lib/{human-interaction.d.ts → runtime/human-interaction.d.ts} +0 -0
  223. /package/lib/{runner.d.ts → runtime/runner.d.ts} +0 -0
  224. /package/lib/{runner.js → runtime/runner.js} +0 -0
  225. /package/lib/{startup-notices.d.ts → runtime/startup-notices.d.ts} +0 -0
  226. /package/lib/{tool-presentation.js → runtime/tool-presentation.js} +0 -0
  227. /package/lib/{interaction-adapter.js → session/interaction-adapter.js} +0 -0
  228. /package/lib/{package-metadata.d.ts → session/package-metadata.d.ts} +0 -0
  229. /package/lib/{project-context.d.ts → session/project-context.d.ts} +0 -0
  230. /package/lib/{project-context.js → session/project-context.js} +0 -0
  231. /package/lib/{project-file-search.d.ts → session/project-file-search.d.ts} +0 -0
  232. /package/lib/{project-file-search.js → session/project-file-search.js} +0 -0
  233. /package/lib/{release-notes.d.ts → session/release-notes.d.ts} +0 -0
  234. /package/lib/{release-notes.js → session/release-notes.js} +0 -0
  235. /package/lib/{update-check.d.ts → session/update-check.d.ts} +0 -0
  236. /package/lib/{update-check.js → session/update-check.js} +0 -0
  237. /package/lib/{copy-targets.d.ts → views/copy-targets.d.ts} +0 -0
  238. /package/lib/{copy-targets.js → views/copy-targets.js} +0 -0
  239. /package/lib/{history-store.d.ts → views/history-store.d.ts} +0 -0
  240. /package/lib/{history-store.js → views/history-store.js} +0 -0
  241. /package/lib/{transcript-export.d.ts → views/transcript-export.d.ts} +0 -0
  242. /package/lib/{transcript-export.js → views/transcript-export.js} +0 -0
@@ -7,7 +7,7 @@
7
7
  import { readdirSync, statSync } from 'node:fs';
8
8
  import { homedir } from 'node:os';
9
9
  import path from 'node:path';
10
- import { ProjectFileSearch, } from "./project-file-search.js";
10
+ import { ProjectFileSearch, } from "../session/project-file-search.js";
11
11
  import { BUILTIN_SLASH_COMMANDS, findLeadingSlashCommandStart, resolveSlashCommand, } from "./autocomplete.js";
12
12
  const PATH_DELIMITERS = new Set([' ', '\t', '"', "'", '=']);
13
13
  /** Last path-token delimiter before the cursor, or -1. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-complete.js","sourceRoot":"","sources":["../../src/views/path-complete.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /** Interactive terminal selector used by resume, approval, and user questions. */
2
- import type { TuiPrompt } from './definition.ts';
3
- import { type Theme } from './theme.ts';
2
+ import type { TuiPrompt } from '../definition.ts';
3
+ import { type Theme } from '../chrome/theme.ts';
4
4
  /** Presentation state owned by the terminal while a human prompt is active. */
5
5
  export interface PromptSelectorState {
6
6
  request: TuiPrompt;
@@ -1,8 +1,8 @@
1
1
  /** Interactive terminal selector used by resume, approval, and user questions. */
2
- import { renderEditor, renderFramedBlock } from "./box.js";
3
- import { renderMarkdown } from "./markdown.js";
4
- import { BOX, SYMBOL } from "./theme.js";
5
- import { padToWidth, truncateToWidth, visibleWidth } from "./width.js";
2
+ import { renderEditor, renderFramedBlock } from "../chrome/box.js";
3
+ import { renderMarkdown } from "../chrome/markdown.js";
4
+ import { BOX, SYMBOL } from "../chrome/theme.js";
5
+ import { padToWidth, truncateToWidth, visibleWidth } from "../chrome/width.js";
6
6
  /** Maximum option rows retained in the prompt overlay before it windows. */
7
7
  export const PROMPT_SELECTOR_MAX_VISIBLE = 10;
8
8
  /** Preserve editor indices and line breaks while hiding every entered cell. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-selector.js","sourceRoot":"","sources":["../../src/views/prompt-selector.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@
3
3
  * Pure — the provider owns live application of the selected values.
4
4
  * @module @agi-fans/dsh-tui
5
5
  */
6
- import type { KeyEvent } from './keys.ts';
7
- import { type StartupChangelogMode } from './release-notes.ts';
8
- import { type StatusBarConfig, type StatusGroupId, type StatusPreset } from './status-config.ts';
9
- import { type Theme, type ThemeName } from './theme.ts';
6
+ import type { KeyEvent } from '../input/keys.ts';
7
+ import { type StartupChangelogMode } from '../session/release-notes.ts';
8
+ import { type StatusBarConfig, type StatusItemId, type StatusPreset } from '../chrome/status-config.ts';
9
+ import { type Theme, type ThemeColor, type ThemeName } from '../chrome/theme.ts';
10
10
  /** One cycleable row in the overlay. */
11
11
  export interface SettingItem {
12
12
  id: string;
@@ -14,6 +14,11 @@ export interface SettingItem {
14
14
  description: string;
15
15
  value: string;
16
16
  values: readonly string[];
17
+ /** Preview fragment this row controls, when it is a footer item. */
18
+ sample?: string;
19
+ /** Theme token used to paint the color value. */
20
+ swatch?: ThemeColor;
21
+ hidden?: boolean;
17
22
  }
18
23
  /** Session-local TUI prefs the overlay can change. */
19
24
  export interface TuiPrefs {
@@ -30,8 +35,8 @@ export interface TuiPrefs {
30
35
  export interface SettingsState {
31
36
  selected: number;
32
37
  prefs: TuiPrefs;
33
- /** Status group currently attached to the up/down reorder gesture. */
34
- moving?: StatusGroupId;
38
+ /** Footer item currently attached to the up/down reorder gesture. */
39
+ moving?: StatusItemId;
35
40
  }
36
41
  /** Outcome of one key against the overlay. */
37
42
  export type SettingsCommand = {
@@ -3,30 +3,53 @@
3
3
  * Pure — the provider owns live application of the selected values.
4
4
  * @module @agi-fans/dsh-tui
5
5
  */
6
- import { STARTUP_CHANGELOG_MODES } from "./release-notes.js";
7
- import { STATUS_GROUP_IDS, STATUS_LABEL_STYLES, resolveStatusBarConfig, } from "./status-config.js";
8
- import { renderSessionStatusLabel } from "./status-line.js";
9
- import { BOX, SYMBOL, THEME_NAMES, isThemeName } from "./theme.js";
10
- import { padToWidth, truncateToWidth, visibleWidth, wrapText } from "./width.js";
6
+ import { STARTUP_CHANGELOG_MODES } from "../session/release-notes.js";
7
+ import { STATUS_COLOR_TOKENS, STATUS_GROUP_IDS, STATUS_LABEL_STYLES, STATUS_META_IDS, isStatusItemId, isStatusMetaId, itemSide, resolveStatusBarConfig, } from "../chrome/status-config.js";
8
+ import { renderStatusFooter } from "../chrome/status-line.js";
9
+ import { BOX, SYMBOL, THEME_NAMES, isThemeName } from "../chrome/theme.js";
10
+ import { padToWidth, truncateToWidth, visibleWidth, wrapText } from "../chrome/width.js";
11
11
  const COLOR_VALUES = ['on', 'off'];
12
12
  const TOOL_DETAIL_VALUES = ['compact', 'expanded'];
13
13
  const STARTUP_CHANGELOG_VALUES = [...STARTUP_CHANGELOG_MODES];
14
- const STATUS_GROUP_COPY = {
15
- context: { label: 'Context', description: 'Context-window pressure' },
16
- cache: { label: 'Cache', description: 'Prompt-cache hit rate' },
17
- tokens: { label: 'Tokens', description: 'Input and output token counts' },
18
- speed: { label: 'Latency', description: 'First-token latency and decode rate' },
19
- durations: { label: 'Time', description: 'LLM and tool duration' },
20
- counts: { label: 'Activity', description: 'Turn and step counts' },
14
+ const STATUS_ITEM_COPY = {
15
+ model: { label: 'Model', description: 'Model name on the left of the first footer line. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'deepseek' },
16
+ effort: { label: 'Effort', description: 'Reasoning effort on the first footer line. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'max' },
17
+ path: { label: 'Path', description: 'Workspace path on the right of the first footer line. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: '~/project' },
18
+ git: { label: 'Git', description: 'Git branch on the right of the first footer line. A dirty worktree stays warning while color is default. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'main *1' },
19
+ context: { label: 'Context', description: 'Context-window pressure. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'Ctx 1.6%' },
20
+ cache: { label: 'Cache', description: 'Prompt-cache hit rate. Cache-hit percentages stay on the success color. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'Cache 99%' },
21
+ tokens: { label: 'Tokens', description: 'Input and output token counts. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: '5.9M in' },
22
+ speed: { label: 'Latency', description: 'First-token latency and decode rate. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'TTFT 1.2s' },
23
+ durations: { label: 'Time', description: 'LLM and tool duration. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: 'LLM 16m51s' },
24
+ counts: { label: 'Activity', description: 'Turn and step counts. Left/Right sets color; Space shows or hides; Enter then arrows move it.', sample: '3 turns' },
21
25
  };
22
- function statusGroupItem(config, id) {
23
- const visible = config.groups.includes(id);
26
+ function itemSwatch(id, token) {
27
+ if (token !== 'default')
28
+ return token === 'label' ? 'customMessageLabel' : token;
29
+ if (id === 'effort')
30
+ return 'customMessageLabel';
31
+ if (id === 'git')
32
+ return 'warning';
33
+ if (id === 'path')
34
+ return 'muted';
35
+ return 'text';
36
+ }
37
+ function statusItemVisible(config, id) {
38
+ return isStatusMetaId(id) ? (config.meta ?? STATUS_META_IDS).includes(id) : config.groups.includes(id);
39
+ }
40
+ function statusItemRow(config, id) {
41
+ const visible = statusItemVisible(config, id);
42
+ const color = config.colors?.[id] ?? 'default';
43
+ const copy = STATUS_ITEM_COPY[id];
24
44
  return {
25
- id: `statusGroup:${id}`,
26
- label: STATUS_GROUP_COPY[id].label,
27
- description: STATUS_GROUP_COPY[id].description + '. Enter to move; Space to show or hide.',
28
- value: visible ? 'shown' : 'hidden',
29
- values: ['shown', 'hidden'],
45
+ id: `statusItem:${id}`,
46
+ label: (itemSide(config, id) === 'right' ? '→ ' : '← ') + copy.label,
47
+ description: copy.description,
48
+ sample: visible ? copy.sample : 'hidden',
49
+ value: color,
50
+ values: STATUS_COLOR_TOKENS,
51
+ swatch: itemSwatch(id, color),
52
+ hidden: !visible,
30
53
  };
31
54
  }
32
55
  /** Rows shown in `/settings` (OMP settings-list cycle widgets). */
@@ -82,26 +105,66 @@ export function tuiSettingItems(prefs) {
82
105
  value: statusBar.labels,
83
106
  values: STATUS_LABEL_STYLES,
84
107
  },
85
- ...statusBar.order.map(id => statusGroupItem(statusBar, id)),
108
+ ...statusBar.metaOrder.filter(id => itemSide(statusBar, id) === 'left').map(id => statusItemRow(statusBar, id)),
109
+ ...statusBar.metaOrder.filter(id => itemSide(statusBar, id) === 'right').map(id => statusItemRow(statusBar, id)),
110
+ ...statusBar.order.filter(id => itemSide(statusBar, id) === 'left').map(id => statusItemRow(statusBar, id)),
111
+ ...statusBar.order.filter(id => itemSide(statusBar, id) === 'right').map(id => statusItemRow(statusBar, id)),
86
112
  ];
87
113
  }
114
+ function showInOrder(visible, order, id) {
115
+ const next = visible.filter(item => item !== id);
116
+ const position = order.indexOf(id);
117
+ const insert = next.findIndex(item => order.indexOf(item) > position);
118
+ next.splice(insert < 0 ? next.length : insert, 0, id);
119
+ return next;
120
+ }
88
121
  function updateStatusGroup(config, id, value) {
89
122
  const groups = config.groups.filter(group => group !== id);
90
123
  if (value === 'hidden' || value === 'off')
91
124
  return { ...config, groups };
92
- if (value === 'shown') {
93
- const order = config.order ?? STATUS_GROUP_IDS;
94
- const position = order.indexOf(id);
95
- const next = groups.findIndex(group => order.indexOf(group) > position);
96
- groups.splice(next < 0 ? groups.length : next, 0, id);
97
- return { ...config, groups };
98
- }
125
+ if (value === 'shown')
126
+ return { ...config, groups: showInOrder(groups, config.order ?? STATUS_GROUP_IDS, id) };
99
127
  const position = Number.parseInt(value, 10);
100
128
  if (!Number.isInteger(position) || position < 1 || position > STATUS_GROUP_IDS.length)
101
129
  return config;
102
130
  groups.splice(Math.min(position - 1, groups.length), 0, id);
103
131
  return { ...config, groups };
104
132
  }
133
+ function toggleStatusItem(config, id) {
134
+ if (isStatusMetaId(id)) {
135
+ const meta = config.meta ?? [...STATUS_META_IDS];
136
+ const hidden = !meta.includes(id);
137
+ return {
138
+ ...config,
139
+ meta: hidden ? showInOrder(meta.filter(item => item !== id), config.metaOrder ?? STATUS_META_IDS, id) : meta.filter(item => item !== id),
140
+ };
141
+ }
142
+ return updateStatusGroup(config, id, statusItemVisible(config, id) ? 'hidden' : 'shown');
143
+ }
144
+ function reorderVisible(visible, order, moving, direction) {
145
+ const from = visible.indexOf(moving);
146
+ if (from < 0)
147
+ return { visible: [...visible], order: [...order] };
148
+ const to = Math.max(0, Math.min(visible.length - 1, from + direction));
149
+ const nextVisible = [...visible];
150
+ if (to !== from) {
151
+ nextVisible.splice(from, 1);
152
+ nextVisible.splice(to, 0, moving);
153
+ }
154
+ const visibleSet = new Set(nextVisible);
155
+ const nextOrder = [];
156
+ let visibleIndex = 0;
157
+ for (const item of order) {
158
+ if (visibleSet.has(item))
159
+ nextOrder.push(nextVisible[visibleIndex++]);
160
+ else
161
+ nextOrder.push(item);
162
+ }
163
+ for (const item of nextVisible)
164
+ if (!nextOrder.includes(item))
165
+ nextOrder.push(item);
166
+ return { visible: nextVisible, order: nextOrder };
167
+ }
105
168
  /** Apply one cycled value back onto the prefs record. */
106
169
  export function applySettingValue(prefs, id, value) {
107
170
  if (id === 'theme' && isThemeName(value))
@@ -121,10 +184,20 @@ export function applySettingValue(prefs, id, value) {
121
184
  if (id === 'statusLabels' && STATUS_LABEL_STYLES.includes(value)) {
122
185
  return { ...prefs, statusBar: { ...statusBar, labels: value } };
123
186
  }
124
- if (id.startsWith('statusGroup:')) {
125
- const group = id.slice('statusGroup:'.length);
126
- if (STATUS_GROUP_IDS.includes(group))
127
- return { ...prefs, statusBar: updateStatusGroup(statusBar, group, value) };
187
+ if (id.startsWith('statusItem:')) {
188
+ const item = id.slice('statusItem:'.length);
189
+ if (isStatusItemId(item) && STATUS_COLOR_TOKENS.includes(value)) {
190
+ return { ...prefs, statusBar: { ...statusBar, colors: { ...statusBar.colors, [item]: value } } };
191
+ }
192
+ if (isStatusItemId(item) && (value === 'shown' || value === 'hidden' || value === 'off')) {
193
+ const wantVisible = value === 'shown';
194
+ if (statusItemVisible(statusBar, item) === wantVisible)
195
+ return prefs;
196
+ return { ...prefs, statusBar: toggleStatusItem(statusBar, item) };
197
+ }
198
+ if (STATUS_GROUP_IDS.includes(item)) {
199
+ return { ...prefs, statusBar: updateStatusGroup(statusBar, item, value) };
200
+ }
128
201
  }
129
202
  return prefs;
130
203
  }
@@ -138,53 +211,76 @@ export function createSettings(prefs, focusId) {
138
211
  const focused = focusId === undefined ? 0 : items.findIndex((item) => item.id === focusId);
139
212
  return { prefs, selected: focused >= 0 ? focused : 0 };
140
213
  }
141
- function selectedStatusGroup(state) {
214
+ function selectedStatusItem(state) {
142
215
  const id = tuiSettingItems(state.prefs)[state.selected]?.id;
143
- if (id?.startsWith('statusGroup:') !== true)
216
+ if (id?.startsWith('statusItem:') !== true)
144
217
  return undefined;
145
- const group = id.slice('statusGroup:'.length);
146
- return STATUS_GROUP_IDS.includes(group) ? group : undefined;
218
+ const item = id.slice('statusItem:'.length);
219
+ return isStatusItemId(item) ? item : undefined;
147
220
  }
148
- function startMoving(state, group) {
221
+ function startMoving(state, item) {
149
222
  const config = resolveStatusBarConfig(state.prefs.statusBar, state.prefs.statusPreset);
150
- const prefs = config.groups.includes(group)
223
+ const prefs = statusItemVisible(config, item)
151
224
  ? state.prefs
152
- : { ...state.prefs, statusBar: updateStatusGroup(config, group, 'shown') };
153
- const selected = tuiSettingItems(prefs).findIndex(item => item.id === `statusGroup:${group}`);
154
- return { prefs, selected: Math.max(0, selected), moving: group };
225
+ : { ...state.prefs, statusBar: toggleStatusItem(config, item) };
226
+ const selected = tuiSettingItems(prefs).findIndex(row => row.id === `statusItem:${item}`);
227
+ return { prefs, selected: Math.max(0, selected), moving: item };
155
228
  }
156
- function moveStatusGroup(state, direction) {
229
+ function assignItemSide(config, id, side) {
230
+ if (itemSide(config, id) === side)
231
+ return config;
232
+ const next = { ...config, sides: { ...config.sides, [id]: side } };
233
+ if (isStatusMetaId(id)) {
234
+ const order = (next.metaOrder ?? STATUS_META_IDS).filter(item => item !== id);
235
+ let last = -1;
236
+ for (let index = 0; index < order.length; index += 1) {
237
+ if (itemSide(next, order[index]) === side)
238
+ last = index;
239
+ }
240
+ order.splice(last + 1, 0, id);
241
+ return { ...next, metaOrder: order };
242
+ }
243
+ const order = (next.order ?? STATUS_GROUP_IDS).filter(item => item !== id);
244
+ let last = -1;
245
+ for (let index = 0; index < order.length; index += 1) {
246
+ if (itemSide(next, order[index]) === side)
247
+ last = index;
248
+ }
249
+ order.splice(last + 1, 0, id);
250
+ return { ...next, order };
251
+ }
252
+ function moveStatusItem(state, direction) {
157
253
  const moving = state.moving;
158
254
  if (moving === undefined)
159
255
  return state;
160
256
  const config = resolveStatusBarConfig(state.prefs.statusBar, state.prefs.statusPreset);
161
- const from = config.groups.indexOf(moving);
162
- if (from < 0)
163
- return state;
164
- const to = Math.max(0, Math.min(config.groups.length - 1, from + direction));
165
- if (to === from)
166
- return state;
167
- const groups = [...config.groups];
168
- groups.splice(from, 1);
169
- groups.splice(to, 0, moving);
170
- const visible = new Set(groups);
171
- const hiddenBySlot = config.order.filter(group => !visible.has(group));
172
- const order = [];
173
- let visibleIndex = 0;
174
- for (const group of config.order) {
175
- if (visible.has(group))
176
- order.push(groups[visibleIndex++]);
177
- else
178
- order.push(group);
257
+ const side = itemSide(config, moving);
258
+ if (isStatusMetaId(moving)) {
259
+ const reordered = reorderVisible(config.meta.filter(id => itemSide(config, id) === side), config.metaOrder, moving, direction);
260
+ const prefs = { ...state.prefs, statusBar: { ...config, meta: reordered.visible.concat(config.meta.filter(id => itemSide(config, id) !== side)), metaOrder: reordered.order } };
261
+ const selected = tuiSettingItems(prefs).findIndex(row => row.id === `statusItem:${moving}`);
262
+ return { prefs, selected, moving };
179
263
  }
180
- // Defensive: normalization guarantees completeness, but keep all hidden IDs if a caller supplied a partial config.
181
- for (const group of hiddenBySlot)
182
- if (!order.includes(group))
183
- order.push(group);
184
- const prefs = { ...state.prefs, statusBar: { ...config, groups, order } };
185
- const selected = tuiSettingItems(prefs).findIndex(item => item.id === `statusGroup:${moving}`);
264
+ const reordered = reorderVisible(config.groups.filter(id => itemSide(config, id) === side), config.order, moving, direction);
265
+ const prefs = { ...state.prefs, statusBar: { ...config, groups: reordered.visible.concat(config.groups.filter(id => itemSide(config, id) !== side)), order: reordered.order } };
266
+ const selected = tuiSettingItems(prefs).findIndex(row => row.id === `statusItem:${moving}`);
186
267
  return { prefs, selected, moving };
187
268
  }
269
+ function moveStatusItemSide(state, side) {
270
+ const moving = state.moving;
271
+ if (moving === undefined)
272
+ return state;
273
+ const config = resolveStatusBarConfig(state.prefs.statusBar, state.prefs.statusPreset);
274
+ const prefs = { ...state.prefs, statusBar: assignItemSide(config, moving, side) };
275
+ const selected = tuiSettingItems(prefs).findIndex(row => row.id === `statusItem:${moving}`);
276
+ return { prefs, selected, moving };
277
+ }
278
+ function toggleSelectedVisibility(state) {
279
+ const item = selectedStatusItem(state);
280
+ if (item === undefined)
281
+ return cycleSelected(state);
282
+ return { selected: state.selected, prefs: { ...state.prefs, statusBar: toggleStatusItem(resolveStatusBarConfig(state.prefs.statusBar, state.prefs.statusPreset), item) } };
283
+ }
188
284
  function moveSelected(state, next) {
189
285
  const n = tuiSettingItems(state.prefs).length;
190
286
  if (n === 0)
@@ -216,7 +312,10 @@ export function applySettingsEvent(state, event) {
216
312
  if (event.type !== 'key')
217
313
  return { kind: 'ignore' };
218
314
  if (event.id === 'up' || event.id === 'down') {
219
- return { kind: 'apply', state: moveStatusGroup(state, event.id === 'up' ? -1 : 1) };
315
+ return { kind: 'apply', state: moveStatusItem(state, event.id === 'up' ? -1 : 1) };
316
+ }
317
+ if (event.id === 'left' || event.id === 'right') {
318
+ return { kind: 'apply', state: moveStatusItemSide(state, event.id === 'left' ? 'left' : 'right') };
220
319
  }
221
320
  if (event.id === 'enter' || event.id === 'escape' || event.id === 'ctrl+c') {
222
321
  const { moving: _, ...rest } = state;
@@ -225,16 +324,16 @@ export function applySettingsEvent(state, event) {
225
324
  return { kind: 'ignore' };
226
325
  }
227
326
  if (event.type === 'text' && event.value === ' ') {
228
- return { kind: 'apply', state: cycleSelected(state) };
327
+ return { kind: 'apply', state: toggleSelectedVisibility(state) };
229
328
  }
230
329
  if (event.type !== 'key')
231
330
  return { kind: 'ignore' };
232
331
  switch (event.id) {
233
332
  case 'enter':
234
333
  {
235
- const group = selectedStatusGroup(state);
236
- if (group !== undefined)
237
- return { kind: 'apply', state: startMoving(state, group) };
334
+ const item = selectedStatusItem(state);
335
+ if (item !== undefined)
336
+ return { kind: 'apply', state: startMoving(state, item) };
238
337
  }
239
338
  return { kind: 'apply', state: cycleSelected(state) };
240
339
  case 'right':
@@ -330,12 +429,31 @@ const STATUS_PREVIEW_STATS = {
330
429
  contextTokens: 16_400,
331
430
  contextWindow: 1_000_000,
332
431
  };
333
- function renderStatusPreview(state, theme, width) {
432
+ const STATUS_PREVIEW_META = {
433
+ model: 'deepseek',
434
+ reasoningEffort: 'max',
435
+ pwd: '~/project',
436
+ branch: 'main *1',
437
+ };
438
+ function renderStatusPreview(state, theme, width, rows) {
334
439
  const config = resolveStatusBarConfig(state.prefs.statusBar, state.prefs.statusPreset);
335
- const available = Math.max(0, width - visibleWidth('Preview '));
336
- const preview = renderSessionStatusLabel(STATUS_PREVIEW_STATS, config, theme, available).trim();
337
- const content = preview === '' ? theme.fg('muted', 'disabled') : preview;
338
- return framedRow(theme, theme.fg('dim', 'Preview ') + content, width);
440
+ const inner = Math.max(0, width - 4);
441
+ const prefix = 'Preview ';
442
+ const label = theme.fg('dim', prefix);
443
+ if (!config.enabled) {
444
+ return [framedRow(theme, label + theme.fg('muted', 'disabled'), width)];
445
+ }
446
+ const focus = selectedStatusItem(state);
447
+ const preview = renderStatusFooter({
448
+ ...STATUS_PREVIEW_META,
449
+ stats: STATUS_PREVIEW_STATS,
450
+ config,
451
+ width: inner,
452
+ ...(focus === undefined ? {} : { focus }),
453
+ }, theme);
454
+ if (preview.length === 0)
455
+ return [framedRow(theme, label + theme.fg('muted', 'disabled'), width)];
456
+ return preview.slice(0, Math.max(1, rows)).map(line => framedRow(theme, line, width));
339
457
  }
340
458
  /** Fullscreen OMP-style settings frame with stable chrome and section tabs. */
341
459
  export function renderSettings(state, theme, width, height = 24) {
@@ -346,7 +464,13 @@ export function renderSettings(state, theme, width, height = 24) {
346
464
  const sectionEnd = active === 'general' ? GENERAL_SETTING_COUNT : items.length;
347
465
  const sectionItems = items.slice(sectionStart, sectionEnd);
348
466
  const descriptionRows = height >= 12 ? 2 : height >= 10 ? 1 : 0;
349
- const previewRows = active === 'status' && height >= 9 ? 2 : 0;
467
+ const maxPreviewContent = active === 'status'
468
+ ? (height >= 13 ? 3 : height >= 11 ? 2 : height >= 9 ? 1 : 0)
469
+ : 0;
470
+ const previewLines = maxPreviewContent > 0
471
+ ? renderStatusPreview(state, theme, width, maxPreviewContent)
472
+ : [];
473
+ const previewRows = previewLines.length === 0 ? 0 : previewLines.length + 1;
350
474
  const viewportHeight = Math.max(1, height - 6 - descriptionRows - previewRows);
351
475
  const localSelection = index - sectionStart;
352
476
  const visibleCount = Math.min(viewportHeight, sectionItems.length);
@@ -354,8 +478,9 @@ export function renderSettings(state, theme, width, height = 24) {
354
478
  const visibleItems = sectionItems.slice(start, start + visibleCount);
355
479
  const selected = items[index];
356
480
  const lines = [topBorder(theme, width), renderSectionTabs(active, theme, width), divider(theme, width)];
357
- if (previewRows > 0)
358
- lines.push(renderStatusPreview(state, theme, width), divider(theme, width));
481
+ if (previewLines.length > 0) {
482
+ lines.push(...previewLines, divider(theme, width));
483
+ }
359
484
  const itemRows = Array.from({ length: height });
360
485
  let cursorRow = SETTINGS_ITEM_ROW;
361
486
  for (let row = 0; row < viewportHeight; row += 1) {
@@ -371,7 +496,7 @@ export function renderSettings(state, theme, width, height = 24) {
371
496
  itemRows[lines.length] = itemIndex;
372
497
  const above = start > 0 && row === 0 ? theme.fg('dim', '↑ ') : '';
373
498
  const below = start + visibleCount < sectionItems.length && row === viewportHeight - 1 ? theme.fg('dim', '↓ ') : '';
374
- lines.push(framedRow(theme, renderSettingRow(item, selectedRow, theme, Math.max(1, width - 4), above || below, state.moving === item.id.slice('statusGroup:'.length)), width));
499
+ lines.push(framedRow(theme, renderSettingRow(item, selectedRow, theme, Math.max(1, width - 4), above || below, state.moving !== undefined && item.id === `statusItem:${state.moving}`), width));
375
500
  }
376
501
  lines.push(divider(theme, width));
377
502
  const description = selected?.description ?? '';
@@ -381,8 +506,8 @@ export function renderSettings(state, theme, width, height = 24) {
381
506
  lines.push(framedRow(theme, text === '' ? '' : ' ' + theme.fg('muted', text), width));
382
507
  }
383
508
  const hints = theme.fg('dim', state.moving === undefined
384
- ? '↑↓ navigate · ←→ change · enter move · space show/hide · tab section · esc close'
385
- : '↑↓ move item · enter place · esc done');
509
+ ? '↑↓ navigate · ←→ change · space show/hide · enter move · tab section · esc close'
510
+ : '↑↓ order · ←→ column · enter place · esc done');
386
511
  lines.push(framedRow(theme, hints, width), bottomBorder(theme, width));
387
512
  return {
388
513
  lines,
@@ -392,10 +517,17 @@ export function renderSettings(state, theme, width, height = 24) {
392
517
  }
393
518
  function renderSettingRow(item, selected, theme, width, edge = '', moving = false) {
394
519
  const cursor = selected ? theme.fg('accent', (moving ? '↕' : SYMBOL.cursor) + ' ') : ' ';
395
- const label = selected ? theme.bold(theme.fg('accent', item.label)) : item.label;
520
+ const label = selected
521
+ ? theme.bold(theme.fg('accent', item.label))
522
+ : item.hidden === true ? theme.fg('dim', item.label) : item.label;
523
+ const sample = item.sample === undefined
524
+ ? ''
525
+ : ' ' + theme.fg(item.hidden === true ? 'dim' : 'muted', item.sample);
396
526
  const rawValue = moving ? 'moving' : item.value;
397
- const value = selected ? theme.fg('accent', rawValue) : theme.fg('muted', rawValue);
398
- const fill = Math.max(1, width - visibleWidth(cursor) - visibleWidth(label) - visibleWidth(value) - visibleWidth(edge));
399
- return truncateToWidth(cursor + label + ' '.repeat(fill) + value + edge, width);
527
+ const value = selected || item.swatch === undefined
528
+ ? theme.fg(selected ? 'accent' : 'muted', rawValue)
529
+ : theme.fg(item.swatch, rawValue);
530
+ const fill = Math.max(1, width - visibleWidth(cursor) - visibleWidth(label) - visibleWidth(sample) - visibleWidth(value) - visibleWidth(edge));
531
+ return truncateToWidth(cursor + label + sample + ' '.repeat(fill) + value + edge, width);
400
532
  }
401
533
  //# sourceMappingURL=settings-list.js.map