@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.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 (1023) hide show
  1. package/README.md +85 -5
  2. package/assets/claude-girl/claude-girl-happy.png +0 -0
  3. package/assets/claude-girl/claude-girl.png +0 -0
  4. package/assets/codex-girl/codex-girl-happy.png +0 -0
  5. package/assets/codex-girl/codex-girl.png +0 -0
  6. package/bin/dsh-tui.js +104 -18
  7. package/cordis.patch.yml +2 -0
  8. package/cordis.yml +2 -0
  9. package/guide/dsh-tui-guide/SKILL.md +4 -2
  10. package/guide/dsh-tui-guide/claude-backend.en.md +203 -0
  11. package/guide/dsh-tui-guide/claude-backend.md +161 -0
  12. package/guide/dsh-tui-guide/codex-backend.en.md +297 -0
  13. package/guide/dsh-tui-guide/codex-backend.md +257 -0
  14. package/guide/dsh-tui-guide/configuration.en.md +9 -2
  15. package/guide/dsh-tui-guide/configuration.md +9 -2
  16. package/guide/dsh-tui-guide/interaction.en.md +169 -27
  17. package/guide/dsh-tui-guide/interaction.md +115 -17
  18. package/guide/dsh-tui-guide/themes.en.md +24 -2
  19. package/guide/dsh-tui-guide/themes.md +21 -2
  20. package/guide/dsh-tui-guide/user-guide.en.md +38 -23
  21. package/guide/dsh-tui-guide/user-guide.md +22 -11
  22. package/guide/dsh-tui-guide/vscode.en.md +1 -0
  23. package/guide/dsh-tui-guide/vscode.md +1 -0
  24. package/lib/settings.json +139 -6
  25. package/lib/types/adapter/channel/state.d.ts.map +1 -1
  26. package/lib/types/adapter/channel/state.js +1 -0
  27. package/lib/types/adapter/channel/ui-policy.d.ts +17 -2
  28. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  29. package/lib/types/adapter/channel/ui-policy.js +29 -0
  30. package/lib/types/adapter/channel/ui.d.ts.map +1 -1
  31. package/lib/types/adapter/channel/ui.js +45 -5
  32. package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
  33. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  34. package/lib/types/adapter/ports/channel-display.d.ts +7 -1
  35. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
  36. package/lib/types/adapter/ports/channel-session.d.ts +5 -0
  37. package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
  38. package/lib/types/adapter/ports/channel-settings.d.ts +20 -0
  39. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  40. package/lib/types/adapter/ports/channel-ui.d.ts +183 -6
  41. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  42. package/lib/types/adapter/ports/channel-view.d.ts +477 -13
  43. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  44. package/lib/types/agent/backend.d.ts +168 -0
  45. package/lib/types/agent/backend.d.ts.map +1 -0
  46. package/lib/types/agent/backend.js +1 -0
  47. package/lib/types/agent/capabilities.d.ts +461 -0
  48. package/lib/types/agent/capabilities.d.ts.map +1 -0
  49. package/lib/types/agent/capabilities.js +1 -0
  50. package/lib/types/agent/events.d.ts +733 -0
  51. package/lib/types/agent/events.d.ts.map +1 -0
  52. package/lib/types/agent/events.js +2 -0
  53. package/lib/types/agent/index.d.ts +8 -0
  54. package/lib/types/agent/index.d.ts.map +1 -0
  55. package/lib/types/agent/index.js +7 -0
  56. package/lib/types/agent/messages.d.ts +52 -0
  57. package/lib/types/agent/messages.d.ts.map +1 -0
  58. package/lib/types/agent/messages.js +91 -0
  59. package/lib/types/agent/presentation.d.ts +29 -0
  60. package/lib/types/agent/presentation.d.ts.map +1 -0
  61. package/lib/types/agent/presentation.js +4 -0
  62. package/lib/types/agent/refs.d.ts +30 -0
  63. package/lib/types/agent/refs.d.ts.map +1 -0
  64. package/lib/types/agent/refs.js +39 -0
  65. package/lib/types/agent/session.d.ts +78 -0
  66. package/lib/types/agent/session.d.ts.map +1 -0
  67. package/lib/types/agent/session.js +1 -0
  68. package/lib/types/backends/claude/activity.d.ts +53 -0
  69. package/lib/types/backends/claude/activity.d.ts.map +1 -0
  70. package/lib/types/backends/claude/activity.js +103 -0
  71. package/lib/types/backends/claude/auth.d.ts +245 -0
  72. package/lib/types/backends/claude/auth.d.ts.map +1 -0
  73. package/lib/types/backends/claude/auth.js +503 -0
  74. package/lib/types/backends/claude/backend.d.ts +32 -0
  75. package/lib/types/backends/claude/backend.d.ts.map +1 -0
  76. package/lib/types/backends/claude/backend.js +296 -0
  77. package/lib/types/backends/claude/catalog.d.ts +17 -0
  78. package/lib/types/backends/claude/catalog.d.ts.map +1 -0
  79. package/lib/types/backends/claude/catalog.js +94 -0
  80. package/lib/types/backends/claude/channels.d.ts +63 -0
  81. package/lib/types/backends/claude/channels.d.ts.map +1 -0
  82. package/lib/types/backends/claude/channels.js +275 -0
  83. package/lib/types/backends/claude/contract.d.ts +37 -0
  84. package/lib/types/backends/claude/contract.d.ts.map +1 -0
  85. package/lib/types/backends/claude/contract.js +46 -0
  86. package/lib/types/backends/claude/controls.d.ts +134 -0
  87. package/lib/types/backends/claude/controls.d.ts.map +1 -0
  88. package/lib/types/backends/claude/controls.js +425 -0
  89. package/lib/types/backends/claude/dialogs.d.ts +62 -0
  90. package/lib/types/backends/claude/dialogs.d.ts.map +1 -0
  91. package/lib/types/backends/claude/dialogs.js +253 -0
  92. package/lib/types/backends/claude/flag-settings.d.ts +12 -0
  93. package/lib/types/backends/claude/flag-settings.d.ts.map +1 -0
  94. package/lib/types/backends/claude/flag-settings.js +49 -0
  95. package/lib/types/backends/claude/images.d.ts +49 -0
  96. package/lib/types/backends/claude/images.d.ts.map +1 -0
  97. package/lib/types/backends/claude/images.js +94 -0
  98. package/lib/types/backends/claude/index.d.ts +5 -0
  99. package/lib/types/backends/claude/index.d.ts.map +1 -0
  100. package/lib/types/backends/claude/index.js +4 -0
  101. package/lib/types/backends/claude/install.d.ts +15 -0
  102. package/lib/types/backends/claude/install.d.ts.map +1 -0
  103. package/lib/types/backends/claude/install.js +91 -0
  104. package/lib/types/backends/claude/modelEnv.d.ts +64 -0
  105. package/lib/types/backends/claude/modelEnv.d.ts.map +1 -0
  106. package/lib/types/backends/claude/modelEnv.js +199 -0
  107. package/lib/types/backends/claude/narrow.d.ts +10 -0
  108. package/lib/types/backends/claude/narrow.d.ts.map +1 -0
  109. package/lib/types/backends/claude/narrow.js +8 -0
  110. package/lib/types/backends/claude/older-history.d.ts +16 -0
  111. package/lib/types/backends/claude/older-history.d.ts.map +1 -0
  112. package/lib/types/backends/claude/older-history.js +101 -0
  113. package/lib/types/backends/claude/options.d.ts +181 -0
  114. package/lib/types/backends/claude/options.d.ts.map +1 -0
  115. package/lib/types/backends/claude/options.js +208 -0
  116. package/lib/types/backends/claude/permissions.d.ts +83 -0
  117. package/lib/types/backends/claude/permissions.d.ts.map +1 -0
  118. package/lib/types/backends/claude/permissions.js +331 -0
  119. package/lib/types/backends/claude/prefs.d.ts +55 -0
  120. package/lib/types/backends/claude/prefs.d.ts.map +1 -0
  121. package/lib/types/backends/claude/prefs.js +150 -0
  122. package/lib/types/backends/claude/process.d.ts +19 -0
  123. package/lib/types/backends/claude/process.d.ts.map +1 -0
  124. package/lib/types/backends/claude/process.js +156 -0
  125. package/lib/types/backends/claude/replay.d.ts +129 -0
  126. package/lib/types/backends/claude/replay.d.ts.map +1 -0
  127. package/lib/types/backends/claude/replay.js +505 -0
  128. package/lib/types/backends/claude/sdk-warnings.d.ts +23 -0
  129. package/lib/types/backends/claude/sdk-warnings.d.ts.map +1 -0
  130. package/lib/types/backends/claude/sdk-warnings.js +55 -0
  131. package/lib/types/backends/claude/sdk.d.ts +12 -0
  132. package/lib/types/backends/claude/sdk.d.ts.map +1 -0
  133. package/lib/types/backends/claude/sdk.js +34 -0
  134. package/lib/types/backends/claude/send-message.d.ts +54 -0
  135. package/lib/types/backends/claude/send-message.d.ts.map +1 -0
  136. package/lib/types/backends/claude/send-message.js +65 -0
  137. package/lib/types/backends/claude/session/auth.d.ts +47 -0
  138. package/lib/types/backends/claude/session/auth.d.ts.map +1 -0
  139. package/lib/types/backends/claude/session/auth.js +226 -0
  140. package/lib/types/backends/claude/session/channels.d.ts +82 -0
  141. package/lib/types/backends/claude/session/channels.d.ts.map +1 -0
  142. package/lib/types/backends/claude/session/channels.js +45 -0
  143. package/lib/types/backends/claude/session/input.d.ts +16 -0
  144. package/lib/types/backends/claude/session/input.d.ts.map +1 -0
  145. package/lib/types/backends/claude/session/input.js +64 -0
  146. package/lib/types/backends/claude/session/lifecycle.d.ts +6 -0
  147. package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -0
  148. package/lib/types/backends/claude/session/lifecycle.js +852 -0
  149. package/lib/types/backends/claude/session/store.d.ts +17 -0
  150. package/lib/types/backends/claude/session/store.d.ts.map +1 -0
  151. package/lib/types/backends/claude/session/store.js +122 -0
  152. package/lib/types/backends/claude/session/subagents.d.ts +13 -0
  153. package/lib/types/backends/claude/session/subagents.d.ts.map +1 -0
  154. package/lib/types/backends/claude/session/subagents.js +77 -0
  155. package/lib/types/backends/claude/session/types.d.ts +89 -0
  156. package/lib/types/backends/claude/session/types.d.ts.map +1 -0
  157. package/lib/types/backends/claude/session/types.js +1 -0
  158. package/lib/types/backends/claude/session.d.ts +4 -0
  159. package/lib/types/backends/claude/session.d.ts.map +1 -0
  160. package/lib/types/backends/claude/session.js +2 -0
  161. package/lib/types/backends/claude/side-query.d.ts +34 -0
  162. package/lib/types/backends/claude/side-query.d.ts.map +1 -0
  163. package/lib/types/backends/claude/side-query.js +116 -0
  164. package/lib/types/backends/claude/task-output.d.ts +13 -0
  165. package/lib/types/backends/claude/task-output.d.ts.map +1 -0
  166. package/lib/types/backends/claude/task-output.js +101 -0
  167. package/lib/types/backends/claude/tools.d.ts +45 -0
  168. package/lib/types/backends/claude/tools.d.ts.map +1 -0
  169. package/lib/types/backends/claude/tools.js +231 -0
  170. package/lib/types/backends/claude/transcript-file.d.ts +41 -0
  171. package/lib/types/backends/claude/transcript-file.d.ts.map +1 -0
  172. package/lib/types/backends/claude/transcript-file.js +195 -0
  173. package/lib/types/backends/claude/translate/attempts.d.ts +33 -0
  174. package/lib/types/backends/claude/translate/attempts.d.ts.map +1 -0
  175. package/lib/types/backends/claude/translate/attempts.js +243 -0
  176. package/lib/types/backends/claude/translate/content.d.ts +33 -0
  177. package/lib/types/backends/claude/translate/content.d.ts.map +1 -0
  178. package/lib/types/backends/claude/translate/content.js +91 -0
  179. package/lib/types/backends/claude/translate/core.d.ts +76 -0
  180. package/lib/types/backends/claude/translate/core.d.ts.map +1 -0
  181. package/lib/types/backends/claude/translate/core.js +447 -0
  182. package/lib/types/backends/claude/translate/events.d.ts +9 -0
  183. package/lib/types/backends/claude/translate/events.d.ts.map +1 -0
  184. package/lib/types/backends/claude/translate/events.js +77 -0
  185. package/lib/types/backends/claude/translate/lanes.d.ts +31 -0
  186. package/lib/types/backends/claude/translate/lanes.d.ts.map +1 -0
  187. package/lib/types/backends/claude/translate/lanes.js +177 -0
  188. package/lib/types/backends/claude/translate/messages.d.ts +36 -0
  189. package/lib/types/backends/claude/translate/messages.d.ts.map +1 -0
  190. package/lib/types/backends/claude/translate/messages.js +202 -0
  191. package/lib/types/backends/claude/translate/system.d.ts +40 -0
  192. package/lib/types/backends/claude/translate/system.d.ts.map +1 -0
  193. package/lib/types/backends/claude/translate/system.js +399 -0
  194. package/lib/types/backends/claude/translate/tasks.d.ts +19 -0
  195. package/lib/types/backends/claude/translate/tasks.d.ts.map +1 -0
  196. package/lib/types/backends/claude/translate/tasks.js +159 -0
  197. package/lib/types/backends/claude/translate/types.d.ts +114 -0
  198. package/lib/types/backends/claude/translate/types.d.ts.map +1 -0
  199. package/lib/types/backends/claude/translate/types.js +1 -0
  200. package/lib/types/backends/claude/translate.d.ts +9 -0
  201. package/lib/types/backends/claude/translate.d.ts.map +1 -0
  202. package/lib/types/backends/claude/translate.js +6 -0
  203. package/lib/types/backends/codex/auth/external-tokens.d.ts +66 -0
  204. package/lib/types/backends/codex/auth/external-tokens.d.ts.map +1 -0
  205. package/lib/types/backends/codex/auth/external-tokens.js +325 -0
  206. package/lib/types/backends/codex/auth/route.d.ts +14 -0
  207. package/lib/types/backends/codex/auth/route.d.ts.map +1 -0
  208. package/lib/types/backends/codex/auth/route.js +52 -0
  209. package/lib/types/backends/codex/auth/status.d.ts +16 -0
  210. package/lib/types/backends/codex/auth/status.d.ts.map +1 -0
  211. package/lib/types/backends/codex/auth/status.js +115 -0
  212. package/lib/types/backends/codex/backend.d.ts +58 -0
  213. package/lib/types/backends/codex/backend.d.ts.map +1 -0
  214. package/lib/types/backends/codex/backend.js +201 -0
  215. package/lib/types/backends/codex/catalog.d.ts +17 -0
  216. package/lib/types/backends/codex/catalog.d.ts.map +1 -0
  217. package/lib/types/backends/codex/catalog.js +128 -0
  218. package/lib/types/backends/codex/channels.d.ts +59 -0
  219. package/lib/types/backends/codex/channels.d.ts.map +1 -0
  220. package/lib/types/backends/codex/channels.js +274 -0
  221. package/lib/types/backends/codex/contract.d.ts +46 -0
  222. package/lib/types/backends/codex/contract.d.ts.map +1 -0
  223. package/lib/types/backends/codex/contract.js +80 -0
  224. package/lib/types/backends/codex/detect.d.ts +14 -0
  225. package/lib/types/backends/codex/detect.d.ts.map +1 -0
  226. package/lib/types/backends/codex/detect.js +90 -0
  227. package/lib/types/backends/codex/index.d.ts +6 -0
  228. package/lib/types/backends/codex/index.d.ts.map +1 -0
  229. package/lib/types/backends/codex/index.js +5 -0
  230. package/lib/types/backends/codex/modes.d.ts +16 -0
  231. package/lib/types/backends/codex/modes.d.ts.map +1 -0
  232. package/lib/types/backends/codex/modes.js +49 -0
  233. package/lib/types/backends/codex/narrow.d.ts +20 -0
  234. package/lib/types/backends/codex/narrow.d.ts.map +1 -0
  235. package/lib/types/backends/codex/narrow.js +18 -0
  236. package/lib/types/backends/codex/prefs.d.ts +42 -0
  237. package/lib/types/backends/codex/prefs.d.ts.map +1 -0
  238. package/lib/types/backends/codex/prefs.js +124 -0
  239. package/lib/types/backends/codex/protocol/index.d.ts +149 -0
  240. package/lib/types/backends/codex/protocol/index.d.ts.map +1 -0
  241. package/lib/types/backends/codex/protocol/index.js +130 -0
  242. package/lib/types/backends/codex/rpc/binary.d.ts +35 -0
  243. package/lib/types/backends/codex/rpc/binary.d.ts.map +1 -0
  244. package/lib/types/backends/codex/rpc/binary.js +174 -0
  245. package/lib/types/backends/codex/rpc/client.d.ts +72 -0
  246. package/lib/types/backends/codex/rpc/client.d.ts.map +1 -0
  247. package/lib/types/backends/codex/rpc/client.js +214 -0
  248. package/lib/types/backends/codex/rpc/hub.d.ts +105 -0
  249. package/lib/types/backends/codex/rpc/hub.d.ts.map +1 -0
  250. package/lib/types/backends/codex/rpc/hub.js +532 -0
  251. package/lib/types/backends/codex/rpc/transport.d.ts +39 -0
  252. package/lib/types/backends/codex/rpc/transport.d.ts.map +1 -0
  253. package/lib/types/backends/codex/rpc/transport.js +212 -0
  254. package/lib/types/backends/codex/session/activity.d.ts +18 -0
  255. package/lib/types/backends/codex/session/activity.d.ts.map +1 -0
  256. package/lib/types/backends/codex/session/activity.js +108 -0
  257. package/lib/types/backends/codex/session/approvals.d.ts +39 -0
  258. package/lib/types/backends/codex/session/approvals.d.ts.map +1 -0
  259. package/lib/types/backends/codex/session/approvals.js +477 -0
  260. package/lib/types/backends/codex/session/commands.d.ts +37 -0
  261. package/lib/types/backends/codex/session/commands.d.ts.map +1 -0
  262. package/lib/types/backends/codex/session/commands.js +141 -0
  263. package/lib/types/backends/codex/session/controls.d.ts +37 -0
  264. package/lib/types/backends/codex/session/controls.d.ts.map +1 -0
  265. package/lib/types/backends/codex/session/controls.js +303 -0
  266. package/lib/types/backends/codex/session/goals.d.ts +25 -0
  267. package/lib/types/backends/codex/session/goals.d.ts.map +1 -0
  268. package/lib/types/backends/codex/session/goals.js +97 -0
  269. package/lib/types/backends/codex/session/history.d.ts +52 -0
  270. package/lib/types/backends/codex/session/history.d.ts.map +1 -0
  271. package/lib/types/backends/codex/session/history.js +196 -0
  272. package/lib/types/backends/codex/session/images.d.ts +17 -0
  273. package/lib/types/backends/codex/session/images.d.ts.map +1 -0
  274. package/lib/types/backends/codex/session/images.js +138 -0
  275. package/lib/types/backends/codex/session/input.d.ts +75 -0
  276. package/lib/types/backends/codex/session/input.d.ts.map +1 -0
  277. package/lib/types/backends/codex/session/input.js +294 -0
  278. package/lib/types/backends/codex/session/plan-review.d.ts +19 -0
  279. package/lib/types/backends/codex/session/plan-review.d.ts.map +1 -0
  280. package/lib/types/backends/codex/session/plan-review.js +48 -0
  281. package/lib/types/backends/codex/session/prompts.d.ts +7 -0
  282. package/lib/types/backends/codex/session/prompts.d.ts.map +1 -0
  283. package/lib/types/backends/codex/session/prompts.js +47 -0
  284. package/lib/types/backends/codex/session/session.d.ts +12 -0
  285. package/lib/types/backends/codex/session/session.d.ts.map +1 -0
  286. package/lib/types/backends/codex/session/session.js +871 -0
  287. package/lib/types/backends/codex/session/side-query.d.ts +25 -0
  288. package/lib/types/backends/codex/session/side-query.d.ts.map +1 -0
  289. package/lib/types/backends/codex/session/side-query.js +121 -0
  290. package/lib/types/backends/codex/session/state.d.ts +57 -0
  291. package/lib/types/backends/codex/session/state.d.ts.map +1 -0
  292. package/lib/types/backends/codex/session/state.js +1 -0
  293. package/lib/types/backends/codex/session/subagents.d.ts +28 -0
  294. package/lib/types/backends/codex/session/subagents.d.ts.map +1 -0
  295. package/lib/types/backends/codex/session/subagents.js +286 -0
  296. package/lib/types/backends/codex/session/tasks.d.ts +25 -0
  297. package/lib/types/backends/codex/session/tasks.d.ts.map +1 -0
  298. package/lib/types/backends/codex/session/tasks.js +207 -0
  299. package/lib/types/backends/codex/session/tool-output.d.ts +9 -0
  300. package/lib/types/backends/codex/session/tool-output.d.ts.map +1 -0
  301. package/lib/types/backends/codex/session/tool-output.js +29 -0
  302. package/lib/types/backends/codex/translate/commands.d.ts +30 -0
  303. package/lib/types/backends/codex/translate/commands.d.ts.map +1 -0
  304. package/lib/types/backends/codex/translate/commands.js +103 -0
  305. package/lib/types/backends/codex/translate/events.d.ts +9 -0
  306. package/lib/types/backends/codex/translate/events.d.ts.map +1 -0
  307. package/lib/types/backends/codex/translate/events.js +71 -0
  308. package/lib/types/backends/codex/translate/items.d.ts +112 -0
  309. package/lib/types/backends/codex/translate/items.d.ts.map +1 -0
  310. package/lib/types/backends/codex/translate/items.js +375 -0
  311. package/lib/types/backends/codex/translate/live.d.ts +39 -0
  312. package/lib/types/backends/codex/translate/live.d.ts.map +1 -0
  313. package/lib/types/backends/codex/translate/live.js +315 -0
  314. package/lib/types/backends/codex/translate/notices.d.ts +27 -0
  315. package/lib/types/backends/codex/translate/notices.d.ts.map +1 -0
  316. package/lib/types/backends/codex/translate/notices.js +99 -0
  317. package/lib/types/backends/codex/translate/presentation.d.ts +49 -0
  318. package/lib/types/backends/codex/translate/presentation.d.ts.map +1 -0
  319. package/lib/types/backends/codex/translate/presentation.js +237 -0
  320. package/lib/types/backends/codex/translate/replay.d.ts +18 -0
  321. package/lib/types/backends/codex/translate/replay.d.ts.map +1 -0
  322. package/lib/types/backends/codex/translate/replay.js +33 -0
  323. package/lib/types/backends/codex/translate/usage.d.ts +29 -0
  324. package/lib/types/backends/codex/translate/usage.d.ts.map +1 -0
  325. package/lib/types/backends/codex/translate/usage.js +65 -0
  326. package/lib/types/backends/shared/atomic-file.d.ts +4 -0
  327. package/lib/types/backends/shared/atomic-file.d.ts.map +1 -0
  328. package/lib/types/backends/shared/atomic-file.js +52 -0
  329. package/lib/types/backends/shared/channel-tokens.d.ts +29 -0
  330. package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -0
  331. package/lib/types/backends/shared/channel-tokens.js +161 -0
  332. package/lib/types/backends/shared/display-path.d.ts +3 -0
  333. package/lib/types/backends/shared/display-path.d.ts.map +1 -0
  334. package/lib/types/backends/shared/display-path.js +12 -0
  335. package/lib/types/branding.d.ts +92 -0
  336. package/lib/types/branding.d.ts.map +1 -0
  337. package/lib/types/branding.js +117 -0
  338. package/lib/types/channel/activity.d.ts +53 -0
  339. package/lib/types/channel/activity.d.ts.map +1 -0
  340. package/lib/types/channel/activity.js +955 -0
  341. package/lib/types/channel/capabilities.d.ts +24 -0
  342. package/lib/types/channel/capabilities.d.ts.map +1 -0
  343. package/lib/types/channel/capabilities.js +57 -0
  344. package/lib/types/channel/channel-slug.d.ts +9 -0
  345. package/lib/types/channel/channel-slug.d.ts.map +1 -0
  346. package/lib/types/channel/channel-slug.js +15 -0
  347. package/lib/types/channel/channel-wizard.d.ts +30 -0
  348. package/lib/types/channel/channel-wizard.d.ts.map +1 -0
  349. package/lib/types/channel/channel-wizard.js +226 -0
  350. package/lib/types/channel/elicitation.d.ts +135 -0
  351. package/lib/types/channel/elicitation.d.ts.map +1 -0
  352. package/lib/types/channel/elicitation.js +360 -0
  353. package/lib/types/channel/goal-command.d.ts +49 -0
  354. package/lib/types/channel/goal-command.d.ts.map +1 -0
  355. package/lib/types/channel/goal-command.js +72 -0
  356. package/lib/types/channel/history-restore.d.ts +16 -0
  357. package/lib/types/channel/history-restore.d.ts.map +1 -0
  358. package/lib/types/channel/history-restore.js +214 -0
  359. package/lib/types/channel/interaction.d.ts +38 -0
  360. package/lib/types/channel/interaction.d.ts.map +1 -0
  361. package/lib/types/channel/interaction.js +110 -0
  362. package/lib/types/channel/job-format.d.ts +6 -0
  363. package/lib/types/channel/job-format.d.ts.map +1 -0
  364. package/lib/types/channel/job-format.js +12 -0
  365. package/lib/types/channel/live-output.d.ts +35 -0
  366. package/lib/types/channel/live-output.d.ts.map +1 -0
  367. package/lib/types/channel/live-output.js +74 -0
  368. package/lib/types/channel/model-capabilities.d.ts +10 -0
  369. package/lib/types/channel/model-capabilities.d.ts.map +1 -0
  370. package/lib/types/channel/model-capabilities.js +51 -0
  371. package/lib/types/channel/permissions.d.ts +155 -0
  372. package/lib/types/channel/permissions.d.ts.map +1 -0
  373. package/lib/types/channel/permissions.js +188 -0
  374. package/lib/types/channel/projection.d.ts +110 -0
  375. package/lib/types/channel/projection.d.ts.map +1 -0
  376. package/lib/types/channel/projection.js +1521 -0
  377. package/lib/types/channel/question-record.d.ts +76 -0
  378. package/lib/types/channel/question-record.d.ts.map +1 -0
  379. package/lib/types/channel/question-record.js +109 -0
  380. package/lib/types/channel/questions.d.ts +204 -0
  381. package/lib/types/channel/questions.d.ts.map +1 -0
  382. package/lib/types/channel/questions.js +286 -0
  383. package/lib/types/channel/sanitize.d.ts +49 -0
  384. package/lib/types/channel/sanitize.d.ts.map +1 -0
  385. package/lib/types/channel/sanitize.js +88 -0
  386. package/lib/types/channel/selection-record.d.ts +18 -0
  387. package/lib/types/channel/selection-record.d.ts.map +1 -0
  388. package/lib/types/channel/selection-record.js +45 -0
  389. package/lib/types/channel/side-prompts.d.ts +59 -0
  390. package/lib/types/channel/side-prompts.d.ts.map +1 -0
  391. package/lib/types/channel/side-prompts.js +127 -0
  392. package/lib/types/channel/transcript.d.ts +17 -0
  393. package/lib/types/channel/transcript.d.ts.map +1 -0
  394. package/lib/types/channel/transcript.js +19 -0
  395. package/lib/types/channel/usage.d.ts +48 -0
  396. package/lib/types/channel/usage.d.ts.map +1 -0
  397. package/lib/types/channel/usage.js +143 -0
  398. package/lib/types/commands.d.ts +147 -0
  399. package/lib/types/commands.d.ts.map +1 -1
  400. package/lib/types/commands.js +196 -2
  401. package/lib/types/components/AgentMessageComposer.d.ts +50 -0
  402. package/lib/types/components/AgentMessageComposer.d.ts.map +1 -0
  403. package/lib/types/components/AgentMessageComposer.js +159 -0
  404. package/lib/types/components/BtwPanel.d.ts +13 -12
  405. package/lib/types/components/BtwPanel.d.ts.map +1 -1
  406. package/lib/types/components/BtwPanel.js +35 -24
  407. package/lib/types/components/ChannelPicker.d.ts +40 -0
  408. package/lib/types/components/ChannelPicker.d.ts.map +1 -0
  409. package/lib/types/components/ChannelPicker.js +26 -0
  410. package/lib/types/components/Chat/JobCard.d.ts +29 -31
  411. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  412. package/lib/types/components/Chat/JobCard.js +31 -112
  413. package/lib/types/components/Chat/SubagentMessage.d.ts +4 -1
  414. package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
  415. package/lib/types/components/Chat/SubagentMessage.js +10 -3
  416. package/lib/types/components/ClaudeGirl.d.ts +27 -0
  417. package/lib/types/components/ClaudeGirl.d.ts.map +1 -0
  418. package/lib/types/components/ClaudeGirl.js +30 -0
  419. package/lib/types/components/CodeBlockFrame.d.ts +19 -0
  420. package/lib/types/components/CodeBlockFrame.d.ts.map +1 -0
  421. package/lib/types/components/CodeBlockFrame.js +138 -0
  422. package/lib/types/components/CommandSuggestions.d.ts +10 -1
  423. package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
  424. package/lib/types/components/CommandSuggestions.js +20 -3
  425. package/lib/types/components/ContextBarView.d.ts +2 -2
  426. package/lib/types/components/ContextBarView.d.ts.map +1 -1
  427. package/lib/types/components/ContextBarView.js +18 -8
  428. package/lib/types/components/EffortChargeGlyph.d.ts +1 -1
  429. package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -1
  430. package/lib/types/components/EffortChargeGlyph.js +3 -4
  431. package/lib/types/components/EffortInputBorder.d.ts +1 -2
  432. package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
  433. package/lib/types/components/EffortInputBorder.js +7 -4
  434. package/lib/types/components/EffortSlider.d.ts +5 -1
  435. package/lib/types/components/EffortSlider.d.ts.map +1 -1
  436. package/lib/types/components/EffortSlider.js +2 -2
  437. package/lib/types/components/EffortTierBadge.d.ts +1 -2
  438. package/lib/types/components/EffortTierBadge.d.ts.map +1 -1
  439. package/lib/types/components/EffortTierBadge.js +8 -5
  440. package/lib/types/components/GoalTodoPanel.d.ts +2 -1
  441. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  442. package/lib/types/components/GoalTodoPanel.js +11 -5
  443. package/lib/types/components/InlineMathParagraph.js +1 -1
  444. package/lib/types/components/JobsPanel.d.ts +8 -9
  445. package/lib/types/components/JobsPanel.d.ts.map +1 -1
  446. package/lib/types/components/JobsPanel.js +72 -13
  447. package/lib/types/components/KernelPicker.d.ts +28 -0
  448. package/lib/types/components/KernelPicker.d.ts.map +1 -0
  449. package/lib/types/components/KernelPicker.js +37 -0
  450. package/lib/types/components/LogoV2.d.ts +7 -1
  451. package/lib/types/components/LogoV2.d.ts.map +1 -1
  452. package/lib/types/components/LogoV2.js +120 -24
  453. package/lib/types/components/Markdown.d.ts +2 -1
  454. package/lib/types/components/Markdown.d.ts.map +1 -1
  455. package/lib/types/components/Markdown.js +37 -8
  456. package/lib/types/components/MathBlock.d.ts.map +1 -1
  457. package/lib/types/components/MathBlock.js +3 -1
  458. package/lib/types/components/MermaidDiagram.d.ts.map +1 -1
  459. package/lib/types/components/MermaidDiagram.js +7 -5
  460. package/lib/types/components/MessageList.d.ts +21 -3
  461. package/lib/types/components/MessageList.d.ts.map +1 -1
  462. package/lib/types/components/MessageList.js +62 -42
  463. package/lib/types/components/ModePicker.d.ts +20 -0
  464. package/lib/types/components/ModePicker.d.ts.map +1 -0
  465. package/lib/types/components/ModePicker.js +17 -0
  466. package/lib/types/components/PromptInput.d.ts +2 -2
  467. package/lib/types/components/PromptInput.d.ts.map +1 -1
  468. package/lib/types/components/PromptInput.js +308 -55
  469. package/lib/types/components/SdkInstallWizard.d.ts +44 -0
  470. package/lib/types/components/SdkInstallWizard.d.ts.map +1 -0
  471. package/lib/types/components/SdkInstallWizard.js +18 -0
  472. package/lib/types/components/SearchBox.d.ts +7 -8
  473. package/lib/types/components/SearchBox.d.ts.map +1 -1
  474. package/lib/types/components/SearchBox.js +18 -9
  475. package/lib/types/components/SplitDiffView.d.ts.map +1 -1
  476. package/lib/types/components/SplitDiffView.js +113 -6
  477. package/lib/types/components/StarPrompt.d.ts.map +1 -1
  478. package/lib/types/components/StarPrompt.js +5 -3
  479. package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
  480. package/lib/types/components/StreamingMarkdown.js +6 -4
  481. package/lib/types/components/SubagentCard.d.ts +2 -1
  482. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  483. package/lib/types/components/SubagentCard.js +25 -18
  484. package/lib/types/components/SubagentDashboard.d.ts +10 -6
  485. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  486. package/lib/types/components/SubagentDashboard.js +32 -21
  487. package/lib/types/components/SubagentDetailScene.d.ts +16 -1
  488. package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
  489. package/lib/types/components/SubagentDetailScene.js +196 -45
  490. package/lib/types/components/SyntaxText.d.ts.map +1 -1
  491. package/lib/types/components/SyntaxText.js +4 -1
  492. package/lib/types/components/TurnInterruptedRow.d.ts +3 -1
  493. package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -1
  494. package/lib/types/components/TurnInterruptedRow.js +6 -3
  495. package/lib/types/components/TurnUsageRow.d.ts +24 -0
  496. package/lib/types/components/TurnUsageRow.d.ts.map +1 -0
  497. package/lib/types/components/TurnUsageRow.js +46 -0
  498. package/lib/types/components/WorkingSpinner.d.ts +2 -1
  499. package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
  500. package/lib/types/components/WorkingSpinner.js +21 -4
  501. package/lib/types/components/approvals/ApprovalPanel.d.ts +36 -13
  502. package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
  503. package/lib/types/components/approvals/ApprovalPanel.js +173 -25
  504. package/lib/types/components/claudeGirlSprite.d.ts +18 -0
  505. package/lib/types/components/claudeGirlSprite.d.ts.map +1 -0
  506. package/lib/types/components/claudeGirlSprite.js +48 -0
  507. package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
  508. package/lib/types/components/design-system/ThemeProvider.js +46 -13
  509. package/lib/types/components/design-system/ThemedText.d.ts +3 -1
  510. package/lib/types/components/design-system/ThemedText.d.ts.map +1 -1
  511. package/lib/types/components/design-system/ThemedText.js +2 -2
  512. package/lib/types/components/diffPatch.d.ts +55 -0
  513. package/lib/types/components/diffPatch.d.ts.map +1 -0
  514. package/lib/types/components/diffPatch.js +142 -0
  515. package/lib/types/components/kernelCatalog.d.ts +48 -0
  516. package/lib/types/components/kernelCatalog.d.ts.map +1 -0
  517. package/lib/types/components/kernelCatalog.js +53 -0
  518. package/lib/types/components/launchpadActions.d.ts +13 -6
  519. package/lib/types/components/launchpadActions.d.ts.map +1 -1
  520. package/lib/types/components/launchpadActions.js +26 -4
  521. package/lib/types/components/launchpadParams.d.ts +101 -0
  522. package/lib/types/components/launchpadParams.d.ts.map +1 -0
  523. package/lib/types/components/launchpadParams.js +171 -0
  524. package/lib/types/components/maidPortrait.d.ts +37 -5
  525. package/lib/types/components/maidPortrait.d.ts.map +1 -1
  526. package/lib/types/components/maidPortrait.js +73 -54
  527. package/lib/types/components/messages/AgentMessageFlow.d.ts +20 -0
  528. package/lib/types/components/messages/AgentMessageFlow.d.ts.map +1 -0
  529. package/lib/types/components/messages/AgentMessageFlow.js +37 -0
  530. package/lib/types/components/messages/AssistantThinkingMessage.d.ts +6 -1
  531. package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
  532. package/lib/types/components/messages/AssistantThinkingMessage.js +29 -5
  533. package/lib/types/components/messages/AssistantToolUseMessage.d.ts +11 -2
  534. package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
  535. package/lib/types/components/messages/AssistantToolUseMessage.js +289 -36
  536. package/lib/types/components/messages/TranscriptLeaves.d.ts +85 -0
  537. package/lib/types/components/messages/TranscriptLeaves.d.ts.map +1 -0
  538. package/lib/types/components/messages/TranscriptLeaves.js +74 -0
  539. package/lib/types/components/messages/agentTeam.d.ts +69 -0
  540. package/lib/types/components/messages/agentTeam.d.ts.map +1 -0
  541. package/lib/types/components/messages/agentTeam.js +53 -0
  542. package/lib/types/components/messages/liveOutputLines.d.ts +33 -0
  543. package/lib/types/components/messages/liveOutputLines.d.ts.map +1 -0
  544. package/lib/types/components/messages/liveOutputLines.js +100 -0
  545. package/lib/types/components/messages/subagentTranscript.d.ts +146 -0
  546. package/lib/types/components/messages/subagentTranscript.d.ts.map +1 -0
  547. package/lib/types/components/messages/subagentTranscript.js +304 -0
  548. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +16 -1
  549. package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
  550. package/lib/types/components/questions/AskUserQuestionPanel.js +76 -6
  551. package/lib/types/components/questions/PlanReviewPanel.d.ts +8 -3
  552. package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
  553. package/lib/types/components/questions/PlanReviewPanel.js +11 -6
  554. package/lib/types/components/questions/ProviderModelEditor.d.ts +12 -0
  555. package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -0
  556. package/lib/types/components/questions/ProviderModelEditor.js +266 -0
  557. package/lib/types/components/shimmer.d.ts +26 -0
  558. package/lib/types/components/shimmer.d.ts.map +1 -1
  559. package/lib/types/components/shimmer.js +26 -0
  560. package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -1
  561. package/lib/types/components/sidePanel/InfoPanel.js +13 -8
  562. package/lib/types/components/sidePanel/PanelBar.d.ts +0 -24
  563. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
  564. package/lib/types/components/sidePanel/PanelBar.js +55 -77
  565. package/lib/types/components/sidePanel/PanelStore.d.ts +3 -1
  566. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
  567. package/lib/types/components/sidePanel/PanelStore.js +8 -4
  568. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +3 -10
  569. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
  570. package/lib/types/components/sidePanel/SidePanelColumn.js +9 -12
  571. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -1
  572. package/lib/types/components/sidePanel/TrajectoryPanel.js +78 -14
  573. package/lib/types/components/sidePanel/agentViewStore.d.ts +20 -0
  574. package/lib/types/components/sidePanel/agentViewStore.d.ts.map +1 -0
  575. package/lib/types/components/sidePanel/agentViewStore.js +26 -0
  576. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +50 -0
  577. package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -0
  578. package/lib/types/components/sidePanel/btw/BtwComposer.js +45 -0
  579. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +13 -0
  580. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -0
  581. package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +147 -0
  582. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +14 -0
  583. package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -0
  584. package/lib/types/components/sidePanel/btw/BtwThreadScene.js +131 -0
  585. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +30 -0
  586. package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -0
  587. package/lib/types/components/sidePanel/btw/BtwThreadView.js +87 -0
  588. package/lib/types/components/sidePanel/btw/threads.d.ts +111 -0
  589. package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -0
  590. package/lib/types/components/sidePanel/btw/threads.js +302 -0
  591. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
  592. package/lib/types/components/sidePanel/builtinPanels.js +70 -30
  593. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +4 -46
  594. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -1
  595. package/lib/types/components/sidePanel/companion/CompanionPanel.js +19 -55
  596. package/lib/types/components/sidePanel/companion/mood.d.ts +32 -0
  597. package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -1
  598. package/lib/types/components/sidePanel/companion/mood.js +44 -0
  599. package/lib/types/components/sidePanel/companion/skins.d.ts +34 -0
  600. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
  601. package/lib/types/components/sidePanel/companion/skins.js +203 -29
  602. package/lib/types/components/splashFonts.d.ts +17 -9
  603. package/lib/types/components/splashFonts.d.ts.map +1 -1
  604. package/lib/types/components/splashFonts.js +119 -15
  605. package/lib/types/components/splashLayout.d.ts.map +1 -1
  606. package/lib/types/components/splashLayout.js +3 -1
  607. package/lib/types/components/subagentDetailMemory.d.ts +17 -0
  608. package/lib/types/components/subagentDetailMemory.d.ts.map +1 -0
  609. package/lib/types/components/subagentDetailMemory.js +28 -0
  610. package/lib/types/components/trajectory/Inspector.d.ts.map +1 -1
  611. package/lib/types/components/trajectory/Inspector.js +9 -0
  612. package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
  613. package/lib/types/components/trajectory/Ledger.js +7 -1
  614. package/lib/types/components/trajectory/scope.d.ts +64 -0
  615. package/lib/types/components/trajectory/scope.d.ts.map +1 -0
  616. package/lib/types/components/trajectory/scope.js +88 -0
  617. package/lib/types/components/trajectory/useTrajectoryScope.d.ts +42 -0
  618. package/lib/types/components/trajectory/useTrajectoryScope.d.ts.map +1 -0
  619. package/lib/types/components/trajectory/useTrajectoryScope.js +86 -0
  620. package/lib/types/customTheme.d.ts +4 -6
  621. package/lib/types/customTheme.d.ts.map +1 -1
  622. package/lib/types/customTheme.js +6 -8
  623. package/lib/types/dsh-adapter/approvals.d.ts +18 -5
  624. package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
  625. package/lib/types/dsh-adapter/approvals.js +17 -4
  626. package/lib/types/dsh-adapter/backend/session.d.ts +64 -0
  627. package/lib/types/dsh-adapter/backend/session.d.ts.map +1 -0
  628. package/lib/types/dsh-adapter/backend/session.js +291 -0
  629. package/lib/types/dsh-adapter/backend/translate.d.ts +58 -0
  630. package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -0
  631. package/lib/types/dsh-adapter/backend/translate.js +467 -0
  632. package/lib/types/dsh-adapter/backends.d.ts +49 -0
  633. package/lib/types/dsh-adapter/backends.d.ts.map +1 -0
  634. package/lib/types/dsh-adapter/backends.js +124 -0
  635. package/lib/types/dsh-adapter/channel/action-readiness.d.ts +16 -0
  636. package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
  637. package/lib/types/dsh-adapter/channel/action-readiness.js +109 -0
  638. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +2 -2
  639. package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
  640. package/lib/types/dsh-adapter/channel/background-action.d.ts +2 -2
  641. package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
  642. package/lib/types/dsh-adapter/channel/background-action.js +7 -5
  643. package/lib/types/dsh-adapter/channel/binding-events.d.ts +19 -9
  644. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  645. package/lib/types/dsh-adapter/channel/binding-events.js +58 -135
  646. package/lib/types/dsh-adapter/channel/binding.d.ts +61 -14
  647. package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
  648. package/lib/types/dsh-adapter/channel/binding.js +102 -35
  649. package/lib/types/dsh-adapter/channel/command-completions.d.ts +3 -0
  650. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  651. package/lib/types/dsh-adapter/channel/command-completions.js +33 -4
  652. package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
  653. package/lib/types/dsh-adapter/channel/compaction.js +3 -2
  654. package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
  655. package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
  656. package/lib/types/dsh-adapter/channel/composer-images.js +4 -3
  657. package/lib/types/dsh-adapter/channel/core/actions.d.ts +39 -0
  658. package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -0
  659. package/lib/types/dsh-adapter/channel/core/actions.js +152 -0
  660. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +145 -0
  661. package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -0
  662. package/lib/types/dsh-adapter/channel/core/binding-feed.js +289 -0
  663. package/lib/types/dsh-adapter/channel/core/compose.d.ts +217 -0
  664. package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -0
  665. package/lib/types/dsh-adapter/channel/core/compose.js +938 -0
  666. package/lib/types/dsh-adapter/channel/core/files.d.ts +57 -0
  667. package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -0
  668. package/lib/types/dsh-adapter/channel/core/files.js +45 -0
  669. package/lib/types/dsh-adapter/channel/core/host.d.ts +55 -0
  670. package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -0
  671. package/lib/types/dsh-adapter/channel/core/host.js +116 -0
  672. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +46 -0
  673. package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -0
  674. package/lib/types/dsh-adapter/channel/core/local-actions.js +117 -0
  675. package/lib/types/dsh-adapter/channel/core/local-images.d.ts +20 -0
  676. package/lib/types/dsh-adapter/channel/core/local-images.d.ts.map +1 -0
  677. package/lib/types/dsh-adapter/channel/core/local-images.js +147 -0
  678. package/lib/types/dsh-adapter/channel/core/reports.d.ts +12 -0
  679. package/lib/types/dsh-adapter/channel/core/reports.d.ts.map +1 -0
  680. package/lib/types/dsh-adapter/channel/core/reports.js +77 -0
  681. package/lib/types/dsh-adapter/channel/core/session-controls.d.ts +39 -0
  682. package/lib/types/dsh-adapter/channel/core/session-controls.d.ts.map +1 -0
  683. package/lib/types/dsh-adapter/channel/core/session-controls.js +219 -0
  684. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +174 -0
  685. package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -0
  686. package/lib/types/dsh-adapter/channel/core/session-switch.js +390 -0
  687. package/lib/types/dsh-adapter/channel/core/sessions.d.ts +40 -0
  688. package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -0
  689. package/lib/types/dsh-adapter/channel/core/sessions.js +268 -0
  690. package/lib/types/dsh-adapter/channel/decisions.d.ts +4 -3
  691. package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -1
  692. package/lib/types/dsh-adapter/channel/decisions.js +4 -4
  693. package/lib/types/dsh-adapter/channel/emitter.d.ts +15 -2
  694. package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -1
  695. package/lib/types/dsh-adapter/channel/emitter.js +5 -3
  696. package/lib/types/dsh-adapter/channel/extensions.d.ts +36 -0
  697. package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -0
  698. package/lib/types/dsh-adapter/channel/extensions.js +714 -0
  699. package/lib/types/dsh-adapter/channel/ide-selection.d.ts +1 -10
  700. package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -1
  701. package/lib/types/dsh-adapter/channel/ide-selection.js +4 -46
  702. package/lib/types/dsh-adapter/channel/input-actions.d.ts +27 -4
  703. package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -1
  704. package/lib/types/dsh-adapter/channel/input-actions.js +240 -21
  705. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +21 -5
  706. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  707. package/lib/types/dsh-adapter/channel/input-delivery.js +65 -27
  708. package/lib/types/dsh-adapter/channel/local-actions.d.ts +10 -32
  709. package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
  710. package/lib/types/dsh-adapter/channel/local-actions.js +10 -78
  711. package/lib/types/dsh-adapter/channel/local-fs.d.ts +3 -0
  712. package/lib/types/dsh-adapter/channel/local-fs.d.ts.map +1 -0
  713. package/lib/types/dsh-adapter/channel/local-fs.js +46 -0
  714. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +3 -3
  715. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
  716. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +2 -2
  717. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  718. package/lib/types/dsh-adapter/channel/model-actions.d.ts +3 -3
  719. package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
  720. package/lib/types/dsh-adapter/channel/model-actions.js +38 -5
  721. package/lib/types/dsh-adapter/channel/model-switch.d.ts +2 -2
  722. package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
  723. package/lib/types/dsh-adapter/channel/model-switch.js +9 -6
  724. package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
  725. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
  726. package/lib/types/dsh-adapter/channel/preferences.js +16 -0
  727. package/lib/types/dsh-adapter/channel/projection.d.ts +16 -13
  728. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  729. package/lib/types/dsh-adapter/channel/projection.js +38 -1143
  730. package/lib/types/dsh-adapter/channel/question-record.d.ts +3 -75
  731. package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -1
  732. package/lib/types/dsh-adapter/channel/question-record.js +3 -107
  733. package/lib/types/dsh-adapter/channel/session-activity.d.ts +9 -0
  734. package/lib/types/dsh-adapter/channel/session-activity.d.ts.map +1 -0
  735. package/lib/types/dsh-adapter/channel/session-activity.js +42 -0
  736. package/lib/types/dsh-adapter/channel/session-adoption.d.ts +4 -4
  737. package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -1
  738. package/lib/types/dsh-adapter/channel/session-adoption.js +3 -1
  739. package/lib/types/dsh-adapter/channel/session-fork.d.ts +1 -1
  740. package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
  741. package/lib/types/dsh-adapter/channel/session-fork.js +2 -1
  742. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +7 -3
  743. package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
  744. package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -1
  745. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -9
  746. package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
  747. package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
  748. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
  749. package/lib/types/dsh-adapter/channel/session-reset.js +4 -0
  750. package/lib/types/dsh-adapter/channel/session-resume.d.ts +5 -10
  751. package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
  752. package/lib/types/dsh-adapter/channel/session-resume.js +74 -113
  753. package/lib/types/dsh-adapter/channel/session-rewind.d.ts +4 -4
  754. package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
  755. package/lib/types/dsh-adapter/channel/session-rewind.js +7 -6
  756. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +4 -4
  757. package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
  758. package/lib/types/dsh-adapter/channel/session-tree-actions.js +8 -7
  759. package/lib/types/dsh-adapter/channel/settings-host.d.ts +1 -1
  760. package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
  761. package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
  762. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +5 -1
  763. package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
  764. package/lib/types/dsh-adapter/channel/skill-catalog.js +2 -2
  765. package/lib/types/dsh-adapter/channel/state.d.ts +72 -1
  766. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  767. package/lib/types/dsh-adapter/channel/state.js +7 -3
  768. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +58 -3
  769. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  770. package/lib/types/dsh-adapter/channel/subagent-projection.js +153 -9
  771. package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts +114 -0
  772. package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts.map +1 -0
  773. package/lib/types/dsh-adapter/channel/subagent-transcript.js +279 -0
  774. package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -15
  775. package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
  776. package/lib/types/dsh-adapter/channel/transcript.js +17 -21
  777. package/lib/types/dsh-adapter/channel/types.d.ts +16 -7
  778. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  779. package/lib/types/dsh-adapter/channel/usage.d.ts +3 -23
  780. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
  781. package/lib/types/dsh-adapter/channel/usage.js +5 -111
  782. package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
  783. package/lib/types/dsh-adapter/channel/workspace-actions.js +2 -1
  784. package/lib/types/dsh-adapter/channel.d.ts +17 -8
  785. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  786. package/lib/types/dsh-adapter/channel.js +24 -1059
  787. package/lib/types/dsh-adapter/context-occupancy.d.ts +6 -1
  788. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
  789. package/lib/types/dsh-adapter/context-occupancy.js +6 -1
  790. package/lib/types/dsh-adapter/decision-guard.d.ts +24 -0
  791. package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
  792. package/lib/types/dsh-adapter/decision-guard.js +44 -0
  793. package/lib/types/dsh-adapter/extension-events.d.ts +4 -1
  794. package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
  795. package/lib/types/dsh-adapter/extension-events.js +22 -10
  796. package/lib/types/dsh-adapter/index.d.ts +41 -3
  797. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  798. package/lib/types/dsh-adapter/index.js +28 -1
  799. package/lib/types/dsh-adapter/jobs.d.ts +5 -3
  800. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  801. package/lib/types/dsh-adapter/jobs.js +53 -14
  802. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -16
  803. package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
  804. package/lib/types/dsh-adapter/migrate/parse/jsonl.js +3 -29
  805. package/lib/types/dsh-adapter/oauth-credential-source.d.ts +34 -0
  806. package/lib/types/dsh-adapter/oauth-credential-source.d.ts.map +1 -0
  807. package/lib/types/dsh-adapter/oauth-credential-source.js +66 -0
  808. package/lib/types/dsh-adapter/plugin.d.ts +38 -2
  809. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  810. package/lib/types/dsh-adapter/plugin.js +546 -110
  811. package/lib/types/dsh-adapter/provider-model-capabilities.d.ts +10 -0
  812. package/lib/types/dsh-adapter/provider-model-capabilities.d.ts.map +1 -0
  813. package/lib/types/dsh-adapter/provider-model-capabilities.js +80 -0
  814. package/lib/types/dsh-adapter/providerWizard.d.ts +8 -2
  815. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  816. package/lib/types/dsh-adapter/providerWizard.js +118 -52
  817. package/lib/types/dsh-adapter/questions.d.ts +29 -124
  818. package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
  819. package/lib/types/dsh-adapter/questions.js +33 -267
  820. package/lib/types/dsh-adapter/recap.d.ts +3 -15
  821. package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
  822. package/lib/types/dsh-adapter/recap.js +3 -46
  823. package/lib/types/dsh-adapter/sanitize.d.ts +4 -44
  824. package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -1
  825. package/lib/types/dsh-adapter/sanitize.js +4 -84
  826. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +3 -1
  827. package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -1
  828. package/lib/types/dsh-adapter/session-mount-heartbeat.js +4 -2
  829. package/lib/types/dsh-adapter/sessions/digest.d.ts +18 -3
  830. package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
  831. package/lib/types/dsh-adapter/sessions/digest.js +60 -27
  832. package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
  833. package/lib/types/dsh-adapter/sessions/list.js +6 -4
  834. package/lib/types/dsh-adapter/sessions/recovery.d.ts +2 -2
  835. package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -1
  836. package/lib/types/dsh-adapter/sessions/recovery.js +23 -14
  837. package/lib/types/dsh-adapter/sessions/store.d.ts +2 -0
  838. package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
  839. package/lib/types/dsh-adapter/sessions/store.js +1 -0
  840. package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
  841. package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
  842. package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
  843. package/lib/types/dsh-adapter/sideQuestion.js +3 -13
  844. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  845. package/lib/types/dsh-adapter/subagents.js +7 -0
  846. package/lib/types/dsh-adapter/themes.d.ts +1 -1
  847. package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
  848. package/lib/types/dsh-adapter/trajectory/agent-source.d.ts +84 -0
  849. package/lib/types/dsh-adapter/trajectory/agent-source.d.ts.map +1 -0
  850. package/lib/types/dsh-adapter/trajectory/agent-source.js +601 -0
  851. package/lib/types/dsh-adapter/trajectory/guards.d.ts +31 -1
  852. package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
  853. package/lib/types/dsh-adapter/trajectory/guards.js +28 -0
  854. package/lib/types/dsh-adapter/trajectory/index.d.ts +3 -1
  855. package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -1
  856. package/lib/types/dsh-adapter/trajectory/index.js +1 -0
  857. package/lib/types/dsh-adapter/trajectory/inspect.d.ts +7 -0
  858. package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
  859. package/lib/types/dsh-adapter/trajectory/inspect.js +70 -2
  860. package/lib/types/dsh-adapter/trajectory/projection.d.ts +4 -0
  861. package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
  862. package/lib/types/dsh-adapter/trajectory/projection.js +36 -0
  863. package/lib/types/dsh-adapter/trajectory/types.d.ts +13 -0
  864. package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
  865. package/lib/types/effortPrefs.d.ts +7 -0
  866. package/lib/types/effortPrefs.d.ts.map +1 -1
  867. package/lib/types/effortPrefs.js +11 -2
  868. package/lib/types/handoffAck.d.ts +57 -0
  869. package/lib/types/handoffAck.d.ts.map +1 -0
  870. package/lib/types/handoffAck.js +154 -0
  871. package/lib/types/handoffEvents.d.ts +52 -0
  872. package/lib/types/handoffEvents.d.ts.map +1 -0
  873. package/lib/types/handoffEvents.js +128 -0
  874. package/lib/types/i18n.d.ts +3189 -68
  875. package/lib/types/i18n.d.ts.map +1 -1
  876. package/lib/types/i18n.js +855 -9
  877. package/lib/types/ink/colorize.d.ts.map +1 -1
  878. package/lib/types/ink/colorize.js +8 -2
  879. package/lib/types/ink/components/AlternateScreen.d.ts +12 -1
  880. package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
  881. package/lib/types/ink/components/AlternateScreen.js +25 -4
  882. package/lib/types/ink/components/App.d.ts +5 -1
  883. package/lib/types/ink/components/App.d.ts.map +1 -1
  884. package/lib/types/ink/components/App.js +52 -5
  885. package/lib/types/ink/components/Image.d.ts +8 -1
  886. package/lib/types/ink/components/Image.d.ts.map +1 -1
  887. package/lib/types/ink/components/Image.js +2 -2
  888. package/lib/types/ink/components/Text.d.ts +8 -1
  889. package/lib/types/ink/components/Text.d.ts.map +1 -1
  890. package/lib/types/ink/components/Text.js +11 -1
  891. package/lib/types/ink/dom.d.ts.map +1 -1
  892. package/lib/types/ink/dom.js +75 -3
  893. package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
  894. package/lib/types/ink/hooks/use-input.js +9 -4
  895. package/lib/types/ink/ink.d.ts.map +1 -1
  896. package/lib/types/ink/ink.js +8 -2
  897. package/lib/types/ink/kitty-graphics.d.ts +7 -2
  898. package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
  899. package/lib/types/ink/kitty-graphics.js +15 -7
  900. package/lib/types/ink/node-cache.d.ts +15 -1
  901. package/lib/types/ink/node-cache.d.ts.map +1 -1
  902. package/lib/types/ink/node-cache.js +4 -1
  903. package/lib/types/ink/output.d.ts.map +1 -1
  904. package/lib/types/ink/output.js +2 -0
  905. package/lib/types/ink/parse-keypress.d.ts +13 -0
  906. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  907. package/lib/types/ink/parse-keypress.js +438 -19
  908. package/lib/types/ink/reconciler.d.ts.map +1 -1
  909. package/lib/types/ink/reconciler.js +9 -0
  910. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  911. package/lib/types/ink/render-node-to-output.js +200 -4
  912. package/lib/types/ink/render-stats.d.ts +35 -0
  913. package/lib/types/ink/render-stats.d.ts.map +1 -0
  914. package/lib/types/ink/render-stats.js +53 -0
  915. package/lib/types/ink/sixel-codec.d.ts +11 -1
  916. package/lib/types/ink/sixel-codec.d.ts.map +1 -1
  917. package/lib/types/ink/sixel-codec.js +10 -3
  918. package/lib/types/ink/sixel-graphics.js +2 -2
  919. package/lib/types/ink/styles.d.ts +46 -0
  920. package/lib/types/ink/styles.d.ts.map +1 -1
  921. package/lib/types/ink/terminal-image.d.ts +7 -0
  922. package/lib/types/ink/terminal-image.d.ts.map +1 -1
  923. package/lib/types/ink/terminal-querier.d.ts +1 -1
  924. package/lib/types/ink/terminal-querier.js +4 -4
  925. package/lib/types/ink/text-decoration.d.ts +49 -0
  926. package/lib/types/ink/text-decoration.d.ts.map +1 -0
  927. package/lib/types/ink/text-decoration.js +235 -0
  928. package/lib/types/ink/update-overflow-guard.d.ts +9 -0
  929. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  930. package/lib/types/ink/update-overflow-guard.js +41 -0
  931. package/lib/types/ink/wrap-text.d.ts.map +1 -1
  932. package/lib/types/ink/wrap-text.js +5 -1
  933. package/lib/types/kernelPrefs.d.ts +51 -0
  934. package/lib/types/kernelPrefs.d.ts.map +1 -0
  935. package/lib/types/kernelPrefs.js +126 -0
  936. package/lib/types/modelRecents.d.ts +10 -2
  937. package/lib/types/modelRecents.d.ts.map +1 -1
  938. package/lib/types/modelRecents.js +20 -7
  939. package/lib/types/screens/AgentTranscriptScene.d.ts +42 -0
  940. package/lib/types/screens/AgentTranscriptScene.d.ts.map +1 -0
  941. package/lib/types/screens/AgentTranscriptScene.js +269 -0
  942. package/lib/types/screens/Chat.d.ts +45 -7
  943. package/lib/types/screens/Chat.d.ts.map +1 -1
  944. package/lib/types/screens/Chat.js +625 -113
  945. package/lib/types/screens/Launchpad.d.ts +24 -7
  946. package/lib/types/screens/Launchpad.d.ts.map +1 -1
  947. package/lib/types/screens/Launchpad.js +147 -28
  948. package/lib/types/screens/SessionSupervisor.d.ts +3 -3
  949. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  950. package/lib/types/screens/SessionSupervisor.js +69 -5
  951. package/lib/types/screens/Settings.d.ts.map +1 -1
  952. package/lib/types/screens/Settings.js +211 -7
  953. package/lib/types/screens/StatusLine.d.ts +40 -1
  954. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  955. package/lib/types/screens/StatusLine.js +131 -19
  956. package/lib/types/screens/StatusMetrics.d.ts +53 -17
  957. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  958. package/lib/types/screens/StatusMetrics.js +141 -30
  959. package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
  960. package/lib/types/screens/TrajectoryScene.js +74 -12
  961. package/lib/types/screens/chat/backendCommands.d.ts +37 -0
  962. package/lib/types/screens/chat/backendCommands.d.ts.map +1 -0
  963. package/lib/types/screens/chat/backendCommands.js +51 -0
  964. package/lib/types/screens/chat/useBackendChannels.d.ts +20 -0
  965. package/lib/types/screens/chat/useBackendChannels.d.ts.map +1 -0
  966. package/lib/types/screens/chat/useBackendChannels.js +117 -0
  967. package/lib/types/screens/chat/useKernelPicker.d.ts +23 -0
  968. package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -0
  969. package/lib/types/screens/chat/useKernelPicker.js +72 -0
  970. package/lib/types/screens/chatOverlay.d.ts +32 -2
  971. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  972. package/lib/types/screens/chatOverlay.js +9 -0
  973. package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -1
  974. package/lib/types/screens/sessionSupervisor/useForeignSessions.js +5 -1
  975. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +14 -0
  976. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  977. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -22
  978. package/lib/types/sessionHistory.d.ts +18 -1
  979. package/lib/types/sessionHistory.d.ts.map +1 -1
  980. package/lib/types/sessionHistory.js +46 -4
  981. package/lib/types/sessionPins.d.ts +7 -0
  982. package/lib/types/sessionPins.d.ts.map +1 -1
  983. package/lib/types/sessionPins.js +9 -0
  984. package/lib/types/sessions/resumeFailure.d.ts.map +1 -1
  985. package/lib/types/sessions/resumeFailure.js +2 -1
  986. package/lib/types/settings/definitions.d.ts +74 -0
  987. package/lib/types/settings/definitions.d.ts.map +1 -1
  988. package/lib/types/settings/definitions.js +50 -4
  989. package/lib/types/terminal-utils/hyperlink.d.ts +2 -2
  990. package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -1
  991. package/lib/types/terminal-utils/hyperlink.js +21 -4
  992. package/lib/types/terminal-utils/markdown.d.ts +34 -6
  993. package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
  994. package/lib/types/terminal-utils/markdown.js +257 -66
  995. package/lib/types/theme.d.ts +49 -8
  996. package/lib/types/theme.d.ts.map +1 -1
  997. package/lib/types/theme.js +514 -18
  998. package/lib/types/tips.js +2 -2
  999. package/lib/types/trajectory/effortIgnition.d.ts +25 -7
  1000. package/lib/types/trajectory/effortIgnition.d.ts.map +1 -1
  1001. package/lib/types/trajectory/effortIgnition.js +106 -34
  1002. package/lib/types/trajectory/window.d.ts +26 -0
  1003. package/lib/types/trajectory/window.d.ts.map +1 -0
  1004. package/lib/types/trajectory/window.js +27 -0
  1005. package/lib/types/tuiDisplayPrefs.d.ts +38 -1
  1006. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  1007. package/lib/types/tuiDisplayPrefs.js +45 -1
  1008. package/lib/types/update.d.ts +88 -3
  1009. package/lib/types/update.d.ts.map +1 -1
  1010. package/lib/types/update.js +285 -18
  1011. package/lib/types/utils/crashDetail.d.ts +56 -0
  1012. package/lib/types/utils/crashDetail.d.ts.map +1 -0
  1013. package/lib/types/utils/crashDetail.js +175 -0
  1014. package/lib/types/utils/imageResize.d.ts +9 -23
  1015. package/lib/types/utils/imageResize.d.ts.map +1 -1
  1016. package/lib/types/utils/imageResize.js +24 -20
  1017. package/lib/types/utils/inputPaste.d.ts +9 -8
  1018. package/lib/types/utils/inputPaste.d.ts.map +1 -1
  1019. package/lib/types/utils/inputPaste.js +53 -16
  1020. package/lib/types/utils/jsonl.d.ts +24 -0
  1021. package/lib/types/utils/jsonl.d.ts.map +1 -0
  1022. package/lib/types/utils/jsonl.js +36 -0
  1023. package/package.json +18 -2
@@ -104,13 +104,18 @@ export declare function contextPressureUsedTokens(view: ContextPressureView): nu
104
104
  * @param projected - Cached `contextPressure` value, `undefined` without a meter.
105
105
  * @param sample - Last settled request's billed usage (the fallback numerator).
106
106
  * @param requestWindow - `request/context` capacity (the fallback denominator).
107
+ * @param backendUsage - Backend-measured occupancy; preferred over billed usage
108
+ * when DSH's projection has no reading.
107
109
  * @returns the reading, or `undefined` when neither path knows anything.
108
110
  */
109
111
  export declare function resolveContextOccupancy(projected: ContextPressureView | undefined, sample: {
110
112
  input: number;
111
113
  cacheRead: number;
112
114
  cacheWrite: number;
113
- } | undefined, requestWindow: number | undefined): ContextOccupancy | undefined;
115
+ } | undefined, requestWindow: number | undefined, backendUsage?: {
116
+ readonly used: number;
117
+ readonly max?: number;
118
+ }): ContextOccupancy | undefined;
114
119
  /**
115
120
  * The latest `contextPressure` value for the session on screen.
116
121
  *
@@ -1 +1 @@
1
- {"version":3,"file":"context-occupancy.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/context-occupancy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-occupancy.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/context-occupancy.ts"],"names":[],"mappings":"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"}
@@ -94,14 +94,19 @@ export function contextPressureUsedTokens(view) {
94
94
  * @param projected - Cached `contextPressure` value, `undefined` without a meter.
95
95
  * @param sample - Last settled request's billed usage (the fallback numerator).
96
96
  * @param requestWindow - `request/context` capacity (the fallback denominator).
97
+ * @param backendUsage - Backend-measured occupancy; preferred over billed usage
98
+ * when DSH's projection has no reading.
97
99
  * @returns the reading, or `undefined` when neither path knows anything.
98
100
  */
99
- export function resolveContextOccupancy(projected, sample, requestWindow) {
101
+ export function resolveContextOccupancy(projected, sample, requestWindow, backendUsage) {
100
102
  const contextWindow = projected?.contextWindow ?? requestWindow;
101
103
  const projectedUsed = projected === undefined ? undefined : contextPressureUsedTokens(projected);
102
104
  if (projectedUsed !== undefined) {
103
105
  return { usedTokens: projectedUsed, contextWindow, source: 'projection' };
104
106
  }
107
+ if (backendUsage !== undefined) {
108
+ return { usedTokens: backendUsage.used, contextWindow: backendUsage.max ?? contextWindow, source: 'backend' };
109
+ }
105
110
  if (sample === undefined)
106
111
  return undefined;
107
112
  return {
@@ -84,6 +84,30 @@ export declare function decisionRegistryOf(ctx: Context): DecisionRegistry;
84
84
  export declare function decisionHandlersOf(ctx: Context, event: string, payloadScope?: string): readonly RegisteredDecisionHandler[];
85
85
  /** Host-only registration used by TuiPluginHostRuntime. */
86
86
  export declare function registerDecisionHandler(pluginCtx: Context, identity: VerifiedComponentIdentity, event: string, listener: (payload: Record<string, unknown>) => unknown, options?: DecisionRegistrationOptions, onRelease?: () => void): () => boolean;
87
+ /** Liveness re-check for a handler snapshot taken before an `await`.
88
+ *
89
+ * Decision dispatch awaits plugin handlers, and both grant revocation and
90
+ * deactivation release their registration while that await is pending. A
91
+ * snapshot captured at loop start therefore cannot authorize a *late* return
92
+ * value: a revoked or unloaded component must not be able to veto or rewrite a
93
+ * user flow with an answer that arrives after its authority ended.
94
+ *
95
+ * Liveness is the conjunction of two facts, both cheap and both read live:
96
+ *
97
+ * - a row for this activation/event/order is still installed (deactivation and
98
+ * grant revocation both release the registration, so a released row is gone);
99
+ * - the grant still allows this principal at the effective scope (covers a
100
+ * store change whose change-watcher has not run yet, or a store with no
101
+ * watcher at all).
102
+ *
103
+ * The installed check compares the row's own identity rather than the map's
104
+ * internal key: the registry is host-owned storage, and whether a handler is
105
+ * still live must not depend on how a row happens to be keyed inside it. In
106
+ * production `registerDecisionHandler` is the only writer and keys rows by
107
+ * `activation\0event\0order`; keeping the check identity-based leaves that as
108
+ * an implementation detail instead of a behavioural requirement.
109
+ */
110
+ export declare function isDecisionHandlerLive(ctx: Context, handler: RegisteredDecisionHandler, payloadScope?: string): boolean;
87
111
  /** Execute ctx.on for one host-mediated decision registration. */
88
112
  export declare function withDecisionRegistration<T>(ctx: Context, callback: () => T): T;
89
113
  export declare function decisionHandlerMetadataOf(listener: Function): DecisionHandlerMetadata | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"decision-guard.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/decision-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-guard.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/decision-guard.ts"],"names":[],"mappings":"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"}
@@ -276,6 +276,50 @@ export function registerDecisionHandler(pluginCtx, identity, event, listener, op
276
276
  }
277
277
  return release;
278
278
  }
279
+ /** Liveness re-check for a handler snapshot taken before an `await`.
280
+ *
281
+ * Decision dispatch awaits plugin handlers, and both grant revocation and
282
+ * deactivation release their registration while that await is pending. A
283
+ * snapshot captured at loop start therefore cannot authorize a *late* return
284
+ * value: a revoked or unloaded component must not be able to veto or rewrite a
285
+ * user flow with an answer that arrives after its authority ended.
286
+ *
287
+ * Liveness is the conjunction of two facts, both cheap and both read live:
288
+ *
289
+ * - a row for this activation/event/order is still installed (deactivation and
290
+ * grant revocation both release the registration, so a released row is gone);
291
+ * - the grant still allows this principal at the effective scope (covers a
292
+ * store change whose change-watcher has not run yet, or a store with no
293
+ * watcher at all).
294
+ *
295
+ * The installed check compares the row's own identity rather than the map's
296
+ * internal key: the registry is host-owned storage, and whether a handler is
297
+ * still live must not depend on how a row happens to be keyed inside it. In
298
+ * production `registerDecisionHandler` is the only writer and keys rows by
299
+ * `activation\0event\0order`; keeping the check identity-based leaves that as
300
+ * an implementation detail instead of a behavioural requirement.
301
+ */
302
+ export function isDecisionHandlerLive(ctx, handler, payloadScope) {
303
+ const registry = registryFor(ctx);
304
+ const rows = registry.handlers.get(handler.event);
305
+ if (rows === undefined)
306
+ return false;
307
+ let installed = false;
308
+ for (const row of rows.values()) {
309
+ if (row.activationId === handler.activationId
310
+ && row.event === handler.event
311
+ && row.order === handler.order) {
312
+ installed = true;
313
+ break;
314
+ }
315
+ }
316
+ if (!installed)
317
+ return false;
318
+ const permission = eventPermission(handler.event);
319
+ if (permission === undefined)
320
+ return true;
321
+ return registry.grants.allows({ componentId: handler.componentId, activationId: handler.activationId }, permission, payloadScope ?? handler.scope);
322
+ }
279
323
  /** Locale-independent comparator for the declared decision order policy.
280
324
  * `localeCompare()` can vary with host ICU settings, which would make the
281
325
  * winner depend on the machine running the same admitted component set. */
@@ -41,7 +41,10 @@ export declare const DECISION_TOTAL_TIMEOUT_MS = 5000;
41
41
  * logged and skipped like any other invalid shape;
42
42
  * - "no opinion" (undefined/null/false) and invalid shapes are logged and
43
43
  * the chain CONTINUES;
44
- * - the first listener whose NORMALIZED decision is non-undefined wins.
44
+ * - the first listener whose NORMALIZED decision is non-undefined wins;
45
+ * - a decision that arrives after the handler was released (grant revoked,
46
+ * activation unloaded) is DISCARDED and the chain continues, because a
47
+ * handler is awaited: authority can end while its answer is still pending.
45
48
  *
46
49
  * Handlers come from the host-mediated DecisionEvents registry. Raw Cordis
47
50
  * `ctx.on` listeners are intentionally absent from this path.
@@ -1 +1 @@
1
- {"version":3,"file":"extension-events.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/extension-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-events.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/extension-events.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { cleanScalarText } from './sanitize.js';
2
- import { DECISION_EVENT_PERMISSIONS, decisionHandlersOf, decisionRegistryOf, } from './decision-guard.js';
2
+ import { DECISION_EVENT_PERMISSIONS, decisionHandlersOf, decisionRegistryOf, isDecisionHandlerLive, } from './decision-guard.js';
3
3
  /** Toast-bound plugin text (veto reasons) is render-path data: sanitized
4
4
  * with the one shared implementation, capped at toast width. */
5
5
  const NOTICE_CELLS = 200;
@@ -64,7 +64,10 @@ async function runBounded(task, timeoutMs) {
64
64
  * logged and skipped like any other invalid shape;
65
65
  * - "no opinion" (undefined/null/false) and invalid shapes are logged and
66
66
  * the chain CONTINUES;
67
- * - the first listener whose NORMALIZED decision is non-undefined wins.
67
+ * - the first listener whose NORMALIZED decision is non-undefined wins;
68
+ * - a decision that arrives after the handler was released (grant revoked,
69
+ * activation unloaded) is DISCARDED and the chain continues, because a
70
+ * handler is awaited: authority can end while its answer is still pending.
68
71
  *
69
72
  * Handlers come from the host-mediated DecisionEvents registry. Raw Cordis
70
73
  * `ctx.on` listeners are intentionally absent from this path.
@@ -86,13 +89,12 @@ export async function dispatchTuiDecision(ctx, name, payload, normalize) {
86
89
  };
87
90
  const started = Date.now();
88
91
  for (const handler of listeners) {
89
- const permission = DECISION_EVENT_PERMISSIONS[name];
90
- const principal = { componentId: handler.componentId, activationId: handler.activationId };
91
- if (permission !== undefined
92
- // Re-check the handler's declared scope at the concrete payload scope.
93
- // GrantStore applies parent-scope grants and narrow deny precedence, so
94
- // an event-wide grant cannot bypass a revoked session.
95
- && !decisionRegistryOf(ctx).grants.allows(principal, permission, scope ?? handler.scope)) {
92
+ // The handler's declared scope and its live grant, checked at the concrete
93
+ // payload scope. GrantStore applies parent-scope grants and narrow deny
94
+ // precedence, so an event-wide grant cannot bypass a revoked session; the
95
+ // same check re-runs after the await below.
96
+ const effectiveScope = scope ?? handler.scope;
97
+ if (!isDecisionHandlerLive(ctx, handler, effectiveScope)) {
96
98
  log(`dsh-tui: ${name} handler from Component "${handler.componentId}" skipped after grant revocation`);
97
99
  continue;
98
100
  }
@@ -123,8 +125,18 @@ export async function dispatchTuiDecision(ctx, name, payload, normalize) {
123
125
  log(`dsh-tui: ${name} listener returned a value that threw during validation; ignored: %o`, error);
124
126
  continue;
125
127
  }
126
- if (decision !== undefined)
128
+ if (decision !== undefined) {
129
+ // The handler was awaited, so re-check liveness before accepting its
130
+ // answer: a grant revoked or an activation unloaded during the await
131
+ // releases the registration, and an answer from a released handler must
132
+ // not win the chain. Continuing (rather than returning undefined) keeps
133
+ // the released handler "as if unregistered".
134
+ if (!isDecisionHandlerLive(ctx, handler, effectiveScope)) {
135
+ log(`dsh-tui: ${name} handler from Component "${handler.componentId}" answered after its grant or activation was released; decision discarded`);
136
+ continue;
137
+ }
127
138
  return decision;
139
+ }
128
140
  }
129
141
  return undefined;
130
142
  }
@@ -9,9 +9,11 @@
9
9
  import type { Context } from '@deepseek-ai/cordis';
10
10
  import Schema from '@deepseek-ai/schemastery';
11
11
  import type { SessionModeSpec } from '../sessionModes.js';
12
- import { type ImageBacking, type MathImageBacking, type MathImageScale, type MathRendering, type PageMarginSetting, type ScrollGutterMode, type StatusBarConfig, type ToolBackground } from '../tuiDisplayPrefs.js';
12
+ import { type KernelBackendId } from '../kernelPrefs.js';
13
+ import { type CodeFrameStyle, type ImageBacking, type MathImageBacking, type MathImageScale, type MathRendering, type PageMarginSetting, type ScrollGutterMode, type StatusBarConfig, type ToolBackground } from '../tuiDisplayPrefs.js';
13
14
  import { type ShortcutActionId } from '../utils/keymap.js';
14
15
  import { type SplashFontSetting } from '../components/splashFonts.js';
16
+ import { type BrandSetting } from '../branding.js';
15
17
  import { type RuntimeConfig } from './compat/settings.js';
16
18
  export declare const name = "dsh-tui";
17
19
  export declare const inject: string[];
@@ -22,6 +24,13 @@ export declare const inject: string[];
22
24
  export interface Config {
23
25
  /** Existing session to attach; a fresh session is created when absent. */
24
26
  sessionId?: string;
27
+ /** Agent backend the session runs on: `dsh` (default), the DeepSeek
28
+ * Harness agent; `claude`, the experimental Claude Agent backend driving
29
+ * the local Claude CLI through the Claude Agent SDK (optional peer
30
+ * `@anthropic-ai/claude-agent-sdk`); `codex`, the experimental Codex
31
+ * backend driving the user's own `codex` CLI over `codex app-server`.
32
+ * `dsh-tui --backend <id>` sets it through `DSH_TUI_BACKEND`. */
33
+ backend?: KernelBackendId;
25
34
  /** LLM provider route. The route resolves atomically (issue #67): when
26
35
  * cordis.yml names BOTH `provider` and `model`, that pair wins; otherwise
27
36
  * the `/model` choice persisted in `~/.dsh-tui/model.json` wins whole;
@@ -55,6 +64,10 @@ export interface Config {
55
64
  * id from `components/splashFonts.ts` (`bold`/`square`/…) pinning that one
56
65
  * face. An unknown value falls back to `daily`. */
57
66
  splashFont?: SplashFontSetting;
67
+ /** Brand look of the splash and theme (settings `dsh-tui.brand`): `auto`
68
+ * (the default) follows the active backend — Claude boots orange;
69
+ * `deepseek`/`claude` pin one look. Junk normalizes to `auto`. */
70
+ brand?: BrandSetting;
58
71
  /** Swap the header's pixel whale for the static maid portrait. */
59
72
  whaleGirl?: boolean;
60
73
  /** Reduce decorative header content and colors. */
@@ -119,6 +132,11 @@ export interface Config {
119
132
  * `+N lines` hint; Ctrl+O / clicking the card expands it. Default off —
120
133
  * the full title keeps rendering. */
121
134
  foldTerminalCommand?: boolean;
135
+ /** Turn-usage ledger row (settings `dsh-tui.turnUsageRow`): the quiet
136
+ * right-aligned line that closes each turn in the transcript (tokens
137
+ * in/out, cache split, span, retries). Off by default; the ledger data
138
+ * feeds /tokens, /status and the footer hover regardless. */
139
+ turnUsageRow?: boolean;
122
140
  /** Show the session name as a chip on the prompt top border's right side
123
141
  * (settings `dsh-tui.promptSessionLabel`); off by default. */
124
142
  promptSessionLabel?: boolean;
@@ -139,6 +157,13 @@ export interface Config {
139
157
  * than the viewport or of an unsupported type keeps the fenced source.
140
158
  * On by default; off always shows the source. */
141
159
  mermaidDiagrams?: boolean;
160
+ /** Code-frame shape (settings `dsh-tui.codeFrameStyle`): `light`
161
+ * (default) is the open rail frame — corner + language label on top,
162
+ * a left rail with one padding column per row, no right wall or
163
+ * bottom edge; `full` closes the box with a right wall (continuous
164
+ * across wrapped rows) and a bottom edge. The narrow fallback (net
165
+ * body width < 8) always stays the plain ANSI fence. */
166
+ codeFrameStyle?: CodeFrameStyle;
142
167
  /** LaTeX math (settings `dsh-tui.mathRendering`): `$…$` / `\(…\)` inline
143
168
  * and `$$…$$` / `\[…\]` blocks in replies. `auto` (default) uses the best
144
169
  * available renderer — today Unicode text: Greek and operator symbols,
@@ -182,8 +207,8 @@ export interface Config {
182
207
  /** Chat column as a fraction of the content width, clamped to 0.1–0.95
183
208
  * (default 0.68); +/- while the panel is focused nudges it live. */
184
209
  ratio?: number;
185
- /** Enabled panel ids, comma-separated, in PanelBar order (default
186
- * `todo,jobs,agents`; add `companion` to enable the pet panel). A
210
+ /** Enabled panel ids, comma-separated, in PanelBar order (default:
211
+ * all eight built-in panels). A
187
212
  * malformed id is dropped, an unknown one survives for a plugin. */
188
213
  panels?: string;
189
214
  };
@@ -194,6 +219,16 @@ export interface Config {
194
219
  * layered pixel whale). Unknown ids normalize to deepy. */
195
220
  skin?: string;
196
221
  };
222
+ /** btw thread context (settings `dsh-tui.btw.*`): how much of the side
223
+ * thread follows into the next ask. Members normalize (turns clamp
224
+ * 1-8, budget clamps 1k-200k), so junk cannot wedge the thread. */
225
+ btw?: {
226
+ /** Completed Q/A pairs carried into a follow-up ask, 1-8 (default 4). */
227
+ contextTurns?: number;
228
+ /** Total character budget of that carried context (default 24000;
229
+ * the per-answer cap derives internally as min(8k, budget/2)). */
230
+ contextBudget?: number;
231
+ };
197
232
  /** Built-in action-shortcut overrides (`paste: 'alt+v'`), keyed by action
198
233
  * id (see the keymap utility). Combos are `ctrl+`/`alt+`/`shift+` plus a
199
234
  * key; several combos may be comma-separated. Unset actions keep their
@@ -206,6 +241,9 @@ export interface Config {
206
241
  * default/plan/full cycle (see sessionModes.ts). */
207
242
  modes?: SessionModeSpec[];
208
243
  }
244
+ /** The backend a configured value names: case-insensitive, trimmed;
245
+ * empty or unknown → undefined (the DSH default). */
246
+ export declare function normalizeBackendChoice(value: unknown): KernelBackendId | undefined;
209
247
  export declare const Config: Schema<Config, RuntimeConfig<Config>>;
210
248
  /**
211
249
  * Start the interactive TUI front door, delegating to the JSX implementation
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import Schema from '@deepseek-ai/schemastery';
2
- import { DEFAULT_COMPANION_SKIN, DEFAULT_SIDE_PANEL_IDS, DEFAULT_STATUS_BAR, normalizeCompanionSkin, normalizePageMargin, normalizeSidePanelPanels, normalizeSidePanelRatio } from '../tuiDisplayPrefs.js';
2
+ import { isKernelId } from '../kernelPrefs.js';
3
+ import { BTW_CONTEXT_BUDGET_DEFAULT, BTW_CONTEXT_TURNS_DEFAULT, DEFAULT_COMPANION_SKIN, DEFAULT_SIDE_PANEL_IDS, DEFAULT_STATUS_BAR, normalizeBtwContextBudget, normalizeBtwContextTurns, normalizeCompanionSkin, normalizePageMargin, normalizeSidePanelPanels, normalizeSidePanelRatio } from '../tuiDisplayPrefs.js';
3
4
  import { SHORTCUT_ACTIONS } from '../utils/keymap.js';
4
5
  import { normalizeSplashFont } from '../components/splashFonts.js';
6
+ import { normalizeBrandSetting } from '../branding.js';
5
7
  import { editableConfig } from './compat/settings.js';
6
8
  import { EDITABLE_CONFIG_KEYS } from '../settings/definitions.js';
7
9
  export const name = 'dsh-tui';
@@ -15,8 +17,20 @@ export const name = 'dsh-tui';
15
17
  // row-level inject purely as an ordering guarantee when the row exists; when
16
18
  // it does not, plugin.ts/channel.ts fall back to a local workspace runtime.
17
19
  export const inject = ['agents'];
20
+ /** The backend a configured value names: case-insensitive, trimmed;
21
+ * empty or unknown → undefined (the DSH default). */
22
+ export function normalizeBackendChoice(value) {
23
+ if (typeof value !== 'string')
24
+ return undefined;
25
+ const id = value.trim().toLowerCase();
26
+ return isKernelId(id) ? id : undefined;
27
+ }
18
28
  export const Config = editableConfig(Schema.object({
19
29
  sessionId: Schema.string().required(false),
30
+ // A transform, not a union: the row reads `DSH_TUI_BACKEND`, and a stray
31
+ // export (`Claude`, a typo) must not fail the whole boot — case and blanks
32
+ // are normalized and anything unknown means the default (plugin.ts warns).
33
+ backend: Schema.transform(Schema.string(), value => normalizeBackendChoice(value)),
20
34
  // No schema defaults on the route: a `.default()` here would make an
21
35
  // unset key indistinguishable from an explicit cordis.yml choice and the
22
36
  // persisted `/model` preference could never win (issue #30). The defaults
@@ -37,6 +51,9 @@ export const Config = editableConfig(Schema.object({
37
51
  // pageMargin, whose unset value also reads `undefined`), so `daily` comes
38
52
  // from `normalizeSplashFont` at every read site.
39
53
  splashFont: Schema.transform(Schema.string(), value => normalizeSplashFont(value)),
54
+ // 同 splashFont 的 transform 而非 union:cordis.yml 保持决定权,`auto`
55
+ // 的默认值由 `normalizeBrandSetting` 在每个读取点给出。
56
+ brand: Schema.transform(Schema.string(), value => normalizeBrandSetting(value)),
40
57
  whaleGirl: Schema.boolean().default(false),
41
58
  minimal: Schema.boolean().default(false),
42
59
  activity: Schema.boolean().default(true),
@@ -56,10 +73,12 @@ export const Config = editableConfig(Schema.object({
56
73
  // the transform, so every parsed config carries a valid setting.
57
74
  pageMargin: Schema.transform(Schema.string().default('normal'), value => normalizePageMargin(value)),
58
75
  foldTerminalCommand: Schema.boolean().default(false),
76
+ turnUsageRow: Schema.boolean().default(false),
59
77
  promptSessionLabel: Schema.boolean().default(false),
60
78
  expandEditor: Schema.boolean().default(true),
61
79
  smoothStreaming: Schema.boolean().default(true),
62
80
  mermaidDiagrams: Schema.boolean().default(true),
81
+ codeFrameStyle: Schema.union(['light', 'full']),
63
82
  mathRendering: Schema.union(['auto', 'image', 'unicode', 'source']),
64
83
  mathImageScale: Schema.union(['auto', 'large', 'xlarge']),
65
84
  mathImageBacking: Schema.union(['transparent', 'terminal']),
@@ -107,6 +126,14 @@ export const Config = editableConfig(Schema.object({
107
126
  companion: Schema.object({
108
127
  skin: Schema.transform(Schema.string().default(DEFAULT_COMPANION_SKIN), value => normalizeCompanionSkin(value)),
109
128
  }).default({ skin: DEFAULT_COMPANION_SKIN }),
129
+ // btw thread context: schema defaults + transforms (same shape as
130
+ // sidePanel above) so an unset cordis.yml block and junk values both
131
+ // resolve to the documented 4 turns / 24k chars before the stores see
132
+ // them (the store normalize remains the second, identical gate).
133
+ btw: Schema.object({
134
+ contextTurns: Schema.transform(Schema.number().default(BTW_CONTEXT_TURNS_DEFAULT), value => normalizeBtwContextTurns(value)),
135
+ contextBudget: Schema.transform(Schema.number().default(BTW_CONTEXT_BUDGET_DEFAULT), value => normalizeBtwContextBudget(value)),
136
+ }).default({ contextTurns: BTW_CONTEXT_TURNS_DEFAULT, contextBudget: BTW_CONTEXT_BUDGET_DEFAULT }),
110
137
  // One optional combo string per customizable action (no defaults: unset
111
138
  // keeps the built-in binding; see Config.shortcuts).
112
139
  shortcuts: Schema.object(Object.fromEntries(SHORTCUT_ACTIONS.map(action => [action.id, Schema.string().required(false)]))).required(false),
@@ -1,5 +1,5 @@
1
1
  import type { BackgroundJobOutputChannel, BackgroundJobStatus, BackgroundJobState } from '../adapter/ports/channel-view.js';
2
- export type { BackgroundJobOutputChannel, BackgroundJobOutputLine, BackgroundJobStatus, BackgroundJobState } from '../adapter/ports/channel-view.js';
2
+ export type { BackgroundJobOutputChannel, BackgroundJobOutputLine, BackgroundJobStatus, BackgroundJobState, JobTimelineEvent } from '../adapter/ports/channel-view.js';
3
3
  /**
4
4
  * Structural mirror of the registry's `JobSnapshot` — only the fields the
5
5
  * UI reads. Declared locally so no `@deepseek-ai/dsh-jobs` dependency (peer
@@ -102,6 +102,9 @@ export declare const JOBS_MAX_TRACKED = 40;
102
102
  /** Output tail lines retained per job (the card waterfall shows the last 3;
103
103
  * the /jobs panel detail shows the whole retained tail). */
104
104
  export declare const JOBS_MAX_OUTPUT_LINES = 30;
105
+ /** Timeline events retained per job: the /jobs detail renders the latest
106
+ * slice; older observations are dropped, never re-derived. */
107
+ export declare const JOBS_MAX_TIMELINE = 40;
105
108
  export declare class BackgroundJobStore {
106
109
  private readonly events;
107
110
  private readonly jobs;
@@ -162,6 +165,5 @@ export declare class BackgroundJobStore {
162
165
  /** Drop everything (session swap / transcript wipe). */
163
166
  reset(): void;
164
167
  }
165
- /** `3s` under a minute, `3m12s` under an hour, `1h02m` beyond — transcript-card compact. */
166
- export declare function formatJobDuration(job: Pick<BackgroundJobState, 'startedAt' | 'finishedAt'>, now?: number): string;
168
+ export { formatJobDuration } from '../channel/job-format.js';
167
169
  //# sourceMappingURL=jobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/jobs.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,22 @@ export const JOBS_MAX_TRACKED = 40;
3
3
  /** Output tail lines retained per job (the card waterfall shows the last 3;
4
4
  * the /jobs panel detail shows the whole retained tail). */
5
5
  export const JOBS_MAX_OUTPUT_LINES = 30;
6
+ /** Timeline events retained per job: the /jobs detail renders the latest
7
+ * slice; older observations are dropped, never re-derived. */
8
+ export const JOBS_MAX_TIMELINE = 40;
6
9
  /** A `job_output` result's trailing status suffix — never a waterfall line. */
7
10
  const STATUS_SUFFIX_PATTERN = /^\s*\[status:\s/;
8
11
  function isTerminal(status) {
9
12
  return status === 'completed' || status === 'killed' || status === 'failed';
10
13
  }
14
+ /** Append one bounded timeline observation. Timeline events live directly
15
+ * on the job state so a snapshot reader sees them without a second lookup;
16
+ * the ring drops the oldest entries, and the detail renders the latest
17
+ * slice without implying a complete history. */
18
+ function recordTimeline(job, event) {
19
+ const timeline = [...(job.timeline ?? []), event];
20
+ job.timeline = timeline.length > JOBS_MAX_TIMELINE ? timeline.slice(timeline.length - JOBS_MAX_TIMELINE) : timeline;
21
+ }
11
22
  export class BackgroundJobStore {
12
23
  events;
13
24
  jobs = new Map();
@@ -47,9 +58,13 @@ export class BackgroundJobStore {
47
58
  status: snap.status,
48
59
  ...(snap.detail === undefined ? {} : { detail: snap.detail }),
49
60
  ...(snap.progress === undefined ? {} : { progress: snap.progress }),
61
+ ...(snap.progress === undefined || snap.progress === '' ? {} : { lastProgress: snap.progress, lastProgressAt: Date.now() }),
50
62
  startedAt: snap.startedAt,
51
63
  ...(snap.finishedAt === undefined ? {} : { finishedAt: snap.finishedAt }),
52
64
  outputLines: [],
65
+ // First sight already terminal (a roster refresh mid-flight missed
66
+ // the live phase): the timeline starts at the settle fact.
67
+ timeline: [{ kind: isTerminal(snap.status) ? 'settled' : 'started', at: snap.startedAt, ...(snap.detail === undefined ? {} : { text: snap.detail }) }],
53
68
  ...(snap.output === undefined ? {} : {
54
69
  outputTotalBytes: snap.output.total,
55
70
  ...(snap.output.spillPaths === undefined || snap.output.spillPaths.length === 0 ? {} : { spillPaths: [...snap.output.spillPaths] }),
@@ -67,6 +82,9 @@ export class BackgroundJobStore {
67
82
  prev.finishedAt === snap.finishedAt)
68
83
  continue;
69
84
  const wasLive = !isTerminal(prev.status);
85
+ // Captured before the write below: the lifecycle-event gate compares
86
+ // against the previous status, which the assignment overwrites.
87
+ const prevStatus = prev.status;
70
88
  prev.status = snap.status;
71
89
  prev.label = snap.label;
72
90
  if (snap.detail === undefined)
@@ -77,10 +95,27 @@ export class BackgroundJobStore {
77
95
  delete prev.progress;
78
96
  else
79
97
  prev.progress = snap.progress;
98
+ // The live progress line dies at settle, but the last thing the producer
99
+ // said survives for the focused detail, with its observation time (the
100
+ // source is the producer kind the row already names).
101
+ if (snap.progress !== undefined && snap.progress !== '') {
102
+ prev.lastProgress = snap.progress;
103
+ prev.lastProgressAt = Date.now();
104
+ recordTimeline(prev, { kind: 'progress', at: prev.lastProgressAt, text: snap.progress });
105
+ }
80
106
  if (snap.finishedAt === undefined)
81
107
  delete prev.finishedAt;
82
108
  else
83
109
  prev.finishedAt = snap.finishedAt;
110
+ // Lifecycle observations land in the timeline ring: stopping, and the
111
+ // terminal transition with its detail (exit code, kill cause).
112
+ if (prevStatus !== snap.status) {
113
+ recordTimeline(prev, {
114
+ kind: snap.status === 'stopping' ? 'stopping' : isTerminal(snap.status) ? 'settled' : 'started',
115
+ at: snap.finishedAt ?? Date.now(),
116
+ ...(snap.detail === undefined ? {} : { text: snap.detail }),
117
+ });
118
+ }
84
119
  if (snap.output !== undefined) {
85
120
  prev.outputTotalBytes = snap.output.total;
86
121
  if (snap.output.spillPaths !== undefined && snap.output.spillPaths.length > 0)
@@ -96,6 +131,7 @@ export class BackgroundJobStore {
96
131
  continue;
97
132
  job.status = 'killed';
98
133
  job.finishedAt = Date.now();
134
+ recordTimeline(job, { kind: 'settled', at: job.finishedAt });
99
135
  this.events.onSettled?.(job);
100
136
  changed = true;
101
137
  }
@@ -150,6 +186,7 @@ export class BackgroundJobStore {
150
186
  return;
151
187
  job.outputLines = [...job.outputLines, ...lines].slice(-JOBS_MAX_OUTPUT_LINES);
152
188
  job.lastOutputAt = at;
189
+ recordTimeline(job, { kind: 'output', at, bytes: text.length });
153
190
  this.events.onChanged?.();
154
191
  }
155
192
  /**
@@ -167,8 +204,11 @@ export class BackgroundJobStore {
167
204
  read.cursor = earliest;
168
205
  read.partial = '';
169
206
  const job = this.jobs.get(id);
170
- if (job !== undefined)
207
+ if (job !== undefined) {
171
208
  job.outputDropped = true;
209
+ job.gapCount = (job.gapCount ?? 0) + 1;
210
+ recordTimeline(job, { kind: 'gap', at: Date.now() });
211
+ }
172
212
  }
173
213
  }
174
214
  /**
@@ -184,6 +224,7 @@ export class BackgroundJobStore {
184
224
  return;
185
225
  const state = this.kernelReads.get(id) ?? { cursor: 0, partial: '' };
186
226
  this.kernelReads.set(id, state);
227
+ const startCursor = state.cursor;
187
228
  const appended = [];
188
229
  let gapPending = read.lossy === true;
189
230
  let gapSeen = read.lossy === true;
@@ -217,11 +258,18 @@ export class BackgroundJobStore {
217
258
  }
218
259
  }
219
260
  state.cursor = read.next;
220
- if (gapSeen)
261
+ if (gapSeen) {
221
262
  job.outputDropped = true;
263
+ job.gapCount = (job.gapCount ?? 0) + 1;
264
+ recordTimeline(job, { kind: 'gap', at });
265
+ }
222
266
  if (appended.length > 0) {
223
267
  job.outputLines = [...job.outputLines, ...appended].slice(-JOBS_MAX_OUTPUT_LINES);
224
268
  job.lastOutputAt = at;
269
+ // One observation per drain: the bytes this pull advanced and the
270
+ // dominant channel label, when the chunks carried one.
271
+ const channel = appended.find(line => line.channel !== undefined)?.channel;
272
+ recordTimeline(job, { kind: 'output', at, bytes: read.next - startCursor, ...(channel === undefined ? {} : { channel }) });
225
273
  this.events.onChanged?.();
226
274
  }
227
275
  else if (job.outputTotalBytes !== read.next) {
@@ -258,15 +306,6 @@ export class BackgroundJobStore {
258
306
  this.events.onChanged?.();
259
307
  }
260
308
  }
261
- /** `3s` under a minute, `3m12s` under an hour, `1h02m` beyond — transcript-card compact. */
262
- export function formatJobDuration(job, now = Date.now()) {
263
- const end = job.finishedAt ?? now;
264
- const seconds = Math.max(0, Math.floor((end - job.startedAt) / 1000));
265
- if (seconds < 60)
266
- return `${seconds}s`;
267
- const minutes = Math.floor(seconds / 60);
268
- if (minutes < 60)
269
- return `${minutes}m${seconds % 60}s`;
270
- const hours = Math.floor(minutes / 60);
271
- return `${hours}h${String(minutes % 60).padStart(2, '0')}m`;
272
- }
309
+ // The formatter is backend-neutral (src/channel/job-format.ts); re-exported
310
+ // here for the existing importers.
311
+ export { formatJobDuration } from '../channel/job-format.js';