@agi-fans/dsh-tui 0.4.0 → 0.5.1

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 +40 -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 +56 -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
package/README.md CHANGED
@@ -1,13 +1,49 @@
1
+ <!-- npm-package-role: library -->
2
+
1
3
  # @agi-fans/dsh-tui
2
4
 
3
- The omdsh TUI capability seam: terminal presentation for the DeepSeek Harness core runtime. One capability seam, three roles, complete:
5
+ Reusable terminal UI plugins for applications built on the DeepSeek Harness runtime.
6
+
7
+ **This is a library package. It does not install the `omdsh` command and is not intended to be run directly.**
8
+
9
+ If you want the complete oh-my-dsh application, install the CLI package instead:
10
+
11
+ ```sh
12
+ npm install --global @agi-fans/oh-my-dsh
13
+ omdsh
14
+ ```
15
+
16
+ See the [oh-my-dsh project overview](https://github.com/agi-fans/oh-my-dsh#readme) for screenshots, tutorials, configuration, and end-user features.
17
+
18
+ ## Library purpose
19
+
20
+ `@agi-fans/dsh-tui` supplies the terminal presentation and interaction layer used by `@agi-fans/oh-my-dsh`. It is useful to developers composing a custom Harness application that needs local terminal input, transcript rendering, interactive prompts, and TUI-owned command surfaces.
21
+
22
+ The package contains three main roles:
23
+
24
+ - **Service definition:** the transport-neutral `tui` context service and its event, status, model, input, interrupt, rewind, and disposal contracts.
25
+ - **Local provider:** exclusive ownership of raw terminal input, editing, history, completion, scrolling, image paste, resize handling, and differential rendering.
26
+ - **Interactive runner:** creation of an Agent through the Harness registry and coordination of session events with the input loop.
27
+
28
+ The rendering pipeline is pure and exported for testing and alternative providers. Additional exports expose session integration, human-interaction adapters, tool presentation, startup notices, and the command plugins used by omdsh.
29
+
30
+ ## Integration
31
+
32
+ Install the library only when building your own Harness composition:
33
+
34
+ ```sh
35
+ npm install @agi-fans/dsh-tui @deepseek-ai/cordis
36
+ ```
37
+
38
+ Mount the exports you need as ordinary Cordis plugins. The working application composition is available in [`apps/omdsh/config/cordis.yml`](https://github.com/agi-fans/oh-my-dsh/blob/main/apps/omdsh/config/cordis.yml); application boot, model providers, persistence, tools, and the executable remain the responsibility of the host application.
4
39
 
5
- - **Service Definition** (`src/definition.ts`) — the `tui` context service: `event`, `setStatus`, `setModel`, `readInput`, `onInterrupt`, `onRewind`, `dispose`. The vocabulary mirrors the SDK wire surface (`session.event`, `session.status`), so a remote UI can reuse the definition unchanged.
6
- - **Service Provider** (`src/provider-local.ts`) — owns the tty: raw-mode key input (editing, history, slash/tab, Ctrl-R prompt-history search, double-Escape conversation rewind, PgUp/PgDn transcript scroll, bracketed paste, Ctrl-C interrupt, Ctrl-D quit), SIGWINCH reflow, and the differential renderer. Non-tty streams degrade to line input with plain append-only printing of settled blocks.
7
- - **Consumer** (`src/runner.ts`) — the interactive driver in the `@deepseek-ai/dsh-headless` pattern: creates one Agent through the core registry, forwards its session events, and loops on `readline`.
40
+ ## Documentation
8
41
 
9
- The rendering pipeline (`renderer`, `style`, `event-views`) is pure and exported for tests and alternative providers.
42
+ - [Architecture](https://github.com/agi-fans/oh-my-dsh/blob/main/docs/architecture.md)
43
+ - [Skills and MCP](https://github.com/agi-fans/oh-my-dsh/blob/main/docs/skills-and-mcp.md)
44
+ - [Performance](https://github.com/agi-fans/oh-my-dsh/blob/main/docs/performance.md)
45
+ - [Changelog](https://github.com/agi-fans/oh-my-dsh/blob/main/CHANGELOG.md)
10
46
 
11
- ## Usage
47
+ ## License
12
48
 
13
- Mount the provider and runner as ordinary cordis.yml rows (see `apps/omdsh/config/cordis.yml`); the app package owns the `omdsh` bin.
49
+ MIT
package/lib/CHANGELOG.md CHANGED
@@ -6,6 +6,43 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.5.1] - 2026-08-18
10
+
11
+ ### Fixed
12
+
13
+ - Resume sessions that recorded the omdsh tool-presentation event instead of refusing the log as an unknown harness type.
14
+
15
+ ## [0.5.0] - 2026-08-18
16
+
17
+ ### Added
18
+
19
+ - Added four independent, Harness-backed session controls: Agent presets (Standard, PTC, Minimal, and Cordis), Workflow (Default or Plan), tool presentation (Native, Code, or Both), and Access (Read only, Workspace write, or Full access).
20
+ - Added `/settings` Status line items that match the preview: each of Model, Effort, Path, Git, and the telemetry groups has its own color, left/right column, show/hide, and order.
21
+ - Show the session permission mode on the top-right of the composer, opposite the whale label.
22
+ - Add catppuccin, dracula, nord, gruvbox, and rose-pine palettes from the oh-my-pi coding themes.
23
+
24
+ ### Changed
25
+
26
+ - Upgraded every direct DeepSeek Harness dependency to the coherent `0.1.0-rc.7` release and adopted its published Agent preset and Code runtime packages.
27
+ - Keep the lowercase Agent mode visible in the fixed footer, reveal Workflow only while Plan is active, show non-default tool presentation without category labels, keep lowercase Access on the composer boundary, and report all four separately in `/session`.
28
+ - Reset SGR attributes independently so nested color, bold, italic, and underline no longer wipe each other.
29
+ - Paint thinking traces in a quieter gray italic so they stay distinct from assistant body text, including after inline Markdown.
30
+ - Let the terminal own body ink across every palette while keeping thinking traces explicitly muted, so themes respect the user's foreground and background pairing.
31
+ - Paint thinking traces as readable comment-gray italic on dark palettes, including code, links, and headings inside those traces, so they recede from body text without collapsing into the background or being boosted to white.
32
+ - Use a quieter muted border for idle frames, quotes, rules, and tables, and complete the midnight and solarized palettes.
33
+
34
+ ### Fixed
35
+
36
+ - Refresh the footer's Agent and tool-presentation labels immediately after `/agent` changes a blank session's composition.
37
+ - Restore distinct Header title, body, metadata, and frame tones across every palette, including monochrome and 16-color terminals.
38
+ - Keep the welcome card on the visible dim frame so Tips, Recent sessions, and the slogan do not sit on a near-invisible border.
39
+ - Paint fenced-code keywords with a dedicated syntax color instead of the UI accent.
40
+ - Soften inline Markdown code so codespans use a muted gray instead of accent-like orange or lavender; fenced blocks keep a separate, slightly stronger color.
41
+ - Render transcript Markdown through a GFM lexer so paragraphs reflow, nested emphasis and escapes stay intact, list items keep their continuations, and reference links resolve.
42
+ - Paint file-edit tool cards as aligned diffs: unchanged context stays dim, deletions are red, additions are green, one-line replacements mark the changed tokens, and the header shows `+N/-M`.
43
+ - Generate the CLI package README from the repository overview during packing, with npm-safe GitHub links, so npm documentation stays synchronized with the project homepage.
44
+ - Clarify that `@agi-fans/dsh-tui` is a non-executable integration library, direct end users to `@agi-fans/oh-my-dsh`, and enforce that distinction during package checks.
45
+
9
46
  ## [0.4.0] - 2026-08-16
10
47
 
11
48
  ### Added
@@ -103,7 +140,9 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
103
140
  - Preserved terminal-cell alignment and right padding for long commands, CJK text, emoji, ANSI styling, and narrow viewports.
104
141
  - Stabilized incremental rendering, transcript scrolling, cursor placement, tool-output folding, and queued input during active turns.
105
142
 
106
- [Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.4.0...HEAD
143
+ [Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.5.1...HEAD
144
+ [0.5.1]: https://github.com/agi-fans/oh-my-dsh/compare/v0.5.0...v0.5.1
145
+ [0.5.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.4.0...v0.5.0
107
146
  [0.4.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.3.0...v0.4.0
108
147
  [0.3.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.2.0...v0.3.0
109
148
  [0.2.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.1.1...v0.2.0
@@ -52,6 +52,8 @@ export interface EditorOptions {
52
52
  input: string;
53
53
  inputCursor: number;
54
54
  status: string;
55
+ /** Optional right-aligned cap on the top border (permission mode). */
56
+ statusRight?: string;
55
57
  border: ThemeColor;
56
58
  /** Dim ghost text painted after the caret (slash-arg hint). */
57
59
  inlineHint?: string;
@@ -16,7 +16,7 @@ function borderColorFor(state) {
16
16
  return 'warning';
17
17
  if (state === 'running')
18
18
  return 'accent';
19
- return 'dim';
19
+ return 'borderMuted';
20
20
  }
21
21
  function bgColorFor(state) {
22
22
  if (state === 'error')
@@ -139,24 +139,25 @@ export function renderWelcome(options, theme) {
139
139
  })),
140
140
  ]
141
141
  : [];
142
- const h = theme.fg('dim', BOX.horizontal);
143
- const v = theme.fg('dim', BOX.vertical);
144
- const tl = theme.fg('dim', BOX.topLeft);
145
- const tr = theme.fg('dim', BOX.topRight);
146
- const bl = theme.fg('dim', BOX.bottomLeft);
147
- const br = theme.fg('dim', BOX.bottomRight);
148
- const teeUp = theme.fg('dim', BOX.teeUp);
149
- const teeDown = theme.fg('dim', BOX.teeDown);
150
- const teeLeft = theme.fg('dim', BOX.teeLeft);
151
- const teeRight = theme.fg('dim', BOX.teeRight);
142
+ const chrome = (text) => theme.fg('dim', text);
143
+ const h = chrome(BOX.horizontal);
144
+ const v = chrome(BOX.vertical);
145
+ const tl = chrome(BOX.topLeft);
146
+ const tr = chrome(BOX.topRight);
147
+ const bl = chrome(BOX.bottomLeft);
148
+ const br = chrome(BOX.bottomRight);
149
+ const teeUp = chrome(BOX.teeUp);
150
+ const teeDown = chrome(BOX.teeDown);
151
+ const teeLeft = chrome(BOX.teeLeft);
152
+ const teeRight = chrome(BOX.teeRight);
152
153
  const title = ` ${options.appName} v${options.version} `;
153
154
  const titlePrefix = BOX.horizontal.repeat(3);
154
- const titleStyled = theme.fg('dim', titlePrefix) + theme.fg('muted', title);
155
+ const titleStyled = chrome(titlePrefix) + theme.fg('muted', title);
155
156
  const titleWidth = showRight ? leftCol : boxWidth - 2;
156
157
  const afterTitle = Math.max(0, titleWidth - visibleWidth(titlePrefix) - visibleWidth(title));
157
158
  const titleSegment = visibleWidth(titleStyled) >= titleWidth
158
159
  ? truncateToWidth(titleStyled, titleWidth)
159
- : titleStyled + theme.fg('dim', BOX.horizontal.repeat(afterTitle));
160
+ : titleStyled + chrome(BOX.horizontal.repeat(afterTitle));
160
161
  const lines = [showRight
161
162
  ? tl + titleSegment + teeDown + h.repeat(rightCol) + tr
162
163
  : tl + titleSegment + tr];
@@ -194,9 +195,18 @@ export function renderEditor(options, theme) {
194
195
  const topLeft = border(BOX.topLeft + h.repeat(padX));
195
196
  const topRight = border(h.repeat(padX) + BOX.topRight);
196
197
  const fillWidth = Math.max(0, width - visibleWidth(BOX.topLeft + h.repeat(padX)) - visibleWidth(h.repeat(padX) + BOX.topRight));
197
- const status = truncateToWidth(options.status, fillWidth);
198
- const statusFill = Math.max(0, fillWidth - visibleWidth(status));
199
- const top = topLeft + status + border(h.repeat(statusFill)) + topRight;
198
+ const statusRight = options.statusRight ?? '';
199
+ let status = options.status;
200
+ let trailing = statusRight;
201
+ if (visibleWidth(status) + visibleWidth(trailing) + (trailing === '' ? 0 : 1) > fillWidth) {
202
+ const rightBudget = Math.max(0, fillWidth - visibleWidth(status) - (status === '' || fillWidth === 0 ? 0 : 1));
203
+ trailing = truncateToWidth(statusRight, rightBudget);
204
+ if (visibleWidth(status) + visibleWidth(trailing) + (trailing === '' ? 0 : 1) > fillWidth) {
205
+ status = truncateToWidth(status, Math.max(0, fillWidth - visibleWidth(trailing) - (trailing === '' ? 0 : 1)));
206
+ }
207
+ }
208
+ const statusFill = Math.max(0, fillWidth - visibleWidth(status) - visibleWidth(trailing));
209
+ const top = topLeft + status + border(h.repeat(statusFill)) + trailing + topRight;
200
210
  const layout = wrapIndexed(options.input, contentWidth);
201
211
  const caret = cursorOnWrapped(layout, options.inputCursor, options.input);
202
212
  const rows = layout.length > 0 ? layout : [{ text: '', start: 0, end: 0 }];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/chrome/box.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-output.js","sourceRoot":"","sources":["../../src/chrome/command-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Align Harness FileDiff hunks and paint them as a terminal edit card.
3
+ * Line LCS recovers context that the presenter stores on both sides; a 1:1
4
+ * replacement also marks changed tokens with inverse video.
5
+ */
6
+ import type { FileDiff } from '@deepseek-ai/dsh-tools';
7
+ import type { Theme } from './theme.ts';
8
+ /** One painted role inside an aligned diff. */
9
+ export type DiffKind = 'path' | 'gap' | 'ctx' | 'del' | 'add';
10
+ /** A word or whitespace run inside a changed line. */
11
+ export interface DiffToken {
12
+ readonly text: string;
13
+ readonly changed?: boolean;
14
+ }
15
+ /** One display row of an aligned file diff. */
16
+ export interface DiffRow {
17
+ readonly kind: DiffKind;
18
+ readonly tokens: readonly DiffToken[];
19
+ }
20
+ export interface DiffStats {
21
+ readonly added: number;
22
+ readonly removed: number;
23
+ }
24
+ /** Split a side's text into content lines. A trailing newline is a terminator. */
25
+ export declare function contentLines(text: string): string[];
26
+ export declare function rowText(row: DiffRow): string;
27
+ /** Align every hunk, inserting a path header or a same-file gap. */
28
+ export declare function alignFileDiffs(diffs: readonly FileDiff[]): DiffRow[];
29
+ export declare function countDiffStats(rows: readonly DiffRow[]): DiffStats;
30
+ /** Compact uncolored `+3/-1` label, omitted when both counts are zero. */
31
+ export declare function formatDiffStats(added: number, removed: number): string | undefined;
32
+ export declare function formatDiffRow(row: DiffRow): string;
33
+ export declare function formatDiffRows(rows: readonly DiffRow[]): string[];
34
+ /** Color a already-prefixed plain diff line (`- `, `+ `, ` `, path, or gap). */
35
+ export declare function paintPrefixedDiffLine(line: string, theme: Theme): string;
36
+ export declare function paintDiffRow(row: DiffRow, theme: Theme): string;
37
+ export declare function paintDiffStats(added: number, removed: number, theme: Theme): string;
38
+ /** Paint, expand tabs, wrap to the framed-body width, and close inverse per row. */
39
+ export declare function wrapPaintedDiffRows(rows: readonly DiffRow[], theme: Theme, width: number): string[];
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Align Harness FileDiff hunks and paint them as a terminal edit card.
3
+ * Line LCS recovers context that the presenter stores on both sides; a 1:1
4
+ * replacement also marks changed tokens with inverse video.
5
+ */
6
+ import { expandTabs, wrapText } from "./width.js";
7
+ /** Skip Myers/LCS when a side is this long; dump old then new instead. */
8
+ const ALIGN_LINE_LIMIT = 200;
9
+ /** Inverse-off after each wrapped visual row so frame padding cannot inherit it. */
10
+ const INVERSE_OFF = '\x1b[27m';
11
+ function plainRow(kind, text) {
12
+ return { kind, tokens: [{ text }] };
13
+ }
14
+ /** Split a side's text into content lines. A trailing newline is a terminator. */
15
+ export function contentLines(text) {
16
+ if (text === '')
17
+ return [];
18
+ const body = text.endsWith('\n') ? text.slice(0, -1) : text;
19
+ return body.split('\n');
20
+ }
21
+ export function rowText(row) {
22
+ return row.tokens.map(token => token.text).join('');
23
+ }
24
+ /**
25
+ * Longest common subsequence walk. Equal remaining scores prefer a deletion so
26
+ * replacements emit as a deleted run followed by an added run.
27
+ */
28
+ function alignSequences(oldItems, newItems) {
29
+ const oldCount = oldItems.length;
30
+ const newCount = newItems.length;
31
+ const table = Array.from({ length: oldCount + 1 }, () => new Uint16Array(newCount + 1));
32
+ for (let oldIndex = oldCount - 1; oldIndex >= 0; oldIndex -= 1) {
33
+ const oldRow = table[oldIndex];
34
+ const nextRow = table[oldIndex + 1];
35
+ if (oldRow === undefined || nextRow === undefined)
36
+ continue;
37
+ for (let newIndex = newCount - 1; newIndex >= 0; newIndex -= 1) {
38
+ oldRow[newIndex] = oldItems[oldIndex] === newItems[newIndex]
39
+ ? (nextRow[newIndex + 1] ?? 0) + 1
40
+ : Math.max(nextRow[newIndex] ?? 0, oldRow[newIndex + 1] ?? 0);
41
+ }
42
+ }
43
+ const rows = [];
44
+ let oldIndex = 0;
45
+ let newIndex = 0;
46
+ while (oldIndex < oldCount && newIndex < newCount) {
47
+ if (oldItems[oldIndex] === newItems[newIndex]) {
48
+ rows.push({ kind: 'ctx', text: oldItems[oldIndex] ?? '' });
49
+ oldIndex += 1;
50
+ newIndex += 1;
51
+ continue;
52
+ }
53
+ const down = table[oldIndex + 1]?.[newIndex] ?? 0;
54
+ const right = table[oldIndex]?.[newIndex + 1] ?? 0;
55
+ if (down >= right) {
56
+ rows.push({ kind: 'del', text: oldItems[oldIndex] ?? '' });
57
+ oldIndex += 1;
58
+ }
59
+ else {
60
+ rows.push({ kind: 'add', text: newItems[newIndex] ?? '' });
61
+ newIndex += 1;
62
+ }
63
+ }
64
+ while (oldIndex < oldCount) {
65
+ rows.push({ kind: 'del', text: oldItems[oldIndex] ?? '' });
66
+ oldIndex += 1;
67
+ }
68
+ while (newIndex < newCount) {
69
+ rows.push({ kind: 'add', text: newItems[newIndex] ?? '' });
70
+ newIndex += 1;
71
+ }
72
+ return rows;
73
+ }
74
+ function tokenize(text) {
75
+ return text.split(/(\s+)/u).filter(part => part !== '');
76
+ }
77
+ function highlightPair(oldText, newText) {
78
+ const oldTokens = tokenize(oldText);
79
+ const newTokens = tokenize(newText);
80
+ if (oldTokens.length === 0 && newTokens.length === 0) {
81
+ return { removed: plainRow('del', oldText), added: plainRow('add', newText) };
82
+ }
83
+ const aligned = alignSequences(oldTokens, newTokens);
84
+ const removed = [];
85
+ const added = [];
86
+ for (const part of aligned) {
87
+ if (part.kind === 'ctx') {
88
+ removed.push({ text: part.text });
89
+ added.push({ text: part.text });
90
+ }
91
+ else if (part.kind === 'del') {
92
+ removed.push({ text: part.text, changed: true });
93
+ }
94
+ else {
95
+ added.push({ text: part.text, changed: true });
96
+ }
97
+ }
98
+ return {
99
+ removed: { kind: 'del', tokens: removed },
100
+ added: { kind: 'add', tokens: added },
101
+ };
102
+ }
103
+ function applyIntraLine(rows) {
104
+ const out = [];
105
+ let index = 0;
106
+ while (index < rows.length) {
107
+ const row = rows[index];
108
+ if (row?.kind !== 'del') {
109
+ if (row !== undefined)
110
+ out.push(row);
111
+ index += 1;
112
+ continue;
113
+ }
114
+ const deleted = [];
115
+ while (index < rows.length && rows[index]?.kind === 'del') {
116
+ const next = rows[index];
117
+ if (next !== undefined)
118
+ deleted.push(next);
119
+ index += 1;
120
+ }
121
+ const added = [];
122
+ while (index < rows.length && rows[index]?.kind === 'add') {
123
+ const next = rows[index];
124
+ if (next !== undefined)
125
+ added.push(next);
126
+ index += 1;
127
+ }
128
+ if (deleted.length === 1 && added.length === 1) {
129
+ const pair = highlightPair(rowText(deleted[0]), rowText(added[0]));
130
+ out.push(pair.removed, pair.added);
131
+ }
132
+ else {
133
+ out.push(...deleted, ...added);
134
+ }
135
+ }
136
+ return out;
137
+ }
138
+ function alignHunk(oldText, newText) {
139
+ if (oldText === null)
140
+ return contentLines(newText).map(line => plainRow('add', line));
141
+ const oldLines = contentLines(oldText);
142
+ const newLines = contentLines(newText);
143
+ if (oldLines.length > ALIGN_LINE_LIMIT || newLines.length > ALIGN_LINE_LIMIT) {
144
+ return [
145
+ ...oldLines.map(line => plainRow('del', line)),
146
+ ...newLines.map(line => plainRow('add', line)),
147
+ ];
148
+ }
149
+ const aligned = alignSequences(oldLines, newLines).map(part => plainRow(part.kind, part.text));
150
+ return applyIntraLine(aligned);
151
+ }
152
+ /** Align every hunk, inserting a path header or a same-file gap. */
153
+ export function alignFileDiffs(diffs) {
154
+ const rows = [];
155
+ let previousPath;
156
+ for (const diff of diffs) {
157
+ if (diff.path !== previousPath)
158
+ rows.push(plainRow('path', diff.path));
159
+ else
160
+ rows.push(plainRow('gap', '⋯'));
161
+ previousPath = diff.path;
162
+ rows.push(...alignHunk(diff.oldText, diff.newText));
163
+ }
164
+ return rows;
165
+ }
166
+ export function countDiffStats(rows) {
167
+ let added = 0;
168
+ let removed = 0;
169
+ for (const row of rows) {
170
+ if (row.kind === 'add')
171
+ added += 1;
172
+ else if (row.kind === 'del')
173
+ removed += 1;
174
+ }
175
+ return { added, removed };
176
+ }
177
+ /** Compact uncolored `+3/-1` label, omitted when both counts are zero. */
178
+ export function formatDiffStats(added, removed) {
179
+ if (added === 0 && removed === 0)
180
+ return undefined;
181
+ const parts = [];
182
+ if (added > 0)
183
+ parts.push(`+${added}`);
184
+ if (removed > 0)
185
+ parts.push(`-${removed}`);
186
+ return parts.join('/');
187
+ }
188
+ export function formatDiffRow(row) {
189
+ const text = rowText(row);
190
+ switch (row.kind) {
191
+ case 'path':
192
+ case 'gap':
193
+ return text;
194
+ case 'ctx':
195
+ return ` ${text}`;
196
+ case 'del':
197
+ return `- ${text}`;
198
+ case 'add':
199
+ return `+ ${text}`;
200
+ }
201
+ }
202
+ export function formatDiffRows(rows) {
203
+ return rows.map(formatDiffRow);
204
+ }
205
+ function paintTokens(tokens, theme) {
206
+ let firstChanged = true;
207
+ let out = '';
208
+ for (const token of tokens) {
209
+ if (token.changed !== true) {
210
+ out += token.text;
211
+ continue;
212
+ }
213
+ let value = token.text;
214
+ if (firstChanged) {
215
+ const lead = /^\s*/u.exec(value)?.[0] ?? '';
216
+ if (lead !== '') {
217
+ out += lead;
218
+ value = value.slice(lead.length);
219
+ }
220
+ firstChanged = false;
221
+ }
222
+ if (value !== '')
223
+ out += theme.inverse(value);
224
+ }
225
+ return out;
226
+ }
227
+ /** Color a already-prefixed plain diff line (`- `, `+ `, ` `, path, or gap). */
228
+ export function paintPrefixedDiffLine(line, theme) {
229
+ if (line.startsWith('- '))
230
+ return theme.fg('toolDiffRemoved', line);
231
+ if (line.startsWith('+ '))
232
+ return theme.fg('toolDiffAdded', line);
233
+ if (line.startsWith(' '))
234
+ return theme.fg('toolDiffContext', line);
235
+ return theme.fg('dim', line);
236
+ }
237
+ export function paintDiffRow(row, theme) {
238
+ const body = paintTokens(row.tokens, theme);
239
+ switch (row.kind) {
240
+ case 'path':
241
+ case 'gap':
242
+ return theme.fg('dim', rowText(row));
243
+ case 'ctx':
244
+ return theme.fg('toolDiffContext', ` ${body}`);
245
+ case 'del':
246
+ return theme.fg('toolDiffRemoved', `- ${body}`);
247
+ case 'add':
248
+ return theme.fg('toolDiffAdded', `+ ${body}`);
249
+ }
250
+ }
251
+ export function paintDiffStats(added, removed, theme) {
252
+ const label = formatDiffStats(added, removed);
253
+ if (label === undefined)
254
+ return '';
255
+ const parts = [];
256
+ if (added > 0)
257
+ parts.push(theme.fg('toolDiffAdded', `+${added}`));
258
+ if (removed > 0)
259
+ parts.push(theme.fg('toolDiffRemoved', `-${removed}`));
260
+ return parts.join(theme.fg('dim', '/'));
261
+ }
262
+ /** Paint, expand tabs, wrap to the framed-body width, and close inverse per row. */
263
+ export function wrapPaintedDiffRows(rows, theme, width) {
264
+ const inner = Math.max(1, width - 4);
265
+ const lines = [];
266
+ for (const row of rows) {
267
+ const painted = expandTabs(paintDiffRow(row, theme), 8, 2);
268
+ for (const segment of wrapText(painted, inner)) {
269
+ lines.push(theme.colors ? segment + INVERSE_OFF : segment);
270
+ }
271
+ }
272
+ return lines;
273
+ }
274
+ //# sourceMappingURL=diff-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-render.js","sourceRoot":"","sources":["../../src/chrome/diff-render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GFM markdown → terminal lines. marked lexes the source; this module paints
3
+ * tokens with the TUI theme and wraps to display columns.
4
+ * @module @agi-fans/dsh-tui
5
+ */
6
+ import { type Theme, type ThemeColor } from './theme.ts';
7
+ /** Optional surrounding style restored after inline code and emphasis. */
8
+ export interface MarkdownStyle {
9
+ color?: ThemeColor;
10
+ italic?: boolean;
11
+ }
12
+ /** Inline markdown: code, links, strike, bold, italic, math. */
13
+ export declare function renderInline(text: string, theme: Theme, style?: MarkdownStyle): string;
14
+ /**
15
+ * Render markdown to display lines already wrapped to `width`.
16
+ */
17
+ export declare function renderMarkdown(source: string, theme: Theme, width: number, style?: MarkdownStyle): string[];