@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.1

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
@@ -94,16 +94,26 @@ const WHALE_GIRL_KEY_ANIMATION = {
94
94
  'idle-spout': 'smile-hearts',
95
95
  'happy': 'thumbs-up',
96
96
  };
97
- /** 鲸娘动画键裁决(字母格与图像两条路径同一语义):semanticMap 落点
98
- * > 爱心 pass > 心情层(whaleGirlAnimationKey 原契约不变);落点在
99
- * 「本路径的素材包」里不存在时退心情层,不报错。 */
100
- function resolveWhaleGirlAnimationKey(pose, animationSemantic, hasKey) {
101
- const semanticKey = animationSemantic !== undefined
102
- ? WHALE_GIRL_KEY_ANIMATION[animationSemantic] ?? animationSemantic
103
- : undefined;
104
- if (semanticKey !== undefined && hasKey(semanticKey))
105
- return semanticKey;
106
- return whaleGirlAnimationKey(pose.mood, pose.heart);
97
+ /** 鲸娘动画键裁决(字母格与图像两条路径共用):semanticMap 映射 >
98
+ * 爱心 pass > 心情层,与 whaleGirlAnimationKey 的优先级一致。每个候选
99
+ * 都要过 hasKey(在素材包里、没解码失败过),不过就沿链往下:semantic
100
+ * → heart → mood → idle;全部不可用返回 undefined,由调用方退字母格
101
+ * 或保持上一帧。导出供回归直接测这条链。 */
102
+ export function resolveWhaleGirlAnimationKey(pose, animationSemantic, hasKey) {
103
+ if (animationSemantic !== undefined) {
104
+ const semanticKey = WHALE_GIRL_KEY_ANIMATION[animationSemantic] ?? animationSemantic;
105
+ if (hasKey(semanticKey))
106
+ return semanticKey;
107
+ }
108
+ if (pose.heart > 0 && hasKey('smile-hearts'))
109
+ return 'smile-hearts';
110
+ const moodKey = WHALE_GIRL_MOOD_ANIMATION[pose.mood] ?? 'idle';
111
+ if (hasKey(moodKey))
112
+ return moodKey;
113
+ const idleKey = WHALE_GIRL_MOOD_ANIMATION.idle;
114
+ if (hasKey(idleKey))
115
+ return idleKey;
116
+ return undefined;
107
117
  }
108
118
  /** 字母轨开窗(2026-10 空气墙修复配套):42 格帧串的全部美术落在
109
119
  * [5,35] 共 31 列(实测 267 帧,两侧是构建 contain 的透明衬垫 '.')——
@@ -131,7 +141,11 @@ function renderWhaleGirlLetterGrid(input) {
131
141
  const kit = loadWhaleGirlKit();
132
142
  if (kit === undefined)
133
143
  return DeepySkin.render({ ...input, width: WHALE_GIRL_CELLS.columns });
144
+ // 字母轨只要求 kit 里有这个动画;一个都没有时退 DeepySkin,与缺帧
145
+ // 回退同一出口。
134
146
  const animationKey = resolveWhaleGirlAnimationKey(pose, animationSemantic, key => kit.byKey[key] !== undefined);
147
+ if (animationKey === undefined)
148
+ return DeepySkin.render({ ...input, width: WHALE_GIRL_CELLS.columns });
135
149
  const rendered = renderedWhaleGirlWindowRows(kit, animationKey);
136
150
  const animation = kit.byKey[animationKey];
137
151
  if (rendered === undefined || animation === undefined) {
@@ -222,11 +236,37 @@ export function whaleGirlImageFrameIndexAt(animation, elapsedMs) {
222
236
  return animation.frames.length - 1;
223
237
  }
224
238
  /** 已解码动画的 LRU(Map 迭代序 = 最近使用序);失败集合防止坏动画
225
- * 每帧重试。字节上限防 267 帧全量常驻(全解约 60MB RGBA)。 */
239
+ * 每帧重试。字节上限防 267 帧全量常驻(全解约 92.6MB RGBA)。
240
+ * 提交后的使用经 touchDecodedAnimation 刷新迭代序;写入和驱逐会发布
241
+ * revision,消费者订阅后能发现自己的键被挤出并重新解码。 */
226
242
  const decodedImageAnimations = new Map();
227
243
  const failedImageAnimations = new Set();
228
244
  let decodedImageBytes = 0;
229
245
  const DECODED_IMAGE_BYTES_CAP = 32 * 1024 * 1024;
246
+ /** 缓存写入/驱逐的版本号。快照是原始 number,Object.is 比较稳定。
247
+ * touch 只改迭代序、不发布:它在 commit 后运行,发布会让每次 commit
248
+ * 再触发一次渲染。 */
249
+ let decodedImageCacheRevision = 0;
250
+ const decodedImageCacheListeners = new Set();
251
+ function publishDecodedImageCacheChange() {
252
+ decodedImageCacheRevision += 1;
253
+ for (const listener of [...decodedImageCacheListeners])
254
+ listener();
255
+ }
256
+ /** 订阅缓存写入/驱逐(uSES 的 subscribe 面;回归直接用它观测 revision)。 */
257
+ export function subscribeDecodedImageCache(listener) {
258
+ decodedImageCacheListeners.add(listener);
259
+ return () => { decodedImageCacheListeners.delete(listener); };
260
+ }
261
+ /** 把命中的键移到最近使用位。只改迭代序,不动键集和字节数,所以不
262
+ * 发布 revision。只在 commit 后的 effect 里调用;键不在缓存时 no-op。 */
263
+ function touchDecodedAnimation(key) {
264
+ const frames = decodedImageAnimations.get(key);
265
+ if (frames === undefined)
266
+ return;
267
+ decodedImageAnimations.delete(key);
268
+ decodedImageAnimations.set(key, frames);
269
+ }
230
270
  /** 解码一个动画的全部帧(顺序、确定性);任一帧失败 → 整个动画 undefined。 */
231
271
  async function decodeWhaleGirlAnimation(dir, animation) {
232
272
  try {
@@ -270,24 +310,103 @@ function rememberDecodedAnimation(key, frames) {
270
310
  decodedImageAnimations.delete(oldest);
271
311
  decodedImageBytes -= evicted?.reduce((sum, frame) => sum + frame.data.byteLength, 0) ?? 0;
272
312
  }
313
+ // 插入、替换、驱逐都改变了消费者可见的内容:发布 revision,让键被
314
+ // 挤出的消费者重跑解码 effect。
315
+ publishDecodedImageCacheChange();
316
+ }
317
+ /** 预热键集:面板可见且动画时钟在走时,把常用互动键(idle + poke
318
+ * 左/右 + smile-hearts)提前异步解码进 LRU,换键时少等一次解码。
319
+ * 导出供回归检查。 */
320
+ export const WHALE_GIRL_PREHEAT_KEYS = [
321
+ WHALE_GIRL_MOOD_ANIMATION.idle,
322
+ 'poke-left',
323
+ 'poke-right',
324
+ 'smile-hearts',
325
+ ];
326
+ /** 在途解码登记(同键去重:活跃解码路径与预热共用一个 Promise)。 */
327
+ const inflightImageDecodes = new Map();
328
+ /** 解码发起次数,只在新建在途 Promise 时递增。回归用它检查失败键不
329
+ * 按 tick 重试、同键并发只解一次、驱逐后的恢复有界。 */
330
+ let whaleGirlDecodeRequestCount = 0;
331
+ /** 测试重置时递增:重置前发起、重置后才完成的解码不得写进新缓存。 */
332
+ let decodeGeneration = 0;
333
+ /** 解码一个动画并入库:成功进 LRU,失败进失败集(之后的裁决会跳过
334
+ * 这个键);同键并发请求共用在途 Promise。永不 reject,也不直接触发
335
+ * React 更新。 */
336
+ function requestWhaleGirlAnimationFrames(kit, key) {
337
+ const inflight = inflightImageDecodes.get(key);
338
+ if (inflight !== undefined)
339
+ return inflight;
340
+ whaleGirlDecodeRequestCount += 1;
341
+ const generation = decodeGeneration;
342
+ const pending = decodeWhaleGirlAnimation(kit.dir, kit.byKey[key])
343
+ .then(frames => {
344
+ if (generation !== decodeGeneration)
345
+ return frames;
346
+ inflightImageDecodes.delete(key);
347
+ if (frames === undefined)
348
+ failedImageAnimations.add(key);
349
+ else
350
+ rememberDecodedAnimation(key, frames);
351
+ return frames;
352
+ })
353
+ .catch(() => {
354
+ if (generation !== decodeGeneration)
355
+ return undefined;
356
+ inflightImageDecodes.delete(key);
357
+ failedImageAnimations.add(key);
358
+ return undefined;
359
+ });
360
+ inflightImageDecodes.set(key, pending);
361
+ return pending;
362
+ }
363
+ /** 预热一个键(幂等:缺键/已缓存/已失败跳过);失败静默——与按需解码
364
+ * 同语义地进失败集,不闪不响。 */
365
+ function preheatWhaleGirlAnimation(kit, key) {
366
+ if (kit.byKey[key] === undefined)
367
+ return;
368
+ if (decodedImageAnimations.has(key) || failedImageAnimations.has(key))
369
+ return;
370
+ void requestWhaleGirlAnimationFrames(kit, key);
273
371
  }
274
372
  /** 测试观测点:当前进程已解码了哪些动画(惰性解码断言用)。 */
275
373
  export function whaleGirlDecodedAnimationKeys() {
276
374
  return [...decodedImageAnimations.keys(), ...failedImageAnimations];
277
375
  }
376
+ /** 测试接缝:LRU 迭代序(= 最近使用序)。 */
377
+ export function decodedImageAnimationOrderForTests() {
378
+ return [...decodedImageAnimations.keys()];
379
+ }
380
+ /** 测试接缝:注入假帧,制造 32MiB 驱逐压力(不触发真实解码)。 */
381
+ export function injectDecodedAnimationForTests(key, frames) {
382
+ rememberDecodedAnimation(key, frames);
383
+ }
384
+ /** 测试观测点:解码发起总次数。 */
385
+ export function whaleGirlDecodeRequestCountForTests() {
386
+ return whaleGirlDecodeRequestCount;
387
+ }
388
+ /** 测试接缝:登记解码失败键(模拟坏 PNG,不动真实资产)。 */
389
+ export function injectFailedAnimationForTests(key) {
390
+ failedImageAnimations.add(key);
391
+ }
278
392
  /** 测试接缝:清图像层缓存(timings kit + 已解码动画 + 失败集合 + 字母开窗渲染)。 */
279
393
  export function resetWhaleGirlImageCacheForTests() {
280
394
  whaleGirlImageKitCache = undefined;
281
395
  decodedImageAnimations.clear();
282
396
  failedImageAnimations.clear();
283
397
  decodedImageBytes = 0;
398
+ inflightImageDecodes.clear();
399
+ decodeGeneration += 1;
284
400
  whaleGirlWindowCache.clear();
401
+ whaleGirlDecodeRequestCount = 0;
402
+ publishDecodedImageCacheChange();
285
403
  }
286
404
  /** 面板可见性门(visible=false 零工作契约):PanelHost 对非 active 的
287
405
  * enabled 面板包 display:none 的 Box——沿 DOM 祖先链查它。初始 false,
288
406
  * 布局期更新(不触发额外渲染循环),解码 effect 只在证明可见后开跑。 */
289
407
  function useBoxDisplayed() {
290
408
  const elementRef = React.useRef(null);
409
+ const displayedRef = React.useRef(false);
291
410
  const [displayed, setDisplayed] = React.useState(false);
292
411
  const setElement = React.useCallback((element) => { elementRef.current = element; }, []);
293
412
  React.useLayoutEffect(() => {
@@ -298,33 +417,47 @@ function useBoxDisplayed() {
298
417
  hidden = true;
299
418
  node = node.parentNode;
300
419
  }
301
- setDisplayed(previous => (previous === !hidden ? previous : !hidden));
420
+ // 只在值真的变化时 setState。这个无 deps 的 layout effect 每次
421
+ // commit 都跑;即使更新器返回原值,enqueue 本身也会计入
422
+ // react-reconciler 的 nestedUpdateCount,遇上连续提交(如 /context
423
+ // 滚动)会攒到 50 并抛 #185。用 ref 记住上次的值,稳态不入队。
424
+ const next = !hidden;
425
+ if (displayedRef.current !== next) {
426
+ displayedRef.current = next;
427
+ setDisplayed(next);
428
+ }
302
429
  });
303
430
  return [setElement, displayed];
304
431
  }
305
432
  /** 鲸娘图像路径的帧缓存 hook:activeKey 为 undefined(面板不可见/无
306
- * 动画)时不做任何事;命中缓存同步返回,未命中异步解码完成后返回。 */
307
- function useDecodedWhaleGirlFrames(activeKey, kit) {
433
+ * 动画)时不做任何事;命中缓存同步返回,未命中异步解码完成后返回。
434
+ * 缓存 revision 是解码 effect 的依赖:键没变但被预热或别的实例挤出
435
+ * 缓存时,effect 重跑并重新解码。每次 commit 后刷新当前键的 LRU 位置。
436
+ * 导出供回归在真渲染器下测试。 */
437
+ export function useDecodedWhaleGirlFrames(activeKey, kit) {
308
438
  const [settled, setSettled] = React.useState(undefined);
439
+ // 只在缓存写入/驱逐时变化(解码完成或测试注入),稳态不触发渲染。
440
+ const cacheRevision = React.useSyncExternalStore(subscribeDecodedImageCache, () => decodedImageCacheRevision);
309
441
  React.useEffect(() => {
310
442
  if (activeKey === undefined || kit === undefined)
311
443
  return;
312
444
  if (!decodedImageAnimations.has(activeKey) && !failedImageAnimations.has(activeKey)) {
313
445
  let live = true;
314
- const animation = kit.byKey[activeKey];
315
- void decodeWhaleGirlAnimation(kit.dir, animation).then(frames => {
316
- if (frames === undefined)
317
- failedImageAnimations.add(activeKey);
318
- else {
319
- rememberDecodedAnimation(activeKey, frames);
320
- if (live)
321
- setSettled({ key: activeKey, frames });
322
- }
446
+ // 与预热共用在途解码;组件已换键或卸载时不 setSettled(预热先完成
447
+ // 的话,revision 通知触发的渲染会直接命中缓存)。
448
+ void requestWhaleGirlAnimationFrames(kit, activeKey).then(frames => {
449
+ if (live && frames !== undefined)
450
+ setSettled({ key: activeKey, frames });
323
451
  });
324
452
  return () => { live = false; };
325
453
  }
326
454
  return;
327
- }, [activeKey, kit]);
455
+ }, [activeKey, kit, cacheRevision]);
456
+ // 每次 commit 刷新当前键的 LRU 位置;键不在缓存或为 undefined 时 no-op。
457
+ React.useLayoutEffect(() => {
458
+ if (activeKey !== undefined)
459
+ touchDecodedAnimation(activeKey);
460
+ });
328
461
  const cached = activeKey !== undefined ? decodedImageAnimations.get(activeKey) : undefined;
329
462
  if (cached !== undefined)
330
463
  return cached;
@@ -339,23 +472,61 @@ function WhaleGirlImageSkin(input) {
339
472
  return renderWhaleGirlLetterGrid(input);
340
473
  return _jsx(WhaleGirlRasterSkin, { ...input });
341
474
  }
475
+ /** 保持上一帧的 hook:render 把本次候选图像交进来,没有候选时返回上一
476
+ * 次已提交的图像。「上一帧」和「是否显示过」只在 commit 后的 layout
477
+ * effect 里写,被放弃的 concurrent render 不会改动它们。保持期间返回
478
+ * 同一个元素引用,逐 tick 重渲染不会重画子树。返回 [要显示的节点,
479
+ * 是否显示过];节点为 undefined 表示从未显示过(调用方画字母格)。
480
+ * 导出供回归在 ConcurrentRoot 下测试。 */
481
+ export function useHeldCommittedImage(candidate) {
482
+ const everCommittedRef = React.useRef(false);
483
+ const heldCommittedRef = React.useRef(undefined);
484
+ React.useLayoutEffect(() => {
485
+ if (candidate === undefined)
486
+ return;
487
+ heldCommittedRef.current = candidate;
488
+ everCommittedRef.current = true;
489
+ });
490
+ if (candidate !== undefined)
491
+ return [candidate, everCommittedRef.current];
492
+ if (!everCommittedRef.current)
493
+ return [undefined, false];
494
+ return [heldCommittedRef.current, true];
495
+ }
342
496
  /** 图像渲染层:timings 选帧 + 惰性解码 + 单元格盒(15 行预算、宽按
343
- * 帧比例钳 42 列)。解码完成前渲染字母格(同一语义同一帧)兜底。 */
497
+ * 帧比例钳 31 列)。解码期间保持上一帧;字母格只在冷启动时出现;常用
498
+ * 互动键在可见后预热。保持和预热都只看已提交的 render。 */
344
499
  function WhaleGirlRasterSkin(input) {
345
500
  const { pose, moodSince, now, animationSemantic } = input;
346
501
  const cellSize = useTerminalImageCellSize();
347
502
  const imageKit = loadWhaleGirlImageKit();
348
503
  const [boxRef, displayed] = useBoxDisplayed();
504
+ // 解码失败过的键不再被选中(退到心情层的键),失败的互动不会让画面
505
+ // 一直停在上一帧。
349
506
  const animationKey = imageKit !== undefined
350
- ? resolveWhaleGirlAnimationKey(pose, animationSemantic, key => imageKit.byKey[key] !== undefined)
507
+ ? resolveWhaleGirlAnimationKey(pose, animationSemantic, key => imageKit.byKey[key] !== undefined && !failedImageAnimations.has(key))
351
508
  : undefined;
352
509
  // visible=false 零工作:display:none 祖先链未排除前不解码、不订阅时钟。
353
510
  const frames = useDecodedWhaleGirlFrames(displayed ? animationKey : undefined, imageKit);
354
511
  const animation = animationKey !== undefined ? imageKit?.byKey[animationKey] : undefined;
512
+ // 预热:可见且动画时钟在走时,把常用互动键异步解码进 LRU(不挡首帧,
513
+ // 失败静默进失败集)。now 只在 commit 后的 effect 里与上次比较,被
514
+ // 放弃的 render 带来的 now 不算。时钟一直不动就是 active=false 的定格
515
+ // 态(SplashMascot 停在 idle 第 0 帧),不预热。
516
+ const lastNowRef = React.useRef(now);
517
+ React.useEffect(() => {
518
+ if (now === lastNowRef.current)
519
+ return;
520
+ lastNowRef.current = now;
521
+ if (!displayed || imageKit === undefined)
522
+ return;
523
+ for (const key of WHALE_GIRL_PREHEAT_KEYS)
524
+ preheatWhaleGirlAnimation(imageKit, key);
525
+ }, [now, displayed, imageKit]);
355
526
  // 单元格盒:15 行预算 + 帧自身宽高比(source.width/height,与档位
356
- // 无关)+ 真实像元;宽钳 42 列(§16.6)。8×16 像元下 288px 档
527
+ // 无关)+ 真实像元;宽钳 31 列。8×16 像元下 288px 档
357
528
  // (301×288)≈ 31 列,渲染层 fit 只降采样,显示恒 1:1 或更密。
358
- // 外层盒恒定 42×15:ref 挂在它上面(可见性门要求任何分支都在树里),
529
+ // 外层盒恒定 31×15:ref 挂在它上面(可见性门要求任何分支都在树里),
359
530
  // 字母格→图像切换时面板几何零跳动。
360
531
  let image;
361
532
  if (imageKit !== undefined && cellSize !== undefined && frames !== undefined && animation !== undefined) {
@@ -373,7 +544,10 @@ function WhaleGirlRasterSkin(input) {
373
544
  image = (_jsx(Image, { transparent: true, source: source, width: columns, height: rows, alt: "", presentation: "transcript", children: _jsx(Text, { children: Array.from({ length: rows }, () => ' '.repeat(columns)).join('\n') }) }));
374
545
  }
375
546
  }
376
- return (_jsx(Box, { ref: boxRef, flexDirection: "column", flexShrink: 0, alignItems: "center", justifyContent: "center", width: WHALE_GIRL_CELLS.columns, height: WHALE_GIRL_CELLS.rows, children: image ?? renderWhaleGirlLetterGrid(input) }));
547
+ // 本次候选或上一帧;都没有(冷启动)时画字母格。切到还没解码的键时
548
+ // 保持上一帧,不闪回字母格。
549
+ const [visibleImage] = useHeldCommittedImage(image);
550
+ return (_jsx(Box, { ref: boxRef, flexDirection: "column", flexShrink: 0, alignItems: "center", justifyContent: "center", width: WHALE_GIRL_CELLS.columns, height: WHALE_GIRL_CELLS.rows, children: visibleImage !== undefined ? visibleImage : renderWhaleGirlLetterGrid(input) }));
377
551
  }
378
552
  const WHALE_CELLS = Object.freeze({ columns: 40, rows: 13 });
379
553
  /** 现有像素鲸鱼:直接消费 nativeWhalePose(与开屏 splash 同一规划器、
@@ -15,8 +15,9 @@
15
15
  * `normalizeSplashFont` 是唯一的归一化入口(非法值一律回落 `daily`)。面板选项
16
16
  * 由注册表直接推(含中英标签),所以加一款字体不需要第二份清单。
17
17
  *
18
- * 字形覆盖两层:正常词 `DEEPSEEK`/`HARNESS`,以及节日彩蛋词用到的 `I M Y W`
19
- * (`splashEggs.ts` 的日期表)。
18
+ * 字形覆盖三层:正常词 `DEEPSEEK`/`HARNESS`、节日彩蛋词用到的 `I M Y W`
19
+ * (`splashEggs.ts` 的日期表)、以及 claude 品牌词 `CLAUDE`/`CODE` 用到的
20
+ * `C L U O`(`branding.ts` 的按内核换品牌)。
20
21
  */
21
22
  import type { SplashFontId, SplashFontSetting } from '../adapter/ports/channel-display.js';
22
23
  export type { SplashFontId, SplashFontSetting } from '../adapter/ports/channel-display.js';
@@ -47,9 +48,10 @@ export interface SplashFont {
47
48
  readonly bottomIndent: number;
48
49
  };
49
50
  /**
50
- * 可选:这款字体自己的起止配色(不给就用主题的 `accent → activity`)。
51
- * 半立体那款用它铺出左亮右暗的灰阶——字形本身已经是"亮面/暗面"两档字符,
52
- * 再叠一层颜色渐变,才有金属受光的感觉。
51
+ * 可选:这款字体自己的起止配色(不给就由 `LogoV2` 按主题/品牌解析——
52
+ * 半立体款的金属明暗两档就是在那里随主题 accent 派生的)。内置款不再
53
+ * 静态设置;字段保留给运行时扩展(如 cc-bridge 类插件原地写 `palette`
54
+ * 接管两行渐变)。
53
55
  */
54
56
  readonly palette?: {
55
57
  readonly from: Rgb;
@@ -57,15 +59,21 @@ export interface SplashFont {
57
59
  };
58
60
  }
59
61
  /**
60
- * 换一副标题词(节日彩蛋用):字形、字身宽度、id 都不变,只按新词重解字距。
61
- * 布局阈值(`resolveSplashLayout`)与渲染都读字体自己的 `tagline`,所以派生对象
62
- * 可以直接顶替原字体——窄终端阶梯一行都不用改。
62
+ * 换一副标题词(品牌词/节日彩蛋用):字形、字身宽度、id 都不变,只按新词
63
+ * 重解字距。布局阈值(`resolveSplashLayout`)与渲染都读字体自己的 `tagline`,
64
+ * 所以派生对象可以直接顶替原字体——窄终端阶梯一行都不用改。
63
65
  * @param font - 基准字体。
64
66
  * @param top - 上排词。
65
67
  * @param bottom - 下排词。
68
+ * @param options - `wide`:取中间档可行解(等宽契约的舒展档);
69
+ * `uniform`:两行同字距(品牌词用——等宽契约靠两行字距互补达成,
70
+ * 字数差大的词对间隙观感不一致;同字距后对齐由渲染层按形态处理)。
66
71
  * @returns 换词后的字体描述符。
67
72
  */
68
- export declare function withTagline(font: SplashFont, top: string, bottom: string): SplashFont;
73
+ export declare function withTagline(font: SplashFont, top: string, bottom: string, options?: {
74
+ readonly wide?: boolean;
75
+ readonly uniform?: boolean;
76
+ }): SplashFont;
69
77
  /** 轮换池(渲染侧只读这一份;表的书写顺序即轮换顺序)。 */
70
78
  export declare const SPLASH_FONTS: readonly SplashFont[];
71
79
  /** 设置项 `dsh-tui.splashFont` 的默认值:按本地日期轮换。 */
@@ -1 +1 @@
1
- {"version":3,"file":"splashFonts.d.ts","sourceRoot":"","sources":["../../../src/components/splashFonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAK1F,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAE1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,mBAAmB;AACnB,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,CAAA;AACzC,oBAAoB;AACpB,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE5D,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAA;IACzB,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,eAAe;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,sCAAsC;QACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAC9B,CAAA;IACD;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAA;KAAE,CAAA;CAC5D;AAyMD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAErF;AAqBD,iCAAiC;AACjC,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAqC,CAAA;AAEnF,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,UAAsC,CAAA;AAEpE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAE7E;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAG1D,CAAA;AAED,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,EAAsB,UAAU,CAAA;AAEhE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAErD;AAKD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,IAAiB,GAAG,UAAU,CAIlE"}
1
+ {"version":3,"file":"splashFonts.d.ts","sourceRoot":"","sources":["../../../src/components/splashFonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAK1F,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAE1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,mBAAmB;AACnB,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,CAAA;AACzC,oBAAoB;AACpB,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE5D,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAA;IACzB,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,eAAe;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,sCAAsC;QACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAC9B,CAAA;IACD;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAA;KAAE,CAAA;CAC5D;AAmSD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE,UAAU,CAcZ;AAsBD,iCAAiC;AACjC,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAqC,CAAA;AAEnF,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,UAAsC,CAAA;AAEpE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAE7E;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAG1D,CAAA;AAED,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,EAAsB,UAAU,CAAA;AAEhE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAErD;AAKD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,IAAiB,GAAG,UAAU,CAIlE"}
@@ -15,6 +15,16 @@ const BOLD_GLYPHS = {
15
15
  M: ['██··██', '██████', '██▀▀██', '██··██', '██··██'],
16
16
  Y: ['██··██', '██··██', '▀▀██▀▀', '··██··', '··██··'],
17
17
  W: ['██··██', '██··██', '██▄▄██', '██████', '██··██'],
18
+ // Claude 词字母(CLAUDE / CODE):C 圆弧顶底(左角同 O 的 `·▄`/`·▀` 圆角)
19
+ // + 右侧上下钩各延续半格(行1 `▀▀` / 行3 `▄▄`,与顶底的 `▄▄`/`▀▀` 拼成
20
+ // 1 格厚的钩弧——ANSI Shadow 那种 `╗╔` 内钩弧的 5 行等效画法;只有顶底
21
+ // 半行的旧版弧臂厚 0.5 格,看着像 `[` 不够饱满);O 保留 A 的圆拱(闭
22
+ // 圆环窄缘);L 光杆 + E 的平底;U 是去掉 O 顶拱的开口版。
23
+ C: ['·▄▀▀▄▄', '██··▀▀', '██····', '██··▄▄', '·▀▄▄▀▀'],
24
+ L: ['██····', '██····', '██····', '██····', '██▄▄▄▄'],
25
+ U: ['██··██', '██··██', '██··██', '██··██', '·▀▄▄▀·'],
26
+ O: ['·▄▀▀▄·', '██··██', '██··██', '██··██', '·▀▄▄▀·'],
27
+ X: ['██··██', '·████·', '··██··', '·████·', '██··██'],
18
28
  };
19
29
  const BOLD_FALLBACK = ['▄▄▄▄▄▄', '██··██', '██··██', '██··██', '▀▀▀▀▀▀'];
20
30
  /** 老的 5 列空心字(0.11.x 之前的开屏款)。 */
@@ -33,6 +43,13 @@ const CLASSIC_GLYPHS = {
33
43
  M: ['█···█', '██·██', '█·█·█', '█···█', '█···█'],
34
44
  Y: ['█···█', '█···█', '·█·█·', '··█··', '··█··'],
35
45
  W: ['█···█', '█···█', '█·█·█', '██·██', '█···█'],
46
+ // Claude 词字母(CLAUDE / CODE):C 用 D 式顶底收角(右上下钩对称);O
47
+ // 圆拱;L 光杆;U 开口底弧。
48
+ C: ['█▀▀▀▄', '█····', '█····', '█····', '█▄▄▄▀'],
49
+ L: ['█····', '█····', '█····', '█····', '█▄▄▄▄'],
50
+ U: ['█···█', '█···█', '█···█', '█···█', '·▀▄▀·'],
51
+ O: ['·▄▀▄·', '█···█', '█···█', '█···█', '·▀▄▀·'],
52
+ X: ['█···█', '·█·█·', '··█··', '·█·█·', '█···█'],
36
53
  };
37
54
  const CLASSIC_FALLBACK = ['▄▄▄▄▄', '█···█', '█···█', '█···█', '▀▀▀▀▀'];
38
55
  /** PR #1058(作者 zdjmrq)的实心横笔设计:横笔满格、竖笔 1 格。 */
@@ -51,8 +68,44 @@ const SLAB_GLYPHS = {
51
68
  M: ['█···█', '██·██', '█·█·█', '█···█', '█···█'],
52
69
  Y: ['█···█', '█···█', '·█·█·', '··█··', '··█··'],
53
70
  W: ['█···█', '█···█', '█·█·█', '██·██', '█···█'],
71
+ // Claude 词字母(CLAUDE / CODE):实心横笔 + 方角,与 `D`/`E` 同笔法。
72
+ C: ['████·', '█····', '█····', '█····', '████·'],
73
+ L: ['█····', '█····', '█····', '█····', '█████'],
74
+ U: ['█···█', '█···█', '█···█', '█···█', '·███·'],
75
+ O: ['·███·', '█···█', '█···█', '█···█', '·███·'],
76
+ X: ['█···█', '·█·█·', '··█··', '·█·█·', '█···█'],
54
77
  };
55
78
  const SLAB_FALLBACK = ['▄▄▄▄▄', '█···█', '█···█', '█···█', '▀▀▀▀▀'];
79
+ /**
80
+ * ANSI Shadow(patorjk/figlet.js 收录的经典终端 banner 字体,10 列 × 5 行
81
+ * 压缩版):`█` 主体 + `╗╔╚╝═║` 双线弧角收边,立体圆润。由
82
+ * `.local/figlet-fonts/convert-flf.mjs` 从原版 7 行压缩而来(剥首尾空行、
83
+ * 去中段重复行;**窄行左对齐字身左缘**——v0 按行独立居中,C/L/E/P/Y 的
84
+ * 竖笔全与顶底弧错位 1-2 列;超宽字形压最长空隙段)。唯一手工:M 行 2 取
85
+ * 原版 V 顶行 `██╔████╔██║` 删 1 格 `█`(转换器对无空隙超宽行只能居中裁,
86
+ * 会丢右杆收笔 `║`)。dsh / claude 两副词的字母全在内(含彩蛋 IMYW)。
87
+ */
88
+ const SHADOW_GLYPHS = {
89
+ D: ['·██████╗··', '·██╔══██╗·', '·██║··██║·', '·██████╔╝·', '·╚═════╝··'],
90
+ E: ['·███████╗·', '·██╔════╝·', '·██╔══╝···', '·███████╗·', '·╚══════╝·'],
91
+ P: ['·██████╗··', '·██╔══██╗·', '·██╔═══╝··', '·██║······', '·╚═╝······'],
92
+ S: ['·███████╗·', '·██╔════╝·', '·╚════██║·', '·███████║·', '·╚══════╝·'],
93
+ K: ['·██╗··██╗·', '·██║·██╔╝·', '·██╔═██╗··', '·██║··██╗·', '·╚═╝··╚═╝·'],
94
+ H: ['·██╗··██╗·', '·██║··██║·', '·██╔══██║·', '·██║··██║·', '·╚═╝··╚═╝·'],
95
+ A: ['··█████╗··', '·██╔══██╗·', '·██╔══██║·', '·██║··██║·', '·╚═╝··╚═╝·'],
96
+ R: ['·██████╗··', '·██╔══██╗·', '·██╔══██╗·', '·██║··██║·', '·╚═╝··╚═╝·'],
97
+ N: ['███╗···██╗', '████╗··██║', '██║╚██╗██║', '██║·╚████║', '╚═╝··╚═══╝'],
98
+ C: ['··██████╗·', '·██╔════╝·', '·██║······', '·╚██████╗·', '··╚═════╝·'],
99
+ L: ['·██╗······', '·██║······', '·██║······', '·███████╗·', '·╚══════╝·'],
100
+ U: ['██╗···██╗·', '██║···██║·', '██║···██║·', '╚██████╔╝·', '·╚═════╝··'],
101
+ O: ['·██████╗··', '██╔═══██╗·', '██║···██║·', '╚██████╔╝·', '·╚═════╝··'],
102
+ X: ['██╗···██╗·', '╚██╗·██╔╝·', '·╚████╔╝··', '·██╔═██╗··', '██╔╝·╚██╗·'],
103
+ I: ['···██╗····', '···██║····', '···██║····', '···██║····', '···╚═╝····'],
104
+ M: ['███╗··███╗', '████╗████║', '██╔███╗██║', '██║·╚═╝██║', '╚═╝····╚═╝'],
105
+ W: ['██╗····██╗', '██║····██║', '██║███╗██║', '╚███╔███╔╝', '·╚══╝╚══╝·'],
106
+ Y: ['██╗···██╗·', '╚██╗·██╔╝·', '··╚██╔╝···', '···██║····', '···╚═╝····'],
107
+ };
108
+ const SHADOW_FALLBACK = ['·▄▄▄▄▄▄▄▄·', '·█······█·', '·█······█·', '·█······█·', '·▀▀▀▀▀▀▀▀·'];
56
109
  const isInk = (cell) => cell === '█' || cell === '▀' || cell === '▄';
57
110
  const applyRows = (rows, fn) => rows.map((row, y) => fn(row, y, rows));
58
111
  const applyTable = (table, fn) => Object.fromEntries(Object.entries(table).map(([ch, rows]) => [ch, applyRows(rows, fn)]));
@@ -89,10 +142,17 @@ const BEVEL = (row, y, rows) => {
89
142
  return right || !left ? '█' : '▓';
90
143
  }).join('');
91
144
  };
92
- /** 宽体:6 列最近邻拉到 8 列(竖笔 3 格、字腔 2 格)。 */
145
+ /** 宽体:6 列最近邻拉到 8 列(竖笔 3 格、字腔 2 格)。采样按**像素中心
146
+ * 对齐**(`(x+0.5)·len/8−0.5` 再取整)——朴素的 floor 会把首列元素复制两
147
+ * 份、末列只一份,居中的窄拱字形(如 `A`/`O` 的 `·▄▀▀▄·`)拉伸后左空 2
148
+ * 列右空 1 列、拱整体偏右一列(用户实测"a 左边多了一列");中心对齐后
149
+ * 左右留白等量,拱保持居中。 */
93
150
  const WIDE = row => {
94
151
  const cells = [...row];
95
- return Array.from({ length: 8 }, (_, x) => cells[Math.min(cells.length - 1, Math.floor(x * cells.length / 8))]).join('');
152
+ return Array.from({ length: 8 }, (_, x) => {
153
+ const source = Math.round((x + 0.5) * cells.length / 8 - 0.5);
154
+ return cells[Math.max(0, Math.min(cells.length - 1, source))];
155
+ }).join('');
96
156
  };
97
157
  /**
98
158
  * 镂空模板:中段那一行只在竖笔上留 1 列桥,其余挖空。
@@ -132,17 +192,45 @@ const MAX_KERNING = 8;
132
192
  * |ink(top, tk) − ink(bottom, bk) − 2·indent| ≤ 1 (下排墨迹居中)
133
193
  * 相减即 `|indent − (bk − tk)| ≤ 1`——所以缩进不是自由变量,字距才是。
134
194
  *
135
- * 选解顺序:先要求两行相邻字形之间都至少留 1 列(字身相接会糊成一片),再按
136
- * `tk + bk` 从小到大取第一个满足契约的解——字距最紧、画面最不松散。个别
137
- * (字身宽, 词长) 组合(如 8 列的 `wide` × 9 字的 `HAPPINESS`)只解得出下排零字距,
138
- * 那时才退到允许 0:契约(等宽 + 居中)优先于美观。
195
+ * 选解顺序(`tight`,默认):先要求两行相邻字形之间都至少留 1 列(字身相接
196
+ * 会糊成一片),再按 `tk + bk` 从小到大取第一个满足契约的解——字距最紧、
197
+ * 画面最不松散。个别 (字身宽, 词长) 组合(如 8 列的 `wide` × 9 字的
198
+ * `HAPPINESS`)只解得出下排零字距,那时才退到允许 0:契约(等宽 + 居中)
199
+ * 优先于美观。
200
+ *
201
+ * `wide`(品牌词 CLAUDE/CODE 用):两词字数差大(6 vs 4)时,紧解的上排
202
+ * 字距只有 1(挤),最宽解又到 4/8(空旷)——bold 家族的整数可行解恰好
203
+ * 三档 {1/4, 2/5, 4/8},宽解取**中间档**(字距和最接近紧/宽两极的中点),
204
+ * 舒展而不散。下排字距天然大于上排是等宽契约的数学必然:字数差靠
205
+ * `bk − tk` 的墨迹差补齐;无解则退回 tight。
139
206
  * @param glyphWidth - 字身宽度(列)。
140
207
  * @param top - 上排词。
141
208
  * @param bottom - 下排词(可含空格,空格宽度由 `paintedWidth` 算)。
209
+ * @param mode - `tight`(默认,最紧解)或 `wide`(中间档解,品牌词用)。
142
210
  * @returns 两排字距与下排缩进。
143
211
  */
144
- function solveTagline(glyphWidth, top, bottom) {
212
+ function solveTagline(glyphWidth, top, bottom, mode = 'tight') {
145
213
  const metrics = { glyphWidth };
214
+ if (mode === 'wide') {
215
+ const feasible = [];
216
+ for (let topKerning = 1; topKerning <= MAX_KERNING; topKerning++) {
217
+ for (let bottomKerning = 1; bottomKerning <= MAX_KERNING; bottomKerning++) {
218
+ const bottomIndent = paintedWidth(metrics, top, topKerning) - paintedWidth(metrics, bottom, bottomKerning);
219
+ if (bottomIndent < 0)
220
+ continue;
221
+ const error = Math.abs(bigTextWidth(metrics, top, topKerning) - bigTextWidth(metrics, bottom, bottomKerning) - 2 * bottomIndent);
222
+ if (error > 1)
223
+ continue;
224
+ feasible.push({ topKerning, bottomKerning, bottomIndent, sum: topKerning + bottomKerning });
225
+ }
226
+ }
227
+ if (feasible.length > 0) {
228
+ const minSum = Math.min(...feasible.map(item => item.sum));
229
+ const maxSum = Math.max(...feasible.map(item => item.sum));
230
+ const target = (minSum + maxSum) / 2;
231
+ return feasible.reduce((best, item) => Math.abs(item.sum - target) < Math.abs(best.sum - target) ? item : best);
232
+ }
233
+ }
146
234
  // 兜底:契约在字距上限内无解时,宁可居中差一点,也不让开屏抛错(当前词表不可达)。
147
235
  let closest = null;
148
236
  for (const minKerning of [1, 0]) {
@@ -177,19 +265,34 @@ const font = (id, face) => {
177
265
  };
178
266
  };
179
267
  /**
180
- * 换一副标题词(节日彩蛋用):字形、字身宽度、id 都不变,只按新词重解字距。
181
- * 布局阈值(`resolveSplashLayout`)与渲染都读字体自己的 `tagline`,所以派生对象
182
- * 可以直接顶替原字体——窄终端阶梯一行都不用改。
268
+ * 换一副标题词(品牌词/节日彩蛋用):字形、字身宽度、id 都不变,只按新词
269
+ * 重解字距。布局阈值(`resolveSplashLayout`)与渲染都读字体自己的 `tagline`,
270
+ * 所以派生对象可以直接顶替原字体——窄终端阶梯一行都不用改。
183
271
  * @param font - 基准字体。
184
272
  * @param top - 上排词。
185
273
  * @param bottom - 下排词。
274
+ * @param options - `wide`:取中间档可行解(等宽契约的舒展档);
275
+ * `uniform`:两行同字距(品牌词用——等宽契约靠两行字距互补达成,
276
+ * 字数差大的词对间隙观感不一致;同字距后对齐由渲染层按形态处理)。
186
277
  * @returns 换词后的字体描述符。
187
278
  */
188
- export function withTagline(font, top, bottom) {
189
- return { ...font, tagline: { top, bottom, ...solveTagline(font.glyphWidth, top, bottom) } };
279
+ export function withTagline(font, top, bottom, options) {
280
+ if (options?.uniform === true) {
281
+ // 同字距档(品牌词用,用户点名「两行间隙一致」):两行共用一个字距,
282
+ // 不再拉伸等宽。块宽以基准词对(字体表 DEEPSEEK/HARNESS 紧解的宽行)
283
+ // 为预算——品牌标题的占位与默认档一致,字距在预算内取最大(舒展)。
284
+ // 对齐交给渲染层:居中形态窄行补半差、钉左形态两行左缘对齐。
285
+ const budget = Math.max(paintedWidth(font, font.tagline.top, font.tagline.topKerning), paintedWidth(font, font.tagline.bottom, font.tagline.bottomKerning));
286
+ const wider = paintedWidth(font, top, 1) >= paintedWidth(font, bottom, 1) ? top : bottom;
287
+ let kerning = 1;
288
+ while (kerning < MAX_KERNING && paintedWidth(font, wider, kerning + 1) <= budget)
289
+ kerning += 1;
290
+ return { ...font, tagline: { top, bottom, topKerning: kerning, bottomKerning: kerning, bottomIndent: 0 } };
291
+ }
292
+ return { ...font, tagline: { top, bottom, ...solveTagline(font.glyphWidth, top, bottom, options?.wide === true ? 'wide' : 'tight') } };
190
293
  }
191
- /** 半立体的灰阶:左亮右暗——和字形的"亮面/暗面"共用同一套打光(光从左上来)。 */
192
- const BEVEL_PALETTE = { from: { r: 214, g: 214, b: 214 }, to: { r: 104, g: 104, b: 104 } };
294
+ /** 半立体的配色不再静态写死:LogoV2 按主题 accent 派生亮/暗两档(金属受光),
295
+ * 蓝主题出蓝金属、橙主题出橙金属——静态灰阶在任何主题下都像没上色。 */
193
296
  /**
194
297
  * 字体表:键就是 id(`Record<SplashFontId, …>` 保证不多不少,加一款字体必须先
195
298
  * 进端口的 id 联合)。**书写顺序就是"按天轮换"的取模顺序**;彩蛋词/彩蛋字体不
@@ -198,12 +301,13 @@ const BEVEL_PALETTE = { from: { r: 214, g: 214, b: 214 }, to: { r: 104, g: 104,
198
301
  const SPLASH_FONT_TABLE = {
199
302
  bold: font('bold', { zh: '加粗(基准款)', en: 'Bold (base)', glyphs: BOLD_GLYPHS, fallback: BOLD_FALLBACK }),
200
303
  square: font('square', { zh: '方角实心', en: 'Square solid', glyphs: applyTable(BOLD_GLYPHS, SQUARE), fallback: applyRows(BOLD_FALLBACK, SQUARE) }),
201
- bevel: { ...font('bevel', { zh: '半立体', en: 'Bevel', glyphs: applyTable(BOLD_GLYPHS, BEVEL), fallback: applyRows(BOLD_FALLBACK, BEVEL) }), palette: BEVEL_PALETTE },
304
+ bevel: font('bevel', { zh: '半立体', en: 'Bevel', glyphs: applyTable(BOLD_GLYPHS, BEVEL), fallback: applyRows(BOLD_FALLBACK, BEVEL) }),
202
305
  wide: font('wide', { zh: '宽体', en: 'Wide', glyphs: applyTable(BOLD_GLYPHS, WIDE), fallback: applyRows(BOLD_FALLBACK, WIDE) }),
203
306
  dot: font('dot', { zh: '点阵灰度', en: 'Dot matrix', glyphs: applyTable(BOLD_GLYPHS, DOT), fallback: applyRows(BOLD_FALLBACK, DOT) }),
204
307
  stencil: font('stencil', { zh: '镂空模板', en: 'Stencil', glyphs: applyTable(BOLD_GLYPHS, STENCIL), fallback: applyRows(BOLD_FALLBACK, STENCIL) }),
205
308
  classic: font('classic', { zh: '细笔(经典)', en: 'Thin (classic)', glyphs: CLASSIC_GLYPHS, fallback: CLASSIC_FALLBACK }),
206
309
  slab: font('slab', { zh: '方板(实心横笔)', en: 'Slab (solid bars)', glyphs: SLAB_GLYPHS, fallback: SLAB_FALLBACK }),
310
+ shadow: font('shadow', { zh: '立体弧角(ANSI Shadow)', en: 'Shadow (ANSI)', glyphs: SHADOW_GLYPHS, fallback: SHADOW_FALLBACK }),
207
311
  };
208
312
  /** 轮换池(渲染侧只读这一份;表的书写顺序即轮换顺序)。 */
209
313
  export const SPLASH_FONTS = Object.values(SPLASH_FONT_TABLE);
@@ -1 +1 @@
1
- {"version":3,"file":"splashLayout.d.ts","sourceRoot":"","sources":["../../../src/components/splashLayout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,yCAAyC;AACzC,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC5C,YAAY,CAad"}
1
+ {"version":3,"file":"splashLayout.d.ts","sourceRoot":"","sources":["../../../src/components/splashLayout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,yCAAyC;AACzC,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC5C,YAAY,CAkBd"}
@@ -31,7 +31,9 @@ export function resolveSplashLayout(columns, options) {
31
31
  // 最后一个字形。按 ink 宽判「放得下」,会在恰好卡阈值时让 Ink 走 `truncate-end`
32
32
  // ——最后一个字形被换成 `…`(可达边界:基准款 55 列即复现)。末尾那一格是空白,
33
33
  // 少画一格不可惜,字形被吃掉才可惜。
34
- const titleWidth = bigTextWidth(font, font.tagline.top, font.tagline.topKerning) + font.tagline.topKerning;
34
+ // 大字块按**两行中较宽的那行**判(品牌 uniform 档两行宽度不同——CODEX 窄于
35
+ // HARNESS;只看上排会把下排截掉。deepseek 等宽契约下两行同宽,行为不变)。
36
+ const titleWidth = Math.max(bigTextWidth(font, font.tagline.top, font.tagline.topKerning) + font.tagline.topKerning, bigTextWidth(font, font.tagline.bottom, font.tagline.bottomKerning) + font.tagline.bottomKerning);
35
37
  const fitsTitle = columns >= titleWidth;
36
38
  const showWhale = options.whale &&
37
39
  columns >= WHALE_BOX_WIDTH &&