@drscrewdriver/dsh-better-display 0.3.3-fork.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 (390) hide show
  1. package/CHANGELOG.md +259 -0
  2. package/DESIGN.md +72 -0
  3. package/LICENSE +24 -0
  4. package/README.en.md +55 -0
  5. package/README.md +55 -0
  6. package/THIRD_PARTY_NOTICES.md +65 -0
  7. package/compat/harness-rc2.json +99 -0
  8. package/cordis.patch.yml +5 -0
  9. package/cordis.yml +4 -0
  10. package/docs/official-rendering-bridge.md +65 -0
  11. package/dshx.yml +5 -0
  12. package/lib/client.js +49292 -0
  13. package/lib/client.js.map +1 -0
  14. package/lib/dsh-better-display.js +101 -0
  15. package/lib/types/client/Blocks.d.ts +49 -0
  16. package/lib/types/client/Blocks.d.ts.map +1 -0
  17. package/lib/types/client/Blocks.js +143 -0
  18. package/lib/types/client/Blocks.js.map +1 -0
  19. package/lib/types/client/ChoreographedFlow.d.ts +22 -0
  20. package/lib/types/client/ChoreographedFlow.d.ts.map +1 -0
  21. package/lib/types/client/ChoreographedFlow.js +218 -0
  22. package/lib/types/client/ChoreographedFlow.js.map +1 -0
  23. package/lib/types/client/ClosedProcessSummary.d.ts +9 -0
  24. package/lib/types/client/ClosedProcessSummary.d.ts.map +1 -0
  25. package/lib/types/client/ClosedProcessSummary.js +16 -0
  26. package/lib/types/client/ClosedProcessSummary.js.map +1 -0
  27. package/lib/types/client/DiffPanel.d.ts +13 -0
  28. package/lib/types/client/DiffPanel.d.ts.map +1 -0
  29. package/lib/types/client/DiffPanel.js +115 -0
  30. package/lib/types/client/DiffPanel.js.map +1 -0
  31. package/lib/types/client/LiveFold.d.ts +10 -0
  32. package/lib/types/client/LiveFold.d.ts.map +1 -0
  33. package/lib/types/client/LiveFold.js +39 -0
  34. package/lib/types/client/LiveFold.js.map +1 -0
  35. package/lib/types/client/McpAppFrame.d.ts +32 -0
  36. package/lib/types/client/McpAppFrame.d.ts.map +1 -0
  37. package/lib/types/client/McpAppFrame.js +193 -0
  38. package/lib/types/client/McpAppFrame.js.map +1 -0
  39. package/lib/types/client/OfficialContent.d.ts +25 -0
  40. package/lib/types/client/OfficialContent.d.ts.map +1 -0
  41. package/lib/types/client/OfficialContent.js +53 -0
  42. package/lib/types/client/OfficialContent.js.map +1 -0
  43. package/lib/types/client/Reader.d.ts +3 -0
  44. package/lib/types/client/Reader.d.ts.map +1 -0
  45. package/lib/types/client/Reader.js +603 -0
  46. package/lib/types/client/Reader.js.map +1 -0
  47. package/lib/types/client/ReasoningCard.d.ts +11 -0
  48. package/lib/types/client/ReasoningCard.d.ts.map +1 -0
  49. package/lib/types/client/ReasoningCard.js +322 -0
  50. package/lib/types/client/ReasoningCard.js.map +1 -0
  51. package/lib/types/client/SettingsSection.d.ts +37 -0
  52. package/lib/types/client/SettingsSection.d.ts.map +1 -0
  53. package/lib/types/client/SettingsSection.js +63 -0
  54. package/lib/types/client/SettingsSection.js.map +1 -0
  55. package/lib/types/client/StickyLane.d.ts +8 -0
  56. package/lib/types/client/StickyLane.d.ts.map +1 -0
  57. package/lib/types/client/StickyLane.js +39 -0
  58. package/lib/types/client/StickyLane.js.map +1 -0
  59. package/lib/types/client/TimelineRail.d.ts +10 -0
  60. package/lib/types/client/TimelineRail.d.ts.map +1 -0
  61. package/lib/types/client/TimelineRail.js +168 -0
  62. package/lib/types/client/TimelineRail.js.map +1 -0
  63. package/lib/types/client/ToolActivity.d.ts +17 -0
  64. package/lib/types/client/ToolActivity.d.ts.map +1 -0
  65. package/lib/types/client/ToolActivity.js +244 -0
  66. package/lib/types/client/ToolActivity.js.map +1 -0
  67. package/lib/types/client/TurnMetrics.d.ts +11 -0
  68. package/lib/types/client/TurnMetrics.d.ts.map +1 -0
  69. package/lib/types/client/TurnMetrics.js +44 -0
  70. package/lib/types/client/TurnMetrics.js.map +1 -0
  71. package/lib/types/client/WaitClock.d.ts +16 -0
  72. package/lib/types/client/WaitClock.d.ts.map +1 -0
  73. package/lib/types/client/WaitClock.js +29 -0
  74. package/lib/types/client/WaitClock.js.map +1 -0
  75. package/lib/types/client/WaitingClock.d.ts +15 -0
  76. package/lib/types/client/WaitingClock.d.ts.map +1 -0
  77. package/lib/types/client/WaitingClock.js +30 -0
  78. package/lib/types/client/WaitingClock.js.map +1 -0
  79. package/lib/types/client/WaitingStatus.d.ts +6 -0
  80. package/lib/types/client/WaitingStatus.d.ts.map +1 -0
  81. package/lib/types/client/WaitingStatus.js +9 -0
  82. package/lib/types/client/WaitingStatus.js.map +1 -0
  83. package/lib/types/client/conversation-scroll.d.ts +19 -0
  84. package/lib/types/client/conversation-scroll.d.ts.map +1 -0
  85. package/lib/types/client/conversation-scroll.js +25 -0
  86. package/lib/types/client/conversation-scroll.js.map +1 -0
  87. package/lib/types/client/deliverables.d.ts +24 -0
  88. package/lib/types/client/deliverables.d.ts.map +1 -0
  89. package/lib/types/client/deliverables.js +104 -0
  90. package/lib/types/client/deliverables.js.map +1 -0
  91. package/lib/types/client/entry-policy.d.ts +10 -0
  92. package/lib/types/client/entry-policy.d.ts.map +1 -0
  93. package/lib/types/client/entry-policy.js +24 -0
  94. package/lib/types/client/entry-policy.js.map +1 -0
  95. package/lib/types/client/entry.d.ts +4 -0
  96. package/lib/types/client/entry.d.ts.map +1 -0
  97. package/lib/types/client/entry.js +34 -0
  98. package/lib/types/client/entry.js.map +1 -0
  99. package/lib/types/client/fold-choreography.d.ts +40 -0
  100. package/lib/types/client/fold-choreography.d.ts.map +1 -0
  101. package/lib/types/client/fold-choreography.js +48 -0
  102. package/lib/types/client/fold-choreography.js.map +1 -0
  103. package/lib/types/client/fold-intensity.d.ts +11 -0
  104. package/lib/types/client/fold-intensity.d.ts.map +1 -0
  105. package/lib/types/client/fold-intensity.js +32 -0
  106. package/lib/types/client/fold-intensity.js.map +1 -0
  107. package/lib/types/client/index.d.ts +7 -0
  108. package/lib/types/client/index.d.ts.map +1 -0
  109. package/lib/types/client/index.js +195 -0
  110. package/lib/types/client/index.js.map +1 -0
  111. package/lib/types/client/live-turn.d.ts +58 -0
  112. package/lib/types/client/live-turn.d.ts.map +1 -0
  113. package/lib/types/client/live-turn.js +190 -0
  114. package/lib/types/client/live-turn.js.map +1 -0
  115. package/lib/types/client/markdown/MarkdownText.d.ts +41 -0
  116. package/lib/types/client/markdown/MarkdownText.d.ts.map +1 -0
  117. package/lib/types/client/markdown/MarkdownText.js +178 -0
  118. package/lib/types/client/markdown/MarkdownText.js.map +1 -0
  119. package/lib/types/client/markdown/cjkFriendlyStrong.d.ts +9 -0
  120. package/lib/types/client/markdown/cjkFriendlyStrong.d.ts.map +1 -0
  121. package/lib/types/client/markdown/cjkFriendlyStrong.js +73 -0
  122. package/lib/types/client/markdown/cjkFriendlyStrong.js.map +1 -0
  123. package/lib/types/client/markdown/incremental.d.ts +69 -0
  124. package/lib/types/client/markdown/incremental.d.ts.map +1 -0
  125. package/lib/types/client/markdown/incremental.js +108 -0
  126. package/lib/types/client/markdown/incremental.js.map +1 -0
  127. package/lib/types/client/markdown/katex.d.ts +27 -0
  128. package/lib/types/client/markdown/katex.d.ts.map +1 -0
  129. package/lib/types/client/markdown/katex.js +88 -0
  130. package/lib/types/client/markdown/katex.js.map +1 -0
  131. package/lib/types/client/markdown/mathCompatibility.d.ts +11 -0
  132. package/lib/types/client/markdown/mathCompatibility.d.ts.map +1 -0
  133. package/lib/types/client/markdown/mathCompatibility.js +293 -0
  134. package/lib/types/client/markdown/mathCompatibility.js.map +1 -0
  135. package/lib/types/client/markdown/parse.d.ts +25 -0
  136. package/lib/types/client/markdown/parse.d.ts.map +1 -0
  137. package/lib/types/client/markdown/parse.js +42 -0
  138. package/lib/types/client/markdown/parse.js.map +1 -0
  139. package/lib/types/client/markdown/render.d.ts +121 -0
  140. package/lib/types/client/markdown/render.d.ts.map +1 -0
  141. package/lib/types/client/markdown/render.js +452 -0
  142. package/lib/types/client/markdown/render.js.map +1 -0
  143. package/lib/types/client/mcp-app.d.ts +50 -0
  144. package/lib/types/client/mcp-app.d.ts.map +1 -0
  145. package/lib/types/client/mcp-app.js +328 -0
  146. package/lib/types/client/mcp-app.js.map +1 -0
  147. package/lib/types/client/message-chrome.d.ts +19 -0
  148. package/lib/types/client/message-chrome.d.ts.map +1 -0
  149. package/lib/types/client/message-chrome.js +42 -0
  150. package/lib/types/client/message-chrome.js.map +1 -0
  151. package/lib/types/client/motion.d.ts +38 -0
  152. package/lib/types/client/motion.d.ts.map +1 -0
  153. package/lib/types/client/motion.js +453 -0
  154. package/lib/types/client/motion.js.map +1 -0
  155. package/lib/types/client/native/ContextBody.d.ts +130 -0
  156. package/lib/types/client/native/ContextBody.d.ts.map +1 -0
  157. package/lib/types/client/native/ContextBody.js +398 -0
  158. package/lib/types/client/native/ContextBody.js.map +1 -0
  159. package/lib/types/client/native/ContextInjectionRow.d.ts +35 -0
  160. package/lib/types/client/native/ContextInjectionRow.d.ts.map +1 -0
  161. package/lib/types/client/native/ContextInjectionRow.js +42 -0
  162. package/lib/types/client/native/ContextInjectionRow.js.map +1 -0
  163. package/lib/types/client/native/ReferenceIcon.d.ts +16 -0
  164. package/lib/types/client/native/ReferenceIcon.d.ts.map +1 -0
  165. package/lib/types/client/native/ReferenceIcon.js +16 -0
  166. package/lib/types/client/native/ReferenceIcon.js.map +1 -0
  167. package/lib/types/client/native/tool-call-model.d.ts +58 -0
  168. package/lib/types/client/native/tool-call-model.d.ts.map +1 -0
  169. package/lib/types/client/native/tool-call-model.js +219 -0
  170. package/lib/types/client/native/tool-call-model.js.map +1 -0
  171. package/lib/types/client/native/tool-update.d.ts +23 -0
  172. package/lib/types/client/native/tool-update.d.ts.map +1 -0
  173. package/lib/types/client/native/tool-update.js +22 -0
  174. package/lib/types/client/native/tool-update.js.map +1 -0
  175. package/lib/types/client/official-slots.d.ts +71 -0
  176. package/lib/types/client/official-slots.d.ts.map +1 -0
  177. package/lib/types/client/official-slots.js +183 -0
  178. package/lib/types/client/official-slots.js.map +1 -0
  179. package/lib/types/client/open-file.d.ts +29 -0
  180. package/lib/types/client/open-file.d.ts.map +1 -0
  181. package/lib/types/client/open-file.js +71 -0
  182. package/lib/types/client/open-file.js.map +1 -0
  183. package/lib/types/client/pending-submission.d.ts +28 -0
  184. package/lib/types/client/pending-submission.d.ts.map +1 -0
  185. package/lib/types/client/pending-submission.js +28 -0
  186. package/lib/types/client/pending-submission.js.map +1 -0
  187. package/lib/types/client/platform-media.d.ts +6 -0
  188. package/lib/types/client/platform-media.d.ts.map +1 -0
  189. package/lib/types/client/platform-media.js +18 -0
  190. package/lib/types/client/platform-media.js.map +1 -0
  191. package/lib/types/client/primitive-labels.d.ts +10 -0
  192. package/lib/types/client/primitive-labels.d.ts.map +1 -0
  193. package/lib/types/client/primitive-labels.js +38 -0
  194. package/lib/types/client/primitive-labels.js.map +1 -0
  195. package/lib/types/client/projection.d.ts +41 -0
  196. package/lib/types/client/projection.d.ts.map +1 -0
  197. package/lib/types/client/projection.js +112 -0
  198. package/lib/types/client/projection.js.map +1 -0
  199. package/lib/types/client/reasoning-follow.d.ts +10 -0
  200. package/lib/types/client/reasoning-follow.d.ts.map +1 -0
  201. package/lib/types/client/reasoning-follow.js +21 -0
  202. package/lib/types/client/reasoning-follow.js.map +1 -0
  203. package/lib/types/client/resource-address.d.ts +3 -0
  204. package/lib/types/client/resource-address.d.ts.map +1 -0
  205. package/lib/types/client/resource-address.js +33 -0
  206. package/lib/types/client/resource-address.js.map +1 -0
  207. package/lib/types/client/settings-copy.d.ts +7 -0
  208. package/lib/types/client/settings-copy.d.ts.map +1 -0
  209. package/lib/types/client/settings-copy.js +53 -0
  210. package/lib/types/client/settings-copy.js.map +1 -0
  211. package/lib/types/client/settings-slots.d.ts +23 -0
  212. package/lib/types/client/settings-slots.d.ts.map +1 -0
  213. package/lib/types/client/settings-slots.js +2 -0
  214. package/lib/types/client/settings-slots.js.map +1 -0
  215. package/lib/types/client/settings.d.ts +4 -0
  216. package/lib/types/client/settings.d.ts.map +1 -0
  217. package/lib/types/client/settings.js +60 -0
  218. package/lib/types/client/settings.js.map +1 -0
  219. package/lib/types/client/skill-status.d.ts +25 -0
  220. package/lib/types/client/skill-status.d.ts.map +1 -0
  221. package/lib/types/client/skill-status.js +44 -0
  222. package/lib/types/client/skill-status.js.map +1 -0
  223. package/lib/types/client/store.d.ts +35 -0
  224. package/lib/types/client/store.d.ts.map +1 -0
  225. package/lib/types/client/store.js +37 -0
  226. package/lib/types/client/store.js.map +1 -0
  227. package/lib/types/client/stream-buffer.d.ts +37 -0
  228. package/lib/types/client/stream-buffer.d.ts.map +1 -0
  229. package/lib/types/client/stream-buffer.js +150 -0
  230. package/lib/types/client/stream-buffer.js.map +1 -0
  231. package/lib/types/client/streaming.d.ts +18 -0
  232. package/lib/types/client/streaming.d.ts.map +1 -0
  233. package/lib/types/client/streaming.js +84 -0
  234. package/lib/types/client/streaming.js.map +1 -0
  235. package/lib/types/client/timeline.d.ts +26 -0
  236. package/lib/types/client/timeline.d.ts.map +1 -0
  237. package/lib/types/client/timeline.js +48 -0
  238. package/lib/types/client/timeline.js.map +1 -0
  239. package/lib/types/client/tool-activity.d.ts +98 -0
  240. package/lib/types/client/tool-activity.d.ts.map +1 -0
  241. package/lib/types/client/tool-activity.js +301 -0
  242. package/lib/types/client/tool-activity.js.map +1 -0
  243. package/lib/types/client/types.d.ts +91 -0
  244. package/lib/types/client/types.d.ts.map +1 -0
  245. package/lib/types/client/types.js +2 -0
  246. package/lib/types/client/types.js.map +1 -0
  247. package/lib/types/client/waiting-clock.d.ts +49 -0
  248. package/lib/types/client/waiting-clock.d.ts.map +1 -0
  249. package/lib/types/client/waiting-clock.js +80 -0
  250. package/lib/types/client/waiting-clock.js.map +1 -0
  251. package/lib/types/client/word-motion.d.ts +16 -0
  252. package/lib/types/client/word-motion.d.ts.map +1 -0
  253. package/lib/types/client/word-motion.js +90 -0
  254. package/lib/types/client/word-motion.js.map +1 -0
  255. package/lib/types/client/word-timeline.d.ts +32 -0
  256. package/lib/types/client/word-timeline.d.ts.map +1 -0
  257. package/lib/types/client/word-timeline.js +119 -0
  258. package/lib/types/client/word-timeline.js.map +1 -0
  259. package/lib/types/dsh-better-display.d.ts +17 -0
  260. package/lib/types/dsh-better-display.d.ts.map +1 -0
  261. package/lib/types/dsh-better-display.js +93 -0
  262. package/lib/types/dsh-better-display.js.map +1 -0
  263. package/lib/types/skill-roots.d.ts +22 -0
  264. package/lib/types/skill-roots.d.ts.map +1 -0
  265. package/lib/types/skill-roots.js +126 -0
  266. package/lib/types/skill-roots.js.map +1 -0
  267. package/lib/types/skill-status.d.ts +36 -0
  268. package/lib/types/skill-status.d.ts.map +1 -0
  269. package/lib/types/skill-status.js +51 -0
  270. package/lib/types/skill-status.js.map +1 -0
  271. package/package.json +133 -0
  272. package/scripts/build-motion-fixture.mjs +26 -0
  273. package/scripts/check-harness-compat.mjs +71 -0
  274. package/scripts/link-harness-dependencies.mjs +54 -0
  275. package/scripts/verify-auto-fold.mjs +114 -0
  276. package/scripts/verify-official-bridge.mjs +121 -0
  277. package/scripts/verify-tool-shimmer.mjs +62 -0
  278. package/skills/generative-mcpapps/SKILL.md +47 -0
  279. package/skills/generative-mcpapps/examples/interactive_quiz.html +153 -0
  280. package/skills/generative-mcpapps/references/html_boilerplate.md +122 -0
  281. package/skills/generative-mcpapps/references/sep1865_protocol.md +54 -0
  282. package/src/client/Blocks.tsx +213 -0
  283. package/src/client/ChoreographedFlow.tsx +232 -0
  284. package/src/client/ClosedProcessSummary.tsx +23 -0
  285. package/src/client/DiffPanel.tsx +124 -0
  286. package/src/client/LiveFold.tsx +43 -0
  287. package/src/client/McpAppFrame.module.css +210 -0
  288. package/src/client/McpAppFrame.tsx +317 -0
  289. package/src/client/OfficialContent.tsx +69 -0
  290. package/src/client/Reader.module.css +692 -0
  291. package/src/client/Reader.tsx +878 -0
  292. package/src/client/ReasoningCard.tsx +306 -0
  293. package/src/client/SettingsSection.module.css +184 -0
  294. package/src/client/SettingsSection.tsx +194 -0
  295. package/src/client/StickyLane.tsx +34 -0
  296. package/src/client/TimelineRail.module.css +170 -0
  297. package/src/client/TimelineRail.tsx +262 -0
  298. package/src/client/ToolActivity.tsx +274 -0
  299. package/src/client/TurnMetrics.module.css +139 -0
  300. package/src/client/TurnMetrics.tsx +160 -0
  301. package/src/client/WaitClock.tsx +33 -0
  302. package/src/client/WaitingStatus.tsx +13 -0
  303. package/src/client/conversation-scroll.ts +28 -0
  304. package/src/client/deliverables.ts +122 -0
  305. package/src/client/entry-policy.ts +20 -0
  306. package/src/client/entry.tsx +40 -0
  307. package/src/client/fold-choreography.ts +55 -0
  308. package/src/client/fold-intensity.ts +36 -0
  309. package/src/client/index.tsx +222 -0
  310. package/src/client/live-turn.ts +198 -0
  311. package/src/client/markdown/MarkdownText.module.css +304 -0
  312. package/src/client/markdown/MarkdownText.tsx +195 -0
  313. package/src/client/markdown/cjkFriendlyStrong.ts +84 -0
  314. package/src/client/markdown/incremental.ts +131 -0
  315. package/src/client/markdown/katex.tsx +91 -0
  316. package/src/client/markdown/mathCompatibility.ts +350 -0
  317. package/src/client/markdown/parse.ts +45 -0
  318. package/src/client/markdown/render.tsx +647 -0
  319. package/src/client/markdown/upstream.json +14 -0
  320. package/src/client/mcp-app.ts +323 -0
  321. package/src/client/message-chrome.ts +47 -0
  322. package/src/client/motion.tsx +410 -0
  323. package/src/client/native/ContextBody.module.css +161 -0
  324. package/src/client/native/ContextBody.tsx +591 -0
  325. package/src/client/native/ContextInjectionRow.module.css +66 -0
  326. package/src/client/native/ContextInjectionRow.tsx +106 -0
  327. package/src/client/native/ReferenceIcon.tsx +35 -0
  328. package/src/client/native/tool-call-model.ts +248 -0
  329. package/src/client/native/tool-update.ts +32 -0
  330. package/src/client/native/upstream.json +41 -0
  331. package/src/client/official-slots.tsx +211 -0
  332. package/src/client/open-file.ts +94 -0
  333. package/src/client/pending-submission.ts +49 -0
  334. package/src/client/platform-media.ts +17 -0
  335. package/src/client/primitive-labels.ts +54 -0
  336. package/src/client/projection.ts +118 -0
  337. package/src/client/reasoning-follow.ts +28 -0
  338. package/src/client/settings-copy.ts +80 -0
  339. package/src/client/settings-slots.ts +20 -0
  340. package/src/client/settings.tsx +73 -0
  341. package/src/client/skill-status.ts +78 -0
  342. package/src/client/store.ts +75 -0
  343. package/src/client/stream-buffer.ts +136 -0
  344. package/src/client/streaming.tsx +70 -0
  345. package/src/client/style.d.ts +4 -0
  346. package/src/client/timeline.ts +77 -0
  347. package/src/client/tool-activity.ts +298 -0
  348. package/src/client/types.ts +89 -0
  349. package/src/client/waiting-clock.ts +83 -0
  350. package/src/client/word-motion.tsx +92 -0
  351. package/src/client/word-timeline.ts +113 -0
  352. package/src/dsh-better-display.ts +108 -0
  353. package/src/skill-roots.ts +138 -0
  354. package/src/skill-status.ts +81 -0
  355. package/tests/browser-auto-fold.tsx +64 -0
  356. package/tests/browser-closed-gap.tsx +20 -0
  357. package/tests/browser-motion.tsx +65 -0
  358. package/tests/browser-official-bridge.tsx +152 -0
  359. package/tests/browser-sticky-lanes.tsx +22 -0
  360. package/tests/browser-waiting-clock.tsx +14 -0
  361. package/tests/chat-flow-hook.test.ts +66 -0
  362. package/tests/cloud-gate.test.ts +34 -0
  363. package/tests/context-tool-update.test.ts +33 -0
  364. package/tests/conversation-scroll.test.ts +47 -0
  365. package/tests/deliverables.test.ts +128 -0
  366. package/tests/entry.test.ts +42 -0
  367. package/tests/fixtures/maid-composer-hide.html +31 -0
  368. package/tests/fold-choreography.test.ts +54 -0
  369. package/tests/fold-intensity.test.ts +94 -0
  370. package/tests/footer-precedence.test.ts +129 -0
  371. package/tests/history-word-regression.test.ts +16 -0
  372. package/tests/live-turn.test.ts +218 -0
  373. package/tests/mcp-apps.test.ts +157 -0
  374. package/tests/message-chrome.test.ts +29 -0
  375. package/tests/official-slots.test.ts +112 -0
  376. package/tests/open-file.test.ts +114 -0
  377. package/tests/pending-submission.test.ts +45 -0
  378. package/tests/platform-media.test.ts +23 -0
  379. package/tests/projection.test.ts +184 -0
  380. package/tests/reasoning-follow.test.ts +34 -0
  381. package/tests/settings-copy.test.ts +63 -0
  382. package/tests/skill-status.test.ts +137 -0
  383. package/tests/stock-install.test.ts +58 -0
  384. package/tests/stream-buffer.test.ts +102 -0
  385. package/tests/timeline.test.ts +59 -0
  386. package/tests/tool-diff.test.ts +57 -0
  387. package/tests/waiting-clock.test.ts +83 -0
  388. package/tests/word-timeline.test.ts +146 -0
  389. package/tsconfig.json +11 -0
  390. package/tsdown.config.ts +51 -0
@@ -0,0 +1,293 @@
1
+ // Adapted from DeepSeek Harness b150a551b8d465e31e418e1b2eaf5e79bbb7d28e (MIT). See THIRD_PARTY_NOTICES.md.
2
+ /** Extend upstream dollar-only math syntax with TeX delimiters while reusing its token vocabulary. */
3
+ import { factorySpace } from 'micromark-factory-space';
4
+ import { markdownLineEnding } from 'micromark-util-character';
5
+ import { codes, constants, types } from 'micromark-util-symbol';
6
+ // oxlint-disable typescript/no-this-alias -- micromark binds tokenizer context only on the outer callback.
7
+ const previousBackslash = function (code) {
8
+ if (code !== codes.backslash)
9
+ return true;
10
+ const tail = this.events.at(-1);
11
+ /* v8 ignore next -- a previous code necessarily has a preceding event. */
12
+ if (tail === undefined)
13
+ return false;
14
+ return tail[1].type === types.characterEscape;
15
+ };
16
+ const tokenizeBackslashMathText = function (effects, ok, nok) {
17
+ return start;
18
+ function start(code) {
19
+ /* v8 ignore next -- the text construct is dispatched only for a backslash. */
20
+ if (code !== codes.backslash)
21
+ return nok(code);
22
+ effects.enter('mathText');
23
+ effects.enter('mathTextSequence');
24
+ effects.consume(code);
25
+ return open;
26
+ }
27
+ function open(code) {
28
+ if (code !== codes.leftParenthesis)
29
+ return nok(code);
30
+ effects.consume(code);
31
+ effects.exit('mathTextSequence');
32
+ return between;
33
+ }
34
+ function between(code) {
35
+ if (code === codes.eof)
36
+ return nok(code);
37
+ if (code === codes.backslash) {
38
+ return effects.attempt({ partial: true, tokenize: tokenizeClose }, close, afterCloseAttempt)(code);
39
+ }
40
+ if (markdownLineEnding(code)) {
41
+ effects.enter(types.lineEnding);
42
+ effects.consume(code);
43
+ effects.exit(types.lineEnding);
44
+ return between;
45
+ }
46
+ return dataStart(code);
47
+ }
48
+ function afterCloseAttempt(code) {
49
+ return effects.check({ partial: true, tokenize: tokenizeOpen }, nok, dataStart)(code);
50
+ }
51
+ function dataStart(code) {
52
+ effects.enter('mathTextData');
53
+ effects.consume(code);
54
+ return code === codes.backslash ? afterDataBackslash : data;
55
+ }
56
+ function afterDataBackslash(code) {
57
+ if (code === codes.backslash) {
58
+ effects.consume(code);
59
+ return data;
60
+ }
61
+ return data(code);
62
+ }
63
+ function data(code) {
64
+ if (code === codes.eof || code === codes.backslash || markdownLineEnding(code)) {
65
+ effects.exit('mathTextData');
66
+ return between(code);
67
+ }
68
+ effects.consume(code);
69
+ return data;
70
+ }
71
+ function close(code) {
72
+ effects.exit('mathText');
73
+ return ok(code);
74
+ }
75
+ function tokenizeClose(closeEffects, closeOk, closeNok) {
76
+ return slash;
77
+ function slash(code) {
78
+ /* v8 ignore next -- this partial construct is attempted only at a backslash. */
79
+ if (code !== codes.backslash)
80
+ return closeNok(code);
81
+ closeEffects.enter('mathTextSequence');
82
+ closeEffects.consume(code);
83
+ return parenthesis;
84
+ }
85
+ function parenthesis(code) {
86
+ if (code !== codes.rightParenthesis)
87
+ return closeNok(code);
88
+ closeEffects.consume(code);
89
+ closeEffects.exit('mathTextSequence');
90
+ return closeOk;
91
+ }
92
+ }
93
+ function tokenizeOpen(openEffects, openOk, openNok) {
94
+ return slash;
95
+ function slash(code) {
96
+ /* v8 ignore next -- the opening check follows a failed close attempt at a backslash. */
97
+ if (code !== codes.backslash)
98
+ return openNok(code);
99
+ openEffects.enter(types.chunkString);
100
+ openEffects.consume(code);
101
+ return parenthesis;
102
+ }
103
+ function parenthesis(code) {
104
+ if (code !== codes.leftParenthesis)
105
+ return openNok(code);
106
+ openEffects.consume(code);
107
+ openEffects.exit(types.chunkString);
108
+ return openOk;
109
+ }
110
+ }
111
+ };
112
+ function createMathFlow(marker, openMarker, closeMarker, multiline) {
113
+ const tokenize = function (effects, ok, nok) {
114
+ const self = this;
115
+ let oddBackslashRun = false;
116
+ const tail = self.events.at(-1);
117
+ const initialSize = tail?.[1].type === types.linePrefix
118
+ ? tail[2].sliceSerialize(tail[1], true).length
119
+ : 0;
120
+ return start;
121
+ function start(code) {
122
+ /* v8 ignore next -- the flow construct is dispatched only for its marker. */
123
+ if (code !== marker)
124
+ return nok(code);
125
+ effects.enter('mathFlow');
126
+ effects.enter('mathFlowFence');
127
+ effects.enter('mathFlowFenceSequence');
128
+ effects.consume(code);
129
+ return open;
130
+ }
131
+ function open(code) {
132
+ if (code !== openMarker)
133
+ return nok(code);
134
+ effects.consume(code);
135
+ effects.exit('mathFlowFenceSequence');
136
+ effects.exit('mathFlowFence');
137
+ return marker === codes.dollarSign ? afterDollarOpen : content;
138
+ }
139
+ function afterDollarOpen(code) {
140
+ return code === codes.dollarSign ? nok(code) : content(code);
141
+ }
142
+ function content(code) {
143
+ if (code === codes.eof)
144
+ return nok(code);
145
+ if (code === marker && (marker !== codes.dollarSign || !oddBackslashRun)) {
146
+ return effects.attempt({ partial: true, tokenize: tokenizeClosingFence }, closed, afterClosingFenceAttempt)(code);
147
+ }
148
+ if (markdownLineEnding(code)) {
149
+ return multiline
150
+ ? effects.attempt(nonLazyContinuation, afterContinuation, nok)(code)
151
+ : nok(code);
152
+ }
153
+ return valueStart(code);
154
+ }
155
+ function afterClosingFenceAttempt(code) {
156
+ return marker === codes.backslash
157
+ ? effects.check({ partial: true, tokenize: tokenizeOpeningFence }, nok, markerValueStart)(code)
158
+ : markerValueStart(code);
159
+ }
160
+ function afterContinuation(code) {
161
+ return effects.attempt({ partial: true, tokenize: tokenizeClosingFence }, closed, initialSize
162
+ ? factorySpace(effects, content, types.linePrefix, initialSize + 1)
163
+ : content)(code);
164
+ }
165
+ function valueStart(code) {
166
+ effects.enter('mathFlowValue');
167
+ oddBackslashRun = code === codes.backslash;
168
+ effects.consume(code);
169
+ return value;
170
+ }
171
+ function markerValueStart(code) {
172
+ effects.enter('mathFlowValue');
173
+ oddBackslashRun = false;
174
+ effects.consume(code);
175
+ return valueAfterMarker;
176
+ }
177
+ function valueAfterMarker(code) {
178
+ if (code === marker) {
179
+ effects.consume(code);
180
+ return value;
181
+ }
182
+ return value(code);
183
+ }
184
+ function value(code) {
185
+ if (code === codes.eof || code === marker || markdownLineEnding(code)) {
186
+ effects.exit('mathFlowValue');
187
+ return content(code);
188
+ }
189
+ oddBackslashRun = code === codes.backslash ? !oddBackslashRun : false;
190
+ effects.consume(code);
191
+ return value;
192
+ }
193
+ function closed(code) {
194
+ effects.exit('mathFlow');
195
+ return ok(code);
196
+ }
197
+ function tokenizeClosingFence(closeEffects, closeOk, closeNok) {
198
+ return factorySpace(closeEffects, sequenceStart, types.linePrefix, constants.tabSize);
199
+ function sequenceStart(code) {
200
+ if (code !== marker)
201
+ return closeNok(code);
202
+ closeEffects.enter('mathFlowFence');
203
+ closeEffects.enter('mathFlowFenceSequence');
204
+ closeEffects.consume(code);
205
+ return sequenceEnd;
206
+ }
207
+ function sequenceEnd(code) {
208
+ if (code !== closeMarker)
209
+ return closeNok(code);
210
+ closeEffects.consume(code);
211
+ closeEffects.exit('mathFlowFenceSequence');
212
+ return factorySpace(closeEffects, after, types.whitespace);
213
+ }
214
+ function after(code) {
215
+ if (code !== codes.eof && !markdownLineEnding(code))
216
+ return closeNok(code);
217
+ closeEffects.exit('mathFlowFence');
218
+ return closeOk(code);
219
+ }
220
+ }
221
+ function tokenizeOpeningFence(openEffects, openOk, openNok) {
222
+ return sequenceStart;
223
+ function sequenceStart(code) {
224
+ /* v8 ignore next -- the opening check follows a failed close attempt at the marker. */
225
+ if (code !== marker)
226
+ return openNok(code);
227
+ openEffects.enter(types.chunkString);
228
+ openEffects.consume(code);
229
+ return sequenceEnd;
230
+ }
231
+ function sequenceEnd(code) {
232
+ if (code !== openMarker)
233
+ return openNok(code);
234
+ openEffects.consume(code);
235
+ openEffects.exit(types.chunkString);
236
+ return openOk;
237
+ }
238
+ }
239
+ };
240
+ return {
241
+ concrete: true,
242
+ name: marker === codes.dollarSign ? 'sameLineDollarMathFlow' : 'backslashMathFlow',
243
+ tokenize,
244
+ };
245
+ }
246
+ const tokenizeNonLazyContinuation = function (effects, ok, nok) {
247
+ const self = this;
248
+ return start;
249
+ function start(code) {
250
+ /* v8 ignore next -- continuation constructs are attempted only after a line ending. */
251
+ if (code === codes.eof)
252
+ return ok(code);
253
+ /* v8 ignore next -- continuation constructs are attempted only after a line ending. */
254
+ if (!markdownLineEnding(code))
255
+ return nok(code);
256
+ effects.enter(types.lineEnding);
257
+ effects.consume(code);
258
+ effects.exit(types.lineEnding);
259
+ return lineStart;
260
+ }
261
+ function lineStart(code) {
262
+ return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
263
+ }
264
+ };
265
+ const nonLazyContinuation = {
266
+ partial: true,
267
+ tokenize: tokenizeNonLazyContinuation,
268
+ };
269
+ const backslashMathText = {
270
+ name: 'backslashMathText',
271
+ previous: previousBackslash,
272
+ tokenize: tokenizeBackslashMathText,
273
+ };
274
+ const backslashMathFlow = createMathFlow(codes.backslash, codes.leftSquareBracket, codes.rightSquareBracket, true);
275
+ const sameLineDollarMathFlow = createMathFlow(codes.dollarSign, codes.dollarSign, codes.dollarSign, false);
276
+ const backslashMath = {
277
+ flow: {
278
+ [codes.backslash]: backslashMathFlow,
279
+ [codes.dollarSign]: sameLineDollarMathFlow,
280
+ },
281
+ text: { [codes.backslash]: backslashMathText },
282
+ };
283
+ /**
284
+ * TeX backslash delimiters and same-line display-dollar blocks as a micromark
285
+ * syntax extension reusing `micromark-extension-math`'s token vocabulary; the
286
+ * caller must also register `math()` on the same parse so the emitted tokens
287
+ * compile to standard math nodes.
288
+ * @returns The micromark syntax extension.
289
+ */
290
+ export function mathCompatibility() {
291
+ return backslashMath;
292
+ }
293
+ //# sourceMappingURL=mathCompatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathCompatibility.js","sourceRoot":"","sources":["../../../../src/client/markdown/mathCompatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The markdown renderer's two mdast grammars, one per rendering arm. Each
3
+ * arm is internally consistent — the incremental tail parses, the one-shot
4
+ * parses, and the plain-text projection of a given grammar always agree on
5
+ * where blocks start and end — and the settled grammar is the streaming one
6
+ * plus the math extensions, so the arms differ only where TeX delimiters
7
+ * begin a math construct (a `$$` block is a paragraph while streaming and a
8
+ * math block once settled, by design).
9
+ */
10
+ import type { Root } from 'mdast';
11
+ /**
12
+ * Parse GFM markdown (the streaming arm's grammar: no math, so incomplete
13
+ * TeX never flashes KaTeX errors mid-stream).
14
+ * @param text - Markdown source.
15
+ * @returns The mdast root.
16
+ */
17
+ export declare function parseGfm(text: string): Root;
18
+ /**
19
+ * Parse GFM markdown plus TeX math with the compatibility delimiters
20
+ * (the settled arm's grammar).
21
+ * @param text - Markdown source.
22
+ * @returns The mdast root.
23
+ */
24
+ export declare function parseGfmWithMath(text: string): Root;
25
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/client/markdown/parse.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AASjC;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK3C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD"}
@@ -0,0 +1,42 @@
1
+ // Adapted from DeepSeek Harness b150a551b8d465e31e418e1b2eaf5e79bbb7d28e (MIT). See THIRD_PARTY_NOTICES.md.
2
+ /**
3
+ * The markdown renderer's two mdast grammars, one per rendering arm. Each
4
+ * arm is internally consistent — the incremental tail parses, the one-shot
5
+ * parses, and the plain-text projection of a given grammar always agree on
6
+ * where blocks start and end — and the settled grammar is the streaming one
7
+ * plus the math extensions, so the arms differ only where TeX delimiters
8
+ * begin a math construct (a `$$` block is a paragraph while streaming and a
9
+ * math block once settled, by design).
10
+ */
11
+ import { fromMarkdown } from 'mdast-util-from-markdown';
12
+ import { gfmFromMarkdown } from 'mdast-util-gfm';
13
+ import { mathFromMarkdown } from 'mdast-util-math';
14
+ import { gfm } from 'micromark-extension-gfm';
15
+ import { math } from 'micromark-extension-math';
16
+ import { cjkFriendlyStrong } from './cjkFriendlyStrong.js';
17
+ import { mathCompatibility } from './mathCompatibility.js';
18
+ /**
19
+ * Parse GFM markdown (the streaming arm's grammar: no math, so incomplete
20
+ * TeX never flashes KaTeX errors mid-stream).
21
+ * @param text - Markdown source.
22
+ * @returns The mdast root.
23
+ */
24
+ export function parseGfm(text) {
25
+ return fromMarkdown(text, {
26
+ extensions: [gfm(), cjkFriendlyStrong()],
27
+ mdastExtensions: [gfmFromMarkdown()],
28
+ });
29
+ }
30
+ /**
31
+ * Parse GFM markdown plus TeX math with the compatibility delimiters
32
+ * (the settled arm's grammar).
33
+ * @param text - Markdown source.
34
+ * @returns The mdast root.
35
+ */
36
+ export function parseGfmWithMath(text) {
37
+ return fromMarkdown(text, {
38
+ extensions: [gfm(), cjkFriendlyStrong(), mathCompatibility(), math()],
39
+ mdastExtensions: [gfmFromMarkdown(), mathFromMarkdown()],
40
+ });
41
+ }
42
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/client/markdown/parse.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,EAAE;QACxB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,CAAC;QACxC,eAAe,EAAE,CAAC,eAAe,EAAE,CAAC;KACrC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,YAAY,CAAC,IAAI,EAAE;QACxB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC;QACrE,eAAe,EAAE,CAAC,eAAe,EAAE,EAAE,gBAAgB,EAAE,CAAC;KACzD,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Direct mdast→React markdown renderer. Replaces the react-markdown /
3
+ * remark-rehype pipeline with one switch over parsed nodes so streaming can
4
+ * cache frozen blocks as React elements; the rendered DOM is pinned
5
+ * byte-for-byte by `tests/fixtures/markdown-dom` and must not drift.
6
+ *
7
+ * Untrusted-output policy (unchanged from the replaced pipeline): link and
8
+ * image destinations pass a protocol allowlist, images additionally require
9
+ * absolute HTTP(S), raw HTML renders as literal text (no HTML enters the
10
+ * DOM), and KaTeX runs without trusted commands. Fragment-anchor URLs fail
11
+ * the allowlist, so footnote references and back-references render as plain
12
+ * text rather than in-page links.
13
+ *
14
+ * Merge-extensible node unions fall through the documented default (render
15
+ * nothing) rather than ending in assertNever: grammars registered elsewhere
16
+ * may add node types this renderer has no mapping for.
17
+ */
18
+ import type { ReactNode } from 'react';
19
+ import type * as Md from 'mdast';
20
+ import type { MarkdownPathImages } from '@deepseek-ai/dsh-client-ui-primitives';
21
+ import type { PositionedBlock } from './incremental.js';
22
+ /** Copy-button labels forwarded to fence CodeBlocks (this package is cordis-free, so copy arrives via props). */
23
+ export interface MarkdownCodeLabels {
24
+ /** Copy-button idle label. */
25
+ copyLabel?: string | undefined;
26
+ /** Copy-button label during the post-copy confirmation window. */
27
+ copiedLabel?: string | undefined;
28
+ }
29
+ /** Link/image reference targets collected from a document (first definition per identifier wins, as in CommonMark). */
30
+ export interface ReferenceTargets {
31
+ /** Link/image definitions keyed by upper-cased identifier. */
32
+ definitions: Map<string, Md.Definition>;
33
+ /** Footnote definitions keyed by upper-cased identifier. */
34
+ footnotes: Map<string, Md.FootnoteDefinition>;
35
+ }
36
+ /**
37
+ * Create an empty {@link ReferenceTargets}.
38
+ * @returns Fresh empty maps.
39
+ */
40
+ export declare function createReferenceTargets(): ReferenceTargets;
41
+ /**
42
+ * Record every definition and footnote definition under `nodes` into
43
+ * `targets`, depth-first, keeping the first definition per identifier.
44
+ * @param nodes - Subtrees to walk (top-level blocks or any nested children).
45
+ * @param targets - Accumulator, typically shared across incremental segments.
46
+ */
47
+ export declare function collectReferenceTargets(nodes: readonly Md.RootContent[], targets: ReferenceTargets): void;
48
+ /**
49
+ * File-mention affordance for inline code: the owner resolves an authored
50
+ * token to the file it names, using its own vocabulary of real files — the
51
+ * renderer never guesses at what looks like a path.
52
+ */
53
+ export interface MarkdownFileMentions {
54
+ /**
55
+ * Resolve one inline-code token.
56
+ * @param value - The authored token, exactly as written.
57
+ * @returns The opener with its accessible label and full-path title, or
58
+ * undefined when the token names no known file — it then stays inert code.
59
+ */
60
+ resolve(value: string): {
61
+ open: () => void;
62
+ label: string;
63
+ title: string;
64
+ } | undefined;
65
+ }
66
+ /**
67
+ * One render pass's state: immutable options and targets plus the footnote
68
+ * numbering accumulated in document order while references render.
69
+ */
70
+ export interface MarkdownRenderContext {
71
+ /** Reader addition: optional semantic text-leaf renderer with an absolute source offset. */
72
+ readonly renderText?: (value: string, offset: number, inline?: boolean) => ReactNode;
73
+ /** Reader addition: keep atomic code content behind the source-order gate. */
74
+ readonly renderAtom?: (children: ReactNode, offset: number) => ReactNode;
75
+ readonly sourceOffset?: number;
76
+ /** Streaming arm: fences render plain and TeX stays literal. */
77
+ readonly streaming: boolean;
78
+ /** Localized fence copy-button labels. */
79
+ readonly codeLabels: MarkdownCodeLabels | undefined;
80
+ /** Inside a blockquote's children: tables there always fill the quote's width. */
81
+ readonly inBlockquote?: boolean;
82
+ /** Inline-code file mentions; absent wherever no opener vocabulary exists. */
83
+ readonly fileMentions: MarkdownFileMentions | undefined;
84
+ readonly pathImages?: MarkdownPathImages;
85
+ /** Inside an anchor's children: interactive mentions must not nest there. */
86
+ readonly inLink?: boolean;
87
+ /** Reference targets visible to this pass. */
88
+ readonly targets: ReferenceTargets;
89
+ /** Footnote identifiers in first-reference order; a footnote's number is its 1-based index here. */
90
+ readonly footnoteOrder: string[];
91
+ /** References rendered per identifier; drives the section's back-reference count. */
92
+ readonly footnoteCounts: Map<string, number>;
93
+ }
94
+ /**
95
+ * Render top-level blocks. Nodes that render nothing (definitions, unmapped
96
+ * types) are dropped rather than kept as null placeholders, matching the
97
+ * replaced pipeline's child lists so separator newlines land identically.
98
+ * @param blocks - Blocks with their stream-stable render keys.
99
+ * @param context - The pass state; footnote numbering mutates in document order.
100
+ * @returns One React node per rendered block.
101
+ */
102
+ export declare function renderBlocks(blocks: readonly PositionedBlock[], context: MarkdownRenderContext): ReactNode[];
103
+ /**
104
+ * Interleave the newline text nodes the replaced pipeline emitted between
105
+ * block-level children. They are invisible between elements but coalesce
106
+ * into adjacent literal raw-HTML text, where the DOM parity fixtures pin
107
+ * them.
108
+ * @param elements - Rendered block children with empty renders already dropped.
109
+ * @param edges - Also emit the leading and trailing newline (hast's loose wrap).
110
+ * @returns The interleaved children.
111
+ */
112
+ export declare function wrapBlockChildren(elements: readonly ReactNode[], edges: boolean): ReactNode[];
113
+ /**
114
+ * Render the trailing footnote section for every footnote referenced during
115
+ * the pass, in first-reference order, with one plain-text back-reference
116
+ * marker per rendered reference.
117
+ * @param context - The pass state after all blocks rendered.
118
+ * @returns The section, or null when no referenced footnote has a definition.
119
+ */
120
+ export declare function renderFootnoteSection(context: MarkdownRenderContext): ReactNode | null;
121
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/client/markdown/render.tsx"],"names":[],"mappings":"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"}