@deepseek-harness-tui/dsh-tui 0.11.1 → 0.11.2

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 (427) hide show
  1. package/README.md +50 -20
  2. package/assets/whale-girl/whale-girl-dark.png +0 -0
  3. package/assets/whale-girl/whale-girl-happy.png +0 -0
  4. package/assets/whale-girl/whale-girl.png +0 -0
  5. package/bin/dsh-tui.js +63 -3
  6. package/cordis.patch.yml +39 -17
  7. package/cordis.yml +3 -2
  8. package/lib/settings.json +1272 -0
  9. package/lib/types/adapter/channel/ui-policy.d.ts +9 -2
  10. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  11. package/lib/types/adapter/channel/ui-policy.js +13 -0
  12. package/lib/types/adapter/kernel/replay.d.ts.map +1 -1
  13. package/lib/types/adapter/kernel/replay.js +2 -0
  14. package/lib/types/adapter/ports/channel-display.d.ts +12 -0
  15. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
  16. package/lib/types/adapter/ports/channel-session.d.ts +38 -0
  17. package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
  18. package/lib/types/adapter/ports/channel-settings.d.ts +12 -0
  19. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  20. package/lib/types/adapter/ports/channel-ui.d.ts +46 -4
  21. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  22. package/lib/types/adapter/ports/channel-view.d.ts +43 -0
  23. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  24. package/lib/types/commands.d.ts.map +1 -1
  25. package/lib/types/commands.js +2 -0
  26. package/lib/types/components/BalanceReportRow.d.ts +10 -2
  27. package/lib/types/components/BalanceReportRow.d.ts.map +1 -1
  28. package/lib/types/components/BalanceReportRow.js +18 -4
  29. package/lib/types/components/CompactionStatusRow.d.ts +24 -0
  30. package/lib/types/components/CompactionStatusRow.d.ts.map +1 -0
  31. package/lib/types/components/CompactionStatusRow.js +72 -0
  32. package/lib/types/components/GoalTodoPanel.js +2 -2
  33. package/lib/types/components/HelpMenu.d.ts +2 -2
  34. package/lib/types/components/HelpMenu.d.ts.map +1 -1
  35. package/lib/types/components/HelpMenu.js +5 -4
  36. package/lib/types/components/InlineMathParagraph.d.ts +22 -0
  37. package/lib/types/components/InlineMathParagraph.d.ts.map +1 -0
  38. package/lib/types/components/InlineMathParagraph.js +178 -0
  39. package/lib/types/components/LogoV2.d.ts +41 -3
  40. package/lib/types/components/LogoV2.d.ts.map +1 -1
  41. package/lib/types/components/LogoV2.js +148 -24
  42. package/lib/types/components/Markdown.d.ts +10 -3
  43. package/lib/types/components/Markdown.d.ts.map +1 -1
  44. package/lib/types/components/Markdown.js +47 -14
  45. package/lib/types/components/MathBlock.d.ts +13 -0
  46. package/lib/types/components/MathBlock.d.ts.map +1 -0
  47. package/lib/types/components/MathBlock.js +136 -0
  48. package/lib/types/components/MessageList.d.ts +10 -1
  49. package/lib/types/components/MessageList.d.ts.map +1 -1
  50. package/lib/types/components/MessageList.js +13 -4
  51. package/lib/types/components/MigratePicker.d.ts +30 -0
  52. package/lib/types/components/MigratePicker.d.ts.map +1 -0
  53. package/lib/types/components/MigratePicker.js +38 -0
  54. package/lib/types/components/PromptInput.d.ts +17 -0
  55. package/lib/types/components/PromptInput.d.ts.map +1 -1
  56. package/lib/types/components/PromptInput.js +48 -7
  57. package/lib/types/components/SplitDiffView.d.ts.map +1 -1
  58. package/lib/types/components/SplitDiffView.js +2 -1
  59. package/lib/types/components/StarPrompt.d.ts +53 -0
  60. package/lib/types/components/StarPrompt.d.ts.map +1 -0
  61. package/lib/types/components/StarPrompt.js +281 -0
  62. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  63. package/lib/types/components/StreamingMarkdown.js +20 -3
  64. package/lib/types/components/TimelineRail.d.ts.map +1 -1
  65. package/lib/types/components/TimelineRail.js +9 -1
  66. package/lib/types/components/Whale.d.ts +17 -8
  67. package/lib/types/components/Whale.d.ts.map +1 -1
  68. package/lib/types/components/Whale.js +25 -15
  69. package/lib/types/components/WhaleGirl.d.ts +29 -0
  70. package/lib/types/components/WhaleGirl.d.ts.map +1 -0
  71. package/lib/types/components/WhaleGirl.js +32 -0
  72. package/lib/types/components/WorkingSpinner.d.ts +4 -1
  73. package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
  74. package/lib/types/components/WorkingSpinner.js +2 -2
  75. package/lib/types/components/bigfont.d.ts +47 -18
  76. package/lib/types/components/bigfont.d.ts.map +1 -1
  77. package/lib/types/components/bigfont.js +55 -40
  78. package/lib/types/components/design-system/ThemeProvider.d.ts +6 -0
  79. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
  80. package/lib/types/components/design-system/ThemeProvider.js +40 -1
  81. package/lib/types/components/maidPortrait.d.ts +44 -0
  82. package/lib/types/components/maidPortrait.d.ts.map +1 -0
  83. package/lib/types/components/maidPortrait.js +178 -0
  84. package/lib/types/components/mathPreview.d.ts +25 -0
  85. package/lib/types/components/mathPreview.d.ts.map +1 -0
  86. package/lib/types/components/mathPreview.js +48 -0
  87. package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
  88. package/lib/types/components/messages/AssistantThinkingMessage.js +2 -1
  89. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  90. package/lib/types/components/messages/AssistantToolUseMessage.js +3 -2
  91. package/lib/types/components/messages/TranscriptImages.d.ts.map +1 -1
  92. package/lib/types/components/messages/TranscriptImages.js +11 -1
  93. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +14 -2
  94. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  95. package/lib/types/components/questions/AskUserQuestionPanel.js +80 -38
  96. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  97. package/lib/types/components/questions/PlanReviewPanel.js +3 -3
  98. package/lib/types/components/sessions/ForeignSessionRow.d.ts +34 -0
  99. package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -0
  100. package/lib/types/components/sessions/ForeignSessionRow.js +43 -0
  101. package/lib/types/components/sessions/SourceTabs.d.ts +52 -0
  102. package/lib/types/components/sessions/SourceTabs.d.ts.map +1 -0
  103. package/lib/types/components/sessions/SourceTabs.js +70 -0
  104. package/lib/types/components/splashEggs.d.ts +56 -0
  105. package/lib/types/components/splashEggs.d.ts.map +1 -0
  106. package/lib/types/components/splashEggs.js +67 -0
  107. package/lib/types/components/splashFonts.d.ts +119 -0
  108. package/lib/types/components/splashFonts.d.ts.map +1 -0
  109. package/lib/types/components/splashFonts.js +267 -0
  110. package/lib/types/components/splashLayout.d.ts +41 -0
  111. package/lib/types/components/splashLayout.d.ts.map +1 -0
  112. package/lib/types/components/splashLayout.js +40 -0
  113. package/lib/types/components/whaleGirlSprite.d.ts +17 -0
  114. package/lib/types/components/whaleGirlSprite.d.ts.map +1 -0
  115. package/lib/types/components/whaleGirlSprite.js +47 -0
  116. package/lib/types/deepseekPricing.d.ts +74 -0
  117. package/lib/types/deepseekPricing.d.ts.map +1 -1
  118. package/lib/types/deepseekPricing.js +110 -11
  119. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +1 -1
  120. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  121. package/lib/types/dsh-adapter/channel/action-readiness.js +6 -1
  122. package/lib/types/dsh-adapter/channel/background-action.d.ts +1 -0
  123. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  124. package/lib/types/dsh-adapter/channel/background-action.js +1 -0
  125. package/lib/types/dsh-adapter/channel/binding-events.d.ts +8 -9
  126. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  127. package/lib/types/dsh-adapter/channel/binding-events.js +69 -21
  128. package/lib/types/dsh-adapter/channel/compaction.d.ts +2 -1
  129. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
  130. package/lib/types/dsh-adapter/channel/compaction.js +35 -2
  131. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
  132. package/lib/types/dsh-adapter/channel/local-actions.js +6 -1
  133. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  134. package/lib/types/dsh-adapter/channel/model-switch.js +5 -1
  135. package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -1
  136. package/lib/types/dsh-adapter/channel/paths.js +7 -1
  137. package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
  138. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
  139. package/lib/types/dsh-adapter/channel/preferences.js +16 -0
  140. package/lib/types/dsh-adapter/channel/projection.d.ts +1 -2
  141. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  142. package/lib/types/dsh-adapter/channel/projection.js +127 -17
  143. package/lib/types/dsh-adapter/channel/question-record.d.ts +76 -0
  144. package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -0
  145. package/lib/types/dsh-adapter/channel/question-record.js +107 -0
  146. package/lib/types/dsh-adapter/channel/session-lineage.d.ts +42 -0
  147. package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +1 -0
  148. package/lib/types/dsh-adapter/channel/session-lineage.js +51 -0
  149. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +2 -0
  150. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
  151. package/lib/types/dsh-adapter/channel/session-live-adoption.js +9 -3
  152. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -1
  153. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  154. package/lib/types/dsh-adapter/channel/session-metadata.js +39 -7
  155. package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
  156. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
  157. package/lib/types/dsh-adapter/channel/session-reset.js +7 -0
  158. package/lib/types/dsh-adapter/channel/session-resume.d.ts +1 -0
  159. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  160. package/lib/types/dsh-adapter/channel/session-resume.js +4 -2
  161. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  162. package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
  163. package/lib/types/dsh-adapter/channel/state.d.ts +14 -1
  164. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  165. package/lib/types/dsh-adapter/channel/state.js +6 -1
  166. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +30 -35
  167. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  168. package/lib/types/dsh-adapter/channel/subagent-projection.js +138 -4
  169. package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
  170. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  171. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  172. package/lib/types/dsh-adapter/channel.js +19 -4
  173. package/lib/types/dsh-adapter/compat/messages.d.ts +6 -0
  174. package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -1
  175. package/lib/types/dsh-adapter/compat/messages.js +9 -0
  176. package/lib/types/dsh-adapter/contract.d.ts +5 -5
  177. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  178. package/lib/types/dsh-adapter/contract.js +8 -6
  179. package/lib/types/dsh-adapter/index.d.ts +36 -1
  180. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  181. package/lib/types/dsh-adapter/index.js +22 -6
  182. package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts +3 -0
  183. package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts.map +1 -0
  184. package/lib/types/dsh-adapter/migrate/adapters/claude-code.js +131 -0
  185. package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.d.ts +17 -0
  186. package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.d.ts.map +1 -0
  187. package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.js +329 -0
  188. package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts +3 -0
  189. package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts.map +1 -0
  190. package/lib/types/dsh-adapter/migrate/adapters/codex.js +102 -0
  191. package/lib/types/dsh-adapter/migrate/adapters/codex.parse.d.ts +16 -0
  192. package/lib/types/dsh-adapter/migrate/adapters/codex.parse.d.ts.map +1 -0
  193. package/lib/types/dsh-adapter/migrate/adapters/codex.parse.js +289 -0
  194. package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts +3 -0
  195. package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts.map +1 -0
  196. package/lib/types/dsh-adapter/migrate/adapters/grok-build.js +117 -0
  197. package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.d.ts +13 -0
  198. package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.d.ts.map +1 -0
  199. package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.js +178 -0
  200. package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts +3 -0
  201. package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts.map +1 -0
  202. package/lib/types/dsh-adapter/migrate/adapters/omp.js +133 -0
  203. package/lib/types/dsh-adapter/migrate/adapters/scan-fs.d.ts +60 -0
  204. package/lib/types/dsh-adapter/migrate/adapters/scan-fs.d.ts.map +1 -0
  205. package/lib/types/dsh-adapter/migrate/adapters/scan-fs.js +178 -0
  206. package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts +8 -0
  207. package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts.map +1 -0
  208. package/lib/types/dsh-adapter/migrate/adapters/scan.js +40 -0
  209. package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts +3 -0
  210. package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts.map +1 -0
  211. package/lib/types/dsh-adapter/migrate/adapters/zcode.js +93 -0
  212. package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.d.ts +9 -0
  213. package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.d.ts.map +1 -0
  214. package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.js +89 -0
  215. package/lib/types/dsh-adapter/migrate/bin-path.d.ts +6 -0
  216. package/lib/types/dsh-adapter/migrate/bin-path.d.ts.map +1 -0
  217. package/lib/types/dsh-adapter/migrate/bin-path.js +30 -0
  218. package/lib/types/dsh-adapter/migrate/browse.d.ts +42 -0
  219. package/lib/types/dsh-adapter/migrate/browse.d.ts.map +1 -0
  220. package/lib/types/dsh-adapter/migrate/browse.js +90 -0
  221. package/lib/types/dsh-adapter/migrate/cli.d.ts +9 -0
  222. package/lib/types/dsh-adapter/migrate/cli.d.ts.map +1 -0
  223. package/lib/types/dsh-adapter/migrate/cli.js +106 -0
  224. package/lib/types/dsh-adapter/migrate/import-one.d.ts +89 -0
  225. package/lib/types/dsh-adapter/migrate/import-one.d.ts.map +1 -0
  226. package/lib/types/dsh-adapter/migrate/import-one.js +133 -0
  227. package/lib/types/dsh-adapter/migrate/index.d.ts +35 -0
  228. package/lib/types/dsh-adapter/migrate/index.d.ts.map +1 -0
  229. package/lib/types/dsh-adapter/migrate/index.js +107 -0
  230. package/lib/types/dsh-adapter/migrate/parse/injection.d.ts +40 -0
  231. package/lib/types/dsh-adapter/migrate/parse/injection.d.ts.map +1 -0
  232. package/lib/types/dsh-adapter/migrate/parse/injection.js +127 -0
  233. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +28 -0
  234. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -0
  235. package/lib/types/dsh-adapter/migrate/parse/jsonl.js +40 -0
  236. package/lib/types/dsh-adapter/migrate/parse/role-turns.d.ts +28 -0
  237. package/lib/types/dsh-adapter/migrate/parse/role-turns.d.ts.map +1 -0
  238. package/lib/types/dsh-adapter/migrate/parse/role-turns.js +50 -0
  239. package/lib/types/dsh-adapter/migrate/parse/title.d.ts +18 -0
  240. package/lib/types/dsh-adapter/migrate/parse/title.d.ts.map +1 -0
  241. package/lib/types/dsh-adapter/migrate/parse/title.js +29 -0
  242. package/lib/types/dsh-adapter/migrate/parse/tools.d.ts +62 -0
  243. package/lib/types/dsh-adapter/migrate/parse/tools.d.ts.map +1 -0
  244. package/lib/types/dsh-adapter/migrate/parse/tools.js +110 -0
  245. package/lib/types/dsh-adapter/migrate/picker.d.ts +64 -0
  246. package/lib/types/dsh-adapter/migrate/picker.d.ts.map +1 -0
  247. package/lib/types/dsh-adapter/migrate/picker.js +86 -0
  248. package/lib/types/dsh-adapter/migrate/recent-agents.d.ts +40 -0
  249. package/lib/types/dsh-adapter/migrate/recent-agents.d.ts.map +1 -0
  250. package/lib/types/dsh-adapter/migrate/recent-agents.js +100 -0
  251. package/lib/types/dsh-adapter/migrate/sessionize.d.ts +39 -0
  252. package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -0
  253. package/lib/types/dsh-adapter/migrate/sessionize.js +271 -0
  254. package/lib/types/dsh-adapter/migrate/types.d.ts +176 -0
  255. package/lib/types/dsh-adapter/migrate/types.d.ts.map +1 -0
  256. package/lib/types/dsh-adapter/migrate/types.js +11 -0
  257. package/lib/types/dsh-adapter/migrate/uuid.d.ts +7 -0
  258. package/lib/types/dsh-adapter/migrate/uuid.d.ts.map +1 -0
  259. package/lib/types/dsh-adapter/migrate/uuid.js +25 -0
  260. package/lib/types/dsh-adapter/plugin.d.ts +4 -2
  261. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  262. package/lib/types/dsh-adapter/plugin.js +143 -364
  263. package/lib/types/dsh-adapter/providerWizard.d.ts +17 -0
  264. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  265. package/lib/types/dsh-adapter/providerWizard.js +254 -66
  266. package/lib/types/dsh-adapter/questions.d.ts +22 -15
  267. package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
  268. package/lib/types/dsh-adapter/questions.js +47 -45
  269. package/lib/types/dsh-adapter/sessions/digest.d.ts +11 -6
  270. package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
  271. package/lib/types/dsh-adapter/sessions/digest.js +20 -13
  272. package/lib/types/dsh-adapter/sessions/frames.d.ts +3 -1
  273. package/lib/types/dsh-adapter/sessions/frames.d.ts.map +1 -1
  274. package/lib/types/dsh-adapter/sessions/frames.js +5 -4
  275. package/lib/types/dsh-adapter/sessions/list.d.ts +6 -1
  276. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  277. package/lib/types/dsh-adapter/sessions/list.js +188 -164
  278. package/lib/types/dsh-adapter/sessions/recovery.d.ts +16 -0
  279. package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -0
  280. package/lib/types/dsh-adapter/sessions/recovery.js +108 -0
  281. package/lib/types/dsh-adapter/sessions/snapshot.d.ts +7 -0
  282. package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -0
  283. package/lib/types/dsh-adapter/sessions/snapshot.js +90 -0
  284. package/lib/types/dsh-adapter/sessions/store.d.ts +10 -4
  285. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  286. package/lib/types/dsh-adapter/sessions/store.js +62 -25
  287. package/lib/types/dsh-adapter/sideQuestion.d.ts +41 -2
  288. package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
  289. package/lib/types/dsh-adapter/sideQuestion.js +98 -2
  290. package/lib/types/dsh-adapter/subagents.d.ts +28 -3
  291. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  292. package/lib/types/dsh-adapter/subagents.js +77 -2
  293. package/lib/types/herdr.d.ts +2 -0
  294. package/lib/types/herdr.d.ts.map +1 -1
  295. package/lib/types/herdr.js +9 -3
  296. package/lib/types/i18n.d.ts +424 -42
  297. package/lib/types/i18n.d.ts.map +1 -1
  298. package/lib/types/i18n.js +145 -20
  299. package/lib/types/ink/components/App.d.ts +2 -2
  300. package/lib/types/ink/components/App.d.ts.map +1 -1
  301. package/lib/types/ink/components/App.js +5 -1
  302. package/lib/types/ink/components/Image.d.ts +14 -1
  303. package/lib/types/ink/components/Image.d.ts.map +1 -1
  304. package/lib/types/ink/components/Image.js +2 -2
  305. package/lib/types/ink/events/input-event.js +3 -3
  306. package/lib/types/ink/hooks/use-terminal-images.d.ts +12 -0
  307. package/lib/types/ink/hooks/use-terminal-images.d.ts.map +1 -1
  308. package/lib/types/ink/hooks/use-terminal-images.js +13 -0
  309. package/lib/types/ink/ink.d.ts +6 -0
  310. package/lib/types/ink/ink.d.ts.map +1 -1
  311. package/lib/types/ink/ink.js +16 -1
  312. package/lib/types/ink/kitty-graphics.d.ts +44 -3
  313. package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
  314. package/lib/types/ink/kitty-graphics.js +184 -23
  315. package/lib/types/ink/output.d.ts +24 -2
  316. package/lib/types/ink/output.d.ts.map +1 -1
  317. package/lib/types/ink/output.js +83 -5
  318. package/lib/types/ink/parse-keypress.d.ts +26 -1
  319. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  320. package/lib/types/ink/parse-keypress.js +156 -13
  321. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  322. package/lib/types/ink/render-node-to-output.js +8 -1
  323. package/lib/types/ink/screen.d.ts +24 -0
  324. package/lib/types/ink/screen.d.ts.map +1 -1
  325. package/lib/types/ink/screen.js +89 -0
  326. package/lib/types/ink/selection.d.ts +40 -18
  327. package/lib/types/ink/selection.d.ts.map +1 -1
  328. package/lib/types/ink/selection.js +142 -30
  329. package/lib/types/ink/sixel-codec.d.ts +12 -1
  330. package/lib/types/ink/sixel-codec.d.ts.map +1 -1
  331. package/lib/types/ink/sixel-codec.js +29 -5
  332. package/lib/types/ink/sixel-graphics.d.ts.map +1 -1
  333. package/lib/types/ink/sixel-graphics.js +5 -3
  334. package/lib/types/ink/styles.d.ts +9 -0
  335. package/lib/types/ink/styles.d.ts.map +1 -1
  336. package/lib/types/ink/terminal-image.d.ts +8 -0
  337. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  338. package/lib/types/ink/terminal-querier.d.ts +7 -1
  339. package/lib/types/ink/terminal-querier.d.ts.map +1 -1
  340. package/lib/types/ink/terminal-querier.js +12 -2
  341. package/lib/types/ink/timeline-rail.d.ts +5 -0
  342. package/lib/types/ink/timeline-rail.d.ts.map +1 -1
  343. package/lib/types/math/inline-layout.d.ts +29 -0
  344. package/lib/types/math/inline-layout.d.ts.map +1 -0
  345. package/lib/types/math/inline-layout.js +106 -0
  346. package/lib/types/math/layout.d.ts +58 -0
  347. package/lib/types/math/layout.d.ts.map +1 -0
  348. package/lib/types/math/layout.js +59 -0
  349. package/lib/types/math/renderer.d.ts +64 -0
  350. package/lib/types/math/renderer.d.ts.map +1 -0
  351. package/lib/types/math/renderer.js +256 -0
  352. package/lib/types/screens/Chat.d.ts +14 -1
  353. package/lib/types/screens/Chat.d.ts.map +1 -1
  354. package/lib/types/screens/Chat.js +606 -53
  355. package/lib/types/screens/SessionSupervisor.d.ts +2 -1
  356. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  357. package/lib/types/screens/SessionSupervisor.js +156 -19
  358. package/lib/types/screens/Settings.d.ts.map +1 -1
  359. package/lib/types/screens/Settings.js +49 -11
  360. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  361. package/lib/types/screens/StatusLine.js +45 -15
  362. package/lib/types/screens/chatOverlay.d.ts +5 -0
  363. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  364. package/lib/types/screens/chatOverlay.js +1 -0
  365. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +47 -0
  366. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -0
  367. package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +65 -0
  368. package/lib/types/screens/sessionSupervisor/model.d.ts +12 -0
  369. package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
  370. package/lib/types/screens/sessionSupervisor/model.js +26 -0
  371. package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts +107 -0
  372. package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -0
  373. package/lib/types/screens/sessionSupervisor/useForeignSessions.js +312 -0
  374. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +4 -1
  375. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  376. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -14
  377. package/lib/types/sessionHistory.d.ts +2 -2
  378. package/lib/types/sessionHistory.d.ts.map +1 -1
  379. package/lib/types/sessionHistory.js +31 -5
  380. package/lib/types/settings/definitions.d.ts +681 -0
  381. package/lib/types/settings/definitions.d.ts.map +1 -0
  382. package/lib/types/settings/definitions.js +511 -0
  383. package/lib/types/starAction.d.ts +44 -0
  384. package/lib/types/starAction.d.ts.map +1 -0
  385. package/lib/types/starAction.js +52 -0
  386. package/lib/types/terminal-utils/latex.d.ts +10 -0
  387. package/lib/types/terminal-utils/latex.d.ts.map +1 -0
  388. package/lib/types/terminal-utils/latex.js +1417 -0
  389. package/lib/types/terminal-utils/markdown.d.ts +3 -1
  390. package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
  391. package/lib/types/terminal-utils/markdown.js +26 -1
  392. package/lib/types/terminal-utils/math.d.ts +66 -0
  393. package/lib/types/terminal-utils/math.d.ts.map +1 -0
  394. package/lib/types/terminal-utils/math.js +337 -0
  395. package/lib/types/tips.d.ts.map +1 -1
  396. package/lib/types/tips.js +6 -0
  397. package/lib/types/tuiDisplayPrefs.d.ts +67 -0
  398. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  399. package/lib/types/tuiDisplayPrefs.js +59 -0
  400. package/lib/types/ui.d.ts +1 -1
  401. package/lib/types/ui.d.ts.map +1 -1
  402. package/lib/types/ui.js +1 -1
  403. package/lib/types/usageStats.d.ts +98 -0
  404. package/lib/types/usageStats.d.ts.map +1 -0
  405. package/lib/types/usageStats.js +169 -0
  406. package/lib/types/utils/bmp.d.ts +17 -0
  407. package/lib/types/utils/bmp.d.ts.map +1 -0
  408. package/lib/types/utils/bmp.js +154 -0
  409. package/lib/types/utils/clipboard.d.ts +14 -2
  410. package/lib/types/utils/clipboard.d.ts.map +1 -1
  411. package/lib/types/utils/clipboard.js +143 -8
  412. package/lib/types/utils/fold-long-lines.d.ts.map +1 -1
  413. package/lib/types/utils/fold-long-lines.js +2 -1
  414. package/lib/types/utils/keymap.d.ts +4 -1
  415. package/lib/types/utils/keymap.d.ts.map +1 -1
  416. package/lib/types/utils/keymap.js +8 -0
  417. package/lib/types/utils/modifiers.d.ts +4 -3
  418. package/lib/types/utils/modifiers.d.ts.map +1 -1
  419. package/lib/types/utils/modifiers.js +4 -3
  420. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/LICENSE +202 -0
  421. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/NOTICE +20 -0
  422. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/index.d.ts +16 -0
  423. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/bundled-packages.json +4 -0
  424. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/index.mjs +20 -0
  425. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/index.mjs.LEGAL.txt +35 -0
  426. package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/package.json +29 -0
  427. package/package.json +111 -97
@@ -1,6 +1,7 @@
1
1
  import type { ProviderSetupHost } from '../adapter/ports/channel-settings.js';
2
2
  export type { ProviderSetupHost, CatalogProviderCandidate, ConfiguredProvider, ProfilePathOp, OAuthSetupHost, OAuthProviderStatus, OAuthLoginResult } from '../adapter/ports/channel-settings.js';
3
3
  import { type AskUserQuestionAnswer, type AskUserQuestionRequest } from '@deepseek-ai/dsh-user-questions';
4
+ import type { LlmDiscoveredModel } from '@deepseek-ai/dsh-llm';
4
5
  /** Route id rule shared with the dsh configuration surface (web Models page). */
5
6
  export declare const PROVIDER_ROUTE_ID: RegExp;
6
7
  /** Wire protocols dsh-llm-pi-ai can serve on a manually declared route. */
@@ -39,4 +40,20 @@ export type ProviderWizardOutcome = 'added' | 'updated' | 'deleted' | 'signed-ou
39
40
  * dismisses any question (Esc) — nothing has been written at that point.
40
41
  */
41
42
  export declare function runProviderWizard(deps: ProviderWizardDeps): Promise<ProviderWizardOutcome>;
43
+ /** How the live endpoint probe of one discovery pass went. */
44
+ export type RouteDiscoveryLive = 'fetched' | 'failed' | 'unavailable';
45
+ export type RouteDiscoveryCatalog = 'fetched' | 'failed' | 'unavailable';
46
+ export type RouteDiscoveryReason = 'no-base-url' | 'unsupported-catalog' | 'custom-headers';
47
+ /** One route-model discovery pass, ready for the selection panel. */
48
+ export interface RouteDiscovery {
49
+ /** Merged rows: installed-catalog rows first (rich metadata), then
50
+ * endpoint-only ids in the order the endpoint advertised them. */
51
+ readonly rows: readonly LlmDiscoveredModel[];
52
+ /** Ids covered by the installed catalog (their rows carry catalog truth). */
53
+ readonly catalogIds: ReadonlySet<string>;
54
+ /** Whether the installed catalog lookup was authoritative. */
55
+ readonly catalog: RouteDiscoveryCatalog;
56
+ readonly live: RouteDiscoveryLive;
57
+ readonly reason?: RouteDiscoveryReason;
58
+ }
42
59
  //# sourceMappingURL=providerWizard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerWizard.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/providerWizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAsH,MAAM,sCAAsC,CAAA;AACjM,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAsBjM,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAA;AAGxC,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,QAAoC,CAAA;AAElE,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,2EAIrB,CAAA;AAEV;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,CACZ,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACtE,IAAI,CAAA;IACT,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAA;IACrE,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5E;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAA;AA4D3G;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,qBAAqB,CAAC,CA8BhC"}
1
+ {"version":3,"file":"providerWizard.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/providerWizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAsH,MAAM,sCAAsC,CAAA;AACjM,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAsBjM,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,QAAoC,CAAA;AAElE,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,2EAIrB,CAAA;AAEV;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,CACZ,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACtE,IAAI,CAAA;IACT,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAA;IACrE,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5E;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAA;AA4D3G;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,qBAAqB,CAAC,CA8BhC;AAo3BD,8DAA8D;AAC9D,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAA;AACrE,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAA;AACxE,MAAM,MAAM,oBAAoB,GAC5B,aAAa,GACb,qBAAqB,GACrB,gBAAgB,CAAA;AAEpB,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B;uEACmE;IACnE,QAAQ,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC5C,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAA;CACvC"}
@@ -204,12 +204,14 @@ async function runAddFlow(deps) {
204
204
  }
205
205
  // ── 5. model discovery (draft credential, nothing persisted) ───────
206
206
  notify(t('provider-discovery-running'));
207
- const discovered = await host.discoverModels({
207
+ const discovery = await discoverRouteModels(host, {
208
208
  ...(isCatalog ? { provider: route } : {}),
209
209
  ...(baseURL !== undefined && baseURL !== '' ? { baseURL } : {}),
210
210
  ...(api !== undefined ? { api } : {}),
211
- apiKey: apiKey ?? '',
212
- }).catch(() => []);
211
+ ...(apiKey !== undefined && apiKey !== '' ? { apiKey } : {}),
212
+ });
213
+ const discovered = discovery.rows;
214
+ notifyDiscoveryStatus(notify, discovery);
213
215
  // ── 6. model selection ─────────────────────────────────────────────
214
216
  let models = [];
215
217
  let discoveredById = new Map();
@@ -218,13 +220,15 @@ async function runAddFlow(deps) {
218
220
  const modelsAnswer = await ask({
219
221
  questions: [optionQuestion('models', t('provider-q-models'), discovered.map(model => ({
220
222
  label: model.id,
221
- description: [
222
- model.name ?? '',
223
- model.contextWindow !== undefined ? `${model.contextWindow}` : '',
224
- ].filter(part => part !== '').join(' · ') || undefined,
225
- })), { multiSelect: true })],
223
+ description: modelRowDescription(model, isCatalog && discovery.catalog === 'fetched' && !discovery.catalogIds.has(model.id)),
224
+ })), {
225
+ multiSelect: true,
226
+ ...(isCatalog && discovery.reason === 'no-base-url'
227
+ ? { detail: t('provider-catalog-snapshot-note', { n: discovered.length }) }
228
+ : {}),
229
+ })],
226
230
  });
227
- models = mergeModelIds(answerSelected(modelsAnswer, 'models'), answerText(modelsAnswer, 'models'));
231
+ models = mergeModelIds(answerSelected(modelsAnswer, 'models'), modelCustomInput(modelsAnswer, isCatalog, discovery, notify));
228
232
  }
229
233
  else {
230
234
  notify(t('provider-discovery-failed'), { color: 'warning' });
@@ -247,11 +251,14 @@ async function runAddFlow(deps) {
247
251
  }
248
252
  // ── 7. confirm ─────────────────────────────────────────────────────
249
253
  const summaryLines = buildSummaryLines({
250
- route, ref, shadowed, baseURL, api, models, isCatalog, keyLine,
254
+ route, action: 'added', ref, shadowed, baseURL, api, models, isCatalog, keyLine,
255
+ });
256
+ const previewLines = buildSummaryLines({
257
+ route, action: 'preview', ref, shadowed, baseURL, api, models, isCatalog, keyLine,
251
258
  });
252
259
  const detail = host.routeExists(route)
253
- ? `${summaryLines.join('\n')}\n${t('provider-route-exists-warning')}`
254
- : summaryLines.join('\n');
260
+ ? `${previewLines.join('\n')}\n${t('provider-route-exists-warning')}`
261
+ : previewLines.join('\n');
255
262
  const confirmAnswer = await ask({
256
263
  questions: [optionQuestion('confirm', t('provider-q-confirm'), [
257
264
  { label: t('provider-opt-confirm-write') },
@@ -273,7 +280,16 @@ async function runAddFlow(deps) {
273
280
  await host.writeCredential(ref, apiKey);
274
281
  wroteCredential = true;
275
282
  }
276
- const profile = buildProfile({ isCatalog, ref, baseURL, api, models, discoveredById });
283
+ const profile = buildProfile({
284
+ isCatalog,
285
+ ref,
286
+ baseURL,
287
+ api,
288
+ models,
289
+ discoveredById,
290
+ catalogIds: discovery.catalogIds,
291
+ catalogDiscovery: discovery.catalog,
292
+ });
277
293
  try {
278
294
  await host.writeProfile(route, profile);
279
295
  }
@@ -444,6 +460,7 @@ async function editApiKey(deps, provider) {
444
460
  await host.writeCredential(provider.ref, value);
445
461
  pushLocal('/provider', buildSummaryLines({
446
462
  route: provider.route,
463
+ action: 'updated',
447
464
  ref: provider.ref,
448
465
  shadowed: provider.shadowed,
449
466
  baseURL: provider.baseURL,
@@ -466,6 +483,7 @@ change) {
466
483
  await host.mutateProfile(provider.route, [{ op: 'set', path, value }]);
467
484
  pushLocal('/provider', buildSummaryLines({
468
485
  route: provider.route,
486
+ action: 'updated',
469
487
  ref: provider.ref,
470
488
  shadowed: provider.shadowed,
471
489
  baseURL: change.baseURL ?? provider.baseURL,
@@ -527,16 +545,27 @@ async function editModelList(deps, provider) {
527
545
  const { host, ask, notify, pushLocal } = deps;
528
546
  const isCatalog = provider.isCatalog;
529
547
  const previous = provider.models ?? [];
530
- const key = provider.ref !== ''
548
+ // The credential is read only when a live probe will use it: a catalog
549
+ // A route without a usable live probe (no endpoint, unsupported catalog
550
+ // protocol, or custom headers the upstream seam cannot carry) stays on the
551
+ // installed-catalog listing, so no secret is resolved for nothing.
552
+ const endpointKnown = provider.baseURL !== undefined && provider.baseURL !== '';
553
+ const liveProbePossible = endpointKnown
554
+ && !provider.hasCustomHeaders
555
+ && (!isCatalog || provider.api !== undefined || catalogLiveApi(provider.route) !== undefined);
556
+ const key = provider.ref !== '' && liveProbePossible
531
557
  ? (provider.shadowed ? host.envValue(provider.ref) : await host.readCredential(provider.ref))
532
558
  : undefined;
533
559
  notify(t('provider-discovery-running'));
534
- const discovered = await host.discoverModels({
560
+ const discovery = await discoverRouteModels(host, {
535
561
  ...(isCatalog ? { provider: provider.route } : {}),
536
- ...(provider.baseURL !== undefined && provider.baseURL !== '' ? { baseURL: provider.baseURL } : {}),
562
+ ...(provider.baseURL !== undefined ? { baseURL: provider.baseURL } : {}),
537
563
  ...(provider.api !== undefined ? { api: provider.api } : {}),
538
- apiKey: key ?? '',
539
- }).catch(() => []);
564
+ ...(provider.hasCustomHeaders ? { hasCustomHeaders: true } : {}),
565
+ ...(key !== undefined ? { apiKey: key } : {}),
566
+ });
567
+ const discovered = discovery.rows;
568
+ notifyDiscoveryStatus(notify, discovery);
540
569
  let models;
541
570
  let discoveredById = new Map();
542
571
  if (discovered.length === 0) {
@@ -552,18 +581,15 @@ async function editModelList(deps, provider) {
552
581
  }
553
582
  else {
554
583
  discoveredById = new Map(discovered.map(model => [model.id, model]));
555
- // Existing models the endpoint no longer advertises (renamed, beta
556
- // pulled, transient discovery gap) must still appear in the panel,
557
- // pre-checked and marked: options built from `discovered` alone would
558
- // silently drop them on an Enter-through confirm, destroying their
559
- // stored entries and the unmodeled per-model fields. Only an explicit
560
- // un-check removes one.
584
+ // Existing models neither the catalog nor the endpoint advertises
585
+ // (renamed, beta pulled, transient discovery gap) must still appear in
586
+ // the panel, pre-checked and marked: options built from `discovered`
587
+ // alone would silently drop them on an Enter-through confirm,
588
+ // destroying their stored entries and the unmodeled per-model fields.
589
+ // Only an explicit un-check removes one.
561
590
  const optionRows = discovered.map(model => ({
562
591
  label: model.id,
563
- description: [
564
- model.name ?? '',
565
- model.contextWindow !== undefined ? `${model.contextWindow}` : '',
566
- ].filter(part => part !== '').join(' · ') || undefined,
592
+ description: modelRowDescription(model, isCatalog && discovery.catalog === 'fetched' && !discovery.catalogIds.has(model.id)),
567
593
  }));
568
594
  const missingRows = previous
569
595
  .filter(id => !discoveredById.has(id))
@@ -572,9 +598,15 @@ async function editModelList(deps, provider) {
572
598
  description: t('provider-row-model-missing'),
573
599
  }));
574
600
  const modelsAnswer = await ask({
575
- questions: [optionQuestion('models', t('provider-q-models'), [...optionRows, ...missingRows], { multiSelect: true, defaultSelected: previous })],
601
+ questions: [optionQuestion('models', t('provider-q-models'), [...optionRows, ...missingRows], {
602
+ multiSelect: true,
603
+ defaultSelected: previous,
604
+ ...(isCatalog && discovery.reason === 'no-base-url'
605
+ ? { detail: t('provider-catalog-snapshot-note', { n: discovered.length }) }
606
+ : {}),
607
+ })],
576
608
  });
577
- models = mergeModelIds(answerSelected(modelsAnswer, 'models'), answerText(modelsAnswer, 'models'));
609
+ models = mergeModelIds(answerSelected(modelsAnswer, 'models'), modelCustomInput(modelsAnswer, isCatalog, discovery, notify));
578
610
  }
579
611
  if (!isCatalog && models.length === 0) {
580
612
  // A manual route without models fails the adapter validation.
@@ -586,8 +618,11 @@ async function editModelList(deps, provider) {
586
618
  return 'cancelled';
587
619
  }
588
620
  // The new `models` value: a kept id re-enters its stored entry verbatim;
589
- // a newly enabled one is built from the discovery row (plain `{id}` on a
590
- // catalog route, where the catalog itself carries the capabilities).
621
+ // a newly enabled one is built from the discovery row. An id the installed
622
+ // catalog covers stays plain `{id}` (the catalog carries the capabilities
623
+ // and would be overridden by entry fields); an endpoint-only id takes the
624
+ // capacities the live listing disclosed, falling back to the route
625
+ // defaults upstream when the endpoint said nothing.
591
626
  const storedById = new Map((provider.modelEntries ?? [])
592
627
  .flatMap(entry => typeof entry['id'] === 'string' ? [[entry['id'], entry]] : []));
593
628
  const modelsValue = models.map(id => {
@@ -597,7 +632,7 @@ async function editModelList(deps, provider) {
597
632
  const discovered = discoveredById.get(id);
598
633
  return {
599
634
  id,
600
- ...(isCatalog || discovered === undefined ? {} : {
635
+ ...((isCatalog && (discovery.catalog !== 'fetched' || discovery.catalogIds.has(id))) || discovered === undefined ? {} : {
601
636
  ...(discovered.contextWindow !== undefined
602
637
  ? { contextWindow: discovered.contextWindow }
603
638
  : {}),
@@ -612,6 +647,7 @@ async function editModelList(deps, provider) {
612
647
  ]);
613
648
  pushLocal('/provider', buildSummaryLines({
614
649
  route: provider.route,
650
+ action: 'updated-models',
615
651
  ref: provider.ref,
616
652
  shadowed: provider.shadowed,
617
653
  baseURL: provider.baseURL,
@@ -621,6 +657,10 @@ async function editModelList(deps, provider) {
621
657
  keyLine: provider.ref !== ''
622
658
  ? t('provider-line-key-kept', { ref: provider.ref })
623
659
  : t('provider-line-key-none'),
660
+ delta: {
661
+ added: models.filter(id => !previous.includes(id)),
662
+ removed: previous.filter(id => !models.includes(id)),
663
+ },
624
664
  }));
625
665
  notify(t('provider-edit-success', { route: provider.route }), { color: 'success' });
626
666
  return 'updated';
@@ -654,7 +694,7 @@ async function deleteConfiguredProvider(deps, provider) {
654
694
  const sharers = provider.ref === ''
655
695
  ? []
656
696
  : host.listRefUsers(provider.ref, provider.route);
657
- const lines = buildDeleteSummary(provider);
697
+ const previewLines = buildDeleteSummary(provider);
658
698
  let confirmAnswer;
659
699
  try {
660
700
  confirmAnswer = await ask({
@@ -663,8 +703,8 @@ async function deleteConfiguredProvider(deps, provider) {
663
703
  { label: t('provider-opt-confirm-cancel') },
664
704
  ], {
665
705
  detail: sharers.length > 0
666
- ? `${lines.join('\n')}\n${t('provider-delete-shared-warning', { ref: provider.ref, routes: sharers.join(', ') })}`
667
- : lines.join('\n'),
706
+ ? `${previewLines.join('\n')}\n${t('provider-delete-shared-warning', { ref: provider.ref, routes: sharers.join(', ') })}`
707
+ : previewLines.join('\n'),
668
708
  hideCustomInput: true,
669
709
  })],
670
710
  });
@@ -690,7 +730,10 @@ async function deleteConfiguredProvider(deps, provider) {
690
730
  }
691
731
  // The catalog changed from here on: report 'deleted' whatever the
692
732
  // credential cleanup below does, so the caller invalidates completions.
693
- const pushedLines = [...lines];
733
+ const pushedLines = [
734
+ t('provider-line-action-deleted', { route: provider.route }),
735
+ ...previewLines.slice(1),
736
+ ];
694
737
  let keyCleanupFailed = false;
695
738
  if (provider.ref !== '') {
696
739
  if (provider.shadowed) {
@@ -757,13 +800,13 @@ function providerRowDescription(provider) {
757
800
  * and models lines; no credential values are ever rendered). */
758
801
  function buildDeleteSummary(provider) {
759
802
  const lines = [t('provider-line-route', { route: provider.route })];
760
- if (provider.baseURL !== undefined)
761
- lines.push(t('provider-line-baseurl', { url: provider.baseURL }));
762
- if (provider.api !== undefined)
763
- lines.push(t('provider-line-protocol', { api: provider.api }));
764
- lines.push(provider.models !== undefined && provider.models.length > 0
765
- ? t('provider-line-models', { models: provider.models.join(', ') })
766
- : t('provider-line-models-catalog'));
803
+ if (provider.baseURL !== undefined && provider.baseURL !== '') {
804
+ const endpoint = t('provider-line-endpoint', { url: provider.baseURL });
805
+ lines.push(provider.api !== undefined && provider.api !== ''
806
+ ? `${endpoint} · ${provider.api}`
807
+ : endpoint);
808
+ }
809
+ lines.push(modelsSummaryLine(provider.models ?? [], undefined));
767
810
  if (provider.ref !== '') {
768
811
  lines.push(provider.shadowed
769
812
  ? t('provider-line-keyref-env', { ref: provider.ref })
@@ -868,21 +911,167 @@ function mergeModelIds(selected, custom) {
868
911
  }
869
912
  return ids;
870
913
  }
914
+ function modelCustomInput(answer, isCatalog, discovery, notify) {
915
+ const custom = answerText(answer, 'models');
916
+ if (custom !== '' && isCatalog && discovery.reason === 'unsupported-catalog') {
917
+ notify(t('provider-catalog-models-only'), { color: 'warning' });
918
+ return '';
919
+ }
920
+ return custom;
921
+ }
922
+ /**
923
+ * Discover the models of one route or draft in two passes.
924
+ *
925
+ * The upstream discovery seam answers a request that names a catalog
926
+ * `provider` from the installed static catalog without touching the network.
927
+ * A live probe therefore omits `provider`, but only when this adapter can
928
+ * supply a stable protocol and the route has no custom headers (the upstream
929
+ * seam cannot carry the named route's headers into an anonymous request).
930
+ * The listings merge: an id present in both resolves to its catalog row,
931
+ * endpoint-only ids append — those are the new models the wizard can surface.
932
+ *
933
+ * The `apiKey` field is omitted rather than sent empty when no key is
934
+ * knowable: an empty string is a hard invalid-credential upstream, while an
935
+ * absent field probes anonymously (a local gateway that needs no auth still
936
+ * lists its models).
937
+ */
938
+ async function discoverRouteModels(host, draft) {
939
+ const catalogResult = draft.provider !== undefined
940
+ ? await host.discoverModels({ provider: draft.provider }).then(rows => ({ rows, catalog: 'fetched' }), () => ({ rows: [], catalog: 'failed' }))
941
+ : { rows: [], catalog: 'unavailable' };
942
+ const catalogRows = catalogResult.rows;
943
+ const catalogIds = new Set(catalogRows.map(row => row.id));
944
+ if (draft.baseURL === undefined || draft.baseURL === '') {
945
+ return {
946
+ rows: catalogRows,
947
+ catalogIds,
948
+ catalog: catalogResult.catalog,
949
+ live: 'unavailable',
950
+ reason: 'no-base-url',
951
+ };
952
+ }
953
+ if (draft.hasCustomHeaders) {
954
+ return {
955
+ rows: catalogRows,
956
+ catalogIds,
957
+ catalog: catalogResult.catalog,
958
+ live: 'unavailable',
959
+ reason: 'custom-headers',
960
+ };
961
+ }
962
+ const api = draft.api ?? (draft.provider !== undefined
963
+ ? catalogLiveApi(draft.provider)
964
+ : undefined);
965
+ if (draft.provider !== undefined && api === undefined) {
966
+ return {
967
+ rows: catalogRows,
968
+ catalogIds,
969
+ catalog: catalogResult.catalog,
970
+ live: 'unavailable',
971
+ reason: 'unsupported-catalog',
972
+ };
973
+ }
974
+ const live = await host.discoverModels({
975
+ baseURL: draft.baseURL,
976
+ ...(api !== undefined && api !== '' ? { api } : {}),
977
+ ...(draft.apiKey !== undefined && draft.apiKey !== '' ? { apiKey: draft.apiKey } : {}),
978
+ }).then(rows => ({ rows, live: 'fetched' }), () => ({ rows: [], live: 'failed' }));
979
+ return {
980
+ rows: [...catalogRows, ...live.rows.filter(row => !catalogIds.has(row.id))],
981
+ catalogIds,
982
+ catalog: catalogResult.catalog,
983
+ live: live.live,
984
+ };
985
+ }
986
+ /** Catalog routes whose protocol is stable enough for an un-named live probe. */
987
+ const CATALOG_LIVE_APIS = {
988
+ deepseek: 'openai-completions',
989
+ openai: 'openai-responses',
990
+ anthropic: 'anthropic-messages',
991
+ };
992
+ function catalogLiveApi(provider) {
993
+ return CATALOG_LIVE_APIS[provider];
994
+ }
995
+ function notifyDiscoveryStatus(notify, discovery) {
996
+ if (discovery.catalog === 'failed') {
997
+ notify(t('provider-catalog-fetch-failed'), { color: 'warning' });
998
+ }
999
+ if (discovery.live === 'failed') {
1000
+ notify(t('provider-live-fetch-failed'), { color: 'warning' });
1001
+ }
1002
+ else if (discovery.reason === 'unsupported-catalog' || discovery.reason === 'custom-headers') {
1003
+ notify(t('provider-live-fetch-unavailable'), { color: 'warning' });
1004
+ }
1005
+ }
1006
+ /** Compact capacity rendering for picker rows: 1000000 → 1M, 384000 → 384k. */
1007
+ function formatCapacity(n) {
1008
+ if (n >= 1_000_000 && n % 1_000_000 === 0)
1009
+ return `${n / 1_000_000}M`;
1010
+ if (n >= 1_000 && n % 1_000 === 0)
1011
+ return `${n / 1_000}k`;
1012
+ return `${n}`;
1013
+ }
1014
+ /**
1015
+ * Picker-row description for one discovered model. `isNew` tags an id the
1016
+ * installed catalog does not ship — it came from the live endpoint probe and
1017
+ * is the thing the user is most likely looking for.
1018
+ */
1019
+ function modelRowDescription(model, isNew) {
1020
+ const parts = [
1021
+ ...(isNew ? [t('provider-row-model-new')] : []),
1022
+ ...(model.name !== undefined && model.name !== '' ? [model.name] : []),
1023
+ ...(model.contextWindow !== undefined ? [formatCapacity(model.contextWindow)] : []),
1024
+ ];
1025
+ return parts.length > 0 ? parts.join(' · ') : undefined;
1026
+ }
871
1027
  function buildSummaryLines(input) {
872
- const lines = [t('provider-line-route', { route: input.route })];
873
- lines.push(input.keyLine ?? (input.shadowed
1028
+ const lines = [input.action === 'preview'
1029
+ ? t('provider-line-route', { route: input.route })
1030
+ : input.action === 'added'
1031
+ ? t('provider-line-action-added', { route: input.route })
1032
+ : input.action === 'updated-models'
1033
+ ? t('provider-line-action-updated-models', { route: input.route })
1034
+ : t('provider-line-action-updated', { route: input.route })];
1035
+ lines.push((input.action === 'preview' && !input.shadowed && input.ref !== ''
1036
+ ? t('provider-line-keyref-preview', { ref: input.ref })
1037
+ : undefined) ?? input.keyLine ?? (input.shadowed
874
1038
  ? t('provider-line-keyref-env', { ref: input.ref })
875
1039
  : t('provider-line-keyref', { ref: input.ref })));
876
1040
  if (input.baseURL !== undefined && input.baseURL !== '') {
877
- lines.push(t('provider-line-baseurl', { url: input.baseURL }));
1041
+ // The wire protocol rides the endpoint line: it only ever varies per
1042
+ // endpoint, and a lone protocol row reads as filler.
1043
+ const endpoint = t('provider-line-endpoint', { url: input.baseURL });
1044
+ lines.push(input.api !== undefined && input.api !== ''
1045
+ ? `${endpoint} · ${input.api}`
1046
+ : endpoint);
878
1047
  }
879
- if (input.api !== undefined)
880
- lines.push(t('provider-line-protocol', { api: input.api }));
881
- lines.push(input.models.length > 0
882
- ? t('provider-line-models', { models: input.models.join(', ') })
883
- : t('provider-line-models-catalog'));
1048
+ lines.push(modelsSummaryLine(input.models, input.delta));
884
1049
  return lines;
885
1050
  }
1051
+ /** `Models: …` line with an optional (added · removed) delta suffix. */
1052
+ function modelsSummaryLine(models, delta) {
1053
+ const base = models.length > 0
1054
+ ? t('provider-line-models', { models: models.join(', ') })
1055
+ : t('provider-line-models-catalog');
1056
+ if (delta === undefined)
1057
+ return base;
1058
+ const parts = [];
1059
+ if (delta.added.length > 0)
1060
+ parts.push(t('provider-models-delta-added', { n: delta.added.length }));
1061
+ if (delta.removed.length > 0)
1062
+ parts.push(t('provider-models-delta-removed', { n: delta.removed.length }));
1063
+ return parts.length === 0 ? base
1064
+ : `${base}${t('provider-models-delta-wrap', { parts: parts.join(' · ') })}`;
1065
+ }
1066
+ /** Capacity fields for one discovered row, when the listing disclosed them. */
1067
+ function capsOf(model) {
1068
+ if (model === undefined)
1069
+ return {};
1070
+ return {
1071
+ ...(model.contextWindow !== undefined ? { contextWindow: model.contextWindow } : {}),
1072
+ ...(model.maxTokens !== undefined ? { maxTokens: model.maxTokens } : {}),
1073
+ };
1074
+ }
886
1075
  function buildProfile(input) {
887
1076
  const profile = {};
888
1077
  // Preserve the profile's credential shape: an empty ref (no apiKeyEnv)
@@ -893,24 +1082,23 @@ function buildProfile(input) {
893
1082
  profile['baseURL'] = input.baseURL;
894
1083
  if (input.isCatalog) {
895
1084
  // `models` replaces the catalog when present; omit it to keep the whole
896
- // catalog served.
1085
+ // catalog served. An id the installed catalog covers stays plain `{id}`
1086
+ // (the catalog carries versioned capabilities); an endpoint-only id
1087
+ // carries what the live listing disclosed.
897
1088
  if (input.models.length > 0) {
898
- profile['models'] = input.models.map(id => ({ id }));
1089
+ profile['models'] = input.models.map(id => ({
1090
+ id,
1091
+ ...((input.catalogDiscovery !== 'fetched' || input.catalogIds.has(id))
1092
+ ? {}
1093
+ : capsOf(input.discoveredById.get(id))),
1094
+ }));
899
1095
  }
900
1096
  return profile;
901
1097
  }
902
1098
  profile['api'] = input.api;
903
- profile['models'] = input.models.map(id => {
904
- const discovered = input.discoveredById.get(id);
905
- return {
906
- id,
907
- ...(discovered?.contextWindow !== undefined
908
- ? { contextWindow: discovered.contextWindow }
909
- : {}),
910
- ...(discovered?.maxTokens !== undefined
911
- ? { maxTokens: discovered.maxTokens }
912
- : {}),
913
- };
914
- });
1099
+ profile['models'] = input.models.map(id => ({
1100
+ id,
1101
+ ...capsOf(input.discoveredById.get(id)),
1102
+ }));
915
1103
  return profile;
916
1104
  }
@@ -10,6 +10,11 @@
10
10
  * Queue semantics mirror the official dsh-tui chat/questions machine: asks
11
11
  * arrive one at a time in practice (the tool blocks until answered), but
12
12
  * concurrent asks from subagents are drained FIFO.
13
+ *
14
+ * This store owns the INTERACTION only. The answered-questionnaire transcript
15
+ * record is a projection fact: it is folded from the persisted
16
+ * `tool/result` (`channel/question-record.ts`, issue #1009), never pushed from
17
+ * here, so it survives `/resume`, rewind and replay.
13
18
  */
14
19
  import { compositionRoot } from './host-access.js';
15
20
  import { type AdapterRuntimeOptions } from '../adapter/kernel/runtime.js';
@@ -39,13 +44,10 @@ export interface QuestionSnapshot {
39
44
  readonly answered: number;
40
45
  /** Previously saved answer or draft for the current question. */
41
46
  readonly draft?: QuestionDraft;
42
- /** Whether Esc should navigate to the previous question. */
47
+ /** Whether Esc / ← should navigate to the previous question. */
43
48
  readonly canGoBack: boolean;
44
- }
45
- /** Completed batch summary, pushed into the transcript by the caller. */
46
- export interface QuestionSummary {
47
- readonly title: string;
48
- readonly lines: readonly string[];
49
+ /** Whether → should navigate to the next question without submitting. */
50
+ readonly canGoForward: boolean;
49
51
  }
50
52
  /** Host-only registration used by the TUI plugin bootstrap. */
51
53
  export declare function bindQuestionStore(ctx: Parameters<typeof compositionRoot>[0], store: QuestionStore): void;
@@ -64,8 +66,6 @@ export declare class QuestionStore {
64
66
  private active;
65
67
  private readonly listeners;
66
68
  private batchSeq;
67
- /** Completed batch summaries, drained by the TUI into the transcript. */
68
- private summaries;
69
69
  /**
70
70
  * Cached snapshot: useSyncExternalStore requires a stable reference while
71
71
  * nothing changed (a fresh object per call would loop re-renders).
@@ -83,10 +83,11 @@ export declare class QuestionStore {
83
83
  */
84
84
  getSnapshot(): QuestionSnapshot | null;
85
85
  /**
86
- * Take (and clear) every completed batch summary for the transcript.
87
- * @returns The summaries collected since the last take.
86
+ * Whether a panel callback still belongs to the question it was rendered
87
+ * for. One stdin batch can deliver → and then Enter to the panel that
88
+ * was mounted for the first key, after the store has already moved.
88
89
  */
89
- takeSummaries(): QuestionSummary[];
90
+ stillCurrent(key: string): boolean;
90
91
  private emit;
91
92
  /** Rebuild the cached snapshot after any mutation of active/index. */
92
93
  private rebuildSnapshot;
@@ -95,8 +96,8 @@ export declare class QuestionStore {
95
96
  * model runs the `ask_user_question` tool, and by local wizards (e.g.
96
97
  * `/provider`) driving the same panel.
97
98
  * @param request - The ask request: questions plus optional abort signal.
98
- * @param options - `redact` hides answer text from the transcript summary
99
- * (use for batches that collect secrets such as API keys).
99
+ * @param options - `redact` hides answer text from the answered-questionnaire
100
+ * transcript record (use for batches that collect secrets such as API keys).
100
101
  * @returns A promise settling with the collected answers when the user
101
102
  * submits the batch, or rejecting when the ask is interrupted.
102
103
  */
@@ -107,11 +108,17 @@ export declare class QuestionStore {
107
108
  private startNext;
108
109
  /**
109
110
  * The user submitted an answer for the current question; replaces any
110
- * previous answer at that position, advances the batch, and settles it once
111
- * every question is answered.
111
+ * previous answer at that position, advances to the next unanswered
112
+ * question, and settles the batch once every question is answered.
112
113
  * @param selection - Selected option labels plus optional custom text.
113
114
  */
114
115
  answerCurrent(selection: QuestionSelection): void;
116
+ /**
117
+ * Navigate to the next question without committing the current one. The
118
+ * caller supplies the panel's draft so a peek forward does not discard
119
+ * in-progress text. No-op on the last question — Enter still owns submit.
120
+ */
121
+ forwardCurrent(draft?: QuestionDraft): void;
115
122
  /**
116
123
  * Navigate to the previous question without cancelling the batch. The
117
124
  * caller supplies the panel's current draft so partially typed text can be
@@ -1 +1 @@
1
- {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/questions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAA;AACrC,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;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAA;AAyB7C,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;IACzB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAA;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B;AAID,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAGxG;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAGtG;AA0BD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,OAAO,GAAE,qBAA+C;IAGpE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAI;IACpB;;;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;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIlC,OAAO,CAAC,IAAI;IAIZ,sEAAsE;IACtE,OAAO,CAAC,eAAe;IAyBvB;;;;;;;;;OASG;IACH,GAAG,CAAC,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgCnE,8CAA8C;IAC9C,OAAO,CAAC,SAAS;IAOjB;;;;;OAKG;IACH,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAqCjD;;;;OAIG;IACH,cAAc,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAW3C;;;;OAIG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAWxC,6DAA6D;IAC7D,aAAa,IAAI,IAAI;IAUrB,+DAA+D;IAC/D,SAAS,IAAI,IAAI;IASjB,wEAAwE;IACxE,OAAO,CAAC,MAAM;IAOd,yEAAyE;IACzE,OAAO,CAAC,IAAI;CAMb"}