@deepseek-harness-tui/dsh-tui 0.8.7 → 0.9.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 (229) hide show
  1. package/README.md +29 -10
  2. package/bin/dsh-tui.js +1 -1
  3. package/lib/types/commands.d.ts.map +1 -1
  4. package/lib/types/commands.js +4 -2
  5. package/lib/types/components/ActivityPicker.d.ts +4 -1
  6. package/lib/types/components/ActivityPicker.d.ts.map +1 -1
  7. package/lib/types/components/ActivityPicker.js +2 -2
  8. package/lib/types/components/BtwPanel.d.ts.map +1 -1
  9. package/lib/types/components/BtwPanel.js +1 -1
  10. package/lib/types/components/Chat/SubagentMessage.d.ts +2 -1
  11. package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
  12. package/lib/types/components/Chat/SubagentMessage.js +11 -3
  13. package/lib/types/components/CommandSuggestions.d.ts +21 -4
  14. package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
  15. package/lib/types/components/CommandSuggestions.js +41 -14
  16. package/lib/types/components/EffortSlider.d.ts +4 -1
  17. package/lib/types/components/EffortSlider.d.ts.map +1 -1
  18. package/lib/types/components/EffortSlider.js +4 -2
  19. package/lib/types/components/ExtensionDialog.js +6 -2
  20. package/lib/types/components/FileSuggestions.d.ts +26 -5
  21. package/lib/types/components/FileSuggestions.d.ts.map +1 -1
  22. package/lib/types/components/FileSuggestions.js +53 -16
  23. package/lib/types/components/GoalTodoPanel.d.ts +26 -2
  24. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  25. package/lib/types/components/GoalTodoPanel.js +86 -17
  26. package/lib/types/components/HelpMenu.d.ts +7 -1
  27. package/lib/types/components/HelpMenu.d.ts.map +1 -1
  28. package/lib/types/components/HelpMenu.js +12 -4
  29. package/lib/types/components/HistorySearchDialog.d.ts +4 -1
  30. package/lib/types/components/HistorySearchDialog.d.ts.map +1 -1
  31. package/lib/types/components/HistorySearchDialog.js +2 -2
  32. package/lib/types/components/LangPicker.d.ts +14 -0
  33. package/lib/types/components/LangPicker.d.ts.map +1 -0
  34. package/lib/types/components/LangPicker.js +17 -0
  35. package/lib/types/components/LoadedContextPanel.d.ts.map +1 -1
  36. package/lib/types/components/LoadedContextPanel.js +3 -1
  37. package/lib/types/components/LogoV2.d.ts +5 -1
  38. package/lib/types/components/LogoV2.d.ts.map +1 -1
  39. package/lib/types/components/LogoV2.js +12 -3
  40. package/lib/types/components/Markdown.d.ts.map +1 -1
  41. package/lib/types/components/Markdown.js +12 -3
  42. package/lib/types/components/MessageList.d.ts +43 -2
  43. package/lib/types/components/MessageList.d.ts.map +1 -1
  44. package/lib/types/components/MessageList.js +553 -41
  45. package/lib/types/components/ModelPicker.d.ts +4 -1
  46. package/lib/types/components/ModelPicker.d.ts.map +1 -1
  47. package/lib/types/components/ModelPicker.js +2 -2
  48. package/lib/types/components/PermissionsPicker.d.ts +21 -0
  49. package/lib/types/components/PermissionsPicker.d.ts.map +1 -0
  50. package/lib/types/components/PermissionsPicker.js +27 -0
  51. package/lib/types/components/PlanPicker.d.ts +15 -0
  52. package/lib/types/components/PlanPicker.d.ts.map +1 -0
  53. package/lib/types/components/PlanPicker.js +18 -0
  54. package/lib/types/components/PresetPicker.d.ts +4 -1
  55. package/lib/types/components/PresetPicker.d.ts.map +1 -1
  56. package/lib/types/components/PresetPicker.js +2 -2
  57. package/lib/types/components/PromptInput.d.ts +4 -3
  58. package/lib/types/components/PromptInput.d.ts.map +1 -1
  59. package/lib/types/components/PromptInput.js +273 -50
  60. package/lib/types/components/RewindPicker.d.ts +12 -1
  61. package/lib/types/components/RewindPicker.d.ts.map +1 -1
  62. package/lib/types/components/RewindPicker.js +6 -4
  63. package/lib/types/components/ScrollbarGutter.d.ts +28 -0
  64. package/lib/types/components/ScrollbarGutter.d.ts.map +1 -0
  65. package/lib/types/components/ScrollbarGutter.js +68 -0
  66. package/lib/types/components/Select.d.ts +8 -1
  67. package/lib/types/components/Select.d.ts.map +1 -1
  68. package/lib/types/components/Select.js +4 -2
  69. package/lib/types/components/SkillsPicker.d.ts +4 -1
  70. package/lib/types/components/SkillsPicker.d.ts.map +1 -1
  71. package/lib/types/components/SkillsPicker.js +2 -2
  72. package/lib/types/components/SubagentCard.d.ts +2 -1
  73. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  74. package/lib/types/components/SubagentCard.js +6 -1
  75. package/lib/types/components/SubagentDashboard.d.ts +4 -0
  76. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  77. package/lib/types/components/SubagentDashboard.js +9 -1
  78. package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
  79. package/lib/types/components/SubagentDetailScene.js +5 -4
  80. package/lib/types/components/SuggestionCard.d.ts +63 -0
  81. package/lib/types/components/SuggestionCard.d.ts.map +1 -0
  82. package/lib/types/components/SuggestionCard.js +77 -0
  83. package/lib/types/components/ThemePicker.d.ts +4 -1
  84. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  85. package/lib/types/components/ThemePicker.js +2 -2
  86. package/lib/types/components/ThinkingToggle.d.ts +4 -1
  87. package/lib/types/components/ThinkingToggle.d.ts.map +1 -1
  88. package/lib/types/components/ThinkingToggle.js +2 -2
  89. package/lib/types/components/TimelineRail.d.ts +53 -0
  90. package/lib/types/components/TimelineRail.d.ts.map +1 -0
  91. package/lib/types/components/TimelineRail.js +190 -0
  92. package/lib/types/components/WorkspaceFlowPicker.d.ts +6 -1
  93. package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -1
  94. package/lib/types/components/WorkspaceFlowPicker.js +4 -2
  95. package/lib/types/components/WorkspaceMenuPicker.d.ts +19 -0
  96. package/lib/types/components/WorkspaceMenuPicker.d.ts.map +1 -0
  97. package/lib/types/components/WorkspaceMenuPicker.js +19 -0
  98. package/lib/types/components/WorkspacePicker.d.ts +4 -1
  99. package/lib/types/components/WorkspacePicker.d.ts.map +1 -1
  100. package/lib/types/components/WorkspacePicker.js +2 -2
  101. package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
  102. package/lib/types/components/approvals/ApprovalPanel.js +5 -1
  103. package/lib/types/components/design-system/ListItem.d.ts +8 -1
  104. package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
  105. package/lib/types/components/design-system/ListItem.js +8 -3
  106. package/lib/types/components/messages/AssistantTextMessage.d.ts +5 -2
  107. package/lib/types/components/messages/AssistantTextMessage.d.ts.map +1 -1
  108. package/lib/types/components/messages/AssistantTextMessage.js +6 -2
  109. package/lib/types/components/messages/AssistantThinkingMessage.d.ts +2 -1
  110. package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
  111. package/lib/types/components/messages/AssistantThinkingMessage.js +10 -4
  112. package/lib/types/components/messages/AssistantToolUseMessage.d.ts +8 -1
  113. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  114. package/lib/types/components/messages/AssistantToolUseMessage.js +4 -2
  115. package/lib/types/components/messages/UserPromptMessage.d.ts +2 -1
  116. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
  117. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  118. package/lib/types/components/questions/AskUserQuestionPanel.js +34 -2
  119. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  120. package/lib/types/components/questions/PlanReviewPanel.js +13 -2
  121. package/lib/types/components/sessions/SessionListRow.d.ts +4 -1
  122. package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
  123. package/lib/types/components/sessions/SessionListRow.js +4 -2
  124. package/lib/types/components/trajectory/HotspotView.d.ts +7 -1
  125. package/lib/types/components/trajectory/HotspotView.d.ts.map +1 -1
  126. package/lib/types/components/trajectory/HotspotView.js +8 -2
  127. package/lib/types/components/trajectory/Ledger.d.ts +9 -1
  128. package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
  129. package/lib/types/components/trajectory/Ledger.js +23 -5
  130. package/lib/types/components/trajectory/WaveBand.d.ts +10 -1
  131. package/lib/types/components/trajectory/WaveBand.d.ts.map +1 -1
  132. package/lib/types/components/trajectory/WaveBand.js +7 -2
  133. package/lib/types/dsh-adapter/channel.d.ts +27 -6
  134. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  135. package/lib/types/dsh-adapter/channel.js +432 -66
  136. package/lib/types/dsh-adapter/contract.d.ts +58 -18
  137. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  138. package/lib/types/dsh-adapter/contract.js +124 -36
  139. package/lib/types/dsh-adapter/index.d.ts +10 -2
  140. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  141. package/lib/types/dsh-adapter/index.js +10 -13
  142. package/lib/types/dsh-adapter/plugin.d.ts +0 -9
  143. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  144. package/lib/types/dsh-adapter/plugin.js +136 -6
  145. package/lib/types/i18n.d.ts +194 -16
  146. package/lib/types/i18n.d.ts.map +1 -1
  147. package/lib/types/i18n.js +73 -10
  148. package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
  149. package/lib/types/ink/components/AlternateScreen.js +13 -1
  150. package/lib/types/ink/components/App.d.ts +12 -1
  151. package/lib/types/ink/components/App.d.ts.map +1 -1
  152. package/lib/types/ink/components/App.js +101 -4
  153. package/lib/types/ink/components/ClockContext.d.ts.map +1 -1
  154. package/lib/types/ink/components/ClockContext.js +2 -0
  155. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
  156. package/lib/types/ink/components/ScrollBox.js +170 -91
  157. package/lib/types/ink/constants.d.ts +9 -0
  158. package/lib/types/ink/constants.d.ts.map +1 -1
  159. package/lib/types/ink/constants.js +9 -0
  160. package/lib/types/ink/events/click-event.d.ts +7 -16
  161. package/lib/types/ink/events/click-event.d.ts.map +1 -1
  162. package/lib/types/ink/events/click-event.js +16 -19
  163. package/lib/types/ink/events/event-handlers.d.ts +11 -1
  164. package/lib/types/ink/events/event-handlers.d.ts.map +1 -1
  165. package/lib/types/ink/events/event-handlers.js +2 -0
  166. package/lib/types/ink/events/input-event.d.ts +9 -0
  167. package/lib/types/ink/events/input-event.d.ts.map +1 -1
  168. package/lib/types/ink/events/input-event.js +4 -0
  169. package/lib/types/ink/events/pointer-event.d.ts +61 -0
  170. package/lib/types/ink/events/pointer-event.d.ts.map +1 -0
  171. package/lib/types/ink/events/pointer-event.js +61 -0
  172. package/lib/types/ink/events/wheel-event.d.ts +17 -0
  173. package/lib/types/ink/events/wheel-event.d.ts.map +1 -0
  174. package/lib/types/ink/events/wheel-event.js +20 -0
  175. package/lib/types/ink/geometry-trace.d.ts +51 -0
  176. package/lib/types/ink/geometry-trace.d.ts.map +1 -0
  177. package/lib/types/ink/geometry-trace.js +83 -0
  178. package/lib/types/ink/hit-test.d.ts +56 -1
  179. package/lib/types/ink/hit-test.d.ts.map +1 -1
  180. package/lib/types/ink/hit-test.js +146 -8
  181. package/lib/types/ink/ink.d.ts +58 -1
  182. package/lib/types/ink/ink.d.ts.map +1 -1
  183. package/lib/types/ink/ink.js +268 -52
  184. package/lib/types/ink/node-cache.d.ts +5 -0
  185. package/lib/types/ink/node-cache.d.ts.map +1 -1
  186. package/lib/types/ink/parse-keypress.d.ts +8 -0
  187. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  188. package/lib/types/ink/parse-keypress.js +101 -12
  189. package/lib/types/ink/render-node-to-output.d.ts +16 -3
  190. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  191. package/lib/types/ink/render-node-to-output.js +144 -25
  192. package/lib/types/ink/selection.d.ts +29 -4
  193. package/lib/types/ink/selection.d.ts.map +1 -1
  194. package/lib/types/ink/selection.js +41 -5
  195. package/lib/types/ink/timeline-rail.d.ts +138 -0
  196. package/lib/types/ink/timeline-rail.d.ts.map +1 -0
  197. package/lib/types/ink/timeline-rail.js +179 -0
  198. package/lib/types/ink/wrap-text.d.ts.map +1 -1
  199. package/lib/types/ink/wrap-text.js +47 -5
  200. package/lib/types/screens/Chat.d.ts.map +1 -1
  201. package/lib/types/screens/Chat.js +819 -337
  202. package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
  203. package/lib/types/screens/SessionBrowser.js +56 -29
  204. package/lib/types/screens/Settings.d.ts.map +1 -1
  205. package/lib/types/screens/Settings.js +64 -22
  206. package/lib/types/screens/StatusLine.d.ts +2 -1
  207. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  208. package/lib/types/screens/StatusLine.js +17 -1
  209. package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
  210. package/lib/types/screens/TrajectoryScene.js +81 -14
  211. package/lib/types/screens/chatOverlay.d.ts +221 -0
  212. package/lib/types/screens/chatOverlay.d.ts.map +1 -0
  213. package/lib/types/screens/chatOverlay.js +114 -0
  214. package/lib/types/tips.d.ts.map +1 -1
  215. package/lib/types/tips.js +64 -10
  216. package/lib/types/tuiDisplayPrefs.d.ts +15 -0
  217. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  218. package/lib/types/tuiDisplayPrefs.js +9 -0
  219. package/lib/types/utils/debug.d.ts +10 -0
  220. package/lib/types/utils/debug.d.ts.map +1 -1
  221. package/lib/types/utils/debug.js +24 -0
  222. package/lib/types/utils/fileSuggestions.d.ts +19 -0
  223. package/lib/types/utils/fileSuggestions.d.ts.map +1 -0
  224. package/lib/types/utils/fileSuggestions.js +40 -0
  225. package/lib/types/utils/mentions.d.ts.map +1 -1
  226. package/lib/types/utils/mentions.js +3 -1
  227. package/lib/types/utils/paths.d.ts.map +1 -1
  228. package/lib/types/utils/paths.js +1 -0
  229. package/package.json +69 -66
@@ -0,0 +1,40 @@
1
+ const pathSeparators = /[\\/]/;
2
+ export function isPathLikeQuery(query) {
3
+ return query.startsWith('.') || query.startsWith('~') || query.startsWith('/') || /^[A-Za-z]:[\\/]/.test(query) || pathSeparators.test(query);
4
+ }
5
+ export function fuzzySubsequenceScore(query, candidate) {
6
+ const needle = query.toLocaleLowerCase();
7
+ const haystack = candidate.toLocaleLowerCase();
8
+ if (!needle)
9
+ return 0;
10
+ let cursor = 0;
11
+ let first = -1;
12
+ let gaps = 0;
13
+ for (const char of needle) {
14
+ const found = haystack.indexOf(char, cursor);
15
+ if (found === -1)
16
+ return undefined;
17
+ if (first === -1)
18
+ first = found;
19
+ gaps += found - cursor;
20
+ cursor = found + 1;
21
+ }
22
+ const prefixBonus = first === 0 ? 20 : 0;
23
+ const boundaryBonus = first > 0 && /[\\/_. -]/.test(haystack[first - 1] ?? '') ? 8 : 0;
24
+ return needle.length * 10 + prefixBonus + boundaryBonus - gaps - haystack.length / 100;
25
+ }
26
+ export function rankFileCandidates(candidates, query, topK = 50) {
27
+ const ranked = candidates
28
+ .map(candidate => ({ ...candidate, score: fuzzySubsequenceScore(query, `${candidate.path} ${candidate.name}`) ?? -Infinity }))
29
+ .filter(candidate => Number.isFinite(candidate.score))
30
+ .sort((a, b) => b.score - a.score || a.kind.localeCompare(b.kind) || a.path.localeCompare(b.path));
31
+ return ranked.slice(0, Math.max(0, topK));
32
+ }
33
+ export function preserveSelection(previous, next, fallback = 0) {
34
+ if (previous) {
35
+ const index = next.findIndex(candidate => candidate.id === previous.id);
36
+ if (index >= 0)
37
+ return index;
38
+ }
39
+ return next.length === 0 ? 0 : Math.min(Math.max(0, fallback), next.length - 1);
40
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../../src/utils/mentions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAA;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;CACb;AAMD,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CA8B5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAe3D"}
1
+ {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../../src/utils/mentions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAA;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;CACb;AAQD,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CA8B5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAe3D"}
@@ -6,7 +6,9 @@
6
6
  * either a run of non-whitespace characters (`@src/a.ts`) or a double-quoted
7
7
  * path (`@"my dir/a.ts"`, for paths containing spaces).
8
8
  */
9
- /** True when `ch` delimits a token (whitespace). */
9
+ /** True when `ch` delimits a token (whitespace). Path separators and the
10
+ * quote char are ordinary token characters on every platform — Windows
11
+ * backslash paths must survive both caret tracking and submission. */
10
12
  const isBoundary = (ch) => ch === undefined || /\s/.test(ch);
11
13
  /** Extract every `@` mention in `text` (typed order, duplicates kept out). */
12
14
  export function extractMentions(text) {
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,qEAAqE;AACrE,eAAO,MAAM,QAAQ,QAA8B,CAAA;AAEnD,wEAAwE;AACxE,eAAO,MAAM,eAAe,QAA6B,CAAA;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,MAAwB,EAChC,MAAM,GAAE,MAAiB,GACxB,OAAO,CAOT;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxD,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAEV"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,qEAAqE;AACrE,eAAO,MAAM,QAAQ,QAA8B,CAAA;AAEnD,wEAAwE;AACxE,eAAO,MAAM,eAAe,QAA6B,CAAA;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,MAAwB,EAChC,MAAM,GAAE,MAAiB,GACxB,OAAO,CAOT;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxD,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAEV"}
@@ -57,6 +57,7 @@ export const RENAMED_ENV = {
57
57
  CC_TUI_COMPACT_RETAIN: 'DSH_TUI_COMPACT_RETAIN',
58
58
  DSH_CC_UPDATED_FROM: 'DSH_TUI_UPDATED_FROM',
59
59
  DSH_CC_RENDER_LOG: 'DSH_TUI_RENDER_LOG',
60
+ DSH_CC_GEOMETRY_TRACE: 'DSH_TUI_GEOMETRY_TRACE',
60
61
  DSH_CC_SESSION_ROOT: 'DSH_TUI_SESSION_ROOT',
61
62
  DSH_CC_WORKSPACE: 'DSH_TUI_WORKSPACE',
62
63
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepseek-harness-tui/dsh-tui",
3
- "version": "0.8.7",
3
+ "version": "0.9.0",
4
4
  "description": "Claude Code style interactive TUI front door for DeepSeek Harness agents, built on the ported Ink core.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -93,7 +93,7 @@
93
93
  "prompt:debug": "node scripts/read-prompt-debug.mjs",
94
94
  "tui": "node --import tsx/esm scripts/run.ts",
95
95
  "smoke": "node --import tsx/esm scripts/smoke.tsx",
96
- "verify:build": "npm run verify:boundary && npm run verify:contract && npm run verify:herdr && npm run verify:manifest-deps && npm run verify:patch-surface && npm run verify:web-coexistence && npm run verify:plugin-spec && npm run verify:plugin-grants && npm run verify:plugin-storage && npm run verify:plugin-messages && npm run verify:plugin-ledger && npm run verify:plugin-commands && npm run verify:plugin-negotiation && npm run verify:plugin-lifecycle && npm run verify:packaged-presets && npm run verify:minimal-preset-tools && npm run verify:liangshen-bootstrap",
96
+ "verify:build": "npm run verify:boundary && npm run verify:contract && npm run verify:herdr && npm run verify:manifest-deps && npm run verify:patch-surface && npm run verify:web-coexistence && npm run verify:plugin-spec && npm run verify:plugin-grants && npm run verify:plugin-storage && npm run verify:plugin-messages && npm run verify:plugin-ledger && npm run verify:plugin-commands && npm run verify:plugin-negotiation && npm run verify:plugin-lifecycle && npm run verify:packaged-presets && npm run verify:minimal-preset-tools && npm run verify:liangshen-bootstrap && npm run verify:wheel-selection && npm run verify:pointer-events && npm run verify:chat-overlay",
97
97
  "verify:boundary": "node --import tsx/esm scripts/verify-adapter-boundary.ts",
98
98
  "verify:contract": "node --import tsx/esm scripts/verify-upstream-contract.ts",
99
99
  "verify:herdr": "node --import tsx/esm scripts/verify-herdr-integration.ts",
@@ -118,35 +118,38 @@
118
118
  "verify:plugin-lifecycle": "node --import tsx/esm scripts/verify-plugin-lifecycle.ts",
119
119
  "verify:tips": "node --import tsx/esm scripts/verify-tips.tsx",
120
120
  "verify:thinking-preview": "node --import tsx/esm scripts/verify-thinking-preview.tsx",
121
+ "verify:wheel-selection": "node --import tsx/esm scripts/verify-wheel-selection.ts",
122
+ "verify:pointer-events": "node --import tsx/esm scripts/verify-pointer-events.ts",
123
+ "verify:chat-overlay": "node --import tsx/esm scripts/verify-chat-overlay.ts",
121
124
  "sync:profile": "node scripts/sync-profile.mjs",
122
125
  "sync:profile:check": "node scripts/sync-profile.mjs --check"
123
126
  },
124
127
  "peerDependencies": {
125
128
  "@deepseek-ai/cordis": "^4.0.1",
126
- "@deepseek-ai/dsh-agent": "^0.1.0-rc.6",
127
- "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.6",
128
- "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.6",
129
- "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.6",
130
- "@deepseek-ai/dsh-commands": "^0.1.0-rc.6",
131
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.6",
132
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6",
133
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
134
- "@deepseek-ai/dsh-persona": "^0.1.0-rc.6",
135
- "@deepseek-ai/dsh-session": "^0.1.0-rc.6",
136
- "@deepseek-ai/dsh-settings": "^0.1.0-rc.6",
137
- "@deepseek-ai/dsh-skill": "^0.1.0-rc.6",
138
- "@deepseek-ai/dsh-storage": "^0.1.0-rc.6",
139
- "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6",
140
- "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6",
141
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
142
- "@deepseek-ai/dsh-terminal": "^0.1.0-rc.6",
143
- "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6",
144
- "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.6",
145
- "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.6",
146
- "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6",
147
- "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6",
148
- "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6",
149
- "@deepseek-ai/dsh-workspace": "^0.1.0-rc.6",
129
+ "@deepseek-ai/dsh-agent": "^0.1.0-rc.6 || ^0.1.1-rc.1",
130
+ "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.6 || ^0.1.1-rc.1",
131
+ "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.6 || ^0.1.1-rc.1",
132
+ "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.6 || ^0.1.1-rc.1",
133
+ "@deepseek-ai/dsh-commands": "^0.1.0-rc.6 || ^0.1.1-rc.1",
134
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.6 || ^0.1.1-rc.1",
135
+ "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6 || ^0.1.1-rc.1",
136
+ "@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.1.1-rc.1",
137
+ "@deepseek-ai/dsh-persona": "^0.1.0-rc.6 || ^0.1.1-rc.1",
138
+ "@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.1.1-rc.1",
139
+ "@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.1.1-rc.1",
140
+ "@deepseek-ai/dsh-skill": "^0.1.0-rc.6 || ^0.1.1-rc.1",
141
+ "@deepseek-ai/dsh-storage": "^0.1.0-rc.6 || ^0.1.1-rc.1",
142
+ "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6 || ^0.1.1-rc.1",
143
+ "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6 || ^0.1.1-rc.1",
144
+ "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6 || ^0.1.1-rc.1",
145
+ "@deepseek-ai/dsh-terminal": "^0.1.0-rc.6 || ^0.1.1-rc.1",
146
+ "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6 || ^0.1.1-rc.1",
147
+ "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.6 || ^0.1.1-rc.1",
148
+ "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.6 || ^0.1.1-rc.1",
149
+ "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6 || ^0.1.1-rc.1",
150
+ "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6 || ^0.1.1-rc.1",
151
+ "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6 || ^0.1.1-rc.1",
152
+ "@deepseek-ai/dsh-workspace": "^0.1.0-rc.6 || ^0.1.1-rc.1",
150
153
  "@deepseek-ai/schemastery": "^3.18.1"
151
154
  },
152
155
  "dependencies": {
@@ -190,46 +193,46 @@
190
193
  "@deepseek-ai/cordis": "^4.0.1",
191
194
  "@deepseek-ai/cordis-plugin-include": "^1.0.6",
192
195
  "@deepseek-ai/cordis-plugin-loader": "^1.0.2",
193
- "@deepseek-ai/dsh-agent": "^0.1.0-rc.6",
194
- "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.6",
195
- "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.6",
196
- "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.6",
197
- "@deepseek-ai/dsh-attachment": "^0.1.0-rc.6",
198
- "@deepseek-ai/dsh-brand": "^0.1.0-rc.6",
199
- "@deepseek-ai/dsh-code-runtime": "^0.1.0-rc.6",
200
- "@deepseek-ai/dsh-commands": "^0.1.0-rc.6",
201
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.6",
202
- "@deepseek-ai/dsh-fs": "^0.1.0-rc.6",
203
- "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.6",
204
- "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6",
205
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
206
- "@deepseek-ai/dsh-persona": "^0.1.0-rc.6",
207
- "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.6",
208
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.6",
209
- "@deepseek-ai/dsh-scope": "^0.1.0-rc.6",
210
- "@deepseek-ai/dsh-session": "^0.1.0-rc.6",
211
- "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.6",
212
- "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.6",
213
- "@deepseek-ai/dsh-session-persistence-sqlite": "^0.1.0-rc.6",
214
- "@deepseek-ai/dsh-settings": "^0.1.0-rc.6",
215
- "@deepseek-ai/dsh-skill": "^0.1.0-rc.6",
216
- "@deepseek-ai/dsh-storage": "^0.1.0-rc.6",
217
- "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6",
218
- "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6",
219
- "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.6",
220
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
221
- "@deepseek-ai/dsh-terminal": "^0.1.0-rc.6",
222
- "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6",
223
- "@deepseek-ai/dsh-timeout": "^0.1.0-rc.6",
224
- "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.6",
225
- "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.6",
226
- "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6",
227
- "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
228
- "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.6",
229
- "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6",
230
- "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6",
231
- "@deepseek-ai/dsh-web-app": "0.1.0-rc.8",
232
- "@deepseek-ai/dsh-workspace": "^0.1.0-rc.6",
196
+ "@deepseek-ai/dsh-agent": "^0.1.0-rc.6 || ^0.1.1-rc.1",
197
+ "@deepseek-ai/dsh-agent-instructions": "^0.1.0-rc.6 || ^0.1.1-rc.1",
198
+ "@deepseek-ai/dsh-agent-presets": "^0.1.0-rc.6 || ^0.1.1-rc.1",
199
+ "@deepseek-ai/dsh-atomic-write": "^0.1.0-rc.6 || ^0.1.1-rc.1",
200
+ "@deepseek-ai/dsh-attachment": "^0.1.0-rc.6 || ^0.1.1-rc.1",
201
+ "@deepseek-ai/dsh-brand": "^0.1.0-rc.6 || ^0.1.1-rc.1",
202
+ "@deepseek-ai/dsh-code-runtime": "^0.1.0-rc.6 || ^0.1.1-rc.1",
203
+ "@deepseek-ai/dsh-commands": "^0.1.0-rc.6 || ^0.1.1-rc.1",
204
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.0-rc.6 || ^0.1.1-rc.1",
205
+ "@deepseek-ai/dsh-fs": "^0.1.0-rc.6 || ^0.1.1-rc.1",
206
+ "@deepseek-ai/dsh-home-paths": "^0.1.0-rc.6 || ^0.1.1-rc.1",
207
+ "@deepseek-ai/dsh-invariants": "^0.1.0-rc.6 || ^0.1.1-rc.1",
208
+ "@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.1.1-rc.1",
209
+ "@deepseek-ai/dsh-persona": "^0.1.0-rc.6 || ^0.1.1-rc.1",
210
+ "@deepseek-ai/dsh-sandbox": "^0.1.0-rc.6 || ^0.1.1-rc.1",
211
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.6 || ^0.1.1-rc.1",
212
+ "@deepseek-ai/dsh-scope": "^0.1.0-rc.6 || ^0.1.1-rc.1",
213
+ "@deepseek-ai/dsh-session": "^0.1.0-rc.6 || ^0.1.1-rc.1",
214
+ "@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.6 || ^0.1.1-rc.1",
215
+ "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.6 || ^0.1.1-rc.1",
216
+ "@deepseek-ai/dsh-session-persistence-sqlite": "^0.1.0-rc.6 || ^0.1.1-rc.1",
217
+ "@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.1.1-rc.1",
218
+ "@deepseek-ai/dsh-skill": "^0.1.0-rc.6 || ^0.1.1-rc.1",
219
+ "@deepseek-ai/dsh-storage": "^0.1.0-rc.6 || ^0.1.1-rc.1",
220
+ "@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6 || ^0.1.1-rc.1",
221
+ "@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6 || ^0.1.1-rc.1",
222
+ "@deepseek-ai/dsh-subprocess": "^0.1.0-rc.6 || ^0.1.1-rc.1",
223
+ "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6 || ^0.1.1-rc.1",
224
+ "@deepseek-ai/dsh-terminal": "^0.1.0-rc.6 || ^0.1.1-rc.1",
225
+ "@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6 || ^0.1.1-rc.1",
226
+ "@deepseek-ai/dsh-timeout": "^0.1.0-rc.6 || ^0.1.1-rc.1",
227
+ "@deepseek-ai/dsh-tool-ask-user": "^0.1.0-rc.6 || ^0.1.1-rc.1",
228
+ "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.0-rc.6 || ^0.1.1-rc.1",
229
+ "@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6 || ^0.1.1-rc.1",
230
+ "@deepseek-ai/dsh-tools": "^0.1.0-rc.6 || ^0.1.1-rc.1",
231
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.6 || ^0.1.1-rc.1",
232
+ "@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6 || ^0.1.1-rc.1",
233
+ "@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6 || ^0.1.1-rc.1",
234
+ "@deepseek-ai/dsh-web-app": "0.1.1-rc.2",
235
+ "@deepseek-ai/dsh-workspace": "^0.1.0-rc.6 || ^0.1.1-rc.1",
233
236
  "@deepseek-ai/schemastery": "^3.18.1",
234
237
  "@types/lodash-es": "^4.17.0",
235
238
  "@types/node": "^22.0.0",