@deepseek-harness-tui/dsh-tui 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/bin/dsh-tui.js +95 -0
  4. package/cordis.patch.yml +218 -0
  5. package/cordis.yml +185 -0
  6. package/lib/invariant.js +28 -0
  7. package/lib/types/activityPrefs.d.ts +29 -0
  8. package/lib/types/activityPrefs.d.ts.map +1 -0
  9. package/lib/types/activityPrefs.js +60 -0
  10. package/lib/types/bootstrap/state.d.ts +13 -0
  11. package/lib/types/bootstrap/state.d.ts.map +1 -0
  12. package/lib/types/bootstrap/state.js +12 -0
  13. package/lib/types/cc/cliHighlight.d.ts +20 -0
  14. package/lib/types/cc/cliHighlight.d.ts.map +1 -0
  15. package/lib/types/cc/cliHighlight.js +53 -0
  16. package/lib/types/cc/figures.d.ts +59 -0
  17. package/lib/types/cc/figures.d.ts.map +1 -0
  18. package/lib/types/cc/figures.js +69 -0
  19. package/lib/types/cc/format.d.ts +26 -0
  20. package/lib/types/cc/format.d.ts.map +1 -0
  21. package/lib/types/cc/format.js +55 -0
  22. package/lib/types/cc/hash.d.ts +25 -0
  23. package/lib/types/cc/hash.d.ts.map +1 -0
  24. package/lib/types/cc/hash.js +41 -0
  25. package/lib/types/cc/hyperlink.d.ts +21 -0
  26. package/lib/types/cc/hyperlink.d.ts.map +1 -0
  27. package/lib/types/cc/hyperlink.js +31 -0
  28. package/lib/types/cc/markdown.d.ts +43 -0
  29. package/lib/types/cc/markdown.d.ts.map +1 -0
  30. package/lib/types/cc/markdown.js +345 -0
  31. package/lib/types/cc/spinnerVerbs.d.ts +3 -0
  32. package/lib/types/cc/spinnerVerbs.d.ts.map +1 -0
  33. package/lib/types/cc/spinnerVerbs.js +190 -0
  34. package/lib/types/cc/terminal.d.ts +15 -0
  35. package/lib/types/cc/terminal.d.ts.map +1 -0
  36. package/lib/types/cc/terminal.js +84 -0
  37. package/lib/types/channel.d.ts +672 -0
  38. package/lib/types/channel.d.ts.map +1 -0
  39. package/lib/types/channel.js +2427 -0
  40. package/lib/types/childStderr.d.ts +63 -0
  41. package/lib/types/childStderr.d.ts.map +1 -0
  42. package/lib/types/childStderr.js +161 -0
  43. package/lib/types/commands.d.ts +55 -0
  44. package/lib/types/commands.d.ts.map +1 -0
  45. package/lib/types/commands.js +101 -0
  46. package/lib/types/components/ActivityLine.d.ts +29 -0
  47. package/lib/types/components/ActivityLine.d.ts.map +1 -0
  48. package/lib/types/components/ActivityLine.js +47 -0
  49. package/lib/types/components/ActivityPicker.d.ts +13 -0
  50. package/lib/types/components/ActivityPicker.d.ts.map +1 -0
  51. package/lib/types/components/ActivityPicker.js +24 -0
  52. package/lib/types/components/CommandSuggestions.d.ts +14 -0
  53. package/lib/types/components/CommandSuggestions.d.ts.map +1 -0
  54. package/lib/types/components/CommandSuggestions.js +33 -0
  55. package/lib/types/components/FileSuggestions.d.ts +12 -0
  56. package/lib/types/components/FileSuggestions.d.ts.map +1 -0
  57. package/lib/types/components/FileSuggestions.js +26 -0
  58. package/lib/types/components/GoalTodoPanel.d.ts +13 -0
  59. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -0
  60. package/lib/types/components/GoalTodoPanel.js +57 -0
  61. package/lib/types/components/HelpMenu.d.ts +12 -0
  62. package/lib/types/components/HelpMenu.d.ts.map +1 -0
  63. package/lib/types/components/HelpMenu.js +12 -0
  64. package/lib/types/components/HistorySearchDialog.d.ts +16 -0
  65. package/lib/types/components/HistorySearchDialog.d.ts.map +1 -0
  66. package/lib/types/components/HistorySearchDialog.js +31 -0
  67. package/lib/types/components/InterruptedByUser.d.ts +7 -0
  68. package/lib/types/components/InterruptedByUser.d.ts.map +1 -0
  69. package/lib/types/components/InterruptedByUser.js +9 -0
  70. package/lib/types/components/LoadedContextPanel.d.ts +20 -0
  71. package/lib/types/components/LoadedContextPanel.d.ts.map +1 -0
  72. package/lib/types/components/LoadedContextPanel.js +30 -0
  73. package/lib/types/components/LogoV2.d.ts +23 -0
  74. package/lib/types/components/LogoV2.d.ts.map +1 -0
  75. package/lib/types/components/LogoV2.js +95 -0
  76. package/lib/types/components/Markdown.d.ts +24 -0
  77. package/lib/types/components/Markdown.d.ts.map +1 -0
  78. package/lib/types/components/Markdown.js +106 -0
  79. package/lib/types/components/MarkdownTable.d.ts +17 -0
  80. package/lib/types/components/MarkdownTable.d.ts.map +1 -0
  81. package/lib/types/components/MarkdownTable.js +272 -0
  82. package/lib/types/components/MessageList.d.ts +41 -0
  83. package/lib/types/components/MessageList.d.ts.map +1 -0
  84. package/lib/types/components/MessageList.js +303 -0
  85. package/lib/types/components/ModelPicker.d.ts +14 -0
  86. package/lib/types/components/ModelPicker.d.ts.map +1 -0
  87. package/lib/types/components/ModelPicker.js +15 -0
  88. package/lib/types/components/PresetPicker.d.ts +17 -0
  89. package/lib/types/components/PresetPicker.d.ts.map +1 -0
  90. package/lib/types/components/PresetPicker.js +25 -0
  91. package/lib/types/components/PromptInput.d.ts +67 -0
  92. package/lib/types/components/PromptInput.d.ts.map +1 -0
  93. package/lib/types/components/PromptInput.js +778 -0
  94. package/lib/types/components/ResumePicker.d.ts +15 -0
  95. package/lib/types/components/ResumePicker.d.ts.map +1 -0
  96. package/lib/types/components/ResumePicker.js +34 -0
  97. package/lib/types/components/RewindPicker.d.ts +14 -0
  98. package/lib/types/components/RewindPicker.d.ts.map +1 -0
  99. package/lib/types/components/RewindPicker.js +23 -0
  100. package/lib/types/components/SearchBox.d.ts +20 -0
  101. package/lib/types/components/SearchBox.d.ts.map +1 -0
  102. package/lib/types/components/SearchBox.js +33 -0
  103. package/lib/types/components/Select.d.ts +22 -0
  104. package/lib/types/components/Select.d.ts.map +1 -0
  105. package/lib/types/components/Select.js +19 -0
  106. package/lib/types/components/Spinner/GlimmerMessage.d.ts +19 -0
  107. package/lib/types/components/Spinner/GlimmerMessage.d.ts.map +1 -0
  108. package/lib/types/components/Spinner/GlimmerMessage.js +78 -0
  109. package/lib/types/components/Spinner/SpinnerAnimationRow.d.ts +31 -0
  110. package/lib/types/components/Spinner/SpinnerAnimationRow.d.ts.map +1 -0
  111. package/lib/types/components/Spinner/SpinnerAnimationRow.js +162 -0
  112. package/lib/types/components/Spinner/SpinnerGlyph.d.ts +16 -0
  113. package/lib/types/components/Spinner/SpinnerGlyph.d.ts.map +1 -0
  114. package/lib/types/components/Spinner/SpinnerGlyph.js +36 -0
  115. package/lib/types/components/Spinner/spinnerMode.d.ts +6 -0
  116. package/lib/types/components/Spinner/spinnerMode.d.ts.map +1 -0
  117. package/lib/types/components/Spinner/spinnerMode.js +1 -0
  118. package/lib/types/components/Spinner/spinnerUtils.d.ts +41 -0
  119. package/lib/types/components/Spinner/spinnerUtils.d.ts.map +1 -0
  120. package/lib/types/components/Spinner/spinnerUtils.js +104 -0
  121. package/lib/types/components/Spinner/useStalledAnimation.d.ts +16 -0
  122. package/lib/types/components/Spinner/useStalledAnimation.d.ts.map +1 -0
  123. package/lib/types/components/Spinner/useStalledAnimation.js +71 -0
  124. package/lib/types/components/StreamingMarkdown.d.ts +12 -0
  125. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -0
  126. package/lib/types/components/StreamingMarkdown.js +39 -0
  127. package/lib/types/components/ThemePicker.d.ts +22 -0
  128. package/lib/types/components/ThemePicker.d.ts.map +1 -0
  129. package/lib/types/components/ThemePicker.js +51 -0
  130. package/lib/types/components/ThinkingToggle.d.ts +17 -0
  131. package/lib/types/components/ThinkingToggle.d.ts.map +1 -0
  132. package/lib/types/components/ThinkingToggle.js +30 -0
  133. package/lib/types/components/ToolUseLoader.d.ts +13 -0
  134. package/lib/types/components/ToolUseLoader.d.ts.map +1 -0
  135. package/lib/types/components/ToolUseLoader.js +17 -0
  136. package/lib/types/components/Whale.d.ts +22 -0
  137. package/lib/types/components/Whale.d.ts.map +1 -0
  138. package/lib/types/components/Whale.js +78 -0
  139. package/lib/types/components/WorkingSpinner.d.ts +26 -0
  140. package/lib/types/components/WorkingSpinner.d.ts.map +1 -0
  141. package/lib/types/components/WorkingSpinner.js +68 -0
  142. package/lib/types/components/activityFrames.d.ts +31 -0
  143. package/lib/types/components/activityFrames.d.ts.map +1 -0
  144. package/lib/types/components/activityFrames.js +83 -0
  145. package/lib/types/components/bigfont.d.ts +28 -0
  146. package/lib/types/components/bigfont.d.ts.map +1 -0
  147. package/lib/types/components/bigfont.js +91 -0
  148. package/lib/types/components/design-system/Byline.d.ts +14 -0
  149. package/lib/types/components/design-system/Byline.d.ts.map +1 -0
  150. package/lib/types/components/design-system/Byline.js +17 -0
  151. package/lib/types/components/design-system/Divider.d.ts +40 -0
  152. package/lib/types/components/design-system/Divider.d.ts.map +1 -0
  153. package/lib/types/components/design-system/Divider.js +24 -0
  154. package/lib/types/components/design-system/KeyboardShortcutHint.d.ts +19 -0
  155. package/lib/types/components/design-system/KeyboardShortcutHint.d.ts.map +1 -0
  156. package/lib/types/components/design-system/KeyboardShortcutHint.js +14 -0
  157. package/lib/types/components/design-system/ListItem.d.ts +36 -0
  158. package/lib/types/components/design-system/ListItem.d.ts.map +1 -0
  159. package/lib/types/components/design-system/ListItem.js +48 -0
  160. package/lib/types/components/design-system/LoadingState.d.ts +19 -0
  161. package/lib/types/components/design-system/LoadingState.d.ts.map +1 -0
  162. package/lib/types/components/design-system/LoadingState.js +22 -0
  163. package/lib/types/components/design-system/Pane.d.ts +17 -0
  164. package/lib/types/components/design-system/Pane.d.ts.map +1 -0
  165. package/lib/types/components/design-system/Pane.js +15 -0
  166. package/lib/types/components/design-system/ProgressBar.d.ts +22 -0
  167. package/lib/types/components/design-system/ProgressBar.d.ts.map +1 -0
  168. package/lib/types/components/design-system/ProgressBar.js +27 -0
  169. package/lib/types/components/design-system/StatusIcon.d.ts +15 -0
  170. package/lib/types/components/design-system/StatusIcon.d.ts.map +1 -0
  171. package/lib/types/components/design-system/StatusIcon.js +20 -0
  172. package/lib/types/components/design-system/ThemeProvider.d.ts +11 -0
  173. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -0
  174. package/lib/types/components/design-system/ThemeProvider.js +135 -0
  175. package/lib/types/components/design-system/ThemedBox.d.ts +37 -0
  176. package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -0
  177. package/lib/types/components/design-system/ThemedBox.js +26 -0
  178. package/lib/types/components/design-system/ThemedText.d.ts +56 -0
  179. package/lib/types/components/design-system/ThemedText.d.ts.map +1 -0
  180. package/lib/types/components/design-system/ThemedText.js +45 -0
  181. package/lib/types/components/messages/AssistantTextMessage.d.ts +18 -0
  182. package/lib/types/components/messages/AssistantTextMessage.d.ts.map +1 -0
  183. package/lib/types/components/messages/AssistantTextMessage.js +15 -0
  184. package/lib/types/components/messages/AssistantThinkingMessage.d.ts +23 -0
  185. package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -0
  186. package/lib/types/components/messages/AssistantThinkingMessage.js +23 -0
  187. package/lib/types/components/messages/AssistantToolUseMessage.d.ts +23 -0
  188. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -0
  189. package/lib/types/components/messages/AssistantToolUseMessage.js +220 -0
  190. package/lib/types/components/messages/MessageMetadata.d.ts +15 -0
  191. package/lib/types/components/messages/MessageMetadata.d.ts.map +1 -0
  192. package/lib/types/components/messages/MessageMetadata.js +20 -0
  193. package/lib/types/components/messages/UserPromptMessage.d.ts +19 -0
  194. package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -0
  195. package/lib/types/components/messages/UserPromptMessage.js +15 -0
  196. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +39 -0
  197. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -0
  198. package/lib/types/components/questions/AskUserQuestionPanel.js +228 -0
  199. package/lib/types/components/shimmer.d.ts +35 -0
  200. package/lib/types/components/shimmer.d.ts.map +1 -0
  201. package/lib/types/components/shimmer.js +43 -0
  202. package/lib/types/components/whaleFrames.d.ts +25 -0
  203. package/lib/types/components/whaleFrames.d.ts.map +1 -0
  204. package/lib/types/components/whaleFrames.js +419 -0
  205. package/lib/types/customTheme.d.ts +104 -0
  206. package/lib/types/customTheme.d.ts.map +1 -0
  207. package/lib/types/customTheme.js +268 -0
  208. package/lib/types/effortPrefs.d.ts +22 -0
  209. package/lib/types/effortPrefs.d.ts.map +1 -0
  210. package/lib/types/effortPrefs.js +45 -0
  211. package/lib/types/history.d.ts +24 -0
  212. package/lib/types/history.d.ts.map +1 -0
  213. package/lib/types/history.js +75 -0
  214. package/lib/types/hooks/useBlink.d.ts +11 -0
  215. package/lib/types/hooks/useBlink.d.ts.map +1 -0
  216. package/lib/types/hooks/useBlink.js +20 -0
  217. package/lib/types/i18n.d.ts +926 -0
  218. package/lib/types/i18n.d.ts.map +1 -0
  219. package/lib/types/i18n.js +356 -0
  220. package/lib/types/index.d.ts +70 -0
  221. package/lib/types/index.d.ts.map +1 -0
  222. package/lib/types/index.js +31 -0
  223. package/lib/types/ink/Ansi.d.ts +11 -0
  224. package/lib/types/ink/Ansi.d.ts.map +1 -0
  225. package/lib/types/ink/Ansi.js +269 -0
  226. package/lib/types/ink/bidi.d.ts +18 -0
  227. package/lib/types/ink/bidi.d.ts.map +1 -0
  228. package/lib/types/ink/bidi.js +119 -0
  229. package/lib/types/ink/clearTerminal.d.ts +22 -0
  230. package/lib/types/ink/clearTerminal.d.ts.map +1 -0
  231. package/lib/types/ink/clearTerminal.js +72 -0
  232. package/lib/types/ink/colorize.d.ts +33 -0
  233. package/lib/types/ink/colorize.d.ts.map +1 -0
  234. package/lib/types/ink/colorize.js +213 -0
  235. package/lib/types/ink/components/AlternateScreen.d.ts +22 -0
  236. package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -0
  237. package/lib/types/ink/components/AlternateScreen.js +74 -0
  238. package/lib/types/ink/components/App.d.ts +73 -0
  239. package/lib/types/ink/components/App.d.ts.map +1 -0
  240. package/lib/types/ink/components/App.js +597 -0
  241. package/lib/types/ink/components/AppContext.d.ts +15 -0
  242. package/lib/types/ink/components/AppContext.d.ts.map +1 -0
  243. package/lib/types/ink/components/AppContext.js +11 -0
  244. package/lib/types/ink/components/Box.d.ts +49 -0
  245. package/lib/types/ink/components/Box.d.ts.map +1 -0
  246. package/lib/types/ink/components/Box.js +153 -0
  247. package/lib/types/ink/components/Button.d.ts +37 -0
  248. package/lib/types/ink/components/Button.d.ts.map +1 -0
  249. package/lib/types/ink/components/Button.js +166 -0
  250. package/lib/types/ink/components/ClockContext.d.ts +10 -0
  251. package/lib/types/ink/components/ClockContext.d.ts.map +1 -0
  252. package/lib/types/ink/components/ClockContext.js +108 -0
  253. package/lib/types/ink/components/CursorDeclarationContext.d.ts +30 -0
  254. package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -0
  255. package/lib/types/ink/components/CursorDeclarationContext.js +6 -0
  256. package/lib/types/ink/components/ErrorOverview.d.ts +7 -0
  257. package/lib/types/ink/components/ErrorOverview.d.ts.map +1 -0
  258. package/lib/types/ink/components/ErrorOverview.js +49 -0
  259. package/lib/types/ink/components/Link.d.ts +8 -0
  260. package/lib/types/ink/components/Link.d.ts.map +1 -0
  261. package/lib/types/ink/components/Link.js +33 -0
  262. package/lib/types/ink/components/Newline.d.ts +13 -0
  263. package/lib/types/ink/components/Newline.d.ts.map +1 -0
  264. package/lib/types/ink/components/Newline.js +29 -0
  265. package/lib/types/ink/components/NoSelect.d.ts +20 -0
  266. package/lib/types/ink/components/NoSelect.d.ts.map +1 -0
  267. package/lib/types/ink/components/NoSelect.js +56 -0
  268. package/lib/types/ink/components/RawAnsi.d.ts +17 -0
  269. package/lib/types/ink/components/RawAnsi.d.ts.map +1 -0
  270. package/lib/types/ink/components/RawAnsi.js +45 -0
  271. package/lib/types/ink/components/ScrollBox.d.ts +78 -0
  272. package/lib/types/ink/components/ScrollBox.d.ts.map +1 -0
  273. package/lib/types/ink/components/ScrollBox.js +174 -0
  274. package/lib/types/ink/components/Spacer.d.ts +6 -0
  275. package/lib/types/ink/components/Spacer.d.ts.map +1 -0
  276. package/lib/types/ink/components/Spacer.js +19 -0
  277. package/lib/types/ink/components/StdinContext.d.ts +32 -0
  278. package/lib/types/ink/components/StdinContext.d.ts.map +1 -0
  279. package/lib/types/ink/components/StdinContext.js +16 -0
  280. package/lib/types/ink/components/TerminalFocusContext.d.ts +11 -0
  281. package/lib/types/ink/components/TerminalFocusContext.d.ts.map +1 -0
  282. package/lib/types/ink/components/TerminalFocusContext.js +45 -0
  283. package/lib/types/ink/components/TerminalSizeContext.d.ts +6 -0
  284. package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -0
  285. package/lib/types/ink/components/TerminalSizeContext.js +3 -0
  286. package/lib/types/ink/components/Text.d.ts +56 -0
  287. package/lib/types/ink/components/Text.d.ts.map +1 -0
  288. package/lib/types/ink/components/Text.js +194 -0
  289. package/lib/types/ink/constants.d.ts +3 -0
  290. package/lib/types/ink/constants.d.ts.map +1 -0
  291. package/lib/types/ink/constants.js +2 -0
  292. package/lib/types/ink/cursor.d.ts +11 -0
  293. package/lib/types/ink/cursor.d.ts.map +1 -0
  294. package/lib/types/ink/cursor.js +1 -0
  295. package/lib/types/ink/devtools.d.ts +7 -0
  296. package/lib/types/ink/devtools.d.ts.map +1 -0
  297. package/lib/types/ink/devtools.js +1 -0
  298. package/lib/types/ink/dom.d.ts +178 -0
  299. package/lib/types/ink/dom.d.ts.map +1 -0
  300. package/lib/types/ink/dom.js +424 -0
  301. package/lib/types/ink/events/click-event.d.ts +32 -0
  302. package/lib/types/ink/events/click-event.d.ts.map +1 -0
  303. package/lib/types/ink/events/click-event.js +36 -0
  304. package/lib/types/ink/events/dispatcher.d.ts +63 -0
  305. package/lib/types/ink/events/dispatcher.d.ts.map +1 -0
  306. package/lib/types/ink/events/dispatcher.js +194 -0
  307. package/lib/types/ink/events/emitter.d.ts +20 -0
  308. package/lib/types/ink/events/emitter.d.ts.map +1 -0
  309. package/lib/types/ink/events/emitter.js +43 -0
  310. package/lib/types/ink/events/event-handlers.d.ts +47 -0
  311. package/lib/types/ink/events/event-handlers.d.ts.map +1 -0
  312. package/lib/types/ink/events/event-handlers.js +30 -0
  313. package/lib/types/ink/events/event.d.ts +19 -0
  314. package/lib/types/ink/events/event.d.ts.map +1 -0
  315. package/lib/types/ink/events/event.js +22 -0
  316. package/lib/types/ink/events/focus-event.d.ts +19 -0
  317. package/lib/types/ink/events/focus-event.d.ts.map +1 -0
  318. package/lib/types/ink/events/focus-event.js +21 -0
  319. package/lib/types/ink/events/input-event.d.ts +53 -0
  320. package/lib/types/ink/events/input-event.d.ts.map +1 -0
  321. package/lib/types/ink/events/input-event.js +180 -0
  322. package/lib/types/ink/events/keyboard-event.d.ts +40 -0
  323. package/lib/types/ink/events/keyboard-event.d.ts.map +1 -0
  324. package/lib/types/ink/events/keyboard-event.js +65 -0
  325. package/lib/types/ink/events/paste-event.d.ts +11 -0
  326. package/lib/types/ink/events/paste-event.d.ts.map +1 -0
  327. package/lib/types/ink/events/paste-event.js +13 -0
  328. package/lib/types/ink/events/resize-event.d.ts +13 -0
  329. package/lib/types/ink/events/resize-event.d.ts.map +1 -0
  330. package/lib/types/ink/events/resize-event.js +16 -0
  331. package/lib/types/ink/events/terminal-event.d.ts +112 -0
  332. package/lib/types/ink/events/terminal-event.d.ts.map +1 -0
  333. package/lib/types/ink/events/terminal-event.js +131 -0
  334. package/lib/types/ink/events/terminal-focus-event.d.ts +21 -0
  335. package/lib/types/ink/events/terminal-focus-event.d.ts.map +1 -0
  336. package/lib/types/ink/events/terminal-focus-event.js +18 -0
  337. package/lib/types/ink/focus.d.ts +74 -0
  338. package/lib/types/ink/focus.d.ts.map +1 -0
  339. package/lib/types/ink/focus.js +188 -0
  340. package/lib/types/ink/frame.d.ts +119 -0
  341. package/lib/types/ink/frame.d.ts.map +1 -0
  342. package/lib/types/ink/frame.js +43 -0
  343. package/lib/types/ink/get-max-width.d.ts +20 -0
  344. package/lib/types/ink/get-max-width.d.ts.map +1 -0
  345. package/lib/types/ink/get-max-width.js +25 -0
  346. package/lib/types/ink/hit-test.d.ts +47 -0
  347. package/lib/types/ink/hit-test.d.ts.map +1 -0
  348. package/lib/types/ink/hit-test.js +126 -0
  349. package/lib/types/ink/hooks/use-animation-frame.d.ts +27 -0
  350. package/lib/types/ink/hooks/use-animation-frame.d.ts.map +1 -0
  351. package/lib/types/ink/hooks/use-animation-frame.js +48 -0
  352. package/lib/types/ink/hooks/use-app.d.ts +8 -0
  353. package/lib/types/ink/hooks/use-app.d.ts.map +1 -0
  354. package/lib/types/ink/hooks/use-app.js +8 -0
  355. package/lib/types/ink/hooks/use-copy-on-select.d.ts +22 -0
  356. package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -0
  357. package/lib/types/ink/hooks/use-copy-on-select.js +40 -0
  358. package/lib/types/ink/hooks/use-declared-cursor.d.ts +31 -0
  359. package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -0
  360. package/lib/types/ink/hooks/use-declared-cursor.js +65 -0
  361. package/lib/types/ink/hooks/use-input.d.ts +41 -0
  362. package/lib/types/ink/hooks/use-input.d.ts.map +1 -0
  363. package/lib/types/ink/hooks/use-input.js +73 -0
  364. package/lib/types/ink/hooks/use-interval.d.ts +23 -0
  365. package/lib/types/ink/hooks/use-interval.d.ts.map +1 -0
  366. package/lib/types/ink/hooks/use-interval.js +58 -0
  367. package/lib/types/ink/hooks/use-search-highlight.d.ts +34 -0
  368. package/lib/types/ink/hooks/use-search-highlight.d.ts.map +1 -0
  369. package/lib/types/ink/hooks/use-search-highlight.js +35 -0
  370. package/lib/types/ink/hooks/use-selection.d.ts +44 -0
  371. package/lib/types/ink/hooks/use-selection.d.ts.map +1 -0
  372. package/lib/types/ink/hooks/use-selection.js +64 -0
  373. package/lib/types/ink/hooks/use-stdin.d.ts +8 -0
  374. package/lib/types/ink/hooks/use-stdin.d.ts.map +1 -0
  375. package/lib/types/ink/hooks/use-stdin.js +8 -0
  376. package/lib/types/ink/hooks/use-tab-status.d.ts +18 -0
  377. package/lib/types/ink/hooks/use-tab-status.d.ts.map +1 -0
  378. package/lib/types/ink/hooks/use-tab-status.js +58 -0
  379. package/lib/types/ink/hooks/use-terminal-focus.d.ts +11 -0
  380. package/lib/types/ink/hooks/use-terminal-focus.d.ts.map +1 -0
  381. package/lib/types/ink/hooks/use-terminal-focus.js +15 -0
  382. package/lib/types/ink/hooks/use-terminal-size.d.ts +6 -0
  383. package/lib/types/ink/hooks/use-terminal-size.d.ts.map +1 -0
  384. package/lib/types/ink/hooks/use-terminal-size.js +12 -0
  385. package/lib/types/ink/hooks/use-terminal-title.d.ts +14 -0
  386. package/lib/types/ink/hooks/use-terminal-title.d.ts.map +1 -0
  387. package/lib/types/ink/hooks/use-terminal-title.js +30 -0
  388. package/lib/types/ink/hooks/use-terminal-viewport.d.ts +32 -0
  389. package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -0
  390. package/lib/types/ink/hooks/use-terminal-viewport.js +79 -0
  391. package/lib/types/ink/ink.d.ts +370 -0
  392. package/lib/types/ink/ink.d.ts.map +1 -0
  393. package/lib/types/ink/ink.js +1665 -0
  394. package/lib/types/ink/instances.d.ts +10 -0
  395. package/lib/types/ink/instances.d.ts.map +1 -0
  396. package/lib/types/ink/instances.js +13 -0
  397. package/lib/types/ink/layout/engine.d.ts +7 -0
  398. package/lib/types/ink/layout/engine.d.ts.map +1 -0
  399. package/lib/types/ink/layout/engine.js +8 -0
  400. package/lib/types/ink/layout/geometry.d.ts +86 -0
  401. package/lib/types/ink/layout/geometry.d.ts.map +1 -0
  402. package/lib/types/ink/layout/geometry.js +95 -0
  403. package/lib/types/ink/layout/node.d.ts +151 -0
  404. package/lib/types/ink/layout/node.d.ts.map +1 -0
  405. package/lib/types/ink/layout/node.js +72 -0
  406. package/lib/types/ink/layout/yoga.d.ts +69 -0
  407. package/lib/types/ink/layout/yoga.d.ts.map +1 -0
  408. package/lib/types/ink/layout/yoga.js +249 -0
  409. package/lib/types/ink/line-width-cache.d.ts +9 -0
  410. package/lib/types/ink/line-width-cache.d.ts.map +1 -0
  411. package/lib/types/ink/line-width-cache.js +45 -0
  412. package/lib/types/ink/log-update.d.ts +57 -0
  413. package/lib/types/ink/log-update.d.ts.map +1 -0
  414. package/lib/types/ink/log-update.js +710 -0
  415. package/lib/types/ink/measure-element.d.ts +19 -0
  416. package/lib/types/ink/measure-element.d.ts.map +1 -0
  417. package/lib/types/ink/measure-element.js +10 -0
  418. package/lib/types/ink/measure-text.d.ts +13 -0
  419. package/lib/types/ink/measure-text.d.ts.map +1 -0
  420. package/lib/types/ink/measure-text.js +38 -0
  421. package/lib/types/ink/node-cache.d.ts +33 -0
  422. package/lib/types/ink/node-cache.d.ts.map +1 -0
  423. package/lib/types/ink/node-cache.js +42 -0
  424. package/lib/types/ink/optimizer.d.ts +18 -0
  425. package/lib/types/ink/optimizer.d.ts.map +1 -0
  426. package/lib/types/ink/optimizer.js +83 -0
  427. package/lib/types/ink/output.d.ts +200 -0
  428. package/lib/types/ink/output.d.ts.map +1 -0
  429. package/lib/types/ink/output.js +663 -0
  430. package/lib/types/ink/parse-keypress.d.ts +132 -0
  431. package/lib/types/ink/parse-keypress.d.ts.map +1 -0
  432. package/lib/types/ink/parse-keypress.js +707 -0
  433. package/lib/types/ink/reconciler.d.ts +43 -0
  434. package/lib/types/ink/reconciler.d.ts.map +1 -0
  435. package/lib/types/ink/reconciler.js +413 -0
  436. package/lib/types/ink/render-border.d.ts +36 -0
  437. package/lib/types/ink/render-border.d.ts.map +1 -0
  438. package/lib/types/ink/render-border.js +143 -0
  439. package/lib/types/ink/render-node-to-output.d.ts +93 -0
  440. package/lib/types/ink/render-node-to-output.d.ts.map +1 -0
  441. package/lib/types/ink/render-node-to-output.js +1290 -0
  442. package/lib/types/ink/render-to-screen.d.ts +65 -0
  443. package/lib/types/ink/render-to-screen.d.ts.map +1 -0
  444. package/lib/types/ink/render-to-screen.js +189 -0
  445. package/lib/types/ink/renderer.d.ts +24 -0
  446. package/lib/types/ink/renderer.d.ts.map +1 -0
  447. package/lib/types/ink/renderer.js +136 -0
  448. package/lib/types/ink/root.d.ts +91 -0
  449. package/lib/types/ink/root.d.ts.map +1 -0
  450. package/lib/types/ink/root.js +93 -0
  451. package/lib/types/ink/screen.d.ts +443 -0
  452. package/lib/types/ink/screen.d.ts.map +1 -0
  453. package/lib/types/ink/screen.js +1295 -0
  454. package/lib/types/ink/searchHighlight.d.ts +25 -0
  455. package/lib/types/ink/searchHighlight.d.ts.map +1 -0
  456. package/lib/types/ink/searchHighlight.js +82 -0
  457. package/lib/types/ink/selection.d.ts +323 -0
  458. package/lib/types/ink/selection.d.ts.map +1 -0
  459. package/lib/types/ink/selection.js +881 -0
  460. package/lib/types/ink/squash-text-nodes.d.ts +30 -0
  461. package/lib/types/ink/squash-text-nodes.d.ts.map +1 -0
  462. package/lib/types/ink/squash-text-nodes.js +63 -0
  463. package/lib/types/ink/stringWidth.d.ts +11 -0
  464. package/lib/types/ink/stringWidth.d.ts.map +1 -0
  465. package/lib/types/ink/stringWidth.js +209 -0
  466. package/lib/types/ink/styles.d.ts +324 -0
  467. package/lib/types/ink/styles.d.ts.map +1 -0
  468. package/lib/types/ink/styles.js +307 -0
  469. package/lib/types/ink/supports-hyperlinks.d.ts +20 -0
  470. package/lib/types/ink/supports-hyperlinks.d.ts.map +1 -0
  471. package/lib/types/ink/supports-hyperlinks.js +44 -0
  472. package/lib/types/ink/tabstops.d.ts +9 -0
  473. package/lib/types/ink/tabstops.d.ts.map +1 -0
  474. package/lib/types/ink/tabstops.js +46 -0
  475. package/lib/types/ink/terminal-focus-state.d.ts +35 -0
  476. package/lib/types/ink/terminal-focus-state.d.ts.map +1 -0
  477. package/lib/types/ink/terminal-focus-state.js +57 -0
  478. package/lib/types/ink/terminal-querier.d.ts +161 -0
  479. package/lib/types/ink/terminal-querier.d.ts.map +1 -0
  480. package/lib/types/ink/terminal-querier.js +204 -0
  481. package/lib/types/ink/terminal.d.ts +80 -0
  482. package/lib/types/ink/terminal.d.ts.map +1 -0
  483. package/lib/types/ink/terminal.js +268 -0
  484. package/lib/types/ink/termio/ansi.d.ts +75 -0
  485. package/lib/types/ink/termio/ansi.d.ts.map +1 -0
  486. package/lib/types/ink/termio/ansi.js +79 -0
  487. package/lib/types/ink/termio/csi.d.ts +253 -0
  488. package/lib/types/ink/termio/csi.d.ts.map +1 -0
  489. package/lib/types/ink/termio/csi.js +347 -0
  490. package/lib/types/ink/termio/dec.d.ts +61 -0
  491. package/lib/types/ink/termio/dec.d.ts.map +1 -0
  492. package/lib/types/ink/termio/dec.js +76 -0
  493. package/lib/types/ink/termio/esc.d.ts +15 -0
  494. package/lib/types/ink/termio/esc.d.ts.map +1 -0
  495. package/lib/types/ink/termio/esc.js +57 -0
  496. package/lib/types/ink/termio/osc.d.ts +208 -0
  497. package/lib/types/ink/termio/osc.d.ts.map +1 -0
  498. package/lib/types/ink/termio/osc.js +466 -0
  499. package/lib/types/ink/termio/parser.d.ts +46 -0
  500. package/lib/types/ink/termio/parser.d.ts.map +1 -0
  501. package/lib/types/ink/termio/parser.js +366 -0
  502. package/lib/types/ink/termio/sgr.d.ts +17 -0
  503. package/lib/types/ink/termio/sgr.d.ts.map +1 -0
  504. package/lib/types/ink/termio/sgr.js +300 -0
  505. package/lib/types/ink/termio/tokenize.d.ts +50 -0
  506. package/lib/types/ink/termio/tokenize.d.ts.map +1 -0
  507. package/lib/types/ink/termio/tokenize.js +266 -0
  508. package/lib/types/ink/termio/types.d.ts +211 -0
  509. package/lib/types/ink/termio/types.d.ts.map +1 -0
  510. package/lib/types/ink/termio/types.js +68 -0
  511. package/lib/types/ink/termio.d.ts +25 -0
  512. package/lib/types/ink/termio.d.ts.map +1 -0
  513. package/lib/types/ink/termio.js +24 -0
  514. package/lib/types/ink/truncateToWidth.d.ts +7 -0
  515. package/lib/types/ink/truncateToWidth.d.ts.map +1 -0
  516. package/lib/types/ink/truncateToWidth.js +18 -0
  517. package/lib/types/ink/useTerminalNotification.d.ts +45 -0
  518. package/lib/types/ink/useTerminalNotification.d.ts.map +1 -0
  519. package/lib/types/ink/useTerminalNotification.js +70 -0
  520. package/lib/types/ink/warn.d.ts +7 -0
  521. package/lib/types/ink/warn.d.ts.map +1 -0
  522. package/lib/types/ink/warn.js +15 -0
  523. package/lib/types/ink/widest-line.d.ts +7 -0
  524. package/lib/types/ink/widest-line.d.ts.map +1 -0
  525. package/lib/types/ink/widest-line.js +19 -0
  526. package/lib/types/ink/wrap-text.d.ts +10 -0
  527. package/lib/types/ink/wrap-text.d.ts.map +1 -0
  528. package/lib/types/ink/wrap-text.js +61 -0
  529. package/lib/types/ink/wrapAnsi.d.ts +18 -0
  530. package/lib/types/ink/wrapAnsi.d.ts.map +1 -0
  531. package/lib/types/ink/wrapAnsi.js +16 -0
  532. package/lib/types/invariant.d.ts +20 -0
  533. package/lib/types/invariant.d.ts.map +1 -0
  534. package/lib/types/invariant.js +26 -0
  535. package/lib/types/modelPrefs.d.ts +37 -0
  536. package/lib/types/modelPrefs.d.ts.map +1 -0
  537. package/lib/types/modelPrefs.js +66 -0
  538. package/lib/types/modelRoute.d.ts +79 -0
  539. package/lib/types/modelRoute.d.ts.map +1 -0
  540. package/lib/types/modelRoute.js +96 -0
  541. package/lib/types/native-ts/yoga-layout/enums.d.ts +183 -0
  542. package/lib/types/native-ts/yoga-layout/enums.d.ts.map +1 -0
  543. package/lib/types/native-ts/yoga-layout/enums.js +150 -0
  544. package/lib/types/native-ts/yoga-layout/index.d.ts +788 -0
  545. package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -0
  546. package/lib/types/native-ts/yoga-layout/index.js +2571 -0
  547. package/lib/types/packaged-skills.d.ts +10 -0
  548. package/lib/types/packaged-skills.d.ts.map +1 -0
  549. package/lib/types/packaged-skills.js +63 -0
  550. package/lib/types/plugin.d.ts +33 -0
  551. package/lib/types/plugin.d.ts.map +1 -0
  552. package/lib/types/plugin.js +454 -0
  553. package/lib/types/presetPrefs.d.ts +29 -0
  554. package/lib/types/presetPrefs.d.ts.map +1 -0
  555. package/lib/types/presetPrefs.js +61 -0
  556. package/lib/types/presets.d.ts +110 -0
  557. package/lib/types/presets.d.ts.map +1 -0
  558. package/lib/types/presets.js +114 -0
  559. package/lib/types/questions.d.ts +97 -0
  560. package/lib/types/questions.d.ts.map +1 -0
  561. package/lib/types/questions.js +201 -0
  562. package/lib/types/screens/Chat.d.ts +23 -0
  563. package/lib/types/screens/Chat.d.ts.map +1 -0
  564. package/lib/types/screens/Chat.js +1263 -0
  565. package/lib/types/screens/StatusLine.d.ts +16 -0
  566. package/lib/types/screens/StatusLine.d.ts.map +1 -0
  567. package/lib/types/screens/StatusLine.js +105 -0
  568. package/lib/types/screens/StatusMetrics.d.ts +87 -0
  569. package/lib/types/screens/StatusMetrics.d.ts.map +1 -0
  570. package/lib/types/screens/StatusMetrics.js +252 -0
  571. package/lib/types/sessionHistory.d.ts +32 -0
  572. package/lib/types/sessionHistory.d.ts.map +1 -0
  573. package/lib/types/sessionHistory.js +87 -0
  574. package/lib/types/theme.d.ts +115 -0
  575. package/lib/types/theme.d.ts.map +1 -0
  576. package/lib/types/theme.js +300 -0
  577. package/lib/types/themePrefs.d.ts +28 -0
  578. package/lib/types/themePrefs.d.ts.map +1 -0
  579. package/lib/types/themePrefs.js +59 -0
  580. package/lib/types/ui.d.ts +28 -0
  581. package/lib/types/ui.d.ts.map +1 -0
  582. package/lib/types/ui.js +25 -0
  583. package/lib/types/update.d.ts +76 -0
  584. package/lib/types/update.d.ts.map +1 -0
  585. package/lib/types/update.js +203 -0
  586. package/lib/types/utils/clipboard.d.ts +43 -0
  587. package/lib/types/utils/clipboard.d.ts.map +1 -0
  588. package/lib/types/utils/clipboard.js +82 -0
  589. package/lib/types/utils/debug.d.ts +8 -0
  590. package/lib/types/utils/debug.d.ts.map +1 -0
  591. package/lib/types/utils/debug.js +12 -0
  592. package/lib/types/utils/earlyInput.d.ts +7 -0
  593. package/lib/types/utils/earlyInput.d.ts.map +1 -0
  594. package/lib/types/utils/earlyInput.js +6 -0
  595. package/lib/types/utils/env.d.ts +10 -0
  596. package/lib/types/utils/env.d.ts.map +1 -0
  597. package/lib/types/utils/env.js +9 -0
  598. package/lib/types/utils/envUtils.d.ts +8 -0
  599. package/lib/types/utils/envUtils.d.ts.map +1 -0
  600. package/lib/types/utils/envUtils.js +13 -0
  601. package/lib/types/utils/execFileNoThrow.d.ts +34 -0
  602. package/lib/types/utils/execFileNoThrow.d.ts.map +1 -0
  603. package/lib/types/utils/execFileNoThrow.js +31 -0
  604. package/lib/types/utils/fullscreen.d.ts +8 -0
  605. package/lib/types/utils/fullscreen.d.ts.map +1 -0
  606. package/lib/types/utils/fullscreen.js +10 -0
  607. package/lib/types/utils/intl.d.ts +7 -0
  608. package/lib/types/utils/intl.d.ts.map +1 -0
  609. package/lib/types/utils/intl.js +9 -0
  610. package/lib/types/utils/loaded-context.d.ts +20 -0
  611. package/lib/types/utils/loaded-context.d.ts.map +1 -0
  612. package/lib/types/utils/loaded-context.js +36 -0
  613. package/lib/types/utils/log.d.ts +7 -0
  614. package/lib/types/utils/log.d.ts.map +1 -0
  615. package/lib/types/utils/log.js +9 -0
  616. package/lib/types/utils/mentions.d.ts +30 -0
  617. package/lib/types/utils/mentions.d.ts.map +1 -0
  618. package/lib/types/utils/mentions.js +72 -0
  619. package/lib/types/utils/narration.d.ts +11 -0
  620. package/lib/types/utils/narration.d.ts.map +1 -0
  621. package/lib/types/utils/narration.js +16 -0
  622. package/lib/types/utils/semver.d.ts +9 -0
  623. package/lib/types/utils/semver.d.ts.map +1 -0
  624. package/lib/types/utils/semver.js +24 -0
  625. package/lib/types/utils/sliceAnsi.d.ts +12 -0
  626. package/lib/types/utils/sliceAnsi.d.ts.map +1 -0
  627. package/lib/types/utils/sliceAnsi.js +79 -0
  628. package/lib/types/working-activity.d.ts +19 -0
  629. package/lib/types/working-activity.d.ts.map +1 -0
  630. package/lib/types/working-activity.js +18 -0
  631. package/package.json +141 -0
  632. package/skills/audit/SKILL.md +24 -0
  633. package/skills/bug/SKILL.md +27 -0
  634. package/skills/pr-comments/SKILL.md +20 -0
  635. package/skills/practice/SKILL.md +22 -0
  636. package/skills/release-notes/SKILL.md +25 -0
  637. package/skills/review/SKILL.md +25 -0
  638. package/skills/vuln-check/SKILL.md +25 -0
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Agent-presets roster integration (issue #8): compose each session's
3
+ * model-facing world (tools, prompt sections, projections) from one preset
4
+ * directory instead of the host composition.
5
+ *
6
+ * Mirrors the official host's integration (dsh-host-apiproxy's
7
+ * `composeAgent`): the preset id is resolved BEFORE create/resume because the
8
+ * session boundary snapshots `meta` (the durable header's `agentPreset`)
9
+ * before asynchronous setup begins; the mount itself runs inside the agent
10
+ * factory's `setup(agentCtx)` hook, where a composition failure rolls the
11
+ * whole creation back instead of publishing a half-configured agent.
12
+ *
13
+ * A deployment without the roster (bare `dsh --config cordis.yml` boots,
14
+ * older CLI without the shipped preset root) composes nothing: callers get
15
+ * no `setup` and every session shares the host composition — the behavior
16
+ * before presets existed.
17
+ */
18
+ import type { Context } from '@deepseek-ai/cordis';
19
+ import type { AgentSetup } from '@deepseek-ai/dsh-agent';
20
+ import type { SessionId } from '@deepseek-ai/dsh-session';
21
+ /** One roster entry, as returned by `agentPresets.list()`/`resolve()`. */
22
+ export interface AgentPresetInfo {
23
+ readonly id: string;
24
+ readonly trust: 'system' | 'user';
25
+ readonly name?: string;
26
+ readonly description?: string;
27
+ /** Present when the preset cannot compose a session (human-readable). */
28
+ readonly broken?: string;
29
+ }
30
+ /** The `ctx.agentPresets` service surface dsh-tui consumes. */
31
+ export interface AgentPresetsLike {
32
+ readonly defaultId: string;
33
+ list(): Promise<readonly AgentPresetInfo[]>;
34
+ resolve(id?: string): Promise<AgentPresetInfo>;
35
+ mount(agentCtx: Context, id?: string): Promise<AgentPresetInfo>;
36
+ recompose(agentCtx: Context, id: string): Promise<AgentPresetInfo>;
37
+ /** Read one service from the agent's own scope chain (preset realms). */
38
+ serviceFor?(agent: {
39
+ ctx: Context;
40
+ }, key: string): unknown;
41
+ }
42
+ /**
43
+ * The mounted preset roster, or undefined when the composition has no
44
+ * `agent-presets` row (bare boots) — optional-service access via `ctx.get`.
45
+ */
46
+ export declare function rosterOf(ctx: Context): AgentPresetsLike | undefined;
47
+ /** The composition inputs for `agents.create`/`agents.resume`. */
48
+ export interface PresetComposition {
49
+ /** Value for the durable header's `meta.agentPreset`; absent without a roster. */
50
+ readonly agentPreset?: string;
51
+ /** Factory setup hook mounting the preset onto the unpublished agent. */
52
+ readonly setup?: AgentSetup;
53
+ }
54
+ /**
55
+ * Resolve the preset one new/resumed session will run under and the setup
56
+ * that installs it. `requested` undefined adopts the roster default.
57
+ *
58
+ * Resolution failures (unknown/broken preset id, an empty roster that cannot
59
+ * supply even the default) degrade to the rosterless composition with a loud
60
+ * log line: a session that cannot start at all is worse than one running on
61
+ * the host composition.
62
+ *
63
+ * @param ctx - The plugin context (roster lookup + logging).
64
+ * @param requested - The preset id the caller wants, or undefined for the default.
65
+ * @returns The header value + setup hook, or an empty composition.
66
+ */
67
+ export declare function composePreset(ctx: Context, requested?: string): Promise<PresetComposition>;
68
+ /**
69
+ * The preset a PERSISTED session actually runs, read from its log: the last
70
+ * `agent-preset/selected` event wins over the creation header (a blank
71
+ * session may have switched). undefined when the log records none (sessions
72
+ * from before presets existed → the roster default applies at mount).
73
+ *
74
+ * @param ctx - The plugin context (persistence lookup).
75
+ * @param sessionId - The persisted session to inspect.
76
+ * @returns The running preset id, or undefined when unrecorded/unreadable.
77
+ */
78
+ export declare function resolvePersistedPreset(ctx: Context, sessionId: SessionId): Promise<string | undefined>;
79
+ /**
80
+ * The preset a LIVE session runs, resolved from its own log (last
81
+ * `agent-preset/selected` wins over the header). Used for fork-style creates
82
+ * (rewind/model switch) and for reading an already-live agent's composition.
83
+ *
84
+ * @param session - The live session (`header` + `events`).
85
+ * @returns The running preset id, or undefined when the log records none.
86
+ */
87
+ export declare function runningPresetOf(session: {
88
+ header: {
89
+ agentPreset?: string;
90
+ };
91
+ events: readonly {
92
+ type: string;
93
+ data: unknown;
94
+ }[];
95
+ }): string | undefined;
96
+ /**
97
+ * Read a service the way a joined agent sees it: through the preset scope
98
+ * chain when a roster is mounted (preset realms hide e.g. `compaction` from
99
+ * the root context), falling back to the host context otherwise. Mirrors the
100
+ * official host's `agentPresets.serviceFor(agent, key) ?? ctx.get(key)`.
101
+ *
102
+ * @param ctx - The plugin context (roster + host fallback).
103
+ * @param agent - The live agent whose scope chain resolves first.
104
+ * @param key - The cordis service key.
105
+ * @returns The service instance, or undefined when neither layer provides it.
106
+ */
107
+ export declare function serviceForAgent<T>(ctx: Context, agent: {
108
+ ctx: Context;
109
+ }, key: string): T | undefined;
110
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGzD,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,IAAI,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAA;IAC3C,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9C,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/D,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAClE,yEAAyE;IACzE,UAAU,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAC3D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAEnE;AAED,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqB5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CACnD,GAAG,MAAM,GAAG,SAAS,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Agent-presets roster integration (issue #8): compose each session's
3
+ * model-facing world (tools, prompt sections, projections) from one preset
4
+ * directory instead of the host composition.
5
+ *
6
+ * Mirrors the official host's integration (dsh-host-apiproxy's
7
+ * `composeAgent`): the preset id is resolved BEFORE create/resume because the
8
+ * session boundary snapshots `meta` (the durable header's `agentPreset`)
9
+ * before asynchronous setup begins; the mount itself runs inside the agent
10
+ * factory's `setup(agentCtx)` hook, where a composition failure rolls the
11
+ * whole creation back instead of publishing a half-configured agent.
12
+ *
13
+ * A deployment without the roster (bare `dsh --config cordis.yml` boots,
14
+ * older CLI without the shipped preset root) composes nothing: callers get
15
+ * no `setup` and every session shares the host composition — the behavior
16
+ * before presets existed.
17
+ */
18
+ import { resolveSessionPreset } from '@deepseek-ai/dsh-agent-presets';
19
+ /**
20
+ * The mounted preset roster, or undefined when the composition has no
21
+ * `agent-presets` row (bare boots) — optional-service access via `ctx.get`.
22
+ */
23
+ export function rosterOf(ctx) {
24
+ return ctx.get('agentPresets');
25
+ }
26
+ /**
27
+ * Resolve the preset one new/resumed session will run under and the setup
28
+ * that installs it. `requested` undefined adopts the roster default.
29
+ *
30
+ * Resolution failures (unknown/broken preset id, an empty roster that cannot
31
+ * supply even the default) degrade to the rosterless composition with a loud
32
+ * log line: a session that cannot start at all is worse than one running on
33
+ * the host composition.
34
+ *
35
+ * @param ctx - The plugin context (roster lookup + logging).
36
+ * @param requested - The preset id the caller wants, or undefined for the default.
37
+ * @returns The header value + setup hook, or an empty composition.
38
+ */
39
+ export async function composePreset(ctx, requested) {
40
+ const presets = rosterOf(ctx);
41
+ if (presets === undefined)
42
+ return {};
43
+ let resolvedId;
44
+ try {
45
+ resolvedId = (await presets.resolve(requested)).id;
46
+ }
47
+ catch (error) {
48
+ ctx.logger.warn(`dsh-tui: agent preset ${requested === undefined ? '(default)' : `"${requested}"`} unavailable ` +
49
+ `(${error instanceof Error ? error.message : String(error)}) — composing the session without a preset`);
50
+ return {};
51
+ }
52
+ return {
53
+ agentPreset: resolvedId,
54
+ setup: async (agentCtx) => {
55
+ await presets.mount(agentCtx, resolvedId);
56
+ },
57
+ };
58
+ }
59
+ /**
60
+ * The preset a PERSISTED session actually runs, read from its log: the last
61
+ * `agent-preset/selected` event wins over the creation header (a blank
62
+ * session may have switched). undefined when the log records none (sessions
63
+ * from before presets existed → the roster default applies at mount).
64
+ *
65
+ * @param ctx - The plugin context (persistence lookup).
66
+ * @param sessionId - The persisted session to inspect.
67
+ * @returns The running preset id, or undefined when unrecorded/unreadable.
68
+ */
69
+ export async function resolvePersistedPreset(ctx, sessionId) {
70
+ const persistence = ctx.get('sessionPersistence');
71
+ if (persistence === undefined)
72
+ return undefined;
73
+ try {
74
+ const { meta, events } = await persistence.load(sessionId);
75
+ return resolveSessionPreset({
76
+ header: meta,
77
+ events,
78
+ });
79
+ }
80
+ catch {
81
+ // A missing/corrupt artifact leaves resume itself to report the failure;
82
+ // the preset lookup must not mask it with a second, misleading error.
83
+ return undefined;
84
+ }
85
+ }
86
+ /**
87
+ * The preset a LIVE session runs, resolved from its own log (last
88
+ * `agent-preset/selected` wins over the header). Used for fork-style creates
89
+ * (rewind/model switch) and for reading an already-live agent's composition.
90
+ *
91
+ * @param session - The live session (`header` + `events`).
92
+ * @returns The running preset id, or undefined when the log records none.
93
+ */
94
+ export function runningPresetOf(session) {
95
+ return resolveSessionPreset(session);
96
+ }
97
+ /**
98
+ * Read a service the way a joined agent sees it: through the preset scope
99
+ * chain when a roster is mounted (preset realms hide e.g. `compaction` from
100
+ * the root context), falling back to the host context otherwise. Mirrors the
101
+ * official host's `agentPresets.serviceFor(agent, key) ?? ctx.get(key)`.
102
+ *
103
+ * @param ctx - The plugin context (roster + host fallback).
104
+ * @param agent - The live agent whose scope chain resolves first.
105
+ * @param key - The cordis service key.
106
+ * @returns The service instance, or undefined when neither layer provides it.
107
+ */
108
+ export function serviceForAgent(ctx, agent, key) {
109
+ const presets = rosterOf(ctx);
110
+ const scoped = presets?.serviceFor?.(agent, key);
111
+ if (scoped !== undefined)
112
+ return scoped;
113
+ return ctx.get(key);
114
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Ask-user-question store — the UI-side half of the DSH user-interaction
3
+ * seam (`ctx.userQuestions`). The harness's model-facing
4
+ * `ask_user_question` tool calls `UserQuestionService.ask()`, which
5
+ * forwards to the provider registered here; this store parks the request,
6
+ * surfaces one question at a time to the TUI (Claude Code style
7
+ * questionnaire), and settles the harness promise when the user answers,
8
+ * cancels, or the owning tool's abort signal fires.
9
+ *
10
+ * Queue semantics mirror the official dsh-tui chat/questions machine: asks
11
+ * arrive one at a time in practice (the tool blocks until answered), but
12
+ * concurrent asks from subagents are drained FIFO.
13
+ */
14
+ import { type AskUserQuestionAnswer, type AskUserQuestionItem, type AskUserQuestionRequest } from '@deepseek-ai/dsh-user-questions';
15
+ /** One answered question as the panel submits it: selected option labels
16
+ * plus optional free-text (the dsh protocol's "Other" answer). */
17
+ export interface QuestionSelection {
18
+ readonly selected: string[];
19
+ readonly custom?: string;
20
+ }
21
+ /** What the TUI renders while a question is pending. */
22
+ export interface QuestionSnapshot {
23
+ /** Stable key so the panel remounts (fresh selection state) per question. */
24
+ readonly key: string;
25
+ readonly question: AskUserQuestionItem;
26
+ /** 1-based position within the batch. */
27
+ readonly position: number;
28
+ /** Total questions in the batch. */
29
+ readonly total: number;
30
+ /** Questions answered before the current one. */
31
+ readonly answered: number;
32
+ }
33
+ /** Completed batch summary, pushed into the transcript by the caller. */
34
+ export interface QuestionSummary {
35
+ readonly title: string;
36
+ readonly lines: readonly string[];
37
+ }
38
+ /**
39
+ * Ask-user-question store: parks asks from the harness's user-interaction
40
+ * seam, surfaces one question at a time to the TUI, and settles each ask
41
+ * when the user answers or the batch is interrupted. The TUI subscribes for
42
+ * re-renders and answers via {@link QuestionStore.answerCurrent}.
43
+ */
44
+ export declare class QuestionStore {
45
+ private readonly queue;
46
+ private active;
47
+ private readonly listeners;
48
+ private batchSeq;
49
+ /** Completed batch summaries, drained by the TUI into the transcript. */
50
+ private summaries;
51
+ /**
52
+ * Cached snapshot: useSyncExternalStore requires a stable reference while
53
+ * nothing changed (a fresh object per call would loop re-renders).
54
+ */
55
+ private snapshotCache;
56
+ /**
57
+ * Subscribe to store changes (useSyncExternalStore contract).
58
+ * @param listener - Called after every mutation that changes the snapshot.
59
+ * @returns An unsubscribe function removing the listener.
60
+ */
61
+ subscribe(listener: () => void): () => void;
62
+ /**
63
+ * The question the TUI should render now, or null when idle.
64
+ * @returns The cached snapshot; the reference is stable between mutations.
65
+ */
66
+ getSnapshot(): QuestionSnapshot | null;
67
+ /**
68
+ * Take (and clear) every completed batch summary for the transcript.
69
+ * @returns The summaries collected since the last take.
70
+ */
71
+ takeSummaries(): QuestionSummary[];
72
+ private emit;
73
+ /** Rebuild the cached snapshot after any mutation of active/index. */
74
+ private rebuildSnapshot;
75
+ /**
76
+ * Provider entry point — called by `ctx.userQuestions.ask()` when the
77
+ * model runs the `ask_user_question` tool.
78
+ * @param request - The ask request: questions plus optional abort signal.
79
+ * @returns A promise settling with the collected answers when the user
80
+ * submits the batch, or rejecting when the ask is interrupted.
81
+ */
82
+ ask(request: AskUserQuestionRequest): Promise<AskUserQuestionAnswer>;
83
+ /** Advance to the next queued ask, if any. */
84
+ private startNext;
85
+ /**
86
+ * The user submitted an answer for the current question; advances the
87
+ * batch and settles it once every question is answered.
88
+ * @param selection - Selected option labels plus optional custom text.
89
+ */
90
+ answerCurrent(selection: QuestionSelection): void;
91
+ /** The user interrupted the questionnaire (Esc / Ctrl+C). */
92
+ cancelCurrent(): void;
93
+ /** Reject the active and all queued asks (plugin teardown). */
94
+ rejectAll(): void;
95
+ private fail;
96
+ }
97
+ //# sourceMappingURL=questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAA;AAExC;mEACmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAgBD,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AA0BD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAI;IACpB,yEAAyE;IACzE,OAAO,CAAC,SAAS,CAAwB;IACzC;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAgC;IAErD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;;OAGG;IACH,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAItC;;;OAGG;IACH,aAAa,IAAI,eAAe,EAAE;IAMlC,OAAO,CAAC,IAAI;IAIZ,sEAAsE;IACtE,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA6BpE,8CAA8C;IAC9C,OAAO,CAAC,SAAS;IAOjB;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAwBjD,6DAA6D;IAC7D,aAAa,IAAI,IAAI;IAUrB,+DAA+D;IAC/D,SAAS,IAAI,IAAI;IASjB,OAAO,CAAC,IAAI;CAMb"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Ask-user-question store — the UI-side half of the DSH user-interaction
3
+ * seam (`ctx.userQuestions`). The harness's model-facing
4
+ * `ask_user_question` tool calls `UserQuestionService.ask()`, which
5
+ * forwards to the provider registered here; this store parks the request,
6
+ * surfaces one question at a time to the TUI (Claude Code style
7
+ * questionnaire), and settles the harness promise when the user answers,
8
+ * cancels, or the owning tool's abort signal fires.
9
+ *
10
+ * Queue semantics mirror the official dsh-tui chat/questions machine: asks
11
+ * arrive one at a time in practice (the tool blocks until answered), but
12
+ * concurrent asks from subagents are drained FIFO.
13
+ */
14
+ import { t } from './i18n.js';
15
+ import { UserQuestionError, } from '@deepseek-ai/dsh-user-questions';
16
+ const ASK_ABORTED = 'ASK_ABORTED';
17
+ /** Truncate a long answer line for the transcript summary. */
18
+ function clip(text, max = 140) {
19
+ if (text.length <= max)
20
+ return text;
21
+ return `${text.slice(0, max)}…`;
22
+ }
23
+ function buildSummary(pending) {
24
+ const lines = pending.answers.map(answer => {
25
+ const question = pending.request.questions.find(q => q.id === answer.id);
26
+ const labels = answer.selected.join('、');
27
+ const text = answer.custom !== undefined && answer.custom !== ''
28
+ ? labels === '' ? answer.custom : `${labels}:${answer.custom}`
29
+ : labels;
30
+ return `· ${question?.question ?? answer.id} → ${clip(text)}`;
31
+ });
32
+ const total = pending.request.questions.length;
33
+ return {
34
+ title: t('questionnaire-answered', { total }),
35
+ lines,
36
+ };
37
+ }
38
+ /**
39
+ * Ask-user-question store: parks asks from the harness's user-interaction
40
+ * seam, surfaces one question at a time to the TUI, and settles each ask
41
+ * when the user answers or the batch is interrupted. The TUI subscribes for
42
+ * re-renders and answers via {@link QuestionStore.answerCurrent}.
43
+ */
44
+ export class QuestionStore {
45
+ queue = [];
46
+ active;
47
+ listeners = new Set();
48
+ batchSeq = 0;
49
+ /** Completed batch summaries, drained by the TUI into the transcript. */
50
+ summaries = [];
51
+ /**
52
+ * Cached snapshot: useSyncExternalStore requires a stable reference while
53
+ * nothing changed (a fresh object per call would loop re-renders).
54
+ */
55
+ snapshotCache = null;
56
+ /**
57
+ * Subscribe to store changes (useSyncExternalStore contract).
58
+ * @param listener - Called after every mutation that changes the snapshot.
59
+ * @returns An unsubscribe function removing the listener.
60
+ */
61
+ subscribe(listener) {
62
+ this.listeners.add(listener);
63
+ return () => {
64
+ this.listeners.delete(listener);
65
+ };
66
+ }
67
+ /**
68
+ * The question the TUI should render now, or null when idle.
69
+ * @returns The cached snapshot; the reference is stable between mutations.
70
+ */
71
+ getSnapshot() {
72
+ return this.snapshotCache;
73
+ }
74
+ /**
75
+ * Take (and clear) every completed batch summary for the transcript.
76
+ * @returns The summaries collected since the last take.
77
+ */
78
+ takeSummaries() {
79
+ const summaries = this.summaries;
80
+ this.summaries = [];
81
+ return summaries;
82
+ }
83
+ emit() {
84
+ for (const listener of this.listeners)
85
+ listener();
86
+ }
87
+ /** Rebuild the cached snapshot after any mutation of active/index. */
88
+ rebuildSnapshot() {
89
+ const pending = this.active;
90
+ if (pending === undefined) {
91
+ this.snapshotCache = null;
92
+ return;
93
+ }
94
+ const question = pending.request.questions[pending.index];
95
+ this.snapshotCache = question === undefined ? null : {
96
+ key: `${pending.batchId}-${pending.index}`,
97
+ question,
98
+ position: pending.index + 1,
99
+ total: pending.request.questions.length,
100
+ answered: pending.answers.length,
101
+ };
102
+ }
103
+ /**
104
+ * Provider entry point — called by `ctx.userQuestions.ask()` when the
105
+ * model runs the `ask_user_question` tool.
106
+ * @param request - The ask request: questions plus optional abort signal.
107
+ * @returns A promise settling with the collected answers when the user
108
+ * submits the batch, or rejecting when the ask is interrupted.
109
+ */
110
+ ask(request) {
111
+ return new Promise((resolve, reject) => {
112
+ const pending = {
113
+ request,
114
+ batchId: ++this.batchSeq,
115
+ index: 0,
116
+ answers: [],
117
+ resolve,
118
+ reject,
119
+ onAbort: () => {
120
+ if (this.active === pending) {
121
+ this.active = undefined;
122
+ this.rebuildSnapshot();
123
+ this.fail(pending);
124
+ this.startNext();
125
+ this.emit();
126
+ return;
127
+ }
128
+ const at = this.queue.indexOf(pending);
129
+ if (at >= 0)
130
+ this.queue.splice(at, 1);
131
+ this.fail(pending);
132
+ },
133
+ };
134
+ request.signal?.addEventListener('abort', pending.onAbort, { once: true });
135
+ this.queue.push(pending);
136
+ this.startNext();
137
+ });
138
+ }
139
+ /** Advance to the next queued ask, if any. */
140
+ startNext() {
141
+ if (this.active !== undefined || this.queue.length === 0)
142
+ return;
143
+ this.active = this.queue.shift();
144
+ this.rebuildSnapshot();
145
+ this.emit();
146
+ }
147
+ /**
148
+ * The user submitted an answer for the current question; advances the
149
+ * batch and settles it once every question is answered.
150
+ * @param selection - Selected option labels plus optional custom text.
151
+ */
152
+ answerCurrent(selection) {
153
+ const pending = this.active;
154
+ const question = pending?.request.questions[pending.index];
155
+ if (pending === undefined || question === undefined)
156
+ return;
157
+ pending.answers.push({
158
+ id: question.id,
159
+ selected: [...selection.selected],
160
+ ...(selection.custom !== undefined && selection.custom !== ''
161
+ ? { custom: selection.custom }
162
+ : {}),
163
+ });
164
+ pending.index += 1;
165
+ if (pending.index >= pending.request.questions.length) {
166
+ // Batch complete: settle the harness promise, remember a transcript
167
+ // summary, and drain the next queued ask if any.
168
+ this.active = undefined;
169
+ pending.resolve({ answers: [...pending.answers] });
170
+ this.summaries.push(buildSummary(pending));
171
+ this.startNext();
172
+ }
173
+ this.rebuildSnapshot();
174
+ this.emit();
175
+ }
176
+ /** The user interrupted the questionnaire (Esc / Ctrl+C). */
177
+ cancelCurrent() {
178
+ const pending = this.active;
179
+ if (pending === undefined)
180
+ return;
181
+ this.active = undefined;
182
+ this.rebuildSnapshot();
183
+ this.fail(pending);
184
+ this.startNext();
185
+ this.emit();
186
+ }
187
+ /** Reject the active and all queued asks (plugin teardown). */
188
+ rejectAll() {
189
+ const active = this.active;
190
+ this.active = undefined;
191
+ this.rebuildSnapshot();
192
+ if (active !== undefined)
193
+ this.fail(active);
194
+ for (const pending of this.queue.splice(0))
195
+ this.fail(pending);
196
+ this.emit();
197
+ }
198
+ fail(pending) {
199
+ pending.reject(new UserQuestionError('ask_user_question was interrupted before the user answered', ASK_ABORTED));
200
+ }
201
+ }
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import type { Channel } from '../channel.js';
3
+ import type { QuestionStore } from '../questions.js';
4
+ /**
5
+ * Main chat screen in the Claude Code layout: a scrollable transcript
6
+ * (with the current turn's prompt pinned above the viewport while scrolled
7
+ * up), transient notifications, the working spinner, the bordered prompt
8
+ * input (with slash-command overlay) and the status line pinned at the
9
+ * bottom.
10
+ *
11
+ * Ctrl+O toggles expanded detail globally; Shift+↑ enters message-selection
12
+ * mode (↑/↓ move, Enter expands the selected row, Esc exits); Ctrl+C
13
+ * interrupts the running turn, or (when idle) asks for a second Ctrl+C to
14
+ * exit; Enter while scrolled up jumps back to the bottom.
15
+ */
16
+ export declare function Chat({ channel, questionStore, onExit, onUpdate, }: {
17
+ channel: Channel;
18
+ questionStore: QuestionStore;
19
+ onExit: () => void;
20
+ /** Update the installed package and restart the current TUI process. */
21
+ onUpdate?: () => void;
22
+ }): React.JSX.Element;
23
+ //# sourceMappingURL=Chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/screens/Chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,KAAK,EAAE,OAAO,EAAyB,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAqFpD;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,aAAa,EACb,MAAM,EACN,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,aAAa,CAAA;IAC5B,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,qBA0wCA"}