@agi-fans/dsh-tui 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/LICENSE +26 -0
  2. package/lib/CHANGELOG.md +199 -1
  3. package/lib/chrome/box.d.ts +1 -18
  4. package/lib/chrome/box.js +2 -45
  5. package/lib/chrome/box.js.map +1 -1
  6. package/lib/chrome/code-highlight.js +4 -4
  7. package/lib/chrome/code-highlight.js.map +1 -1
  8. package/lib/chrome/command-output.d.ts +0 -1
  9. package/lib/chrome/command-output.js +11 -5
  10. package/lib/chrome/command-output.js.map +1 -1
  11. package/lib/chrome/goal-bar.js +1 -1
  12. package/lib/chrome/goal-bar.js.map +1 -1
  13. package/lib/chrome/main-screen-renderer.js +4 -3
  14. package/lib/chrome/main-screen-renderer.js.map +1 -1
  15. package/lib/chrome/markdown.d.ts +3 -3
  16. package/lib/chrome/markdown.js +85 -36
  17. package/lib/chrome/markdown.js.map +1 -1
  18. package/lib/chrome/md-style.d.ts +5 -2
  19. package/lib/chrome/md-style.js +13 -4
  20. package/lib/chrome/md-style.js.map +1 -1
  21. package/lib/chrome/renderer.d.ts +37 -1
  22. package/lib/chrome/renderer.js.map +1 -1
  23. package/lib/chrome/status-line.d.ts +3 -3
  24. package/lib/chrome/status-line.js +5 -5
  25. package/lib/chrome/status-line.js.map +1 -1
  26. package/lib/chrome/theme.d.ts +8 -3
  27. package/lib/chrome/theme.js +51 -153
  28. package/lib/chrome/theme.js.map +1 -1
  29. package/lib/commands/auth-account.d.ts +9 -0
  30. package/lib/commands/auth-account.js +202 -0
  31. package/lib/commands/auth-account.js.map +1 -0
  32. package/lib/commands/auth.js +238 -414
  33. package/lib/commands/auth.js.map +1 -1
  34. package/lib/commands/diff.js +22 -16
  35. package/lib/commands/diff.js.map +1 -1
  36. package/lib/commands/export.d.ts +0 -1
  37. package/lib/commands/export.js +97 -32
  38. package/lib/commands/export.js.map +1 -1
  39. package/lib/commands/files.js +2 -8
  40. package/lib/commands/files.js.map +1 -1
  41. package/lib/commands/integrations.d.ts +12 -1
  42. package/lib/commands/integrations.js +120 -23
  43. package/lib/commands/integrations.js.map +1 -1
  44. package/lib/commands/jobs-browser.d.ts +3 -0
  45. package/lib/commands/jobs-browser.js +152 -0
  46. package/lib/commands/jobs-browser.js.map +1 -0
  47. package/lib/commands/jobs.d.ts +3 -14
  48. package/lib/commands/jobs.js +26 -18
  49. package/lib/commands/jobs.js.map +1 -1
  50. package/lib/commands/model.d.ts +3 -0
  51. package/lib/commands/model.js +197 -120
  52. package/lib/commands/model.js.map +1 -1
  53. package/lib/commands/open-external.d.ts +2 -0
  54. package/lib/commands/open-external.js +19 -0
  55. package/lib/commands/open-external.js.map +1 -0
  56. package/lib/commands/permission.js +65 -54
  57. package/lib/commands/permission.js.map +1 -1
  58. package/lib/commands/plugins.js +381 -139
  59. package/lib/commands/plugins.js.map +1 -1
  60. package/lib/commands/schedule-catalog.d.ts +12 -0
  61. package/lib/commands/schedule-catalog.js +41 -0
  62. package/lib/commands/schedule-catalog.js.map +1 -0
  63. package/lib/commands/schedule-history.d.ts +4 -0
  64. package/lib/commands/schedule-history.js +62 -0
  65. package/lib/commands/schedule-history.js.map +1 -0
  66. package/lib/commands/schedule.d.ts +12 -15
  67. package/lib/commands/schedule.js +220 -187
  68. package/lib/commands/schedule.js.map +1 -1
  69. package/lib/commands/session-configuration.d.ts +3 -0
  70. package/lib/commands/session-configuration.js +62 -28
  71. package/lib/commands/session-configuration.js.map +1 -1
  72. package/lib/commands/session.js +111 -66
  73. package/lib/commands/session.js.map +1 -1
  74. package/lib/commands/terminal.js +14 -8
  75. package/lib/commands/terminal.js.map +1 -1
  76. package/lib/definition.d.ts +112 -15
  77. package/lib/index.d.ts +1 -0
  78. package/lib/index.js +1 -0
  79. package/lib/index.js.map +1 -1
  80. package/lib/input/actions.d.ts +1 -1
  81. package/lib/input/actions.js +5 -2
  82. package/lib/input/actions.js.map +1 -1
  83. package/lib/input/composer-files.d.ts +2 -0
  84. package/lib/input/composer-files.js +13 -3
  85. package/lib/input/composer-files.js.map +1 -1
  86. package/lib/input/image-paste.d.ts +5 -12
  87. package/lib/input/image-paste.js +32 -28
  88. package/lib/input/image-paste.js.map +1 -1
  89. package/lib/input/key-test.d.ts +5 -0
  90. package/lib/input/key-test.js +19 -0
  91. package/lib/input/key-test.js.map +1 -0
  92. package/lib/input/keys.d.ts +2 -0
  93. package/lib/input/keys.js +4 -1
  94. package/lib/input/keys.js.map +1 -1
  95. package/lib/locale/index.d.ts +6 -0
  96. package/lib/locale/index.js +32 -0
  97. package/lib/locale/index.js.map +1 -0
  98. package/lib/locale/prompt.d.ts +4 -0
  99. package/lib/locale/prompt.js +24 -0
  100. package/lib/locale/prompt.js.map +1 -0
  101. package/lib/locale/zh.d.ts +1114 -0
  102. package/lib/locale/zh.js +1115 -0
  103. package/lib/locale/zh.js.map +1 -0
  104. package/lib/prompt-intents.d.ts +4 -0
  105. package/lib/prompt-intents.js +4 -0
  106. package/lib/prompt-intents.js.map +1 -1
  107. package/lib/runtime/account-settings.d.ts +18 -0
  108. package/lib/runtime/account-settings.js +241 -0
  109. package/lib/runtime/account-settings.js.map +1 -0
  110. package/lib/runtime/agent-profile.d.ts +3 -3
  111. package/lib/runtime/agent-profile.js +4 -4
  112. package/lib/runtime/agent-profile.js.map +1 -1
  113. package/lib/runtime/btw-policy.js +2 -1
  114. package/lib/runtime/btw-policy.js.map +1 -1
  115. package/lib/runtime/btw.js +1 -2
  116. package/lib/runtime/btw.js.map +1 -1
  117. package/lib/runtime/composer-images.d.ts +2 -2
  118. package/lib/runtime/composer-images.js +4 -4
  119. package/lib/runtime/composer-images.js.map +1 -1
  120. package/lib/runtime/composer-shell.js +27 -1
  121. package/lib/runtime/composer-shell.js.map +1 -1
  122. package/lib/runtime/file-browser.d.ts +19 -0
  123. package/lib/runtime/file-browser.js +291 -0
  124. package/lib/runtime/file-browser.js.map +1 -0
  125. package/lib/runtime/file-review.d.ts +6 -9
  126. package/lib/runtime/file-review.js +91 -7
  127. package/lib/runtime/file-review.js.map +1 -1
  128. package/lib/runtime/help-reader.d.ts +12 -0
  129. package/lib/runtime/help-reader.js +50 -0
  130. package/lib/runtime/help-reader.js.map +1 -0
  131. package/lib/runtime/human-interaction.js +1 -1
  132. package/lib/runtime/human-interaction.js.map +1 -1
  133. package/lib/runtime/model-catalog-editor.d.ts +12 -0
  134. package/lib/runtime/model-catalog-editor.js +215 -0
  135. package/lib/runtime/model-catalog-editor.js.map +1 -0
  136. package/lib/runtime/model-settings.d.ts +11 -0
  137. package/lib/runtime/model-settings.js +404 -0
  138. package/lib/runtime/model-settings.js.map +1 -0
  139. package/lib/runtime/plugin-settings.d.ts +4 -1
  140. package/lib/runtime/plugin-settings.js +164 -88
  141. package/lib/runtime/plugin-settings.js.map +1 -1
  142. package/lib/runtime/prompt-browser.d.ts +9 -0
  143. package/lib/runtime/prompt-browser.js +19 -0
  144. package/lib/runtime/prompt-browser.js.map +1 -0
  145. package/lib/runtime/provider-local.d.ts +27 -27
  146. package/lib/runtime/provider-local.js +1264 -308
  147. package/lib/runtime/provider-local.js.map +1 -1
  148. package/lib/runtime/reference-reader.d.ts +15 -0
  149. package/lib/runtime/reference-reader.js +78 -0
  150. package/lib/runtime/reference-reader.js.map +1 -0
  151. package/lib/runtime/runner.js +38 -29
  152. package/lib/runtime/runner.js.map +1 -1
  153. package/lib/runtime/session-runtime.js +1 -1
  154. package/lib/runtime/session-runtime.js.map +1 -1
  155. package/lib/runtime/settings-draft.d.ts +21 -0
  156. package/lib/runtime/settings-draft.js +166 -0
  157. package/lib/runtime/settings-draft.js.map +1 -0
  158. package/lib/runtime/settings-preferences.js +1 -1
  159. package/lib/runtime/settings-preferences.js.map +1 -1
  160. package/lib/runtime/startup-notices.d.ts +0 -1
  161. package/lib/runtime/startup-notices.js +35 -6
  162. package/lib/runtime/startup-notices.js.map +1 -1
  163. package/lib/runtime/subagent-model-selection.js +2 -1
  164. package/lib/runtime/subagent-model-selection.js.map +1 -1
  165. package/lib/runtime/subagent-settings.d.ts +14 -0
  166. package/lib/runtime/subagent-settings.js +288 -0
  167. package/lib/runtime/subagent-settings.js.map +1 -0
  168. package/lib/runtime/terminal-notifications.d.ts +3 -0
  169. package/lib/runtime/terminal-notifications.js +13 -8
  170. package/lib/runtime/terminal-notifications.js.map +1 -1
  171. package/lib/runtime/terminal-probe.d.ts +2 -0
  172. package/lib/runtime/terminal-probe.js +9 -0
  173. package/lib/runtime/terminal-probe.js.map +1 -1
  174. package/lib/runtime/tool-presentation.js.map +1 -1
  175. package/lib/runtime/tool-reader.d.ts +5 -0
  176. package/lib/runtime/tool-reader.js +27 -0
  177. package/lib/runtime/tool-reader.js.map +1 -0
  178. package/lib/runtime/web-settings.d.ts +14 -0
  179. package/lib/runtime/web-settings.js +339 -0
  180. package/lib/runtime/web-settings.js.map +1 -0
  181. package/lib/session/command-attachments.d.ts +17 -0
  182. package/lib/session/command-attachments.js +50 -0
  183. package/lib/session/command-attachments.js.map +1 -0
  184. package/lib/session/context-diagnostics.d.ts +16 -0
  185. package/lib/session/context-diagnostics.js +15 -0
  186. package/lib/session/context-diagnostics.js.map +1 -1
  187. package/lib/session/external-agents.d.ts +3 -1
  188. package/lib/session/external-agents.js +35 -10
  189. package/lib/session/external-agents.js.map +1 -1
  190. package/lib/session/generation-continuation.d.ts +11 -0
  191. package/lib/session/generation-continuation.js +34 -0
  192. package/lib/session/generation-continuation.js.map +1 -0
  193. package/lib/session/goal-controls.d.ts +5 -0
  194. package/lib/session/goal-controls.js +81 -0
  195. package/lib/session/goal-controls.js.map +1 -0
  196. package/lib/session/interaction-adapter.d.ts +7 -3
  197. package/lib/session/interaction-adapter.js +121 -49
  198. package/lib/session/interaction-adapter.js.map +1 -1
  199. package/lib/session/message-queue.d.ts +2 -0
  200. package/lib/session/message-queue.js +102 -17
  201. package/lib/session/message-queue.js.map +1 -1
  202. package/lib/session/pending-inputs.d.ts +30 -0
  203. package/lib/session/pending-inputs.js +183 -0
  204. package/lib/session/pending-inputs.js.map +1 -0
  205. package/lib/session/session-configuration.js +1 -1
  206. package/lib/session/session-configuration.js.map +1 -1
  207. package/lib/session/session-controller.d.ts +32 -13
  208. package/lib/session/session-controller.js +444 -98
  209. package/lib/session/session-controller.js.map +1 -1
  210. package/lib/session/subagent-roster.d.ts +1 -0
  211. package/lib/session/subagent-roster.js +16 -5
  212. package/lib/session/subagent-roster.js.map +1 -1
  213. package/lib/session/subagent-tracker.d.ts +2 -0
  214. package/lib/session/subagent-tracker.js +18 -0
  215. package/lib/session/subagent-tracker.js.map +1 -1
  216. package/lib/session/tui-settings.d.ts +9 -5
  217. package/lib/session/tui-settings.js +3 -1
  218. package/lib/session/tui-settings.js.map +1 -1
  219. package/lib/session/workflow-projection.d.ts +2 -1
  220. package/lib/session/workflow-projection.js +34 -4
  221. package/lib/session/workflow-projection.js.map +1 -1
  222. package/lib/views/autocomplete.d.ts +10 -7
  223. package/lib/views/autocomplete.js +44 -37
  224. package/lib/views/autocomplete.js.map +1 -1
  225. package/lib/views/context-overview.d.ts +4 -0
  226. package/lib/views/context-overview.js +43 -0
  227. package/lib/views/context-overview.js.map +1 -0
  228. package/lib/views/copy-targets.d.ts +6 -2
  229. package/lib/views/copy-targets.js +19 -14
  230. package/lib/views/copy-targets.js.map +1 -1
  231. package/lib/views/document-reader.d.ts +10 -1
  232. package/lib/views/document-reader.js +59 -5
  233. package/lib/views/document-reader.js.map +1 -1
  234. package/lib/views/event-views.js +29 -11
  235. package/lib/views/event-views.js.map +1 -1
  236. package/lib/views/file-actions.js +21 -0
  237. package/lib/views/file-actions.js.map +1 -1
  238. package/lib/views/file-browser.d.ts +98 -0
  239. package/lib/views/file-browser.js +120 -0
  240. package/lib/views/file-browser.js.map +1 -0
  241. package/lib/views/history-search.js +4 -4
  242. package/lib/views/history-search.js.map +1 -1
  243. package/lib/views/hotkey-format.d.ts +3 -2
  244. package/lib/views/hotkey-format.js +4 -3
  245. package/lib/views/hotkey-format.js.map +1 -1
  246. package/lib/views/hotkeys.js +10 -12
  247. package/lib/views/hotkeys.js.map +1 -1
  248. package/lib/views/list-view.js +16 -11
  249. package/lib/views/list-view.js.map +1 -1
  250. package/lib/views/prompt-selector.d.ts +23 -1
  251. package/lib/views/prompt-selector.js +123 -60
  252. package/lib/views/prompt-selector.js.map +1 -1
  253. package/lib/views/settings-list.d.ts +6 -1
  254. package/lib/views/settings-list.js +69 -46
  255. package/lib/views/settings-list.js.map +1 -1
  256. package/lib/views/tool-actions.d.ts +16 -0
  257. package/lib/views/tool-actions.js +29 -0
  258. package/lib/views/tool-actions.js.map +1 -0
  259. package/lib/views/trajectory-timeline.d.ts +5 -6
  260. package/lib/views/trajectory-timeline.js +25 -15
  261. package/lib/views/trajectory-timeline.js.map +1 -1
  262. package/lib/views/trajectory.d.ts +23 -2
  263. package/lib/views/trajectory.js +404 -186
  264. package/lib/views/trajectory.js.map +1 -1
  265. package/lib/views/transcript-render.d.ts +39 -15
  266. package/lib/views/transcript-render.js +406 -208
  267. package/lib/views/transcript-render.js.map +1 -1
  268. package/lib/views/transcript-types.d.ts +3 -2
  269. package/lib/views/transcript-types.js.map +1 -1
  270. package/lib/views/workflow.d.ts +16 -0
  271. package/lib/views/workflow.js +42 -0
  272. package/lib/views/workflow.js.map +1 -0
  273. package/package.json +61 -58
  274. package/lib/chrome/welcome-tips.d.ts +0 -23
  275. package/lib/chrome/welcome-tips.js +0 -24
  276. package/lib/chrome/welcome-tips.js.map +0 -1
  277. package/lib/session/steering.d.ts +0 -3
  278. package/lib/session/steering.js +0 -9
  279. package/lib/session/steering.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"composer-images.js","sourceRoot":"","sources":["../../src/runtime/composer-images.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAQhG,MAAM,OAAO,cAAc;IAChB,KAAK,CAAoB;IAClC,OAAO,GAAoB,EAAE,CAAA;IAC7B,SAAS,GAAG,CAAC,CAAA;IACb,SAAS,CAAuD;IAEhE,YAAY,IAAwB;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;IAEhD,8CAA8C;IAC9C,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,YAAY,CAAC,QAA+D;QAC1E,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC3B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,KAAoB;QAC9B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC3B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACzE,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,KAAoB;QACzB,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAClE,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,KAAK,GAAkB;YAC3B,GAAG,KAAK;YACR,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrF,CAAA;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAChG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChG,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,EAAE,CAAA;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,CAAA;IACjE,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,GAA2B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAkB,CAAA;YAClD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACzC,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAQ;YACvB,IAAI,IAAI,GAAG,KAAK,CAAA;YAChB,IAAI,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;YAC9B,MAAM,OAAO,GAAG,GAAG,KAAK,WAAW;gBACjC,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI,MAAM,IAAI,EAAE;gBAChC,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,MAAM,GAAG,EAAE,CAAA;YAClC,IAAI,CAAC,OAAO;gBAAE,SAAQ;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;gBAAE,EAAE,IAAI,CAAC,CAAA;iBAC/B,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;gBAAE,IAAI,IAAI,CAAC,CAAA;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAA;YAC9B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC7D,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAA;YACxE,IAAI,SAAS,GAAG,CAAC,CAAA;YACjB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAClE,IAAI,QAAQ,KAAK,KAAK;oBAAE,SAAQ;gBAChC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAkB,CAAA;gBACtD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;gBAC3F,SAAS,IAAI,CAAC,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAA;YACzB,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YACrD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,yEAAyE;IACzE,SAAS;QACP,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAA;QAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QACpG,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;YAAE,OAAM;QAChD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACtB,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAkB,CAAA;YAClD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,SAAQ;YACvC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;YAChE,SAAS,IAAI,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAA;QACvB,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,0EAA0E;IAC1E,OAAO,CAAC,UAAyB;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAA;QAClC,IAAI,cAAc,GAAG,MAAM,CAAC,IAAI,CAAA;QAChC,KAAK,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAkB,CAAA;YACnD,cAAc,GAAG,cAAc,CAAC,UAAU,CACxC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EACzB,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACrD,CAAA;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,QAAQ,KAAK,EAAE,IAAI,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAA;QACpF,MAAM,CAAC,WAAW,CAAC,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC,CAAA;IAC3D,CAAC;IAED,+DAA+D;IAC/D,OAAO,CAAC,UAAyB;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"composer-images.js","sourceRoot":"","sources":["../../src/runtime/composer-images.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /** Composer shortcut over the same owner-scoped Shell used by `/terminal`. */
2
+ import { resolveUiLanguage, uiText } from "../locale/index.js";
2
3
  import { shareTerminalOutputToConversation } from "../commands/terminal.js";
3
4
  import { currentWorkingDirectory } from "../session/working-directory.js";
4
5
  /** Only deliberate, attachment-free composer input may execute a Shell line. */
@@ -118,7 +119,32 @@ export async function runComposerShell(ctx, owner, command, upstream, options =
118
119
  });
119
120
  if (options.share === true && !signal.aborted) {
120
121
  // Share what this line produced, for the same reason the card shows that.
121
- shareTerminalOutputToConversation(owner, `Shell · \`${command}\``, produced);
122
+ await shareShellOutput(ctx, owner, command, produced, signal);
123
+ }
124
+ }
125
+ /** Retry delivery of captured output without executing the Shell command again. */
126
+ async function shareShellOutput(ctx, owner, command, output, parentSignal) {
127
+ if (output.trim() === '')
128
+ return;
129
+ const lifetime = new AbortController();
130
+ const signal = AbortSignal.any([parentSignal, lifetime.signal]);
131
+ while (!signal.aborted) {
132
+ try {
133
+ shareTerminalOutputToConversation(owner, `Shell · \`${command}\``, output);
134
+ }
135
+ catch (error) {
136
+ const answer = await ctx.tui.prompt({ localize: ['title', 'question', 'options'],
137
+ title: 'Share Shell output', question: 'Sharing failed. Retry sends the captured output to the conversation.',
138
+ detail: error instanceof Error ? error.message : String(error),
139
+ options: [{ label: 'Retry sharing', value: 'retry' }, { label: 'Keep output in terminal', value: 'keep' }],
140
+ allowCustom: false, notify: false, signal, onSuperseded: () => lifetime.abort(),
141
+ });
142
+ if (answer !== 'retry')
143
+ return;
144
+ continue;
145
+ }
146
+ ctx.tui.notice(uiText(resolveUiLanguage(ctx.tui.prefs?.().uiLanguage), 'Shell output queued for the next model step.'));
147
+ return;
122
148
  }
123
149
  }
124
150
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"composer-shell.js","sourceRoot":"","sources":["../../src/runtime/composer-shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composer-shell.js","sourceRoot":"","sources":["../../src/runtime/composer-shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** Owns one review's loading, navigation, and cancellation; never owns the terminal. */
2
+ import type { TuiFileReview } from '../definition.ts';
3
+ import type { KeyEvent } from '../input/keys.ts';
4
+ import type { Theme } from '../chrome/theme.ts';
5
+ import { type FileBrowserState } from '../views/file-browser.ts';
6
+ export declare class FileBrowser {
7
+ #private;
8
+ readonly request: TuiFileReview;
9
+ readonly changed: () => void;
10
+ readonly closed: () => void;
11
+ state: FileBrowserState;
12
+ readonly done: Promise<void>;
13
+ constructor(request: TuiFileReview, changed: () => void, closed: () => void);
14
+ start(): void;
15
+ close(): void;
16
+ select(index: number): void;
17
+ click(row: number, column: number, width: number, height: number): void;
18
+ input(event: KeyEvent, theme: Theme, width: number, height: number): void;
19
+ }
@@ -0,0 +1,291 @@
1
+ import { InputEditor } from "../input/editor.js";
2
+ import { browserActions, browserFiles, browserHelp, fileBrowserDocument, fileBrowserGeometry } from "../views/file-browser.js";
3
+ import { documentDestination, documentLineRow, documentMatches, documentModel, documentPosition } from "../views/document-reader.js";
4
+ export class FileBrowser {
5
+ request;
6
+ changed;
7
+ closed;
8
+ state;
9
+ done;
10
+ #resolve;
11
+ #closed = false;
12
+ #generation = 0;
13
+ #readAbort;
14
+ #offAbort;
15
+ #positions = new Map();
16
+ #modes = new Map();
17
+ #limits = new Map();
18
+ #editor = new InputEditor();
19
+ #origin;
20
+ constructor(request, changed, closed) {
21
+ this.request = request;
22
+ this.changed = changed;
23
+ this.closed = closed;
24
+ this.done = new Promise(resolve => { this.#resolve = resolve; });
25
+ this.state = { title: request.title, files: request.files, selected: request.initial ?? 0,
26
+ focus: request.initial === undefined ? 'files' : 'document', filter: '', input: '', inputCursor: 0, mode: 'diff', markdown: false,
27
+ position: { row: 0, wrap: 0, query: '' }, message: '', loading: true, help: false, helpScroll: 0, menu: undefined, notice: '',
28
+ canEdit: request.canEdit, canQuote: request.canQuote, truncated: false, limit: 128 * 1024 };
29
+ const abort = () => this.close();
30
+ request.signal.addEventListener('abort', abort, { once: true });
31
+ this.#offAbort = () => request.signal.removeEventListener('abort', abort);
32
+ }
33
+ start() { if (this.request.signal.aborted)
34
+ this.close();
35
+ else
36
+ void this.#load(); }
37
+ close() {
38
+ if (this.#closed)
39
+ return;
40
+ this.#closed = true;
41
+ this.#generation++;
42
+ this.#readAbort?.abort();
43
+ this.#offAbort();
44
+ this.#resolve();
45
+ this.closed();
46
+ }
47
+ #key() { return `${this.state.selected}:${this.state.mode}:${this.state.markdown}`; }
48
+ #save() { this.#positions.set(this.#key(), this.state.position); this.#modes.set(this.state.selected, this.state.mode); }
49
+ #restore() { this.state.position = this.#positions.get(this.#key()) ?? { row: 0, wrap: 0, query: '' }; }
50
+ async #load() {
51
+ this.#readAbort?.abort();
52
+ const abort = this.#readAbort = new AbortController();
53
+ const generation = ++this.#generation;
54
+ this.state = { ...this.state, source: undefined, loading: true, message: '', notice: '', truncated: false,
55
+ limit: this.#limits.get(this.state.selected) ?? 128 * 1024 };
56
+ this.changed();
57
+ try {
58
+ const result = await this.request.read(this.state.selected, this.state.mode, this.state.limit, abort.signal);
59
+ if (this.#closed || generation !== this.#generation)
60
+ return;
61
+ this.state = { ...this.state, source: result.source, message: result.message ?? '', truncated: result.truncated === true, loading: false };
62
+ }
63
+ catch (error) {
64
+ if (this.#closed || generation !== this.#generation)
65
+ return;
66
+ this.state = { ...this.state, loading: false, message: error instanceof Error ? error.message : String(error) };
67
+ }
68
+ this.changed();
69
+ }
70
+ select(index) {
71
+ if (index === this.state.selected || this.state.files[index] === undefined)
72
+ return;
73
+ this.#save();
74
+ this.state = { ...this.state, selected: index, mode: this.#modes.get(index) ?? 'diff', markdown: false };
75
+ this.#restore();
76
+ void this.#load();
77
+ }
78
+ click(row, column, width, height) {
79
+ if (this.state.editing !== undefined)
80
+ return;
81
+ const geometry = fileBrowserGeometry(this.state, width, height);
82
+ if (row < 4 || row >= 4 + geometry.page)
83
+ return;
84
+ if (this.state.menu !== undefined && (!geometry.split || column > geometry.left)) {
85
+ const action = browserActions(this.state)[Math.max(0, this.state.menu - geometry.page + 1) + row - 4];
86
+ if (action !== undefined) {
87
+ this.state.menu = undefined;
88
+ this.#action(action.key);
89
+ }
90
+ }
91
+ else if (!this.state.help && geometry.showFiles && (!geometry.split || column < geometry.left)) {
92
+ const index = geometry.files[geometry.start + row - 4];
93
+ if (index !== undefined) {
94
+ this.select(index);
95
+ this.state.focus = geometry.split ? 'files' : 'document';
96
+ }
97
+ }
98
+ else
99
+ this.state.focus = 'document';
100
+ this.changed();
101
+ }
102
+ input(event, theme, width, height) {
103
+ if (this.#closed)
104
+ return;
105
+ const s = this.state;
106
+ const key = event.type === 'key' ? event.id : event.type === 'text' ? event.value.toLowerCase() : '';
107
+ const doc = fileBrowserDocument(s, theme, width, height);
108
+ const jump = (row) => { if (row !== undefined)
109
+ s.position = { ...s.position, row, wrap: 0 }; };
110
+ if (s.editing !== undefined) {
111
+ if (key === 'escape' || key === 'ctrl+c') {
112
+ if (this.#origin !== undefined) {
113
+ s.position = this.#origin.position;
114
+ s.filter = this.#origin.filter;
115
+ this.select(this.#origin.selected);
116
+ }
117
+ this.state.editing = undefined;
118
+ }
119
+ else if (key === 'enter') {
120
+ if (s.editing === 'line') {
121
+ const row = s.source === undefined || !/^[1-9]\d*$/u.test(s.input.trim()) ? undefined : documentLineRow(s.source, Number(s.input));
122
+ if (row === undefined) {
123
+ s.notice = 'Enter a new-file line visible in this view.';
124
+ this.changed();
125
+ return;
126
+ }
127
+ jump(row);
128
+ }
129
+ s.editing = undefined;
130
+ s.notice = '';
131
+ }
132
+ else {
133
+ this.#editor.handle(event);
134
+ s.input = this.#editor.text.replace(/[\r\n]/gu, ' ');
135
+ s.inputCursor = this.#editor.cursor;
136
+ if (s.editing === 'filter') {
137
+ s.filter = s.input;
138
+ const files = browserFiles(s);
139
+ if (!files.includes(s.selected) && files[0] !== undefined)
140
+ this.select(files[0]);
141
+ }
142
+ else if (s.editing === 'search') {
143
+ s.position = { ...s.position, query: s.input };
144
+ if (s.source !== undefined)
145
+ jump(documentMatches(s.source, s.input)[0]);
146
+ }
147
+ }
148
+ this.changed();
149
+ return;
150
+ }
151
+ if (key === 'ctrl+c') {
152
+ this.close();
153
+ return;
154
+ }
155
+ if (s.help) {
156
+ if (['escape', '?', 'enter'].includes(key))
157
+ s.help = false;
158
+ else if (key === 'up' || key === 'pageUp')
159
+ s.helpScroll = Math.max(0, s.helpScroll - (key === 'up' ? 1 : doc.page));
160
+ else if (key === 'down' || key === 'pageDown')
161
+ s.helpScroll = Math.min(Math.max(0, browserHelp(doc.documentWidth).length - doc.page), s.helpScroll + (key === 'down' ? 1 : doc.page));
162
+ this.changed();
163
+ return;
164
+ }
165
+ if (s.menu !== undefined) {
166
+ const actions = browserActions(s);
167
+ if (key === 'escape' || key === 'a')
168
+ s.menu = undefined;
169
+ else if (key === 'down')
170
+ s.menu = (s.menu + 1) % actions.length;
171
+ else if (key === 'up')
172
+ s.menu = (s.menu + actions.length - 1) % actions.length;
173
+ else if (key === 'enter') {
174
+ const action = actions[s.menu];
175
+ s.menu = undefined;
176
+ if (action)
177
+ this.#action(action.key);
178
+ }
179
+ this.changed();
180
+ return;
181
+ }
182
+ if (key === 'escape') {
183
+ if (!doc.split && s.focus === 'document')
184
+ s.focus = 'files';
185
+ else {
186
+ this.close();
187
+ return;
188
+ }
189
+ }
190
+ else if (key === 'tab' || key === 'shift+tab')
191
+ s.focus = s.focus === 'files' ? 'document' : 'files';
192
+ else if (key === 'enter')
193
+ s.focus = 'document';
194
+ else if (key === '/' || key === 'ctrl+f' || key === 'g' || key === 'ctrl+g') {
195
+ if (s.markdown && s.focus === 'document') {
196
+ this.#save();
197
+ s.markdown = false;
198
+ this.#restore();
199
+ }
200
+ s.editing = key === 'g' || key === 'ctrl+g' ? 'line' : s.focus === 'files' ? 'filter' : 'search';
201
+ this.#origin = { position: { ...s.position }, filter: s.filter, selected: s.selected };
202
+ s.input = s.editing === 'filter' ? s.filter : s.editing === 'search' ? s.position.query : '';
203
+ this.#editor.setText(s.input);
204
+ s.inputCursor = this.#editor.cursor;
205
+ }
206
+ else if (key === 'v') {
207
+ this.#save();
208
+ s.mode = s.mode === 'diff' ? 'source' : 'diff';
209
+ s.markdown = false;
210
+ this.#restore();
211
+ void this.#load();
212
+ }
213
+ else if (key === 'n' || key === 'p') {
214
+ const files = browserFiles(s), at = Math.max(0, files.indexOf(s.selected));
215
+ const index = files[(at + files.length + (key === 'n' ? 1 : -1)) % files.length];
216
+ if (index !== undefined)
217
+ this.select(index);
218
+ }
219
+ else if (key === 'a')
220
+ s.menu = 0;
221
+ else if (key === 'w')
222
+ s.position = { ...s.position, wordWrap: s.position.wordWrap === false, wrap: 0 };
223
+ else if (key === 'alt+left' || key === 'alt+right')
224
+ s.position = { ...s.position, wordWrap: false, wrap: 0, column: Math.max(0, Math.min(doc.layout?.maxColumn ?? 0, (s.position.column ?? 0) + (key === 'alt+right' ? 8 : -8))) };
225
+ else if (s.source !== undefined && !s.markdown && ['ctrl+n', 'ctrl+p', '[', ']'].includes(key)) {
226
+ jump(documentDestination(key === '[' || key === ']' ? documentModel(s.source).hunks : documentMatches(s.source, s.position.query), s.position.row, key === ']' || key === 'ctrl+n' ? 1 : -1));
227
+ }
228
+ else if (event.type === 'wheel' || ['up', 'down', 'pageUp', 'pageDown', 'home', 'end'].includes(key)) {
229
+ const filesFocus = event.type === 'wheel' && event.column !== undefined
230
+ ? doc.split ? event.column < doc.left : s.focus === 'files' : s.focus === 'files';
231
+ const delta = event.type === 'wheel' ? event.direction === 'up' ? -3 : 3 : (key === 'up' || key === 'pageUp' ? -1 : 1) * (key.startsWith('page') ? doc.page : 1);
232
+ if (filesFocus) {
233
+ const at = Math.max(0, doc.files.indexOf(s.selected));
234
+ const index = doc.files[key === 'home' ? 0 : key === 'end' ? doc.files.length - 1 : Math.max(0, Math.min(doc.files.length - 1, at + delta))];
235
+ if (index !== undefined)
236
+ this.select(index);
237
+ }
238
+ else {
239
+ const at = Math.max(0, Math.min(doc.max, key === 'home' ? 0 : key === 'end' ? doc.max : doc.documentStart + delta));
240
+ s.position = doc.layout === undefined ? { ...s.position, row: at } : documentPosition(doc.layout, at, s.position.query);
241
+ }
242
+ }
243
+ else
244
+ this.#action(key);
245
+ this.changed();
246
+ }
247
+ #action(key) {
248
+ const s = this.state;
249
+ if (key === '?') {
250
+ s.help = true;
251
+ s.helpScroll = 0;
252
+ return;
253
+ }
254
+ if (key === 'r') {
255
+ void this.#load();
256
+ return;
257
+ }
258
+ if (key === 'l' && s.truncated && s.limit < 4 * 1024 * 1024) {
259
+ this.#limits.set(s.selected, s.limit * 2);
260
+ void this.#load();
261
+ return;
262
+ }
263
+ if (key === 'm' && s.mode === 'source' && /\.md$/iu.test(s.files[s.selected]?.path ?? '')) {
264
+ this.#save();
265
+ s.markdown = !s.markdown;
266
+ this.#restore();
267
+ return;
268
+ }
269
+ const action = key === 'o' ? 'open' : key === 'e' && s.canEdit ? 'editor' : key === 'q' && s.canQuote ? 'quote' : key === 'i' && s.mode === 'source' && /\.(png|jpe?g|webp|gif)$/iu.test(s.files[s.selected]?.path ?? '') ? 'image' : undefined;
270
+ if (action === undefined || s.loading)
271
+ return;
272
+ const index = s.selected;
273
+ void Promise.resolve().then(() => {
274
+ if (!this.#closed)
275
+ return this.request.action(action, index, s.markdown ? undefined : s.source, s.position);
276
+ }).then(() => {
277
+ if (this.#closed)
278
+ return;
279
+ if (action === 'quote')
280
+ this.close();
281
+ else {
282
+ this.state.notice = action === 'image' ? '' : 'Opened original file.';
283
+ this.changed();
284
+ }
285
+ }, error => { if (!this.#closed) {
286
+ this.state.notice = error instanceof Error ? error.message : String(error);
287
+ this.changed();
288
+ } });
289
+ }
290
+ }
291
+ //# sourceMappingURL=file-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-browser.js","sourceRoot":"","sources":["../../src/runtime/file-browser.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Bounded host-file previews and keyboard-driven document inspection. */
2
- import type { TuiDocumentPosition, TuiDocumentSource, TuiService } from '../definition.ts';
2
+ import type { TuiDocumentPosition, TuiDocumentSource, TuiService, TuiReviewFile } from '../definition.ts';
3
3
  export { openSystemFile } from './file-open.ts';
4
4
  export declare const PREVIEW_BYTES: number;
5
5
  export declare const MAX_PREVIEW_BYTES: number;
@@ -11,17 +11,14 @@ export declare function formatQuoteReference(cwd: string, file: ReviewFile, sour
11
11
  /** Fence untrusted text without letting its own backticks end the block. */
12
12
  export declare function codeDocument(text: string, language?: string): string;
13
13
  export declare function gitOutput(cwd: string, args: readonly string[], signal: AbortSignal): Promise<string>;
14
+ /** Git's NUL records retain literal whitespace and both sides of a rename. */
15
+ export declare function changedFiles(cwd: string, signal: AbortSignal): Promise<ReviewFile[]>;
14
16
  /** Include staged, unstaged, deleted, and untracked paths without shell parsing. */
15
17
  export declare function changedPaths(cwd: string, signal: AbortSignal): Promise<string[]>;
16
18
  export declare function filePreview(path: string, signal: AbortSignal): Promise<string>;
17
19
  /** Read an explicitly bounded prefix; incomplete UTF-8 characters await the next load. */
18
20
  export declare function fileDocument(path: string, signal: AbortSignal, limit?: number, sourcePath?: string): Promise<FileDocument>;
19
- export interface ReviewFile {
20
- path: string;
21
- label: string;
22
- description?: string;
23
- line?: number;
24
- }
25
- export type FileReviewSurface = Pick<TuiService, 'prompt' | 'notice' | 'openFileInEditor' | 'insertText'>;
21
+ export type ReviewFile = TuiReviewFile;
22
+ export type FileReviewSurface = Pick<TuiService, 'prompt' | 'notice' | 'openFileInEditor' | 'insertText' | 'reviewFiles'>;
26
23
  /** Keep file selection, document scrolling, and external opening in one loop. */
27
- export declare function reviewFiles(tui: FileReviewSurface, title: string, cwd: string, files: readonly ReviewFile[], readDiff: (index: number) => Promise<string | TuiDocumentSource>, signal: AbortSignal, initial?: number, hasDiff?: boolean): Promise<void>;
24
+ export declare function reviewFiles(tui: FileReviewSurface, title: string, cwd: string, files: readonly ReviewFile[], readDiff: (index: number, signal: AbortSignal) => Promise<string | TuiDocumentSource>, signal: AbortSignal, initial?: number, hasDiff?: boolean): Promise<void>;
@@ -44,14 +44,48 @@ export async function gitOutput(cwd, args, signal) {
44
44
  const { stdout } = await exec('git', [...args], { cwd, signal, maxBuffer: 2 * 1024 * 1024 });
45
45
  return stdout;
46
46
  }
47
+ /** Git's NUL records retain literal whitespace and both sides of a rename. */
48
+ export async function changedFiles(cwd, signal) {
49
+ const status = await gitOutput(cwd, ['status', '--porcelain=v1', '-z', '--untracked-files=all'], signal);
50
+ const records = status.split('\0');
51
+ const files = [];
52
+ for (let at = 0; at < records.length; at++) {
53
+ const record = records[at];
54
+ if (record.length < 4)
55
+ continue;
56
+ const xy = record.slice(0, 2), path = record.slice(3);
57
+ const previousPath = /[RC]/u.test(xy) ? records[++at] : undefined;
58
+ const kind = xy === '??' ? '?' : xy.includes('U') || xy === 'AA' || xy === 'DD' ? 'U'
59
+ : xy.includes('R') ? 'R' : xy.includes('D') ? 'D' : xy.includes('A') ? 'A' : xy.includes('C') ? 'C' : 'M';
60
+ const scope = xy === '??' ? 'untracked' : xy[0] !== ' ' && xy[1] !== ' ' ? 'staged + working tree' : xy[0] !== ' ' ? 'staged' : 'working tree';
61
+ files.push({ path, label: path, status: kind, description: scope, ...(previousPath === undefined ? {} : { previousPath }) });
62
+ }
63
+ let numstat;
64
+ try {
65
+ numstat = await gitOutput(cwd, ['diff', 'HEAD', '--numstat', '-z'], signal);
66
+ }
67
+ catch {
68
+ numstat = await gitOutput(cwd, ['diff', '--cached', '--numstat', '-z'], signal);
69
+ }
70
+ const stats = numstat.split('\0');
71
+ for (let at = 0; at < stats.length; at++) {
72
+ const record = stats[at], match = /^(\d+|-)\t(\d+|-)\t(.*)$/su.exec(record);
73
+ if (!match)
74
+ continue;
75
+ let path = match[3];
76
+ if (path === '') {
77
+ at++;
78
+ path = stats[++at] ?? '';
79
+ }
80
+ const file = files.find(file => file.path === path);
81
+ if (file !== undefined)
82
+ file.description = (match[1] === '-' ? 'binary' : `+${match[1]} −${match[2]}`) + ` · ${file.description}`;
83
+ }
84
+ return files.sort((a, b) => a.path.localeCompare(b.path, undefined, { numeric: true }));
85
+ }
47
86
  /** Include staged, unstaged, deleted, and untracked paths without shell parsing. */
48
87
  export async function changedPaths(cwd, signal) {
49
- const results = await Promise.all([
50
- gitOutput(cwd, ['diff', '--name-only', '-z'], signal),
51
- gitOutput(cwd, ['diff', '--cached', '--name-only', '-z'], signal),
52
- gitOutput(cwd, ['ls-files', '--others', '--exclude-standard', '-z'], signal),
53
- ]);
54
- return [...new Set(results.flatMap(result => result.split('\0').filter(Boolean)))].sort();
88
+ return (await changedFiles(cwd, signal)).map(file => file.path);
55
89
  }
56
90
  export async function filePreview(path, signal) {
57
91
  const source = await fileDocument(path, signal);
@@ -103,6 +137,44 @@ export async function fileDocument(path, signal, limit = PREVIEW_BYTES, sourcePa
103
137
  }
104
138
  /** Keep file selection, document scrolling, and external opening in one loop. */
105
139
  export async function reviewFiles(tui, title, cwd, files, readDiff, signal, initial, hasDiff = true) {
140
+ if (hasDiff && tui.reviewFiles !== undefined) {
141
+ await tui.reviewFiles({ title, files, signal, ...(initial === undefined ? {} : { initial }),
142
+ canEdit: tui.openFileInEditor !== undefined, canQuote: tui.insertText !== undefined,
143
+ read: async (index, mode, limit, readSignal) => {
144
+ if (mode === 'source') {
145
+ const content = await fileDocument(resolve(cwd, files[index].path), readSignal, limit);
146
+ return content.binary ? { message: content.text } : { source: content, truncated: content.truncated === true };
147
+ }
148
+ const content = await readDiff(index, readSignal);
149
+ readSignal.throwIfAborted();
150
+ if (typeof content === 'string')
151
+ return { message: content };
152
+ // Empty comparisons must explain why; a current file is never an implicit historical fallback.
153
+ if (content.diff !== true)
154
+ return { message: content.status ?? 'No comparison is available. Press V to view the current file.' };
155
+ return { source: content };
156
+ },
157
+ action: async (action, index, source, position) => {
158
+ const file = files[index];
159
+ if (action === 'editor')
160
+ tui.openFileInEditor?.(resolve(cwd, file.path));
161
+ else if (action === 'open')
162
+ await openSystemFile(resolve(cwd, file.path));
163
+ else if (action === 'image') {
164
+ const image = await imageFile(resolve(cwd, file.path), signal);
165
+ if (image !== undefined)
166
+ await tui.prompt({ title: file.label, question: 'Current file', documentImage: image,
167
+ presentation: 'document', options: [{ label: 'Back', value: 'back' }], allowCustom: false, notify: false, signal });
168
+ }
169
+ else {
170
+ const ref = formatQuoteReference(cwd, file, source, position);
171
+ tui.insertText?.(ref);
172
+ tui.notice(`Quoted ${ref} in composer.`);
173
+ }
174
+ },
175
+ });
176
+ return;
177
+ }
106
178
  let index = initial;
107
179
  let selected;
108
180
  const positions = new Map();
@@ -135,11 +207,23 @@ export async function reviewFiles(tui, title, cwd, files, readDiff, signal, init
135
207
  try {
136
208
  if (preview && imageMediaType(file.path) !== undefined)
137
209
  image = previewImage ??= await imageFile(resolve(cwd, file.path), signal);
138
- const content = image !== undefined ? { binary: true, text: '' } : preview ? loaded = await fileDocument(resolve(cwd, file.path), signal, limits.get(index)) : await readDiff(index);
210
+ let content = image !== undefined ? { binary: true, text: '' } : preview ? loaded = await fileDocument(resolve(cwd, file.path), signal, limits.get(index)) : await readDiff(index, signal);
139
211
  if (typeof content !== 'string' && content.diff !== true && hasDiff && !preview && 'truncated' in content) {
140
212
  modes.set(index, 'source');
141
213
  continue;
142
214
  }
215
+ // A declared match can lie beyond the first prefix. Grow only until it
216
+ // is reachable, retaining the same bounded preview policy as Load more.
217
+ if (preview && loaded !== undefined && loaded.binary !== true && file.line !== undefined && !positions.has(key)) {
218
+ while (loaded.truncated === true && loaded.text.split('\n').length <= file.line && (limits.get(index) ?? PREVIEW_BYTES) < MAX_PREVIEW_BYTES) {
219
+ const limit = Math.min(MAX_PREVIEW_BYTES, (limits.get(index) ?? PREVIEW_BYTES) * 2);
220
+ limits.set(index, limit);
221
+ loaded = await fileDocument(resolve(cwd, file.path), signal, limit);
222
+ }
223
+ content = loaded;
224
+ if (loaded.binary !== true && loaded.text.split('\n').length < file.line)
225
+ feedback = `Line ${file.line} is outside this preview. The file may have changed; Open reads the original.`;
226
+ }
143
227
  if (typeof content === 'string')
144
228
  detail = content;
145
229
  else if ('binary' in content && content.binary === true)