@songtonyli/dsh-cli 0.1.11 → 0.1.13

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 (1723) hide show
  1. package/README.md +1 -1
  2. package/bin/dsh.mjs +1 -1
  3. package/node_modules/@deepseek-ai/cordis/lib/index.js +3 -2
  4. package/node_modules/@deepseek-ai/cordis/src/logger.ts +3 -2
  5. package/node_modules/@deepseek-ai/cordis-plugin-loader/lib/index.js +1 -1
  6. package/node_modules/@deepseek-ai/cordis-plugin-loader/src/config/entry.ts +1 -1
  7. package/node_modules/@deepseek-ai/dsh/README.i18n.yaml +2 -2
  8. package/node_modules/@deepseek-ai/dsh/README.md +6 -4
  9. package/node_modules/@deepseek-ai/dsh/README.zh.md +6 -4
  10. package/node_modules/@deepseek-ai/dsh/lib/bin.js +118 -54
  11. package/node_modules/@deepseek-ai/dsh/lib/{dump-config-CpQgpJa2.js → dump-config-Bb5YvFIX.js} +1 -1
  12. package/node_modules/@deepseek-ai/dsh/lib/plugin-DJ-rVHUS.js +31 -0
  13. package/node_modules/@deepseek-ai/dsh/lib/{profile-boot-CuwbWsnH.js → profile-boot-BNu17Y9U.js} +82 -135
  14. package/node_modules/@deepseek-ai/dsh/lib/profile-boot.js +2 -0
  15. package/node_modules/@deepseek-ai/dsh/package.json +117 -102
  16. package/node_modules/@deepseek-ai/dsh-acp/package.json +22 -22
  17. package/node_modules/@deepseek-ai/dsh-acp-app/README.i18n.yaml +2 -2
  18. package/node_modules/@deepseek-ai/dsh-acp-app/README.md +1 -1
  19. package/node_modules/@deepseek-ai/dsh-acp-app/README.zh.md +1 -1
  20. package/node_modules/@deepseek-ai/dsh-acp-app/cordis.patch.yml +3 -0
  21. package/node_modules/@deepseek-ai/dsh-acp-app/package.json +3 -3
  22. package/node_modules/@deepseek-ai/dsh-agent/package.json +18 -18
  23. package/node_modules/@deepseek-ai/dsh-agent-default-model/package.json +7 -7
  24. package/node_modules/@deepseek-ai/dsh-agent-instructions/package.json +21 -21
  25. package/node_modules/@deepseek-ai/dsh-agent-loop/README.i18n.yaml +2 -2
  26. package/node_modules/@deepseek-ai/dsh-agent-loop/README.md +1 -1
  27. package/node_modules/@deepseek-ai/dsh-agent-loop/README.zh.md +1 -1
  28. package/node_modules/@deepseek-ai/dsh-agent-loop/lib/index.js +2 -3
  29. package/node_modules/@deepseek-ai/dsh-agent-loop/package.json +25 -25
  30. package/node_modules/@deepseek-ai/dsh-agent-presets/package.json +27 -27
  31. package/node_modules/@deepseek-ai/dsh-agent-presets/presets/cordis/agent.cordis.yml +23 -13
  32. package/node_modules/@deepseek-ai/dsh-agent-presets/presets/cordis/preset.yml +1 -1
  33. package/node_modules/@deepseek-ai/dsh-agent-presets/presets/cordis/skills/cordis-plugin-development/SKILL.md +73 -385
  34. package/node_modules/@deepseek-ai/dsh-agent-presets/presets/cordis/skills/editing-cordis-compositions/SKILL.md +9 -72
  35. package/node_modules/@deepseek-ai/dsh-agent-presets/presets/ptc/agent.cordis.yml +4 -0
  36. package/node_modules/@deepseek-ai/dsh-agent-presets/presets/standard/agent.cordis.yml +4 -0
  37. package/node_modules/@deepseek-ai/dsh-agent-tool-presentation/package.json +8 -8
  38. package/node_modules/@deepseek-ai/dsh-anonymous-user-id/package.json +5 -5
  39. package/node_modules/@deepseek-ai/dsh-api-authorization-controller/package.json +10 -10
  40. package/node_modules/@deepseek-ai/dsh-api-gateway/README.i18n.yaml +2 -2
  41. package/node_modules/@deepseek-ai/dsh-api-gateway/README.md +9 -5
  42. package/node_modules/@deepseek-ai/dsh-api-gateway/README.zh.md +9 -5
  43. package/node_modules/@deepseek-ai/dsh-api-gateway/lib/client.js +41 -51
  44. package/node_modules/@deepseek-ai/dsh-api-gateway/lib/types/client/index.js +4 -17
  45. package/node_modules/@deepseek-ai/dsh-api-gateway/lib/types/client/remote-events.js +33 -38
  46. package/node_modules/@deepseek-ai/dsh-api-gateway/lib/types/client/stream-client.js +2 -1
  47. package/node_modules/@deepseek-ai/dsh-api-gateway/package.json +9 -9
  48. package/node_modules/@deepseek-ai/dsh-api-remotes/README.i18n.yaml +2 -2
  49. package/node_modules/@deepseek-ai/dsh-api-remotes/README.md +1 -1
  50. package/node_modules/@deepseek-ai/dsh-api-remotes/README.zh.md +1 -1
  51. package/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +754 -76
  52. package/node_modules/@deepseek-ai/dsh-api-remotes/lib/index.js +12 -0
  53. package/node_modules/@deepseek-ai/dsh-api-remotes/lib/types/client/index.js +5 -4
  54. package/node_modules/@deepseek-ai/dsh-api-remotes/lib/types/remote-events.js +3 -0
  55. package/node_modules/@deepseek-ai/dsh-api-remotes/package.json +37 -35
  56. package/node_modules/@deepseek-ai/dsh-api-session-controller/README.i18n.yaml +2 -2
  57. package/node_modules/@deepseek-ai/dsh-api-session-controller/README.md +15 -3
  58. package/node_modules/@deepseek-ai/dsh-api-session-controller/README.zh.md +15 -3
  59. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/client.js +428 -471
  60. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/index.js +16 -47
  61. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js +11 -32
  62. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js +0 -21
  63. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/agent.js +8 -1
  64. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/index.js +16 -5
  65. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/scope.js +15 -22
  66. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/lineage.js +1 -3
  67. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/manager.js +75 -174
  68. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/projection-store.js +6 -14
  69. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.js +259 -244
  70. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/session.js +29 -33
  71. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/commands.js +10 -4
  72. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/control.js +1 -41
  73. package/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/index.js +1 -1
  74. package/node_modules/@deepseek-ai/dsh-api-session-controller/package.json +66 -66
  75. package/node_modules/@deepseek-ai/dsh-api-settings-controller/package.json +13 -13
  76. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/README.i18n.yaml +2 -2
  77. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/README.md +14 -5
  78. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/README.zh.md +14 -5
  79. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/client.js +249 -19
  80. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/index.js +258 -50
  81. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/typert.host.js +67 -11
  82. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/typert.remote-client.js +54 -9
  83. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/client/bindings.js +71 -0
  84. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/client/index.js +83 -8
  85. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/client/model.js +20 -7
  86. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/client/retention.js +77 -0
  87. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/index.js +49 -43
  88. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/retention.js +153 -0
  89. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/lib/types/terminal.js +35 -0
  90. package/node_modules/@deepseek-ai/dsh-api-terminal-controller/package.json +16 -16
  91. package/node_modules/@deepseek-ai/dsh-api-workspace-controller/package.json +16 -16
  92. package/node_modules/@deepseek-ai/dsh-api-workspace-files/README.i18n.yaml +2 -2
  93. package/node_modules/@deepseek-ai/dsh-api-workspace-files/README.md +2 -0
  94. package/node_modules/@deepseek-ai/dsh-api-workspace-files/README.zh.md +2 -0
  95. package/node_modules/@deepseek-ai/dsh-api-workspace-files/lib/index.js +6 -11
  96. package/node_modules/@deepseek-ai/dsh-api-workspace-files/lib/typert.host.js +4 -4
  97. package/node_modules/@deepseek-ai/dsh-api-workspace-files/lib/typert.remote-client.js +4 -4
  98. package/node_modules/@deepseek-ai/dsh-api-workspace-files/lib/types/index.js +6 -7
  99. package/node_modules/@deepseek-ai/dsh-api-workspace-files/package.json +11 -10
  100. package/node_modules/@deepseek-ai/dsh-app-boot/README.i18n.yaml +2 -2
  101. package/node_modules/@deepseek-ai/dsh-app-boot/README.md +18 -8
  102. package/node_modules/@deepseek-ai/dsh-app-boot/README.zh.md +17 -7
  103. package/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +360 -202
  104. package/node_modules/@deepseek-ai/dsh-app-boot/package.json +9 -17
  105. package/node_modules/@deepseek-ai/dsh-atomic-write/README.i18n.yaml +2 -2
  106. package/node_modules/@deepseek-ai/dsh-atomic-write/README.md +2 -0
  107. package/node_modules/@deepseek-ai/dsh-atomic-write/README.zh.md +2 -0
  108. package/node_modules/@deepseek-ai/dsh-atomic-write/lib/index.js +8 -3
  109. package/node_modules/@deepseek-ai/dsh-atomic-write/package.json +1 -1
  110. package/node_modules/@deepseek-ai/dsh-attachment/package.json +3 -3
  111. package/node_modules/@deepseek-ai/dsh-attachment-local/package.json +6 -6
  112. package/node_modules/@deepseek-ai/dsh-authorization/package.json +7 -7
  113. package/node_modules/@deepseek-ai/dsh-base/cordis.patch.yml +12 -5
  114. package/node_modules/@deepseek-ai/dsh-base/package.json +89 -88
  115. package/node_modules/@deepseek-ai/dsh-bash-local/package.json +10 -10
  116. package/node_modules/@deepseek-ai/dsh-bash-sandbox/package.json +12 -12
  117. package/node_modules/@deepseek-ai/dsh-brand/package.json +1 -1
  118. package/node_modules/@deepseek-ai/dsh-chunked-list/package.json +1 -1
  119. package/node_modules/@deepseek-ai/dsh-client-connection/README.i18n.yaml +2 -2
  120. package/node_modules/@deepseek-ai/dsh-client-connection/README.md +4 -0
  121. package/node_modules/@deepseek-ai/dsh-client-connection/README.zh.md +4 -0
  122. package/node_modules/@deepseek-ai/dsh-client-connection/lib/index.js +1 -1
  123. package/node_modules/@deepseek-ai/dsh-client-connection/package.json +7 -7
  124. package/node_modules/@deepseek-ai/dsh-client-file-upload/package.json +12 -12
  125. package/node_modules/@deepseek-ai/dsh-client-hmr/README.i18n.yaml +2 -2
  126. package/node_modules/@deepseek-ai/dsh-client-hmr/README.md +11 -11
  127. package/node_modules/@deepseek-ai/dsh-client-hmr/README.zh.md +11 -11
  128. package/node_modules/@deepseek-ai/dsh-client-hmr/lib/client.js +10 -59
  129. package/node_modules/@deepseek-ai/dsh-client-hmr/lib/index.js +15 -7
  130. package/node_modules/@deepseek-ai/dsh-client-hmr/package.json +5 -5
  131. package/node_modules/@deepseek-ai/dsh-client-locale/package.json +8 -6
  132. package/node_modules/@deepseek-ai/dsh-client-modules/README.i18n.yaml +2 -2
  133. package/node_modules/@deepseek-ai/dsh-client-modules/README.md +14 -4
  134. package/node_modules/@deepseek-ai/dsh-client-modules/README.zh.md +14 -4
  135. package/node_modules/@deepseek-ai/dsh-client-modules/lib/client.js +407 -26
  136. package/node_modules/@deepseek-ai/dsh-client-modules/lib/index.js +62 -10
  137. package/node_modules/@deepseek-ai/dsh-client-modules/package.json +4 -4
  138. package/node_modules/@deepseek-ai/dsh-client-resources/package.json +4 -3
  139. package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +140 -48
  140. package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/package.json +15 -12
  141. package/node_modules/@deepseek-ai/dsh-client-ui-approval/package.json +12 -10
  142. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/README.i18n.yaml +2 -2
  143. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/README.md +2 -0
  144. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/README.zh.md +2 -0
  145. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/lib/client.js +24 -12
  146. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/package.json +9 -7
  147. package/node_modules/@deepseek-ai/dsh-client-ui-brand-official/package.json +4 -3
  148. package/node_modules/@deepseek-ai/dsh-client-ui-chat/README.i18n.yaml +2 -2
  149. package/node_modules/@deepseek-ai/dsh-client-ui-chat/README.md +4 -2
  150. package/node_modules/@deepseek-ai/dsh-client-ui-chat/README.zh.md +4 -2
  151. package/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js +49 -34
  152. package/node_modules/@deepseek-ai/dsh-client-ui-chat/package.json +33 -29
  153. package/node_modules/@deepseek-ai/dsh-client-ui-commands/README.i18n.yaml +2 -2
  154. package/node_modules/@deepseek-ai/dsh-client-ui-commands/README.md +1 -1
  155. package/node_modules/@deepseek-ai/dsh-client-ui-commands/README.zh.md +1 -1
  156. package/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +107 -34
  157. package/node_modules/@deepseek-ai/dsh-client-ui-commands/package.json +14 -11
  158. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/README.i18n.yaml +2 -2
  159. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/README.md +13 -2
  160. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/README.zh.md +13 -2
  161. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +520 -384
  162. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/package.json +30 -26
  163. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/README.i18n.yaml +2 -2
  164. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/README.md +9 -13
  165. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/README.zh.md +9 -13
  166. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/lib/client.js +3 -35
  167. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/package.json +12 -12
  168. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/README.i18n.yaml +2 -2
  169. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/README.md +25 -15
  170. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/README.zh.md +25 -15
  171. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/client.js +1364 -160
  172. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/index.js +164 -41
  173. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/package.json +27 -22
  174. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/package.json +7 -5
  175. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/README.i18n.yaml +2 -2
  176. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/README.md +8 -5
  177. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/README.zh.md +7 -4
  178. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/lib/client.js +3 -1
  179. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/package.json +4 -4
  180. package/node_modules/@deepseek-ai/dsh-client-ui-goal/package.json +14 -12
  181. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/README.i18n.yaml +2 -2
  182. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/README.md +1 -1
  183. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/README.zh.md +1 -1
  184. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/lib/client.js +112 -11
  185. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/package.json +11 -8
  186. package/node_modules/@deepseek-ai/dsh-client-ui-jobs/package.json +8 -6
  187. package/node_modules/@deepseek-ai/dsh-client-ui-layout/README.i18n.yaml +2 -2
  188. package/node_modules/@deepseek-ai/dsh-client-ui-layout/README.md +2 -0
  189. package/node_modules/@deepseek-ai/dsh-client-ui-layout/README.zh.md +2 -0
  190. package/node_modules/@deepseek-ai/dsh-client-ui-layout/lib/client.js +27 -8
  191. package/node_modules/@deepseek-ai/dsh-client-ui-layout/package.json +7 -6
  192. package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/package.json +15 -13
  193. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/README.i18n.yaml +2 -2
  194. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/README.md +5 -1
  195. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/README.zh.md +5 -1
  196. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +152 -33
  197. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/package.json +14 -11
  198. package/node_modules/@deepseek-ai/dsh-client-ui-open-in-app/package.json +10 -8
  199. package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/package.json +14 -12
  200. package/node_modules/@deepseek-ai/dsh-client-ui-plan/README.i18n.yaml +2 -2
  201. package/node_modules/@deepseek-ai/dsh-client-ui-plan/README.md +9 -1
  202. package/node_modules/@deepseek-ai/dsh-client-ui-plan/README.zh.md +9 -1
  203. package/node_modules/@deepseek-ai/dsh-client-ui-plan/lib/client.js +564 -4
  204. package/node_modules/@deepseek-ai/dsh-client-ui-plan/package.json +26 -10
  205. package/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/README.i18n.yaml +6 -0
  206. package/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/README.md +129 -0
  207. package/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/README.zh.md +129 -0
  208. package/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/lib/client.js +2550 -0
  209. package/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/lib/index.js +6 -0
  210. package/node_modules/@deepseek-ai/dsh-client-ui-plugin-manager/package.json +65 -0
  211. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/LICENSE +21 -0
  212. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/README.i18n.yaml +6 -0
  213. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/README.md +172 -0
  214. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/README.zh.md +172 -0
  215. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Button.module.css +79 -0
  216. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Checkbox.module.css +28 -0
  217. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/ConnectionIndicator.module.css +123 -0
  218. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/DiffBlock.module.css +109 -0
  219. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/DisclosureRow.module.css +84 -0
  220. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/FileTypeIcon.module.css +50 -0
  221. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/HoverCard.module.css +54 -0
  222. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Input.module.css +38 -0
  223. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/JsonTree.module.css +345 -0
  224. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Menu.module.css +261 -0
  225. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Modal.module.css +103 -0
  226. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/OnboardingSurface.module.css +29 -0
  227. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Pill.module.css +27 -0
  228. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/ReadBlock.module.css +111 -0
  229. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/RiskConfirmation.module.css +73 -0
  230. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/SearchBlock.module.css +112 -0
  231. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/StateDot.module.css +73 -0
  232. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Switch.module.css +50 -0
  233. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Tag.module.css +57 -0
  234. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/TerminalBlock.module.css +205 -0
  235. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Toast.module.css +72 -0
  236. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/Tooltip.module.css +42 -0
  237. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/WebBlock.module.css +141 -0
  238. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js +8666 -0
  239. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/CodeBlock.module.css +130 -0
  240. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/JsonBlock.module.css +32 -0
  241. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/MarkdownText.module.css +462 -0
  242. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/BrandWordmark.d.ts +15 -0
  243. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Button.d.ts +18 -0
  244. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Checkbox.d.ts +20 -0
  245. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/CodeFileIcon.d.ts +12 -0
  246. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/ConnectionIndicator.d.ts +26 -0
  247. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/DiffBlock.d.ts +52 -0
  248. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/DisclosureRow.d.ts +29 -0
  249. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/FileTypeIcon.d.ts +43 -0
  250. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/FishLogo.d.ts +16 -0
  251. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/FoldToggle.d.ts +20 -0
  252. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/HoverCard.d.ts +24 -0
  253. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Input.d.ts +11 -0
  254. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/JsonTree.d.ts +59 -0
  255. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/LinkIcon.d.ts +49 -0
  256. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Menu.d.ts +90 -0
  257. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Modal.d.ts +36 -0
  258. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/OnboardingSurface.d.ts +11 -0
  259. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Pill.d.ts +13 -0
  260. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/ReadBlock.d.ts +47 -0
  261. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/ReferenceIcon.d.ts +16 -0
  262. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/RiskConfirmation.d.ts +20 -0
  263. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/SearchBlock.d.ts +72 -0
  264. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/SiteGlyph.d.ts +25 -0
  265. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/StateDot.d.ts +18 -0
  266. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Switch.d.ts +20 -0
  267. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Tag.d.ts +32 -0
  268. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/TerminalBlock.d.ts +66 -0
  269. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Toast.d.ts +32 -0
  270. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/Tooltip.d.ts +34 -0
  271. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/WebBlock.d.ts +61 -0
  272. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/ansi.d.ts +17 -0
  273. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/clipboard.d.ts +9 -0
  274. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/code-file-icon-artwork.d.ts +54 -0
  275. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/code-file-types.d.ts +30 -0
  276. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/darwin-desktop.d.ts +9 -0
  277. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/file-size.d.ts +8 -0
  278. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/head-tail-cap.d.ts +23 -0
  279. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/icons/index.d.ts +200 -0
  280. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/icons/props.d.ts +9 -0
  281. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/index.d.ts +70 -0
  282. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/CodeBlock.d.ts +30 -0
  283. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/JsonBlock.d.ts +8 -0
  284. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/MarkdownDelegate.d.ts +36 -0
  285. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/MarkdownText.d.ts +49 -0
  286. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/cjkFriendlyStrong.d.ts +9 -0
  287. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/file-link.d.ts +13 -0
  288. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/highlight.d.ts +142 -0
  289. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/incremental.d.ts +80 -0
  290. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/katex.d.ts +27 -0
  291. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/mathCompatibility.d.ts +11 -0
  292. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/parse.d.ts +25 -0
  293. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/plain-text.d.ts +22 -0
  294. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/render.d.ts +138 -0
  295. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/markdown/useViewportHighlighting.d.ts +11 -0
  296. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/pointer-grace.d.ts +22 -0
  297. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/rank-by-name.d.ts +22 -0
  298. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/relative-time.d.ts +23 -0
  299. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/use-copy-feedback.d.ts +14 -0
  300. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/useAnchoredMaxHeight.d.ts +11 -0
  301. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/useAnchoredPosition.d.ts +34 -0
  302. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/useDismissOnOutsidePointer.d.ts +11 -0
  303. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/types/user-text.d.ts +37 -0
  304. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/user-text.module.css +43 -0
  305. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/package.json +60 -0
  306. package/node_modules/@deepseek-ai/dsh-client-ui-reference/README.i18n.yaml +2 -2
  307. package/node_modules/@deepseek-ai/dsh-client-ui-reference/README.md +1 -1
  308. package/node_modules/@deepseek-ai/dsh-client-ui-reference/README.zh.md +1 -1
  309. package/node_modules/@deepseek-ai/dsh-client-ui-reference/lib/client.js +19 -5
  310. package/node_modules/@deepseek-ai/dsh-client-ui-reference/package.json +13 -11
  311. package/node_modules/@deepseek-ai/dsh-client-ui-renderer/README.i18n.yaml +2 -2
  312. package/node_modules/@deepseek-ai/dsh-client-ui-renderer/README.md +4 -3
  313. package/node_modules/@deepseek-ai/dsh-client-ui-renderer/README.zh.md +4 -3
  314. package/node_modules/@deepseek-ai/dsh-client-ui-renderer/lib/client.js +463 -57
  315. package/node_modules/@deepseek-ai/dsh-client-ui-renderer/package.json +3 -2
  316. package/node_modules/@deepseek-ai/dsh-client-ui-schedule/package.json +10 -8
  317. package/node_modules/@deepseek-ai/dsh-client-ui-session/README.i18n.yaml +2 -2
  318. package/node_modules/@deepseek-ai/dsh-client-ui-session/README.md +1 -1
  319. package/node_modules/@deepseek-ai/dsh-client-ui-session/README.zh.md +1 -1
  320. package/node_modules/@deepseek-ai/dsh-client-ui-session/lib/client.js +232 -72
  321. package/node_modules/@deepseek-ai/dsh-client-ui-session/package.json +8 -4
  322. package/node_modules/@deepseek-ai/dsh-client-ui-settings/package.json +5 -4
  323. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/README.i18n.yaml +2 -2
  324. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/README.md +2 -0
  325. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/README.zh.md +2 -0
  326. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +293 -27
  327. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/package.json +11 -9
  328. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/README.i18n.yaml +2 -2
  329. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/README.md +4 -2
  330. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/README.zh.md +4 -2
  331. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +244 -227
  332. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/package.json +8 -6
  333. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/README.i18n.yaml +2 -2
  334. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/README.md +6 -2
  335. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/README.zh.md +6 -2
  336. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +52 -10
  337. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/package.json +12 -8
  338. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/README.i18n.yaml +2 -2
  339. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/README.md +24 -19
  340. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/README.zh.md +23 -18
  341. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/lib/client.js +649 -509
  342. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/package.json +10 -7
  343. package/node_modules/@deepseek-ai/dsh-client-ui-settings-signin/package.json +7 -5
  344. package/node_modules/@deepseek-ai/dsh-client-ui-settings-unarchive-sessions/package.json +11 -9
  345. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/README.i18n.yaml +2 -2
  346. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/README.md +8 -0
  347. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/README.zh.md +8 -0
  348. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +105 -25
  349. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/package.json +11 -7
  350. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/README.i18n.yaml +6 -0
  351. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/README.md +117 -0
  352. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/README.zh.md +117 -0
  353. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/lib/client.js +821 -0
  354. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/lib/index.js +6 -0
  355. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-browser/package.json +60 -0
  356. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/README.i18n.yaml +2 -2
  357. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/README.md +39 -6
  358. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/README.zh.md +39 -6
  359. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/client.js +1821 -25130
  360. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/client.pdf.js +32609 -0
  361. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/lib/index.js +26 -4
  362. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-documentpreview/package.json +25 -15
  363. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-files/package.json +11 -9
  364. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-right/README.i18n.yaml +2 -2
  365. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-right/README.md +9 -3
  366. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-right/README.zh.md +9 -3
  367. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-right/lib/client.js +4538 -13
  368. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-right/package.json +13 -10
  369. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/README.i18n.yaml +2 -2
  370. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/README.md +8 -5
  371. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/README.zh.md +8 -5
  372. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/lib/client.js +42 -13423
  373. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/lib/client.terminal.js +13494 -0
  374. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar-terminal/package.json +14 -11
  375. package/node_modules/@deepseek-ai/dsh-client-ui-skill/package.json +13 -11
  376. package/node_modules/@deepseek-ai/dsh-client-ui-slots/LICENSE +21 -0
  377. package/node_modules/@deepseek-ai/dsh-client-ui-slots/README.i18n.yaml +6 -0
  378. package/node_modules/@deepseek-ai/dsh-client-ui-slots/README.md +111 -0
  379. package/node_modules/@deepseek-ai/dsh-client-ui-slots/README.zh.md +111 -0
  380. package/node_modules/@deepseek-ai/dsh-client-ui-slots/lib/index.js +577 -0
  381. package/node_modules/@deepseek-ai/dsh-client-ui-slots/lib/types/index.d.ts +951 -0
  382. package/node_modules/@deepseek-ai/dsh-client-ui-slots/lib/types/renderer.d.ts +263 -0
  383. package/node_modules/@deepseek-ai/dsh-client-ui-slots/lib/types/store.d.ts +3 -0
  384. package/node_modules/@deepseek-ai/dsh-client-ui-slots/package.json +37 -0
  385. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/README.i18n.yaml +2 -2
  386. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/README.md +3 -1
  387. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/README.zh.md +3 -1
  388. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/lib/client.js +212 -16
  389. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/package.json +22 -12
  390. package/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +1 -1
  391. package/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/index.js +1 -0
  392. package/node_modules/@deepseek-ai/dsh-client-ui-theme/package.json +10 -8
  393. package/node_modules/@deepseek-ai/dsh-client-ui-tool/lib/client.js +1 -0
  394. package/node_modules/@deepseek-ai/dsh-client-ui-tool/package.json +21 -19
  395. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/README.i18n.yaml +2 -2
  396. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/README.md +5 -1
  397. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/README.zh.md +5 -1
  398. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/lib/client.js +132 -66
  399. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/package.json +15 -13
  400. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/README.i18n.yaml +2 -2
  401. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/README.md +6 -4
  402. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/README.zh.md +6 -4
  403. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/lib/client.js +71 -74
  404. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/package.json +18 -15
  405. package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/lib/client.js +12 -5
  406. package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/package.json +15 -11
  407. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/README.i18n.yaml +2 -2
  408. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/README.md +10 -2
  409. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/README.zh.md +10 -2
  410. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +403 -217
  411. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +18 -15
  412. package/node_modules/@deepseek-ai/dsh-cmdline/package.json +1 -1
  413. package/node_modules/@deepseek-ai/dsh-command-compact/package.json +8 -8
  414. package/node_modules/@deepseek-ai/dsh-command-feedback/package.json +11 -11
  415. package/node_modules/@deepseek-ai/dsh-command-goal/package.json +11 -11
  416. package/node_modules/@deepseek-ai/dsh-commands/package.json +18 -18
  417. package/node_modules/@deepseek-ai/dsh-compaction/package.json +11 -11
  418. package/node_modules/@deepseek-ai/dsh-compaction-basic/package.json +22 -22
  419. package/node_modules/@deepseek-ai/dsh-compaction-image-offload/package.json +16 -16
  420. package/node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner/package.json +13 -13
  421. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/README.i18n.yaml +2 -2
  422. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/README.md +7 -7
  423. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/README.zh.md +7 -7
  424. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/lib/client.js +736 -219
  425. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/package.json +6 -6
  426. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/README.i18n.yaml +2 -2
  427. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/README.md +7 -7
  428. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/README.zh.md +7 -7
  429. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/lib/index.js +5 -5
  430. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/lib/types/index.js +5 -8
  431. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/lib/types/lifecycle.js +2 -2
  432. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/package.json +16 -16
  433. package/node_modules/@deepseek-ai/dsh-credentials/package.json +4 -4
  434. package/node_modules/@deepseek-ai/dsh-credentials-local/package.json +9 -9
  435. package/node_modules/@deepseek-ai/dsh-deepseek-llm-api-extensions/package.json +1 -1
  436. package/node_modules/@deepseek-ai/dsh-deque/package.json +1 -1
  437. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/README.i18n.yaml +6 -0
  438. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/README.md +220 -0
  439. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/README.zh.md +220 -0
  440. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/index.js +1894 -0
  441. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/invariant.js +361 -0
  442. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/typert.host.js +879 -0
  443. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/typert.remote-client.js +218 -0
  444. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/activity.js +85 -0
  445. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/client.js +3 -0
  446. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/error.js +23 -0
  447. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/index.js +313 -0
  448. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/invariant.js +26 -0
  449. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/journal.js +63 -0
  450. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/lifecycle.js +85 -0
  451. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/mailbox.js +293 -0
  452. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/persisted.js +20 -0
  453. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/projection.js +260 -0
  454. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/roster.js +448 -0
  455. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/session-message.js +23 -0
  456. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/task-board.js +275 -0
  457. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/task-graph.js +62 -0
  458. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/types.js +26 -0
  459. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/lib/types/validation.js +33 -0
  460. package/node_modules/@deepseek-ai/dsh-experimental-agent-team/package.json +87 -0
  461. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-profile/README.i18n.yaml +6 -0
  462. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-profile/README.md +107 -0
  463. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-profile/README.zh.md +107 -0
  464. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-profile/cordis.patch.yml +30 -0
  465. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-profile/lib/index.js +1 -0
  466. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-profile/package.json +48 -0
  467. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-web-profile/README.i18n.yaml +6 -0
  468. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-web-profile/README.md +98 -0
  469. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-web-profile/README.zh.md +98 -0
  470. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-web-profile/cordis.patch.yml +6 -0
  471. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-web-profile/lib/index.js +1 -0
  472. package/node_modules/@deepseek-ai/dsh-experimental-agent-team-web-profile/package.json +47 -0
  473. package/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/README.i18n.yaml +6 -0
  474. package/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/README.md +98 -0
  475. package/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/README.zh.md +98 -0
  476. package/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/lib/client.js +4979 -0
  477. package/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/lib/index.js +6 -0
  478. package/node_modules/@deepseek-ai/dsh-experimental-client-ui-agent-team/package.json +81 -0
  479. package/node_modules/@deepseek-ai/dsh-experimental-tool-agent-team/README.i18n.yaml +6 -0
  480. package/node_modules/@deepseek-ai/dsh-experimental-tool-agent-team/README.md +159 -0
  481. package/node_modules/@deepseek-ai/dsh-experimental-tool-agent-team/README.zh.md +159 -0
  482. package/node_modules/@deepseek-ai/dsh-experimental-tool-agent-team/lib/index.js +550 -0
  483. package/node_modules/@deepseek-ai/dsh-experimental-tool-agent-team/package.json +59 -0
  484. package/node_modules/@deepseek-ai/dsh-file-reference/package.json +3 -3
  485. package/node_modules/@deepseek-ai/dsh-file-reference-local/package.json +9 -9
  486. package/node_modules/@deepseek-ai/dsh-fs/package.json +9 -9
  487. package/node_modules/@deepseek-ai/dsh-fs-local/package.json +4 -4
  488. package/node_modules/@deepseek-ai/dsh-fs-observation-policy/package.json +4 -4
  489. package/node_modules/@deepseek-ai/dsh-fs-sandbox/package.json +10 -10
  490. package/node_modules/@deepseek-ai/dsh-goal/package.json +22 -22
  491. package/node_modules/@deepseek-ai/dsh-goal-round-driver/package.json +15 -15
  492. package/node_modules/@deepseek-ai/dsh-headless/cordis.patch.yml +3 -0
  493. package/node_modules/@deepseek-ai/dsh-headless/package.json +17 -17
  494. package/node_modules/@deepseek-ai/dsh-hmr/README.i18n.yaml +6 -0
  495. package/node_modules/@deepseek-ai/dsh-hmr/README.md +95 -0
  496. package/node_modules/@deepseek-ai/dsh-hmr/README.zh.md +95 -0
  497. package/node_modules/@deepseek-ai/dsh-hmr/lib/index.js +672 -0
  498. package/node_modules/@deepseek-ai/{cordis-plugin-hmr → dsh-hmr}/package.json +18 -21
  499. package/node_modules/@deepseek-ai/dsh-home-paths/package.json +1 -1
  500. package/node_modules/@deepseek-ai/dsh-hook-protocol/package.json +7 -7
  501. package/node_modules/@deepseek-ai/dsh-hooks-claude-code/package.json +20 -20
  502. package/node_modules/@deepseek-ai/dsh-hooks-codex/package.json +18 -18
  503. package/node_modules/@deepseek-ai/dsh-host-directory-picker/package.json +1 -1
  504. package/node_modules/@deepseek-ai/dsh-host-directory-picker-auto/package.json +13 -13
  505. package/node_modules/@deepseek-ai/dsh-host-directory-picker-browse/package.json +2 -2
  506. package/node_modules/@deepseek-ai/dsh-host-directory-picker-native/package.json +3 -3
  507. package/node_modules/@deepseek-ai/dsh-host-frontend-static/package.json +6 -6
  508. package/node_modules/@deepseek-ai/dsh-host-open-in-app/package.json +5 -5
  509. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/lib/index.js +40 -24
  510. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/lib/typert.host.js +2 -1
  511. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/lib/typert.remote-client.js +2 -1
  512. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/lib/types/index.js +36 -24
  513. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/package.json +7 -7
  514. package/node_modules/@deepseek-ai/dsh-host-webserver/package.json +1 -1
  515. package/node_modules/@deepseek-ai/dsh-http-proxy/package.json +2 -2
  516. package/node_modules/@deepseek-ai/dsh-invariants/package.json +1 -1
  517. package/node_modules/@deepseek-ai/dsh-jobs/package.json +9 -9
  518. package/node_modules/@deepseek-ai/dsh-jobs-local/package.json +11 -11
  519. package/node_modules/@deepseek-ai/dsh-launch-environment/package.json +1 -1
  520. package/node_modules/@deepseek-ai/dsh-lazy-require/package.json +1 -1
  521. package/node_modules/@deepseek-ai/dsh-llm/README.i18n.yaml +2 -2
  522. package/node_modules/@deepseek-ai/dsh-llm/README.md +1 -1
  523. package/node_modules/@deepseek-ai/dsh-llm/README.zh.md +1 -1
  524. package/node_modules/@deepseek-ai/dsh-llm/lib/index.js +2 -1
  525. package/node_modules/@deepseek-ai/dsh-llm/lib/typert.host.js +3 -2
  526. package/node_modules/@deepseek-ai/dsh-llm/lib/typert.remote-client.js +2 -1
  527. package/node_modules/@deepseek-ai/dsh-llm/lib/types/index.js +1 -0
  528. package/node_modules/@deepseek-ai/dsh-llm/package.json +8 -8
  529. package/node_modules/@deepseek-ai/dsh-llm-deepseek/README.i18n.yaml +2 -2
  530. package/node_modules/@deepseek-ai/dsh-llm-deepseek/README.md +4 -4
  531. package/node_modules/@deepseek-ai/dsh-llm-deepseek/README.zh.md +4 -4
  532. package/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/index.js +33 -37
  533. package/node_modules/@deepseek-ai/dsh-llm-deepseek/package.json +37 -37
  534. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/README.i18n.yaml +2 -2
  535. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/README.md +3 -2
  536. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/README.zh.md +3 -2
  537. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js +47 -3
  538. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/package.json +21 -21
  539. package/node_modules/@deepseek-ai/dsh-llm-retry/package.json +20 -20
  540. package/node_modules/@deepseek-ai/dsh-mcp-client/package.json +20 -20
  541. package/node_modules/@deepseek-ai/dsh-mcp-resources/package.json +12 -12
  542. package/node_modules/@deepseek-ai/dsh-message-feedback/package.json +14 -14
  543. package/node_modules/@deepseek-ai/dsh-native-command/package.json +2 -2
  544. package/node_modules/@deepseek-ai/dsh-office-to-pdf/README.i18n.yaml +6 -0
  545. package/node_modules/@deepseek-ai/dsh-office-to-pdf/README.md +105 -0
  546. package/node_modules/@deepseek-ai/dsh-office-to-pdf/README.zh.md +105 -0
  547. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/index.js +659 -0
  548. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/typert.host.js +193 -0
  549. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/typert.remote-client.js +94 -0
  550. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/types/errors.js +15 -0
  551. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/types/identity.js +23 -0
  552. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/types/index.js +287 -0
  553. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/types/output.js +47 -0
  554. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/types/queue.js +246 -0
  555. package/node_modules/@deepseek-ai/dsh-office-to-pdf/lib/types/types.js +2 -0
  556. package/node_modules/@deepseek-ai/dsh-office-to-pdf/package.json +64 -0
  557. package/node_modules/@deepseek-ai/dsh-output-retention/package.json +1 -1
  558. package/node_modules/@deepseek-ai/dsh-package-manifest/package.json +1 -1
  559. package/node_modules/@deepseek-ai/dsh-permission-presets/package.json +21 -21
  560. package/node_modules/@deepseek-ai/dsh-persona/package.json +4 -4
  561. package/node_modules/@deepseek-ai/dsh-plan-mode/README.i18n.yaml +2 -2
  562. package/node_modules/@deepseek-ai/dsh-plan-mode/README.md +2 -0
  563. package/node_modules/@deepseek-ai/dsh-plan-mode/README.zh.md +2 -0
  564. package/node_modules/@deepseek-ai/dsh-plan-mode/lib/index.js +2 -1
  565. package/node_modules/@deepseek-ai/dsh-plan-mode/lib/types/index.js +1 -1
  566. package/node_modules/@deepseek-ai/dsh-plan-mode/package.json +22 -22
  567. package/node_modules/@deepseek-ai/dsh-plugin-manager/README.i18n.yaml +6 -0
  568. package/node_modules/@deepseek-ai/dsh-plugin-manager/README.md +133 -0
  569. package/node_modules/@deepseek-ai/dsh-plugin-manager/README.zh.md +133 -0
  570. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/index.js +1174 -0
  571. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/typert.host.js +604 -0
  572. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/typert.remote-client.js +393 -0
  573. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/build-approval.js +56 -0
  574. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/failure.js +8 -0
  575. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/index.js +623 -0
  576. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/install-failure.js +33 -0
  577. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/install-spec.js +73 -0
  578. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/operations.js +177 -0
  579. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/patch.js +50 -0
  580. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/tools.js +74 -0
  581. package/node_modules/@deepseek-ai/dsh-plugin-manager/lib/types/types.js +2 -0
  582. package/node_modules/@deepseek-ai/dsh-plugin-manager/package.json +102 -0
  583. package/node_modules/@deepseek-ai/dsh-plugin-package-inventory-deepseek/package.json +13 -13
  584. package/node_modules/@deepseek-ai/dsh-ptc-runtime/package.json +3 -3
  585. package/node_modules/@deepseek-ai/dsh-ptc-runtime-node/README.i18n.yaml +2 -2
  586. package/node_modules/@deepseek-ai/dsh-ptc-runtime-node/README.md +1 -1
  587. package/node_modules/@deepseek-ai/dsh-ptc-runtime-node/README.zh.md +1 -1
  588. package/node_modules/@deepseek-ai/dsh-ptc-runtime-node/lib/index.js +1 -1
  589. package/node_modules/@deepseek-ai/dsh-ptc-runtime-node/package.json +20 -20
  590. package/node_modules/@deepseek-ai/dsh-pwsh-local/package.json +10 -10
  591. package/node_modules/@deepseek-ai/dsh-pwsh-sandbox/package.json +12 -12
  592. package/node_modules/@deepseek-ai/dsh-repeat-tool-reminder/lib/index.js +2 -1
  593. package/node_modules/@deepseek-ai/dsh-repeat-tool-reminder/package.json +9 -9
  594. package/node_modules/@deepseek-ai/dsh-sandbox/README.i18n.yaml +2 -2
  595. package/node_modules/@deepseek-ai/dsh-sandbox/README.md +2 -2
  596. package/node_modules/@deepseek-ai/dsh-sandbox/README.zh.md +2 -2
  597. package/node_modules/@deepseek-ai/dsh-sandbox/lib/index.js +6 -9
  598. package/node_modules/@deepseek-ai/dsh-sandbox/package.json +6 -6
  599. package/node_modules/@deepseek-ai/dsh-sandbox-local/package.json +9 -9
  600. package/node_modules/@deepseek-ai/dsh-sandbox-policy/package.json +13 -13
  601. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/package.json +8 -8
  602. package/node_modules/@deepseek-ai/dsh-schedule/package.json +20 -20
  603. package/node_modules/@deepseek-ai/dsh-scope/package.json +3 -3
  604. package/node_modules/@deepseek-ai/dsh-sdk-app/README.i18n.yaml +2 -2
  605. package/node_modules/@deepseek-ai/dsh-sdk-app/README.md +1 -1
  606. package/node_modules/@deepseek-ai/dsh-sdk-app/README.zh.md +1 -1
  607. package/node_modules/@deepseek-ai/dsh-sdk-app/cordis.patch.yml +3 -0
  608. package/node_modules/@deepseek-ai/dsh-sdk-app/package.json +3 -3
  609. package/node_modules/@deepseek-ai/dsh-sdk-jsonrpc-server/package.json +21 -21
  610. package/node_modules/@deepseek-ai/dsh-sdk-minimal/package.json +28 -28
  611. package/node_modules/@deepseek-ai/dsh-sdk-protocol/package.json +7 -7
  612. package/node_modules/@deepseek-ai/dsh-session/lib/index.js +2 -1
  613. package/node_modules/@deepseek-ai/dsh-session/lib/types/known-event-types.js +1 -0
  614. package/node_modules/@deepseek-ai/dsh-session/package.json +9 -9
  615. package/node_modules/@deepseek-ai/dsh-session-checkpoint-policy/package.json +15 -15
  616. package/node_modules/@deepseek-ai/dsh-session-format/package.json +2 -2
  617. package/node_modules/@deepseek-ai/dsh-session-format-catalog/package.json +8 -8
  618. package/node_modules/@deepseek-ai/dsh-session-format-v0-to-v1/package.json +4 -4
  619. package/node_modules/@deepseek-ai/dsh-session-format-v1-to-v2/package.json +6 -6
  620. package/node_modules/@deepseek-ai/dsh-session-format-v2-to-v3/package.json +4 -4
  621. package/node_modules/@deepseek-ai/dsh-session-log-deepseek/package.json +14 -14
  622. package/node_modules/@deepseek-ai/dsh-session-log-export/package.json +19 -17
  623. package/node_modules/@deepseek-ai/dsh-session-persistence/package.json +9 -9
  624. package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/worker.cjs +7 -4
  625. package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/package.json +10 -10
  626. package/node_modules/@deepseek-ai/dsh-session-projection/package.json +3 -3
  627. package/node_modules/@deepseek-ai/dsh-session-projection-cache/package.json +10 -10
  628. package/node_modules/@deepseek-ai/dsh-session-query/package.json +18 -18
  629. package/node_modules/@deepseek-ai/dsh-session-query-sqlite/package.json +9 -9
  630. package/node_modules/@deepseek-ai/dsh-session-reference/README.i18n.yaml +2 -2
  631. package/node_modules/@deepseek-ai/dsh-session-reference/README.md +1 -1
  632. package/node_modules/@deepseek-ai/dsh-session-reference/README.zh.md +1 -1
  633. package/node_modules/@deepseek-ai/dsh-session-reference/lib/index.js +20 -16
  634. package/node_modules/@deepseek-ai/dsh-session-reference/lib/typert.host.js +4 -3
  635. package/node_modules/@deepseek-ai/dsh-session-reference/lib/typert.remote-client.js +2 -1
  636. package/node_modules/@deepseek-ai/dsh-session-reference/lib/types/index.js +30 -23
  637. package/node_modules/@deepseek-ai/dsh-session-reference/package.json +34 -32
  638. package/node_modules/@deepseek-ai/dsh-session-stats/package.json +7 -7
  639. package/node_modules/@deepseek-ai/dsh-session-telemetry/package.json +5 -5
  640. package/node_modules/@deepseek-ai/dsh-session-telemetry-otel/package.json +19 -19
  641. package/node_modules/@deepseek-ai/dsh-session-title/package.json +16 -16
  642. package/node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm/package.json +12 -12
  643. package/node_modules/@deepseek-ai/dsh-session-title-llm/package.json +10 -10
  644. package/node_modules/@deepseek-ai/dsh-session-turn-outline/package.json +7 -7
  645. package/node_modules/@deepseek-ai/dsh-settings/package.json +8 -8
  646. package/node_modules/@deepseek-ai/dsh-settings-file/package.json +8 -8
  647. package/node_modules/@deepseek-ai/dsh-shell/package.json +7 -7
  648. package/node_modules/@deepseek-ai/dsh-shell-env/package.json +9 -9
  649. package/node_modules/@deepseek-ai/dsh-skill/package.json +6 -6
  650. package/node_modules/@deepseek-ai/dsh-skill-badge/package.json +3 -3
  651. package/node_modules/@deepseek-ai/dsh-skill-filesystem/package.json +7 -7
  652. package/node_modules/@deepseek-ai/dsh-spill/package.json +7 -7
  653. package/node_modules/@deepseek-ai/dsh-spill-local/package.json +6 -6
  654. package/node_modules/@deepseek-ai/dsh-spill-policy/package.json +18 -18
  655. package/node_modules/@deepseek-ai/dsh-storage/package.json +1 -1
  656. package/node_modules/@deepseek-ai/dsh-storage-domain/package.json +5 -5
  657. package/node_modules/@deepseek-ai/dsh-storage-json/package.json +3 -3
  658. package/node_modules/@deepseek-ai/dsh-subagent/README.i18n.yaml +2 -2
  659. package/node_modules/@deepseek-ai/dsh-subagent/README.md +12 -0
  660. package/node_modules/@deepseek-ai/dsh-subagent/README.zh.md +12 -0
  661. package/node_modules/@deepseek-ai/dsh-subagent/lib/index.js +116 -50
  662. package/node_modules/@deepseek-ai/dsh-subagent/lib/typert.host.js +11 -4
  663. package/node_modules/@deepseek-ai/dsh-subagent/lib/typert.remote-client.js +3 -3
  664. package/node_modules/@deepseek-ai/dsh-subagent/lib/types/continuation-activation.js +41 -4
  665. package/node_modules/@deepseek-ai/dsh-subagent/lib/types/continuation.js +2 -2
  666. package/node_modules/@deepseek-ai/dsh-subagent/lib/types/control.js +1 -0
  667. package/node_modules/@deepseek-ai/dsh-subagent/lib/types/index.js +29 -3
  668. package/node_modules/@deepseek-ai/dsh-subagent/package.json +54 -48
  669. package/node_modules/@deepseek-ai/dsh-subagent-acp/package.json +20 -20
  670. package/node_modules/@deepseek-ai/dsh-subagent-fork-in-process/package.json +14 -14
  671. package/node_modules/@deepseek-ai/dsh-subagent-in-process-driver/package.json +22 -22
  672. package/node_modules/@deepseek-ai/dsh-subagent-spawn-in-process/package.json +16 -16
  673. package/node_modules/@deepseek-ai/dsh-subprocess/README.i18n.yaml +2 -2
  674. package/node_modules/@deepseek-ai/dsh-subprocess/README.md +2 -0
  675. package/node_modules/@deepseek-ai/dsh-subprocess/README.zh.md +2 -0
  676. package/node_modules/@deepseek-ai/dsh-subprocess/package.json +4 -4
  677. package/node_modules/@deepseek-ai/dsh-subprocess-local/README.i18n.yaml +2 -2
  678. package/node_modules/@deepseek-ai/dsh-subprocess-local/README.md +7 -0
  679. package/node_modules/@deepseek-ai/dsh-subprocess-local/README.zh.md +7 -0
  680. package/node_modules/@deepseek-ai/dsh-subprocess-local/lib/index.js +267 -20
  681. package/node_modules/@deepseek-ai/dsh-subprocess-local/lib/runner-launch-DGV26RBf.js +1525 -0
  682. package/node_modules/@deepseek-ai/dsh-subprocess-local/lib/runner.js +1 -1
  683. package/node_modules/@deepseek-ai/dsh-subprocess-local/package.json +7 -7
  684. package/node_modules/@deepseek-ai/dsh-system-prompt/package.json +7 -7
  685. package/node_modules/@deepseek-ai/dsh-terminal/package.json +6 -6
  686. package/node_modules/@deepseek-ai/dsh-terminal-bash/package.json +17 -17
  687. package/node_modules/@deepseek-ai/dsh-time-context/package.json +20 -20
  688. package/node_modules/@deepseek-ai/dsh-timeout/package.json +1 -1
  689. package/node_modules/@deepseek-ai/dsh-tmux-context/lib/index.js +2 -1
  690. package/node_modules/@deepseek-ai/dsh-tmux-context/package.json +11 -11
  691. package/node_modules/@deepseek-ai/dsh-token-meter/package.json +14 -14
  692. package/node_modules/@deepseek-ai/dsh-tool-ask-user/package.json +9 -9
  693. package/node_modules/@deepseek-ai/dsh-tool-bash/README.i18n.yaml +2 -2
  694. package/node_modules/@deepseek-ai/dsh-tool-bash/README.md +1 -1
  695. package/node_modules/@deepseek-ai/dsh-tool-bash/README.zh.md +1 -1
  696. package/node_modules/@deepseek-ai/dsh-tool-bash/package.json +29 -29
  697. package/node_modules/@deepseek-ai/dsh-tool-bash-persistent/package.json +17 -17
  698. package/node_modules/@deepseek-ai/dsh-tool-call-timeout-policy/package.json +7 -7
  699. package/node_modules/@deepseek-ai/dsh-tool-cordis/README.i18n.yaml +2 -2
  700. package/node_modules/@deepseek-ai/dsh-tool-cordis/README.md +11 -131
  701. package/node_modules/@deepseek-ai/dsh-tool-cordis/README.zh.md +15 -135
  702. package/node_modules/@deepseek-ai/dsh-tool-cordis/lib/index.js +688 -743
  703. package/node_modules/@deepseek-ai/dsh-tool-cordis/package.json +10 -16
  704. package/node_modules/@deepseek-ai/dsh-tool-fs/lib/index.js +10 -6
  705. package/node_modules/@deepseek-ai/dsh-tool-fs/package.json +27 -27
  706. package/node_modules/@deepseek-ai/dsh-tool-fs-search/package.json +20 -20
  707. package/node_modules/@deepseek-ai/dsh-tool-goal/package.json +16 -16
  708. package/node_modules/@deepseek-ai/dsh-tool-jobs/package.json +15 -15
  709. package/node_modules/@deepseek-ai/dsh-tool-present/README.i18n.yaml +1 -1
  710. package/node_modules/@deepseek-ai/dsh-tool-present/package.json +18 -18
  711. package/node_modules/@deepseek-ai/dsh-tool-pwsh/package.json +28 -28
  712. package/node_modules/@deepseek-ai/dsh-tool-pwsh-persistent/package.json +18 -18
  713. package/node_modules/@deepseek-ai/dsh-tool-ralph/package.json +19 -19
  714. package/node_modules/@deepseek-ai/dsh-tool-skill/package.json +12 -12
  715. package/node_modules/@deepseek-ai/dsh-tool-str-replace-editor/package.json +17 -17
  716. package/node_modules/@deepseek-ai/dsh-tool-subagent/README.i18n.yaml +2 -2
  717. package/node_modules/@deepseek-ai/dsh-tool-subagent/README.md +2 -2
  718. package/node_modules/@deepseek-ai/dsh-tool-subagent/README.zh.md +2 -2
  719. package/node_modules/@deepseek-ai/dsh-tool-subagent/lib/index.js +3 -3
  720. package/node_modules/@deepseek-ai/dsh-tool-subagent/package.json +28 -28
  721. package/node_modules/@deepseek-ai/dsh-tool-subagent-control/package.json +19 -19
  722. package/node_modules/@deepseek-ai/dsh-tool-todo/package.json +15 -15
  723. package/node_modules/@deepseek-ai/dsh-tool-web/package.json +18 -18
  724. package/node_modules/@deepseek-ai/dsh-tool-workflow/package.json +18 -18
  725. package/node_modules/@deepseek-ai/dsh-tools/package.json +24 -24
  726. package/node_modules/@deepseek-ai/dsh-tui-app/README.i18n.yaml +2 -2
  727. package/node_modules/@deepseek-ai/dsh-tui-app/README.md +30 -18
  728. package/node_modules/@deepseek-ai/dsh-tui-app/README.zh.md +30 -18
  729. package/node_modules/@deepseek-ai/dsh-tui-app/cordis.patch.yml +9 -0
  730. package/node_modules/@deepseek-ai/dsh-tui-app/lib/index.js +1510 -181
  731. package/node_modules/@deepseek-ai/dsh-tui-app/package.json +68 -62
  732. package/node_modules/@deepseek-ai/dsh-typert-loader/package.json +4 -4
  733. package/node_modules/@deepseek-ai/dsh-typert-protocol/README.i18n.yaml +2 -2
  734. package/node_modules/@deepseek-ai/dsh-typert-protocol/README.md +3 -1
  735. package/node_modules/@deepseek-ai/dsh-typert-protocol/README.zh.md +3 -1
  736. package/node_modules/@deepseek-ai/dsh-typert-protocol/lib/index.js +32 -1
  737. package/node_modules/@deepseek-ai/dsh-typert-protocol/lib/types/index.js +1 -0
  738. package/node_modules/@deepseek-ai/dsh-typert-protocol/lib/types/owned-value.js +32 -0
  739. package/node_modules/@deepseek-ai/dsh-typert-protocol/package.json +1 -1
  740. package/node_modules/@deepseek-ai/dsh-typert-registry/package.json +2 -2
  741. package/node_modules/@deepseek-ai/dsh-user-approval/package.json +15 -15
  742. package/node_modules/@deepseek-ai/dsh-user-questions/README.i18n.yaml +2 -2
  743. package/node_modules/@deepseek-ai/dsh-user-questions/README.md +2 -0
  744. package/node_modules/@deepseek-ai/dsh-user-questions/README.zh.md +2 -0
  745. package/node_modules/@deepseek-ai/dsh-user-questions/lib/index.js +2 -1
  746. package/node_modules/@deepseek-ai/dsh-user-questions/lib/types/plan-review.js +5 -1
  747. package/node_modules/@deepseek-ai/dsh-user-questions/package.json +7 -7
  748. package/node_modules/@deepseek-ai/dsh-util-crypto/package.json +1 -1
  749. package/node_modules/@deepseek-ai/dsh-util-time/package.json +1 -1
  750. package/node_modules/@deepseek-ai/dsh-util-values/README.i18n.yaml +2 -2
  751. package/node_modules/@deepseek-ai/dsh-util-values/README.md +6 -3
  752. package/node_modules/@deepseek-ai/dsh-util-values/README.zh.md +6 -3
  753. package/node_modules/@deepseek-ai/dsh-util-values/lib/index.js +62 -1
  754. package/node_modules/@deepseek-ai/dsh-util-values/package.json +1 -1
  755. package/node_modules/@deepseek-ai/dsh-util-workspace-path/package.json +1 -1
  756. package/node_modules/@deepseek-ai/dsh-web/package.json +3 -3
  757. package/node_modules/@deepseek-ai/dsh-web-app/README.i18n.yaml +2 -2
  758. package/node_modules/@deepseek-ai/dsh-web-app/README.md +1 -1
  759. package/node_modules/@deepseek-ai/dsh-web-app/README.zh.md +1 -1
  760. package/node_modules/@deepseek-ai/dsh-web-app/cordis.patch.yml +35 -12
  761. package/node_modules/@deepseek-ai/dsh-web-app/package.json +98 -86
  762. package/node_modules/@deepseek-ai/dsh-web-fetch-http/package.json +7 -7
  763. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-8VXBH-f-.js +127 -0
  764. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-lP1BfJ4l.css +1 -0
  765. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +2 -2
  766. package/node_modules/@deepseek-ai/dsh-web-frontend/package.json +9 -6
  767. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/package.json +15 -15
  768. package/node_modules/@deepseek-ai/dsh-web-search-exa/package.json +6 -6
  769. package/node_modules/@deepseek-ai/dsh-web-search-perplexity/package.json +6 -6
  770. package/node_modules/@deepseek-ai/dsh-webhook/package.json +21 -21
  771. package/node_modules/@deepseek-ai/dsh-webhook-github/package.json +10 -10
  772. package/node_modules/@deepseek-ai/dsh-win32-process/README.i18n.yaml +2 -2
  773. package/node_modules/@deepseek-ai/dsh-win32-process/README.md +2 -0
  774. package/node_modules/@deepseek-ai/dsh-win32-process/README.zh.md +2 -0
  775. package/node_modules/@deepseek-ai/dsh-win32-process/lib/index.js +7 -4
  776. package/node_modules/@deepseek-ai/dsh-win32-process/package.json +2 -2
  777. package/node_modules/@deepseek-ai/dsh-workflow/package.json +11 -11
  778. package/node_modules/@deepseek-ai/dsh-workflow-ptc/package.json +33 -33
  779. package/node_modules/@deepseek-ai/dsh-workspace/package.json +14 -14
  780. package/node_modules/@deepseek-ai/dsh-workspace-changes/README.i18n.yaml +6 -0
  781. package/node_modules/@deepseek-ai/dsh-workspace-changes/README.md +108 -0
  782. package/node_modules/@deepseek-ai/dsh-workspace-changes/README.zh.md +108 -0
  783. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/index.js +1106 -0
  784. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/capture.js +107 -0
  785. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/compare.js +56 -0
  786. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/git.js +224 -0
  787. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/index.js +139 -0
  788. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/numstat.js +45 -0
  789. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/paths.js +106 -0
  790. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/recorder.js +333 -0
  791. package/node_modules/@deepseek-ai/dsh-workspace-changes/lib/types/types.js +2 -0
  792. package/node_modules/@deepseek-ai/dsh-workspace-changes/package.json +56 -0
  793. package/node_modules/@deepseek-ai/libreoffice-kit/LICENSE +373 -0
  794. package/node_modules/@deepseek-ai/libreoffice-kit/NOTICE +26 -0
  795. package/node_modules/@deepseek-ai/libreoffice-kit/README.md +73 -0
  796. package/node_modules/@deepseek-ai/libreoffice-kit/README.zh.md +73 -0
  797. package/node_modules/@deepseek-ai/libreoffice-kit/lib/index.js +924 -0
  798. package/node_modules/@deepseek-ai/libreoffice-kit/lib/worker.js +800 -0
  799. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/CHANGELOG.md +115 -0
  800. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/LICENSE +21 -0
  801. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/README.md +558 -0
  802. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/esm/browser.js +2665 -0
  803. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/esm/index.mjs +2679 -0
  804. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/lib/browser.cjs +2688 -0
  805. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/lib/index.cjs +2668 -0
  806. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/lib/node-worker.cjs +32 -0
  807. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/lib/node.cjs +2700 -0
  808. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/lib/worker.cjs +20 -0
  809. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/package.json +127 -0
  810. package/node_modules/@deepseek-ai/libreoffice-kit/node_modules/fflate/umd/index.js +1 -0
  811. package/node_modules/@deepseek-ai/libreoffice-kit/package.json +39 -0
  812. package/node_modules/@sec-ant/readable-stream/LICENSE +21 -0
  813. package/node_modules/@sec-ant/readable-stream/README.md +230 -0
  814. package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +5 -0
  815. package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +5 -0
  816. package/node_modules/@sec-ant/readable-stream/dist/index/index.js +8 -0
  817. package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +3 -0
  818. package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +2 -0
  819. package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +4 -0
  820. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
  821. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
  822. package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
  823. package/node_modules/@sec-ant/readable-stream/package.json +73 -0
  824. package/node_modules/@sindresorhus/merge-streams/index.js +265 -0
  825. package/node_modules/@sindresorhus/merge-streams/license +9 -0
  826. package/node_modules/@sindresorhus/merge-streams/package.json +46 -0
  827. package/node_modules/@sindresorhus/merge-streams/readme.md +53 -0
  828. package/node_modules/@swc/helpers/LICENSE +201 -0
  829. package/node_modules/@swc/helpers/_/_apply_decorated_descriptor/package.json +4 -0
  830. package/node_modules/@swc/helpers/_/_apply_decs_2203_r/package.json +4 -0
  831. package/node_modules/@swc/helpers/_/_apply_decs_2311/package.json +4 -0
  832. package/node_modules/@swc/helpers/_/_array_like_to_array/package.json +4 -0
  833. package/node_modules/@swc/helpers/_/_array_with_holes/package.json +4 -0
  834. package/node_modules/@swc/helpers/_/_array_without_holes/package.json +4 -0
  835. package/node_modules/@swc/helpers/_/_assert_this_initialized/package.json +4 -0
  836. package/node_modules/@swc/helpers/_/_async_generator/package.json +4 -0
  837. package/node_modules/@swc/helpers/_/_async_generator_delegate/package.json +4 -0
  838. package/node_modules/@swc/helpers/_/_async_iterator/package.json +4 -0
  839. package/node_modules/@swc/helpers/_/_async_to_generator/package.json +4 -0
  840. package/node_modules/@swc/helpers/_/_await_async_generator/package.json +4 -0
  841. package/node_modules/@swc/helpers/_/_await_value/package.json +4 -0
  842. package/node_modules/@swc/helpers/_/_call_super/package.json +4 -0
  843. package/node_modules/@swc/helpers/_/_check_private_redeclaration/package.json +4 -0
  844. package/node_modules/@swc/helpers/_/_class_apply_descriptor_destructure/package.json +4 -0
  845. package/node_modules/@swc/helpers/_/_class_apply_descriptor_get/package.json +4 -0
  846. package/node_modules/@swc/helpers/_/_class_apply_descriptor_set/package.json +4 -0
  847. package/node_modules/@swc/helpers/_/_class_apply_descriptor_update/package.json +4 -0
  848. package/node_modules/@swc/helpers/_/_class_call_check/package.json +4 -0
  849. package/node_modules/@swc/helpers/_/_class_check_private_static_access/package.json +4 -0
  850. package/node_modules/@swc/helpers/_/_class_check_private_static_field_descriptor/package.json +4 -0
  851. package/node_modules/@swc/helpers/_/_class_extract_field_descriptor/package.json +4 -0
  852. package/node_modules/@swc/helpers/_/_class_name_tdz_error/package.json +4 -0
  853. package/node_modules/@swc/helpers/_/_class_private_field_destructure/package.json +4 -0
  854. package/node_modules/@swc/helpers/_/_class_private_field_get/package.json +4 -0
  855. package/node_modules/@swc/helpers/_/_class_private_field_init/package.json +4 -0
  856. package/node_modules/@swc/helpers/_/_class_private_field_loose_base/package.json +4 -0
  857. package/node_modules/@swc/helpers/_/_class_private_field_loose_key/package.json +4 -0
  858. package/node_modules/@swc/helpers/_/_class_private_field_set/package.json +4 -0
  859. package/node_modules/@swc/helpers/_/_class_private_field_update/package.json +4 -0
  860. package/node_modules/@swc/helpers/_/_class_private_method_get/package.json +4 -0
  861. package/node_modules/@swc/helpers/_/_class_private_method_init/package.json +4 -0
  862. package/node_modules/@swc/helpers/_/_class_private_method_set/package.json +4 -0
  863. package/node_modules/@swc/helpers/_/_class_static_private_field_destructure/package.json +4 -0
  864. package/node_modules/@swc/helpers/_/_class_static_private_field_spec_get/package.json +4 -0
  865. package/node_modules/@swc/helpers/_/_class_static_private_field_spec_set/package.json +4 -0
  866. package/node_modules/@swc/helpers/_/_class_static_private_field_update/package.json +4 -0
  867. package/node_modules/@swc/helpers/_/_class_static_private_method_get/package.json +4 -0
  868. package/node_modules/@swc/helpers/_/_construct/package.json +4 -0
  869. package/node_modules/@swc/helpers/_/_create_class/package.json +4 -0
  870. package/node_modules/@swc/helpers/_/_create_for_of_iterator_helper_loose/package.json +4 -0
  871. package/node_modules/@swc/helpers/_/_create_super/package.json +4 -0
  872. package/node_modules/@swc/helpers/_/_decorate/package.json +4 -0
  873. package/node_modules/@swc/helpers/_/_defaults/package.json +4 -0
  874. package/node_modules/@swc/helpers/_/_define_enumerable_properties/package.json +4 -0
  875. package/node_modules/@swc/helpers/_/_define_property/package.json +4 -0
  876. package/node_modules/@swc/helpers/_/_dispose/package.json +4 -0
  877. package/node_modules/@swc/helpers/_/_export_star/package.json +4 -0
  878. package/node_modules/@swc/helpers/_/_extends/package.json +4 -0
  879. package/node_modules/@swc/helpers/_/_get/package.json +4 -0
  880. package/node_modules/@swc/helpers/_/_get_prototype_of/package.json +4 -0
  881. package/node_modules/@swc/helpers/_/_identity/package.json +4 -0
  882. package/node_modules/@swc/helpers/_/_inherits/package.json +4 -0
  883. package/node_modules/@swc/helpers/_/_inherits_loose/package.json +4 -0
  884. package/node_modules/@swc/helpers/_/_initializer_define_property/package.json +4 -0
  885. package/node_modules/@swc/helpers/_/_initializer_warning_helper/package.json +4 -0
  886. package/node_modules/@swc/helpers/_/_instanceof/package.json +4 -0
  887. package/node_modules/@swc/helpers/_/_interop_require_default/package.json +4 -0
  888. package/node_modules/@swc/helpers/_/_interop_require_wildcard/package.json +4 -0
  889. package/node_modules/@swc/helpers/_/_is_native_function/package.json +4 -0
  890. package/node_modules/@swc/helpers/_/_is_native_reflect_construct/package.json +4 -0
  891. package/node_modules/@swc/helpers/_/_iterable_to_array/package.json +4 -0
  892. package/node_modules/@swc/helpers/_/_iterable_to_array_limit/package.json +4 -0
  893. package/node_modules/@swc/helpers/_/_iterable_to_array_limit_loose/package.json +4 -0
  894. package/node_modules/@swc/helpers/_/_jsx/package.json +4 -0
  895. package/node_modules/@swc/helpers/_/_new_arrow_check/package.json +4 -0
  896. package/node_modules/@swc/helpers/_/_non_iterable_rest/package.json +4 -0
  897. package/node_modules/@swc/helpers/_/_non_iterable_spread/package.json +4 -0
  898. package/node_modules/@swc/helpers/_/_object_destructuring_empty/package.json +4 -0
  899. package/node_modules/@swc/helpers/_/_object_spread/package.json +4 -0
  900. package/node_modules/@swc/helpers/_/_object_spread_props/package.json +4 -0
  901. package/node_modules/@swc/helpers/_/_object_without_properties/package.json +4 -0
  902. package/node_modules/@swc/helpers/_/_object_without_properties_loose/package.json +4 -0
  903. package/node_modules/@swc/helpers/_/_overload_yield/package.json +4 -0
  904. package/node_modules/@swc/helpers/_/_possible_constructor_return/package.json +4 -0
  905. package/node_modules/@swc/helpers/_/_read_only_error/package.json +4 -0
  906. package/node_modules/@swc/helpers/_/_set/package.json +4 -0
  907. package/node_modules/@swc/helpers/_/_set_prototype_of/package.json +4 -0
  908. package/node_modules/@swc/helpers/_/_skip_first_generator_next/package.json +4 -0
  909. package/node_modules/@swc/helpers/_/_sliced_to_array/package.json +4 -0
  910. package/node_modules/@swc/helpers/_/_sliced_to_array_loose/package.json +4 -0
  911. package/node_modules/@swc/helpers/_/_super_prop_base/package.json +4 -0
  912. package/node_modules/@swc/helpers/_/_tagged_template_literal/package.json +4 -0
  913. package/node_modules/@swc/helpers/_/_tagged_template_literal_loose/package.json +4 -0
  914. package/node_modules/@swc/helpers/_/_throw/package.json +4 -0
  915. package/node_modules/@swc/helpers/_/_to_array/package.json +4 -0
  916. package/node_modules/@swc/helpers/_/_to_consumable_array/package.json +4 -0
  917. package/node_modules/@swc/helpers/_/_to_primitive/package.json +4 -0
  918. package/node_modules/@swc/helpers/_/_to_property_key/package.json +4 -0
  919. package/node_modules/@swc/helpers/_/_ts_add_disposable_resource/package.json +4 -0
  920. package/node_modules/@swc/helpers/_/_ts_decorate/package.json +4 -0
  921. package/node_modules/@swc/helpers/_/_ts_dispose_resources/package.json +4 -0
  922. package/node_modules/@swc/helpers/_/_ts_generator/package.json +4 -0
  923. package/node_modules/@swc/helpers/_/_ts_metadata/package.json +4 -0
  924. package/node_modules/@swc/helpers/_/_ts_param/package.json +4 -0
  925. package/node_modules/@swc/helpers/_/_ts_rewrite_relative_import_extension/package.json +4 -0
  926. package/node_modules/@swc/helpers/_/_ts_values/package.json +4 -0
  927. package/node_modules/@swc/helpers/_/_type_of/package.json +4 -0
  928. package/node_modules/@swc/helpers/_/_unsupported_iterable_to_array/package.json +4 -0
  929. package/node_modules/@swc/helpers/_/_update/package.json +4 -0
  930. package/node_modules/@swc/helpers/_/_using/package.json +4 -0
  931. package/node_modules/@swc/helpers/_/_using_ctx/package.json +4 -0
  932. package/node_modules/@swc/helpers/_/_wrap_async_generator/package.json +4 -0
  933. package/node_modules/@swc/helpers/_/_wrap_native_super/package.json +4 -0
  934. package/node_modules/@swc/helpers/_/_wrap_reg_exp/package.json +4 -0
  935. package/node_modules/@swc/helpers/_/_write_only_error/package.json +4 -0
  936. package/node_modules/@swc/helpers/_/index/package.json +4 -0
  937. package/node_modules/@swc/helpers/cjs/_apply_decorated_descriptor.cjs +35 -0
  938. package/node_modules/@swc/helpers/cjs/_apply_decs_2203_r.cjs +574 -0
  939. package/node_modules/@swc/helpers/cjs/_apply_decs_2311.cjs +346 -0
  940. package/node_modules/@swc/helpers/cjs/_array_like_to_array.cjs +10 -0
  941. package/node_modules/@swc/helpers/cjs/_array_with_holes.cjs +6 -0
  942. package/node_modules/@swc/helpers/cjs/_array_without_holes.cjs +8 -0
  943. package/node_modules/@swc/helpers/cjs/_assert_this_initialized.cjs +8 -0
  944. package/node_modules/@swc/helpers/cjs/_async_generator.cjs +76 -0
  945. package/node_modules/@swc/helpers/cjs/_async_generator_delegate.cjs +53 -0
  946. package/node_modules/@swc/helpers/cjs/_async_iterator.cjs +46 -0
  947. package/node_modules/@swc/helpers/cjs/_async_to_generator.cjs +33 -0
  948. package/node_modules/@swc/helpers/cjs/_await_async_generator.cjs +8 -0
  949. package/node_modules/@swc/helpers/cjs/_await_value.cjs +6 -0
  950. package/node_modules/@swc/helpers/cjs/_call_super.cjs +19 -0
  951. package/node_modules/@swc/helpers/cjs/_check_private_redeclaration.cjs +8 -0
  952. package/node_modules/@swc/helpers/cjs/_class_apply_descriptor_destructure.cjs +25 -0
  953. package/node_modules/@swc/helpers/cjs/_class_apply_descriptor_get.cjs +8 -0
  954. package/node_modules/@swc/helpers/cjs/_class_apply_descriptor_set.cjs +15 -0
  955. package/node_modules/@swc/helpers/cjs/_class_apply_descriptor_update.cjs +30 -0
  956. package/node_modules/@swc/helpers/cjs/_class_call_check.cjs +6 -0
  957. package/node_modules/@swc/helpers/cjs/_class_check_private_static_access.cjs +6 -0
  958. package/node_modules/@swc/helpers/cjs/_class_check_private_static_field_descriptor.cjs +8 -0
  959. package/node_modules/@swc/helpers/cjs/_class_extract_field_descriptor.cjs +8 -0
  960. package/node_modules/@swc/helpers/cjs/_class_name_tdz_error.cjs +6 -0
  961. package/node_modules/@swc/helpers/cjs/_class_private_field_destructure.cjs +10 -0
  962. package/node_modules/@swc/helpers/cjs/_class_private_field_get.cjs +10 -0
  963. package/node_modules/@swc/helpers/cjs/_class_private_field_init.cjs +9 -0
  964. package/node_modules/@swc/helpers/cjs/_class_private_field_loose_base.cjs +10 -0
  965. package/node_modules/@swc/helpers/cjs/_class_private_field_loose_key.cjs +8 -0
  966. package/node_modules/@swc/helpers/cjs/_class_private_field_set.cjs +11 -0
  967. package/node_modules/@swc/helpers/cjs/_class_private_field_update.cjs +10 -0
  968. package/node_modules/@swc/helpers/cjs/_class_private_method_get.cjs +8 -0
  969. package/node_modules/@swc/helpers/cjs/_class_private_method_init.cjs +9 -0
  970. package/node_modules/@swc/helpers/cjs/_class_private_method_set.cjs +6 -0
  971. package/node_modules/@swc/helpers/cjs/_class_static_private_field_destructure.cjs +13 -0
  972. package/node_modules/@swc/helpers/cjs/_class_static_private_field_spec_get.cjs +13 -0
  973. package/node_modules/@swc/helpers/cjs/_class_static_private_field_spec_set.cjs +14 -0
  974. package/node_modules/@swc/helpers/cjs/_class_static_private_field_update.cjs +13 -0
  975. package/node_modules/@swc/helpers/cjs/_class_static_private_method_get.cjs +10 -0
  976. package/node_modules/@swc/helpers/cjs/_construct.cjs +22 -0
  977. package/node_modules/@swc/helpers/cjs/_create_class.cjs +20 -0
  978. package/node_modules/@swc/helpers/cjs/_create_for_of_iterator_helper_loose.cjs +24 -0
  979. package/node_modules/@swc/helpers/cjs/_create_super.cjs +23 -0
  980. package/node_modules/@swc/helpers/cjs/_decorate.cjs +270 -0
  981. package/node_modules/@swc/helpers/cjs/_defaults.cjs +15 -0
  982. package/node_modules/@swc/helpers/cjs/_define_enumerable_properties.cjs +26 -0
  983. package/node_modules/@swc/helpers/cjs/_define_property.cjs +10 -0
  984. package/node_modules/@swc/helpers/cjs/_dispose.cjs +43 -0
  985. package/node_modules/@swc/helpers/cjs/_export_star.cjs +17 -0
  986. package/node_modules/@swc/helpers/cjs/_extends.cjs +15 -0
  987. package/node_modules/@swc/helpers/cjs/_get.cjs +23 -0
  988. package/node_modules/@swc/helpers/cjs/_get_prototype_of.cjs +10 -0
  989. package/node_modules/@swc/helpers/cjs/_identity.cjs +7 -0
  990. package/node_modules/@swc/helpers/cjs/_inherits.cjs +14 -0
  991. package/node_modules/@swc/helpers/cjs/_inherits_loose.cjs +8 -0
  992. package/node_modules/@swc/helpers/cjs/_initializer_define_property.cjs +13 -0
  993. package/node_modules/@swc/helpers/cjs/_initializer_warning_helper.cjs +11 -0
  994. package/node_modules/@swc/helpers/cjs/_instanceof.cjs +10 -0
  995. package/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
  996. package/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
  997. package/node_modules/@swc/helpers/cjs/_is_native_function.cjs +6 -0
  998. package/node_modules/@swc/helpers/cjs/_is_native_reflect_construct.cjs +18 -0
  999. package/node_modules/@swc/helpers/cjs/_iterable_to_array.cjs +8 -0
  1000. package/node_modules/@swc/helpers/cjs/_iterable_to_array_limit.cjs +31 -0
  1001. package/node_modules/@swc/helpers/cjs/_iterable_to_array_limit_loose.cjs +17 -0
  1002. package/node_modules/@swc/helpers/cjs/_jsx.cjs +28 -0
  1003. package/node_modules/@swc/helpers/cjs/_new_arrow_check.cjs +6 -0
  1004. package/node_modules/@swc/helpers/cjs/_non_iterable_rest.cjs +6 -0
  1005. package/node_modules/@swc/helpers/cjs/_non_iterable_spread.cjs +6 -0
  1006. package/node_modules/@swc/helpers/cjs/_object_destructuring_empty.cjs +8 -0
  1007. package/node_modules/@swc/helpers/cjs/_object_spread.cjs +25 -0
  1008. package/node_modules/@swc/helpers/cjs/_object_spread_props.cjs +30 -0
  1009. package/node_modules/@swc/helpers/cjs/_object_without_properties.cjs +35 -0
  1010. package/node_modules/@swc/helpers/cjs/_object_without_properties_loose.cjs +16 -0
  1011. package/node_modules/@swc/helpers/cjs/_overload_yield.cjs +8 -0
  1012. package/node_modules/@swc/helpers/cjs/_possible_constructor_return.cjs +11 -0
  1013. package/node_modules/@swc/helpers/cjs/_read_only_error.cjs +6 -0
  1014. package/node_modules/@swc/helpers/cjs/_set.cjs +44 -0
  1015. package/node_modules/@swc/helpers/cjs/_set_prototype_of.cjs +12 -0
  1016. package/node_modules/@swc/helpers/cjs/_skip_first_generator_next.cjs +11 -0
  1017. package/node_modules/@swc/helpers/cjs/_sliced_to_array.cjs +11 -0
  1018. package/node_modules/@swc/helpers/cjs/_sliced_to_array_loose.cjs +11 -0
  1019. package/node_modules/@swc/helpers/cjs/_super_prop_base.cjs +13 -0
  1020. package/node_modules/@swc/helpers/cjs/_tagged_template_literal.cjs +8 -0
  1021. package/node_modules/@swc/helpers/cjs/_tagged_template_literal_loose.cjs +10 -0
  1022. package/node_modules/@swc/helpers/cjs/_throw.cjs +6 -0
  1023. package/node_modules/@swc/helpers/cjs/_to_array.cjs +11 -0
  1024. package/node_modules/@swc/helpers/cjs/_to_consumable_array.cjs +11 -0
  1025. package/node_modules/@swc/helpers/cjs/_to_primitive.cjs +18 -0
  1026. package/node_modules/@swc/helpers/cjs/_to_property_key.cjs +11 -0
  1027. package/node_modules/@swc/helpers/cjs/_ts_add_disposable_resource.cjs +3 -0
  1028. package/node_modules/@swc/helpers/cjs/_ts_decorate.cjs +3 -0
  1029. package/node_modules/@swc/helpers/cjs/_ts_dispose_resources.cjs +3 -0
  1030. package/node_modules/@swc/helpers/cjs/_ts_generator.cjs +31 -0
  1031. package/node_modules/@swc/helpers/cjs/_ts_metadata.cjs +3 -0
  1032. package/node_modules/@swc/helpers/cjs/_ts_param.cjs +3 -0
  1033. package/node_modules/@swc/helpers/cjs/_ts_rewrite_relative_import_extension.cjs +3 -0
  1034. package/node_modules/@swc/helpers/cjs/_ts_values.cjs +3 -0
  1035. package/node_modules/@swc/helpers/cjs/_type_of.cjs +8 -0
  1036. package/node_modules/@swc/helpers/cjs/_unsupported_iterable_to_array.cjs +15 -0
  1037. package/node_modules/@swc/helpers/cjs/_update.cjs +16 -0
  1038. package/node_modules/@swc/helpers/cjs/_using.cjs +24 -0
  1039. package/node_modules/@swc/helpers/cjs/_using_ctx.cjs +75 -0
  1040. package/node_modules/@swc/helpers/cjs/_wrap_async_generator.cjs +10 -0
  1041. package/node_modules/@swc/helpers/cjs/_wrap_native_super.cjs +28 -0
  1042. package/node_modules/@swc/helpers/cjs/_wrap_reg_exp.cjs +84 -0
  1043. package/node_modules/@swc/helpers/cjs/_write_only_error.cjs +6 -0
  1044. package/node_modules/@swc/helpers/cjs/index.cjs +439 -0
  1045. package/node_modules/@swc/helpers/esm/_apply_decorated_descriptor.js +33 -0
  1046. package/node_modules/@swc/helpers/esm/_apply_decs_2203_r.js +572 -0
  1047. package/node_modules/@swc/helpers/esm/_apply_decs_2311.js +344 -0
  1048. package/node_modules/@swc/helpers/esm/_array_like_to_array.js +8 -0
  1049. package/node_modules/@swc/helpers/esm/_array_with_holes.js +4 -0
  1050. package/node_modules/@swc/helpers/esm/_array_without_holes.js +6 -0
  1051. package/node_modules/@swc/helpers/esm/_assert_this_initialized.js +6 -0
  1052. package/node_modules/@swc/helpers/esm/_async_generator.js +74 -0
  1053. package/node_modules/@swc/helpers/esm/_async_generator_delegate.js +51 -0
  1054. package/node_modules/@swc/helpers/esm/_async_iterator.js +44 -0
  1055. package/node_modules/@swc/helpers/esm/_async_to_generator.js +31 -0
  1056. package/node_modules/@swc/helpers/esm/_await_async_generator.js +6 -0
  1057. package/node_modules/@swc/helpers/esm/_await_value.js +4 -0
  1058. package/node_modules/@swc/helpers/esm/_call_super.js +17 -0
  1059. package/node_modules/@swc/helpers/esm/_check_private_redeclaration.js +6 -0
  1060. package/node_modules/@swc/helpers/esm/_class_apply_descriptor_destructure.js +23 -0
  1061. package/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js +6 -0
  1062. package/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js +13 -0
  1063. package/node_modules/@swc/helpers/esm/_class_apply_descriptor_update.js +28 -0
  1064. package/node_modules/@swc/helpers/esm/_class_call_check.js +4 -0
  1065. package/node_modules/@swc/helpers/esm/_class_check_private_static_access.js +4 -0
  1066. package/node_modules/@swc/helpers/esm/_class_check_private_static_field_descriptor.js +6 -0
  1067. package/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js +6 -0
  1068. package/node_modules/@swc/helpers/esm/_class_name_tdz_error.js +4 -0
  1069. package/node_modules/@swc/helpers/esm/_class_private_field_destructure.js +8 -0
  1070. package/node_modules/@swc/helpers/esm/_class_private_field_get.js +8 -0
  1071. package/node_modules/@swc/helpers/esm/_class_private_field_init.js +7 -0
  1072. package/node_modules/@swc/helpers/esm/_class_private_field_loose_base.js +8 -0
  1073. package/node_modules/@swc/helpers/esm/_class_private_field_loose_key.js +6 -0
  1074. package/node_modules/@swc/helpers/esm/_class_private_field_set.js +9 -0
  1075. package/node_modules/@swc/helpers/esm/_class_private_field_update.js +8 -0
  1076. package/node_modules/@swc/helpers/esm/_class_private_method_get.js +6 -0
  1077. package/node_modules/@swc/helpers/esm/_class_private_method_init.js +7 -0
  1078. package/node_modules/@swc/helpers/esm/_class_private_method_set.js +4 -0
  1079. package/node_modules/@swc/helpers/esm/_class_static_private_field_destructure.js +11 -0
  1080. package/node_modules/@swc/helpers/esm/_class_static_private_field_spec_get.js +11 -0
  1081. package/node_modules/@swc/helpers/esm/_class_static_private_field_spec_set.js +12 -0
  1082. package/node_modules/@swc/helpers/esm/_class_static_private_field_update.js +11 -0
  1083. package/node_modules/@swc/helpers/esm/_class_static_private_method_get.js +8 -0
  1084. package/node_modules/@swc/helpers/esm/_construct.js +20 -0
  1085. package/node_modules/@swc/helpers/esm/_create_class.js +18 -0
  1086. package/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js +22 -0
  1087. package/node_modules/@swc/helpers/esm/_create_super.js +21 -0
  1088. package/node_modules/@swc/helpers/esm/_decorate.js +268 -0
  1089. package/node_modules/@swc/helpers/esm/_defaults.js +13 -0
  1090. package/node_modules/@swc/helpers/esm/_define_enumerable_properties.js +24 -0
  1091. package/node_modules/@swc/helpers/esm/_define_property.js +8 -0
  1092. package/node_modules/@swc/helpers/esm/_dispose.js +41 -0
  1093. package/node_modules/@swc/helpers/esm/_export_star.js +15 -0
  1094. package/node_modules/@swc/helpers/esm/_extends.js +13 -0
  1095. package/node_modules/@swc/helpers/esm/_get.js +21 -0
  1096. package/node_modules/@swc/helpers/esm/_get_prototype_of.js +8 -0
  1097. package/node_modules/@swc/helpers/esm/_identity.js +5 -0
  1098. package/node_modules/@swc/helpers/esm/_inherits.js +12 -0
  1099. package/node_modules/@swc/helpers/esm/_inherits_loose.js +6 -0
  1100. package/node_modules/@swc/helpers/esm/_initializer_define_property.js +11 -0
  1101. package/node_modules/@swc/helpers/esm/_initializer_warning_helper.js +9 -0
  1102. package/node_modules/@swc/helpers/esm/_instanceof.js +8 -0
  1103. package/node_modules/@swc/helpers/esm/_interop_require_default.js +4 -0
  1104. package/node_modules/@swc/helpers/esm/_interop_require_wildcard.js +36 -0
  1105. package/node_modules/@swc/helpers/esm/_is_native_function.js +4 -0
  1106. package/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js +16 -0
  1107. package/node_modules/@swc/helpers/esm/_iterable_to_array.js +6 -0
  1108. package/node_modules/@swc/helpers/esm/_iterable_to_array_limit.js +29 -0
  1109. package/node_modules/@swc/helpers/esm/_iterable_to_array_limit_loose.js +15 -0
  1110. package/node_modules/@swc/helpers/esm/_jsx.js +26 -0
  1111. package/node_modules/@swc/helpers/esm/_new_arrow_check.js +4 -0
  1112. package/node_modules/@swc/helpers/esm/_non_iterable_rest.js +4 -0
  1113. package/node_modules/@swc/helpers/esm/_non_iterable_spread.js +4 -0
  1114. package/node_modules/@swc/helpers/esm/_object_destructuring_empty.js +6 -0
  1115. package/node_modules/@swc/helpers/esm/_object_spread.js +23 -0
  1116. package/node_modules/@swc/helpers/esm/_object_spread_props.js +28 -0
  1117. package/node_modules/@swc/helpers/esm/_object_without_properties.js +33 -0
  1118. package/node_modules/@swc/helpers/esm/_object_without_properties_loose.js +14 -0
  1119. package/node_modules/@swc/helpers/esm/_overload_yield.js +6 -0
  1120. package/node_modules/@swc/helpers/esm/_possible_constructor_return.js +9 -0
  1121. package/node_modules/@swc/helpers/esm/_read_only_error.js +4 -0
  1122. package/node_modules/@swc/helpers/esm/_set.js +42 -0
  1123. package/node_modules/@swc/helpers/esm/_set_prototype_of.js +10 -0
  1124. package/node_modules/@swc/helpers/esm/_skip_first_generator_next.js +9 -0
  1125. package/node_modules/@swc/helpers/esm/_sliced_to_array.js +9 -0
  1126. package/node_modules/@swc/helpers/esm/_sliced_to_array_loose.js +9 -0
  1127. package/node_modules/@swc/helpers/esm/_super_prop_base.js +11 -0
  1128. package/node_modules/@swc/helpers/esm/_tagged_template_literal.js +6 -0
  1129. package/node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js +8 -0
  1130. package/node_modules/@swc/helpers/esm/_throw.js +4 -0
  1131. package/node_modules/@swc/helpers/esm/_to_array.js +9 -0
  1132. package/node_modules/@swc/helpers/esm/_to_consumable_array.js +9 -0
  1133. package/node_modules/@swc/helpers/esm/_to_primitive.js +16 -0
  1134. package/node_modules/@swc/helpers/esm/_to_property_key.js +9 -0
  1135. package/node_modules/@swc/helpers/esm/_ts_add_disposable_resource.js +1 -0
  1136. package/node_modules/@swc/helpers/esm/_ts_decorate.js +1 -0
  1137. package/node_modules/@swc/helpers/esm/_ts_dispose_resources.js +1 -0
  1138. package/node_modules/@swc/helpers/esm/_ts_generator.js +29 -0
  1139. package/node_modules/@swc/helpers/esm/_ts_metadata.js +1 -0
  1140. package/node_modules/@swc/helpers/esm/_ts_param.js +1 -0
  1141. package/node_modules/@swc/helpers/esm/_ts_rewrite_relative_import_extension.js +1 -0
  1142. package/node_modules/@swc/helpers/esm/_ts_values.js +1 -0
  1143. package/node_modules/@swc/helpers/esm/_type_of.js +6 -0
  1144. package/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js +13 -0
  1145. package/node_modules/@swc/helpers/esm/_update.js +14 -0
  1146. package/node_modules/@swc/helpers/esm/_using.js +22 -0
  1147. package/node_modules/@swc/helpers/esm/_using_ctx.js +73 -0
  1148. package/node_modules/@swc/helpers/esm/_wrap_async_generator.js +8 -0
  1149. package/node_modules/@swc/helpers/esm/_wrap_native_super.js +26 -0
  1150. package/node_modules/@swc/helpers/esm/_wrap_reg_exp.js +82 -0
  1151. package/node_modules/@swc/helpers/esm/_write_only_error.js +4 -0
  1152. package/node_modules/@swc/helpers/esm/index.js +110 -0
  1153. package/node_modules/@swc/helpers/package.json +702 -0
  1154. package/node_modules/@swc/helpers/scripts/ast_grep.js +218 -0
  1155. package/node_modules/@swc/helpers/scripts/build.js +133 -0
  1156. package/node_modules/@swc/helpers/scripts/errors.js +1 -0
  1157. package/node_modules/@swc/helpers/scripts/utils.js +3 -0
  1158. package/node_modules/@swc/helpers/src/_apply_decorated_descriptor.mjs +1 -0
  1159. package/node_modules/@swc/helpers/src/_apply_decs_2203_r.mjs +1 -0
  1160. package/node_modules/@swc/helpers/src/_apply_decs_2311.mjs +1 -0
  1161. package/node_modules/@swc/helpers/src/_array_like_to_array.mjs +1 -0
  1162. package/node_modules/@swc/helpers/src/_array_with_holes.mjs +1 -0
  1163. package/node_modules/@swc/helpers/src/_array_without_holes.mjs +1 -0
  1164. package/node_modules/@swc/helpers/src/_assert_this_initialized.mjs +1 -0
  1165. package/node_modules/@swc/helpers/src/_async_generator.mjs +1 -0
  1166. package/node_modules/@swc/helpers/src/_async_generator_delegate.mjs +1 -0
  1167. package/node_modules/@swc/helpers/src/_async_iterator.mjs +1 -0
  1168. package/node_modules/@swc/helpers/src/_async_to_generator.mjs +1 -0
  1169. package/node_modules/@swc/helpers/src/_await_async_generator.mjs +1 -0
  1170. package/node_modules/@swc/helpers/src/_await_value.mjs +1 -0
  1171. package/node_modules/@swc/helpers/src/_call_super.mjs +1 -0
  1172. package/node_modules/@swc/helpers/src/_check_private_redeclaration.mjs +1 -0
  1173. package/node_modules/@swc/helpers/src/_class_apply_descriptor_destructure.mjs +1 -0
  1174. package/node_modules/@swc/helpers/src/_class_apply_descriptor_get.mjs +1 -0
  1175. package/node_modules/@swc/helpers/src/_class_apply_descriptor_set.mjs +1 -0
  1176. package/node_modules/@swc/helpers/src/_class_apply_descriptor_update.mjs +1 -0
  1177. package/node_modules/@swc/helpers/src/_class_call_check.mjs +1 -0
  1178. package/node_modules/@swc/helpers/src/_class_check_private_static_access.mjs +1 -0
  1179. package/node_modules/@swc/helpers/src/_class_check_private_static_field_descriptor.mjs +1 -0
  1180. package/node_modules/@swc/helpers/src/_class_extract_field_descriptor.mjs +1 -0
  1181. package/node_modules/@swc/helpers/src/_class_name_tdz_error.mjs +1 -0
  1182. package/node_modules/@swc/helpers/src/_class_private_field_destructure.mjs +1 -0
  1183. package/node_modules/@swc/helpers/src/_class_private_field_get.mjs +1 -0
  1184. package/node_modules/@swc/helpers/src/_class_private_field_init.mjs +1 -0
  1185. package/node_modules/@swc/helpers/src/_class_private_field_loose_base.mjs +1 -0
  1186. package/node_modules/@swc/helpers/src/_class_private_field_loose_key.mjs +1 -0
  1187. package/node_modules/@swc/helpers/src/_class_private_field_set.mjs +1 -0
  1188. package/node_modules/@swc/helpers/src/_class_private_field_update.mjs +1 -0
  1189. package/node_modules/@swc/helpers/src/_class_private_method_get.mjs +1 -0
  1190. package/node_modules/@swc/helpers/src/_class_private_method_init.mjs +1 -0
  1191. package/node_modules/@swc/helpers/src/_class_private_method_set.mjs +1 -0
  1192. package/node_modules/@swc/helpers/src/_class_static_private_field_destructure.mjs +1 -0
  1193. package/node_modules/@swc/helpers/src/_class_static_private_field_spec_get.mjs +1 -0
  1194. package/node_modules/@swc/helpers/src/_class_static_private_field_spec_set.mjs +1 -0
  1195. package/node_modules/@swc/helpers/src/_class_static_private_field_update.mjs +1 -0
  1196. package/node_modules/@swc/helpers/src/_class_static_private_method_get.mjs +1 -0
  1197. package/node_modules/@swc/helpers/src/_construct.mjs +1 -0
  1198. package/node_modules/@swc/helpers/src/_create_class.mjs +1 -0
  1199. package/node_modules/@swc/helpers/src/_create_for_of_iterator_helper_loose.mjs +1 -0
  1200. package/node_modules/@swc/helpers/src/_create_super.mjs +1 -0
  1201. package/node_modules/@swc/helpers/src/_decorate.mjs +1 -0
  1202. package/node_modules/@swc/helpers/src/_defaults.mjs +1 -0
  1203. package/node_modules/@swc/helpers/src/_define_enumerable_properties.mjs +1 -0
  1204. package/node_modules/@swc/helpers/src/_define_property.mjs +1 -0
  1205. package/node_modules/@swc/helpers/src/_dispose.mjs +1 -0
  1206. package/node_modules/@swc/helpers/src/_export_star.mjs +1 -0
  1207. package/node_modules/@swc/helpers/src/_extends.mjs +1 -0
  1208. package/node_modules/@swc/helpers/src/_get.mjs +1 -0
  1209. package/node_modules/@swc/helpers/src/_get_prototype_of.mjs +1 -0
  1210. package/node_modules/@swc/helpers/src/_identity.mjs +1 -0
  1211. package/node_modules/@swc/helpers/src/_inherits.mjs +1 -0
  1212. package/node_modules/@swc/helpers/src/_inherits_loose.mjs +1 -0
  1213. package/node_modules/@swc/helpers/src/_initializer_define_property.mjs +1 -0
  1214. package/node_modules/@swc/helpers/src/_initializer_warning_helper.mjs +1 -0
  1215. package/node_modules/@swc/helpers/src/_instanceof.mjs +1 -0
  1216. package/node_modules/@swc/helpers/src/_interop_require_default.mjs +1 -0
  1217. package/node_modules/@swc/helpers/src/_interop_require_wildcard.mjs +1 -0
  1218. package/node_modules/@swc/helpers/src/_is_native_function.mjs +1 -0
  1219. package/node_modules/@swc/helpers/src/_is_native_reflect_construct.mjs +1 -0
  1220. package/node_modules/@swc/helpers/src/_iterable_to_array.mjs +1 -0
  1221. package/node_modules/@swc/helpers/src/_iterable_to_array_limit.mjs +1 -0
  1222. package/node_modules/@swc/helpers/src/_iterable_to_array_limit_loose.mjs +1 -0
  1223. package/node_modules/@swc/helpers/src/_jsx.mjs +1 -0
  1224. package/node_modules/@swc/helpers/src/_new_arrow_check.mjs +1 -0
  1225. package/node_modules/@swc/helpers/src/_non_iterable_rest.mjs +1 -0
  1226. package/node_modules/@swc/helpers/src/_non_iterable_spread.mjs +1 -0
  1227. package/node_modules/@swc/helpers/src/_object_destructuring_empty.mjs +1 -0
  1228. package/node_modules/@swc/helpers/src/_object_spread.mjs +1 -0
  1229. package/node_modules/@swc/helpers/src/_object_spread_props.mjs +1 -0
  1230. package/node_modules/@swc/helpers/src/_object_without_properties.mjs +1 -0
  1231. package/node_modules/@swc/helpers/src/_object_without_properties_loose.mjs +1 -0
  1232. package/node_modules/@swc/helpers/src/_overload_yield.mjs +1 -0
  1233. package/node_modules/@swc/helpers/src/_possible_constructor_return.mjs +1 -0
  1234. package/node_modules/@swc/helpers/src/_read_only_error.mjs +1 -0
  1235. package/node_modules/@swc/helpers/src/_set.mjs +1 -0
  1236. package/node_modules/@swc/helpers/src/_set_prototype_of.mjs +1 -0
  1237. package/node_modules/@swc/helpers/src/_skip_first_generator_next.mjs +1 -0
  1238. package/node_modules/@swc/helpers/src/_sliced_to_array.mjs +1 -0
  1239. package/node_modules/@swc/helpers/src/_sliced_to_array_loose.mjs +1 -0
  1240. package/node_modules/@swc/helpers/src/_super_prop_base.mjs +1 -0
  1241. package/node_modules/@swc/helpers/src/_tagged_template_literal.mjs +1 -0
  1242. package/node_modules/@swc/helpers/src/_tagged_template_literal_loose.mjs +1 -0
  1243. package/node_modules/@swc/helpers/src/_throw.mjs +1 -0
  1244. package/node_modules/@swc/helpers/src/_to_array.mjs +1 -0
  1245. package/node_modules/@swc/helpers/src/_to_consumable_array.mjs +1 -0
  1246. package/node_modules/@swc/helpers/src/_to_primitive.mjs +1 -0
  1247. package/node_modules/@swc/helpers/src/_to_property_key.mjs +1 -0
  1248. package/node_modules/@swc/helpers/src/_ts_add_disposable_resource.mjs +1 -0
  1249. package/node_modules/@swc/helpers/src/_ts_decorate.mjs +1 -0
  1250. package/node_modules/@swc/helpers/src/_ts_dispose_resources.mjs +1 -0
  1251. package/node_modules/@swc/helpers/src/_ts_generator.mjs +1 -0
  1252. package/node_modules/@swc/helpers/src/_ts_metadata.mjs +1 -0
  1253. package/node_modules/@swc/helpers/src/_ts_param.mjs +1 -0
  1254. package/node_modules/@swc/helpers/src/_ts_rewrite_relative_import_extension.mjs +1 -0
  1255. package/node_modules/@swc/helpers/src/_ts_values.mjs +1 -0
  1256. package/node_modules/@swc/helpers/src/_type_of.mjs +1 -0
  1257. package/node_modules/@swc/helpers/src/_unsupported_iterable_to_array.mjs +1 -0
  1258. package/node_modules/@swc/helpers/src/_update.mjs +1 -0
  1259. package/node_modules/@swc/helpers/src/_using.mjs +1 -0
  1260. package/node_modules/@swc/helpers/src/_using_ctx.mjs +1 -0
  1261. package/node_modules/@swc/helpers/src/_wrap_async_generator.mjs +1 -0
  1262. package/node_modules/@swc/helpers/src/_wrap_native_super.mjs +1 -0
  1263. package/node_modules/@swc/helpers/src/_wrap_reg_exp.mjs +1 -0
  1264. package/node_modules/@swc/helpers/src/_write_only_error.mjs +1 -0
  1265. package/node_modules/@swc/helpers/src/index.mjs +1 -0
  1266. package/node_modules/brotli/build/encode.js +57 -0
  1267. package/node_modules/brotli/build/mem.js +1 -0
  1268. package/node_modules/brotli/compress.js +43 -0
  1269. package/node_modules/brotli/dec/bit_reader.js +124 -0
  1270. package/node_modules/brotli/dec/context.js +250 -0
  1271. package/node_modules/brotli/dec/decode.js +938 -0
  1272. package/node_modules/brotli/dec/dictionary-browser.js +14 -0
  1273. package/node_modules/brotli/dec/dictionary-data.js +9469 -0
  1274. package/node_modules/brotli/dec/dictionary.bin.js +1 -0
  1275. package/node_modules/brotli/dec/dictionary.js +36 -0
  1276. package/node_modules/brotli/dec/huffman.js +123 -0
  1277. package/node_modules/brotli/dec/prefix.js +60 -0
  1278. package/node_modules/brotli/dec/streams.js +34 -0
  1279. package/node_modules/brotli/dec/transform.js +247 -0
  1280. package/node_modules/brotli/decompress.js +1 -0
  1281. package/node_modules/brotli/enc/pre.js +7 -0
  1282. package/node_modules/brotli/index.js +2 -0
  1283. package/node_modules/brotli/package.json +31 -0
  1284. package/node_modules/brotli/readme.md +61 -0
  1285. package/node_modules/clone/.npmignore +4 -0
  1286. package/node_modules/clone/LICENSE +18 -0
  1287. package/node_modules/clone/README.md +194 -0
  1288. package/node_modules/clone/clone.iml +10 -0
  1289. package/node_modules/clone/clone.js +257 -0
  1290. package/node_modules/clone/package.json +53 -0
  1291. package/node_modules/dfa/README.md +83 -0
  1292. package/node_modules/dfa/compile.js +1834 -0
  1293. package/node_modules/dfa/index.js +91 -0
  1294. package/node_modules/dfa/package.json +38 -0
  1295. package/node_modules/execa/index.js +25 -0
  1296. package/node_modules/execa/lib/arguments/command-file.js +201 -0
  1297. package/node_modules/execa/lib/arguments/command.js +20 -0
  1298. package/node_modules/execa/lib/arguments/cwd.js +39 -0
  1299. package/node_modules/execa/lib/arguments/encoding-option.js +50 -0
  1300. package/node_modules/execa/lib/arguments/escape.js +88 -0
  1301. package/node_modules/execa/lib/arguments/fd-options.js +109 -0
  1302. package/node_modules/execa/lib/arguments/file-url.js +25 -0
  1303. package/node_modules/execa/lib/arguments/options.js +105 -0
  1304. package/node_modules/execa/lib/arguments/shell.js +11 -0
  1305. package/node_modules/execa/lib/arguments/specific.js +112 -0
  1306. package/node_modules/execa/lib/convert/add.js +19 -0
  1307. package/node_modules/execa/lib/convert/concurrent.js +33 -0
  1308. package/node_modules/execa/lib/convert/duplex.js +69 -0
  1309. package/node_modules/execa/lib/convert/iterable.js +34 -0
  1310. package/node_modules/execa/lib/convert/readable.js +129 -0
  1311. package/node_modules/execa/lib/convert/shared.js +46 -0
  1312. package/node_modules/execa/lib/convert/web.js +7 -0
  1313. package/node_modules/execa/lib/convert/writable.js +111 -0
  1314. package/node_modules/execa/lib/io/contents.js +116 -0
  1315. package/node_modules/execa/lib/io/input-sync.js +44 -0
  1316. package/node_modules/execa/lib/io/iterate.js +110 -0
  1317. package/node_modules/execa/lib/io/max-buffer.js +89 -0
  1318. package/node_modules/execa/lib/io/output-async.js +82 -0
  1319. package/node_modules/execa/lib/io/output-sync.js +136 -0
  1320. package/node_modules/execa/lib/io/pipeline.js +48 -0
  1321. package/node_modules/execa/lib/io/strip-newline.js +12 -0
  1322. package/node_modules/execa/lib/ipc/array.js +4 -0
  1323. package/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
  1324. package/node_modules/execa/lib/ipc/forward.js +56 -0
  1325. package/node_modules/execa/lib/ipc/get-each.js +113 -0
  1326. package/node_modules/execa/lib/ipc/get-one.js +92 -0
  1327. package/node_modules/execa/lib/ipc/graceful.js +72 -0
  1328. package/node_modules/execa/lib/ipc/incoming.js +79 -0
  1329. package/node_modules/execa/lib/ipc/ipc-input.js +50 -0
  1330. package/node_modules/execa/lib/ipc/methods.js +50 -0
  1331. package/node_modules/execa/lib/ipc/outgoing.js +53 -0
  1332. package/node_modules/execa/lib/ipc/reference.js +48 -0
  1333. package/node_modules/execa/lib/ipc/send.js +91 -0
  1334. package/node_modules/execa/lib/ipc/strict.js +113 -0
  1335. package/node_modules/execa/lib/ipc/validation.js +111 -0
  1336. package/node_modules/execa/lib/methods/bind.js +23 -0
  1337. package/node_modules/execa/lib/methods/command.js +27 -0
  1338. package/node_modules/execa/lib/methods/create.js +63 -0
  1339. package/node_modules/execa/lib/methods/main-async.js +235 -0
  1340. package/node_modules/execa/lib/methods/main-sync.js +167 -0
  1341. package/node_modules/execa/lib/methods/node.js +63 -0
  1342. package/node_modules/execa/lib/methods/parameters.js +32 -0
  1343. package/node_modules/execa/lib/methods/promise.js +2 -0
  1344. package/node_modules/execa/lib/methods/script.js +22 -0
  1345. package/node_modules/execa/lib/methods/template.js +153 -0
  1346. package/node_modules/execa/lib/pipe/abort.js +20 -0
  1347. package/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
  1348. package/node_modules/execa/lib/pipe/sequence.js +24 -0
  1349. package/node_modules/execa/lib/pipe/setup.js +230 -0
  1350. package/node_modules/execa/lib/pipe/streaming.js +51 -0
  1351. package/node_modules/execa/lib/pipe/throw.js +58 -0
  1352. package/node_modules/execa/lib/resolve/all-async.js +46 -0
  1353. package/node_modules/execa/lib/resolve/all-sync.js +33 -0
  1354. package/node_modules/execa/lib/resolve/exit-async.js +54 -0
  1355. package/node_modules/execa/lib/resolve/exit-sync.js +25 -0
  1356. package/node_modules/execa/lib/resolve/stdio.js +47 -0
  1357. package/node_modules/execa/lib/resolve/wait-stream.js +97 -0
  1358. package/node_modules/execa/lib/resolve/wait-subprocess.js +150 -0
  1359. package/node_modules/execa/lib/return/duration.js +8 -0
  1360. package/node_modules/execa/lib/return/early-error.js +77 -0
  1361. package/node_modules/execa/lib/return/final-error.js +44 -0
  1362. package/node_modules/execa/lib/return/message.js +157 -0
  1363. package/node_modules/execa/lib/return/reject.js +13 -0
  1364. package/node_modules/execa/lib/return/result.js +186 -0
  1365. package/node_modules/execa/lib/stdio/direction.js +89 -0
  1366. package/node_modules/execa/lib/stdio/duplicate.js +119 -0
  1367. package/node_modules/execa/lib/stdio/handle-async.js +52 -0
  1368. package/node_modules/execa/lib/stdio/handle-sync.js +68 -0
  1369. package/node_modules/execa/lib/stdio/handle.js +243 -0
  1370. package/node_modules/execa/lib/stdio/input-option.js +54 -0
  1371. package/node_modules/execa/lib/stdio/native.js +106 -0
  1372. package/node_modules/execa/lib/stdio/stdio-option.js +95 -0
  1373. package/node_modules/execa/lib/stdio/type.js +181 -0
  1374. package/node_modules/execa/lib/terminate/cancel.js +20 -0
  1375. package/node_modules/execa/lib/terminate/cleanup.js +16 -0
  1376. package/node_modules/execa/lib/terminate/graceful.js +73 -0
  1377. package/node_modules/execa/lib/terminate/kill-descendants.js +79 -0
  1378. package/node_modules/execa/lib/terminate/kill.js +93 -0
  1379. package/node_modules/execa/lib/terminate/signal.js +70 -0
  1380. package/node_modules/execa/lib/terminate/timeout.js +21 -0
  1381. package/node_modules/execa/lib/transform/encoding-transform.js +51 -0
  1382. package/node_modules/execa/lib/transform/generator.js +107 -0
  1383. package/node_modules/execa/lib/transform/normalize.js +106 -0
  1384. package/node_modules/execa/lib/transform/object-mode.js +41 -0
  1385. package/node_modules/execa/lib/transform/run-async.js +60 -0
  1386. package/node_modules/execa/lib/transform/run-sync.js +50 -0
  1387. package/node_modules/execa/lib/transform/split.js +112 -0
  1388. package/node_modules/execa/lib/transform/validate.js +43 -0
  1389. package/node_modules/execa/lib/utils/abort-signal.js +8 -0
  1390. package/node_modules/execa/lib/utils/deferred.js +7 -0
  1391. package/node_modules/execa/lib/utils/max-listeners.js +14 -0
  1392. package/node_modules/execa/lib/utils/standard-stream.js +6 -0
  1393. package/node_modules/execa/lib/utils/uint-array.js +69 -0
  1394. package/node_modules/execa/lib/verbose/complete.js +24 -0
  1395. package/node_modules/execa/lib/verbose/custom.js +26 -0
  1396. package/node_modules/execa/lib/verbose/default.js +54 -0
  1397. package/node_modules/execa/lib/verbose/error.js +13 -0
  1398. package/node_modules/execa/lib/verbose/info.js +39 -0
  1399. package/node_modules/execa/lib/verbose/ipc.js +15 -0
  1400. package/node_modules/execa/lib/verbose/log.js +54 -0
  1401. package/node_modules/execa/lib/verbose/output.js +60 -0
  1402. package/node_modules/execa/lib/verbose/start.js +15 -0
  1403. package/node_modules/execa/lib/verbose/values.js +33 -0
  1404. package/node_modules/execa/license +9 -0
  1405. package/node_modules/execa/package.json +124 -0
  1406. package/node_modules/execa/readme.md +461 -0
  1407. package/node_modules/fast-deep-equal/LICENSE +21 -0
  1408. package/node_modules/fast-deep-equal/README.md +96 -0
  1409. package/node_modules/fast-deep-equal/es6/index.js +72 -0
  1410. package/node_modules/fast-deep-equal/es6/react.js +79 -0
  1411. package/node_modules/fast-deep-equal/index.js +46 -0
  1412. package/node_modules/fast-deep-equal/package.json +51 -0
  1413. package/node_modules/fast-deep-equal/react.js +53 -0
  1414. package/node_modules/figures/index.js +292 -0
  1415. package/node_modules/figures/license +9 -0
  1416. package/node_modules/figures/package.json +46 -0
  1417. package/node_modules/figures/readme.md +337 -0
  1418. package/node_modules/fontkit/README.md +266 -0
  1419. package/node_modules/fontkit/dist/browser-module.mjs +13316 -0
  1420. package/node_modules/fontkit/dist/browser.cjs +13333 -0
  1421. package/node_modules/fontkit/dist/main.cjs +13355 -0
  1422. package/node_modules/fontkit/dist/module.mjs +13337 -0
  1423. package/node_modules/fontkit/package.json +87 -0
  1424. package/node_modules/fontkit/src/CmapProcessor.js +286 -0
  1425. package/node_modules/fontkit/src/DFont.js +117 -0
  1426. package/node_modules/fontkit/src/TTFFont.js +554 -0
  1427. package/node_modules/fontkit/src/TrueTypeCollection.js +67 -0
  1428. package/node_modules/fontkit/src/WOFF2Font.js +216 -0
  1429. package/node_modules/fontkit/src/WOFFFont.js +36 -0
  1430. package/node_modules/fontkit/src/aat/AATFeatureMap.js +543 -0
  1431. package/node_modules/fontkit/src/aat/AATLayoutEngine.js +49 -0
  1432. package/node_modules/fontkit/src/aat/AATLookupTable.js +125 -0
  1433. package/node_modules/fontkit/src/aat/AATMorxProcessor.js +430 -0
  1434. package/node_modules/fontkit/src/aat/AATStateMachine.js +96 -0
  1435. package/node_modules/fontkit/src/base.js +29 -0
  1436. package/node_modules/fontkit/src/cff/CFFCharsets.js +99 -0
  1437. package/node_modules/fontkit/src/cff/CFFDict.js +167 -0
  1438. package/node_modules/fontkit/src/cff/CFFEncodings.js +48 -0
  1439. package/node_modules/fontkit/src/cff/CFFFont.js +159 -0
  1440. package/node_modules/fontkit/src/cff/CFFIndex.js +150 -0
  1441. package/node_modules/fontkit/src/cff/CFFOperand.js +134 -0
  1442. package/node_modules/fontkit/src/cff/CFFPointer.js +50 -0
  1443. package/node_modules/fontkit/src/cff/CFFPrivateDict.js +39 -0
  1444. package/node_modules/fontkit/src/cff/CFFStandardStrings.js +71 -0
  1445. package/node_modules/fontkit/src/cff/CFFTop.js +237 -0
  1446. package/node_modules/fontkit/src/decorators.js +36 -0
  1447. package/node_modules/fontkit/src/encodings.js +219 -0
  1448. package/node_modules/fontkit/src/fs.js +17 -0
  1449. package/node_modules/fontkit/src/glyph/BBox.js +72 -0
  1450. package/node_modules/fontkit/src/glyph/CFFGlyph.js +604 -0
  1451. package/node_modules/fontkit/src/glyph/COLRGlyph.js +90 -0
  1452. package/node_modules/fontkit/src/glyph/Glyph.js +212 -0
  1453. package/node_modules/fontkit/src/glyph/GlyphVariationProcessor.js +486 -0
  1454. package/node_modules/fontkit/src/glyph/Path.js +244 -0
  1455. package/node_modules/fontkit/src/glyph/SBIXGlyph.js +54 -0
  1456. package/node_modules/fontkit/src/glyph/StandardNames.js +27 -0
  1457. package/node_modules/fontkit/src/glyph/TTFGlyph.js +393 -0
  1458. package/node_modules/fontkit/src/glyph/TTFGlyphEncoder.js +158 -0
  1459. package/node_modules/fontkit/src/glyph/WOFF2Glyph.js +17 -0
  1460. package/node_modules/fontkit/src/index.js +15 -0
  1461. package/node_modules/fontkit/src/layout/GlyphPosition.js +30 -0
  1462. package/node_modules/fontkit/src/layout/GlyphRun.js +108 -0
  1463. package/node_modules/fontkit/src/layout/KernProcessor.js +94 -0
  1464. package/node_modules/fontkit/src/layout/LayoutEngine.js +189 -0
  1465. package/node_modules/fontkit/src/layout/Script.js +231 -0
  1466. package/node_modules/fontkit/src/layout/UnicodeLayoutEngine.js +250 -0
  1467. package/node_modules/fontkit/src/node.js +17 -0
  1468. package/node_modules/fontkit/src/opentype/GPOSProcessor.js +353 -0
  1469. package/node_modules/fontkit/src/opentype/GSUBProcessor.js +192 -0
  1470. package/node_modules/fontkit/src/opentype/GlyphInfo.js +57 -0
  1471. package/node_modules/fontkit/src/opentype/GlyphIterator.js +70 -0
  1472. package/node_modules/fontkit/src/opentype/OTLayoutEngine.js +113 -0
  1473. package/node_modules/fontkit/src/opentype/OTProcessor.js +438 -0
  1474. package/node_modules/fontkit/src/opentype/ShapingPlan.js +118 -0
  1475. package/node_modules/fontkit/src/opentype/shapers/ArabicShaper.js +123 -0
  1476. package/node_modules/fontkit/src/opentype/shapers/DefaultShaper.js +72 -0
  1477. package/node_modules/fontkit/src/opentype/shapers/HangulShaper.js +285 -0
  1478. package/node_modules/fontkit/src/opentype/shapers/IndicShaper.js +911 -0
  1479. package/node_modules/fontkit/src/opentype/shapers/UniversalShaper.js +185 -0
  1480. package/node_modules/fontkit/src/opentype/shapers/data.trie +0 -0
  1481. package/node_modules/fontkit/src/opentype/shapers/gen-indic.js +208 -0
  1482. package/node_modules/fontkit/src/opentype/shapers/gen-use.js +287 -0
  1483. package/node_modules/fontkit/src/opentype/shapers/generate-data.js +33 -0
  1484. package/node_modules/fontkit/src/opentype/shapers/index.js +102 -0
  1485. package/node_modules/fontkit/src/opentype/shapers/indic-data.js +175 -0
  1486. package/node_modules/fontkit/src/opentype/shapers/indic.json +1 -0
  1487. package/node_modules/fontkit/src/opentype/shapers/indic.machine +31 -0
  1488. package/node_modules/fontkit/src/opentype/shapers/indic.trie +0 -0
  1489. package/node_modules/fontkit/src/opentype/shapers/use.json +1 -0
  1490. package/node_modules/fontkit/src/opentype/shapers/use.machine +44 -0
  1491. package/node_modules/fontkit/src/opentype/shapers/use.trie +0 -0
  1492. package/node_modules/fontkit/src/subset/CFFSubset.js +171 -0
  1493. package/node_modules/fontkit/src/subset/Subset.js +27 -0
  1494. package/node_modules/fontkit/src/subset/TTFSubset.js +131 -0
  1495. package/node_modules/fontkit/src/tables/BASE.js +78 -0
  1496. package/node_modules/fontkit/src/tables/COLR.js +25 -0
  1497. package/node_modules/fontkit/src/tables/CPAL.js +24 -0
  1498. package/node_modules/fontkit/src/tables/DSIG.js +21 -0
  1499. package/node_modules/fontkit/src/tables/EBDT.js +91 -0
  1500. package/node_modules/fontkit/src/tables/EBLC.js +80 -0
  1501. package/node_modules/fontkit/src/tables/GDEF.js +57 -0
  1502. package/node_modules/fontkit/src/tables/GPOS.js +209 -0
  1503. package/node_modules/fontkit/src/tables/GSUB.js +84 -0
  1504. package/node_modules/fontkit/src/tables/HVAR.js +44 -0
  1505. package/node_modules/fontkit/src/tables/JSTF.js +43 -0
  1506. package/node_modules/fontkit/src/tables/LTSH.js +10 -0
  1507. package/node_modules/fontkit/src/tables/OS2.js +84 -0
  1508. package/node_modules/fontkit/src/tables/PCLT.js +21 -0
  1509. package/node_modules/fontkit/src/tables/VDMX.js +33 -0
  1510. package/node_modules/fontkit/src/tables/VORG.js +14 -0
  1511. package/node_modules/fontkit/src/tables/WOFF2Directory.js +74 -0
  1512. package/node_modules/fontkit/src/tables/WOFFDirectory.js +38 -0
  1513. package/node_modules/fontkit/src/tables/aat.js +157 -0
  1514. package/node_modules/fontkit/src/tables/avar.js +19 -0
  1515. package/node_modules/fontkit/src/tables/bsln.js +31 -0
  1516. package/node_modules/fontkit/src/tables/cmap.js +127 -0
  1517. package/node_modules/fontkit/src/tables/cvt.js +6 -0
  1518. package/node_modules/fontkit/src/tables/directory.js +58 -0
  1519. package/node_modules/fontkit/src/tables/feat.js +28 -0
  1520. package/node_modules/fontkit/src/tables/fpgm.js +8 -0
  1521. package/node_modules/fontkit/src/tables/fvar.js +31 -0
  1522. package/node_modules/fontkit/src/tables/gasp.js +15 -0
  1523. package/node_modules/fontkit/src/tables/glyf.js +4 -0
  1524. package/node_modules/fontkit/src/tables/gvar.js +27 -0
  1525. package/node_modules/fontkit/src/tables/hdmx.js +15 -0
  1526. package/node_modules/fontkit/src/tables/head.js +25 -0
  1527. package/node_modules/fontkit/src/tables/hhea.js +19 -0
  1528. package/node_modules/fontkit/src/tables/hmtx.js +11 -0
  1529. package/node_modules/fontkit/src/tables/index.js +117 -0
  1530. package/node_modules/fontkit/src/tables/just.js +81 -0
  1531. package/node_modules/fontkit/src/tables/kern.js +91 -0
  1532. package/node_modules/fontkit/src/tables/loca.js +30 -0
  1533. package/node_modules/fontkit/src/tables/maxp.js +20 -0
  1534. package/node_modules/fontkit/src/tables/morx.js +79 -0
  1535. package/node_modules/fontkit/src/tables/name.js +130 -0
  1536. package/node_modules/fontkit/src/tables/opbd.js +15 -0
  1537. package/node_modules/fontkit/src/tables/opentype.js +217 -0
  1538. package/node_modules/fontkit/src/tables/post.js +34 -0
  1539. package/node_modules/fontkit/src/tables/prep.js +6 -0
  1540. package/node_modules/fontkit/src/tables/sbix.js +17 -0
  1541. package/node_modules/fontkit/src/tables/variations.js +81 -0
  1542. package/node_modules/fontkit/src/tables/vhea.js +19 -0
  1543. package/node_modules/fontkit/src/tables/vmtx.js +12 -0
  1544. package/node_modules/fontkit/src/utils.js +62 -0
  1545. package/node_modules/get-stream/license +9 -0
  1546. package/node_modules/get-stream/package.json +56 -0
  1547. package/node_modules/get-stream/readme.md +303 -0
  1548. package/node_modules/get-stream/source/array-buffer.js +84 -0
  1549. package/node_modules/get-stream/source/array.js +32 -0
  1550. package/node_modules/get-stream/source/buffer.js +19 -0
  1551. package/node_modules/get-stream/source/contents.js +121 -0
  1552. package/node_modules/get-stream/source/exports.js +5 -0
  1553. package/node_modules/get-stream/source/index.js +13 -0
  1554. package/node_modules/get-stream/source/stream.js +65 -0
  1555. package/node_modules/get-stream/source/string.js +41 -0
  1556. package/node_modules/get-stream/source/utils.js +11 -0
  1557. package/node_modules/human-signals/LICENSE +201 -0
  1558. package/node_modules/human-signals/README.md +171 -0
  1559. package/node_modules/human-signals/build/src/core.js +273 -0
  1560. package/node_modules/human-signals/build/src/main.js +70 -0
  1561. package/node_modules/human-signals/build/src/realtime.js +16 -0
  1562. package/node_modules/human-signals/build/src/signals.js +34 -0
  1563. package/node_modules/human-signals/package.json +63 -0
  1564. package/node_modules/is-plain-obj/index.js +8 -0
  1565. package/node_modules/is-plain-obj/license +9 -0
  1566. package/node_modules/is-plain-obj/package.json +38 -0
  1567. package/node_modules/is-plain-obj/readme.md +58 -0
  1568. package/node_modules/is-stream/index.js +37 -0
  1569. package/node_modules/is-stream/license +9 -0
  1570. package/node_modules/is-stream/package.json +45 -0
  1571. package/node_modules/is-stream/readme.md +57 -0
  1572. package/node_modules/is-unicode-supported/index.js +21 -0
  1573. package/node_modules/is-unicode-supported/license +9 -0
  1574. package/node_modules/is-unicode-supported/package.json +44 -0
  1575. package/node_modules/is-unicode-supported/readme.md +35 -0
  1576. package/node_modules/npm-run-path/index.js +55 -0
  1577. package/node_modules/npm-run-path/license +9 -0
  1578. package/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
  1579. package/node_modules/npm-run-path/node_modules/path-key/license +9 -0
  1580. package/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
  1581. package/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
  1582. package/node_modules/npm-run-path/package.json +49 -0
  1583. package/node_modules/npm-run-path/readme.md +104 -0
  1584. package/node_modules/pako/LICENSE +21 -0
  1585. package/node_modules/pako/README.md +176 -0
  1586. package/node_modules/pako/dist/pako.js +6606 -0
  1587. package/node_modules/pako/dist/pako.min.js +3 -0
  1588. package/node_modules/pako/dist/pako_deflate.js +3879 -0
  1589. package/node_modules/pako/dist/pako_deflate.min.js +2 -0
  1590. package/node_modules/pako/dist/pako_inflate.js +3127 -0
  1591. package/node_modules/pako/dist/pako_inflate.min.js +2 -0
  1592. package/node_modules/pako/index.js +14 -0
  1593. package/node_modules/pako/lib/deflate.js +400 -0
  1594. package/node_modules/pako/lib/inflate.js +418 -0
  1595. package/node_modules/pako/lib/utils/common.js +102 -0
  1596. package/node_modules/pako/lib/utils/strings.js +185 -0
  1597. package/node_modules/pako/lib/zlib/adler32.js +32 -0
  1598. package/node_modules/pako/lib/zlib/constants.js +50 -0
  1599. package/node_modules/pako/lib/zlib/crc32.js +41 -0
  1600. package/node_modules/pako/lib/zlib/deflate.js +1855 -0
  1601. package/node_modules/pako/lib/zlib/gzheader.js +40 -0
  1602. package/node_modules/pako/lib/zlib/inffast.js +326 -0
  1603. package/node_modules/pako/lib/zlib/inflate.js +1538 -0
  1604. package/node_modules/pako/lib/zlib/inftrees.js +327 -0
  1605. package/node_modules/pako/lib/zlib/messages.js +13 -0
  1606. package/node_modules/pako/lib/zlib/trees.js +1202 -0
  1607. package/node_modules/pako/lib/zlib/zstream.js +29 -0
  1608. package/node_modules/pako/package.json +40 -0
  1609. package/node_modules/parse-ms/index.js +45 -0
  1610. package/node_modules/parse-ms/license +9 -0
  1611. package/node_modules/parse-ms/package.json +44 -0
  1612. package/node_modules/parse-ms/readme.md +46 -0
  1613. package/node_modules/pretty-ms/index.js +150 -0
  1614. package/node_modules/pretty-ms/license +9 -0
  1615. package/node_modules/pretty-ms/package.json +52 -0
  1616. package/node_modules/pretty-ms/readme.md +198 -0
  1617. package/node_modules/restructure/LICENSE +21 -0
  1618. package/node_modules/restructure/README.md +300 -0
  1619. package/node_modules/restructure/dist/main.cjs +1019 -0
  1620. package/node_modules/restructure/index.js +17 -0
  1621. package/node_modules/restructure/package.json +36 -0
  1622. package/node_modules/restructure/src/Array.js +106 -0
  1623. package/node_modules/restructure/src/Base.js +17 -0
  1624. package/node_modules/restructure/src/Bitfield.js +39 -0
  1625. package/node_modules/restructure/src/Boolean.js +22 -0
  1626. package/node_modules/restructure/src/Buffer.js +38 -0
  1627. package/node_modules/restructure/src/DecodeStream.js +85 -0
  1628. package/node_modules/restructure/src/EncodeStream.js +129 -0
  1629. package/node_modules/restructure/src/Enum.js +27 -0
  1630. package/node_modules/restructure/src/LazyArray.js +74 -0
  1631. package/node_modules/restructure/src/Number.js +77 -0
  1632. package/node_modules/restructure/src/Optional.js +44 -0
  1633. package/node_modules/restructure/src/Pointer.js +167 -0
  1634. package/node_modules/restructure/src/Reserved.js +23 -0
  1635. package/node_modules/restructure/src/String.js +155 -0
  1636. package/node_modules/restructure/src/Struct.js +113 -0
  1637. package/node_modules/restructure/src/VersionedStruct.js +139 -0
  1638. package/node_modules/restructure/src/utils.js +35 -0
  1639. package/node_modules/restructure/test/Array.js +103 -0
  1640. package/node_modules/restructure/test/Bitfield.js +29 -0
  1641. package/node_modules/restructure/test/Boolean.js +39 -0
  1642. package/node_modules/restructure/test/Buffer.js +45 -0
  1643. package/node_modules/restructure/test/DecodeStream.js +101 -0
  1644. package/node_modules/restructure/test/EncodeStream.js +104 -0
  1645. package/node_modules/restructure/test/Enum.js +24 -0
  1646. package/node_modules/restructure/test/LazyArray.js +59 -0
  1647. package/node_modules/restructure/test/Number.js +356 -0
  1648. package/node_modules/restructure/test/Optional.js +100 -0
  1649. package/node_modules/restructure/test/Pointer.js +289 -0
  1650. package/node_modules/restructure/test/Reserved.js +26 -0
  1651. package/node_modules/restructure/test/String.js +151 -0
  1652. package/node_modules/restructure/test/Struct.js +146 -0
  1653. package/node_modules/restructure/test/VersionedStruct.js +495 -0
  1654. package/node_modules/saxes/README.md +323 -0
  1655. package/node_modules/saxes/package.json +55 -0
  1656. package/node_modules/saxes/saxes.js +2053 -0
  1657. package/node_modules/signal-exit/LICENSE.txt +16 -0
  1658. package/node_modules/signal-exit/README.md +74 -0
  1659. package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  1660. package/node_modules/signal-exit/dist/cjs/index.js +279 -0
  1661. package/node_modules/signal-exit/dist/cjs/package.json +3 -0
  1662. package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  1663. package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  1664. package/node_modules/signal-exit/dist/mjs/index.js +275 -0
  1665. package/node_modules/signal-exit/dist/mjs/package.json +3 -0
  1666. package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  1667. package/node_modules/signal-exit/package.json +93 -0
  1668. package/node_modules/strip-final-newline/index.js +26 -0
  1669. package/node_modules/strip-final-newline/license +9 -0
  1670. package/node_modules/strip-final-newline/package.json +46 -0
  1671. package/node_modules/strip-final-newline/readme.md +34 -0
  1672. package/node_modules/tiny-inflate/LICENSE +21 -0
  1673. package/node_modules/tiny-inflate/index.js +375 -0
  1674. package/node_modules/tiny-inflate/package.json +25 -0
  1675. package/node_modules/tiny-inflate/readme.md +31 -0
  1676. package/node_modules/tiny-inflate/test/index.js +75 -0
  1677. package/node_modules/tiny-inflate/test/lorem.txt +199 -0
  1678. package/node_modules/unicode-properties/LICENSE +8 -0
  1679. package/node_modules/unicode-properties/dist/main.cjs +150 -0
  1680. package/node_modules/unicode-properties/dist/module.mjs +127 -0
  1681. package/node_modules/unicode-properties/package.json +44 -0
  1682. package/node_modules/unicode-properties/readme.md +78 -0
  1683. package/node_modules/unicode-trie/LICENSE +8 -0
  1684. package/node_modules/unicode-trie/README.md +77 -0
  1685. package/node_modules/unicode-trie/builder.js +966 -0
  1686. package/node_modules/unicode-trie/index.js +136 -0
  1687. package/node_modules/unicode-trie/package.json +23 -0
  1688. package/node_modules/unicode-trie/swap.js +25 -0
  1689. package/node_modules/unicode-trie/test/mocha.opts +1 -0
  1690. package/node_modules/unicode-trie/test/test.js +243 -0
  1691. package/node_modules/unicorn-magic/default.js +14 -0
  1692. package/node_modules/unicorn-magic/license +9 -0
  1693. package/node_modules/unicorn-magic/node.js +49 -0
  1694. package/node_modules/unicorn-magic/package.json +59 -0
  1695. package/node_modules/unicorn-magic/readme.md +25 -0
  1696. package/node_modules/which-command/cli.js +74 -0
  1697. package/node_modules/which-command/index.js +170 -0
  1698. package/node_modules/which-command/license +9 -0
  1699. package/node_modules/which-command/package.json +46 -0
  1700. package/node_modules/which-command/readme.md +121 -0
  1701. package/node_modules/xmlchars/LICENSE +18 -0
  1702. package/node_modules/xmlchars/README.md +33 -0
  1703. package/node_modules/xmlchars/package.json +34 -0
  1704. package/node_modules/xmlchars/xml/1.0/ed4.js +44 -0
  1705. package/node_modules/xmlchars/xml/1.0/ed5.js +105 -0
  1706. package/node_modules/xmlchars/xml/1.1/ed2.js +145 -0
  1707. package/node_modules/xmlchars/xmlchars.js +191 -0
  1708. package/node_modules/xmlchars/xmlns/1.0/ed3.js +65 -0
  1709. package/node_modules/yoctocolors/base.js +118 -0
  1710. package/node_modules/yoctocolors/index.js +2 -0
  1711. package/node_modules/yoctocolors/license +9 -0
  1712. package/node_modules/yoctocolors/package.json +66 -0
  1713. package/node_modules/yoctocolors/readme.md +163 -0
  1714. package/package.json +337 -246
  1715. package/node_modules/@deepseek-ai/cordis-plugin-hmr/README.md +0 -51
  1716. package/node_modules/@deepseek-ai/cordis-plugin-hmr/lib/index.js +0 -401
  1717. package/node_modules/@deepseek-ai/cordis-plugin-hmr/src/error.ts +0 -36
  1718. package/node_modules/@deepseek-ai/cordis-plugin-hmr/src/index.ts +0 -427
  1719. package/node_modules/@deepseek-ai/dsh/lib/plugin-Bk_PbPwP.js +0 -130
  1720. package/node_modules/@deepseek-ai/dsh/lib/profile-boot-DB8eVKBx.js +0 -2
  1721. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-BRtJ62WN.css +0 -1
  1722. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Ly7KS3xS.js +0 -127
  1723. /package/node_modules/@deepseek-ai/{cordis-plugin-hmr → dsh-hmr}/LICENSE +0 -0
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { CURSOR_MARKER, Container, Editor, Input, Loader, Markdown, ProcessTerminal, SelectList, Text, TuiMainScreen, decodeKittyPrintable, fuzzyFilter, matchesKey, sliceByColumn, stripTerminalSequences, visibleWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
2
+ import { CURSOR_MARKER, Container, Editor, Input, Loader, Markdown, ProcessTerminal, SelectList, Text, TuiMainScreen, decodeKittyPrintable, fuzzyFilter, matchesKey, sliceByColumn, stripTerminalSequences, truncateToWidth, visibleWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
3
3
  import z from "@deepseek-ai/schemastery";
4
4
  import { brandString } from "@deepseek-ai/dsh-brand";
5
5
  import { installModelSelection } from "@deepseek-ai/dsh-agent";
@@ -416,6 +416,20 @@ function toolResultLines(view, content) {
416
416
  }
417
417
  }
418
418
  /**
419
+ * Cut rows to a maximum, naming what was left out on one trailing row. Every
420
+ * surface that shows part of something longer folds it this way - the collapsed
421
+ * tool card, an approval's call detail, the focused-section inspector - and each
422
+ * names the key that shows the rest.
423
+ * @param lines - the full rows.
424
+ * @param keep - rows kept ahead of the marker.
425
+ * @param marker - builds the trailing row from the number of rows left out.
426
+ * @returns the rows to draw; a copy of `lines` when they all fit.
427
+ */
428
+ function foldRows(lines, keep, marker) {
429
+ if (lines.length <= keep) return [...lines];
430
+ return [...lines.slice(0, keep), marker(lines.length - keep)];
431
+ }
432
+ /**
419
433
  * Cut a card body to its collapsed preview.
420
434
  * @param lines - the full body rows.
421
435
  * @param previewLines - rows kept when collapsed.
@@ -423,17 +437,18 @@ function toolResultLines(view, content) {
423
437
  * @returns the rows to draw, with a trailing count of hidden rows when cut.
424
438
  */
425
439
  function previewLines(lines, previewLines, expanded) {
426
- if (expanded || lines.length <= previewLines) return [...lines];
427
- const hidden = lines.length - previewLines;
428
- return [...lines.slice(0, previewLines), `… ${String(hidden)} more line${hidden === 1 ? "" : "s"} (Ctrl+O expands)`];
440
+ if (expanded) return [...lines];
441
+ return foldRows(lines, previewLines, (hidden) => `… ${String(hidden)} more line${hidden === 1 ? "" : "s"} (Ctrl+O expands)`);
429
442
  }
430
443
  //#endregion
431
444
  //#region lib/types/catalog.js
432
445
  /**
433
446
  * Terminal rows for the browser's settings, plugins, subagents, deliverables,
434
- * and turn-outline pages. Each reader resolves its service through `ctx.get`
435
- * and throws an `Error` naming the absent service; the app prints the message.
436
- * `subagentDetail` is the exception: it returns that message as a row.
447
+ * changed-files, and turn-outline pages, and the plugin-management verbs the
448
+ * browser's Plugins page offers. Each reader resolves its service through
449
+ * `ctx.get` and throws an `Error` naming the absent service; the app prints
450
+ * the message. `subagentDetail` is the exception: it returns that message as a
451
+ * row.
437
452
  * @module @deepseek-ai/dsh-tui-app/catalog
438
453
  */
439
454
  var __addDisposableResource$1 = function(env, value, async) {
@@ -784,6 +799,191 @@ function sessionOutline(ctx, session) {
784
799
  if (outline === void 0) throw new Error("the turnOutline projection is not registered in this profile");
785
800
  return outline.flatMap(outlineRows);
786
801
  }
802
+ /** The workspace-changes service, or a printable error naming its absence. */
803
+ function requireWorkspaceChanges(ctx) {
804
+ const changes = ctx.get("workspaceChanges");
805
+ if (changes === void 0) throw new Error("workspace changes are not recorded in this profile");
806
+ return changes;
807
+ }
808
+ /** `N file` or `N files`. */
809
+ function fileCount(total) {
810
+ return `${String(total)} file${total === 1 ? "" : "s"}`;
811
+ }
812
+ /**
813
+ * The files one turn changed, as `/changes` picker rows: the latest
814
+ * `workspace/changes` announcement of `turn`, or of the newest announced turn
815
+ * when `turn` is undefined, resolved through the Host's summary.
816
+ * @param ctx - plugin context carrying the optional workspace-changes service and session query engine.
817
+ * @param sessionId - the session whose log is read.
818
+ * @param turn - the turn to list, or undefined for the latest announced one.
819
+ * @param signal - cancels a cold log read.
820
+ * @returns the rows under the turn's totals, or undefined when no such turn was announced.
821
+ * @throws {Error} when either service is not mounted, or when the Host no longer holds the announced summary.
822
+ */
823
+ async function listTurnChanges(ctx, sessionId, turn, signal) {
824
+ const env_3 = {
825
+ stack: [],
826
+ error: void 0,
827
+ hasError: false
828
+ };
829
+ try {
830
+ const changes = requireWorkspaceChanges(ctx);
831
+ const query = ctx.get("sessionQuery");
832
+ if (query === void 0) throw new Error("the session query engine is not mounted in this profile");
833
+ const observation = __addDisposableResource$1(env_3, await query.observeSession(sessionId, {
834
+ signal,
835
+ projectionMode: "none"
836
+ }), false);
837
+ let announced;
838
+ for (const event of observation.events) {
839
+ if (event.type !== "workspace/changes") continue;
840
+ if (turn !== void 0 && event.data.turn !== turn) continue;
841
+ announced = {
842
+ seq: event.seq,
843
+ turn: event.data.turn
844
+ };
845
+ }
846
+ if (announced === void 0) return void 0;
847
+ const summary = changes.summary(sessionId, announced.seq);
848
+ if (summary === void 0) throw new Error(`the changed files of turn ${String(announced.turn)} are no longer held by this host`);
849
+ const listed = summary.files.length === summary.total ? "" : ` (${String(summary.files.length)} listed)`;
850
+ return {
851
+ heading: `turn ${String(summary.turn)} · ${fileCount(summary.total)}${listed} · +${String(summary.added)} −${String(summary.deleted)}`,
852
+ choices: summary.files.map((file, index) => ({
853
+ index,
854
+ seq: announced.seq,
855
+ label: file.display,
856
+ description: file.binary === true ? "binary" : file.oversized === true ? "oversized" : `+${String(file.added)} −${String(file.deleted)}`
857
+ }))
858
+ };
859
+ } catch (e_3) {
860
+ env_3.error = e_3;
861
+ env_3.hasError = true;
862
+ } finally {
863
+ __disposeResources$1(env_3);
864
+ }
865
+ }
866
+ /**
867
+ * The one-row notice a `workspace/changes` event prints once its summary is read.
868
+ * @param summary - the announced turn's summary.
869
+ * @returns the turn's file and line totals, naming `/changes` for the files.
870
+ */
871
+ function changesNotice(summary) {
872
+ return `turn ${String(summary.turn)} changed ${fileCount(summary.total)} (+${String(summary.added)} −${String(summary.deleted)}) · /changes`;
873
+ }
874
+ /**
875
+ * The comparison one `/changes` row opens: the file's turn-start and turn-end
876
+ * contents as unified hunks in the tool cards' diff row form, `@@` headers
877
+ * between them and `…` where hunks are apart.
878
+ * @param ctx - plugin context carrying the optional workspace-changes service.
879
+ * @param sessionId - the session the summary belongs to.
880
+ * @param choice - the entered picker row.
881
+ * @param signal - cancels the snapshot reads.
882
+ * @returns the rows; explanatory rows when no lines can be shown.
883
+ * @throws {Error} when the service is not mounted or a snapshot read fails.
884
+ */
885
+ async function changeDiffRows(ctx, sessionId, choice, signal) {
886
+ const diff = await requireWorkspaceChanges(ctx).diff(sessionId, choice.seq, choice.index, signal);
887
+ if (diff === void 0) return [`${choice.label}: the comparison is no longer held by this host`];
888
+ switch (diff.kind) {
889
+ case "binary": return [`${diff.display}: binary content, no line comparison`];
890
+ case "oversized": return [`${diff.display}: larger than the comparison limit, no line comparison`];
891
+ case "text": {
892
+ const rows = [];
893
+ if (!diff.before) rows.push("new file");
894
+ if (!diff.after) rows.push("deleted");
895
+ if (diff.coarse) rows.push("comparison timed out: every line is shown as replaced");
896
+ if (diff.hunks.length === 0) rows.push("no line changes");
897
+ diff.hunks.forEach((hunk, index) => {
898
+ if (index > 0) rows.push(" …");
899
+ rows.push(`@@ -${String(hunk.oldStart)},${String(hunk.oldLines)} +${String(hunk.newStart)},${String(hunk.newLines)} @@`);
900
+ for (const line of hunk.lines) rows.push(`${line.slice(0, 1)} ${line.slice(1)}`);
901
+ });
902
+ return rows;
903
+ }
904
+ /* v8 ignore next -- closed-union exhaustiveness guard */
905
+ default: return assertNever(diff, "tui workspace file diff");
906
+ }
907
+ }
908
+ /** The plugin manager, or a printable error naming its absence. */
909
+ function requirePluginManager(ctx) {
910
+ const manager = ctx.get("pluginManager");
911
+ if (manager === void 0) throw new Error("plugin management is not mounted in this profile");
912
+ return manager;
913
+ }
914
+ /**
915
+ * One row per bundle the profile can manage: name, version, enablement, how
916
+ * the profile holds it, whether it can be removed, and its management error.
917
+ * @param ctx - plugin context carrying the optional plugin manager.
918
+ * @returns the rows in the manager's order.
919
+ * @throws {Error} when no plugin manager is mounted.
920
+ */
921
+ async function listBundles(ctx) {
922
+ return (await requirePluginManager(ctx).listBundles()).map(bundleRow);
923
+ }
924
+ /** One bundle's facts, two spaces apart. */
925
+ function bundleRow(bundle) {
926
+ const held = bundle.installed ? "installed" : bundle.optional ? "optional" : "shipped";
927
+ const facts = [
928
+ bundle.name,
929
+ bundle.version ?? "-",
930
+ bundle.enabled ? "enabled" : "disabled",
931
+ held
932
+ ];
933
+ if (bundle.removable) facts.push("removable");
934
+ if (bundle.readOnlyReason !== void 0) facts.push(`read-only (${bundle.readOnlyReason})`);
935
+ if (bundle.error !== void 0) facts.push(`error ${bundle.error.code}`);
936
+ return facts.join(" ");
937
+ }
938
+ /**
939
+ * Switch one plugin entry or one bundle on or off in the profile's persistent
940
+ * composition. A target naming a plugin entry id changes that entry;
941
+ * otherwise it names a bundle.
942
+ * @param ctx - plugin context carrying the optional plugin manager.
943
+ * @param target - a plugin entry id or a bundle name.
944
+ * @param enabled - the wanted state.
945
+ * @returns a confirmation row: the persisted change and how it applied.
946
+ * @throws {Error} when no plugin manager is mounted, when `target` names neither, or when the change failed.
947
+ */
948
+ async function setPluginEnabled(ctx, target, enabled) {
949
+ const manager = requirePluginManager(ctx);
950
+ const plugin = (await manager.listPlugins()).find((candidate) => candidate.entryId === target);
951
+ if (plugin !== void 0) return reportChange(await manager.setPluginEnabled(plugin.entryId, enabled));
952
+ const bundle = (await manager.listBundles()).find((candidate) => candidate.name === target);
953
+ if (bundle !== void 0) return reportChange(await manager.setBundleEnabled(bundle.name, enabled));
954
+ throw new Error(`"${target}" is neither a plugin entry nor a bundle of this profile`);
955
+ }
956
+ /**
957
+ * Install one bundle into the profile and enable it.
958
+ * @param ctx - plugin context carrying the optional plugin manager.
959
+ * @param spec - what pnpm should add: a registry name, a path, a git address, or a tarball.
960
+ * @returns a confirmation row: the installation and how it applied.
961
+ * @throws {Error} when no plugin manager is mounted or the installation failed.
962
+ */
963
+ async function installBundle(ctx, spec) {
964
+ return reportChange(await requirePluginManager(ctx).installBundle(spec));
965
+ }
966
+ /**
967
+ * Remove one installed bundle from the profile.
968
+ * @param ctx - plugin context carrying the optional plugin manager.
969
+ * @param name - the bundle's package name.
970
+ * @returns a confirmation row: the removal and how it applied.
971
+ * @throws {Error} when no plugin manager is mounted or the removal failed.
972
+ */
973
+ async function removeBundle(ctx, name) {
974
+ return reportChange(await requirePluginManager(ctx).removeBundle(name));
975
+ }
976
+ /** One row over a change result; a failed change is thrown so the surface prints the row as an error. */
977
+ function reportChange(result) {
978
+ const facts = [`${result.stage} ${result.target}: ${result.changed ? result.application : `unchanged, ${result.application}`}`];
979
+ if (result.bundle !== void 0 && result.bundle !== result.target) facts.push(`bundle ${result.bundle}`);
980
+ if (result.error !== void 0) facts.push(result.error.diagnostic === void 0 ? result.error.code : `${result.error.code}: ${result.error.diagnostic}`);
981
+ if (result.pendingBuilds !== void 0 && result.pendingBuilds.length > 0) facts.push(`scripts awaiting approval: ${result.pendingBuilds.join(", ")}`);
982
+ if (result.warnings !== void 0) facts.push(...result.warnings);
983
+ const text = facts.join(" · ");
984
+ if (result.application === "failed") throw new Error(text);
985
+ return text;
986
+ }
787
987
  /** Control Sequence Introducer. */
788
988
  const CSI = "\x1B[";
789
989
  /**
@@ -814,6 +1014,16 @@ const LUMINANCE = {
814
1014
  };
815
1015
  /** Largest value one color channel encodes. */
816
1016
  const CHANNEL_MAX = 255;
1017
+ /** Encoded sRGB value below which the transfer function is the linear segment. */
1018
+ const SRGB_LINEAR_CUT = .04045;
1019
+ /** Linear intensity below which the sRGB transfer function is the linear segment. */
1020
+ const LINEAR_SRGB_CUT = .0031308;
1021
+ /** Slope of the sRGB transfer function's linear segment. */
1022
+ const SRGB_LINEAR_SLOPE = 12.92;
1023
+ /** Offset of the sRGB transfer function's power segment. */
1024
+ const SRGB_OFFSET = .055;
1025
+ /** Exponent of the sRGB transfer function's power segment. */
1026
+ const SRGB_GAMMA = 2.4;
817
1027
  /**
818
1028
  * Grapheme segmenter for the reverse column walk. pi-tui keeps its own
819
1029
  * segmenter private, so this module holds one; grapheme segmentation does not
@@ -842,44 +1052,68 @@ function resolveFadeCapability(input) {
842
1052
  return term.includes("256color") ? "ansi256" : "dim";
843
1053
  }
844
1054
  /**
845
- * Build the brightness ramp a chunk climbs, `ramp[k] = lerp(bg, fg, (k + 1) /
846
- * steps)` in sRGB with each channel rounded to a byte. The last level is a
847
- * copy of `fg` rather than a computed value, so settled text and the last
848
- * faded frame carry identical color.
1055
+ * Build the brightness ramp a chunk climbs: level `k` sits at
1056
+ * `t = (k + 1) / steps` of the way from `bg` to `fg`, eased by the smoothstep
1057
+ * `t * t * (3 - 2 * t)` and interpolated with each channel in linear light.
1058
+ * Both shape the ramp against what the eye reads rather than what the byte
1059
+ * says: sRGB bytes are gamma-encoded, so mixing them directly bunches the
1060
+ * visible change into the dark end, and an even ramp of levels arrives with a
1061
+ * hard start and stop. The last level is a copy of `fg` rather than a computed
1062
+ * value, so settled text and the last faded frame carry identical color.
849
1063
  * @param bg - the terminal background color.
850
1064
  * @param fg - the normal foreground color.
851
1065
  * @param steps - brightness levels; defaults to {@link FADE_STEPS}.
852
1066
  * @returns `steps` levels, darkest first.
853
1067
  */
854
- function buildFadeRamp(bg, fg, steps = 5) {
1068
+ function buildFadeRamp(bg, fg, steps = 8) {
855
1069
  return Array.from({ length: steps }, (_unused, level) => {
856
1070
  if (level === steps - 1) return {
857
1071
  r: fg.r,
858
1072
  g: fg.g,
859
1073
  b: fg.b
860
1074
  };
861
- const ratio = (level + 1) / steps;
1075
+ const position = (level + 1) / steps;
1076
+ const eased = position * position * (3 - 2 * position);
862
1077
  return {
863
- r: mix(bg.r, fg.r, ratio),
864
- g: mix(bg.g, fg.g, ratio),
865
- b: mix(bg.b, fg.b, ratio)
1078
+ r: mix(bg.r, fg.r, eased),
1079
+ g: mix(bg.g, fg.g, eased),
1080
+ b: mix(bg.b, fg.b, eased)
866
1081
  };
867
1082
  });
868
1083
  }
869
1084
  /**
870
- * Interpolate one channel.
871
- * @param from - the background channel.
872
- * @param to - the foreground channel.
1085
+ * Interpolate one channel in linear light.
1086
+ * @param from - the background channel, sRGB-encoded.
1087
+ * @param to - the foreground channel, sRGB-encoded.
873
1088
  * @param ratio - position between them, 0 at `from` and 1 at `to`.
874
- * @returns the channel value rounded to a byte.
1089
+ * @returns the sRGB-encoded channel value rounded to a byte.
875
1090
  */
876
1091
  function mix(from, to, ratio) {
877
- return Math.round(from + (to - from) * ratio);
1092
+ const linear = toLinear(from);
1093
+ return toSrgb(linear + (toLinear(to) - linear) * ratio);
1094
+ }
1095
+ /**
1096
+ * Decode one sRGB channel to linear light, by the sRGB transfer function.
1097
+ * @param value - the channel byte.
1098
+ * @returns the linear intensity in 0..1.
1099
+ */
1100
+ function toLinear(value) {
1101
+ const encoded = value / CHANNEL_MAX;
1102
+ return encoded <= SRGB_LINEAR_CUT ? encoded / SRGB_LINEAR_SLOPE : ((encoded + SRGB_OFFSET) / 1.055) ** SRGB_GAMMA;
1103
+ }
1104
+ /**
1105
+ * Encode linear light back to an sRGB channel byte.
1106
+ * @param value - the linear intensity in 0..1.
1107
+ * @returns the channel byte.
1108
+ */
1109
+ function toSrgb(value) {
1110
+ const encoded = value <= LINEAR_SRGB_CUT ? SRGB_LINEAR_SLOPE * value : 1.055 * value ** (1 / SRGB_GAMMA) - SRGB_OFFSET;
1111
+ return Math.round(encoded * CHANNEL_MAX);
878
1112
  }
879
1113
  /**
880
1114
  * The SGR sequence one age draws under.
881
1115
  * @param style - the capability and the ramp.
882
- * @param age - ticks since the chunk arrived; ages past the ramp draw its last level.
1116
+ * @param age - the brightness level; levels past the ramp draw its last one.
883
1117
  * @returns the sequence to open the run with, or the empty string when the
884
1118
  * chunk draws as the component rendered it, which is also what an empty ramp
885
1119
  * yields under a color capability.
@@ -926,32 +1160,66 @@ function channel(value) {
926
1160
  function restoreFor(capability) {
927
1161
  return capability === "dim" ? RESET_INTENSITY : RESET_FOREGROUND;
928
1162
  }
1163
+ /** Every SGR sequence, the sequences a block's own palette styling writes. */
1164
+ const SGR_SEQUENCE = /\u001b\[[0-9;]*m/g;
929
1165
  /**
930
- * The tail of one streaming assistant message: the chunks young enough to be
931
- * recolored, advanced one tick at a time.
1166
+ * Draw whole rendered lines at one brightness level, for a block that fades in
1167
+ * as a unit rather than word by word.
1168
+ *
1169
+ * The level is opened at the start of the line and reasserted after every SGR
1170
+ * the line already carries, so the palette colors inside a card - the status
1171
+ * glyph, the dim body rule, the bold tool name - are overridden while the card
1172
+ * fades and come back on their own once it settles. Each line ends with the
1173
+ * sequence that undoes what the level set - the terminal's own foreground, or
1174
+ * its normal intensity in the two-level mode - so the level never leaks past
1175
+ * the line it was applied to. Empty lines come back byte-identical, so
1176
+ * the renderer leaves the blank rows around a card alone.
1177
+ * @param lines - the rendered lines of the block.
1178
+ * @param age - the brightness level to draw them at.
1179
+ * @param style - the capability and the ramp.
1180
+ * @param from - first line the level is applied to; the lines before it come
1181
+ * back byte-identical, which is how a caller keeps rows the renderer can no
1182
+ * longer repaint out of the fade.
1183
+ * @returns the lines at that level; copies when the style writes no sequence
1184
+ * for this age, which is what the `none` capability and a settled age yield.
1185
+ */
1186
+ function recolorLines(lines, age, style, from = 0) {
1187
+ const sgr = fadeSgr(style, age);
1188
+ if (sgr === "") return [...lines];
1189
+ const restore = restoreFor(style.capability);
1190
+ return lines.map((line, index) => index < from || line === "" ? line : `${sgr}${line.replace(SGR_SEQUENCE, (match) => match + sgr)}${restore}`);
1191
+ }
1192
+ /**
1193
+ * The tail of one streaming region - the visible text or the reasoning of one
1194
+ * message: the chunks young enough to be recolored, each ageing on the wall
1195
+ * clock from the moment it became visible.
932
1196
  *
933
1197
  * Deltas are split at word boundaries, which reads more smoothly than raw
934
1198
  * token edges. A delta that ends mid-word leaves that word open, and the next
935
1199
  * delta extends it rather than starting a second chunk, so the word keeps the
936
- * tick it first became visible on.
1200
+ * moment it first became visible.
1201
+ *
1202
+ * Ages are read, never counted. A chunk's age is the elapsed time since it
1203
+ * became visible divided by `stepMs`, computed at the moment a render asks for
1204
+ * it, so a render triggered by a delta between two fade periods draws every
1205
+ * word at its own level and words do not move in lockstep. That is what makes
1206
+ * the trailing edge continuous rather than banded.
937
1207
  *
938
- * Fast streams. While each of the last {@link FADE_FAST_WINDOW_TICKS}
939
- * completed ticks received at least one chunk, the stream outruns the ramp and
940
- * the effect turns off: the arriving chunk is not tracked and the whole tail is
941
- * flushed, so nothing already on screen darkens. The decision is recoverable:
942
- * one tick without an arrival ends it, and chunks appended afterwards fade
943
- * again. Recovery only affects new chunks, so it never re-darkens settled text.
1208
+ * Arrival rate changes the tail's length, never its depth: whatever the rate,
1209
+ * a chunk is at the foreground `steps * stepMs` after it appeared, so a fast
1210
+ * stream leaves a longer trail of brightening words and never a darker or a
1211
+ * lasting one. The tail is bounded in time, so it stays on at any rate.
944
1212
  */
945
1213
  var FadeTracker = class {
946
1214
  steps;
947
- fastWindowTicks;
948
- now = 0;
1215
+ stepMs;
1216
+ now;
949
1217
  chunks = [];
950
1218
  openChunk = void 0;
951
- arrivals = /* @__PURE__ */ new Set();
952
1219
  constructor(options) {
953
- this.steps = options?.steps ?? 5;
954
- this.fastWindowTicks = options?.fastWindowTicks ?? 10;
1220
+ this.steps = options.steps ?? 8;
1221
+ this.stepMs = options.stepMs ?? 33;
1222
+ this.now = options.now;
955
1223
  }
956
1224
  /**
957
1225
  * Take one stream event.
@@ -959,42 +1227,39 @@ var FadeTracker = class {
959
1227
  */
960
1228
  append(delta) {
961
1229
  if (delta === "") return;
962
- this.arrivals.add(this.now);
963
- if (this.isFastStream()) {
964
- this.flush();
965
- return;
966
- }
1230
+ const at = this.now();
967
1231
  const open = this.openChunk;
968
1232
  const text = open === void 0 ? delta : open.text + delta;
969
- const born = open === void 0 ? this.now : open.born;
1233
+ const bornAt = open === void 0 ? at : open.bornAt;
970
1234
  if (open !== void 0) this.chunks.pop();
971
1235
  this.openChunk = void 0;
972
1236
  const words = text.match(/\s*\S+\s*/g);
973
1237
  if (words === null) {
974
1238
  this.openChunk = {
975
1239
  text,
976
- born
1240
+ bornAt
977
1241
  };
978
1242
  this.chunks.push(this.openChunk);
979
1243
  return;
980
1244
  }
981
1245
  for (const [index, word] of words.entries()) this.chunks.push({
982
1246
  text: word,
983
- born: index === 0 ? born : this.now
1247
+ bornAt: index === 0 ? bornAt : at
984
1248
  });
985
1249
  if (!/\s$/.test(text)) this.openChunk = this.chunks.at(-1);
986
1250
  }
987
1251
  /**
988
- * Advance one tick and drop the chunks that reached `steps`.
989
- * @returns whether this tick changed a chunk's color, and so needs a repaint.
1252
+ * Drop the chunks that reached the step count, which the application runs
1253
+ * once per fade period so a settled chunk stops being matched against the
1254
+ * rendered lines.
1255
+ * @returns whether a chunk still draws below the last brightness level, and
1256
+ * so whether the tail keeps moving after this period.
990
1257
  */
991
1258
  tick() {
992
- const changing = this.needsRepaint();
993
- this.now += 1;
994
- this.chunks = this.chunks.filter((chunk) => this.now - chunk.born < this.steps);
1259
+ const moving = this.needsRepaint();
1260
+ this.chunks = this.chunks.filter((chunk) => this.ageOf(chunk) < this.steps);
995
1261
  if (this.openChunk !== void 0 && !this.chunks.includes(this.openChunk)) this.openChunk = void 0;
996
- for (const arrival of this.arrivals) if (arrival < this.now - this.fastWindowTicks) this.arrivals.delete(arrival);
997
- return changing;
1262
+ return moving;
998
1263
  }
999
1264
  /**
1000
1265
  * Whether the current frame still differs from the settled rendering.
@@ -1002,36 +1267,98 @@ var FadeTracker = class {
1002
1267
  * is the only reason to keep ticking.
1003
1268
  */
1004
1269
  needsRepaint() {
1005
- return this.chunks.some((chunk) => this.now - chunk.born < this.steps - 1);
1270
+ return this.chunks.some((chunk) => this.ageOf(chunk) < this.steps - 1);
1006
1271
  }
1007
1272
  /**
1008
1273
  * The tail {@link recolorTail} recolors.
1009
- * @returns one span per tracked chunk, oldest first, each with its current age.
1274
+ * @returns one span per tracked chunk, oldest first, each with the age it
1275
+ * carries at this instant.
1010
1276
  */
1011
1277
  spans() {
1012
1278
  return this.chunks.map((chunk) => ({
1013
1279
  text: chunk.text,
1014
- age: this.now - chunk.born
1280
+ age: this.ageOf(chunk)
1015
1281
  }));
1016
1282
  }
1017
1283
  /**
1018
1284
  * Drop the whole tail so every chunk drawn so far renders at the foreground,
1019
1285
  * and start tracking again from the next delta. The application calls this on
1020
- * a terminal width change and at stream end. The fast-stream window is kept:
1021
- * a resize says nothing about the arrival rate.
1286
+ * a terminal width change and at stream end.
1022
1287
  */
1023
1288
  flush() {
1024
1289
  this.chunks = [];
1025
1290
  this.openChunk = void 0;
1026
1291
  }
1027
1292
  /**
1028
- * The fast-stream test.
1029
- * @returns true while every completed tick of the window received at least one chunk.
1293
+ * The brightness level one chunk draws at right now.
1294
+ * @param chunk - the tracked chunk.
1295
+ * @returns levels elapsed since it became visible, 0 for a chunk younger than one level.
1296
+ */
1297
+ ageOf(chunk) {
1298
+ return Math.floor((this.now() - chunk.bornAt) / this.stepMs);
1299
+ }
1300
+ };
1301
+ /**
1302
+ * The age of one whole block that fades in as a unit - a tool card's rows,
1303
+ * which arrive complete rather than word by word.
1304
+ *
1305
+ * The last level is withheld the way the word tail withholds it: that level is
1306
+ * an assumed foreground, so a block one level below the end is handed back to
1307
+ * the terminal's own colors instead, and nothing jumps color as it settles.
1308
+ */
1309
+ var BlockFadeClock = class {
1310
+ options;
1311
+ constructor(options) {
1312
+ this.options = options;
1313
+ }
1314
+ /**
1315
+ * The brightness level the block draws at right now.
1316
+ * @returns the level, or undefined once the block reached the last drawn
1317
+ * level and renders in the colors the component itself produced.
1030
1318
  */
1031
- isFastStream() {
1032
- let covered = 0;
1033
- for (let tick = this.now - this.fastWindowTicks; tick < this.now; tick += 1) if (this.arrivals.has(tick)) covered += 1;
1034
- return covered >= this.fastWindowTicks;
1319
+ age() {
1320
+ const { bornAt, stepMs, steps, now } = this.options;
1321
+ const age = Math.floor((now() - bornAt) / stepMs);
1322
+ return age < steps - 1 ? age : void 0;
1323
+ }
1324
+ /**
1325
+ * Whether this block still draws below the last brightness level.
1326
+ * @returns true while {@link BlockFadeClock.age} yields a level.
1327
+ */
1328
+ needsRepaint() {
1329
+ return this.age() !== void 0;
1330
+ }
1331
+ };
1332
+ /**
1333
+ * The block fades running right now. The application arms its repaint while
1334
+ * any member still moves, so the registry holds only members that have not
1335
+ * settled: {@link FadeRegistry.tick} drops the settled ones once per period,
1336
+ * and a session change clears the whole set.
1337
+ */
1338
+ var FadeRegistry = class {
1339
+ members = /* @__PURE__ */ new Set();
1340
+ /**
1341
+ * Track one fade until it settles.
1342
+ * @param fade - the fade to follow.
1343
+ */
1344
+ add(fade) {
1345
+ this.members.add(fade);
1346
+ }
1347
+ /**
1348
+ * Whether any tracked fade still moves.
1349
+ * @returns true while one of them needs another repaint.
1350
+ */
1351
+ needsRepaint() {
1352
+ for (const member of this.members) if (member.needsRepaint()) return true;
1353
+ return false;
1354
+ }
1355
+ /** Forget the fades that settled, so a long session accumulates none of them. */
1356
+ tick() {
1357
+ for (const member of this.members) if (!member.needsRepaint()) this.members.delete(member);
1358
+ }
1359
+ /** Forget every tracked fade, which the application does when it draws another session. */
1360
+ clear() {
1361
+ this.members.clear();
1035
1362
  }
1036
1363
  };
1037
1364
  /**
@@ -1056,10 +1383,13 @@ var FadeTracker = class {
1056
1383
  * @param lines - the rendered lines of the streaming block, newest text last.
1057
1384
  * @param spans - the tail from {@link FadeTracker.spans}, oldest first.
1058
1385
  * @param style - the capability and the ramp.
1386
+ * @param from - first line the tail may recolor; the lines before it come back
1387
+ * byte-identical, which is how a caller keeps rows the renderer can no longer
1388
+ * repaint out of the fade.
1059
1389
  * @returns the lines with the tail recolored; lines the tail does not cover
1060
1390
  * are returned byte-identical, so the renderer leaves them alone.
1061
1391
  */
1062
- function recolorTail(lines, spans, style) {
1392
+ function recolorTail(lines, spans, style, from = 0) {
1063
1393
  if (style.capability === "none" || spans.length === 0 || lines.length === 0) return [...lines];
1064
1394
  const cells = cellsFromEnd(lines);
1065
1395
  const runs = [];
@@ -1077,7 +1407,7 @@ function recolorTail(lines, spans, style) {
1077
1407
  }
1078
1408
  const restore = restoreFor(style.capability);
1079
1409
  return lines.map((text, index) => {
1080
- const lineRuns = byLine.get(index);
1410
+ const lineRuns = index < from ? void 0 : byLine.get(index);
1081
1411
  return lineRuns === void 0 ? text : paintLine(text, lineRuns, restore);
1082
1412
  });
1083
1413
  }
@@ -1281,20 +1611,74 @@ function editorTheme(palette) {
1281
1611
  * Transcript components: one pi-tui component per rendered fact (a user
1282
1612
  * prompt, an assistant reply, a tool card, a notice). Each owns its display
1283
1613
  * state and re-renders from it at any width.
1614
+ *
1615
+ * The prompt, the reply, and the tool card are also the navigable blocks the
1616
+ * keyboard walks (`./navigation.ts`): each reports its sections as plain source
1617
+ * rows and draws a two-column gutter beside them while it holds the focus -
1618
+ * accented on the focused section's own lines and dim on the rest of the
1619
+ * block. The gutter narrows the width the block's content wraps at and is
1620
+ * prepended after any fade recoloring, so the fade keeps matching the block's
1621
+ * own text and the gutter's styling never enters that match.
1284
1622
  * @module @deepseek-ai/dsh-tui-app/blocks
1285
1623
  */
1624
+ /** Columns the focus gutter takes from the width a block's content wraps at. */
1625
+ const GUTTER_WIDTH = 2;
1626
+ /** The gutter beside the lines of a focused block that are not the focused section. */
1627
+ const BLOCK_GUTTER = "│ ";
1628
+ /** The gutter beside the lines of the focused section itself. */
1629
+ const PART_GUTTER = "┃ ";
1630
+ /** What the call section reports for a tool the model called with no arguments. */
1631
+ const NO_ARGUMENTS = "(no arguments)";
1632
+ /** What the result section reports for a tool that answered with nothing. */
1633
+ const NO_OUTPUT = "(no output)";
1634
+ /**
1635
+ * Prepend the focus gutter to every line of a block that holds the focus.
1636
+ * @param palette - the palette the gutter marks are styled with.
1637
+ * @param lines - the block's final rendered lines, fades already applied.
1638
+ * @param focused - whether the line at one index belongs to the focused section.
1639
+ * @returns the lines behind their gutter.
1640
+ */
1641
+ function withGutter(palette, lines, focused) {
1642
+ return lines.map((line, index) => `${focused(index) ? palette.accent(PART_GUTTER) : palette.dim(BLOCK_GUTTER)}${line}`);
1643
+ }
1286
1644
  /** A prompt the user submitted, drawn with a leading `›`. */
1287
1645
  var UserBlock = class {
1288
1646
  theme;
1289
1647
  text;
1290
- constructor(theme, text) {
1648
+ turn;
1649
+ navigable = true;
1650
+ blockKind = "user";
1651
+ /** The section drawn as focused; absent while the keyboard is elsewhere. */
1652
+ highlight;
1653
+ constructor(theme, text, turn) {
1291
1654
  this.theme = theme;
1292
1655
  this.text = text;
1656
+ this.turn = turn;
1657
+ }
1658
+ /**
1659
+ * The prompt as one navigable section.
1660
+ * @returns the single `user` part, carrying the submitted text.
1661
+ */
1662
+ parts() {
1663
+ return [{
1664
+ kind: "user",
1665
+ rows: this.text.split("\n")
1666
+ }];
1667
+ }
1668
+ /**
1669
+ * Draw this prompt with the focus gutter, or without it.
1670
+ * @param part - the focused section, or undefined to clear the mark.
1671
+ */
1672
+ setHighlight(part) {
1673
+ this.highlight = part;
1293
1674
  }
1294
1675
  invalidate() {}
1295
1676
  render(width) {
1296
1677
  const palette = this.theme.palette;
1297
- return ["", ...wrapTextWithAnsi(this.text, Math.max(1, width - 2)).map((line, index) => `${palette.accent(index === 0 ? "›" : " ")} ${palette.bold(line)}`)];
1678
+ const marked = this.highlight !== void 0;
1679
+ const inner = marked ? Math.max(1, width - GUTTER_WIDTH) : width;
1680
+ const lines = ["", ...wrapTextWithAnsi(this.text, Math.max(1, inner - 2)).map((line, index) => `${palette.accent(index === 0 ? "›" : " ")} ${palette.bold(line)}`)];
1681
+ return marked ? withGutter(palette, lines, () => true) : lines;
1298
1682
  }
1299
1683
  };
1300
1684
  /** A dim one-line notice about the session (a stopped turn, a command result, a model switch). */
@@ -1315,28 +1699,66 @@ var NoticeBlock = class {
1315
1699
  * An assistant reply: streamed reasoning above streamed Markdown text. The
1316
1700
  * durable `assistant/message` replaces both with the committed content.
1317
1701
  *
1318
- * A block that is streaming right now can carry a {@link FadeRender}, which
1319
- * draws its newest text dimmed and brightening. A block rebuilt from history
1320
- * carries none, and {@link AssistantBlock.commit} drops the one a streaming
1321
- * block had, so settled text is never recolored.
1702
+ * A block that is streaming right now can carry a {@link FadeRender} for its
1703
+ * text and another for its reasoning, each drawing that region's newest words
1704
+ * dimmed and brightening. A block rebuilt from history carries neither, and
1705
+ * {@link AssistantBlock.commit} drops the ones a streaming block had, so
1706
+ * settled text is never recolored.
1322
1707
  */
1323
1708
  var AssistantBlock = class {
1324
1709
  theme;
1710
+ turn;
1711
+ navigable = true;
1712
+ blockKind = "assistant";
1325
1713
  reasoning = "";
1326
1714
  text = "";
1327
1715
  interrupted = false;
1328
1716
  markdown;
1329
1717
  reasoningText;
1330
1718
  fade;
1331
- /** Width of the last render that drew a tail; absent before the first one. */
1719
+ /** Width of the last render that drew a text tail; absent before the first one. */
1332
1720
  fadeWidth;
1333
- constructor(theme) {
1721
+ reasoningFade;
1722
+ /** Width of the last render that drew a reasoning tail; absent before the first one. */
1723
+ reasoningFadeWidth;
1724
+ /** First line of this block either tail may still recolor. */
1725
+ repaintFloor = 0;
1726
+ /** The section drawn as focused; absent while the keyboard is elsewhere. */
1727
+ highlight;
1728
+ constructor(theme, turn) {
1334
1729
  this.theme = theme;
1730
+ this.turn = turn;
1335
1731
  const palette = theme.palette;
1336
1732
  this.markdown = new Markdown("", 0, 0, markdownTheme(palette));
1337
1733
  this.reasoningText = new Text("", 0, 0);
1338
1734
  }
1339
1735
  /**
1736
+ * The message as navigable sections, carrying the model's own text: the
1737
+ * reasoning as it was streamed or committed, and the reply as Markdown
1738
+ * source rather than the rendering the transcript draws.
1739
+ * @returns the reasoning part while the message has reasoning, then the
1740
+ * reply, which is present from the start and empty until text arrives.
1741
+ */
1742
+ parts() {
1743
+ const parts = [];
1744
+ if (this.reasoning.trim() !== "") parts.push({
1745
+ kind: "reasoning",
1746
+ rows: this.reasoning.split("\n")
1747
+ });
1748
+ parts.push({
1749
+ kind: "reply",
1750
+ rows: this.text.split("\n")
1751
+ });
1752
+ return parts;
1753
+ }
1754
+ /**
1755
+ * Draw this message with the focus gutter, or without it.
1756
+ * @param part - the focused section, or undefined to clear the mark.
1757
+ */
1758
+ setHighlight(part) {
1759
+ this.highlight = part;
1760
+ }
1761
+ /**
1340
1762
  * Draw this block's newest text through `fade` until it commits.
1341
1763
  * @param fade - the tail and drawing settings of the running stream.
1342
1764
  */
@@ -1344,6 +1766,26 @@ var AssistantBlock = class {
1344
1766
  this.fade = fade;
1345
1767
  }
1346
1768
  /**
1769
+ * Draw this block's newest reasoning through `fade` until it commits.
1770
+ * @param fade - the tail and drawing settings of the running stream.
1771
+ */
1772
+ setReasoningFade(fade) {
1773
+ this.reasoningFade = fade;
1774
+ }
1775
+ /**
1776
+ * Hand the rows the renderer can no longer repaint back to the colors this
1777
+ * block drew them in, so a tail that is still moving never rewrites them.
1778
+ * @param floor - this block's own first repaintable line; the application
1779
+ * raises it as the frame grows and never lowers it.
1780
+ * @returns whether the floor took rows away from a tail that is drawing
1781
+ * right now, and so whether the frame differs from the one just built.
1782
+ */
1783
+ setRepaintFloor(floor) {
1784
+ if (floor <= this.repaintFloor) return false;
1785
+ this.repaintFloor = floor;
1786
+ return drawnSpans(this.fade).length > 0 || drawnSpans(this.reasoningFade).length > 0;
1787
+ }
1788
+ /**
1347
1789
  * Append streamed visible text.
1348
1790
  * @param delta - the text delta.
1349
1791
  */
@@ -1370,6 +1812,7 @@ var AssistantBlock = class {
1370
1812
  this.reasoning = reasoning;
1371
1813
  this.interrupted = interrupted;
1372
1814
  this.fade = void 0;
1815
+ this.reasoningFade = void 0;
1373
1816
  this.markdown.setText(text);
1374
1817
  this.reasoningText.setText(this.theme.palette.dim(this.theme.palette.italic(reasoning.trimEnd())));
1375
1818
  }
@@ -1378,11 +1821,52 @@ var AssistantBlock = class {
1378
1821
  this.reasoningText.invalidate();
1379
1822
  }
1380
1823
  render(width) {
1824
+ const marked = this.highlight !== void 0;
1825
+ const inner = marked ? Math.max(1, width - GUTTER_WIDTH) : width;
1381
1826
  const lines = [""];
1382
- if (this.reasoning.trim() !== "") lines.push(...this.reasoningText.render(width), "");
1383
- if (this.text !== "") lines.push(...this.renderText(width));
1827
+ const reasoning = {
1828
+ from: 0,
1829
+ to: 0
1830
+ };
1831
+ const reply = {
1832
+ from: 0,
1833
+ to: 0
1834
+ };
1835
+ if (this.reasoning.trim() !== "") {
1836
+ reasoning.from = lines.length;
1837
+ lines.push(...this.renderReasoning(inner, lines.length));
1838
+ reasoning.to = lines.length;
1839
+ lines.push("");
1840
+ }
1841
+ if (this.text !== "") {
1842
+ reply.from = lines.length;
1843
+ lines.push(...this.renderText(inner, lines.length));
1844
+ reply.to = lines.length;
1845
+ }
1384
1846
  if (this.interrupted) lines.push(this.theme.palette.dim("[interrupted]"));
1385
- return lines;
1847
+ if (!marked) return lines;
1848
+ const section = this.highlight === "reasoning" ? reasoning : reply;
1849
+ return withGutter(this.theme.palette, lines, (index) => index >= section.from && index < section.to);
1850
+ }
1851
+ /**
1852
+ * The reasoning lines, with the streaming tail recolored.
1853
+ *
1854
+ * The ramp climbs towards the assumed terminal foreground, but the reasoning
1855
+ * draws inside the faint and italic sequences `appendReasoning` wrapped it
1856
+ * in, and a recolored run reasserts the styling in force at its start. The
1857
+ * tail therefore arrives at the dim foreground the settled reasoning carries,
1858
+ * not at the plain one.
1859
+ * @param width - the width the reasoning lays out in.
1860
+ * @param at - index of the region's first line in this block's render.
1861
+ * @returns the lines to draw.
1862
+ */
1863
+ renderReasoning(width, at) {
1864
+ const fade = this.reasoningFade;
1865
+ const lines = this.reasoningText.render(width);
1866
+ if (fade === void 0) return lines;
1867
+ if (this.reasoningFadeWidth !== void 0 && this.reasoningFadeWidth !== width) fade.flush();
1868
+ this.reasoningFadeWidth = width;
1869
+ return recolorTail(lines, drawnSpans(fade), fade.style(), this.repaintFloor - at);
1386
1870
  }
1387
1871
  /**
1388
1872
  * The Markdown lines, with the streaming tail recolored.
@@ -1391,36 +1875,102 @@ var AssistantBlock = class {
1391
1875
  * given, so it gets the Markdown lines alone: the reasoning above them and
1392
1876
  * any marker below them would put the newest chunk somewhere other than the
1393
1877
  * end and drop the whole tail to the plain foreground.
1394
- *
1395
- * Only chunks younger than `steps - 1` are handed over. The last ramp level
1396
- * is an assumed foreground - pi-tui reports the terminal background but not
1397
- * its foreground - so the oldest visible level is left to draw in the
1398
- * terminal's own foreground, which is also what the chunk draws in once it
1399
- * settles. No chunk can therefore jump color as it leaves the tail.
1400
1878
  * @param width - the width the Markdown lays out in.
1879
+ * @param at - index of the region's first line in this block's render.
1401
1880
  * @returns the lines to draw.
1402
1881
  */
1403
- renderText(width) {
1882
+ renderText(width, at) {
1404
1883
  const fade = this.fade;
1405
1884
  const lines = this.markdown.render(width);
1406
1885
  if (fade === void 0) return lines;
1407
1886
  if (this.fadeWidth !== void 0 && this.fadeWidth !== width) fade.flush();
1408
1887
  this.fadeWidth = width;
1409
- return recolorTail(lines, fade.spans().filter((span) => span.age < fade.steps - 1), fade.style());
1888
+ return recolorTail(lines, drawnSpans(fade), fade.style(), this.repaintFloor - at);
1410
1889
  }
1411
1890
  };
1412
- /** A tool call card: status glyph, tool name, headline, then a foldable body. */
1891
+ /**
1892
+ * A tool call card: status glyph, tool name, headline, then a foldable body.
1893
+ *
1894
+ * The card arrives in two pieces, and each fades in on its own: the header and
1895
+ * the call rows when the call is logged, the result rows when the tool
1896
+ * answers. A card rebuilt from history carries neither fade.
1897
+ */
1413
1898
  var ToolBlock = class {
1414
1899
  theme;
1415
1900
  name;
1416
1901
  call;
1902
+ turn;
1903
+ navigable = true;
1904
+ blockKind = "tool";
1417
1905
  status = "running";
1418
1906
  resultLines = [];
1419
1907
  expanded = false;
1420
- constructor(theme, name, call) {
1908
+ fade;
1909
+ resultFade;
1910
+ /** First line of this card either fade may still recolor. */
1911
+ repaintFloor = 0;
1912
+ /** The section drawn as focused; absent while the keyboard is elsewhere. */
1913
+ highlight;
1914
+ constructor(theme, name, call, turn) {
1421
1915
  this.theme = theme;
1422
1916
  this.name = name;
1423
1917
  this.call = call;
1918
+ this.turn = turn;
1919
+ }
1920
+ /** The card headline, as the section heading names this call. */
1921
+ get title() {
1922
+ return this.call.title;
1923
+ }
1924
+ /**
1925
+ * The card as navigable sections, carrying its untruncated rows whatever the
1926
+ * collapsed body shows.
1927
+ * @returns the call section, then the result section once the tool answered.
1928
+ */
1929
+ parts() {
1930
+ const call = [...this.call.title === "" ? [] : [this.call.title], ...this.call.lines];
1931
+ const parts = [{
1932
+ kind: "call",
1933
+ rows: call.length === 0 ? [NO_ARGUMENTS] : call
1934
+ }];
1935
+ if (this.status !== "running") parts.push({
1936
+ kind: "result",
1937
+ rows: this.resultLines.length === 0 ? [NO_OUTPUT] : this.resultLines
1938
+ });
1939
+ return parts;
1940
+ }
1941
+ /**
1942
+ * Draw this card with the focus gutter, or without it.
1943
+ * @param part - the focused section, or undefined to clear the mark.
1944
+ */
1945
+ setHighlight(part) {
1946
+ this.highlight = part;
1947
+ }
1948
+ /**
1949
+ * Draw the header and the call rows through `fade` until it settles.
1950
+ * @param fade - the level and drawing settings of this card's own fade.
1951
+ */
1952
+ setFade(fade) {
1953
+ this.fade = fade;
1954
+ }
1955
+ /**
1956
+ * Draw the result rows through `fade` until it settles.
1957
+ * @param fade - the level and drawing settings of the result's own fade.
1958
+ */
1959
+ setResultFade(fade) {
1960
+ this.resultFade = fade;
1961
+ }
1962
+ /**
1963
+ * Hand the rows the renderer can no longer repaint back to the colors this
1964
+ * card drew them in, so a fade that is still climbing never rewrites them.
1965
+ * @param floor - this card's own first repaintable line; the application
1966
+ * raises it as the frame grows and never lowers it.
1967
+ * @returns whether the floor took rows away from a fade that is drawing
1968
+ * right now, and so whether the frame differs from the one just built.
1969
+ */
1970
+ setRepaintFloor(floor) {
1971
+ if (floor <= this.repaintFloor) return false;
1972
+ this.repaintFloor = floor;
1973
+ return this.fade?.age() !== void 0 || this.resultFade?.age() !== void 0;
1424
1974
  }
1425
1975
  /**
1426
1976
  * Attach the result rows and settle the status.
@@ -1441,17 +1991,63 @@ var ToolBlock = class {
1441
1991
  invalidate() {}
1442
1992
  render(width) {
1443
1993
  const palette = this.theme.palette;
1994
+ const marked = this.highlight !== void 0;
1995
+ const outer = marked ? Math.max(1, width - GUTTER_WIDTH) : width;
1444
1996
  const header = `${this.status === "running" ? palette.warning("●") : this.status === "done" ? palette.success("●") : palette.error("●")} ${palette.bold(this.name)}${this.call.title === "" ? "" : ` ${palette.dim(this.call.title)}`}`;
1445
- const shown = previewLines([...this.call.lines, ...this.resultLines], this.theme.toolPreviewLines, this.expanded);
1446
- const inner = Math.max(1, width - 4);
1447
- const rows = shown.flatMap((line) => wrapTextWithAnsi(line, inner).map((part) => ` ${palette.dim("│")} ${part}`));
1448
- return [
1997
+ const body = [...this.call.lines, ...this.resultLines];
1998
+ const shown = previewLines(body, this.theme.toolPreviewLines, this.expanded);
1999
+ const callCount = Math.min(this.call.lines.length, shown.length);
2000
+ const inner = Math.max(1, outer - 4);
2001
+ const rows = (lines) => lines.flatMap((line) => wrapTextWithAnsi(line, inner).map((part) => ` ${palette.dim("│")} ${part}`));
2002
+ const callLines = [...wrapTextWithAnsi(header, outer), ...rows(shown.slice(0, callCount))];
2003
+ const resultLines = rows(shown.slice(callCount));
2004
+ const call = faded(callLines, this.fade, this.repaintFloor - 1);
2005
+ const result = faded(resultLines, this.resultFade, this.repaintFloor - 1 - callLines.length);
2006
+ const lines = [
1449
2007
  "",
1450
- ...wrapTextWithAnsi(header, width),
1451
- ...rows
2008
+ ...call,
2009
+ ...result
1452
2010
  ];
2011
+ if (!marked) return lines;
2012
+ const cut = !this.expanded && body.length > this.theme.toolPreviewLines;
2013
+ const sections = lines.length - (cut ? rows(shown.slice(-1)).length : 0);
2014
+ const section = this.highlight === "result" ? {
2015
+ from: 1 + callLines.length,
2016
+ to: lines.length
2017
+ } : {
2018
+ from: 1,
2019
+ to: 1 + callLines.length
2020
+ };
2021
+ return withGutter(palette, lines, (index) => index >= section.from && index < section.to && index < sections);
1453
2022
  }
1454
2023
  };
2024
+ /**
2025
+ * Draw one group of a card's rows at the level its fade reports.
2026
+ * @param lines - the group's final rendered lines.
2027
+ * @param fade - the group's fade; absent for a card that never faded.
2028
+ * @param from - first line of the group the fade may recolor.
2029
+ * @returns the lines at that level, or the lines themselves once the fade
2030
+ * settled or was never attached.
2031
+ */
2032
+ function faded(lines, fade, from) {
2033
+ if (fade === void 0) return lines;
2034
+ const age = fade.age();
2035
+ return age === void 0 ? lines : recolorLines(lines, age, fade.style(), from);
2036
+ }
2037
+ /**
2038
+ * The tail chunks one streaming region still draws below the terminal's own
2039
+ * foreground.
2040
+ *
2041
+ * The last ramp level is an assumed foreground - pi-tui reports the terminal
2042
+ * background but not its foreground - so a chunk that reached it is left to
2043
+ * draw in the terminal's own foreground, which is also what it draws in once it
2044
+ * leaves the tail. No chunk can therefore jump color as it settles.
2045
+ * @param fade - the region's fade; absent for a region that never faded.
2046
+ * @returns the spans to recolor, oldest first.
2047
+ */
2048
+ function drawnSpans(fade) {
2049
+ return fade === void 0 ? [] : fade.spans().filter((span) => span.age < fade.steps - 1);
2050
+ }
1455
2051
  //#endregion
1456
2052
  //#region lib/types/completion.js
1457
2053
  /**
@@ -1685,6 +2281,285 @@ async function exportSessionZip(ctx, sessionId, directory, signal) {
1685
2281
  return path;
1686
2282
  }
1687
2283
  //#endregion
2284
+ //#region lib/types/inspector.js
2285
+ /**
2286
+ * The docked inspector above the editor: while the keyboard walks the
2287
+ * transcript it shows the focused section in full - what it is, which part of
2288
+ * its block is held, and the start of that part's own rows.
2289
+ *
2290
+ * It is the focus indicator that is always on screen. A block is also marked
2291
+ * in place, but only while the renderer can still repaint its first line
2292
+ * (`./navigation.ts`), so the heading says when the marked block itself has
2293
+ * scrolled out of reach. Rows arrive as the block's source text with no fade
2294
+ * and no palette styling of their own, so a section that is still streaming
2295
+ * grows here as it arrives.
2296
+ * @module @deepseek-ai/dsh-tui-app/inspector
2297
+ */
2298
+ /** What separates two labels of the parts strip. */
2299
+ const SEPARATOR$3 = " · ";
2300
+ /** Brackets the parts strip, so the strip reads as one row of choices. */
2301
+ const STRIP_ENDS = ["‹ ", " ›"];
2302
+ /** What the heading appends while the focused block lies outside the repaint window. */
2303
+ const OFF_SCREEN = " · off screen";
2304
+ /** The keys the inspector answers, drawn dim under its rows. */
2305
+ const HINT = "↑ ↓ blocks · ← → parts · Enter page · Esc back";
2306
+ /** What ends a line the width cut short; one column, so the mark itself fits. */
2307
+ const ELLIPSIS = "…";
2308
+ /**
2309
+ * Draw the focused section.
2310
+ * @param view - the section to show.
2311
+ * @param render - the palette, the row budget, and the width.
2312
+ * @returns the inspector's lines, none wider than `width`: a blank separator,
2313
+ * the heading, the parts strip when the block has more than one part, the
2314
+ * folded rows, and the hints.
2315
+ */
2316
+ function renderInspector(view, render) {
2317
+ const { palette } = render;
2318
+ const width = Math.max(1, render.width);
2319
+ const lines = ["", heading(view, palette, width)];
2320
+ if (view.parts.length > 1) lines.push(partsStrip(view.parts, palette));
2321
+ const wrapped = view.rows.flatMap((row) => wrapTextWithAnsi(row, width));
2322
+ lines.push(...foldRows(wrapped, render.previewLines, (hidden) => palette.dim(`… ${String(hidden)} more row${hidden === 1 ? "" : "s"} · Enter opens the page`)));
2323
+ lines.push(palette.dim(HINT));
2324
+ return lines.map((line) => truncateToWidth(line, width, ELLIPSIS));
2325
+ }
2326
+ /**
2327
+ * The heading line. A tool title can run past any terminal, so the subject is
2328
+ * cut first and the off-screen mark stays whole: where the marked block went
2329
+ * must never be what the width hides.
2330
+ * @param view - the section to show.
2331
+ * @param palette - the palette the heading is styled with.
2332
+ * @param width - the width the line must fit; at least 1.
2333
+ * @returns the heading, with the mark when the block is not on screen.
2334
+ */
2335
+ function heading(view, palette, width) {
2336
+ const subject = palette.bold(palette.accent(view.heading));
2337
+ if (view.highlighted) return subject;
2338
+ const suffix = palette.dim(OFF_SCREEN);
2339
+ return `${truncateToWidth(subject, Math.max(1, width - visibleWidth(suffix)), ELLIPSIS)}${suffix}`;
2340
+ }
2341
+ /**
2342
+ * Draw the parts of the focused block as one row of choices.
2343
+ * @param parts - the labels in reading order, the held one marked.
2344
+ * @param palette - the palette the labels are styled with.
2345
+ * @returns the strip line.
2346
+ */
2347
+ function partsStrip(parts, palette) {
2348
+ const labels = parts.map((part) => part.focused ? palette.accent(part.label) : palette.dim(part.label)).join(palette.dim(SEPARATOR$3));
2349
+ return `${palette.dim(STRIP_ENDS[0])}${labels}${palette.dim(STRIP_ENDS[1])}`;
2350
+ }
2351
+ /**
2352
+ * The inspector as a mounted component.
2353
+ *
2354
+ * The view is read once per render rather than pushed in, so a section that is
2355
+ * still streaming and a tool result that has just landed reach the screen with
2356
+ * the frame that draws them, without the application refreshing the pane.
2357
+ */
2358
+ var InspectorPane = class {
2359
+ view;
2360
+ settings;
2361
+ /**
2362
+ * @param view - reads the section to draw; undefined draws nothing at all,
2363
+ * which is what an unmounted moment and a transcript with no cursor yield.
2364
+ * @param settings - the palette and the row budget; the width arrives per render.
2365
+ */
2366
+ constructor(view, settings) {
2367
+ this.view = view;
2368
+ this.settings = settings;
2369
+ }
2370
+ invalidate() {}
2371
+ /**
2372
+ * Draw the focused section at `width`.
2373
+ * @param width - the total width the pane lays out in.
2374
+ * @returns the inspector's lines, or none when no section is focused.
2375
+ */
2376
+ render(width) {
2377
+ const view = this.view();
2378
+ return view === void 0 ? [] : renderInspector(view, {
2379
+ ...this.settings,
2380
+ width
2381
+ });
2382
+ }
2383
+ };
2384
+ //#endregion
2385
+ //#region lib/types/navigation.js
2386
+ /**
2387
+ * The transcript as a list of navigable sections.
2388
+ *
2389
+ * A conversation is drawn as one component per fact, and the keyboard walks it
2390
+ * in two directions: between blocks and, inside a block, between its parts -
2391
+ * the reasoning and the reply of a message, the call and the result of a tool.
2392
+ * This module turns the transcript container's children into that list and
2393
+ * moves one cursor over it. Everything here is plain data: no pi-tui, no
2394
+ * palette, no clock. The rows a part carries are the block's own source text,
2395
+ * so the page `Enter` opens shows what the model wrote rather than a rendering
2396
+ * of it.
2397
+ * @module @deepseek-ai/dsh-tui-app/navigation
2398
+ */
2399
+ /** What separates two facts inside one heading. */
2400
+ const SEPARATOR$2 = " · ";
2401
+ /**
2402
+ * Whether one transcript child is navigable.
2403
+ * @param child - a child of the transcript container.
2404
+ * @returns true when the child carries the navigable marker.
2405
+ */
2406
+ function isSectionSource(child) {
2407
+ return typeof child === "object" && child !== null && child.navigable === true;
2408
+ }
2409
+ /**
2410
+ * The navigable blocks of a transcript, in drawing order.
2411
+ * @param children - the transcript container's children.
2412
+ * @returns the children that expose sections; notices and printed rows are left out.
2413
+ */
2414
+ function navigableBlocks(children) {
2415
+ return children.filter(isSectionSource);
2416
+ }
2417
+ /**
2418
+ * Hold one index inside a list.
2419
+ * @param index - the wanted index.
2420
+ * @param length - the list length; at least 1.
2421
+ * @returns the index, moved to the nearest end when it falls outside.
2422
+ */
2423
+ function clampIndex(index, length) {
2424
+ return Math.max(0, Math.min(index, length - 1));
2425
+ }
2426
+ /**
2427
+ * How many parts one block carries.
2428
+ * @param blocks - the navigable blocks.
2429
+ * @param index - the block to count.
2430
+ * @returns the count, and 0 for an index past the list.
2431
+ */
2432
+ function partCount(blocks, index) {
2433
+ return blocks[index]?.parts().length ?? 0;
2434
+ }
2435
+ /**
2436
+ * Where the keyboard enters the transcript: the newest block, on its last
2437
+ * part, which is the most recent thing the session produced.
2438
+ * @param blocks - the navigable blocks.
2439
+ * @returns the cursor, or undefined when the transcript has nothing to inspect.
2440
+ */
2441
+ function enterNewest(blocks) {
2442
+ const block = blocks.length - 1;
2443
+ const parts = partCount(blocks, block);
2444
+ if (parts === 0) return void 0;
2445
+ return {
2446
+ block,
2447
+ part: parts - 1
2448
+ };
2449
+ }
2450
+ /**
2451
+ * Move to another block, landing on its last part.
2452
+ * @param cursor - where the focus sits.
2453
+ * @param step - 1 for the next block, -1 for the previous one.
2454
+ * @param blocks - the navigable blocks.
2455
+ * @returns the new cursor; the cursor itself at either end of the list.
2456
+ */
2457
+ function moveBlock(cursor, step, blocks) {
2458
+ const block = clampIndex(cursor.block + step, blocks.length);
2459
+ if (block === cursor.block) return cursor;
2460
+ return {
2461
+ block,
2462
+ part: Math.max(0, partCount(blocks, block) - 1)
2463
+ };
2464
+ }
2465
+ /**
2466
+ * Move between the parts of the held block.
2467
+ * @param cursor - where the focus sits.
2468
+ * @param step - 1 for the next part, -1 for the previous one.
2469
+ * @param blocks - the navigable blocks.
2470
+ * @returns the new cursor; the cursor itself at either end of the block.
2471
+ */
2472
+ function movePart(cursor, step, blocks) {
2473
+ const parts = partCount(blocks, cursor.block);
2474
+ if (parts === 0) return cursor;
2475
+ return {
2476
+ block: cursor.block,
2477
+ part: clampIndex(cursor.part + step, parts)
2478
+ };
2479
+ }
2480
+ /**
2481
+ * Put a remembered cursor back on the current transcript, which grew a block,
2482
+ * grew a part, or was replaced by another session since it was taken.
2483
+ * @param cursor - the remembered cursor.
2484
+ * @param blocks - the navigable blocks as they are now.
2485
+ * @returns the cursor inside the current list, or undefined when the
2486
+ * transcript has nothing to hold it.
2487
+ */
2488
+ function clampCursor(cursor, blocks) {
2489
+ if (blocks.length === 0) return void 0;
2490
+ const block = clampIndex(cursor.block, blocks.length);
2491
+ const parts = partCount(blocks, block);
2492
+ if (parts === 0) return void 0;
2493
+ return {
2494
+ block,
2495
+ part: clampIndex(cursor.part, parts)
2496
+ };
2497
+ }
2498
+ /**
2499
+ * The part the cursor holds.
2500
+ * @param cursor - where the focus sits.
2501
+ * @param blocks - the navigable blocks.
2502
+ * @returns the part, or undefined when the cursor points past the list.
2503
+ */
2504
+ function partAt(cursor, blocks) {
2505
+ return blocks[cursor.block]?.parts()[cursor.part];
2506
+ }
2507
+ /**
2508
+ * What the inspector and the parts strip call one section.
2509
+ * @param kind - the section.
2510
+ * @returns the label; the user's own prompt reads as `you`.
2511
+ */
2512
+ function partLabel(kind) {
2513
+ return kind === "user" ? "you" : kind;
2514
+ }
2515
+ /**
2516
+ * How a block names the held section after its position and turn.
2517
+ * @param block - the held block.
2518
+ * @param part - the held part.
2519
+ * @returns the naming facts, in heading order.
2520
+ */
2521
+ function subjectOf(block, part) {
2522
+ switch (block.blockKind) {
2523
+ case "user":
2524
+ case "assistant": return [partLabel(part.kind)];
2525
+ case "tool": return [block.title === "" ? block.name : `${block.name} ${block.title}`, block.parts().some((candidate) => candidate.kind === "result") ? partLabel(part.kind) : "running"];
2526
+ /* v8 ignore next -- closed-union exhaustiveness guard */
2527
+ default: return assertNever(block, "tui transcript block kind");
2528
+ }
2529
+ }
2530
+ /**
2531
+ * The inspector heading of the held section: its position in the transcript,
2532
+ * the turn it belongs to, and what the section is.
2533
+ * @param cursor - where the focus sits.
2534
+ * @param blocks - the navigable blocks.
2535
+ * @returns the heading, or an empty string when the cursor points past the list.
2536
+ */
2537
+ function sectionHeading(cursor, blocks) {
2538
+ const block = blocks[cursor.block];
2539
+ const part = partAt(cursor, blocks);
2540
+ if (block === void 0 || part === void 0) return "";
2541
+ return [
2542
+ `${String(cursor.block + 1)}/${String(blocks.length)}`,
2543
+ `turn ${String(block.turn)}`,
2544
+ ...subjectOf(block, part)
2545
+ ].join(SEPARATOR$2);
2546
+ }
2547
+ /**
2548
+ * The parts strip of the held block.
2549
+ * @param cursor - where the focus sits.
2550
+ * @param blocks - the navigable blocks.
2551
+ * @returns one label per part in reading order, the held one marked; empty
2552
+ * when the cursor points past the list.
2553
+ */
2554
+ function partLabels(cursor, blocks) {
2555
+ const block = blocks[cursor.block];
2556
+ if (block === void 0) return [];
2557
+ return block.parts().map((part, index) => ({
2558
+ label: partLabel(part.kind),
2559
+ focused: index === cursor.part
2560
+ }));
2561
+ }
2562
+ //#endregion
1688
2563
  //#region lib/types/todos.js
1689
2564
  /**
1690
2565
  * The agent's todo list as terminal rows: the status glyphs every todo surface
@@ -2088,9 +2963,9 @@ const WORKSPACE_LABEL_WIDTH = 24;
2088
2963
  /** The last two segments of a path, with the separators that precede them. */
2089
2964
  const PATH_TAIL = /[/\\][^/\\]+[/\\][^/\\]+$/u;
2090
2965
  /** The keys the focused bar answers, replacing the usual hints. */
2091
- const FOCUS_HINTS$1 = `← → select${SEPARATOR$1}Enter details${SEPARATOR$1}Esc back`;
2092
- /** What the unfocused hints advertise as the way into the bar. */
2093
- const ENTRY_HINT = "Shift+↑ status bar";
2966
+ const FOCUS_HINTS$1 = `← → select${SEPARATOR$1}↑ ↓ regions${SEPARATOR$1}Enter details${SEPARATOR$1}Esc back`;
2967
+ /** What the unfocused hints advertise as the two ways out of the editor. */
2968
+ const ENTRY_HINT = `Shift+↑ transcript${SEPARATOR$1}Shift+↓ status bar`;
2094
2969
  /** The command that prints every projection section at once. */
2095
2970
  const STATUS_COMMAND_ROW = "/status prints all of these sections";
2096
2971
  /**
@@ -2251,15 +3126,12 @@ const SELECT_MAX_VISIBLE = 8;
2251
3126
  /** Call-detail rows an approval shows before folding the rest into a count. */
2252
3127
  const APPROVAL_DETAIL_MAX_ROWS = 12;
2253
3128
  /**
2254
- * Cut detail rows to `max`, replacing the rest with a count.
2255
- * @param lines - the full rows.
2256
- * @param max - rows kept.
2257
- * @returns the rows to draw, with a trailing count of hidden rows when cut.
3129
+ * The trailing row an approval's folded call detail carries.
3130
+ * @param hidden - rows left out.
3131
+ * @returns the marker row.
2258
3132
  */
2259
- function foldRows(lines, max) {
2260
- if (lines.length <= max) return [...lines];
2261
- const hidden = lines.length - max;
2262
- return [...lines.slice(0, max), `… ${String(hidden)} more line${hidden === 1 ? "" : "s"}`];
3133
+ function approvalFoldMarker(hidden) {
3134
+ return `… ${String(hidden)} more line${hidden === 1 ? "" : "s"}`;
2263
3135
  }
2264
3136
  /** One settlement slot: the first value wins, later values are ignored. */
2265
3137
  var Settlement = class {
@@ -2378,7 +3250,7 @@ var ListPrompt = class {
2378
3250
  var ApprovalPrompt = class extends ListPrompt {
2379
3251
  constructor(palette, toolName, reason, detail = []) {
2380
3252
  const title = `${palette.warning("?")} ${palette.bold(`Allow ${toolName}?`)}`;
2381
- super(palette, reason === void 0 ? title : `${title}\n${palette.dim(reason)}`, foldRows(detail, APPROVAL_DETAIL_MAX_ROWS), [{
3253
+ super(palette, reason === void 0 ? title : `${title}\n${palette.dim(reason)}`, foldRows(detail, APPROVAL_DETAIL_MAX_ROWS, approvalFoldMarker), [{
2382
3254
  value: "allowed-once",
2383
3255
  label: "Allow once",
2384
3256
  description: "run this call"
@@ -2773,6 +3645,89 @@ var ModalQueue = class {
2773
3645
  }
2774
3646
  };
2775
3647
  //#endregion
3648
+ //#region lib/types/screen.js
3649
+ /**
3650
+ * The main screen this application renders through, and the repaint rule the
3651
+ * renderer imposes on everything drawn above the terminal's viewport.
3652
+ *
3653
+ * pi-tui's `TuiMainScreen` draws into the terminal's own scrollback. It
3654
+ * repaints differentially only the lines whose index is at or after
3655
+ * `previousViewportTop`, the top of the last written frame's viewport, and
3656
+ * falls back to a full redraw that writes `ESC[2J ESC[H ESC[3J` - which
3657
+ * discards the terminal's scrollback - as soon as a line above it changed.
3658
+ * `previousViewportTop` is a high-water mark: every frame raises it towards
3659
+ * `frameLines - terminal.rows` and a shorter frame never lowers it again, so a
3660
+ * line that once left the window stays out of reach until the renderer redraws
3661
+ * in full and resets it.
3662
+ *
3663
+ * Anything that redraws lines a component already produced - the streaming
3664
+ * fade, a card fade, the focus gutter - therefore asks {@link repaintFloor} how
3665
+ * far into a block the renderer can still follow it, and
3666
+ * {@link GuardedMainScreen} gives the application the one moment where that
3667
+ * question can be answered: after a frame was built and before it is written.
3668
+ * @module @deepseek-ai/dsh-tui-app/screen
3669
+ */
3670
+ /**
3671
+ * How many times one frame is offered to the guard before it is written. Two
3672
+ * passes let the guard answer for the geometry its own first pass produced -
3673
+ * a gutter rewraps the block it marks - and end on a frame the application's
3674
+ * own record of what is marked describes.
3675
+ */
3676
+ const SETTLE_PASSES = 2;
3677
+ /**
3678
+ * The first line of one block the renderer can still repaint.
3679
+ * @param start - index of the block's first line in the frame.
3680
+ * @param viewportTop - the frame's first repaintable line, as
3681
+ * {@link GuardedMainScreen} hands it to its guard.
3682
+ * @returns the block's own first repaintable line index, 0 while the whole
3683
+ * block lies inside the window.
3684
+ */
3685
+ function repaintFloor(start, viewportTop) {
3686
+ return Math.max(0, viewportTop - start);
3687
+ }
3688
+ /**
3689
+ * The main screen that settles each frame between building it and writing it.
3690
+ *
3691
+ * The guard is handed the frame's first repaintable line: the higher of the
3692
+ * renderer's own `previousViewportTop` and the boundary the frame just built
3693
+ * imposes once it is written. The first term is what the renderer judges this
3694
+ * write against. The second keeps every decision one frame ahead of that
3695
+ * judgement, so what the guard changes today it can still change back
3696
+ * tomorrow. Settling before the write also means a fade reaches the terminal
3697
+ * already settled instead of changing in the next frame, by which time its
3698
+ * lines may sit above the window.
3699
+ */
3700
+ var GuardedMainScreen = class extends TuiMainScreen {
3701
+ guard;
3702
+ /**
3703
+ * @param terminal - the terminal the tree renders into.
3704
+ * @param showHardwareCursor - whether the terminal's own cursor is the caret.
3705
+ * @param guard - given the frame's first repaintable line and the width it
3706
+ * was built at, applies what that geometry decides and reports whether it
3707
+ * changed any line; run at most {@link SETTLE_PASSES} times per frame, each
3708
+ * `true` on a frame that is built again.
3709
+ */
3710
+ constructor(terminal, showHardwareCursor, guard) {
3711
+ super(terminal, showHardwareCursor);
3712
+ this.guard = guard;
3713
+ }
3714
+ /**
3715
+ * Build the frame, let the guard settle what its geometry decides, and build
3716
+ * it again for every pass that changed a line.
3717
+ * @param width - the total width the tree lays out in.
3718
+ * @returns the frame to write, settled against its own geometry.
3719
+ */
3720
+ render(width) {
3721
+ const previousTop = this.captureRenderState().previousViewportTop;
3722
+ let lines = super.render(width);
3723
+ for (let pass = 0; pass < SETTLE_PASSES; pass += 1) {
3724
+ if (!this.guard(Math.max(previousTop, lines.length - this.terminal.rows), width)) break;
3725
+ lines = super.render(width);
3726
+ }
3727
+ return lines;
3728
+ }
3729
+ };
3730
+ //#endregion
2776
3731
  //#region lib/types/sessions.js
2777
3732
  /**
2778
3733
  * Session facts the terminal shows and switches between: the persisted
@@ -2908,7 +3863,10 @@ function renderSubagentPanel(view, render) {
2908
3863
  * the editor it keeps two docked regions the keyboard can take over — the
2909
3864
  * subagent panel and the status bar — and one repeating tick advances their
2910
3865
  * elapsed counters and re-reads a stale subagent listing. A second tick, at
2911
- * its own period, brightens the text of the message streaming right now.
3866
+ * its own period, brightens the text of the message streaming right now and
3867
+ * the tool cards that just landed, each only as far up the frame as the
3868
+ * renderer repaints without discarding the terminal's scrollback
3869
+ * (`./screen.ts`).
2912
3870
  * @module @deepseek-ai/dsh-tui-app/app
2913
3871
  */
2914
3872
  /** A second Ctrl+C inside this window quits. */
@@ -3044,6 +4002,10 @@ const LOCAL_COMMANDS = [
3044
4002
  name: "deliverables",
3045
4003
  description: "List the files the agent presented in this session"
3046
4004
  },
4005
+ {
4006
+ name: "changes",
4007
+ description: "Browse the files the last turn changed (/changes <turn> for an earlier one; Enter shows a file's diff)"
4008
+ },
3047
4009
  {
3048
4010
  name: "subagents",
3049
4011
  description: "Browse the subagent sessions under this session (Enter shows one session's details)"
@@ -3054,7 +4016,7 @@ const LOCAL_COMMANDS = [
3054
4016
  },
3055
4017
  {
3056
4018
  name: "plugins",
3057
- description: "List the composed plugins and their state"
4019
+ description: "List the composed plugins (/plugins bundles, /plugins enable|disable <id>, /plugins add <spec>, /plugins remove <name>)"
3058
4020
  },
3059
4021
  {
3060
4022
  name: "tools",
@@ -3086,6 +4048,8 @@ var TuiApp = class {
3086
4048
  statusSlot = new Container();
3087
4049
  loader;
3088
4050
  modalSlot = new Container();
4051
+ /** Draws the focused transcript section, and nothing at all while the keyboard is elsewhere. */
4052
+ inspector;
3089
4053
  editor;
3090
4054
  /** Holds {@link panel} exactly while the bound session has subagent rows. */
3091
4055
  panelSlot = new Container();
@@ -3108,8 +4072,16 @@ var TuiApp = class {
3108
4072
  home = homedir();
3109
4073
  /** The segments of the last footer draw, in bar order. */
3110
4074
  segments = [];
3111
- /** Which docked region owns the keyboard. */
4075
+ /** Which region owns the keyboard. */
3112
4076
  focus = "editor";
4077
+ /**
4078
+ * Where the transcript focus sits, kept across a page and a return to the
4079
+ * editor. A cursor the current transcript cannot place names nothing, which
4080
+ * is what a session change leaves behind.
4081
+ */
4082
+ cursor;
4083
+ /** The section drawn with the focus gutter right now; set only by {@link TuiApp.settleFrame}. */
4084
+ highlighted;
3113
4085
  /** The segment the status bar holds; read only while the bar has focus. */
3114
4086
  barSelection = FIRST_FOOTER_SEGMENT;
3115
4087
  /** The descendant listing the last reconcile produced, in pre-order. */
@@ -3128,8 +4100,14 @@ var TuiApp = class {
3128
4100
  ticker;
3129
4101
  /** Disposer of the fade tick while it is armed. */
3130
4102
  fadeTicker;
3131
- /** The tail of the message streaming right now; absent between messages. */
3132
- fadeTail;
4103
+ /** The visible-text tail of the message streaming right now; absent between messages. */
4104
+ textTail;
4105
+ /** The reasoning tail of the message streaming right now; absent between messages. */
4106
+ reasoningTail;
4107
+ /** The card fades running right now; each drops itself once it settles. */
4108
+ blockFades = new FadeRegistry();
4109
+ /** Set while {@link TuiApp.bind} replays a session's history, which draws its cards settled. */
4110
+ replaying = false;
3133
4111
  /** Whether this terminal draws a ramp at all, decided once at start. */
3134
4112
  fading = false;
3135
4113
  /** How streamed text is drawn; `none` until the background query settles. */
@@ -3154,8 +4132,12 @@ var TuiApp = class {
3154
4132
  palette,
3155
4133
  toolPreviewLines: deps.toolPreviewLines
3156
4134
  };
3157
- this.tui = new TuiMainScreen(deps.terminal, true);
4135
+ this.tui = new GuardedMainScreen(deps.terminal, true, (viewportTop, width) => this.settleFrame(viewportTop, width));
3158
4136
  this.header = new Text("", 0, 0);
4137
+ this.inspector = new InspectorPane(() => this.inspectorView(), {
4138
+ palette,
4139
+ previewLines: deps.focusPreviewLines
4140
+ });
3159
4141
  this.loader = new Loader(this.tui, palette.accent, palette.dim, "thinking");
3160
4142
  this.loader.stop();
3161
4143
  this.editor = new BarCursorEditor(this.tui, editorTheme(palette), { paddingX: 1 });
@@ -3173,15 +4155,17 @@ var TuiApp = class {
3173
4155
  slot: this.modalSlot,
3174
4156
  focusAfter: this.editor
3175
4157
  });
3176
- for (const child of [
4158
+ const tree = [
3177
4159
  this.header,
3178
4160
  this.chat,
3179
4161
  this.statusSlot,
3180
4162
  this.modalSlot,
4163
+ this.inspector,
3181
4164
  this.editor,
3182
4165
  this.panelSlot,
3183
4166
  this.footer
3184
- ]) this.tui.addChild(child);
4167
+ ];
4168
+ for (const child of tree) this.tui.addChild(child);
3185
4169
  }
3186
4170
  get agent() {
3187
4171
  return this.bound.agent;
@@ -3229,10 +4213,11 @@ var TuiApp = class {
3229
4213
  if (initialPrompt !== void 0) this.submit(initialPrompt);
3230
4214
  }
3231
4215
  /**
3232
- * Decide whether streamed text fades at all, once per run, from the
3233
- * palette, the environment, and the reduced-motion preference. A terminal
3234
- * that draws no ramp tracks no tail and arms no fade tick, so streaming
3235
- * costs there exactly what it did before the effect existed.
4216
+ * Decide whether streamed text and tool cards fade at all, once per run,
4217
+ * from the palette, the environment, and the reduced-motion preference. A
4218
+ * terminal that draws no ramp tracks no tail, attaches no card fade, and
4219
+ * arms no fade tick, so streaming costs there exactly what it does with the
4220
+ * effect switched off.
3236
4221
  */
3237
4222
  startFade() {
3238
4223
  const capability = resolveFadeCapability({
@@ -3280,6 +4265,8 @@ var TuiApp = class {
3280
4265
  /** Draw `next` as the terminal's session: clear the transcript and replay its history. */
3281
4266
  bind(next) {
3282
4267
  this.bound = next;
4268
+ this.focusEditor();
4269
+ this.highlighted = void 0;
3283
4270
  this.chat.clear();
3284
4271
  this.toolBlocks.clear();
3285
4272
  this.toolArguments.clear();
@@ -3289,6 +4276,7 @@ var TuiApp = class {
3289
4276
  this.turnStartedAt = void 0;
3290
4277
  this.streaming = void 0;
3291
4278
  this.endFade();
4279
+ this.blockFades.clear();
3292
4280
  this.usage = EMPTY_USAGE;
3293
4281
  this.pending = [];
3294
4282
  this.subagentEntries = [];
@@ -3296,7 +4284,9 @@ var TuiApp = class {
3296
4284
  this.listingFailure = void 0;
3297
4285
  this.subagentsStale = false;
3298
4286
  this.setWorking(next.agent.status === "running");
4287
+ this.replaying = true;
3299
4288
  for (const event of next.history) this.onSessionEvent(next.agent.session, event);
4289
+ this.replaying = false;
3300
4290
  this.refreshHeader();
3301
4291
  this.refreshFooter();
3302
4292
  this.refreshSubagentPanel();
@@ -3683,6 +4673,67 @@ var TuiApp = class {
3683
4673
  })), TODO_ROW_LAYOUT);
3684
4674
  }
3685
4675
  /**
4676
+ * Walk the files one turn changed: one row per file with its line counts,
4677
+ * and entering a row shows the file's turn-start to turn-end comparison.
4678
+ * @param turn - the turn to browse; the latest announced one when undefined.
4679
+ */
4680
+ async browseChanges(turn) {
4681
+ const sessionId = this.agent.session.id;
4682
+ const signal = new AbortController().signal;
4683
+ const changes = await listTurnChanges(this.deps.ctx, sessionId, turn, signal);
4684
+ if (changes === void 0) {
4685
+ this.notice(turn === void 0 ? "no changed files recorded yet" : `no changed files recorded for turn ${String(turn)}`);
4686
+ return;
4687
+ }
4688
+ if (changes.choices.length === 0) {
4689
+ this.notice(`${changes.heading}: no file listed`);
4690
+ return;
4691
+ }
4692
+ await this.browse(changes.heading, changes.choices.map((choice) => ({
4693
+ item: {
4694
+ value: String(choice.index),
4695
+ label: choice.label,
4696
+ description: choice.description
4697
+ },
4698
+ heading: choice.label,
4699
+ detail: () => changeDiffRows(this.deps.ctx, sessionId, choice, signal)
4700
+ })));
4701
+ }
4702
+ /**
4703
+ * `/plugins` and its management verbs over the profile's plugin manager:
4704
+ * the composed plugins alone, the bundles, a switch of one entry or bundle,
4705
+ * an installation, or a removal.
4706
+ * @param argument - the verb and its operand; empty lists the composed plugins.
4707
+ */
4708
+ async plugins(argument) {
4709
+ const [verb = "", ...rest] = argument.split(/\s+/).filter((word) => word !== "");
4710
+ const operand = rest.join(" ");
4711
+ switch (verb) {
4712
+ case "":
4713
+ this.showRows(listPlugins(this.deps.ctx), "no plugins are listed");
4714
+ return;
4715
+ case "bundles":
4716
+ this.showRows(await listBundles(this.deps.ctx), "no bundles are listed");
4717
+ return;
4718
+ case "enable":
4719
+ case "disable":
4720
+ if (operand === "") break;
4721
+ this.notice(await setPluginEnabled(this.deps.ctx, operand, verb === "enable"), "success");
4722
+ return;
4723
+ case "add":
4724
+ if (operand === "") break;
4725
+ this.notice(`installing ${operand}…`);
4726
+ this.notice(await installBundle(this.deps.ctx, operand), "success");
4727
+ return;
4728
+ case "remove":
4729
+ if (operand === "") break;
4730
+ this.notice(await removeBundle(this.deps.ctx, operand), "success");
4731
+ return;
4732
+ default: break;
4733
+ }
4734
+ this.notice("usage: /plugins · /plugins bundles · /plugins enable|disable <entry id or bundle> · /plugins add <spec> · /plugins remove <bundle>", "error");
4735
+ }
4736
+ /**
3686
4737
  * The browsable entry behind one subagent row: the same detail page the
3687
4738
  * `/subagents` list and the live panel open.
3688
4739
  * @param choice - the listing row.
@@ -3778,12 +4829,13 @@ var TuiApp = class {
3778
4829
  }
3779
4830
  if (this.focus === "bar") return this.onStatusBarKey(data);
3780
4831
  if (this.focus === "panel") return this.onPanelKey(data);
4832
+ if (this.focus === "transcript") return this.onTranscriptKey(data);
3781
4833
  if (matchesKey(data, "shift+up")) {
3782
- this.focusBar();
4834
+ this.focusTranscript();
3783
4835
  return { consume: true };
3784
4836
  }
3785
- if (matchesKey(data, "shift+down") && this.panelView.rows.length > 0) {
3786
- this.focusRegion("panel");
4837
+ if (matchesKey(data, "shift+down")) {
4838
+ this.focusBelowEditor();
3787
4839
  return { consume: true };
3788
4840
  }
3789
4841
  if (matchesKey(data, "escape") && !this.editor.isShowingAutocomplete()) {
@@ -3812,18 +4864,38 @@ var TuiApp = class {
3812
4864
  }
3813
4865
  }
3814
4866
  /**
3815
- * Answer one key while the status bar holds focus. Every key is consumed
3816
- * here, so nothing typed at the bar reaches the editor.
4867
+ * Answer the keys every non-editor region answers the same way: `Escape`
4868
+ * hands the keyboard back to the editor, `Shift+Up` names the conversation,
4869
+ * and `Shift+Down` the status bar.
3817
4870
  * @param data - the raw key bytes.
3818
- * @returns the consume marker the input listener returns.
4871
+ * @returns the consume marker when the key named a region, `undefined` when the focused region owns the key.
3819
4872
  */
3820
- onStatusBarKey(data) {
3821
- if (matchesKey(data, "escape") || matchesKey(data, "shift+down")) {
4873
+ onRegionKey(data) {
4874
+ if (matchesKey(data, "escape")) {
3822
4875
  this.focusEditor();
3823
4876
  return { consume: true };
3824
4877
  }
3825
4878
  if (matchesKey(data, "shift+up")) {
3826
- this.focusRegion(this.panelView.rows.length > 0 ? "panel" : "editor");
4879
+ this.focusTranscript();
4880
+ return { consume: true };
4881
+ }
4882
+ if (matchesKey(data, "shift+down")) {
4883
+ this.focusBar();
4884
+ return { consume: true };
4885
+ }
4886
+ }
4887
+ /**
4888
+ * Answer one key while the status bar holds focus. Every key is consumed
4889
+ * here, so nothing typed at the bar reaches the editor.
4890
+ * @param data - the raw key bytes.
4891
+ * @returns the consume marker the input listener returns.
4892
+ */
4893
+ onStatusBarKey(data) {
4894
+ const region = this.onRegionKey(data);
4895
+ if (region !== void 0) return region;
4896
+ if (matchesKey(data, "up")) {
4897
+ if (this.panelView.rows.length > 0) this.focusPanel(this.panelView.rows.length - 1);
4898
+ else this.focusTranscript();
3827
4899
  return { consume: true };
3828
4900
  }
3829
4901
  if (matchesKey(data, "left") || matchesKey(data, "shift+tab")) {
@@ -3838,27 +4910,60 @@ var TuiApp = class {
3838
4910
  return { consume: true };
3839
4911
  }
3840
4912
  /**
3841
- * Answer one key while the subagent panel holds focus. Every key is
3842
- * consumed here; `Ctrl+C` and `Ctrl+D` never reach this far, keeping their
3843
- * global meaning.
4913
+ * Answer one key while the transcript holds focus. Every key is consumed
4914
+ * here, so nothing typed while reading the conversation reaches the editor;
4915
+ * `Ctrl+C` and `Ctrl+D` never reach this far and keep their global meaning.
3844
4916
  * @param data - the raw key bytes.
3845
4917
  * @returns the consume marker the input listener returns.
3846
4918
  */
3847
- onPanelKey(data) {
3848
- if (matchesKey(data, "escape") || matchesKey(data, "shift+up")) {
4919
+ onTranscriptKey(data) {
4920
+ const region = this.onRegionKey(data);
4921
+ if (region !== void 0) return region;
4922
+ const section = this.focusedSection();
4923
+ /* v8 ignore next 5 -- only a session change empties the transcript, and it hands the keyboard back first */
4924
+ if (section === void 0) {
3849
4925
  this.focusEditor();
3850
4926
  return { consume: true };
3851
4927
  }
3852
- if (matchesKey(data, "shift+down")) {
3853
- this.focusBar();
4928
+ const { cursor, blocks } = section;
4929
+ if (matchesKey(data, "up")) {
4930
+ this.moveCursor(moveBlock(cursor, -1, blocks));
4931
+ return { consume: true };
4932
+ }
4933
+ if (matchesKey(data, "down")) {
4934
+ if (cursor.block === blocks.length - 1) this.focusBelowEditor();
4935
+ else this.moveCursor(moveBlock(cursor, 1, blocks));
3854
4936
  return { consume: true };
3855
4937
  }
4938
+ if (matchesKey(data, "left")) {
4939
+ this.moveCursor(movePart(cursor, -1, blocks));
4940
+ return { consume: true };
4941
+ }
4942
+ if (matchesKey(data, "right")) {
4943
+ this.moveCursor(movePart(cursor, 1, blocks));
4944
+ return { consume: true };
4945
+ }
4946
+ if (matchesKey(data, "enter")) this.openSection(section);
4947
+ return { consume: true };
4948
+ }
4949
+ /**
4950
+ * Answer one key while the subagent panel holds focus. Every key is
4951
+ * consumed here; `Ctrl+C` and `Ctrl+D` never reach this far, keeping their
4952
+ * global meaning.
4953
+ * @param data - the raw key bytes.
4954
+ * @returns the consume marker the input listener returns.
4955
+ */
4956
+ onPanelKey(data) {
4957
+ const region = this.onRegionKey(data);
4958
+ if (region !== void 0) return region;
3856
4959
  if (matchesKey(data, "up")) {
3857
- this.movePanel(-1);
4960
+ if (this.panelSelectionIndex(this.panelView.rows) === 0) this.focusTranscript();
4961
+ else this.movePanel(-1);
3858
4962
  return { consume: true };
3859
4963
  }
3860
4964
  if (matchesKey(data, "down")) {
3861
- this.movePanel(1);
4965
+ if (this.panelSelectionIndex(this.panelView.rows) === this.panelView.rows.length - 1) this.focusBar();
4966
+ else this.movePanel(1);
3862
4967
  return { consume: true };
3863
4968
  }
3864
4969
  if (matchesKey(data, "enter")) this.navigate("subagent details", () => this.openPanelRow());
@@ -3903,16 +5008,15 @@ var TuiApp = class {
3903
5008
  this.refreshFooter();
3904
5009
  }
3905
5010
  /**
3906
- * Move the panel's selection, wrapping at both ends of the drawn rows. The
5011
+ * Move the panel's selection, stopping at both ends of the drawn rows. The
3907
5012
  * rows behind a `+<n> more` row are not selectable; `/subagents` walks the
3908
5013
  * complete tree.
3909
5014
  * @param step - 1 for the next row, -1 for the previous one.
3910
5015
  */
3911
5016
  movePanel(step) {
3912
5017
  const rows = this.panelView.rows;
3913
- const count = rows.length;
3914
- const next = rows[(this.panelSelectionIndex(rows) + step + count) % count];
3915
- /* v8 ignore next -- the wrapped index stays inside the panel's own rows */
5018
+ const next = rows[Math.max(0, Math.min(this.panelSelectionIndex(rows) + step, rows.length - 1))];
5019
+ /* v8 ignore next -- the clamped index stays inside the panel's own rows */
3916
5020
  if (next !== void 0) this.panelSelection = next.id;
3917
5021
  this.refreshSubagentPanel();
3918
5022
  }
@@ -3921,13 +5025,103 @@ var TuiApp = class {
3921
5025
  this.barSelection = FIRST_FOOTER_SEGMENT;
3922
5026
  this.focusRegion("bar");
3923
5027
  }
5028
+ /**
5029
+ * Give the keyboard to the subagent panel on one of its rows.
5030
+ * @param index - the row the selection lands on.
5031
+ */
5032
+ focusPanel(index) {
5033
+ this.panelSelection = this.panelView.rows[index]?.id;
5034
+ this.focusRegion("panel");
5035
+ }
5036
+ /**
5037
+ * Give the keyboard to the region under the editor: the subagent panel's
5038
+ * first row while the panel is drawn, and the status bar otherwise.
5039
+ */
5040
+ focusBelowEditor() {
5041
+ if (this.panelView.rows.length > 0) this.focusPanel(0);
5042
+ else this.focusBar();
5043
+ }
5044
+ /**
5045
+ * Give the keyboard to the transcript on its newest block. A session with
5046
+ * nothing to inspect yet says so and leaves the keyboard where it was.
5047
+ */
5048
+ focusTranscript() {
5049
+ const cursor = enterNewest(navigableBlocks(this.chat.children));
5050
+ if (cursor === void 0) {
5051
+ this.notice("nothing in the transcript to inspect yet");
5052
+ return;
5053
+ }
5054
+ this.cursor = cursor;
5055
+ this.focusRegion("transcript");
5056
+ this.tui.requestRender();
5057
+ }
5058
+ /**
5059
+ * Put the transcript focus on another section.
5060
+ * @param cursor - where the focus moves to.
5061
+ */
5062
+ moveCursor(cursor) {
5063
+ this.cursor = cursor;
5064
+ this.tui.requestRender();
5065
+ }
5066
+ /**
5067
+ * Read the remembered cursor against the transcript as it is drawn right
5068
+ * now: it grew parts and blocks since the cursor was taken, and a session
5069
+ * change replaced the blocks it named altogether. The cursor itself is left
5070
+ * alone, so a page and a trip through the editor come back to the same
5071
+ * section; {@link TuiApp.focusTranscript} replaces it.
5072
+ * @returns the section the cursor names, or undefined when the transcript
5073
+ * has nothing to hold it.
5074
+ */
5075
+ focusedSection() {
5076
+ const blocks = navigableBlocks(this.chat.children);
5077
+ const cursor = this.cursor === void 0 ? void 0 : clampCursor(this.cursor, blocks);
5078
+ if (cursor === void 0) return void 0;
5079
+ const block = blocks[cursor.block];
5080
+ const part = block?.parts()[cursor.part];
5081
+ /* v8 ignore next -- clampCursor settles on a block that carries the part it names */
5082
+ if (block === void 0 || part === void 0) return void 0;
5083
+ return {
5084
+ cursor,
5085
+ blocks,
5086
+ block,
5087
+ part
5088
+ };
5089
+ }
5090
+ /**
5091
+ * Open the focused section as a read-only page and come back to it.
5092
+ * @param section - the focused section.
5093
+ */
5094
+ openSection(section) {
5095
+ const { cursor, blocks } = section;
5096
+ const prompt = new DetailPrompt(this.deps.palette, sectionHeading(cursor, blocks), section.part.rows);
5097
+ this.navigate("section", async () => {
5098
+ await this.showModal(prompt);
5099
+ this.focusRegion("transcript");
5100
+ });
5101
+ }
5102
+ /**
5103
+ * The focused section as the docked inspector draws it.
5104
+ * @returns the view, or undefined while the keyboard is not in the
5105
+ * transcript, which draws no inspector at all.
5106
+ */
5107
+ inspectorView() {
5108
+ const section = this.focusedSection();
5109
+ if (section === void 0 || this.focus !== "transcript") return void 0;
5110
+ const { cursor, blocks } = section;
5111
+ return {
5112
+ heading: sectionHeading(cursor, blocks),
5113
+ parts: partLabels(cursor, blocks),
5114
+ rows: section.part.rows,
5115
+ highlighted: this.highlighted !== void 0
5116
+ };
5117
+ }
3924
5118
  /** Hand the keyboard back to the editor; a no-op while the editor already has it. */
3925
5119
  focusEditor() {
3926
5120
  this.focusRegion("editor");
3927
5121
  }
3928
5122
  /**
3929
- * Move the keyboard between the docked regions and redraw both of them, so
3930
- * the region losing focus stops drawing its selection.
5123
+ * Move the keyboard between the regions and redraw the docked ones, so the
5124
+ * region losing focus stops drawing its selection.
3931
5125
  * @param region - the region that takes the keyboard.
3932
5126
  */
3933
5127
  focusRegion(region) {
@@ -3986,7 +5180,7 @@ var TuiApp = class {
3986
5180
  });
3987
5181
  this.submittedIds.add(message.id);
3988
5182
  const shown = attachments.length === 0 ? text : `${text}\n${attachments.map((attachment) => `[${attachment.block.type}: ${attachment.name}]`).join(" ")}`;
3989
- this.chat.addChild(new UserBlock(this.theme, shown));
5183
+ this.chat.addChild(new UserBlock(this.theme, shown, this.turn));
3990
5184
  if (agent.status !== "running") agent.followup(message);
3991
5185
  else if (mode === "steer") {
3992
5186
  agent.steer(message);
@@ -4066,6 +5260,15 @@ var TuiApp = class {
4066
5260
  case "deliverables":
4067
5261
  this.showRows(await listDeliverables(this.deps.ctx, this.agent.session.id, new AbortController().signal), "nothing presented yet");
4068
5262
  return;
5263
+ case "changes": {
5264
+ const turn = argument === "" ? void 0 : Number(argument);
5265
+ if (turn !== void 0 && !(Number.isSafeInteger(turn) && turn > 0)) {
5266
+ this.notice("usage: /changes · /changes <turn>", "error");
5267
+ return;
5268
+ }
5269
+ await this.browseChanges(turn);
5270
+ return;
5271
+ }
4069
5272
  case "subagents": {
4070
5273
  const choices = await listSubagentChoices(this.deps.ctx, this.agent.session.id, new AbortController().signal);
4071
5274
  if (choices.length === 0) {
@@ -4079,7 +5282,7 @@ var TuiApp = class {
4079
5282
  await this.settings(argument);
4080
5283
  return;
4081
5284
  case "plugins":
4082
- this.showRows(listPlugins(this.deps.ctx), "no plugins are listed");
5285
+ await this.plugins(argument);
4083
5286
  return;
4084
5287
  default: await this.runSharedCommand(line, name);
4085
5288
  }
@@ -4093,8 +5296,9 @@ var TuiApp = class {
4093
5296
  "@ completes paths and sessions (workspace, ../, ~/, absolute) · / completes commands",
4094
5297
  "Esc stops the running turn · Ctrl+O expands or collapses tool output",
4095
5298
  "Shift+Tab cycles the current model's reasoning effort for the next request",
4096
- "Shift+Up focuses the status bar: ← → select a fact, Enter shows its details, Esc returns to the input",
4097
- "Shift+Up again focuses the subagent panel while it is drawn: select a child, Enter shows its session",
5299
+ "Shift+Up focuses the transcript, Shift+Down the subagent panel or the status bar",
5300
+ "Then move between blocks, panel rows, and the bar; move between a block's parts or the bar's segments",
5301
+ "Enter opens the focused section or segment, Esc returns to the input",
4098
5302
  "Ctrl+C clears the input (twice quits) · Ctrl+D on an empty input quits"
4099
5303
  ];
4100
5304
  this.chat.addChild(new Text([
@@ -4535,7 +5739,7 @@ var TuiApp = class {
4535
5739
  }
4536
5740
  streamingBlock() {
4537
5741
  if (this.streaming === void 0) {
4538
- this.streaming = new AssistantBlock(this.theme);
5742
+ this.streaming = new AssistantBlock(this.theme, this.turn);
4539
5743
  this.chat.addChild(this.streaming);
4540
5744
  }
4541
5745
  return this.streaming;
@@ -4550,48 +5754,109 @@ var TuiApp = class {
4550
5754
  const block = this.streamingBlock();
4551
5755
  block.appendText(delta);
4552
5756
  if (!this.fading) return;
4553
- if (this.fadeTail === void 0) {
4554
- this.fadeTail = new FadeTracker({ steps: this.deps.fadeSteps });
4555
- block.setFade({
4556
- spans: () => this.fadeTail?.spans() ?? [],
4557
- style: () => this.fadeStyle,
4558
- steps: this.deps.fadeSteps,
4559
- flush: () => {
4560
- this.flushFade();
4561
- }
4562
- });
5757
+ if (this.textTail === void 0) {
5758
+ this.textTail = this.createTail();
5759
+ block.setFade(this.tailRender(() => this.textTail));
5760
+ }
5761
+ this.textTail.append(delta);
5762
+ this.updateFadeTicker();
5763
+ }
5764
+ /**
5765
+ * Take one reasoning delta, which fades in on its own tail: the reasoning
5766
+ * and the visible text of one message stream at different times and each
5767
+ * brightens from the moment its own words appeared.
5768
+ * @param delta - the streamed reasoning delta.
5769
+ */
5770
+ appendStreamedReasoning(delta) {
5771
+ const block = this.streamingBlock();
5772
+ block.appendReasoning(delta);
5773
+ if (!this.fading) return;
5774
+ if (this.reasoningTail === void 0) {
5775
+ this.reasoningTail = this.createTail();
5776
+ block.setReasoningFade(this.tailRender(() => this.reasoningTail));
4563
5777
  }
4564
- this.fadeTail.append(delta);
5778
+ this.reasoningTail.append(delta);
4565
5779
  this.updateFadeTicker();
4566
5780
  }
4567
5781
  /**
4568
- * Settle what the current block has drawn and stop tracking it: the tail
4569
- * goes, so its text renders at the terminal's foreground from the next
4570
- * render on, and no fade tick stays armed between messages.
5782
+ * Start tracking one streaming region against the application's clock.
5783
+ * @returns the tail deltas are appended to.
5784
+ */
5785
+ createTail() {
5786
+ return new FadeTracker({
5787
+ steps: this.deps.fadeSteps,
5788
+ stepMs: this.deps.fadeStepMs,
5789
+ now: () => this.deps.now()
5790
+ });
5791
+ }
5792
+ /**
5793
+ * The live view of one tail the streaming block reads per render.
5794
+ * @param tail - reads the field the tail is held in, so a render after the
5795
+ * message settled sees the empty tail rather than the one it was given.
5796
+ * @returns the spans, the drawing settings, and the width-change flush.
5797
+ */
5798
+ tailRender(tail) {
5799
+ return {
5800
+ spans: () => tail()?.spans() ?? [],
5801
+ style: () => this.fadeStyle,
5802
+ steps: this.deps.fadeSteps,
5803
+ flush: () => {
5804
+ this.flushFade();
5805
+ }
5806
+ };
5807
+ }
5808
+ /**
5809
+ * Fade one group of a card's rows in from the terminal background, from the
5810
+ * instant the log carried them. A terminal that draws no ramp and a session
5811
+ * being replayed fade nothing.
5812
+ * @param attach - hands the fade to the block that draws those rows.
5813
+ */
5814
+ fadeBlock(attach) {
5815
+ if (!this.fading || this.replaying) return;
5816
+ const clock = new BlockFadeClock({
5817
+ bornAt: this.deps.now(),
5818
+ stepMs: this.deps.fadeStepMs,
5819
+ steps: this.deps.fadeSteps,
5820
+ now: () => this.deps.now()
5821
+ });
5822
+ this.blockFades.add(clock);
5823
+ attach({
5824
+ age: () => clock.age(),
5825
+ style: () => this.fadeStyle
5826
+ });
5827
+ this.updateFadeTicker();
5828
+ }
5829
+ /**
5830
+ * Settle what the current message has drawn and stop tracking it: both
5831
+ * tails go, so their text renders at the terminal's foreground from the next
5832
+ * render on. Card fades are left to expire on their own clock, because a
5833
+ * card that landed at the end of a turn keeps brightening after it.
4571
5834
  */
4572
5835
  endFade() {
4573
- this.fadeTail = void 0;
5836
+ this.textTail = void 0;
5837
+ this.reasoningTail = void 0;
4574
5838
  this.updateFadeTicker();
4575
5839
  }
4576
5840
  /**
4577
- * Settle what is drawn while the message keeps streaming, which the block
4578
- * asks for after a width change. The tracker stays, so what it knows about
4579
- * the arrival rate survives a resize and only the tail is dropped.
5841
+ * Settle what is drawn while the message keeps streaming, which a block asks
5842
+ * for after a width change: the columns either tail was matched against no
5843
+ * longer describe the rewrapped lines.
4580
5844
  */
4581
5845
  flushFade() {
4582
- this.fadeTail?.flush();
5846
+ this.textTail?.flush();
5847
+ this.reasoningTail?.flush();
4583
5848
  this.updateFadeTicker();
4584
5849
  }
4585
5850
  /**
4586
- * Arm the fade tick while a chunk is still below the last brightness level
4587
- * and disarm it otherwise, so a session that is not streaming runs no fade
4588
- * timer. Exactly one runs at a time, and a stopped app runs none.
5851
+ * Arm the fade tick while streamed text or a card still draws below the last
5852
+ * brightness level and disarm it otherwise, so a session that is not
5853
+ * streaming runs no fade timer. Exactly one runs at a time, and a stopped
5854
+ * app runs none.
4589
5855
  */
4590
5856
  updateFadeTicker() {
4591
- const tail = this.fadeTail;
4592
- if (!this.stopped && tail !== void 0 && tail.needsRepaint()) {
5857
+ if (!this.stopped && this.fadesMoving()) {
4593
5858
  this.fadeTicker ??= this.deps.tick(() => {
4594
- this.onFadeTick(tail);
5859
+ this.onFadeTick();
4595
5860
  }, this.deps.fadeStepMs);
4596
5861
  return;
4597
5862
  }
@@ -4601,14 +5866,64 @@ var TuiApp = class {
4601
5866
  ticker();
4602
5867
  }
4603
5868
  /**
4604
- * One fade period over the tail the tick was armed for. Every change to the
4605
- * tail runs {@link TuiApp.updateFadeTicker} again, so an armed period always
4606
- * holds that same tail and always moves a chunk's color; the render request
4607
- * redraws the lines it moved, and the disarm check follows the ageing.
4608
- * @param tail - the tail this tick was armed for.
5869
+ * Whether anything the application fades still draws below the last
5870
+ * brightness level.
5871
+ * @returns true while a tail or a card fade keeps changing what is drawn.
5872
+ */
5873
+ fadesMoving() {
5874
+ return this.textTail?.needsRepaint() === true || this.reasoningTail?.needsRepaint() === true || this.blockFades.needsRepaint();
5875
+ }
5876
+ /**
5877
+ * Apply everything the frame's geometry decides, on the frame that was just
5878
+ * built and before it is written.
5879
+ *
5880
+ * Two effects redraw lines a component already produced and are therefore
5881
+ * held to the renderer's repaint window ({@link GuardedMainScreen}): a
5882
+ * running fade, which is told each block's own first repaintable line, and
5883
+ * the focus gutter, which a block gains or loses only while its first line
5884
+ * lies inside the window. A focused block above the window simply stays
5885
+ * unmarked, and the inspector reports that instead.
5886
+ * @param viewportTop - the frame's first repaintable line.
5887
+ * @param width - the width it was built at.
5888
+ * @returns whether anything changed a line, so the frame is built again
5889
+ * before it is written.
5890
+ */
5891
+ settleFrame(viewportTop, width) {
5892
+ const section = this.focusedSection();
5893
+ const wanted = section !== void 0 && this.focus === "transcript" ? {
5894
+ block: section.block,
5895
+ part: section.part.kind
5896
+ } : void 0;
5897
+ const fades = this.fadesMoving();
5898
+ if (!fades && wanted === void 0 && this.highlighted === void 0) return false;
5899
+ let start = this.header.render(width).length;
5900
+ let wantedStart;
5901
+ let changed = false;
5902
+ for (const child of this.chat.children) {
5903
+ if (isSectionSource(child) && child === wanted?.block) wantedStart = start;
5904
+ if (fades && (child instanceof AssistantBlock || child instanceof ToolBlock)) {
5905
+ if (child.setRepaintFloor(repaintFloor(start, viewportTop))) changed = true;
5906
+ }
5907
+ start += child.render(width).length;
5908
+ }
5909
+ const target = wantedStart !== void 0 && repaintFloor(wantedStart, viewportTop) === 0 ? wanted : void 0;
5910
+ const current = this.highlighted;
5911
+ if (current?.block === target?.block && current?.part === target?.part) return changed;
5912
+ current?.block.setHighlight(void 0);
5913
+ target?.block.setHighlight(target.part);
5914
+ this.highlighted = target;
5915
+ return true;
5916
+ }
5917
+ /**
5918
+ * One fade period: every tracked fade drops what settled since the last one,
5919
+ * the render request redraws the levels the clock moved, and the disarm
5920
+ * check follows. Ages come from the clock, so this period repaints the
5921
+ * levels the elapsed time asks for however long the period itself ran.
4609
5922
  */
4610
- onFadeTick(tail) {
4611
- tail.tick();
5923
+ onFadeTick() {
5924
+ this.textTail?.tick();
5925
+ this.reasoningTail?.tick();
5926
+ this.blockFades.tick();
4612
5927
  this.tui.requestRender();
4613
5928
  this.updateFadeTicker();
4614
5929
  }
@@ -4625,7 +5940,7 @@ var TuiApp = class {
4625
5940
  if (chunk.text !== "") this.appendStreamedText(chunk.text);
4626
5941
  break;
4627
5942
  case "reasoning-delta":
4628
- if (chunk.text !== "") this.streamingBlock().appendReasoning(chunk.text);
5943
+ if (chunk.text !== "") this.appendStreamedReasoning(chunk.text);
4629
5944
  break;
4630
5945
  case "tool-call-delta":
4631
5946
  if (chunk.name !== void 0) this.loader.setMessage(`calling ${chunk.name}`);
@@ -4684,10 +5999,13 @@ var TuiApp = class {
4684
5999
  const { callId, name, arguments: argumentsJson } = event.data;
4685
6000
  const args = parseArguments(argumentsJson);
4686
6001
  this.toolArguments.set(callId, args);
4687
- const block = new ToolBlock(this.theme, name, toolCallText(argumentsJson, this.presentCall(name, args)));
6002
+ const block = new ToolBlock(this.theme, name, toolCallText(argumentsJson, this.presentCall(name, args)), this.turn);
4688
6003
  block.setExpanded(this.toolsExpanded);
4689
6004
  this.toolBlocks.set(callId, block);
4690
6005
  this.chat.addChild(block);
6006
+ this.fadeBlock((fade) => {
6007
+ block.setFade(fade);
6008
+ });
4691
6009
  break;
4692
6010
  }
4693
6011
  case "tool/result": {
@@ -4697,6 +6015,9 @@ var TuiApp = class {
4697
6015
  const isError = result.isError === true;
4698
6016
  const view = this.presentResult(block.name, this.toolArguments.get(result.toolCallId), result.content, isError, event.data.meta);
4699
6017
  block.setResult(toolResultLines(view, result.content), isError);
6018
+ this.fadeBlock((fade) => {
6019
+ block.setResultFade(fade);
6020
+ });
4700
6021
  this.loader.setMessage("thinking");
4701
6022
  break;
4702
6023
  }
@@ -4718,6 +6039,12 @@ var TuiApp = class {
4718
6039
  case "compaction/summary":
4719
6040
  this.notice(compactionNotice(event.data));
4720
6041
  break;
6042
+ case "workspace/changes": {
6043
+ const summary = this.deps.ctx.get("workspaceChanges")?.summary(session.id, event.seq);
6044
+ if (summary === void 0) return;
6045
+ this.notice(changesNotice(summary));
6046
+ break;
6047
+ }
4721
6048
  case "llm/retry":
4722
6049
  this.loader.setMessage(retryMessage(event.data));
4723
6050
  break;
@@ -4755,7 +6082,7 @@ var TuiApp = class {
4755
6082
  if (source.kind === "user") {
4756
6083
  if (this.submittedIds.has(message.id)) return;
4757
6084
  const attachments = message.content.filter((block) => block.type !== "text").map((block) => `[${block.type}]`);
4758
- this.chat.addChild(new UserBlock(this.theme, [contentText(message.content), ...attachments].filter((part) => part !== "").join("\n")));
6085
+ this.chat.addChild(new UserBlock(this.theme, [contentText(message.content), ...attachments].filter((part) => part !== "").join("\n"), this.turn));
4759
6086
  return;
4760
6087
  }
4761
6088
  if (source.kind === "plugin" && source.form === "notice") this.chat.addChild(new NoticeBlock(this.theme, source.summary));
@@ -4864,9 +6191,10 @@ const Config = z.object({
4864
6191
  prompt: z.string(),
4865
6192
  resume: z.string(),
4866
6193
  toolPreviewLines: z.natural().min(1).default(8),
6194
+ focusPreviewLines: z.natural().min(1).default(12),
4867
6195
  liveRefreshMs: z.natural().min(100).default(1e3),
4868
- streamFadeSteps: z.natural().min(2).default(5),
4869
- streamFadeStepMs: z.natural().min(16).default(40),
6196
+ streamFadeSteps: z.natural().min(2).default(8),
6197
+ streamFadeStepMs: z.natural().min(16).default(33),
4870
6198
  reducedMotion: z.boolean().default(false),
4871
6199
  openBrowser: z.boolean().default(true)
4872
6200
  });
@@ -5039,6 +6367,7 @@ async function run(ctx, config, host) {
5039
6367
  terminal: host.createTerminal(),
5040
6368
  palette: createPalette(host.color),
5041
6369
  toolPreviewLines: config.toolPreviewLines,
6370
+ focusPreviewLines: config.focusPreviewLines,
5042
6371
  liveRefreshMs: config.liveRefreshMs,
5043
6372
  fadeSteps: config.streamFadeSteps,
5044
6373
  fadeStepMs: config.streamFadeStepMs,